hw/isa/piix3: Modernize reset handling
Rather than registering the reset handler via a function which appends the handler to a global list, prefer to implement it as a virtual method - PIIX4 does the same already. Note that this means that piix3_reset can now also be called writing to the relevant configuration space register on a PCI bridge. Signed-off-by: Bernhard Beschow <shentey@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20221022150508.26830-6-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
3ee15e8074
commit
a1b05751fa
@ -31,7 +31,6 @@
|
||||
#include "hw/isa/isa.h"
|
||||
#include "hw/xen/xen.h"
|
||||
#include "sysemu/xen.h"
|
||||
#include "sysemu/reset.h"
|
||||
#include "sysemu/runstate.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "hw/acpi/acpi_aml_interface.h"
|
||||
@ -156,9 +155,9 @@ static void piix3_write_config_xen(PCIDevice *dev,
|
||||
piix3_write_config(dev, address, val, len);
|
||||
}
|
||||
|
||||
static void piix3_reset(void *opaque)
|
||||
static void piix3_reset(DeviceState *dev)
|
||||
{
|
||||
PIIX3State *d = opaque;
|
||||
PIIX3State *d = PIIX3_PCI_DEVICE(dev);
|
||||
uint8_t *pci_conf = d->dev.config;
|
||||
|
||||
pci_conf[0x04] = 0x07; /* master, memory and I/O */
|
||||
@ -313,8 +312,6 @@ static void pci_piix3_realize(PCIDevice *dev, Error **errp)
|
||||
memory_region_add_subregion_overlap(pci_address_space_io(dev),
|
||||
PIIX_RCR_IOPORT, &d->rcr_mem, 1);
|
||||
|
||||
qemu_register_reset(piix3_reset, d);
|
||||
|
||||
i8257_dma_init(isa_bus, 0);
|
||||
}
|
||||
|
||||
@ -337,6 +334,7 @@ static void pci_piix3_class_init(ObjectClass *klass, void *data)
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
AcpiDevAmlIfClass *adevc = ACPI_DEV_AML_IF_CLASS(klass);
|
||||
|
||||
dc->reset = piix3_reset;
|
||||
dc->desc = "ISA bridge";
|
||||
dc->vmsd = &vmstate_piix3;
|
||||
dc->hotpluggable = false;
|
||||
|
Loading…
Reference in New Issue
Block a user