All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: lvivier@redhat.com, qemu-devel@nongnu.org, groug@kaod.org,
	qemu-ppc@nongnu.org, clg@kaod.org,
	David Gibson <david@gibson.dropbear.id.au>
Subject: [PULL 20/26] xive: Add a "presenter" link property to the TCTX object
Date: Wed,  8 Jan 2020 16:23:06 +1100	[thread overview]
Message-ID: <20200108052312.238710-21-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20200108052312.238710-1-david@gibson.dropbear.id.au>

From: Cédric Le Goater <clg@kaod.org>

This will be used in subsequent patches to access the XIVE associated to
a TCTX without reaching out to the machine through qdev_get_machine().

Signed-off-by: Cédric Le Goater <clg@kaod.org>
[ groug: - split patch
         - write subject and changelog ]
Signed-off-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20200106145645.4539-9-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/intc/spapr_xive.c  | 2 +-
 hw/intc/xive.c        | 6 +++++-
 hw/ppc/pnv.c          | 3 ++-
 include/hw/ppc/xive.h | 8 +++++---
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
index 32322470a8..7663123878 100644
--- a/hw/intc/spapr_xive.c
+++ b/hw/intc/spapr_xive.c
@@ -601,7 +601,7 @@ static int spapr_xive_cpu_intc_create(SpaprInterruptController *intc,
     Object *obj;
     SpaprCpuState *spapr_cpu = spapr_cpu_state(cpu);
 
-    obj = xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(xive), errp);
+    obj = xive_tctx_create(OBJECT(cpu), XIVE_PRESENTER(xive), errp);
     if (!obj) {
         return -1;
     }
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index 12a362b681..bc8019c4c9 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -654,6 +654,7 @@ static void xive_tctx_realize(DeviceState *dev, Error **errp)
     Error *local_err = NULL;
 
     assert(tctx->cs);
+    assert(tctx->xptr);
 
     cpu = POWERPC_CPU(tctx->cs);
     env = &cpu->env;
