[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 for-5.2 0/3] spapr: Cleanups for XIVE

From: Greg Kurz
Subject: [PATCH v3 for-5.2 0/3] spapr: Cleanups for XIVE
Date: Fri, 07 Aug 2020 13:31:59 +0200
User-agent: StGit/0.21

Recent cleanup patch "spapr: Simplify error handling in spapr_phb_realize"
had to be dropped from ppc-for-5.2 because it would cause QEMU to crash
at init time on some POWER9 setups (eg. Boston systems), as reported by

The crash was happening because the kvmppc_xive_source_reset_one() function
would get called at some point (eg. initializing the LSI table of PHB0) and
fail (because XIVE KVM hasn't been created yet) without calling error_setg(),
which the caller doesn't expect when the above patch is applied.

The issue isn't really about a missing call to error_setg() but why do
we end up trying to claim an IRQ number in a XIVE KVM device that doesn't
exist ? The root cause for this is that we guard calls to the XIVE KVM
code with kvm_irqchip_in_kernel(), which might return true when the XICS
KVM device is active, even though the XIVE one is not. This series
upgrade the guarding code to also check if the device is actually open.

A similar cleanup could be performed on XICS.

v3: - rework the ESB MMIO of the XIVE source in a preliminary patch.
      This gets rid of an anoying user of kvm_irqchip_in_kernel()
    - drop "spapr: Simplify error handling in spapr_phb_realize". Will
      be posted later with other "error handling" cleanups in a separate

v2: - patch 1 and 2 already applied but not yet visible on github
    - new approach with abstract methods in the base XIVE classes


Greg Kurz (3):
      ppc/xive: Rework setup of XiveSource::esb_mmio
      ppc/xive: Introduce dedicated kvm_irqchip_in_kernel() wrappers
      spapr/xive: Convert KVM device fd checks to assert()

 hw/intc/spapr_xive.c     |   45 +++++++++++++++++++++++++++++++--------------
 hw/intc/spapr_xive_kvm.c |   39 +++++++++------------------------------
 hw/intc/xive.c           |   36 +++++++++++++++++++++++++-----------
 include/hw/ppc/xive.h    |    7 +++++++
 4 files changed, 72 insertions(+), 55 deletions(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]