[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 12/25] spapr: introduce a XIVE interrupt present
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH 12/25] spapr: introduce a XIVE interrupt presenter model |
Date: |
Fri, 1 Dec 2017 15:03:01 +1100 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Thu, Nov 30, 2017 at 01:44:51PM +0000, Cédric Le Goater wrote:
> On 11/30/2017 04:06 AM, David Gibson wrote:
> > On Wed, Nov 29, 2017 at 10:55:34AM +0100, Cédric Le Goater wrote:
> >> On 11/29/2017 06:11 AM, David Gibson wrote:
> >>> On Thu, Nov 23, 2017 at 02:29:42PM +0100, Cédric Le Goater wrote:
> >>>> The XIVE interrupt presenter exposes a set of rings, also called
> >>>> Thread Interrupt Management Areas (TIMA), to handle priority
> >>>> management and interrupt acknowledgment among other things. There is
> >>>> one ring per level of privilege, four in all. The one we are
> >>>> interested in for the sPAPR machine is the OS ring.
> >>>>
> >>>> The TIMA is mapped at the same address for each CPU. 'current_cpu' is
> >>>> used to retrieve the targeted interrupt presenter object holding the
> >>>> cache data of the registers the model use.
> >>>>
> >>>> Signed-off-by: Cédric Le Goater <address@hidden>
> >>>> ---
> >>>> hw/intc/spapr_xive.c | 271
> >>>> ++++++++++++++++++++++++++++++++++++++++++++
> >>>> hw/intc/xive-internal.h | 89 +++++++++++++++
> >>>> include/hw/ppc/spapr_xive.h | 11 ++
> >>>> 3 files changed, 371 insertions(+)
> >>>>
> >>>> diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
> >>>> index b1e3f8710cff..554b25e0884c 100644
> >>>> --- a/hw/intc/spapr_xive.c
> >>>> +++ b/hw/intc/spapr_xive.c
> >>>> @@ -23,9 +23,166 @@
> >>>> #include "sysemu/dma.h"
> >>>> #include "monitor/monitor.h"
> >>>> #include "hw/ppc/spapr_xive.h"
> >>>> +#include "hw/ppc/xics.h"
> >>>>
> >>>> #include "xive-internal.h"
> >>>>
> >>>> +struct sPAPRXiveICP {
> >>>
> >>> I'd really prefer to avoid calling anything in xive "icp" to avoid
> >>> confusion with xics.
> >>
> >> OK.
> >>
> >> The specs refers to the whole as an IVPE : Interrupt Virtualization
> >> Presentation Engine. In our model, we use the TIMA cached values of
> >> the OS ring and the qemu_irq for the CPU line.
> >>
> >> Would 'sPAPRXivePresenter' be fine ?
> >
> > That'd be ok. Or call if sPAPRIVPE. Or even call it TIMA. I'd be
> > fine with any of those.
>
> In this model, I am making a lot of shortcuts in the XIVE concepts
> (which I don't master completely yet ...)
>
> The IVPE is the part of the overall controller doing the interrupt
> presentation.
>
> The TIMA refers to the MMIO region in which the thread interrupt
> management is done.
>
> The XIVE structure that contains the 'virtual processor' interrupt
> state is the NVT: Notification Virtual Target. An index to an NVT
> is stored in the EQs to do the routing. I did not introduce the NVT
> in sPAPRXive because it's rather big, 128 bytes, and we don't need
> much of it (NSR, CPPR, PIPR, IPB) but we could use a shorten one.
>
> So I think sPAPRXiveNVT, or sPAPRXiveVP (VP for virtual processor)
> would be better names.
Ok. I prefer sPAPRXiveNVT of these two.
>
> We will need more of the NVT structure to support the hcalls
> doing the set and the get of the address of the Reporting Cache
> line (H_INT_{S,G}ET_OS_REPORTING_LINE). We can extend it when
> time comes.
>
> C.
>
--
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
- Re: [Qemu-devel] [PATCH 12/25] spapr: introduce a XIVE interrupt presenter model,
David Gibson <=