Commit 77be1fabd024b37423d12f832b1fbdb95dbdf494

Authored by Jeremy Fitzhardinge
Committed by Ingo Molnar
1 parent 59438c9fc4

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);
... ... @@ -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