aboutsummaryrefslogtreecommitdiff
path: root/hw/ppc/e500plat.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2014-07-01 16:27:09 +0200
committerAlexander Graf <agraf@suse.de>2014-11-04 23:26:14 +0100
commitf70873438d40ccda3d1614ec18a141aad5da2778 (patch)
tree6ca9129c3c51f6021956bfc0038c599ad5e7404f /hw/ppc/e500plat.c
parent7634fe3c273ca2f2eb992b3b6bb7796b85558377 (diff)
downloadqemu-f70873438d40ccda3d1614ec18a141aad5da2778.zip
qemu-f70873438d40ccda3d1614ec18a141aad5da2778.tar.gz
qemu-f70873438d40ccda3d1614ec18a141aad5da2778.tar.bz2
PPC: e500: Support dynamically spawned sysbus devices
For e500 our approach to supporting dynamically spawned sysbus devices is to create a simple bus from the guest's point of view within which we map those devices dynamically. We allocate memory regions always within the "platform" hole in address space and map IRQs to predetermined IRQ lines that are reserved for platform device usage. This maps really nicely into device tree logic, so we can just tell the guest about our virtual simple bus in device tree as well. Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'hw/ppc/e500plat.c')
-rw-r--r--hw/ppc/e500plat.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
index bafb56d..d50ae00 100644
--- a/hw/ppc/e500plat.c
+++ b/hw/ppc/e500plat.c
@@ -36,6 +36,11 @@ static void e500plat_init(MachineState *machine)
.fixup_devtree = e500plat_fixup_devtree,
.mpic_version = OPENPIC_MODEL_FSL_MPIC_42,
.has_mpc8xxx_gpio = true,
+ .has_platform_bus = true,
+ .platform_bus_base = 0xf00000000ULL,
+ .platform_bus_size = (128ULL * 1024 * 1024),
+ .platform_bus_first_irq = 5,
+ .platform_bus_num_irqs = 10,
};
/* Older KVM versions don't support EPR which breaks guests when we announce
@@ -52,6 +57,7 @@ static QEMUMachine e500plat_machine = {
.desc = "generic paravirt e500 platform",
.init = e500plat_init,
.max_cpus = 32,
+ .has_dynamic_sysbus = true,
};
static void e500plat_machine_init(void)