diff options
Diffstat (limited to 'arch/x86/mm/pgtable_32.c')
-rw-r--r-- | arch/x86/mm/pgtable_32.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index ef1f6cd3ea66..be61a1d845a4 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/errno.h> | 7 | #include <linux/errno.h> |
8 | #include <linux/mm.h> | 8 | #include <linux/mm.h> |
9 | #include <linux/nmi.h> | ||
9 | #include <linux/swap.h> | 10 | #include <linux/swap.h> |
10 | #include <linux/smp.h> | 11 | #include <linux/smp.h> |
11 | #include <linux/highmem.h> | 12 | #include <linux/highmem.h> |
@@ -39,6 +40,8 @@ void show_mem(void) | |||
39 | for_each_online_pgdat(pgdat) { | 40 | for_each_online_pgdat(pgdat) { |
40 | pgdat_resize_lock(pgdat, &flags); | 41 | pgdat_resize_lock(pgdat, &flags); |
41 | for (i = 0; i < pgdat->node_spanned_pages; ++i) { | 42 | for (i = 0; i < pgdat->node_spanned_pages; ++i) { |
43 | if (unlikely(i % MAX_ORDER_NR_PAGES == 0)) | ||
44 | touch_nmi_watchdog(); | ||
42 | page = pgdat_page_nr(pgdat, i); | 45 | page = pgdat_page_nr(pgdat, i); |
43 | total++; | 46 | total++; |
44 | if (PageHighMem(page)) | 47 | if (PageHighMem(page)) |
@@ -97,8 +100,7 @@ static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags) | |||
97 | } | 100 | } |
98 | pte = pte_offset_kernel(pmd, vaddr); | 101 | pte = pte_offset_kernel(pmd, vaddr); |
99 | if (pgprot_val(flags)) | 102 | if (pgprot_val(flags)) |
100 | /* <pfn,flags> stored as-is, to permit clearing entries */ | 103 | set_pte_present(&init_mm, vaddr, pte, pfn_pte(pfn, flags)); |
101 | set_pte(pte, pfn_pte(pfn, flags)); | ||
102 | else | 104 | else |
103 | pte_clear(&init_mm, vaddr, pte); | 105 | pte_clear(&init_mm, vaddr, pte); |
104 | 106 | ||