From: "Cédric Le Goater" <clg@kaod.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Frederic Barrat" <fbarrat@linux.ibm.com>,
"Cédric Le Goater" <clg@kaod.org>
Subject: [PULL 28/30] pnv/xive2: Add a get_config() method on the presenter class
Date: Mon, 26 Jun 2023 07:56:45 +0200 [thread overview]
Message-ID: <20230626055647.1147743-29-clg@kaod.org> (raw)
In-Reply-To: <20230626055647.1147743-1-clg@kaod.org>
From: Frederic Barrat <fbarrat@linux.ibm.com>
The presenters for xive on P9 and P10 are mostly similar but the
behavior can be tuned through a few CQ registers. This patch adds a
"get_config" method, which will allow to access that config from the
presenter in a later patch.
For now, just define the config for the TIMA version.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
include/hw/ppc/xive.h | 3 +++
hw/intc/pnv_xive.c | 11 +++++++++++
hw/intc/pnv_xive2.c | 12 ++++++++++++
hw/intc/spapr_xive.c | 16 ++++++++++++++++
hw/intc/xive.c | 7 +++++++
5 files changed, 49 insertions(+)
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index f7eea4ca8178..3dfb06e0027b 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -430,6 +430,8 @@ typedef struct XivePresenterClass XivePresenterClass;
DECLARE_CLASS_CHECKERS(XivePresenterClass, XIVE_PRESENTER,
TYPE_XIVE_PRESENTER)
+#define XIVE_PRESENTER_GEN1_TIMA_OS 0x1
+
struct XivePresenterClass {
InterfaceClass parent;
int (*match_nvt)(XivePresenter *xptr, uint8_t format,
@@ -437,6 +439,7 @@ struct XivePresenterClass {
bool cam_ignore, uint8_t priority,
uint32_t logic_serv, XiveTCTXMatch *match);
bool (*in_kernel)(const XivePresenter *xptr);
+ uint32_t (*get_config)(XivePresenter *xptr);
};
int xive_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx,
diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c
index 622f9d28b719..e536b3ec26e5 100644
--- a/hw/intc/pnv_xive.c
+++ b/hw/intc/pnv_xive.c
@@ -479,6 +479,16 @@ static int pnv_xive_match_nvt(XivePresenter *xptr, uint8_t format,
return count;
}
+static uint32_t pnv_xive_presenter_get_config(XivePresenter *xptr)
+{
+ uint32_t cfg = 0;
+
+ /* TIMA GEN1 is all P9 knows */
+ cfg |= XIVE_PRESENTER_GEN1_TIMA_OS;
+
+ return cfg;
+}
+
static uint8_t pnv_xive_get_block_id(XiveRouter *xrtr)
{
return pnv_xive_block_id(PNV_XIVE(xrtr));
@@ -1991,6 +2001,7 @@ static void pnv_xive_class_init(ObjectClass *klass, void *data)
xnc->notify = pnv_xive_notify;
xpc->match_nvt = pnv_xive_match_nvt;
+ xpc->get_config = pnv_xive_presenter_get_config;
};
static const TypeInfo pnv_xive_info = {
diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c
index ec1edeb385dd..59534f684335 100644
--- a/hw/intc/pnv_xive2.c
+++ b/hw/intc/pnv_xive2.c
@@ -501,6 +501,17 @@ static int pnv_xive2_match_nvt(XivePresenter *xptr, uint8_t format,
return count;
}
+static uint32_t pnv_xive2_presenter_get_config(XivePresenter *xptr)
+{
+ PnvXive2 *xive = PNV_XIVE2(xptr);
+ uint32_t cfg = 0;
+
+ if (xive->cq_regs[CQ_XIVE_CFG >> 3] & CQ_XIVE_CFG_GEN1_TIMA_OS) {
+ cfg |= XIVE_PRESENTER_GEN1_TIMA_OS;
+ }
+ return cfg;
+}
+
static uint8_t pnv_xive2_get_block_id(Xive2Router *xrtr)
{
return pnv_xive2_block_id(PNV_XIVE2(xrtr));
@@ -1987,6 +1998,7 @@ static void pnv_xive2_class_init(ObjectClass *klass, void *data)
xnc->notify = pnv_xive2_notify;
xpc->match_nvt = pnv_xive2_match_nvt;
+ xpc->get_config = pnv_xive2_presenter_get_config;
};
static const TypeInfo pnv_xive2_info = {
diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
index dc641cc604bf..8bcab2846c16 100644
--- a/hw/intc/spapr_xive.c
+++ b/hw/intc/spapr_xive.c
@@ -475,6 +475,21 @@ static int spapr_xive_match_nvt(XivePresenter *xptr, uint8_t format,
return count;
}
+static uint32_t spapr_xive_presenter_get_config(XivePresenter *xptr)
+{
+ uint32_t cfg = 0;
+
+ /*
+ * Let's claim GEN1 TIMA format. If running with KVM on P10, the
+ * correct answer is deep in the hardware and not accessible to
+ * us. But it shouldn't matter as it only affects the presenter
+ * as seen by a guest OS.
+ */
+ cfg |= XIVE_PRESENTER_GEN1_TIMA_OS;
+
+ return cfg;
+}
+
static uint8_t spapr_xive_get_block_id(XiveRouter *xrtr)
{
return SPAPR_XIVE_BLOCK_ID;
@@ -832,6 +847,7 @@ static void spapr_xive_class_init(ObjectClass *klass, void *data)
sicc->post_load = spapr_xive_post_load;
xpc->match_nvt = spapr_xive_match_nvt;
+ xpc->get_config = spapr_xive_presenter_get_config;
xpc->in_kernel = spapr_xive_in_kernel_xptr;
}
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index 5204c14b872b..34a868b1850b 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -461,6 +461,13 @@ static void xive_tm_push_os_ctx(XivePresenter *xptr, XiveTCTX *tctx,
}
}
+static __attribute__((unused)) uint32_t xive_presenter_get_config(XivePresenter *xptr)
+{
+ XivePresenterClass *xpc = XIVE_PRESENTER_GET_CLASS(xptr);
+
+ return xpc->get_config(xptr);
+}
+
/*
* Define a mapping of "special" operations depending on the TIMA page
* offset and the size of the operation.
--
2.41.0
next prev parent reply other threads:[~2023-06-26 5:58 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-26 5:56 [PULL 00/30] ppc queue Cédric Le Goater
2023-06-26 5:56 ` [PULL 01/30] target/ppc: gdbstub init spr gdb_id for all CPUs Cédric Le Goater
2023-06-26 5:56 ` [PULL 02/30] ppc/pnv/pci: Clean up error messages Cédric Le Goater
2023-06-26 5:56 ` [PULL 03/30] MAINTAINERS: Add reviewers for PowerNV baremetal emulation Cédric Le Goater
2023-06-26 5:56 ` [PULL 04/30] MAINTAINERS: Add reviewer for PowerPC TCG CPUs Cédric Le Goater
2023-06-26 5:56 ` [PULL 05/30] MAINTAINERS: Add reviewer for XIVE Cédric Le Goater
2023-06-26 5:56 ` [PULL 06/30] ppc/prep: Report an error when run with KVM Cédric Le Goater
2023-06-26 5:56 ` [PULL 07/30] ppc/bamboo: " Cédric Le Goater
2023-06-26 5:56 ` [PULL 08/30] ppc/pnv: Rephrase " Cédric Le Goater
2023-06-26 5:56 ` [PULL 09/30] target/ppc: Fix timer register accessors when !KVM Cédric Le Goater
2023-06-26 5:56 ` [PULL 10/30] ppc/spapr: H_ENTER_NESTED should restore host XER ca field Cédric Le Goater
2023-06-26 12:26 ` Michael Tokarev
2023-06-26 21:45 ` Cédric Le Goater
2023-06-26 23:15 ` Nicholas Piggin
2023-06-26 5:56 ` [PULL 11/30] ppc/spapr: Add a nested state struct Cédric Le Goater
2023-06-26 5:56 ` [PULL 12/30] ppc/spapr: load and store l2 state with helper functions Cédric Le Goater
2023-06-26 5:56 ` [PULL 13/30] ppc/spapr: Move spapr nested HV to a new file Cédric Le Goater
2023-06-26 5:56 ` [PULL 14/30] target/ppc: Fix instruction loading endianness in alignment interrupt Cédric Le Goater
2023-06-26 5:56 ` [PULL 15/30] target/ppc: Change partition-scope translate interface Cédric Le Goater
2023-06-26 5:56 ` [PULL 16/30] target/ppc: Add SRR1 prefix indication to interrupt handlers Cédric Le Goater
2023-06-26 5:56 ` [PULL 17/30] target/ppc: Implement HEIR SPR Cédric Le Goater
2023-06-26 5:56 ` [PULL 18/30] target/ppc: Add ISA v3.1 LEV indication in SRR1 for system call interrupts Cédric Le Goater
2023-06-26 5:56 ` [PULL 19/30] target/ppc: Better CTRL SPR implementation Cédric Le Goater
2023-06-26 5:56 ` [PULL 20/30] target/ppc: Fix sc instruction handling of LEV field Cédric Le Goater
2023-06-26 5:56 ` [PULL 21/30] target/ppc: Add initial flags and helpers for SMT support Cédric Le Goater
2023-06-26 5:56 ` [PULL 22/30] target/ppc: Add support for SMT CTRL register Cédric Le Goater
2023-06-26 5:56 ` [PULL 23/30] target/ppc: Add msgsnd/p and DPDES SMT support Cédric Le Goater
2023-06-26 5:56 ` [PULL 24/30] hw/ppc/spapr: Test whether TCG is enabled with tcg_enabled() Cédric Le Goater
2023-06-26 5:56 ` [PULL 25/30] spapr: TCG allow up to 8-thread SMT on POWER8 and newer CPUs Cédric Le Goater
2023-06-26 5:56 ` [PULL 26/30] tests/avocado: boot ppc64 pseries to Linux VFS mount Cédric Le Goater
2023-06-26 5:56 ` [PULL 27/30] tests/avocado: Add ppc64 pseries multiprocessor boot tests Cédric Le Goater
2023-06-26 5:56 ` Cédric Le Goater [this message]
2023-06-26 5:56 ` [PULL 29/30] pnv/xive2: Check TIMA special ops against a dedicated array for P10 Cédric Le Goater
2023-06-26 5:56 ` [PULL 30/30] tests/avocado: ppc test VOF bios Linux boot Cédric Le Goater
2023-06-26 8:37 ` [PULL 00/30] ppc queue Richard Henderson
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=20230626055647.1147743-29-clg@kaod.org \
--to=clg@kaod.org \
--cc=danielhb413@gmail.com \
--cc=fbarrat@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=richard.henderson@linaro.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.