The address of the MMIO page through which the Event State Buffer is controlled is returned to the guest by the H_INT_GET_SOURCE_INFO hcall.
Signed-off-by: Cédric Le Goater <c...@kaod.org> --- hw/intc/xive.c | 3 +++ include/hw/ppc/xive.h | 1 + 2 files changed, 4 insertions(+) diff --git a/hw/intc/xive.c b/hw/intc/xive.c index a1cb87a07b76..0db97fd33981 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -344,6 +344,9 @@ static void xive_ics_realize(ICSState *ics, Error **errp) ICS_BASE(xs)->offset * (1 << xs->esb_shift), &xs->esb_iomem); + /* Record base address which is needed by the hcalls */ + xs->esb_base = x->vc_base + ICS_BASE(xs)->offset * (1 << xs->esb_shift); + qemu_register_reset(xive_ics_reset, xs); } diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index 1178300c9df3..b06bc861b845 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -43,6 +43,7 @@ struct XiveICSState { uint64_t flags; uint32_t esb_shift; + hwaddr esb_base; MemoryRegion esb_iomem; XIVE *xive; -- 2.7.5