On 11/07/2019 03:26, David Gibson wrote: > On Wed, Jul 10, 2019 at 06:26:09PM +0200, Laurent Vivier wrote: >> On 29/05/2019 08:50, David Gibson wrote: >>> From: Cédric Le Goater <c...@kaod.org> >>> >>> Now that XIVE support is complete (QEMU emulated and KVM devices), >>> change the pseries machine to advertise both interrupt modes: XICS >>> (P7/P8) and XIVE (P9). >>> >>> The machine default interrupt modes depends on the version. Current >>> settings are: >>> >>> pseries default interrupt mode >>> >>> 4.1 dual >>> 4.0 xics >>> 3.1 xics >>> 3.0 legacy xics (different IRQ number space layout) >>> >>> Signed-off-by: Cédric Le Goater <c...@kaod.org> >>> Message-Id: <20190522074016.10521-3-...@kaod.org> >>> Reviewed-by: Greg Kurz <gr...@kaod.org> >>> Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> >>> --- >>> hw/ppc/spapr.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c >>> index 39e698e9b0..4fd16b43f0 100644 >>> --- a/hw/ppc/spapr.c >>> +++ b/hw/ppc/spapr.c >>> @@ -4352,7 +4352,7 @@ static void spapr_machine_class_init(ObjectClass *oc, >>> void *data) >>> smc->default_caps.caps[SPAPR_CAP_LARGE_DECREMENTER] = SPAPR_CAP_ON; >>> smc->default_caps.caps[SPAPR_CAP_CCF_ASSIST] = SPAPR_CAP_OFF; >>> spapr_caps_add_properties(smc, &error_abort); >>> - smc->irq = &spapr_irq_xics; >>> + smc->irq = &spapr_irq_dual; >>> smc->dr_phb_enabled = true; >>> } >>> >>> @@ -4430,6 +4430,7 @@ static void >>> spapr_machine_4_0_class_options(MachineClass *mc) >>> spapr_machine_4_1_class_options(mc); >>> compat_props_add(mc->compat_props, hw_compat_4_0, hw_compat_4_0_len); >>> smc->phb_placement = phb_placement_4_0; >>> + smc->irq = &spapr_irq_xics; >>> } >>> >>> DEFINE_SPAPR_MACHINE(4_0, "4.0", false); >>> >> >> This patch breaks the '-no-reboot' parameter (I think the "dual" mode >> breaks the -no-reboot parameter) >> >> After grub loads the kernel and starts it, the kernel aborts: >> >> OF stdout device is: /vdevice/vty@71000000 >> Preparing to boot Linux version 4.18.0-112.el8.ppc64le >> (mockbu...@ppc-061.build.eng.bos.redhat.com) (gcc version 8.3.1 20190507 >> (Red Hat 8.3.1-4) (GCC)) #1 SMP Fri Jul 5 11:21:28 UTC 2019 >> Detected machine type: 0000000000000101 >> command line: BOOT_IMAGE=/vmlinuz-4.18.0-112.el8.ppc64le >> root=/dev/mapper/rhel_ibm--p8--kvm--03--guest--02-root ro >> crashkernel=auto rd.lvm.lv=rhel_ibm-p8-kvm-03-guest-02/root >> rd.lvm.lv=rhel_ibm-p8-kvm-03-guest-02/swap >> Max number of cores passed to firmware: 256 (NR_CPUS = 2048) >> Calling ibm,client-architecture-support...[lvivier@localhost ~]$ >> >> I bisected to this patch, and then after I understood the problem is >> with the -no-reboot parameter as the machine is reset by the CAS >> negotiation... and the -no-reboot prevents this reset. >> >> I don't know if it's a real problem or not. > > Ah, bother. I didn't think of the interaction between the CAS reboot > and -no-reboot. I guess that's more reason to work out a way to do > the xics/xive switch without a full reset. People were already not > thrilled with the extra reboots here.
QEMU builds a device tree depending on the interrupt mode negotiated at CAS time. Can we dynamically add/remove nodes ? C.