ppc/xive: introduce a simplified XIVE presenter
commitaf53dbf6227a78a25ead654998fd8caf46639810
authorCédric Le Goater <clg@kaod.org>
Sun, 9 Dec 2018 19:45:54 +0000 (9 20:45 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 20 Dec 2018 22:37:04 +0000 (21 09:37 +1100)
treeaa1a8a92674d50526c2863bd4766d77a0a141ec3
parent207d9fe98510eaac575bfde8d1be58137e9a22ff
ppc/xive: introduce a simplified XIVE presenter

The last sub-engine of the XIVE architecture is the Interrupt
Virtualization Presentation Engine (IVPE). On HW, the IVRE and the
IVPE share elements, the Power Bus interface (CQ), the routing table
descriptors, and they can be combined in the same HW logic. We do the
same in QEMU and combine both engines in the XiveRouter for
simplicity.

When the IVRE has completed its job of matching an event source with a
Notification Virtual Target (NVT) to notify, it forwards the event
notification to the IVPE sub-engine. The IVPE scans the thread
interrupt contexts of the Notification Virtual Targets (NVT)
dispatched on the HW processor threads and if a match is found, it
signals the thread. If not, the IVPE escalates the notification to
some other targets and records the notification in a backlog queue.

The IVPE maintains the thread interrupt context state for each of its
NVTs not dispatched on HW processor threads in the Notification
Virtual Target table (NVTT).

The model currently only supports single NVT notifications.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
[dwg: Folded in fix for field accessors]
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