On Fri, Jun 24, 2022 at 02:32:51PM -0700, Ricardo Koller wrote: > Define macros for memory type indexes and construct DEFAULT_MAIR_EL1 > with macros from asm/sysreg.h. The index macros can then be used when > constructing PTEs (instead of using raw numbers). > > Reviewed-by: Oliver Upton <oupton@xxxxxxxxxx> > Signed-off-by: Ricardo Koller <ricarkol@xxxxxxxxxx> > --- > .../selftests/kvm/include/aarch64/processor.h | 25 ++++++++++++++----- > .../selftests/kvm/lib/aarch64/processor.c | 2 +- > 2 files changed, 20 insertions(+), 7 deletions(-) > > diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h > index 6649671fa7c1..74f10d006e15 100644 > --- a/tools/testing/selftests/kvm/include/aarch64/processor.h > +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h > @@ -38,12 +38,25 @@ > * NORMAL 4 1111:1111 > * NORMAL_WT 5 1011:1011 > */ > -#define DEFAULT_MAIR_EL1 ((0x00ul << (0 * 8)) | \ > - (0x04ul << (1 * 8)) | \ > - (0x0cul << (2 * 8)) | \ > - (0x44ul << (3 * 8)) | \ > - (0xfful << (4 * 8)) | \ > - (0xbbul << (5 * 8))) > + > +/* Linux doesn't use these memory types, so let's define them. */ > +#define MAIR_ATTR_DEVICE_GRE UL(0x0c) > +#define MAIR_ATTR_NORMAL_WT UL(0xbb) > + > +#define MT_DEVICE_nGnRnE 0 > +#define MT_DEVICE_nGnRE 1 > +#define MT_DEVICE_GRE 2 > +#define MT_NORMAL_NC 3 > +#define MT_NORMAL 4 > +#define MT_NORMAL_WT 5 > + > +#define DEFAULT_MAIR_EL1 \ > + (MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRnE) | \ > + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRE, MT_DEVICE_nGnRE) | \ > + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_GRE, MT_DEVICE_GRE) | \ > + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_NC, MT_NORMAL_NC) | \ > + MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL) | \ > + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_WT, MT_NORMAL_WT)) > > #define MPIDR_HWID_BITMASK (0xff00fffffful) > > diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/aarch64/processor.c > index 8dd511aa79c2..733a2b713580 100644 > --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c > +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c > @@ -133,7 +133,7 @@ void _virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr, > > void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) > { > - uint64_t attr_idx = 4; /* NORMAL (See DEFAULT_MAIR_EL1) */ > + uint64_t attr_idx = MT_NORMAL; > > _virt_pg_map(vm, vaddr, paddr, attr_idx, 0); > } > -- > 2.37.0.rc0.161.g10f37bed90-goog > Reviewed-by: Andrew Jones <andrew.jones@xxxxxxxxx>