On Wed, Jul 05, 2017 at 07:13:23PM +0200, Cédric Le Goater wrote:
> 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 <clg@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);
This doesn't seem like it needs to be stored in the persistent object
- it can be calculated when the hcall is made. Plus if it's for the
hcll it only makes sense for spapr.
> 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;
--
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