hw/ppc/spapr_irq.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
Split mode doesn't make sense on pseries, neither with XICS nor XIVE. But
passing kernel-irqchip=split silently behaves like kernel-irqchip=on.
Other architectures that support kernel-irqchip do terminate QEMU when
split mode is requested but not available though. Do the same with pseries
for consistency.
Similarly, passing kernel-irqchip=on,accel=tcg starts the machine with the
emulated interrupt controller, ie, behaves like kernel-irqchip=off. However,
when passing kernel-irqchip=on,accel=kvm, if we can't initialize the KVM
XICS for some reason, ie, xics_kvm_init() fails, then QEMU is terminated.
This is inconsistent. Terminate QEMU all the same when requesting the
in-kernel interrupt controller without KVM.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
The odds for someone to have an existing pseries setup with split mode are
very low since this is really an x86 thingy. And I guess we don't really
care to break the silly kernel-irqchip=on,accel=tcg case. But if we really
need to stay bug compatible, the errors can be turned into warnings.
---
hw/ppc/spapr_irq.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index 2d7a7c163876..80b0083b8e38 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -600,6 +600,19 @@ sPAPRIrq spapr_irq_dual = {
*/
void spapr_irq_init(sPAPRMachineState *spapr, Error **errp)
{
+ MachineState *machine = MACHINE(spapr);
+
+ if (machine_kernel_irqchip_split(machine)) {
+ error_setg(errp, "kernel_irqchip split mode not supported on pseries");
+ return;
+ }
+
+ if (!kvm_enabled() && machine_kernel_irqchip_required(machine)) {
+ error_setg(errp,
+ "kernel_irqchip requested but only available with KVM");
+ return;
+ }
+
/* Initialize the MSI IRQ allocator. */
if (!SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
spapr_irq_msi_init(spapr, spapr->irq->nr_msis);
On Fri, Feb 08, 2019 at 07:17:47PM +0100, Greg Kurz wrote: > Split mode doesn't make sense on pseries, neither with XICS nor XIVE. But > passing kernel-irqchip=split silently behaves like kernel-irqchip=on. > Other architectures that support kernel-irqchip do terminate QEMU when > split mode is requested but not available though. Do the same with pseries > for consistency. > > Similarly, passing kernel-irqchip=on,accel=tcg starts the machine with the > emulated interrupt controller, ie, behaves like kernel-irqchip=off. However, > when passing kernel-irqchip=on,accel=kvm, if we can't initialize the KVM > XICS for some reason, ie, xics_kvm_init() fails, then QEMU is terminated. > This is inconsistent. Terminate QEMU all the same when requesting the > in-kernel interrupt controller without KVM. > > Signed-off-by: Greg Kurz <groug@kaod.org> > --- > > The odds for someone to have an existing pseries setup with split mode are > very low since this is really an x86 thingy. And I guess we don't really > care to break the silly kernel-irqchip=on,accel=tcg case. But if we really > need to stay bug compatible, the errors can be turned into warnings. Applied, thanks. > --- > hw/ppc/spapr_irq.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c > index 2d7a7c163876..80b0083b8e38 100644 > --- a/hw/ppc/spapr_irq.c > +++ b/hw/ppc/spapr_irq.c > @@ -600,6 +600,19 @@ sPAPRIrq spapr_irq_dual = { > */ > void spapr_irq_init(sPAPRMachineState *spapr, Error **errp) > { > + MachineState *machine = MACHINE(spapr); > + > + if (machine_kernel_irqchip_split(machine)) { > + error_setg(errp, "kernel_irqchip split mode not supported on pseries"); > + return; > + } > + > + if (!kvm_enabled() && machine_kernel_irqchip_required(machine)) { > + error_setg(errp, > + "kernel_irqchip requested but only available with KVM"); > + return; > + } > + > /* Initialize the MSI IRQ allocator. */ > if (!SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) { > spapr_irq_msi_init(spapr, spapr->irq->nr_msis); > -- 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
© 2016 - 2024 Red Hat, Inc.