From: Bjorn Helgaas <helgaas@kernel.org>
To: Niklas Cassel <cassel@kernel.org>
Cc: "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Jingoo Han" <jingoohan1@gmail.com>,
linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org, mhi@lists.linux.dev,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH v2 10/10] PCI: qcom: Implement shutdown() callback to properly reset the endpoint devices
Date: Tue, 9 Apr 2024 08:31:55 -0500 [thread overview]
Message-ID: <20240409133155.GA2072077@bhelgaas> (raw)
In-Reply-To: <Zg22Dhi2c7U5oqoz@ryzen>
On Wed, Apr 03, 2024 at 10:03:26PM +0200, Niklas Cassel wrote:
> On Wed, Apr 03, 2024 at 07:02:17PM +0530, Manivannan Sadhasivam wrote:
> > On Tue, Apr 02, 2024 at 01:18:54PM +0200, Niklas Cassel wrote:
> > > On Mon, Apr 01, 2024 at 09:20:36PM +0530, Manivannan Sadhasivam wrote:
> > > > PCIe host controller drivers are supposed to properly reset the endpoint
> > > > devices during host shutdown/reboot. Currently, Qcom driver doesn't do
> > > > anything during host shutdown/reboot, resulting in both PERST# and refclk
> > > > getting disabled at the same time. This prevents the endpoint device
> > > > firmware to properly reset the state machine. Because, if the refclk is
> > > > cutoff immediately along with PERST#, access to device specific registers
> > > > within the endpoint will result in a firmware crash.
> > > >
> > > > To address this issue, let's call qcom_pcie_host_deinit() inside the
> > > > shutdown callback, that asserts PERST# and then cuts off the refclk with a
> > > > delay of 1ms, thus allowing the endpoint device firmware to properly
> > > > cleanup the state machine.
> ...
> For a real PCIe card, if you assert + msleep(100) + deassert PERST, surely
> the endpoint is supposed to be in a good/well defined state, regardless if
> he REFCLK was cutoff at the exact time as PERST was asserted or not?
I think this is the key point. This PERST#/REFCLK timing requirement
seems like a defect in the endpoint. I know there's firmware involved
and whatnot, but IMO it's the endpoint's problem to handle these issues
internally.
Bjorn
next prev parent reply other threads:[~2024-04-09 13:31 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-01 15:50 [PATCH v2 00/10] PCI: endpoint: Make host reboot handling more robust Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 01/10] PCI: qcom-ep: Disable resources unconditionally during PERST# assert Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 02/10] PCI: endpoint: Decouple EPC and PCIe bus specific events Manivannan Sadhasivam
2024-04-02 0:14 ` Damien Le Moal
2024-04-03 14:26 ` Manivannan Sadhasivam
2024-04-04 2:40 ` Damien Le Moal
2024-04-01 15:50 ` [PATCH v2 03/10] PCI: endpoint: Rename core_init() callback in 'struct pci_epc_event_ops' to init() Manivannan Sadhasivam
2024-04-02 10:52 ` Niklas Cassel
2024-04-03 13:46 ` Manivannan Sadhasivam
2024-04-03 15:51 ` Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 04/10] PCI: epf-test: Refactor pci_epf_test_unbind() function Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 05/10] PCI: epf-{mhi/test}: Move DMA initialization to EPC init callback Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 06/10] PCI: endpoint: Introduce EPC 'deinit' event and notify the EPF drivers Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 07/10] PCI: dwc: ep: Add a generic dw_pcie_ep_linkdown() API to handle Link Down event Manivannan Sadhasivam
2024-04-02 10:52 ` Niklas Cassel
2024-04-01 15:50 ` [PATCH v2 08/10] PCI: qcom-ep: Use the " Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 09/10] PCI: epf-test: Handle " Manivannan Sadhasivam
2024-04-01 15:50 ` [PATCH v2 10/10] PCI: qcom: Implement shutdown() callback to properly reset the endpoint devices Manivannan Sadhasivam
2024-04-02 11:18 ` Niklas Cassel
2024-04-03 13:32 ` Manivannan Sadhasivam
2024-04-03 20:03 ` Niklas Cassel
2024-04-09 13:31 ` Bjorn Helgaas [this message]
2024-04-10 10:54 ` Manivannan Sadhasivam
2024-04-10 14:52 ` Niklas Cassel
2024-04-10 21:10 ` Niklas Cassel
2024-04-12 6:32 ` Manivannan Sadhasivam
2024-04-02 9:41 ` [PATCH v2 00/10] PCI: endpoint: Make host reboot handling more robust Niklas Cassel
2024-04-03 13:48 ` Manivannan Sadhasivam
2024-04-08 9:49 ` Niklas Cassel
2024-04-02 10:52 ` Niklas Cassel
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=20240409133155.GA2072077@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=jingoohan1@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=kishon@kernel.org \
--cc=kw@linux.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=mhi@lists.linux.dev \
--cc=robh@kernel.org \
--cc=thierry.reding@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.