x86: add PTE_FLAGS_MASK

PTE_PFN_MASK was getting lonely, so I made it a friend.

Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by Jeremy Fitzhardinge and committed by Ingo Molnar 77be1fab 59438c9f

+11 -8
+3 -3
arch/x86/mm/dump_pagetables.c
··· 221 221 for (i = 0; i < PTRS_PER_PMD; i++) { 222 222 st->current_address = normalize_addr(P + i * PMD_LEVEL_MULT); 223 223 if (!pmd_none(*start)) { 224 - pgprotval_t prot = pmd_val(*start) & ~PTE_PFN_MASK; 224 + pgprotval_t prot = pmd_val(*start) & PTE_FLAGS_MASK; 225 225 226 226 if (pmd_large(*start) || !pmd_present(*start)) 227 227 note_page(m, st, __pgprot(prot), 3); ··· 253 253 for (i = 0; i < PTRS_PER_PUD; i++) { 254 254 st->current_address = normalize_addr(P + i * PUD_LEVEL_MULT); 255 255 if (!pud_none(*start)) { 256 - pgprotval_t prot = pud_val(*start) & ~PTE_PFN_MASK; 256 + pgprotval_t prot = pud_val(*start) & PTE_FLAGS_MASK; 257 257 258 258 if (pud_large(*start) || !pud_present(*start)) 259 259 note_page(m, st, __pgprot(prot), 2); ··· 288 288 for (i = 0; i < PTRS_PER_PGD; i++) { 289 289 st.current_address = normalize_addr(i * PGD_LEVEL_MULT); 290 290 if (!pgd_none(*start)) { 291 - pgprotval_t prot = pgd_val(*start) & ~PTE_PFN_MASK; 291 + pgprotval_t prot = pgd_val(*start) & PTE_FLAGS_MASK; 292 292 293 293 if (pgd_large(*start) || !pgd_present(*start)) 294 294 note_page(m, &st, __pgprot(prot), 1);
+2 -2
arch/x86/xen/mmu.c
··· 344 344 { 345 345 if (val & _PAGE_PRESENT) { 346 346 unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT; 347 - pteval_t flags = val & ~PTE_PFN_MASK; 347 + pteval_t flags = val & PTE_FLAGS_MASK; 348 348 val = ((pteval_t)mfn_to_pfn(mfn) << PAGE_SHIFT) | flags; 349 349 } 350 350 ··· 355 355 { 356 356 if (val & _PAGE_PRESENT) { 357 357 unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT; 358 - pteval_t flags = val & ~PTE_PFN_MASK; 358 + pteval_t flags = val & PTE_FLAGS_MASK; 359 359 val = ((pteval_t)pfn_to_mfn(pfn) << PAGE_SHIFT) | flags; 360 360 } 361 361
+4 -1
include/asm-x86/page.h
··· 21 21 /* PTE_PFN_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */ 22 22 #define PTE_PFN_MASK ((pteval_t)PHYSICAL_PAGE_MASK) 23 23 24 + /* PTE_FLAGS_MASK extracts the flags from a (pte|pmd|pud|pgd)val_t */ 25 + #define PTE_FLAGS_MASK (~PTE_PFN_MASK) 26 + 24 27 #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) 25 28 #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) 26 29 ··· 149 146 150 147 static inline pteval_t native_pte_flags(pte_t pte) 151 148 { 152 - return native_pte_val(pte) & ~PTE_PFN_MASK; 149 + return native_pte_val(pte) & PTE_FLAGS_MASK; 153 150 } 154 151 155 152 #define pgprot_val(x) ((x).pgprot)
+1 -1
include/asm-x86/pgtable.h
··· 286 286 return __pgprot(preservebits | addbits); 287 287 } 288 288 289 - #define pte_pgprot(x) __pgprot(pte_flags(x) & ~PTE_PFN_MASK) 289 + #define pte_pgprot(x) __pgprot(pte_flags(x) & PTE_FLAGS_MASK) 290 290 291 291 #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) 292 292
+1 -1
include/asm-x86/pgtable_32.h
··· 88 88 /* To avoid harmful races, pmd_none(x) should check only the lower when PAE */ 89 89 #define pmd_none(x) (!(unsigned long)pmd_val((x))) 90 90 #define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT) 91 - #define pmd_bad(x) ((pmd_val(x) & (~PTE_PFN_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) 91 + #define pmd_bad(x) ((pmd_val(x) & (PTE_FLAGS_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) 92 92 93 93 #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) 94 94