[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [RFC PATCH v2 09/21] ppc/xive: extend the interrupt prese
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [RFC PATCH v2 09/21] ppc/xive: extend the interrupt presenter model for XIVE |
Date: |
Tue, 19 Sep 2017 17:36:15 +1000 |
User-agent: |
Mutt/1.8.3 (2017-05-23) |
On Mon, Sep 11, 2017 at 07:12:23PM +0200, Cédric Le Goater wrote:
> The XIVE interrupt presenter exposes a set of Thread Interrupt
> Management Areas, also called rings, one per different level of
> privilege (four in all). This area is used to handle priority
> management and interrupt acknowledgment among other things.
>
> We extend the ICPState object with a cache of the register data for
> XIVE. The integration with the sPAPR machine is much easier and we
> need a common framework to switch from one controller model to
> another: XICS <-> XIVE.
This sounds like an even worse idea than referencing the ICS state.
The TIMA really needs to be managed by a different object than the ICP.
> The next patch will introduce the MMIO handlers to interact with the
> TIMA, OS only, which is required for the sPAPR support.
>
> Signed-off-by: Cédric Le Goater <address@hidden>
> ---
> hw/intc/xics.c | 4 ++++
> include/hw/ppc/xics.h | 6 ++++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index a84ba51ad8ff..927d4fec966a 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -274,6 +274,7 @@ static const VMStateDescription vmstate_icp_server = {
> VMSTATE_UINT32(xirr, ICPState),
> VMSTATE_UINT8(pending_priority, ICPState),
> VMSTATE_UINT8(mfrr, ICPState),
> + VMSTATE_UINT8_ARRAY(tima, ICPState, 0x40),
> VMSTATE_END_OF_LIST()
> },
> };
> @@ -293,6 +294,7 @@ static void icp_reset(void *dev)
> if (icpc->reset) {
> icpc->reset(icp);
> }
> + memset(icp->tima, 0, sizeof(icp->tima));
> }
>
> static void icp_realize(DeviceState *dev, Error **errp)
> @@ -343,6 +345,8 @@ static void icp_realize(DeviceState *dev, Error **errp)
> icpc->realize(icp, errp);
> }
>
> + icp->tima_os = &icp->tima[0x10];
> +
> qemu_register_reset(icp_reset, dev);
> vmstate_register(NULL, icp->cs->cpu_index, &vmstate_icp_server, icp);
> }
> diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
> index 28d248abad61..c835997303c4 100644
> --- a/include/hw/ppc/xics.h
> +++ b/include/hw/ppc/xics.h
> @@ -83,6 +83,12 @@ struct ICPState {
> qemu_irq output;
>
> XICSFabric *xics;
> +
> + /* XIVE section */
> +#define XIVE_TM_RING_COUNT 4
> +
> + uint8_t tima[XIVE_TM_RING_COUNT * 0x10];
> + uint8_t *tima_os;
> };
>
> #define ICP_PROP_XICS "xics"
--
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
signature.asc
Description: PGP signature
[Qemu-ppc] [RFC PATCH v2 08/21] ppc/xive: describe the XIVE interrupt source flags, Cédric Le Goater, 2017/09/11
[Qemu-ppc] [RFC PATCH v2 09/21] ppc/xive: extend the interrupt presenter model for XIVE, Cédric Le Goater, 2017/09/11
- Re: [Qemu-ppc] [RFC PATCH v2 09/21] ppc/xive: extend the interrupt presenter model for XIVE,
David Gibson <=
[Qemu-ppc] [RFC PATCH v2 10/21] ppc/xive: add MMIO handlers for the XIVE TIMA, Cédric Le Goater, 2017/09/11
[Qemu-ppc] [RFC PATCH v2 11/21] ppc/xive: push the EQ data in OS event queue, Cédric Le Goater, 2017/09/11
[Qemu-ppc] [RFC PATCH v2 12/21] ppc/xive: notify the CPU when interrupt priority is more privileged, Cédric Le Goater, 2017/09/11