From: Bjorn Helgaas <helgaas@kernel.org>
To: Hongxing Zhu <hongxing.zhu@nxp.com>
Cc: "Hongxing Zhu (OSS)" <hongxing.zhu@oss.nxp.com>,
Frank Li <frank.li@nxp.com>,
"l.stach@pengutronix.de" <l.stach@pengutronix.de>,
"lpieralisi@kernel.org" <lpieralisi@kernel.org>,
"kwilczynski@kernel.org" <kwilczynski@kernel.org>,
"mani@kernel.org" <mani@kernel.org>,
"robh@kernel.org" <robh@kernel.org>,
"bhelgaas@google.com" <bhelgaas@google.com>,
"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
"kernel@pengutronix.de" <kernel@pengutronix.de>,
"festevam@gmail.com" <festevam@gmail.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"imx@lists.linux.dev" <imx@lists.linux.dev>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] PCI: dwc: Add suspend_poweroff flag for platforms with RC power loss
Date: Wed, 16 Sep 2026 10:34:18 -0500 [thread overview]
Message-ID: <20260916153418.GA925718@bhelgaas> (raw)
In-Reply-To: <GV2PR04MB120193844E13EAAF122C426448CB92@GV2PR04MB12019.eurprd04.prod.outlook.com>
On Wed, Sep 16, 2026 at 04:00:24AM +0000, Hongxing Zhu wrote:
> > -----Original Message-----
> > From: Bjorn Helgaas <helgaas@kernel.org>
> > Sent: Thursday, July 30, 2026 6:30 AM
> > To: Hongxing Zhu (OSS) <hongxing.zhu@oss.nxp.com>
> > Cc: Frank Li <frank.li@nxp.com>; l.stach@pengutronix.de;
> > lpieralisi@kernel.org; kwilczynski@kernel.org; mani@kernel.org;
> > robh@kernel.org; bhelgaas@google.com; s.hauer@pengutronix.de;
> > kernel@pengutronix.de; festevam@gmail.com; linux-pci@vger.kernel.org;
> > linux-arm-kernel@lists.infradead.org; imx@lists.linux.dev; linux-
> > kernel@vger.kernel.org; Hongxing Zhu <hongxing.zhu@nxp.com>
> > Subject: Re: [PATCH v2] PCI: dwc: Add suspend_poweroff flag for platforms
> > with RC power loss
> >
> > On Fri, Jul 17, 2026 at 03:41:21PM +0800, hongxing.zhu@oss.nxp.com wrote:
> > > From: Richard Zhu <hongxing.zhu@nxp.com>
> > >
> > > Some platforms like i.MX power off their PCIe RC controllers
> > > during system suspend, requiring full re-initialization on
> > > resume. These platforms need to enter L2 state to properly
> > > notify endpoints before power loss.
> > >
> > > According to PCIe base spec r7.0, sec 5.2, the system software
> > > should transition the device into D3Hot before broadcasting the
> > > PME_Turn_Off message to initiate L2 entry. However, some
> > > endpoint devices fail the D3cold capability check in
> > > pci_host_common_d3cold_possible(), which would normally prevent
> > > L2 entry.
> >
> > Wakeup devices that don't support PME from D3cold will fail the
> > D3cold capability check, but I don't think those are the problem
> > you're solving.
> >
> > This appears to handle devices that are not in D3hot, and that's
> > not a property of the endpoint; it's a property of its driver. Is
> > the problem here that some driver didn't put its device in D3hot?
> >
> > > For platforms where the RC loses power during suspend, L2 entry
> > > is essential regardless of D3cold support, as the link will be
> > > lost anyway. Add a suspend_poweroff flag to force L2 entry in
> > > such cases, and enable it for i.MX PCIe controllers.
> > >
> > > Note: This violates the spec requirement that devices be in
> > > D3Hot before PME_Turn_Off, but is necessary for proper operation
> > > on platforms with RC power loss during suspend.
> >
> > If the device isn't in D3hot, it may still be active, and I think
> > the PME_Turn_Off will abort any DMAs in progress, which doesn't
> > sound like proper operation of the endpoint.
>
> I apologize for not addressing your concerns promptly. Let me
> clarify the issue after reviewing this more carefully.
>
> The problem I'm addressing:
>
> L2 entry is being blocked for wakeup-capable devices that fail the
> D3cold capability check in `pci_host_common_d3cold_possible()`, even
> when the device is already in D3hot state.
>
> Specifically:
> - The endpoint device is in D3hot (the driver has done its job correctly)
> - However, because it's a wakeup device that doesn't support PME from D3cold,
> it fails the D3cold capability check
> - This failure currently prevents L2 entry, even though the device is already
> in the required D3hot state as per the spec
> - For platforms like i.MX that power off the RC during suspend, we need L2
> entry to properly notify the endpoint before power loss and complete
> reinitialization successfully on resume.
>
> So, the issue isn't about forcing devices into D3hot or handling
> devices that aren't in D3hot - it's about allowing L2 entry for
> devices that are already in D3hot but happen to fail the D3cold
> capability check due to wakeup requirements.
>
> Regarding your concern about the commit message:
>
> > "If the device isn't in D3hot, it may still be active, and I think
> > the PME_Turn_Off will abort any DMAs in progress, which doesn't
> > sound like proper operation of the endpoint."
>
> You're right. The commit message note about "violating the spec
> requirement" is misleading and incorrect. The endpoint device is in
> D3hot (the driver has done its job correctly), so it's compliant
> with the spec requirement. I should remove or reword that note in
> the next version.
>
> Would you mind if I resubmitted the patch and used clearer
> submission information to accurately describe this situation?
Of course not, please do!
Bjorn
prev parent reply other threads:[~2026-09-16 15:34 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-17 7:41 hongxing.zhu
2026-07-29 16:17 ` Manivannan Sadhasivam
2026-07-29 22:29 ` Bjorn Helgaas
2026-07-30 8:16 ` Hongxing Zhu (OSS)
2026-07-30 12:09 ` Bjorn Helgaas
2026-08-03 15:33 ` Manivannan Sadhasivam
2026-08-04 6:32 ` Hongxing Zhu (OSS)
2026-08-04 18:18 ` Bjorn Helgaas
2026-08-05 2:07 ` Hongxing Zhu (OSS)
2026-09-16 4:00 ` Hongxing Zhu
2026-09-16 15:34 ` Bjorn Helgaas [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260916153418.GA925718@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=festevam@gmail.com \
--cc=frank.li@nxp.com \
--cc=hongxing.zhu@nxp.com \
--cc=hongxing.zhu@oss.nxp.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=kwilczynski@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®