From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Michal Orzel <michal.orzel@amd.com>,
"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2 1/3] arm/mpu: Introduce MPU memory region map structure
Date: Fri, 6 Jun 2025 17:48:52 +0100 [thread overview]
Message-ID: <20250606164854.1551148-2-ayan.kumar.halder@amd.com> (raw)
In-Reply-To: <20250606164854.1551148-1-ayan.kumar.halder@amd.com>
Introduce pr_t typedef which is a structure having the prbar and prlar members,
each being structured as the registers of the AArch32 Armv8-R architecture.
Also, define MPU_REGION_RES0 to 0 as there are no reserved 0 bits beyond the
BASE or LIMIT bitfields in prbar or prlar respectively.
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from v1 :-
1. Preserve pr_t typedef in arch specific files.
2. Fix typo.
xen/arch/arm/include/asm/arm32/mpu.h | 34 ++++++++++++++++++++++++++--
xen/arch/arm/mpu/mm.c | 2 ++
2 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/xen/arch/arm/include/asm/arm32/mpu.h b/xen/arch/arm/include/asm/arm32/mpu.h
index f0d4d4055c..fe139a2abe 100644
--- a/xen/arch/arm/include/asm/arm32/mpu.h
+++ b/xen/arch/arm/include/asm/arm32/mpu.h
@@ -5,10 +5,40 @@
#ifndef __ASSEMBLY__
+/*
+ * Unlike arm64, there are no reserved 0 bits beyond base and limit bitfield in
+ * prbar and prlar registers respectively.
+ */
+#define MPU_REGION_RES0 0x0
+
+/* Hypervisor Protection Region Base Address Register */
+typedef union {
+ struct {
+ unsigned int xn:1; /* Execute-Never */
+ unsigned int ap_0:1; /* Access Permission AP[0] */
+ unsigned long ro:1; /* Access Permission AP[1] */
+ unsigned int sh:2; /* Shareability */
+ unsigned int res0:1;
+ unsigned int base:26; /* Base Address */
+ } reg;
+ uint32_t bits;
+} prbar_t;
+
+/* Hypervisor Protection Region Limit Address Register */
+typedef union {
+ struct {
+ unsigned int en:1; /* Region enable */
+ unsigned int ai:3; /* Memory Attribute Index */
+ unsigned int res0:2;
+ unsigned int limit:26; /* Limit Address */
+ } reg;
+ uint32_t bits;
+} prlar_t;
+
/* MPU Protection Region */
typedef struct {
- uint32_t prbar;
- uint32_t prlar;
+ prbar_t prbar;
+ prlar_t prlar;
} pr_t;
#endif /* __ASSEMBLY__ */
diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
index 86fbe105af..2fb6b822c6 100644
--- a/xen/arch/arm/mpu/mm.c
+++ b/xen/arch/arm/mpu/mm.c
@@ -167,7 +167,9 @@ pr_t pr_of_addr(paddr_t base, paddr_t limit, unsigned int flags)
/* Build up value for PRBAR_EL2. */
prbar = (prbar_t) {
.reg = {
+#ifdef CONFIG_ARM64
.xn_0 = 0,
+#endif
.xn = PAGE_XN_MASK(flags),
.ap_0 = 0,
.ro = PAGE_RO_MASK(flags)
--
2.25.1
next prev parent reply other threads:[~2025-06-06 16:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-06 16:48 [PATCH v2 0/3] Enable R52 support for the first chunk of MPU support Ayan Kumar Halder
2025-06-06 16:48 ` Ayan Kumar Halder [this message]
2025-06-09 7:31 ` [PATCH v2 1/3] arm/mpu: Introduce MPU memory region map structure Orzel, Michal
2025-06-06 16:48 ` [PATCH v2 2/3] arm/mpu: Provide and populate MPU C data structures Ayan Kumar Halder
2025-06-09 7:41 ` Orzel, Michal
2025-06-09 8:27 ` Ayan Kumar Halder
2025-06-09 8:42 ` Julien Grall
2025-06-09 9:16 ` Ayan Kumar Halder
2025-06-09 10:43 ` Ayan Kumar Halder
2025-06-09 11:26 ` Julien Grall
2025-06-06 16:48 ` [PATCH v2 3/3] arm/mpu: Provide access to the MPU region from the C code Ayan Kumar Halder
2025-06-09 7:44 ` Orzel, Michal
2025-06-09 8:37 ` Luca Fancellu
2025-06-09 9:16 ` Luca Fancellu
2025-06-09 9:26 ` Ayan Kumar Halder
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=20250606164854.1551148-2-ayan.kumar.halder@amd.com \
--to=ayan.kumar.halder@amd.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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.