Re: [PATCH v4] PCI: vmd: Do not change the BIOS Hotplug setting on VMD rootports

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 13, 2023 at 8:50 PM Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote:
[snipped]
> Hmm.  In some ways the VMD device acts as a Root Port, since it
> originates a new hierarchy in a separate domain, but on the upstream
> side, it's just a normal endpoint.
>
> How does AER for the new hierarchy work?  A device below the VMD can
> generate ERR_COR/ERR_NONFATAL/ERR_FATAL messages.  I guess I was
> assuming those messages would terminate at the VMD, and the VMD could
> generate an AER interrupt just like a Root Port.  But that can't be
> right because I don't think VMD would have the Root Error Command
> register needed to manage that interrupt.

VMD itself doesn't seem to manage AER, the rootport that "moved" from
0000 domain does:
[ 2113.507345] pcieport 10000:e0:06.0: AER: Corrected error received:
10000:e1:00.0
[ 2113.507380] nvme 10000:e1:00.0: PCIe Bus Error: severity=Corrected,
type=Physical Layer, (Receiver ID)
[ 2113.507389] nvme 10000:e1:00.0:   device [144d:a80a] error
status/mask=00000001/0000e000
[ 2113.507398] nvme 10000:e1:00.0:    [ 0] RxErr                  (First)

>
> But if VMD just passes those messages up to the Root Port, the source
> of the messages (the Requester ID) won't make any sense because
> they're in a hierarchy the Root Port doesn't know anything about.

Not sure what's current status is but I think Nirmal's patch is valid
for both our cases.

Kai-Heng

>
> > So what items should be hard-coded, assuming 04b12ef163d1 gets reverted?
>
> > > > >>>> Signed-off-by: Nirmal Patel <nirmal.patel@xxxxxxxxxxxxxxx>
> > > > >>>> ---
> > > > >>>> v3->v4: Rewrite the commit log.
> > > > >>>> v2->v3: Update the commit log.
> > > > >>>> v1->v2: Update the commit log.
> > > > >>>> ---
> > > > >>>>  drivers/pci/controller/vmd.c | 2 --
> > > > >>>>  1 file changed, 2 deletions(-)
> > > > >>>>
> > > > >>>> diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c
> > > > >>>> index 769eedeb8802..52c2461b4761 100644
> > > > >>>> --- a/drivers/pci/controller/vmd.c
> > > > >>>> +++ b/drivers/pci/controller/vmd.c
> > > > >>>> @@ -701,8 +701,6 @@ static int vmd_alloc_irqs(struct vmd_dev *vmd)
> > > > >>>>  static void vmd_copy_host_bridge_flags(struct pci_host_bridge *root_bridge,
> > > > >>>>                                         struct pci_host_bridge *vmd_bridge)
> > > > >>>>  {
> > > > >>>> -        vmd_bridge->native_pcie_hotplug = root_bridge->native_pcie_hotplug;
> > > > >>>> -        vmd_bridge->native_shpc_hotplug = root_bridge->native_shpc_hotplug;
> > > > >>>>          vmd_bridge->native_aer = root_bridge->native_aer;
> > > > >>>>          vmd_bridge->native_pme = root_bridge->native_pme;
> > > > >>>>          vmd_bridge->native_ltr = root_bridge->native_ltr;
> > > > >>>> --
> > > > >>>> 2.31.1
> > > > >>>>
> > > >




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux