diff options
author | Cédric Le Goater <clg@kaod.org> | 2019-06-14 18:59:19 +0200 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2019-07-02 09:43:58 +1000 |
commit | 981b1c6266c60f4eb86e09ef00f1b5dd046525c7 (patch) | |
tree | 410561671d623bdb552af8ed8fd2c5c2a48bca86 /hw/ppc | |
parent | a2166410ad7434a6830288beb5858b22d5e35ec5 (diff) |
spapr/xive: rework the mapping the KVM memory regions
Today, the interrupt device is fully initialized at reset when the CAS
negotiation process has completed. Depending on the KVM capabilities,
the SpaprXive memory regions (ESB, TIMA) are initialized with a host
MMIO backend or a QEMU emulated backend. This results in a complex
initialization sequence partially done at realize and later at reset,
and some memory region leaks.
To simplify this sequence and to remove of the late initialization of
the emulated device which is required to be done only once, we
introduce new memory regions specific for KVM. These regions are
mapped as overlaps on top of the emulated device to make use of the
host MMIOs. Also provide proper cleanups of these regions when the
XIVE KVM device is destroyed to fix the leaks.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190614165920.12670-2-clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw/ppc')
-rw-r--r-- | hw/ppc/spapr_irq.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index b2b01e850d..02bc5e8c3d 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -413,7 +413,6 @@ static const char *spapr_irq_get_nodename_xive(SpaprMachineState *spapr) static void spapr_irq_init_emu_xive(SpaprMachineState *spapr, Error **errp) { - spapr_xive_init(spapr->xive, errp); } static void spapr_irq_init_kvm_xive(SpaprMachineState *spapr, Error **errp) |