Re: [PATCH 07/18] PCI: pciehp: Enable Command Completed Interrupt only if supported

Pali Rohár
2022-05-13T16:59:22Z

On Monday 09 May 2022 06:01:39 Lukas Wunner wrote:
> On Sun, Feb 20, 2022 at 08:33:35PM +0100, Marek Behún wrote:
> > The No Command Completed Support bit in the Slot Capabilities register
> > indicates whether Command Completed Interrupt Enable is unsupported.
> >
> > Enable this interrupt only in the case it is supported.
> [...]
> > --- a/drivers/pci/hotplug/pciehp_hpc.c
> > +++ b/drivers/pci/hotplug/pciehp_hpc.c
> > @@ -817,7 +817,9 @@ static void pcie_enable_notification(struct controller *ctrl)
> > else
> > cmd |= PCI_EXP_SLTCTL_PDCE;
> > if (!pciehp_poll_mode)
> > - cmd |= PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_CCIE;
> > + cmd |= PCI_EXP_SLTCTL_HPIE;
> > + if (!pciehp_poll_mode && !NO_CMD_CMPL(ctrl))
> > + cmd |= PCI_EXP_SLTCTL_CCIE;
>
> Looks okay to me in principle, I'm just wondering why this change is
> necessary, i.e. what issue are you seeing without it?
>
> Thanks,
>
> Lukas

This is that case which I described in previous email. Kernel was
waiting for completion, but if (emulated) Root Port does not support
completion event then there were timeouts.