[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRoute
From: |
Cédric Le Goater |
Subject: |
[Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer |
Date: |
Thu, 18 Jul 2019 13:54:12 +0200 |
This is to perform lookups in the NVT table when a vCPU is dispatched
and possibily resend interrupts.
Future XIVE chip will use a different class for the model of the
interrupt controller and we might need to change the type of
'XiveRouter *' to 'Object *'
Signed-off-by: Cédric Le Goater <address@hidden>
---
include/hw/ppc/xive.h | 2 ++
hw/intc/xive.c | 9 +++++++++
2 files changed, 11 insertions(+)
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index 4851ff87e795..206b23ecfab3 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -320,6 +320,8 @@ typedef struct XiveTCTX {
qemu_irq os_output;
uint8_t regs[XIVE_TM_RING_COUNT * XIVE_TM_RING_SIZE];
+
+ struct XiveRouter *xrtr;
} XiveTCTX;
/*
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index 88f2e560db0f..1b0eccb6df40 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -573,6 +573,14 @@ static void xive_tctx_realize(DeviceState *dev, Error
**errp)
Object *obj;
Error *local_err = NULL;
+ obj = object_property_get_link(OBJECT(dev), "xrtr", &local_err);
+ if (!obj) {
+ error_propagate(errp, local_err);
+ error_prepend(errp, "required link 'xrtr' not found: ");
+ return;
+ }
+ tctx->xrtr = XIVE_ROUTER(obj);
+
obj = object_property_get_link(OBJECT(dev), "cpu", &local_err);
if (!obj) {
error_propagate(errp, local_err);
@@ -666,6 +674,7 @@ Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr,
Error **errp)
object_property_add_child(cpu, TYPE_XIVE_TCTX, obj, &error_abort);
object_unref(obj);
object_property_add_const_link(obj, "cpu", cpu, &error_abort);
+ object_property_add_const_link(obj, "xrtr", OBJECT(xrtr), &error_abort);
object_property_set_bool(obj, true, "realized", &local_err);
if (local_err) {
goto error;
--
2.21.0
- [Qemu-devel] [PATCH v2 00/17] ppc/pnv: add XIVE support for KVM guests, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 02/17] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 01/17] ppc/xive: use an abstract type for XiveNotifier, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 03/17] ppc/xive: Implement TM_PULL_OS_CTX special command, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 04/17] ppc/xive: Provide backlog support, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 05/17] ppc/xive: Provide escalation support, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 06/17] ppc/xive: Provide unconditional escalation support, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 07/17] ppc/xive: Provide silent escalation support, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 08/17] ppc/xive: Improve 'info pic' support, Cédric Le Goater, 2019/07/18
- [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer,
Cédric Le Goater <=
[Qemu-devel] [PATCH v2 10/17] ppc/xive: Introduce xive_tctx_ipb_update(), Cédric Le Goater, 2019/07/18
[Qemu-devel] [PATCH v2 11/17] ppc/xive: Synthesize interrupt from the saved IPB in the NVT, Cédric Le Goater, 2019/07/18
[Qemu-devel] [PATCH v2 12/17] ppc/pnv: Remove pnv_xive_vst_size() routine, Cédric Le Goater, 2019/07/18
[Qemu-devel] [PATCH v2 13/17] ppc/pnv: Dump the XIVE NVT table, Cédric Le Goater, 2019/07/18
[Qemu-devel] [PATCH v2 15/17] ppc/pnv: Grab the XiveRouter object from XiveTCTX in pnv_xive_get_tctx(), Cédric Le Goater, 2019/07/18
[Qemu-devel] [PATCH v2 14/17] ppc/pnv: Skip empty slots of the XIVE NVT table, Cédric Le Goater, 2019/07/18