Hi Sergej, On 09/08/17 09:20, Sergej Proskurin wrote:
+ /* + * According to to ARM DDI 0487B.a J1-5927, we return an error if the found
Please drop one of the 'to'. The rest looks good to me.
+ * PTE is invalid or holds a reserved entry (PTE<1:0> == x0)) or if the PTE + * maps a memory block at level 3 (PTE<1:0> == 01). + */ + if ( !lpae_is_page(pte, level) && !lpae_is_superpage(pte, level) ) + return -EFAULT; + + /* Make sure that the lower bits of the PTE's base address are zero. */ + mask = GENMASK_ULL(47, grainsizes[gran]); + *ipa = (pfn_to_paddr(pte.walk.base) & mask) | (gva & masks[gran][level]); + + /* + * Set permissions so that the caller can check the flags by herself. Note + * that stage 1 translations also inherit attributes from the tables + * (ARM DDI 0487B.a J1-5928). + */ + if ( !pte.pt.ro && !ro_table ) + *perms |= GV2M_WRITE; + if ( !pte.pt.xn && !xn_table ) + *perms |= GV2M_EXEC; + + return 0; }
Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel