On 26/04/13 18:01, Catalin Marinas wrote: > On Mon, Apr 08, 2013 at 05:17:04PM +0100, Marc Zyngier wrote: >> diff --git a/arch/arm64/include/asm/pgtable-hwdef.h b/arch/arm64/include/asm/pgtable-hwdef.h >> index 75fd13d..acb4ee5 100644 >> --- a/arch/arm64/include/asm/pgtable-hwdef.h >> +++ b/arch/arm64/include/asm/pgtable-hwdef.h >> @@ -68,6 +69,18 @@ >> #define PTE_ATTRINDX_MASK (_AT(pteval_t, 7) << 2) >> >> /* >> + * 2nd stage PTE definitions >> + */ >> +#define PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */ >> +#define PTE_S2_RDWR (_AT(pteval_t, 2) << 6) /* HAP[2:1] */ > > RDWR should be 3 here (already the case in arch/arm). BTW, I would use Yes, Will spotted this one already, and it is now fixed in my tree. > HAP[2:1] comment in both cases since that's the attribute field. Indeed. >> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h >> index e333a24..7c84ab4 100644 >> --- a/arch/arm64/include/asm/pgtable.h >> +++ b/arch/arm64/include/asm/pgtable.h >> @@ -76,6 +76,12 @@ extern pgprot_t pgprot_default; >> #define PAGE_KERNEL _MOD_PROT(pgprot_default, PTE_PXN | PTE_UXN | PTE_DIRTY) >> #define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_default, PTE_UXN | PTE_DIRTY) >> >> +#define PAGE_HYP _MOD_PROT(pgprot_default, PTE_HYP) >> +#define PAGE_HYP_DEVICE _MOD_PROT(__pgprot(PROT_DEVICE_nGnRE), PTE_HYP) >> + >> +#define PAGE_S2 _MOD_PROT(pgprot_default, PTE_USER | PTE_S2_RDONLY) > > Why is this one read-only by default? Because the guest pages start their life mapped RO. Only on the first write access they become writeable. >> +#define PAGE_S2_DEVICE _MOD_PROT(__pgprot(PROT_DEVICE_nGnRE), PTE_USER | PTE_S2_RDWR) > > You could write it directly as __pgprot(PROT_DEVICE_nGnRE | PTE_USER | PTE_S2_RDWR) Good point! This code as changed a bit anyway, as it contains some other odd things... ;-) Thanks for reviewing, M. -- Jazz is not dead. It just smells funny... -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html