misc/ivshmem: QOM parent field cleanup

Replace direct uses of IVShmemState::dev with QOM casts and rename it to
parent_obj.

Acked-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
Andreas Färber 2013-06-30 15:15:15 +02:00
parent eb3fedf3d4
commit b7578eaadd

View File

@ -63,7 +63,10 @@ typedef struct EventfdEntry {
} EventfdEntry; } EventfdEntry;
typedef struct IVShmemState { typedef struct IVShmemState {
PCIDevice dev; /*< private >*/
PCIDevice parent_obj;
/*< public >*/
uint32_t intrmask; uint32_t intrmask;
uint32_t intrstatus; uint32_t intrstatus;
uint32_t doorbell; uint32_t doorbell;
@ -120,6 +123,7 @@ static inline bool is_power_of_two(uint64_t x) {
/* accessing registers - based on rtl8139 */ /* accessing registers - based on rtl8139 */
static void ivshmem_update_irq(IVShmemState *s, int val) static void ivshmem_update_irq(IVShmemState *s, int val)
{ {
PCIDevice *d = PCI_DEVICE(s);
int isr; int isr;
isr = (s->intrstatus & s->intrmask) & 0xffffffff; isr = (s->intrstatus & s->intrmask) & 0xffffffff;
@ -129,7 +133,7 @@ static void ivshmem_update_irq(IVShmemState *s, int val)
isr ? 1 : 0, s->intrstatus, s->intrmask); isr ? 1 : 0, s->intrstatus, s->intrmask);
} }
qemu_set_irq(s->dev.irq[0], (isr != 0)); qemu_set_irq(d->irq[0], (isr != 0));
} }
static void ivshmem_IntrMask_write(IVShmemState *s, uint32_t val) static void ivshmem_IntrMask_write(IVShmemState *s, uint32_t val)
@ -300,7 +304,7 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *
/* if MSI is supported we need multiple interrupts */ /* if MSI is supported we need multiple interrupts */
if (ivshmem_has_feature(s, IVSHMEM_MSI)) { if (ivshmem_has_feature(s, IVSHMEM_MSI)) {
s->eventfd_table[vector].pdev = &s->dev; s->eventfd_table[vector].pdev = PCI_DEVICE(s);
s->eventfd_table[vector].vector = vector; s->eventfd_table[vector].vector = vector;
qemu_chr_add_handlers(chr, ivshmem_can_receive, fake_irqfd, qemu_chr_add_handlers(chr, ivshmem_can_receive, fake_irqfd,
@ -349,7 +353,7 @@ static void create_shared_memory_BAR(IVShmemState *s, int fd) {
memory_region_add_subregion(&s->bar, 0, &s->ivshmem); memory_region_add_subregion(&s->bar, 0, &s->ivshmem);
/* region for shared memory */ /* region for shared memory */
pci_register_bar(&s->dev, 2, s->ivshmem_attr, &s->bar); pci_register_bar(PCI_DEVICE(s), 2, s->ivshmem_attr, &s->bar);
} }
static void ivshmem_add_eventfd(IVShmemState *s, int posn, int i) static void ivshmem_add_eventfd(IVShmemState *s, int posn, int i)
@ -525,14 +529,15 @@ static void ivshmem_read(void *opaque, const uint8_t * buf, int flags)
* we just enable all vectors on init and after reset. */ * we just enable all vectors on init and after reset. */
static void ivshmem_use_msix(IVShmemState * s) static void ivshmem_use_msix(IVShmemState * s)
{ {
PCIDevice *d = PCI_DEVICE(s);
int i; int i;
if (!msix_present(&s->dev)) { if (!msix_present(d)) {
return; return;
} }
for (i = 0; i < s->vectors; i++) { for (i = 0; i < s->vectors; i++) {
msix_vector_use(&s->dev, i); msix_vector_use(d, i);
} }
} }
@ -573,7 +578,7 @@ static uint64_t ivshmem_get_size(IVShmemState * s) {
static void ivshmem_setup_msi(IVShmemState * s) static void ivshmem_setup_msi(IVShmemState * s)
{ {
if (msix_init_exclusive_bar(&s->dev, s->vectors, 1)) { if (msix_init_exclusive_bar(PCI_DEVICE(s), s->vectors, 1)) {
IVSHMEM_DPRINTF("msix initialization failed\n"); IVSHMEM_DPRINTF("msix initialization failed\n");
exit(1); exit(1);
} }
@ -589,12 +594,13 @@ static void ivshmem_setup_msi(IVShmemState * s)
static void ivshmem_save(QEMUFile* f, void *opaque) static void ivshmem_save(QEMUFile* f, void *opaque)
{ {
IVShmemState *proxy = opaque; IVShmemState *proxy = opaque;
PCIDevice *pci_dev = PCI_DEVICE(proxy);
IVSHMEM_DPRINTF("ivshmem_save\n"); IVSHMEM_DPRINTF("ivshmem_save\n");
pci_device_save(&proxy->dev, f); pci_device_save(pci_dev, f);
if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) { if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) {
msix_save(&proxy->dev, f); msix_save(pci_dev, f);
} else { } else {
qemu_put_be32(f, proxy->intrstatus); qemu_put_be32(f, proxy->intrstatus);
qemu_put_be32(f, proxy->intrmask); qemu_put_be32(f, proxy->intrmask);
@ -607,6 +613,7 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
IVSHMEM_DPRINTF("ivshmem_load\n"); IVSHMEM_DPRINTF("ivshmem_load\n");
IVShmemState *proxy = opaque; IVShmemState *proxy = opaque;
PCIDevice *pci_dev = PCI_DEVICE(proxy);
int ret; int ret;
if (version_id > 0) { if (version_id > 0) {
@ -618,13 +625,13 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
return -EINVAL; return -EINVAL;
} }
ret = pci_device_load(&proxy->dev, f); ret = pci_device_load(pci_dev, f);
if (ret) { if (ret) {
return ret; return ret;
} }
if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) { if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) {
msix_load(&proxy->dev, f); msix_load(pci_dev, f);
ivshmem_use_msix(proxy); ivshmem_use_msix(proxy);
} else { } else {
proxy->intrstatus = qemu_get_be32(f); proxy->intrstatus = qemu_get_be32(f);
@ -682,7 +689,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
migrate_add_blocker(s->migration_blocker); migrate_add_blocker(s->migration_blocker);
} }
pci_conf = s->dev.config; pci_conf = dev->config;
pci_conf[PCI_COMMAND] = PCI_COMMAND_IO | PCI_COMMAND_MEMORY; pci_conf[PCI_COMMAND] = PCI_COMMAND_IO | PCI_COMMAND_MEMORY;
pci_config_set_interrupt_pin(pci_conf, 1); pci_config_set_interrupt_pin(pci_conf, 1);
@ -693,7 +700,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
"ivshmem-mmio", IVSHMEM_REG_BAR_SIZE); "ivshmem-mmio", IVSHMEM_REG_BAR_SIZE);
/* region for registers*/ /* region for registers*/
pci_register_bar(&s->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY,
&s->ivshmem_mmio); &s->ivshmem_mmio);
memory_region_init(&s->bar, OBJECT(s), "ivshmem-bar2-container", s->ivshmem_size); memory_region_init(&s->bar, OBJECT(s), "ivshmem-bar2-container", s->ivshmem_size);
@ -727,7 +734,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
/* allocate/initialize space for interrupt handling */ /* allocate/initialize space for interrupt handling */
s->peers = g_malloc0(s->nb_peers * sizeof(Peer)); s->peers = g_malloc0(s->nb_peers * sizeof(Peer));
pci_register_bar(&s->dev, 2, s->ivshmem_attr, &s->bar); pci_register_bar(dev, 2, s->ivshmem_attr, &s->bar);
s->eventfd_chr = g_malloc0(s->vectors * sizeof(CharDriverState *)); s->eventfd_chr = g_malloc0(s->vectors * sizeof(CharDriverState *));
@ -768,7 +775,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
} }
s->dev.config_write = ivshmem_write_config; dev->config_write = ivshmem_write_config;
return 0; return 0;
} }