diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 11:40:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 11:40:35 -0400 |
commit | f9b3bcfbc43ac80f2019a5093ad9a1e624e611b1 (patch) | |
tree | 9db502a626fca6213019bbff3e39ff37e11d853d /arch/x86 | |
parent | 01c7cd0ef5d98fdd007d8a04c9f834bead6e5ee1 (diff) | |
parent | 13f72756da86f155898e2c2022f7b3a106c3742e (diff) |
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 mm changes from Ingo Molnar:
"Misc smaller changes all over the map"
* 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/iommu/dmar: Remove warning for HPET scope type
x86/mm/gart: Drop unnecessary check
x86/mm/hotplug: Put kernel_physical_mapping_remove() declaration in CONFIG_MEMORY_HOTREMOVE
x86/mm/fixmap: Remove unused FIX_CYCLONE_TIMER
x86/mm/numa: Simplify some bit mangling
x86/mm: Re-enable DEBUG_TLBFLUSH for X86_32
x86/mm/cpa: Cleanup split_large_page() and its callee
x86: Drop always empty .text..page_aligned section
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig.debug | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/fixmap.h | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_types.h | 1 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/wakeup_32.S | 2 | ||||
-rw-r--r-- | arch/x86/kernel/aperture_64.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/vmlinux.lds.S | 4 | ||||
-rw-r--r-- | arch/x86/mm/amdtopology.c | 3 | ||||
-rw-r--r-- | arch/x86/mm/init_64.c | 2 | ||||
-rw-r--r-- | arch/x86/mm/pageattr.c | 9 |
9 files changed, 9 insertions, 19 deletions
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug index b322f124ee3c..16f738385dcb 100644 --- a/arch/x86/Kconfig.debug +++ b/arch/x86/Kconfig.debug | |||
@@ -131,7 +131,7 @@ config DOUBLEFAULT | |||
131 | 131 | ||
132 | config DEBUG_TLBFLUSH | 132 | config DEBUG_TLBFLUSH |
133 | bool "Set upper limit of TLB entries to flush one-by-one" | 133 | bool "Set upper limit of TLB entries to flush one-by-one" |
134 | depends on DEBUG_KERNEL && (X86_64 || X86_INVLPG) | 134 | depends on DEBUG_KERNEL |
135 | ---help--- | 135 | ---help--- |
136 | 136 | ||
137 | X86-only for now. | 137 | X86-only for now. |
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h index 51b9e322cb8f..0dc7d9e21c34 100644 --- a/arch/x86/include/asm/fixmap.h +++ b/arch/x86/include/asm/fixmap.h | |||
@@ -105,9 +105,6 @@ enum fixed_addresses { | |||
105 | FIX_LI_PCIB, /* Lithium PCI Bridge B */ | 105 | FIX_LI_PCIB, /* Lithium PCI Bridge B */ |
106 | #endif | 106 | #endif |
107 | FIX_RO_IDT, /* Virtual mapping for read-only IDT */ | 107 | FIX_RO_IDT, /* Virtual mapping for read-only IDT */ |
108 | #ifdef CONFIG_X86_CYCLONE_TIMER | ||
109 | FIX_CYCLONE_TIMER, /*cyclone timer register*/ | ||
110 | #endif | ||
111 | #ifdef CONFIG_X86_32 | 108 | #ifdef CONFIG_X86_32 |
112 | FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ | 109 | FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ |
113 | FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, | 110 | FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, |
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index 567b5d0632b2..e6423002c10b 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h | |||
@@ -351,7 +351,6 @@ static inline void update_page_count(int level, unsigned long pages) { } | |||
351 | * as a pte too. | 351 | * as a pte too. |
352 | */ | 352 | */ |
353 | extern pte_t *lookup_address(unsigned long address, unsigned int *level); | 353 | extern pte_t *lookup_address(unsigned long address, unsigned int *level); |
354 | extern int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase); | ||
355 | extern phys_addr_t slow_virt_to_phys(void *__address); | 354 | extern phys_addr_t slow_virt_to_phys(void *__address); |
356 | 355 | ||
357 | #endif /* !__ASSEMBLY__ */ | 356 | #endif /* !__ASSEMBLY__ */ |
diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S index 13ab720573e3..ced4638c8341 100644 --- a/arch/x86/kernel/acpi/wakeup_32.S +++ b/arch/x86/kernel/acpi/wakeup_32.S | |||
@@ -1,4 +1,4 @@ | |||
1 | .section .text..page_aligned | 1 | .text |
2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
3 | #include <asm/segment.h> | 3 | #include <asm/segment.h> |
4 | #include <asm/page_types.h> | 4 | #include <asm/page_types.h> |
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c index d5fd66f0d4cd..fd972a3e4cbb 100644 --- a/arch/x86/kernel/aperture_64.c +++ b/arch/x86/kernel/aperture_64.c | |||
@@ -87,7 +87,7 @@ static u32 __init allocate_aperture(void) | |||
87 | */ | 87 | */ |
88 | addr = memblock_find_in_range(GART_MIN_ADDR, GART_MAX_ADDR, | 88 | addr = memblock_find_in_range(GART_MIN_ADDR, GART_MAX_ADDR, |
89 | aper_size, aper_size); | 89 | aper_size, aper_size); |
90 | if (!addr || addr + aper_size > GART_MAX_ADDR) { | 90 | if (!addr) { |
91 | printk(KERN_ERR | 91 | printk(KERN_ERR |
92 | "Cannot allocate aperture memory hole (%lx,%uK)\n", | 92 | "Cannot allocate aperture memory hole (%lx,%uK)\n", |
93 | addr, aper_size>>10); | 93 | addr, aper_size>>10); |
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 22a1530146a8..10c4f3006afd 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S | |||
@@ -94,10 +94,6 @@ SECTIONS | |||
94 | _text = .; | 94 | _text = .; |
95 | /* bootstrapping code */ | 95 | /* bootstrapping code */ |
96 | HEAD_TEXT | 96 | HEAD_TEXT |
97 | #ifdef CONFIG_X86_32 | ||
98 | . = ALIGN(PAGE_SIZE); | ||
99 | *(.text..page_aligned) | ||
100 | #endif | ||
101 | . = ALIGN(8); | 97 | . = ALIGN(8); |
102 | _stext = .; | 98 | _stext = .; |
103 | TEXT_TEXT | 99 | TEXT_TEXT |
diff --git a/arch/x86/mm/amdtopology.c b/arch/x86/mm/amdtopology.c index 5247d01329ca..2ca15b59fb3f 100644 --- a/arch/x86/mm/amdtopology.c +++ b/arch/x86/mm/amdtopology.c | |||
@@ -130,9 +130,8 @@ int __init amd_numa_init(void) | |||
130 | } | 130 | } |
131 | 131 | ||
132 | limit >>= 16; | 132 | limit >>= 16; |
133 | limit <<= 24; | ||
134 | limit |= (1<<24)-1; | ||
135 | limit++; | 133 | limit++; |
134 | limit <<= 24; | ||
136 | 135 | ||
137 | if (limit > end) | 136 | if (limit > end) |
138 | limit = end; | 137 | limit = end; |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 71ff55a1b287..caad9a0ee19f 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -1016,6 +1016,7 @@ void __ref vmemmap_free(unsigned long start, unsigned long end) | |||
1016 | remove_pagetable(start, end, false); | 1016 | remove_pagetable(start, end, false); |
1017 | } | 1017 | } |
1018 | 1018 | ||
1019 | #ifdef CONFIG_MEMORY_HOTREMOVE | ||
1019 | static void __meminit | 1020 | static void __meminit |
1020 | kernel_physical_mapping_remove(unsigned long start, unsigned long end) | 1021 | kernel_physical_mapping_remove(unsigned long start, unsigned long end) |
1021 | { | 1022 | { |
@@ -1025,7 +1026,6 @@ kernel_physical_mapping_remove(unsigned long start, unsigned long end) | |||
1025 | remove_pagetable(start, end, true); | 1026 | remove_pagetable(start, end, true); |
1026 | } | 1027 | } |
1027 | 1028 | ||
1028 | #ifdef CONFIG_MEMORY_HOTREMOVE | ||
1029 | int __ref arch_remove_memory(u64 start, u64 size) | 1029 | int __ref arch_remove_memory(u64 start, u64 size) |
1030 | { | 1030 | { |
1031 | unsigned long start_pfn = start >> PAGE_SHIFT; | 1031 | unsigned long start_pfn = start >> PAGE_SHIFT; |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index fb4e73ec24d8..bb32480c2d71 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -542,13 +542,14 @@ out_unlock: | |||
542 | return do_split; | 542 | return do_split; |
543 | } | 543 | } |
544 | 544 | ||
545 | int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase) | 545 | static int |
546 | __split_large_page(pte_t *kpte, unsigned long address, struct page *base) | ||
546 | { | 547 | { |
548 | pte_t *pbase = (pte_t *)page_address(base); | ||
547 | unsigned long pfn, pfninc = 1; | 549 | unsigned long pfn, pfninc = 1; |
548 | unsigned int i, level; | 550 | unsigned int i, level; |
549 | pte_t *tmp; | 551 | pte_t *tmp; |
550 | pgprot_t ref_prot; | 552 | pgprot_t ref_prot; |
551 | struct page *base = virt_to_page(pbase); | ||
552 | 553 | ||
553 | spin_lock(&pgd_lock); | 554 | spin_lock(&pgd_lock); |
554 | /* | 555 | /* |
@@ -633,7 +634,6 @@ int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase) | |||
633 | 634 | ||
634 | static int split_large_page(pte_t *kpte, unsigned long address) | 635 | static int split_large_page(pte_t *kpte, unsigned long address) |
635 | { | 636 | { |
636 | pte_t *pbase; | ||
637 | struct page *base; | 637 | struct page *base; |
638 | 638 | ||
639 | if (!debug_pagealloc) | 639 | if (!debug_pagealloc) |
@@ -644,8 +644,7 @@ static int split_large_page(pte_t *kpte, unsigned long address) | |||
644 | if (!base) | 644 | if (!base) |
645 | return -ENOMEM; | 645 | return -ENOMEM; |
646 | 646 | ||
647 | pbase = (pte_t *)page_address(base); | 647 | if (__split_large_page(kpte, address, base)) |
648 | if (__split_large_page(kpte, address, pbase)) | ||
649 | __free_page(base); | 648 | __free_page(base); |
650 | 649 | ||
651 | return 0; | 650 | return 0; |