Commit 77be1fabd024b37423d12f832b1fbdb95dbdf494
Committed by
Ingo Molnar
1 parent
59438c9fc4
Exists in
master
and in
7 other branches
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>
Showing 5 changed files with 11 additions and 8 deletions Side-by-side Diff
arch/x86/mm/dump_pagetables.c
... | ... | @@ -221,7 +221,7 @@ |
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,7 +253,7 @@ |
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,7 +288,7 @@ |
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); |
arch/x86/xen/mmu.c
... | ... | @@ -344,7 +344,7 @@ |
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,7 +355,7 @@ |
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 |
include/asm-x86/page.h
... | ... | @@ -21,6 +21,9 @@ |
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 | |
... | ... | @@ -146,7 +149,7 @@ |
146 | 149 | |
147 | 150 | static inline pteval_t native_pte_flags(pte_t pte) |
148 | 151 | { |
149 | - return native_pte_val(pte) & ~PTE_PFN_MASK; | |
152 | + return native_pte_val(pte) & PTE_FLAGS_MASK; | |
150 | 153 | } |
151 | 154 | |
152 | 155 | #define pgprot_val(x) ((x).pgprot) |
include/asm-x86/pgtable.h
... | ... | @@ -286,7 +286,7 @@ |
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 |
include/asm-x86/pgtable_32.h
... | ... | @@ -88,7 +88,7 @@ |
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 |