@@ -727,6 +728,8 @@ static const VMStateDescription vmstate_xive_tctx = {
 
 static Property xive_tctx_properties[] = {
     DEFINE_PROP_LINK("cpu", XiveTCTX, cs, TYPE_CPU, CPUState *),
+    DEFINE_PROP_LINK("presenter", XiveTCTX, xptr, TYPE_XIVE_PRESENTER,
+                     XivePresenter *),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -752,7 +755,7 @@ static const TypeInfo xive_tctx_info = {
     .class_init    = xive_tctx_class_init,
 };
 
-Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr, Error **errp)
+Object *xive_tctx_create(Object *cpu, XivePresenter *xptr, Error **errp)
 {
     Error *local_err = NULL;
     Object *obj;
@@ -761,6 +764,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_set_link(obj, cpu, "cpu", &error_abort);
+    object_property_set_link(obj, OBJECT(xptr), "presenter", &error_abort);
     object_property_set_bool(obj, true, "realized", &local_err);
     if (local_err) {
         goto error;
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index f0b8f3ad26..19fc5d4ddb 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -925,7 +925,8 @@ static void pnv_chip_power9_intc_create(PnvChip *chip, PowerPCCPU *cpu,
      * controller object is initialized afterwards. Hopefully, it's
      * only used at runtime.
      */
-    obj = xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(&chip9->xive), &local_err);
+    obj = xive_tctx_create(OBJECT(cpu), XIVE_PRESENTER(&chip9->xive),
+                           &local_err);
     if (local_err) {
         error_propagate(errp, local_err);
         return;
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index 1ded82b1cd..705cf48176 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -311,6 +311,8 @@ void xive_source_set_irq(void *opaque, int srcno, int val);
 #define XIVE_TM_RING_COUNT      4
 #define XIVE_TM_RING_SIZE       0x10
 
+typedef struct XivePresenter XivePresenter;
+
 typedef struct XiveTCTX {
     DeviceState parent_obj;
 
@@ -319,6 +321,8 @@ typedef struct XiveTCTX {
     qemu_irq    os_output;
 
     uint8_t     regs[XIVE_TM_RING_COUNT * XIVE_TM_RING_SIZE];
+
+    XivePresenter *xptr;
 } XiveTCTX;
 
 /*
@@ -378,8 +382,6 @@ typedef struct XiveTCTXMatch {
     uint8_t ring;
 } XiveTCTXMatch;
 
-typedef struct XivePresenter XivePresenter;
-
 #define TYPE_XIVE_PRESENTER "xive-presenter"
 #define XIVE_PRESENTER(obj)                                     \
     INTERFACE_CHECK(XivePresenter, (obj), TYPE_XIVE_PRESENTER)
@@ -467,7 +469,7 @@ uint64_t xive_tctx_tm_read(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset,
                            unsigned size);
 
 void xive_tctx_pic_print_info(XiveTCTX *tctx, Monitor *mon);
-Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr, Error **errp);
+Object *xive_tctx_create(Object *cpu, XivePresenter *xptr, Error **errp);
 void xive_tctx_reset(XiveTCTX *tctx);
 void xive_tctx_destroy(XiveTCTX *tctx);
 void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring, uint8_t ipb);
-- 
2.24.1



  parent reply	other threads:[~2020-01-08  5:37 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-08  5:22 [PULL 00/26] ppc-for-5.0 queue 20200108 David Gibson
2020-01-08  5:22 ` [PULL 01/26] target/ppc: Remove unused PPC_INPUT_INT defines David Gibson
2020-01-08  5:22 ` [PULL 02/26] target/ppc: Handle AIL=0 in ppc_excp_vector_offset David Gibson
2020-01-08  5:22 ` [PULL 03/26] linux-headers: Update David Gibson
2020-01-08  5:22 ` [PULL 04/26] ppc/spapr: Support reboot of secure pseries guest David Gibson
2020-01-08  5:22 ` [PULL 05/26] ppc/pnv: Modify the powerdown notifier to get the PowerNV machine David Gibson
2020-01-08  5:22 ` [PULL 06/26] mos6522: remove anh register David Gibson
2020-01-08  5:22 ` [PULL 07/26] spapr/xive: Use device_class_set_parent_realize() David Gibson
2020-01-08  5:22 ` [PULL 08/26] ppc/spapr: Don't call KVM_SVM_OFF ioctl on TCG David Gibson
2020-01-08  5:22 ` [PULL 09/26] spapr.c: remove 'out' label in spapr_dt_cas_updates() David Gibson
2020-01-08  5:22 ` [PULL 10/26] ppc440_bamboo.c: remove label from bamboo_load_device_tree() David Gibson
2020-01-08  5:22 ` [PULL 11/26] ppc/pnv: Drop "num-chips" machine property David Gibson
2020-01-08  5:22 ` [PULL 12/26] spapr/xive: remove redundant check in spapr_match_nvt() David Gibson
2020-01-08  5:22 ` [PULL 13/26] ppc/pnv: Introduce a "xics" property alias under the PSI model David Gibson
2020-01-08  5:23 ` [PULL 14/26] ppc/pnv: Introduce a "xics" property under the POWER8 chip David Gibson
2020-01-08  5:23 ` [PULL 15/26] pnv/xive: Use device_class_set_parent_realize() David Gibson
2020-01-08  5:23 ` [PULL 16/26] spapr, pnv, xive: Add a "xive-fabric" link to the XIVE router David Gibson
2020-01-08  5:23 ` [PULL 17/26] xive: Use the XIVE fabric link under " David Gibson
2020-01-08  5:23 ` [PULL 18/26] ppc/pnv: Add an "nr-threads" property to the base chip class David Gibson
2020-01-08  5:23 ` [PULL 19/26] ppc/pnv: Add a "pnor" const link property to the BMC internal simulator David Gibson
2020-01-08  5:23 ` David Gibson [this message]
2020-01-08  5:23 ` [PULL 21/26] spapr/xive: Deduce the SpaprXive pointer from XiveTCTX::xptr David Gibson
2020-01-08  5:23 ` [PULL 22/26] pnv/xive: Deduce the PnvXive " David Gibson
2020-01-08  5:23 ` [PULL 23/26] pnv/psi: Add device reset hook David Gibson
2020-01-08  5:23 ` [PULL 24/26] pnv/psi: Consolidate some duplicated code in pnv_psi_realize() David Gibson
2020-01-08  5:23 ` [PULL 25/26] ppc/pnv: check return value of blk_pwrite() David Gibson
2020-01-08  5:23 ` [PULL 26/26] ppc/pnv: fix check on return value of blk_getlength() David Gibson
2020-01-10 17:16 ` [PULL 00/26] ppc-for-5.0 queue 20200108 Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200108052312.238710-21-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=clg@kaod.org \
    --cc=groug@kaod.org \
    --cc=lvivier@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.