[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio |
Date: |
Tue, 4 Jun 2013 14:13:50 +0200 |
This matches sysbus_pass_irq in cases where a device is a thin wrapper
of another. MMIO regions will keep the subdevice as the owner.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/core/sysbus.c | 12 ++++++++++++
hw/cpu/arm11mpcore.c | 2 +-
include/hw/sysbus.h | 1 +
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
index 9004d8c..6dbd1f8 100644
--- a/hw/core/sysbus.c
+++ b/hw/core/sysbus.c
@@ -117,6 +117,18 @@ void sysbus_init_mmio(SysBusDevice *dev, MemoryRegion
*memory)
dev->mmio[n].memory = memory;
}
+/* Pass MMIOs from a target device. */
+void sysbus_pass_mmio(SysBusDevice *dev, SysBusDevice *target)
+{
+ int i;
+ assert(dev->num_mmio == 0);
+ dev->num_mmio = target->num_mmio;
+ for (i = 0; i < dev->num_mmio; i++) {
+ assert(target->mmio[i].addr == -1);
+ dev->mmio[i] = target->mmio[i];
+ }
+}
+
MemoryRegion *sysbus_mmio_get_region(SysBusDevice *dev, int n)
{
return dev->mmio[n].memory;
diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c
index 90dcead..cc885d1 100644
--- a/hw/cpu/arm11mpcore.c
+++ b/hw/cpu/arm11mpcore.c
@@ -213,7 +213,7 @@ static int realview_mpcore_init(SysBusDevice *dev)
}
}
qdev_init_gpio_in(&dev->qdev, mpcore_rirq_set_irq, 64);
- sysbus_init_mmio(dev, sysbus_mmio_get_region(s->priv, 0));
+ sysbus_pass_mmio(dev, s->priv);
return 0;
}
diff --git a/include/hw/sysbus.h b/include/hw/sysbus.h
index 7c2e316..0639343 100644
--- a/include/hw/sysbus.h
+++ b/include/hw/sysbus.h
@@ -48,6 +48,7 @@ struct SysBusDevice {
void *sysbus_new(void);
void sysbus_init_mmio(SysBusDevice *dev, MemoryRegion *memory);
+void sysbus_pass_mmio(SysBusDevice *dev, SysBusDevice *target);
MemoryRegion *sysbus_mmio_get_region(SysBusDevice *dev, int n);
void sysbus_init_irq(SysBusDevice *dev, qemu_irq *p);
void sysbus_pass_irq(SysBusDevice *dev, SysBusDevice *target);
--
1.8.1.4
- Re: [Qemu-devel] [PATCH v2 03/17] memory: add ref/unref calls, (continued)
[Qemu-devel] [PATCH v2 02/17] memory: add ref/unref, Paolo Bonzini, 2013/06/04
[Qemu-devel] [PATCH v2 04/17] exec: add a reference to the region returned by address_space_translate, Paolo Bonzini, 2013/06/04
[Qemu-devel] [PATCH v2 05/17] pci: set owner for BARs, Paolo Bonzini, 2013/06/04
[Qemu-devel] [PATCH v2 07/17] sysbus: set owner for MMIO regions, Paolo Bonzini, 2013/06/04
[Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Peter Maydell, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Paolo Bonzini, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Peter Maydell, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Paolo Bonzini, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Peter Maydell, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Paolo Bonzini, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Peter Maydell, 2013/06/04
- Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Paolo Bonzini, 2013/06/04
Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Paolo Bonzini, 2013/06/04
Re: [Qemu-devel] [PATCH v2 06/17] sysbus: add sysbus_pass_mmio, Alex Williamson, 2013/06/04