2018-03-14 15:53:48

by Oza Pawandeep

[permalink] [raw]
Subject: [PATCH v2] PCI/DPC: Fix PCI legacy interrupt acknowledgement

Current DPC driver acknowledges the interrupt in deferred work, which works
since MSI are edge triggered.

But when MSI is disabled (e.g. pci=nomsi boot option) port service
driver falls back to PCI legacy INT interrupt.

With current code we do not acknowledge the interrupt back in dpc_irq()
and we get dpc interrupt storm.

This patch acknowledges the interrupt in interrupt handler.

Signed-off-by: Oza Pawandeep <[email protected]>

diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
index 38e40c6..9c05120 100644
--- a/drivers/pci/pcie/pcie-dpc.c
+++ b/drivers/pci/pcie/pcie-dpc.c
@@ -112,7 +112,7 @@ static void dpc_work(struct work_struct *work)
}

pci_write_config_word(pdev, cap + PCI_EXP_DPC_STATUS,
- PCI_EXP_DPC_STATUS_TRIGGER | PCI_EXP_DPC_STATUS_INTERRUPT);
+ PCI_EXP_DPC_STATUS_TRIGGER);

pci_read_config_word(pdev, cap + PCI_EXP_DPC_CTL, &ctl);
pci_write_config_word(pdev, cap + PCI_EXP_DPC_CTL,
@@ -222,6 +222,9 @@ static irqreturn_t dpc_irq(int irq, void *context)
if (dpc->rp_extensions && reason == 3 && ext_reason == 0)
dpc_process_rp_pio_error(dpc);

+ pci_write_config_word(pdev, cap + PCI_EXP_DPC_STATUS,
+ PCI_EXP_DPC_STATUS_INTERRUPT);
+
schedule_work(&dpc->work);

return IRQ_HANDLED;
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.,
a Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.



2018-03-14 20:52:57

by Keith Busch

[permalink] [raw]
Subject: Re: [PATCH v2] PCI/DPC: Fix PCI legacy interrupt acknowledgement

On Wed, Mar 14, 2018 at 09:20:48PM +0530, Oza Pawandeep wrote:
> Current DPC driver acknowledges the interrupt in deferred work, which works
> since MSI are edge triggered.
>
> But when MSI is disabled (e.g. pci=nomsi boot option) port service
> driver falls back to PCI legacy INT interrupt.
>
> With current code we do not acknowledge the interrupt back in dpc_irq()
> and we get dpc interrupt storm.
>
> This patch acknowledges the interrupt in interrupt handler.
>
> Signed-off-by: Oza Pawandeep <[email protected]>

Thanks, this looks good to me.

Reviewed-by: Keith Busch <keith

2018-03-14 20:55:26

by Keith Busch

[permalink] [raw]
Subject: Re: [PATCH v2] PCI/DPC: Fix PCI legacy interrupt acknowledgement

On Wed, Mar 14, 2018 at 02:52:30PM -0600, Keith Busch wrote:
>
> Reviewed-by: Keith Busch <keith

Whoops, I accidentally truncated my message. My correct tag:

Reviewed-by: Keith Busch <[email protected]>

2018-03-15 07:56:56

by Oza Pawandeep

[permalink] [raw]
Subject: Re: [PATCH v2] PCI/DPC: Fix PCI legacy interrupt acknowledgement

On 2018-03-15 02:22, Keith Busch wrote:
> On Wed, Mar 14, 2018 at 09:20:48PM +0530, Oza Pawandeep wrote:
>> Current DPC driver acknowledges the interrupt in deferred work, which
>> works
>> since MSI are edge triggered.
>>
>> But when MSI is disabled (e.g. pci=nomsi boot option) port service
>> driver falls back to PCI legacy INT interrupt.
>>
>> With current code we do not acknowledge the interrupt back in
>> dpc_irq()
>> and we get dpc interrupt storm.
>>
>> This patch acknowledges the interrupt in interrupt handler.
>>
>> Signed-off-by: Oza Pawandeep <[email protected]>
>
> Thanks, this looks good to me.
>
> Reviewed-by: Keith Busch <keith


checkpatch script shows
WARNING: 'acknowledgement' may be misspelled - perhaps 'acknowledgment'?

but dictionaries shows acknowledgement.

Regards,
Oza.

2018-03-28 15:13:47

by Oza Pawandeep

[permalink] [raw]
Subject: Re: [PATCH v2] PCI/DPC: Fix PCI legacy interrupt acknowledgement

On 2018-03-15 02:26, Keith Busch wrote:
> On Wed, Mar 14, 2018 at 02:52:30PM -0600, Keith Busch wrote:
>>
>> Reviewed-by: Keith Busch <keith
>
> Whoops, I accidentally truncated my message. My correct tag:
>
> Reviewed-by: Keith Busch <[email protected]>

Hi Bjorn,

Can this be merged ?

Regards,
Oza.