[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <YtFw+ezt6s/yXaLY@hovoldconsulting.com>
Date: Fri, 15 Jul 2022 15:51:53 +0200
From: Johan Hovold <johan@...nel.org>
To: Krishna chaitanya chundru <quic_krichai@...cinc.com>
Cc: helgaas@...nel.org, linux-pci@...r.kernel.org,
linux-arm-msm@...r.kernel.org, linux-kernel@...r.kernel.org,
mka@...omium.org, quic_vbadigan@...cinc.com,
quic_hemantk@...cinc.com, quic_nitegupt@...cinc.com,
quic_skananth@...cinc.com, quic_ramkri@...cinc.com,
manivannan.sadhasivam@...aro.org, swboyd@...omium.org,
dmitry.baryshkov@...aro.org, Jingoo Han <jingoohan1@...il.com>,
Gustavo Pimentel <gustavo.pimentel@...opsys.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@....com>,
Rob Herring <robh@...nel.org>,
Krzysztof WilczyĆski <kw@...ux.com>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Stanimir Varbanov <svarbanov@...sol.com>,
Andy Gross <agross@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>
Subject: Re: [PATCH v4 2/2] PCI: qcom: Restrict pci transactions after pci
suspend
On Wed, Jul 06, 2022 at 08:10:25PM +0530, Krishna chaitanya chundru wrote:
> If the endpoint device state is D0 and irq's are not freed, then
> kernel try to mask interrupts in system suspend path by writing
> in to the vector table (for MSIX interrupts) and config space (for MSI's).
>
> These transactions are initiated in the pm suspend after pcie clocks got
> disabled as part of platform driver pm suspend call. Due to it, these
> transactions are resulting in un-clocked access and eventually to crashes.
>
> So added a logic in qcom driver to restrict these unclocked access.
> And updated the logic to check the link state before masking
> or unmasking the interrupts.
>
> Signed-off-by: Krishna chaitanya chundru <quic_krichai@...cinc.com>
> ---
> drivers/pci/controller/dwc/pcie-designware-host.c | 14 +++++++--
> drivers/pci/controller/dwc/pcie-qcom.c | 36 +++++++++++++++++++++--
> 2 files changed, 46 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 2fa86f3..2a46b40 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -29,13 +29,23 @@ static void dw_msi_ack_irq(struct irq_data *d)
>
> static void dw_msi_mask_irq(struct irq_data *d)
> {
> - pci_msi_mask_irq(d);
> + struct pcie_port *pp = irq_data_get_irq_chip_data(d->parent_data);
> + struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
When rebasing you'll notice that struct pcie_port has now been renamed:
60b3c27fb9b9 ("PCI: dwc: Rename struct pcie_port to dw_pcie_rp")
Johan
Powered by blists - more mailing lists