On Fri, 31 Oct 2025 10:49:40 +0000 Shameer Kolothum <[email protected]> wrote:
> During PCI hotplug, in do_pci_register_device(), pci_init_bus_master() > is called before storing the pci_dev pointer in bus->devices[devfn]. > > This causes a problem if pci_init_bus_master() (via its > get_address_space() callback) attempts to retrieve the device using > pci_find_device(), since the PCI device is not yet visible on the bus. > > Fix this by moving the pci_init_bus_master() call to after the device > has been added to bus->devices[devfn]. > > This prepares for a subsequent patch where the accel SMMUv3 > get_address_space() callback retrieves the pci_dev to identify the > attached device type. > > No functional change intended. > > Cc: Michael S. Tsirkin <[email protected]> > Signed-off-by: Shameer Kolothum <[email protected]> Seems harmless. Reviewed-by: Jonathan Cameron <[email protected]> > --- > hw/pci/pci.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index c9932c87e3..9693d7f10c 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -1370,9 +1370,6 @@ static PCIDevice *do_pci_register_device(PCIDevice > *pci_dev, > pci_dev->bus_master_as.max_bounce_buffer_size = > pci_dev->max_bounce_buffer_size; > > - if (phase_check(PHASE_MACHINE_READY)) { > - pci_init_bus_master(pci_dev); > - } > pci_dev->irq_state = 0; > pci_config_alloc(pci_dev); > > @@ -1416,6 +1413,9 @@ static PCIDevice *do_pci_register_device(PCIDevice > *pci_dev, > pci_dev->config_write = config_write; > bus->devices[devfn] = pci_dev; > pci_dev->version_id = 2; /* Current pci device vmstate version */ > + if (phase_check(PHASE_MACHINE_READY)) { > + pci_init_bus_master(pci_dev); > + } > return pci_dev; > } >
