[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveR
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer |
Date: |
Sun, 28 Jul 2019 17:46:02 +1000 |
User-agent: |
Mutt/1.12.0 (2019-05-25) |
On Thu, Jul 18, 2019 at 01:54:12PM +0200, Cédric Le Goater wrote:
> 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>
Hrm. This still bothers me. AIUI there can be multiple XiveRouters
in the system, yes? And at least theoretically can present irqs from
multiple routers? In which case what's the rule for which one should
be associated with a specific.
I guess it's the one on the same chip, but that needs to be explained
up front, with some justification of why that's the relevant one.
> ---
> 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;
--
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-devel] [PATCH v2 02/17] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP, (continued)
- [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, 2019/07/18
- Re: [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer,
David Gibson <=
[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
[Qemu-devel] [PATCH v2 16/17] ppc/pnv: Introduce a pnv_xive_get_block_id() interface to XiveRouter, Cédric Le Goater, 2019/07/18