Re: [PATCH v3 3/9] NTB: Remove pci_aer_clear_nonfatal_status() call

From: Bjorn Helgaas
Date: Tue Dec 06 2022 - 13:10:07 EST


On Wed, Sep 28, 2022 at 02:03:55PM +0300, Serge Semin wrote:
> On Wed, Sep 28, 2022 at 06:59:40PM +0800, Zhuo Chen wrote:
> > There is no need to clear error status during init code, so remove it.
>
> Why do you think there isn't? Justify in more details.

Thanks for taking a look, Sergey! I agree we should leave it or add
the rationale here.

> > Signed-off-by: Zhuo Chen <chenzhuo.1@xxxxxxxxxxxxx>
> > ---
> > drivers/ntb/hw/idt/ntb_hw_idt.c | 2 --
> > 1 file changed, 2 deletions(-)
> >
> > diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_idt.c
> > index 0ed6f809ff2e..fed03217289d 100644
> > --- a/drivers/ntb/hw/idt/ntb_hw_idt.c
> > +++ b/drivers/ntb/hw/idt/ntb_hw_idt.c
> > @@ -2657,8 +2657,6 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
> > ret = pci_enable_pcie_error_reporting(pdev);
> > if (ret != 0)
> > dev_warn(&pdev->dev, "PCIe AER capability disabled\n");
> > - else /* Cleanup nonfatal error status before getting to init */
> > - pci_aer_clear_nonfatal_status(pdev);

I do think drivers should not need to clear errors; I think the PCI
core should be responsible for that.

And I think the core *does* do that in this path:

pci_init_capabilities
pci_aer_init
pci_aer_clear_status
pci_aer_raw_clear_status
pci_write_config_dword(pdev, aer + PCI_ERR_COR_STATUS)
pci_write_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS)

pci_aer_clear_nonfatal_status() clears only non-fatal uncorrectable
errors, while pci_aer_init() clears all correctable and all
uncorrectable errors, so the PCI core is already doing more than
idt_init_pci() does.

So I think this change is good because it removes some work from the
driver, but let me know if you think otherwise.

> >
> > /* First enable the PCI device */
> > ret = pcim_enable_device(pdev);
> > --
> > 2.30.1 (Apple Git-130)
> >