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 #include <asm/nmi.h> 23 #include <asm/hw_irq.h> 24 #include <asm/apic.h> 25 #include <linux/kdebug.h> 26 #include <asm/smp.h> 27 ··· 140 lapic_shutdown(); 141 #if defined(CONFIG_X86_IO_APIC) 142 disable_IO_APIC(); 143 #endif 144 crash_save_cpu(regs, safe_smp_processor_id()); 145 }
··· 22 #include <asm/nmi.h> 23 #include <asm/hw_irq.h> 24 #include <asm/apic.h> 25 + #include <asm/hpet.h> 26 #include <linux/kdebug.h> 27 #include <asm/smp.h> 28 ··· 139 lapic_shutdown(); 140 #if defined(CONFIG_X86_IO_APIC) 141 disable_IO_APIC(); 142 + #endif 143 + #ifdef CONFIG_HPET_TIMER 144 + hpet_disable(); 145 #endif 146 crash_save_cpu(regs, safe_smp_processor_id()); 147 }
+6 -6
arch/x86/kernel/head_32.S
··· 193 jb 10b 194 movl %edi,(init_pg_tables_end - __PAGE_OFFSET) 195 196 xorl %ebx,%ebx /* This is the boot CPU (BSP) */ 197 jmp 3f 198 /* ··· 213 #ifndef CONFIG_HOTPLUG_CPU 214 .section .init.text,"ax",@progbits 215 #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 223 #ifdef CONFIG_SMP 224 ENTRY(startup_32_smp)
··· 193 jb 10b 194 movl %edi,(init_pg_tables_end - __PAGE_OFFSET) 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 + 202 xorl %ebx,%ebx /* This is the boot CPU (BSP) */ 203 jmp 3f 204 /* ··· 207 #ifndef CONFIG_HOTPLUG_CPU 208 .section .init.text,"ax",@progbits 209 #endif 210 211 #ifdef CONFIG_SMP 212 ENTRY(startup_32_smp)
+14
arch/x86/kernel/hpet.c
··· 446 } 447 fs_initcall(hpet_late_init); 448 449 #ifdef CONFIG_HPET_EMULATE_RTC 450 451 /* HPET in LegacyReplacement Mode eats up RTC interrupt line. When, HPET
··· 446 } 447 fs_initcall(hpet_late_init); 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 + 463 #ifdef CONFIG_HPET_EMULATE_RTC 464 465 /* HPET in LegacyReplacement Mode eats up RTC interrupt line. When, HPET
+4
arch/x86/kernel/reboot_32.c
··· 11 #include <linux/reboot.h> 12 #include <asm/uaccess.h> 13 #include <asm/apic.h> 14 #include <asm/desc.h> 15 #include "mach_reboot.h" 16 #include <asm/reboot_fixups.h> ··· 326 327 #ifdef CONFIG_X86_IO_APIC 328 disable_IO_APIC(); 329 #endif 330 } 331
··· 11 #include <linux/reboot.h> 12 #include <asm/uaccess.h> 13 #include <asm/apic.h> 14 + #include <asm/hpet.h> 15 #include <asm/desc.h> 16 #include "mach_reboot.h" 17 #include <asm/reboot_fixups.h> ··· 325 326 #ifdef CONFIG_X86_IO_APIC 327 disable_IO_APIC(); 328 + #endif 329 + #ifdef CONFIG_HPET_TIMER 330 + hpet_disable(); 331 #endif 332 } 333
+4
arch/x86/kernel/reboot_64.c
··· 17 #include <asm/pgtable.h> 18 #include <asm/tlbflush.h> 19 #include <asm/apic.h> 20 #include <asm/gart.h> 21 22 /* ··· 114 115 disable_IO_APIC(); 116 117 local_irq_restore(flags); 118 119 pci_iommu_shutdown();
··· 17 #include <asm/pgtable.h> 18 #include <asm/tlbflush.h> 19 #include <asm/apic.h> 20 + #include <asm/hpet.h> 21 #include <asm/gart.h> 22 23 /* ··· 113 114 disable_IO_APIC(); 115 116 + #ifdef CONFIG_HPET_TIMER 117 + hpet_disable(); 118 + #endif 119 local_irq_restore(flags); 120 121 pci_iommu_shutdown();
+1
include/asm-x86/hpet.h
··· 61 extern int hpet_force_user; 62 extern int is_hpet_enabled(void); 63 extern int hpet_enable(void); 64 extern unsigned long hpet_readl(unsigned long a); 65 extern void force_hpet_resume(void); 66
··· 61 extern int hpet_force_user; 62 extern int is_hpet_enabled(void); 63 extern int hpet_enable(void); 64 + extern void hpet_disable(void); 65 extern unsigned long hpet_readl(unsigned long a); 66 extern void force_hpet_resume(void); 67