|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/7] arm/mpu: Introduce MPU memory region map structure
Hi Michal,
> On 14 Apr 2025, at 11:17, Orzel, Michal <michal.orzel@xxxxxxx> wrote:
>
>
>
> On 11/04/2025 16:56, Luca Fancellu wrote:
>> From: Penny Zheng <Penny.Zheng@xxxxxxx>
>>
>> Introduce pr_t typedef which is a structure having the prbar
>> and prlar members, each being structured as the registers of
>> the aarch64 armv8-r architecture.
>>
>> Introduce the array 'xen_mpumap' that will store a view of
>> the content of the MPU regions.
>>
>> Introduce MAX_MPU_REGIONS macro that uses the value of
>> NUM_MPU_REGIONS_MASK just for clarity, because using the
>> latter as number of elements of the xen_mpumap array might
>> be misleading.
> What should be the size of this array? I thought NUM_MPU_REGIONS indicates how
> many regions there can be (i.e. 256) and this should be the size. Yet you use
> MASK for size which is odd.
So the maximum number of regions for aarch64 armv8-r are 255, MPUIR_EL2.REGION
is an
8 bit field advertising the number of region supported.
Is it better if I use just the below?
#define MAX_MPU_REGIONS 255
>
>>
>> Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx>
>> Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
>> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
>> ---
>> xen/arch/arm/include/asm/arm64/mpu.h | 44 ++++++++++++++++++++++++++++
>> xen/arch/arm/include/asm/mpu.h | 5 ++++
>> xen/arch/arm/mpu/mm.c | 4 +++
>> 3 files changed, 53 insertions(+)
>> create mode 100644 xen/arch/arm/include/asm/arm64/mpu.h
>>
>> diff --git a/xen/arch/arm/include/asm/arm64/mpu.h
>> b/xen/arch/arm/include/asm/arm64/mpu.h
>> new file mode 100644
>> index 000000000000..4d2bd7d7877f
>> --- /dev/null
>> +++ b/xen/arch/arm/include/asm/arm64/mpu.h
>> @@ -0,0 +1,44 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * mpu.h: Arm Memory Protection Unit definitions for aarch64.
> NIT: Do we really see the benefit in having such generic comments? What if you
> add a prototype of some function here. Will it fit into a definition scope?
I can remove the comment, but I would say that if I put some function prototype
here
it should be related to arm64, being this file under arm64.
>
>> + */
>> +
>> +#ifndef __ARM_ARM64_MPU_H__
>> +#define __ARM_ARM64_MPU_H__
>> +
>> +#ifndef __ASSEMBLY__
>> +
>> +/* Protection Region Base Address Register */
>> +typedef union {
>> + struct __packed {
>> + unsigned long xn:2; /* Execute-Never */
>> + unsigned long ap:2; /* Acess Permission */
> s/Acess/Access/
>
>> + unsigned long sh:2; /* Sharebility */
> s/Sharebility/Shareability/
>
>> + unsigned long base:46; /* Base Address */
>> + unsigned long pad:12;
> If you describe the register 1:1, why "pad" and not "res" or "res0"?
>
>> + } reg;
>> + uint64_t bits;
>> +} prbar_t;
>> +
>> +/* Protection Region Limit Address Register */
>> +typedef union {
>> + struct __packed {
>> + unsigned long en:1; /* Region enable */
>> + unsigned long ai:3; /* Memory Attribute Index */
>> + unsigned long ns:1; /* Not-Secure */
>> + unsigned long res:1; /* Reserved 0 by hardware */
> res0 /* RES0 */
>
>> + unsigned long limit:46; /* Limit Address */
>> + unsigned long pad:12;
> res1 /* RES0 */
>
>> + } reg;
>> + uint64_t bits;
>> +} prlar_t;
>> +
>> +/* MPU Protection Region */
>> +typedef struct {
>> + prbar_t prbar;
>> + prlar_t prlar;
>> +} pr_t;
>> +
>> +#endif /* __ASSEMBLY__ */
>> +
>> +#endif /* __ARM_ARM64_MPU_H__ */
>> \ No newline at end of file
> Please add a new line at the end
>
> Also, EMACS comment is missing.
Thanks I will fix all these findings
Cheers,
Luca
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |