On Tue, Nov 19, 2019 at 11:57 PM Frederic Barrat <fbar...@linux.ibm.com> wrote: > > > Do the other accessors of ioda.pe_list also need mutex protection? > > pnv_ioda_setup_bus_PE() > > pnv_pci_dma_bus_setup() > > pnv_pci_init_ioda_phb() > > pnv_pci_ioda_setup_PEs() > > > I think we could also use it there, it wouldn't hurt. Those functions > are called when the kernel is building part of the PCI topology, and > devices are not really active yet, so I don't think it's absolutely > required. > > I'm actually not sure my patch is needed either. With hotplug, the > devices can come and go, whereas the PHB remains. So it feels right to > start protecting the list when adding/removing a device. But I don't > think we can really have concurrency and have 2 different operations > adding/removing devices at the same time under the same PHB, at least > for opencapi. Maybe for PCI, if we have multiple slots under the same > PHB. Not sure.
Creation of new pci_dev's is serialised by the global pci rescan and remove lock so on the creation side it's not an issue. However, we can release IODA PEs in the pci_dev's release function which might be called without that lock held. It's pretty hard to hit that case though since it require something to be holding a ref to the pci_dev even after the driver's ->remove() function has been called.