diff options
| author | H. Peter Anvin <hpa@linux.intel.com> | 2010-10-20 17:22:45 -0400 |
|---|---|---|
| committer | H. Peter Anvin <hpa@linux.intel.com> | 2010-10-20 17:22:45 -0400 |
| commit | d25e6b0b326278a1096e8334584c3e64517057a3 (patch) | |
| tree | 3c914b877adf9615c7158b58705478e56c9b4247 | |
| parent | e44dea35ccb78ab7dc3a75ccec71d7d6f35017c4 (diff) | |
| parent | 40ffa93791985ab300fd488072e9f37ccf72e88c (diff) | |
Merge branch 'x86/cleanups' into x86/trampoline
| -rw-r--r-- | arch/x86/include/asm/apb_timer.h | 1 | ||||
| -rw-r--r-- | arch/x86/include/asm/cpu.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/Makefile | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apb_timer.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 12 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/amd.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/common.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/intel.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/early-quirks.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/machine_kexec_64.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/pmtimer_64.c | 69 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/setup.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/setup_percpu.c | 2 | ||||
| -rw-r--r-- | arch/x86/kvm/lapic.c | 3 | ||||
| -rw-r--r-- | arch/x86/mm/init_32.c | 4 | ||||
| -rw-r--r-- | arch/x86/mm/init_64.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/k8topology_64.c | 6 | ||||
| -rw-r--r-- | include/linux/acpi_pmtmr.h | 2 |
19 files changed, 21 insertions, 99 deletions
diff --git a/arch/x86/include/asm/apb_timer.h b/arch/x86/include/asm/apb_timer.h index a69b1ac9eaf8..2fefa501d3ba 100644 --- a/arch/x86/include/asm/apb_timer.h +++ b/arch/x86/include/asm/apb_timer.h | |||
| @@ -54,7 +54,6 @@ extern struct clock_event_device *global_clock_event; | |||
| 54 | extern unsigned long apbt_quick_calibrate(void); | 54 | extern unsigned long apbt_quick_calibrate(void); |
| 55 | extern int arch_setup_apbt_irqs(int irq, int trigger, int mask, int cpu); | 55 | extern int arch_setup_apbt_irqs(int irq, int trigger, int mask, int cpu); |
| 56 | extern void apbt_setup_secondary_clock(void); | 56 | extern void apbt_setup_secondary_clock(void); |
| 57 | extern unsigned int boot_cpu_id; | ||
| 58 | 57 | ||
| 59 | extern struct sfi_timer_table_entry *sfi_get_mtmr(int hint); | 58 | extern struct sfi_timer_table_entry *sfi_get_mtmr(int hint); |
| 60 | extern void sfi_free_mtmr(struct sfi_timer_table_entry *mtmr); | 59 | extern void sfi_free_mtmr(struct sfi_timer_table_entry *mtmr); |
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h index b185091bf19c..4fab24de26b1 100644 --- a/arch/x86/include/asm/cpu.h +++ b/arch/x86/include/asm/cpu.h | |||
| @@ -32,6 +32,5 @@ extern void arch_unregister_cpu(int); | |||
| 32 | 32 | ||
| 33 | DECLARE_PER_CPU(int, cpu_state); | 33 | DECLARE_PER_CPU(int, cpu_state); |
| 34 | 34 | ||
| 35 | extern unsigned int boot_cpu_id; | ||
| 36 | 35 | ||
| 37 | #endif /* _ASM_X86_CPU_H */ | 36 | #endif /* _ASM_X86_CPU_H */ |
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index d9ce7a926e70..96abc8fa56b1 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
| @@ -121,7 +121,6 @@ obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o | |||
| 121 | # 64 bit specific files | 121 | # 64 bit specific files |
| 122 | ifeq ($(CONFIG_X86_64),y) | 122 | ifeq ($(CONFIG_X86_64),y) |
| 123 | obj-$(CONFIG_X86_UV) += tlb_uv.o bios_uv.o uv_irq.o uv_sysfs.o uv_time.o | 123 | obj-$(CONFIG_X86_UV) += tlb_uv.o bios_uv.o uv_irq.o uv_sysfs.o uv_time.o |
| 124 | obj-$(CONFIG_X86_PM_TIMER) += pmtimer_64.o | ||
| 125 | obj-$(CONFIG_AUDIT) += audit_64.o | 124 | obj-$(CONFIG_AUDIT) += audit_64.o |
| 126 | 125 | ||
| 127 | obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o | 126 | obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o |
diff --git a/arch/x86/kernel/apb_timer.c b/arch/x86/kernel/apb_timer.c index 8dd77800ff5d..08f75fb4f509 100644 --- a/arch/x86/kernel/apb_timer.c +++ b/arch/x86/kernel/apb_timer.c | |||
| @@ -343,7 +343,7 @@ void apbt_setup_secondary_clock(void) | |||
| 343 | 343 | ||
| 344 | /* Don't register boot CPU clockevent */ | 344 | /* Don't register boot CPU clockevent */ |
| 345 | cpu = smp_processor_id(); | 345 | cpu = smp_processor_id(); |
| 346 | if (cpu == boot_cpu_id) | 346 | if (!cpu) |
| 347 | return; | 347 | return; |
| 348 | /* | 348 | /* |
| 349 | * We need to calculate the scaled math multiplication factor for | 349 | * We need to calculate the scaled math multiplication factor for |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 5c5b8f3dddb5..f1e78940d908 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
| @@ -162,7 +162,7 @@ int __init arch_early_irq_init(void) | |||
| 162 | 162 | ||
| 163 | cfg = irq_cfgx; | 163 | cfg = irq_cfgx; |
| 164 | count = ARRAY_SIZE(irq_cfgx); | 164 | count = ARRAY_SIZE(irq_cfgx); |
| 165 | node= cpu_to_node(boot_cpu_id); | 165 | node = cpu_to_node(0); |
| 166 | 166 | ||
| 167 | for (i = 0; i < count; i++) { | 167 | for (i = 0; i < count; i++) { |
| 168 | desc = irq_to_desc(i); | 168 | desc = irq_to_desc(i); |
| @@ -1488,7 +1488,7 @@ static void __init setup_IO_APIC_irqs(void) | |||
| 1488 | int notcon = 0; | 1488 | int notcon = 0; |
| 1489 | struct irq_desc *desc; | 1489 | struct irq_desc *desc; |
| 1490 | struct irq_cfg *cfg; | 1490 | struct irq_cfg *cfg; |
| 1491 | int node = cpu_to_node(boot_cpu_id); | 1491 | int node = cpu_to_node(0); |
| 1492 | 1492 | ||
| 1493 | apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n"); | 1493 | apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n"); |
| 1494 | 1494 | ||
| @@ -1553,7 +1553,7 @@ static void __init setup_IO_APIC_irqs(void) | |||
| 1553 | void setup_IO_APIC_irq_extra(u32 gsi) | 1553 | void setup_IO_APIC_irq_extra(u32 gsi) |
| 1554 | { | 1554 | { |
| 1555 | int apic_id = 0, pin, idx, irq; | 1555 | int apic_id = 0, pin, idx, irq; |
| 1556 | int node = cpu_to_node(boot_cpu_id); | 1556 | int node = cpu_to_node(0); |
| 1557 | struct irq_desc *desc; | 1557 | struct irq_desc *desc; |
| 1558 | struct irq_cfg *cfg; | 1558 | struct irq_cfg *cfg; |
| 1559 | 1559 | ||
| @@ -2932,7 +2932,7 @@ static inline void __init check_timer(void) | |||
| 2932 | { | 2932 | { |
| 2933 | struct irq_desc *desc = irq_to_desc(0); | 2933 | struct irq_desc *desc = irq_to_desc(0); |
| 2934 | struct irq_cfg *cfg = desc->chip_data; | 2934 | struct irq_cfg *cfg = desc->chip_data; |
| 2935 | int node = cpu_to_node(boot_cpu_id); | 2935 | int node = cpu_to_node(0); |
| 2936 | int apic1, pin1, apic2, pin2; | 2936 | int apic1, pin1, apic2, pin2; |
| 2937 | unsigned long flags; | 2937 | unsigned long flags; |
| 2938 | int no_pin1 = 0; | 2938 | int no_pin1 = 0; |
| @@ -3286,7 +3286,7 @@ unsigned int create_irq_nr(unsigned int irq_want, int node) | |||
| 3286 | 3286 | ||
| 3287 | int create_irq(void) | 3287 | int create_irq(void) |
| 3288 | { | 3288 | { |
| 3289 | int node = cpu_to_node(boot_cpu_id); | 3289 | int node = cpu_to_node(0); |
| 3290 | unsigned int irq_want; | 3290 | unsigned int irq_want; |
| 3291 | int irq; | 3291 | int irq; |
| 3292 | 3292 | ||
| @@ -3908,7 +3908,7 @@ static int __io_apic_set_pci_routing(struct device *dev, int irq, | |||
| 3908 | if (dev) | 3908 | if (dev) |
| 3909 | node = dev_to_node(dev); | 3909 | node = dev_to_node(dev); |
| 3910 | else | 3910 | else |
| 3911 | node = cpu_to_node(boot_cpu_id); | 3911 | node = cpu_to_node(0); |
| 3912 | 3912 | ||
| 3913 | desc = irq_to_desc_alloc_node(irq, node); | 3913 | desc = irq_to_desc_alloc_node(irq, node); |
| 3914 | if (!desc) { | 3914 | if (!desc) { |
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index ba5f62f45f01..a8b4d91b8394 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
| @@ -148,7 +148,7 @@ static void __cpuinit amd_k7_smp_check(struct cpuinfo_x86 *c) | |||
| 148 | { | 148 | { |
| 149 | #ifdef CONFIG_SMP | 149 | #ifdef CONFIG_SMP |
| 150 | /* calling is from identify_secondary_cpu() ? */ | 150 | /* calling is from identify_secondary_cpu() ? */ |
| 151 | if (c->cpu_index == boot_cpu_id) | 151 | if (!c->cpu_index) |
| 152 | return; | 152 | return; |
| 153 | 153 | ||
| 154 | /* | 154 | /* |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index f2f9ac7da25c..15c671385f59 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
| @@ -665,7 +665,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) | |||
| 665 | this_cpu->c_early_init(c); | 665 | this_cpu->c_early_init(c); |
| 666 | 666 | ||
| 667 | #ifdef CONFIG_SMP | 667 | #ifdef CONFIG_SMP |
| 668 | c->cpu_index = boot_cpu_id; | 668 | c->cpu_index = 0; |
| 669 | #endif | 669 | #endif |
| 670 | filter_cpuid_features(c, false); | 670 | filter_cpuid_features(c, false); |
| 671 | } | 671 | } |
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index b4389441efbb..695f17731e23 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
| @@ -170,7 +170,7 @@ static void __cpuinit intel_smp_check(struct cpuinfo_x86 *c) | |||
| 170 | { | 170 | { |
| 171 | #ifdef CONFIG_SMP | 171 | #ifdef CONFIG_SMP |
| 172 | /* calling is from identify_secondary_cpu() ? */ | 172 | /* calling is from identify_secondary_cpu() ? */ |
| 173 | if (c->cpu_index == boot_cpu_id) | 173 | if (!c->cpu_index) |
| 174 | return; | 174 | return; |
| 175 | 175 | ||
| 176 | /* | 176 | /* |
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c index ebdb85cf2686..76b8cd953dee 100644 --- a/arch/x86/kernel/early-quirks.c +++ b/arch/x86/kernel/early-quirks.c | |||
| @@ -97,7 +97,6 @@ static void __init nvidia_bugs(int num, int slot, int func) | |||
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) | 99 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) |
| 100 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) | ||
| 101 | static u32 __init ati_ixp4x0_rev(int num, int slot, int func) | 100 | static u32 __init ati_ixp4x0_rev(int num, int slot, int func) |
| 102 | { | 101 | { |
| 103 | u32 d; | 102 | u32 d; |
| @@ -115,7 +114,6 @@ static u32 __init ati_ixp4x0_rev(int num, int slot, int func) | |||
| 115 | d &= 0xff; | 114 | d &= 0xff; |
| 116 | return d; | 115 | return d; |
| 117 | } | 116 | } |
| 118 | #endif | ||
| 119 | 117 | ||
| 120 | static void __init ati_bugs(int num, int slot, int func) | 118 | static void __init ati_bugs(int num, int slot, int func) |
| 121 | { | 119 | { |
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index 035c8c529181..b3ea9db39db6 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c | |||
| @@ -36,7 +36,7 @@ static int init_one_level2_page(struct kimage *image, pgd_t *pgd, | |||
| 36 | if (!page) | 36 | if (!page) |
| 37 | goto out; | 37 | goto out; |
| 38 | pud = (pud_t *)page_address(page); | 38 | pud = (pud_t *)page_address(page); |
| 39 | memset(pud, 0, PAGE_SIZE); | 39 | clear_page(pud); |
| 40 | set_pgd(pgd, __pgd(__pa(pud) | _KERNPG_TABLE)); | 40 | set_pgd(pgd, __pgd(__pa(pud) | _KERNPG_TABLE)); |
| 41 | } | 41 | } |
| 42 | pud = pud_offset(pgd, addr); | 42 | pud = pud_offset(pgd, addr); |
| @@ -45,7 +45,7 @@ static int init_one_level2_page(struct kimage *image, pgd_t *pgd, | |||
| 45 | if (!page) | 45 | if (!page) |
| 46 | goto out; | 46 | goto out; |
| 47 | pmd = (pmd_t *)page_address(page); | 47 | pmd = (pmd_t *)page_address(page); |
| 48 | memset(pmd, 0, PAGE_SIZE); | 48 | clear_page(pmd); |
| 49 | set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); | 49 | set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); |
| 50 | } | 50 | } |
| 51 | pmd = pmd_offset(pud, addr); | 51 | pmd = pmd_offset(pud, addr); |
diff --git a/arch/x86/kernel/pmtimer_64.c b/arch/x86/kernel/pmtimer_64.c deleted file mode 100644 index b112406f1996..000000000000 --- a/arch/x86/kernel/pmtimer_64.c +++ /dev/null | |||
| @@ -1,69 +0,0 @@ | |||
| 1 | /* Ported over from i386 by AK, original copyright was: | ||
| 2 | * | ||
| 3 | * (C) Dominik Brodowski <linux@brodo.de> 2003 | ||
| 4 | * | ||
| 5 | * Driver to use the Power Management Timer (PMTMR) available in some | ||
| 6 | * southbridges as primary timing source for the Linux kernel. | ||
| 7 | * | ||
| 8 | * Based on parts of linux/drivers/acpi/hardware/hwtimer.c, timer_pit.c, | ||
| 9 | * timer_hpet.c, and on Arjan van de Ven's implementation for 2.4. | ||
| 10 | * | ||
| 11 | * This file is licensed under the GPL v2. | ||
| 12 | * | ||
| 13 | * Dropped all the hardware bug workarounds for now. Hopefully they | ||
| 14 | * are not needed on 64bit chipsets. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include <linux/jiffies.h> | ||
| 18 | #include <linux/kernel.h> | ||
| 19 | #include <linux/time.h> | ||
| 20 | #include <linux/init.h> | ||
| 21 | #include <linux/cpumask.h> | ||
| 22 | #include <linux/acpi_pmtmr.h> | ||
| 23 | |||
| 24 | #include <asm/io.h> | ||
| 25 | #include <asm/proto.h> | ||
| 26 | #include <asm/msr.h> | ||
| 27 | #include <asm/vsyscall.h> | ||
| 28 | |||
| 29 | static inline u32 cyc2us(u32 cycles) | ||
| 30 | { | ||
| 31 | /* The Power Management Timer ticks at 3.579545 ticks per microsecond. | ||
| 32 | * 1 / PM_TIMER_FREQUENCY == 0.27936511 =~ 286/1024 [error: 0.024%] | ||
| 33 | * | ||
| 34 | * Even with HZ = 100, delta is at maximum 35796 ticks, so it can | ||
| 35 | * easily be multiplied with 286 (=0x11E) without having to fear | ||
| 36 | * u32 overflows. | ||
| 37 | */ | ||
| 38 | cycles *= 286; | ||
| 39 | return (cycles >> 10); | ||
| 40 | } | ||
| 41 | |||
| 42 | static unsigned pmtimer_wait_tick(void) | ||
| 43 | { | ||
| 44 | u32 a, b; | ||
| 45 | for (a = b = inl(pmtmr_ioport) & ACPI_PM_MASK; | ||
| 46 | a == b; | ||
| 47 | b = inl(pmtmr_ioport) & ACPI_PM_MASK) | ||
| 48 | cpu_relax(); | ||
| 49 | return b; | ||
| 50 | } | ||
| 51 | |||
| 52 | /* note: wait time is rounded up to one tick */ | ||
| 53 | void pmtimer_wait(unsigned us) | ||
| 54 | { | ||
| 55 | u32 a, b; | ||
| 56 | a = pmtimer_wait_tick(); | ||
| 57 | do { | ||
| 58 | b = inl(pmtmr_ioport); | ||
| 59 | cpu_relax(); | ||
| 60 | } while (cyc2us(b - a) < us); | ||
| 61 | } | ||
| 62 | |||
| 63 | static int __init nopmtimer_setup(char *s) | ||
| 64 | { | ||
| 65 | pmtmr_ioport = 0; | ||
| 66 | return 1; | ||
| 67 | } | ||
| 68 | |||
| 69 | __setup("nopmtimer", nopmtimer_setup); | ||
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index e3af342fe83a..7a4cf14223ba 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
| @@ -84,7 +84,7 @@ static int __init reboot_setup(char *str) | |||
| 84 | } | 84 | } |
| 85 | /* we will leave sorting out the final value | 85 | /* we will leave sorting out the final value |
| 86 | when we are ready to reboot, since we might not | 86 | when we are ready to reboot, since we might not |
| 87 | have set up boot_cpu_id or smp_num_cpu */ | 87 | have detected BSP APIC ID or smp_num_cpu */ |
| 88 | break; | 88 | break; |
| 89 | #endif /* CONFIG_SMP */ | 89 | #endif /* CONFIG_SMP */ |
| 90 | 90 | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index feb4c21e499a..322b24fbeafd 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
| @@ -124,7 +124,6 @@ unsigned long max_pfn_mapped; | |||
| 124 | RESERVE_BRK(dmi_alloc, 65536); | 124 | RESERVE_BRK(dmi_alloc, 65536); |
| 125 | #endif | 125 | #endif |
| 126 | 126 | ||
| 127 | unsigned int boot_cpu_id __read_mostly; | ||
| 128 | 127 | ||
| 129 | static __initdata unsigned long _brk_start = (unsigned long)__brk_base; | 128 | static __initdata unsigned long _brk_start = (unsigned long)__brk_base; |
| 130 | unsigned long _brk_end = (unsigned long)__brk_base; | 129 | unsigned long _brk_end = (unsigned long)__brk_base; |
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index a60df9ae6454..2335c15c93a4 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
| @@ -253,7 +253,7 @@ void __init setup_per_cpu_areas(void) | |||
| 253 | * Up to this point, the boot CPU has been using .init.data | 253 | * Up to this point, the boot CPU has been using .init.data |
| 254 | * area. Reload any changed state for the boot CPU. | 254 | * area. Reload any changed state for the boot CPU. |
| 255 | */ | 255 | */ |
| 256 | if (cpu == boot_cpu_id) | 256 | if (!cpu) |
| 257 | switch_to_new_gdt(cpu); | 257 | switch_to_new_gdt(cpu); |
| 258 | } | 258 | } |
| 259 | 259 | ||
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 77d8c0f4817d..22b06f7660f4 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
| @@ -1056,14 +1056,13 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu) | |||
| 1056 | 1056 | ||
| 1057 | vcpu->arch.apic = apic; | 1057 | vcpu->arch.apic = apic; |
| 1058 | 1058 | ||
| 1059 | apic->regs_page = alloc_page(GFP_KERNEL); | 1059 | apic->regs_page = alloc_page(GFP_KERNEL|__GFP_ZERO); |
| 1060 | if (apic->regs_page == NULL) { | 1060 | if (apic->regs_page == NULL) { |
| 1061 | printk(KERN_ERR "malloc apic regs error for vcpu %x\n", | 1061 | printk(KERN_ERR "malloc apic regs error for vcpu %x\n", |
| 1062 | vcpu->vcpu_id); | 1062 | vcpu->vcpu_id); |
| 1063 | goto nomem_free_apic; | 1063 | goto nomem_free_apic; |
| 1064 | } | 1064 | } |
| 1065 | apic->regs = page_address(apic->regs_page); | 1065 | apic->regs = page_address(apic->regs_page); |
| 1066 | memset(apic->regs, 0, PAGE_SIZE); | ||
| 1067 | apic->vcpu = vcpu; | 1066 | apic->vcpu = vcpu; |
| 1068 | 1067 | ||
| 1069 | hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, | 1068 | hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC, |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index bca79091b9d6..558f2d332076 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
| @@ -67,7 +67,7 @@ static __init void *alloc_low_page(void) | |||
| 67 | panic("alloc_low_page: ran out of memory"); | 67 | panic("alloc_low_page: ran out of memory"); |
| 68 | 68 | ||
| 69 | adr = __va(pfn * PAGE_SIZE); | 69 | adr = __va(pfn * PAGE_SIZE); |
| 70 | memset(adr, 0, PAGE_SIZE); | 70 | clear_page(adr); |
| 71 | return adr; | 71 | return adr; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| @@ -558,7 +558,7 @@ char swsusp_pg_dir[PAGE_SIZE] | |||
| 558 | 558 | ||
| 559 | static inline void save_pg_dir(void) | 559 | static inline void save_pg_dir(void) |
| 560 | { | 560 | { |
| 561 | memcpy(swsusp_pg_dir, swapper_pg_dir, PAGE_SIZE); | 561 | copy_page(swsusp_pg_dir, swapper_pg_dir); |
| 562 | } | 562 | } |
| 563 | #else /* !CONFIG_ACPI_SLEEP */ | 563 | #else /* !CONFIG_ACPI_SLEEP */ |
| 564 | static inline void save_pg_dir(void) | 564 | static inline void save_pg_dir(void) |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 9a6674689a20..7c48ad4faca3 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
| @@ -293,7 +293,7 @@ static __ref void *alloc_low_page(unsigned long *phys) | |||
| 293 | panic("alloc_low_page: ran out of memory"); | 293 | panic("alloc_low_page: ran out of memory"); |
| 294 | 294 | ||
| 295 | adr = early_memremap(pfn * PAGE_SIZE, PAGE_SIZE); | 295 | adr = early_memremap(pfn * PAGE_SIZE, PAGE_SIZE); |
| 296 | memset(adr, 0, PAGE_SIZE); | 296 | clear_page(adr); |
| 297 | *phys = pfn * PAGE_SIZE; | 297 | *phys = pfn * PAGE_SIZE; |
| 298 | return adr; | 298 | return adr; |
| 299 | } | 299 | } |
diff --git a/arch/x86/mm/k8topology_64.c b/arch/x86/mm/k8topology_64.c index 970ed579d4e4..240f86462a83 100644 --- a/arch/x86/mm/k8topology_64.c +++ b/arch/x86/mm/k8topology_64.c | |||
| @@ -54,8 +54,8 @@ static __init int find_northbridge(void) | |||
| 54 | static __init void early_get_boot_cpu_id(void) | 54 | static __init void early_get_boot_cpu_id(void) |
| 55 | { | 55 | { |
| 56 | /* | 56 | /* |
| 57 | * need to get boot_cpu_id so can use that to create apicid_to_node | 57 | * need to get the APIC ID of the BSP so can use that to |
| 58 | * in k8_scan_nodes() | 58 | * create apicid_to_node in k8_scan_nodes() |
| 59 | */ | 59 | */ |
| 60 | #ifdef CONFIG_X86_MPPARSE | 60 | #ifdef CONFIG_X86_MPPARSE |
| 61 | /* | 61 | /* |
| @@ -212,7 +212,7 @@ int __init k8_scan_nodes(void) | |||
| 212 | bits = boot_cpu_data.x86_coreid_bits; | 212 | bits = boot_cpu_data.x86_coreid_bits; |
| 213 | cores = (1<<bits); | 213 | cores = (1<<bits); |
| 214 | apicid_base = 0; | 214 | apicid_base = 0; |
| 215 | /* need to get boot_cpu_id early for system with apicid lifting */ | 215 | /* get the APIC ID of the BSP early for systems with apicid lifting */ |
| 216 | early_get_boot_cpu_id(); | 216 | early_get_boot_cpu_id(); |
| 217 | if (boot_cpu_physical_apicid > 0) { | 217 | if (boot_cpu_physical_apicid > 0) { |
| 218 | pr_info("BSP APIC ID: %02x\n", boot_cpu_physical_apicid); | 218 | pr_info("BSP APIC ID: %02x\n", boot_cpu_physical_apicid); |
diff --git a/include/linux/acpi_pmtmr.h b/include/linux/acpi_pmtmr.h index 7e3d2859be50..1d0ef1ae8036 100644 --- a/include/linux/acpi_pmtmr.h +++ b/include/linux/acpi_pmtmr.h | |||
| @@ -25,8 +25,6 @@ static inline u32 acpi_pm_read_early(void) | |||
| 25 | return acpi_pm_read_verified() & ACPI_PM_MASK; | 25 | return acpi_pm_read_verified() & ACPI_PM_MASK; |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | extern void pmtimer_wait(unsigned); | ||
| 29 | |||
| 30 | #else | 28 | #else |
| 31 | 29 | ||
| 32 | static inline u32 acpi_pm_read_early(void) | 30 | static inline u32 acpi_pm_read_early(void) |
