[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V10 22/27] pci hotplug: add argument to pci hot plug
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH V10 22/27] pci hotplug: add argument to pci hot plug callback. |
Date: |
Thu, 24 Dec 2009 17:09:15 +0900 |
The argument will be used later to remove global variable.
Signed-off-by: Isaku Yamahata <address@hidden>
---
hw/acpi_piix4.c | 6 +++---
hw/pci.c | 8 +++++---
hw/pci.h | 4 ++--
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
index 0083731..94bbe59 100644
--- a/hw/acpi_piix4.c
+++ b/hw/acpi_piix4.c
@@ -562,7 +562,7 @@ static void pciej_write(void *opaque, uint32_t addr,
uint32_t val)
#endif
}
-static int piix4_device_hotplug(PCIDevice *dev, int state);
+static int piix4_device_hotplug(void *opaque, PCIDevice *dev, int state);
void piix4_acpi_system_hot_add_init(PCIBus *bus)
{
@@ -575,7 +575,7 @@ void piix4_acpi_system_hot_add_init(PCIBus *bus)
register_ioport_write(PCI_EJ_BASE, 4, 4, pciej_write, bus);
register_ioport_read(PCI_EJ_BASE, 4, 4, pciej_read, bus);
- pci_bus_hotplug(bus, piix4_device_hotplug);
+ pci_bus_hotplug(bus, piix4_device_hotplug, NULL);
}
static void enable_device(struct pci_status *p, struct gpe_regs *g, int slot)
@@ -590,7 +590,7 @@ static void disable_device(struct pci_status *p, struct
gpe_regs *g, int slot)
p->down |= (1 << slot);
}
-static int piix4_device_hotplug(PCIDevice *dev, int state)
+static int piix4_device_hotplug(void *opaque, PCIDevice *dev, int state)
{
int slot = PCI_SLOT(dev->devfn);
diff --git a/hw/pci.c b/hw/pci.c
index 9cc5a6a..6fc716a 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -41,6 +41,7 @@ struct PCIBus {
pci_set_irq_fn set_irq;
pci_map_irq_fn map_irq;
pci_hotplug_fn hotplug;
+ void *hotplug_opaque;
uint32_t config_reg; /* XXX: suppress */
void *irq_opaque;
PCIDevice *devices[256];
@@ -232,10 +233,11 @@ void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq,
pci_map_irq_fn map_irq,
bus->irq_count = qemu_mallocz(nirq * sizeof(bus->irq_count[0]));
}
-void pci_bus_hotplug(PCIBus *bus, pci_hotplug_fn hotplug)
+void pci_bus_hotplug(PCIBus *bus, pci_hotplug_fn hotplug, void *opaque)
{
bus->qbus.allow_hotplug = 1;
bus->hotplug = hotplug;
+ bus->hotplug_opaque = opaque;
}
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
@@ -1371,7 +1373,7 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo
*base)
pci_add_option_rom(pci_dev);
if (qdev->hotplugged)
- bus->hotplug(pci_dev, 1);
+ bus->hotplug(bus->hotplug_opaque, pci_dev, 1);
return 0;
}
@@ -1379,7 +1381,7 @@ static int pci_unplug_device(DeviceState *qdev)
{
PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev);
- dev->bus->hotplug(dev, 0);
+ dev->bus->hotplug(dev->bus->hotplug_opaque, dev, 0);
return 0;
}
diff --git a/hw/pci.h b/hw/pci.h
index e52e632..3d6f779 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -275,13 +275,13 @@ int pci_device_load(PCIDevice *s, QEMUFile *f);
typedef void (*pci_set_irq_fn)(void *opaque, int irq_num, int level);
typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num);
-typedef int (*pci_hotplug_fn)(PCIDevice *pci_dev, int state);
+typedef int (*pci_hotplug_fn)(void *opaque, PCIDevice *pci_dev, int state);
void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
const char *name, int devfn_min);
PCIBus *pci_bus_new(DeviceState *parent, const char *name, int devfn_min);
void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
void *irq_opaque, int nirq);
-void pci_bus_hotplug(PCIBus *bus, pci_hotplug_fn hotplug);
+void pci_bus_hotplug(PCIBus *bus, pci_hotplug_fn hotplug, void *opaque);
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
void *irq_opaque, int devfn_min, int nirq);
--
1.6.5.4
- [Qemu-devel] [PATCH V10 00/27] split out piix specific part from pc emulator and some clean ups, Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 12/27] pc: make pc_init1() not refer ferr_irq directly., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 17/27] pc: split out pci device init from pc_init1() into pc_pci_device_init(), Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 19/27] pc: move rtc declarations from pc.h into a dedicated header file., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 27/27] mc146818rtc: remove #ifdef DEBUG_CMOS., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 21/27] acpi_piix4: qdevfy., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 04/27] acpi: split acpi.c into the common part and the piix4 part., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 22/27] pci hotplug: add argument to pci hot plug callback.,
Isaku Yamahata <=
- [Qemu-devel] [PATCH V10 09/27] pc: remove a global variable, floppy_controller., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 20/27] rtc: make rtc_xxx accept/return ISADevice instead of RTCState., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 15/27] pc: split out vga initialization from pc_init1() into pc_vga_init()., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 11/27] pc: introduce a function to allocate cpu irq., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 23/27] pci hotadd, acpi_piix4: remove global variables., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 01/27] acpi: split out pc smbus routines from acpi.c into pc_smbus.c, Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 08/27] pc: make an unnecessary global variable, pit, local., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 25/27] acpi_piix4: remove #ifdef DEBUG., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 13/27] pc: split out cpu initialization from pc_init1() into pc_cpus_init()., Isaku Yamahata, 2009/12/24
- [Qemu-devel] [PATCH V10 24/27] pc_smbus: remove #ifdef DEBUG., Isaku Yamahata, 2009/12/24