Message ID | 20170912100330.2168-22-julien.grall@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | xen/arm: Memory subsystem clean-up | expand |
On Tue, 12 Sep 2017, Julien Grall wrote: > Currently, the flags used to update page tables (i.e PAGE_HYPERVISOR_*) > only contains the memory attribute index. Follow-up patches will add > more information in it. So document the current layout. > > At the same time introduce PAGE_AI_MASK to get the memory attribute > index easily. > > Signed-off-by: Julien Grall <julien.grall@arm.com> > Reviewed-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Andre, I have slightly update the commit message to show that we > just describe the current layout. Hope you are fine with keeping > your reviewed-by. > > Changes in v2: > - Slightly update the commit message to specify we describe the > current layout. > - Add Andre's reviewed-by > --- > xen/arch/arm/mm.c | 2 +- > xen/include/asm-arm/page.h | 7 +++++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c > index 3379d29f8a..8a56f37821 100644 > --- a/xen/arch/arm/mm.c > +++ b/xen/arch/arm/mm.c > @@ -1021,7 +1021,7 @@ static int create_xen_entries(enum xenmap_operation op, > } > if ( op == RESERVE ) > break; > - pte = mfn_to_xen_entry(mfn, flags); > + pte = mfn_to_xen_entry(mfn, PAGE_AI_MASK(flags)); > pte.pt.table = 1; > write_pte(entry, pte); > break; > diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h > index 088746828d..4022b7dc33 100644 > --- a/xen/include/asm-arm/page.h > +++ b/xen/include/asm-arm/page.h > @@ -62,6 +62,13 @@ > #define MAIR0VAL (MAIRVAL & 0xffffffff) > #define MAIR1VAL (MAIRVAL >> 32) > > +/* > + * Layout of the flags used for updating the hypervisor page tables > + * > + * [0:2] Memory Attribute Index > + */ > +#define PAGE_AI_MASK(x) ((x) & 0x7U) > + > #define PAGE_HYPERVISOR (MT_NORMAL) > #define PAGE_HYPERVISOR_NOCACHE (MT_DEVICE_nGnRE) > #define PAGE_HYPERVISOR_WC (MT_NORMAL_NC) > -- > 2.11.0 >
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 3379d29f8a..8a56f37821 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -1021,7 +1021,7 @@ static int create_xen_entries(enum xenmap_operation op, } if ( op == RESERVE ) break; - pte = mfn_to_xen_entry(mfn, flags); + pte = mfn_to_xen_entry(mfn, PAGE_AI_MASK(flags)); pte.pt.table = 1; write_pte(entry, pte); break; diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h index 088746828d..4022b7dc33 100644 --- a/xen/include/asm-arm/page.h +++ b/xen/include/asm-arm/page.h @@ -62,6 +62,13 @@ #define MAIR0VAL (MAIRVAL & 0xffffffff) #define MAIR1VAL (MAIRVAL >> 32) +/* + * Layout of the flags used for updating the hypervisor page tables + * + * [0:2] Memory Attribute Index + */ +#define PAGE_AI_MASK(x) ((x) & 0x7U) + #define PAGE_HYPERVISOR (MT_NORMAL) #define PAGE_HYPERVISOR_NOCACHE (MT_DEVICE_nGnRE) #define PAGE_HYPERVISOR_WC (MT_NORMAL_NC)