Message ID | 20190411144538.8894-2-clg@kaod.org |
---|---|
State | Accepted |
Headers | show |
Series | plat/qemu: add a POWER8 and POWER9 platform | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch master (ff79070d1c4cdc38f2ecb42e45b8322cb1efb819) |
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot | success | Test snowpatch/job/snowpatch-skiboot on branch master |
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot-dco | success | Signed-off-by present |
On Thu, 11 Apr 2019 at 14:46, Cédric Le Goater <clg@kaod.org> wrote: > > These new QEMU platforms have characteristics closer to real OpenPOWER > systems that we use today and define a different BMC depending on the > CPU type. New platform properties are introduced for each, > "qemu,powernv8", "qemu,powernv9" and these should be compatible with > existing QEMUs which only expose the "qemu,powernv" property > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Joel Stanley <joel@jms.id.au>
On Fri, 12 Apr 2019, at 00:16, Cédric Le Goater wrote: > These new QEMU platforms have characteristics closer to real OpenPOWER > systems that we use today and define a different BMC depending on the > CPU type. New platform properties are introduced for each, > "qemu,powernv8", "qemu,powernv9" and these should be compatible with > existing QEMUs which only expose the "qemu,powernv" property > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Andrew Jeffery <andrew@aj.id.au> > --- > platforms/qemu/qemu.c | 55 ++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 52 insertions(+), 3 deletions(-) > > diff --git a/platforms/qemu/qemu.c b/platforms/qemu/qemu.c > index 04bf3fb3f0ea..b528a826301a 100644 > --- a/platforms/qemu/qemu.c > +++ b/platforms/qemu/qemu.c > @@ -23,11 +23,11 @@ > > static bool bt_device_present; > > -static bool qemu_probe(void) > +static bool qemu_probe_common(const char *compat) > { > struct dt_node *n; > > - if (!dt_node_is_compatible(dt_root, "qemu,powernv")) > + if (!dt_node_is_compatible(dt_root, compat)) > return false; > > astbmc_early_init(); > @@ -40,6 +40,21 @@ static bool qemu_probe(void) > return true; > } > > +static bool qemu_probe(void) > +{ > + return qemu_probe_common("qemu,powernv"); > +} > + > +static bool qemu_probe_powernv8(void) > +{ > + return qemu_probe_common("qemu,powernv8"); > +} > + > +static bool qemu_probe_powernv9(void) > +{ > + return qemu_probe_common("qemu,powernv9"); > +} > + > static void qemu_init(void) > { > if (!bt_device_present) { > @@ -50,7 +65,7 @@ static void qemu_init(void) > } > > DECLARE_PLATFORM(qemu) = { > - .name = "Qemu", > + .name = "QEMU", > .probe = qemu_probe, > .init = qemu_init, > .external_irq = astbmc_ext_irq_serirq_cpld, > @@ -60,3 +75,37 @@ DECLARE_PLATFORM(qemu) = { > .resource_loaded = flash_resource_loaded, > .terminate = ipmi_terminate, > }; > + > +/* > + * For a QEMU PowerNV machine using POWER8 CPUs (Palmetto) > + */ > +DECLARE_PLATFORM(qemu_powernv8) = { > + .name = "QEMU POWER8", > + .probe = qemu_probe_powernv8, > + .bmc = &bmc_plat_ast2400_ami, > + .init = qemu_init, > + .external_irq = astbmc_ext_irq_serirq_cpld, > + .cec_power_down = astbmc_ipmi_power_down, > + .cec_reboot = astbmc_ipmi_reboot, > + .start_preload_resource = flash_start_preload_resource, > + .resource_loaded = flash_resource_loaded, > + .exit = astbmc_exit, > + .terminate = ipmi_terminate, > +}; > + > +/* > + * For a QEMU PowerNV machine using POWER9 CPUs (Witherspoon) > + */ > +DECLARE_PLATFORM(qemu_powernv9) = { > + .name = "QEMU POWER9", > + .probe = qemu_probe_powernv9, > + .bmc = &bmc_plat_ast2500_openbmc, > + .init = qemu_init, > + .external_irq = astbmc_ext_irq_serirq_cpld, > + .cec_power_down = astbmc_ipmi_power_down, > + .cec_reboot = astbmc_ipmi_reboot, > + .start_preload_resource = flash_start_preload_resource, > + .resource_loaded = flash_resource_loaded, > + .exit = astbmc_exit, > + .terminate = ipmi_terminate, > +}; > -- > 2.20.1 > >
diff --git a/platforms/qemu/qemu.c b/platforms/qemu/qemu.c index 04bf3fb3f0ea..b528a826301a 100644 --- a/platforms/qemu/qemu.c +++ b/platforms/qemu/qemu.c @@ -23,11 +23,11 @@ static bool bt_device_present; -static bool qemu_probe(void) +static bool qemu_probe_common(const char *compat) { struct dt_node *n; - if (!dt_node_is_compatible(dt_root, "qemu,powernv")) + if (!dt_node_is_compatible(dt_root, compat)) return false; astbmc_early_init(); @@ -40,6 +40,21 @@ static bool qemu_probe(void) return true; } +static bool qemu_probe(void) +{ + return qemu_probe_common("qemu,powernv"); +} + +static bool qemu_probe_powernv8(void) +{ + return qemu_probe_common("qemu,powernv8"); +} + +static bool qemu_probe_powernv9(void) +{ + return qemu_probe_common("qemu,powernv9"); +} + static void qemu_init(void) { if (!bt_device_present) { @@ -50,7 +65,7 @@ static void qemu_init(void) } DECLARE_PLATFORM(qemu) = { - .name = "Qemu", + .name = "QEMU", .probe = qemu_probe, .init = qemu_init, .external_irq = astbmc_ext_irq_serirq_cpld, @@ -60,3 +75,37 @@ DECLARE_PLATFORM(qemu) = { .resource_loaded = flash_resource_loaded, .terminate = ipmi_terminate, }; + +/* + * For a QEMU PowerNV machine using POWER8 CPUs (Palmetto) + */ +DECLARE_PLATFORM(qemu_powernv8) = { + .name = "QEMU POWER8", + .probe = qemu_probe_powernv8, + .bmc = &bmc_plat_ast2400_ami, + .init = qemu_init, + .external_irq = astbmc_ext_irq_serirq_cpld, + .cec_power_down = astbmc_ipmi_power_down, + .cec_reboot = astbmc_ipmi_reboot, + .start_preload_resource = flash_start_preload_resource, + .resource_loaded = flash_resource_loaded, + .exit = astbmc_exit, + .terminate = ipmi_terminate, +}; + +/* + * For a QEMU PowerNV machine using POWER9 CPUs (Witherspoon) + */ +DECLARE_PLATFORM(qemu_powernv9) = { + .name = "QEMU POWER9", + .probe = qemu_probe_powernv9, + .bmc = &bmc_plat_ast2500_openbmc, + .init = qemu_init, + .external_irq = astbmc_ext_irq_serirq_cpld, + .cec_power_down = astbmc_ipmi_power_down, + .cec_reboot = astbmc_ipmi_reboot, + .start_preload_resource = flash_start_preload_resource, + .resource_loaded = flash_resource_loaded, + .exit = astbmc_exit, + .terminate = ipmi_terminate, +};
These new QEMU platforms have characteristics closer to real OpenPOWER systems that we use today and define a different BMC depending on the CPU type. New platform properties are introduced for each, "qemu,powernv8", "qemu,powernv9" and these should be compatible with existing QEMUs which only expose the "qemu,powernv" property Signed-off-by: Cédric Le Goater <clg@kaod.org> --- platforms/qemu/qemu.c | 55 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-)