On Mon, Jul 15, 2019 at 12:19:03PM +0200, Cédric Le Goater wrote: > 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 ?
I believe we can make essentially arbitrary change to the device tree as part of the CAS process without a reboot. Re-doing this is kind of awkward with the current structure, but it's probably what we're going to want. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature