Re: [PATCH v7 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges
Pasha Tatashin <[email protected]> Tue, 21 Jul 2026 18:17:13 +0000
| Newsgroups | org.infradead.lists.kexec,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kvack.linux-mm |
|---|---|
| Message-ID | <178465783370.437204.17382376546970842455.b4-reply@b4> |
On 2026-07-20 16:19:00-07:00, David Matlack wrote: > On Fri, Jul 17, 2026 at 4:29 PM Pasha Tatashin > <[email protected]> wrote: > > > On Fri, 10 Jul 2026 21:26:12 +0000, David Matlack <[email protected]> wrote: > > > > 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). Overall, I agree that if there is a bug it is pre-existing. But we should also take opportunities to improve existing code and make it safer. In my opinion, Sashiko raises a valid concern that is not obvious, since there is no comment explaining the access of non-atomic bitfields in the header before the struct pci_dev definition. In this path, it is safe because we run inside pci_device_add(), where dev is brand new and has not yet been added to the public devices list. However, it would be great to: 1. Review the access patterns to ensure there are no concurrent writers on any other paths. 2. Add a brief comment in this patch right before setting ari: /* Safe to write without locking; device is not yet publicly visible */ or: 3. Create a new separate patch that adds a comment before the struct pci_dev definition explaining the bitfield access pattern, and how concurrent writes are avoided.