aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-04-30 11:40:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-30 11:40:35 -0400
commitf9b3bcfbc43ac80f2019a5093ad9a1e624e611b1 (patch)
tree9db502a626fca6213019bbff3e39ff37e11d853d /arch/x86
parent01c7cd0ef5d98fdd007d8a04c9f834bead6e5ee1 (diff)
parent13f72756da86f155898e2c2022f7b3a106c3742e (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.debug2
-rw-r--r--arch/x86/include/asm/fixmap.h3
-rw-r--r--arch/x86/include/asm/pgtable_types.h1
-rw-r--r--arch/x86/kernel/acpi/wakeup_32.S2
-rw-r--r--arch/x86/kernel/aperture_64.c2
-rw-r--r--arch/x86/kernel/vmlinux.lds.S4
-rw-r--r--arch/x86/mm/amdtopology.c3
-rw-r--r--arch/x86/mm/init_64.c2
-rw-r--r--arch/x86/mm/pageattr.c9
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
132config DEBUG_TLBFLUSH 132config 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 */
353extern pte_t *lookup_address(unsigned long address, unsigned int *level); 353extern pte_t *lookup_address(unsigned long address, unsigned int *level);
354extern int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase);
355extern phys_addr_t slow_virt_to_phys(void *__address); 354extern 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
1019static void __meminit 1020static void __meminit
1020kernel_physical_mapping_remove(unsigned long start, unsigned long end) 1021kernel_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
1029int __ref arch_remove_memory(u64 start, u64 size) 1029int __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
545int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase) 545static 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
634static int split_large_page(pte_t *kpte, unsigned long address) 635static 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;