Re: [PATCH v7 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges
From: David Matlack
Date: Mon Jul 20 2026 - 19:21:48 EST
On Fri, Jul 17, 2026 at 4:29 PM Pasha Tatashin
<pasha.tatashin@xxxxxxxxxx> wrote:
>
> On Fri, 10 Jul 2026 21:26:12 +0000, David Matlack <dmatlack@xxxxxxxxxx> wrote:
> > diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> > index a95bfe5eff77..74a11e520f0d 100644
> > --- a/drivers/pci/liveupdate.c
> > +++ b/drivers/pci/liveupdate.c
> > @@ -816,6 +820,20 @@ int pci_liveupdate_enable_acs(struct pci_dev *dev)
> > return 0;
> > }
> >
> > +int pci_liveupdate_configure_ari(struct pci_dev *dev)
> > +{
> > + u16 val;
> > +
> > + guard(rwsem_read)(&pci_liveupdate.rwsem);
> > +
> > + if (!dev->liveupdate.incoming)
> > + return -EINVAL;
> > +
> > + pcie_capability_read_word(dev, PCI_EXP_DEVCTL2, &val);
> > + dev->ari_enabled = !!(val & PCI_EXP_DEVCTL2_ARI);
>
> unsigned int ari_enabled:1;
>
> Sashiko asks a valid question, what protects other bits in this word
> during modication? At a very list a comment is needed.
This was my reply to Sashiko, not sure if you saw it:
. pci_liveupdate_configure_ari() is called from pci_configure_ari()
. which also sets dev->ari_enabled=1 and is pre-existing code.
.
. If writing to dev->ari_enabled in this path is indeed unsafe then that
. is a pre-existing bug.
I figured that a comment wouldn't be needed for continuing an
established precedent (it's ok to write to ari_enabled during this
path).
>
> --
> Pasha Tatashin <pasha.tatashin@xxxxxxxxxx>