From: Janosch Frank <frankja@linux.ibm.com>
To: pbonzini@redhat.com
Cc: kvm@vger.kernel.org, frankja@linux.ibm.com,
borntraeger@linux.ibm.com, linux-s390@vger.kernel.org,
imbrenda@linux.ibm.com, thuth@redhat.com,
Christoph Schlameuss <schlameuss@linux.ibm.com>,
Nico Boehr <nrb@linux.ibm.com>
Subject: [kvm-unit-tests GIT PULL 01/13] lib: s390x: Add function to get page root
Date: Mon, 24 Aug 2026 14:35:33 +0000 [thread overview]
Message-ID: <20260824143740.291583-2-frankja@linux.ibm.com> (raw)
In-Reply-To: <20260824143740.291583-1-frankja@linux.ibm.com>
It's time to hide the access to cr1 behind a function and add typing
to the tests that used void* instead of pgdt_t*.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
Reviewed-by: Nico Boehr <nrb@linux.ibm.com>
---
lib/s390x/mmu.h | 7 +++++++
lib/s390x/sie.c | 3 ++-
s390x/diag258.c | 4 ++--
s390x/edat.c | 5 +++--
s390x/mvpg-sie.c | 2 +-
s390x/sie-dat.c | 2 +-
s390x/skey.c | 7 +++----
7 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/lib/s390x/mmu.h b/lib/s390x/mmu.h
index dadc2e60..19c46c58 100644
--- a/lib/s390x/mmu.h
+++ b/lib/s390x/mmu.h
@@ -10,6 +10,8 @@
#ifndef _S390X_MMU_H_
#define _S390X_MMU_H_
+#include <asm/arch_def.h>
+
enum pgt_level {
pgtable_level_pgd = 1,
pgtable_level_p4d,
@@ -95,4 +97,9 @@ static inline void unprotect_page(void *vaddr, unsigned long prot)
void *get_dat_entry(pgd_t *pgtable, void *vaddr, enum pgt_level level);
+static inline pgd_t *get_primary_page_root(void)
+{
+ return (pgd_t *)(stctg(1) & PAGE_MASK);
+}
+
#endif /* _ASMS390X_MMU_H_ */
diff --git a/lib/s390x/sie.c b/lib/s390x/sie.c
index 0fa915cf..47d4cdde 100644
--- a/lib/s390x/sie.c
+++ b/lib/s390x/sie.c
@@ -17,6 +17,7 @@
#include <alloc_page.h>
#include <vmalloc.h>
#include <sclp.h>
+#include <mmu.h>
void sie_expect_validity(struct vm *vm)
{
@@ -156,7 +157,7 @@ uint8_t *sie_guest_alloc(uint64_t guest_size)
pgd_t *root;
setup_vm();
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
+ root = get_primary_page_root();
/*
* Start of guest memory in host virtual space needs to be aligned to
diff --git a/s390x/diag258.c b/s390x/diag258.c
index 8ba75a72..2482ecf3 100644
--- a/s390x/diag258.c
+++ b/s390x/diag258.c
@@ -82,7 +82,7 @@ static void test_priv(void)
static void *page_map_outside_real_space(phys_addr_t page_real)
{
- pgd_t *root = (pgd_t *)(stctg(1) & PAGE_MASK);
+ pgd_t *root = get_primary_page_root();
void *vaddr = alloc_vpage();
install_page(root, page_real, vaddr);
@@ -109,7 +109,7 @@ static void test_refbk_real(void)
refbk_page = alloc_page();
/* Map refblk page outside of physical memory identity mapping */
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
+ root = get_primary_page_root();
refbk = page_map_outside_real_space(virt_to_pte_phys(root, refbk_page));
/* Assert the mapping really is outside identity mapping */
diff --git a/s390x/edat.c b/s390x/edat.c
index 89b9c2d3..e54cd642 100644
--- a/s390x/edat.c
+++ b/s390x/edat.c
@@ -21,7 +21,8 @@
static uint8_t prefix_buf[LC_SIZE] __attribute__((aligned(LC_SIZE)));
static unsigned int tmp[1024] __attribute__((aligned(PAGE_SIZE)));
-static void *root, *mem, *m;
+static void *mem, *m;
+static pgd_t *root;
volatile unsigned int *p;
/*
@@ -237,7 +238,7 @@ static unsigned int setup(void)
/* Setup DAT 1:1 mapping and memory management */
setup_vm();
- root = (void *)(stctg(1) & PAGE_MASK);
+ root = get_primary_page_root();
/*
* Get a pgd worth of virtual memory, so we can test things later
diff --git a/s390x/mvpg-sie.c b/s390x/mvpg-sie.c
index d182b49a..920dee29 100644
--- a/s390x/mvpg-sie.c
+++ b/s390x/mvpg-sie.c
@@ -88,7 +88,7 @@ static void setup_guest(void)
pgd_t *root;
setup_vm();
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
+ root = get_primary_page_root();
snippet_setup_guest(&vm, false);
snippet_init(&vm, SNIPPET_NAME_START(c, mvpg_snippet),
diff --git a/s390x/sie-dat.c b/s390x/sie-dat.c
index 44bf29fe..e40e348f 100644
--- a/s390x/sie-dat.c
+++ b/s390x/sie-dat.c
@@ -69,7 +69,7 @@ static void setup_guest(void)
pgd_t *root;
setup_vm();
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
+ root = get_primary_page_root();
snippet_setup_guest(&vm, false);
diff --git a/s390x/skey.c b/s390x/skey.c
index 7c7a8090..bb769730 100644
--- a/s390x/skey.c
+++ b/s390x/skey.c
@@ -13,6 +13,7 @@
#include <asm/interrupt.h>
#include <vmalloc.h>
#include <css.h>
+#include <mmu.h>
#include <asm/page.h>
#include <asm/facility.h>
#include <asm/mem.h>
@@ -465,10 +466,9 @@ static void test_set_prefix(void)
uint32_t *prefix_ptr = (uint32_t *)pagebuf;
uint32_t *no_override_prefix_ptr;
uint32_t old_prefix;
- pgd_t *root;
+ pgd_t *root = get_primary_page_root();
report_prefix_push("SET PREFIX");
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
old_prefix = get_prefix();
memcpy(lowcore_tmp, 0, sizeof(lowcore_tmp));
assert(((uint64_t)&lowcore_tmp >> 31) == 0);
@@ -583,11 +583,10 @@ static void test_msch(void)
struct schib *schib = (struct schib *)pagebuf;
struct schib *no_override_schib;
int test_device_sid;
- pgd_t *root;
+ pgd_t *root = get_primary_page_root();
int cc;
report_prefix_push("MSCH");
- root = (pgd_t *)(stctg(1) & PAGE_MASK);
test_device_sid = css_enumerate();
if (!(test_device_sid & SCHID_ONE)) {
--
2.53.0
next prev parent reply other threads:[~2026-08-24 14:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 14:35 [kvm-unit-tests GIT PULL 00/13] s390x: stflei test, fixes and sie lib rework Janosch Frank
2026-08-24 14:35 ` Janosch Frank [this message]
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 02/13] lib: s390x: sie: Allocate physical guest memory via memalign Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 03/13] lib: s390x: sie: Memory rework Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 04/13] lib: s390x: snippet: Add function to create a guest of specific length Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 05/13] s390x: snippets: Add reset_guest() to lib Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 06/13] s390x: sclp: Remove unnecessary padding from struct sclp_facilities Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 07/13] s390x: sclp: Check sclp byte before reading feature bits Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 08/13] s390x: sclp: Use sclp_feat_check directly to read DIAG318 feature bit Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 09/13] s390x: sclp: Add detection of alternate STFLE facilities Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 10/13] s390x: Add test for STFLE interpretive execution (format-2) Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 11/13] s390x: stsi: regression test for the STSI 3.2.2 count clamp Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 12/13] s390x: unittests: Reenable tcg for migration tests Janosch Frank
2026-08-24 14:35 ` [kvm-unit-tests GIT PULL 13/13] s390x: skey: Fence TCG protection checks Janosch Frank
2026-09-07 15:01 ` [kvm-unit-tests GIT PULL 00/13] s390x: stflei test, fixes and sie lib rework Thomas Huth
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=20260824143740.291583-2-frankja@linux.ibm.com \
--to=frankja@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nrb@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=schlameuss@linux.ibm.com \
--cc=thuth@redhat.com \
/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.