On Fri, Jan 19, 2024 at 04:35:08PM +0000, Peter Maydell wrote: > Date: Fri, 19 Jan 2024 16:35:08 +0000 > From: Peter Maydell <peter.mayd...@linaro.org> > Subject: [PATCH 1/5] pci: Switch bus reset to 3-phase-reset > X-Mailer: git-send-email 2.34.1 > > Switch the PCI bus from using BusClass::reset to the Resettable > interface. > > This has no behavioural change, because the BusClass code to support > subclasses that use the legacy BusClass::reset will call that method > in the hold phase of 3-phase reset. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > hw/pci/pci.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-)
Reviewed-by: Zhao Liu <zhao1....@intel.com> > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 76080af580d..05c2e46bda5 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -64,7 +64,7 @@ bool pci_available = true; > > static char *pcibus_get_dev_path(DeviceState *dev); > static char *pcibus_get_fw_dev_path(DeviceState *dev); > -static void pcibus_reset(BusState *qbus); > +static void pcibus_reset_hold(Object *obj); > static bool pcie_has_upstream_port(PCIDevice *dev); > > static Property pci_props[] = { > @@ -202,13 +202,15 @@ static void pci_bus_class_init(ObjectClass *klass, void > *data) > { > BusClass *k = BUS_CLASS(klass); > PCIBusClass *pbc = PCI_BUS_CLASS(klass); > + ResettableClass *rc = RESETTABLE_CLASS(klass); > > k->print_dev = pcibus_dev_print; > k->get_dev_path = pcibus_get_dev_path; > k->get_fw_dev_path = pcibus_get_fw_dev_path; > k->realize = pci_bus_realize; > k->unrealize = pci_bus_unrealize; > - k->reset = pcibus_reset; > + > + rc->phases.hold = pcibus_reset_hold; > > pbc->bus_num = pcibus_num; > pbc->numa_node = pcibus_numa_node; > @@ -424,9 +426,9 @@ void pci_device_reset(PCIDevice *dev) > * Called via bus_cold_reset on RST# assert, after the devices > * have been reset device_cold_reset-ed already. > */ > -static void pcibus_reset(BusState *qbus) > +static void pcibus_reset_hold(Object *obj) > { > - PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus); > + PCIBus *bus = PCI_BUS(obj); > int i; > > for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) { > -- > 2.34.1 > >