فهرست منبع

x86: unify pmd_none

Impact: cleanup

Unify and demacro pmd_none.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Jeremy Fitzhardinge 16 سال پیش
والد
کامیت
4fea801ac9
3فایلهای تغییر یافته به همراه7 افزوده شده و 3 حذف شده
  1. 7 0
      arch/x86/include/asm/pgtable.h
  2. 0 2
      arch/x86/include/asm/pgtable_32.h
  3. 0 1
      arch/x86/include/asm/pgtable_64.h

+ 7 - 0
arch/x86/include/asm/pgtable.h

@@ -450,6 +450,13 @@ static inline int pmd_present(pmd_t pmd)
 	return pmd_val(pmd) & _PAGE_PRESENT;
 	return pmd_val(pmd) & _PAGE_PRESENT;
 }
 }
 
 
+static inline int pmd_none(pmd_t pmd)
+{
+	/* Only check low word on 32-bit platforms, since it might be
+	   out of sync with upper half. */
+	return !(unsigned long)native_pmd_val(pmd);
+}
+
 #if PAGETABLE_LEVELS > 2
 #if PAGETABLE_LEVELS > 2
 static inline int pud_present(pud_t pud)
 static inline int pud_present(pud_t pud)
 {
 {

+ 0 - 2
arch/x86/include/asm/pgtable_32.h

@@ -85,8 +85,6 @@ extern void set_pmd_pfn(unsigned long, unsigned long, pgprot_t);
 /* The boot page tables (all created as a single array) */
 /* The boot page tables (all created as a single array) */
 extern unsigned long pg0[];
 extern unsigned long pg0[];
 
 
-/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */
-#define pmd_none(x)	(!(unsigned long)pmd_val((x)))
 #define pmd_bad(x) ((pmd_val(x) & (PTE_FLAGS_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
 #define pmd_bad(x) ((pmd_val(x) & (PTE_FLAGS_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
 
 
 #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
 #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))

+ 0 - 1
arch/x86/include/asm/pgtable_64.h

@@ -207,7 +207,6 @@ static inline int pud_large(pud_t pte)
 #define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
 #define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
 #define pmd_offset(dir, address) ((pmd_t *)pud_page_vaddr(*(dir)) + \
 #define pmd_offset(dir, address) ((pmd_t *)pud_page_vaddr(*(dir)) + \
 				  pmd_index(address))
 				  pmd_index(address))
-#define pmd_none(x)	(!pmd_val((x)))
 #define pfn_pmd(nr, prot) (__pmd(((nr) << PAGE_SHIFT) | pgprot_val((prot))))
 #define pfn_pmd(nr, prot) (__pmd(((nr) << PAGE_SHIFT) | pgprot_val((prot))))
 #define pmd_pfn(x)  ((pmd_val((x)) & __PHYSICAL_MASK) >> PAGE_SHIFT)
 #define pmd_pfn(x)  ((pmd_val((x)) & __PHYSICAL_MASK) >> PAGE_SHIFT)