From: Caleb Schlossin <calebs@linux.ibm.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, npiggin@gmail.com, adityag@linux.ibm.com,
milesg@linux.ibm.com, chalapathi.v@linux.ibm.com,
calebs@linux.ibm.com
Subject: [PATCH 3/4] ppc/pnv: Add unimplemented quad and core regs
Date: Thu, 18 Dec 2025 14:03:52 -0600 [thread overview]
Message-ID: <20251218200353.301866-4-calebs@linux.ibm.com> (raw)
In-Reply-To: <20251218200353.301866-1-calebs@linux.ibm.com>
This commit adds the read/write functionality for few core and
quad registers.
Signed-off-by: Chalapathi V <chalapathi.v@linux.ibm.com>
Signed-off-by: Caleb Schlossin <calebs@linux.ibm.com>
---
hw/ppc/pnv_core.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index fb2dfc7ba2..84a2fa6364 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -184,10 +184,18 @@ static const MemoryRegionOps pnv_core_power9_xscom_ops = {
* POWER10 core controls
*/
+#define PNV10_XSCOM_EC_IMA_EVENT_MASK 0x400
#define PNV10_XSCOM_EC_CORE_THREAD_STATE 0x412
#define PNV10_XSCOM_EC_CORE_THREAD_INFO 0x413
+#define PNV10_XSCOM_EC_CORE_FIRMASK 0x443
+#define PNV10_XSCOM_EC_CORE_FIRMASK_AND 0x444
+#define PNV10_XSCOM_EC_CORE_FIRMASK_OR 0x445
#define PNV10_XSCOM_EC_CORE_DIRECT_CONTROLS 0x449
#define PNV10_XSCOM_EC_CORE_RAS_STATUS 0x454
+#define PNV10_XSCOM_EC_SPATTN_OR 0x497
+#define PNV10_XSCOM_EC_SPATTN_AND 0x498
+#define PNV10_XSCOM_EC_SPATTN 0x499
+#define PNV10_XSCOM_EC_SPATTN_MASK 0x49A
static uint64_t pnv_core_power10_xscom_read(void *opaque, hwaddr addr,
unsigned int width)
@@ -223,6 +231,19 @@ static uint64_t pnv_core_power10_xscom_read(void *opaque, hwaddr addr,
}
}
break;
+ case PNV10_XSCOM_EC_IMA_EVENT_MASK:
+ case PNV10_XSCOM_EC_CORE_FIRMASK:
+ return 0;
+ case PNV10_XSCOM_EC_CORE_FIRMASK_OR:
+ case PNV10_XSCOM_EC_CORE_FIRMASK_AND:
+ case PNV10_XSCOM_EC_SPATTN_OR:
+ case PNV10_XSCOM_EC_SPATTN_AND:
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: Write only register, ignoring "
+ "xscom read at 0x%08x\n", __func__, offset);
+ break;
+ case PNV10_XSCOM_EC_SPATTN:
+ case PNV10_XSCOM_EC_SPATTN_MASK:
+ return 0;
default:
qemu_log_mask(LOG_UNIMP, "%s: unimp read 0x%08x\n", __func__,
offset);
@@ -283,6 +304,15 @@ static void pnv_core_power10_xscom_write(void *opaque, hwaddr addr,
}
break;
+ case PNV10_XSCOM_EC_IMA_EVENT_MASK:
+ case PNV10_XSCOM_EC_CORE_FIRMASK:
+ case PNV10_XSCOM_EC_CORE_FIRMASK_OR:
+ case PNV10_XSCOM_EC_CORE_FIRMASK_AND:
+ case PNV10_XSCOM_EC_SPATTN_OR:
+ case PNV10_XSCOM_EC_SPATTN_AND:
+ case PNV10_XSCOM_EC_SPATTN:
+ case PNV10_XSCOM_EC_SPATTN_MASK:
+ break;
default:
qemu_log_mask(LOG_UNIMP, "%s: unimp write 0x%08x\n", __func__,
offset);
@@ -568,6 +598,23 @@ static const MemoryRegionOps pnv_quad_power9_xscom_ops = {
* POWER10 Quads
*/
+#define P10_XSCOM_EQ3_MODE_REG1 0x1160a
+#define P10_XSCOM_EQ3_NCU_SPEC_BAR_REG 0x11650
+#define P10_XSCOM_EQ3_HTM_MODE 0x11680
+#define P10_XSCOM_EQ3_HTM_IMA_PDBAR 0x1168b
+#define P10_XSCOM_EQ2_MODE_REG1 0x1260a
+#define P10_XSCOM_EQ2_NCU_SPEC_BAR_REG 0x12650
+#define P10_XSCOM_EQ2_HTM_MODE 0x12680
+#define P10_XSCOM_EQ2_HTM_IMA_PDBAR 0x1268b
+#define P10_XSCOM_EQ1_MODE_REG1 0x1460a
+#define P10_XSCOM_EQ1_NCU_SPEC_BAR_REG 0x14650
+#define P10_XSCOM_EQ1_HTM_MODE 0x14680
+#define P10_XSCOM_EQ1_HTM_IMA_PDBAR 0x1468b
+#define P10_XSCOM_EQ0_MODE_REG1 0x1860a
+#define P10_XSCOM_EQ0_NCU_SPEC_BAR_REG 0x18650
+#define P10_XSCOM_EQ0_HTM_MODE 0x18680
+#define P10_XSCOM_EQ0_HTM_IMA_PDBAR 0x1868b
+
static uint64_t pnv_quad_power10_xscom_read(void *opaque, hwaddr addr,
unsigned int width)
{
@@ -575,6 +622,23 @@ static uint64_t pnv_quad_power10_xscom_read(void *opaque, hwaddr addr,
uint64_t val = -1;
switch (offset) {
+ case P10_XSCOM_EQ0_MODE_REG1:
+ case P10_XSCOM_EQ0_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ0_HTM_MODE:
+ case P10_XSCOM_EQ0_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ1_MODE_REG1:
+ case P10_XSCOM_EQ1_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ1_HTM_MODE:
+ case P10_XSCOM_EQ1_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ2_MODE_REG1:
+ case P10_XSCOM_EQ2_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ2_HTM_MODE:
+ case P10_XSCOM_EQ2_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ3_MODE_REG1:
+ case P10_XSCOM_EQ3_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ3_HTM_MODE:
+ case P10_XSCOM_EQ3_HTM_IMA_PDBAR:
+ return 0;
default:
qemu_log_mask(LOG_UNIMP, "%s: unimp read 0x%08x\n", __func__,
offset);
@@ -589,6 +653,23 @@ static void pnv_quad_power10_xscom_write(void *opaque, hwaddr addr,
uint32_t offset = addr >> 3;
switch (offset) {
+ case P10_XSCOM_EQ0_MODE_REG1:
+ case P10_XSCOM_EQ0_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ0_HTM_MODE:
+ case P10_XSCOM_EQ0_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ1_MODE_REG1:
+ case P10_XSCOM_EQ1_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ1_HTM_MODE:
+ case P10_XSCOM_EQ1_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ2_MODE_REG1:
+ case P10_XSCOM_EQ2_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ2_HTM_MODE:
+ case P10_XSCOM_EQ2_HTM_IMA_PDBAR:
+ case P10_XSCOM_EQ3_MODE_REG1:
+ case P10_XSCOM_EQ3_NCU_SPEC_BAR_REG:
+ case P10_XSCOM_EQ3_HTM_MODE:
+ case P10_XSCOM_EQ3_HTM_IMA_PDBAR:
+ break;
default:
qemu_log_mask(LOG_UNIMP, "%s: unimp write 0x%08x\n", __func__,
offset);
--
2.47.3
next prev parent reply other threads:[~2025-12-18 20:04 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-18 20:03 [PATCH 0/4] Power10 PowerVM bringup fixes Caleb Schlossin
2025-12-18 20:03 ` [PATCH 1/4] ppc/pnv: Suppress some "pnv_chiptod unimplemented register" messages Caleb Schlossin
2025-12-22 10:46 ` Chalapathi V
2026-01-06 16:49 ` Miles Glenn
2026-01-06 17:07 ` Caleb Schlossin
2026-01-07 18:04 ` Miles Glenn
2026-01-19 10:18 ` Aditya Gupta
2026-01-20 14:31 ` Caleb Schlossin
2026-01-24 12:07 ` Aditya Gupta
2025-12-18 20:03 ` [PATCH 2/4] ppc/pnv: Support for SECURITY_SWITCH XSCOM register access Caleb Schlossin
2025-12-22 10:47 ` Chalapathi V
2026-01-06 16:58 ` Miles Glenn
2026-01-19 10:22 ` Aditya Gupta
2025-12-18 20:03 ` Caleb Schlossin [this message]
2025-12-22 10:48 ` [PATCH 3/4] ppc/pnv: Add unimplemented quad and core regs Chalapathi V
2026-01-06 16:59 ` Miles Glenn
2026-01-24 12:20 ` Aditya Gupta
2025-12-18 20:03 ` [PATCH 4/4] ppc/pnv: Add OCC FLAG registers Caleb Schlossin
2025-12-22 10:49 ` Chalapathi V
2026-01-06 17:00 ` Miles Glenn
2026-01-24 12:13 ` Aditya Gupta
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=20251218200353.301866-4-calebs@linux.ibm.com \
--to=calebs@linux.ibm.com \
--cc=adityag@linux.ibm.com \
--cc=chalapathi.v@linux.ibm.com \
--cc=milesg@linux.ibm.com \
--cc=npiggin@gmail.com \
--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.