Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86

* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
x86: fix x86-32 early fixmap initialization.
x86: disable hpet legacy replacement for kdump
x86: disable hpet on shutdown

+33 -6
+4
arch/x86/kernel/crash.c
··· 22 22 #include <asm/nmi.h> 23 23 #include <asm/hw_irq.h> 24 24 #include <asm/apic.h> 25 + #include <asm/hpet.h> 25 26 #include <linux/kdebug.h> 26 27 #include <asm/smp.h> 27 28 ··· 140 139 lapic_shutdown(); 141 140 #if defined(CONFIG_X86_IO_APIC) 142 141 disable_IO_APIC(); 142 + #endif 143 + #ifdef CONFIG_HPET_TIMER 144 + hpet_disable(); 143 145 #endif 144 146 crash_save_cpu(regs, safe_smp_processor_id()); 145 147 }
+6 -6
arch/x86/kernel/head_32.S
··· 193 193 jb 10b 194 194 movl %edi,(init_pg_tables_end - __PAGE_OFFSET) 195 195 196 + /* Do an early initialization of the fixmap area */ 197 + movl $(swapper_pg_dir - __PAGE_OFFSET), %edx 198 + movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax 199 + addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */ 200 + movl %eax, 4092(%edx) 201 + 196 202 xorl %ebx,%ebx /* This is the boot CPU (BSP) */ 197 203 jmp 3f 198 204 /* ··· 213 207 #ifndef CONFIG_HOTPLUG_CPU 214 208 .section .init.text,"ax",@progbits 215 209 #endif 216 - 217 - /* Do an early initialization of the fixmap area */ 218 - movl $(swapper_pg_dir - __PAGE_OFFSET), %edx 219 - movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax 220 - addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */ 221 - movl %eax, 4092(%edx) 222 210 223 211 #ifdef CONFIG_SMP 224 212 ENTRY(startup_32_smp)
+14
arch/x86/kernel/hpet.c
··· 446 446 } 447 447 fs_initcall(hpet_late_init); 448 448 449 + void hpet_disable(void) 450 + { 451 + if (is_hpet_capable()) { 452 + unsigned long cfg = hpet_readl(HPET_CFG); 453 + 454 + if (hpet_legacy_int_enabled) { 455 + cfg &= ~HPET_CFG_LEGACY; 456 + hpet_legacy_int_enabled = 0; 457 + } 458 + cfg &= ~HPET_CFG_ENABLE; 459 + hpet_writel(cfg, HPET_CFG); 460 + } 461 + } 462 + 449 463 #ifdef CONFIG_HPET_EMULATE_RTC 450 464 451 465 /* HPET in LegacyReplacement Mode eats up RTC interrupt line. When, HPET
+4
arch/x86/kernel/reboot_32.c
··· 11 11 #include <linux/reboot.h> 12 12 #include <asm/uaccess.h> 13 13 #include <asm/apic.h> 14 + #include <asm/hpet.h> 14 15 #include <asm/desc.h> 15 16 #include "mach_reboot.h" 16 17 #include <asm/reboot_fixups.h> ··· 326 325 327 326 #ifdef CONFIG_X86_IO_APIC 328 327 disable_IO_APIC(); 328 + #endif 329 + #ifdef CONFIG_HPET_TIMER 330 + hpet_disable(); 329 331 #endif 330 332 } 331 333
+4
arch/x86/kernel/reboot_64.c
··· 17 17 #include <asm/pgtable.h> 18 18 #include <asm/tlbflush.h> 19 19 #include <asm/apic.h> 20 + #include <asm/hpet.h> 20 21 #include <asm/gart.h> 21 22 22 23 /* ··· 114 113 115 114 disable_IO_APIC(); 116 115 116 + #ifdef CONFIG_HPET_TIMER 117 + hpet_disable(); 118 + #endif 117 119 local_irq_restore(flags); 118 120 119 121 pci_iommu_shutdown();
+1
include/asm-x86/hpet.h
··· 61 61 extern int hpet_force_user; 62 62 extern int is_hpet_enabled(void); 63 63 extern int hpet_enable(void); 64 + extern void hpet_disable(void); 64 65 extern unsigned long hpet_readl(unsigned long a); 65 66 extern void force_hpet_resume(void); 66 67