ppc/xive: introduce the XiveRouter model
authorCédric Le Goater <clg@kaod.org>
Wed, 5 Dec 2018 23:22:18 +0000 (00:22 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 20 Dec 2018 22:26:31 +0000 (09:26 +1100)
commit7ff7ea928039e418dfa584c91f3f78512284a79a
treeb73b87649f3930df8dabb749eeb5665e9c47111e
parent5e79b155a8ca342cb6ccfcd2a779e200d34f2a9f
ppc/xive: introduce the XiveRouter model

The XiveRouter models the second sub-engine of the XIVE architecture :
the Interrupt Virtualization Routing Engine (IVRE).

The IVRE handles event notifications of the IVSE and performs the
interrupt routing process. For this purpose, it uses a set of tables
stored in system memory, the first of which being the Event Assignment
Structure (EAS) table.

The EAT associates an interrupt source number with an Event Notification
Descriptor (END) which will be used in a second phase of the routing
process to identify a Notification Virtual Target.

The XiveRouter is an abstract class which needs to be inherited from
to define a storage for the EAT, and other upcoming tables.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
[dwg: Folded in parts of a later fix by Cédric fixing field access]
[dwg: Fix style nits]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/intc/xive.c
include/hw/ppc/xive.h
include/hw/ppc/xive_regs.h [new file with mode: 0644]