mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
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
This commit is contained in:
commit
1a2edea9af
6 changed files with 33 additions and 6 deletions
|
@ -22,6 +22,7 @@
|
|||
#include <asm/nmi.h>
|
||||
#include <asm/hw_irq.h>
|
||||
#include <asm/apic.h>
|
||||
#include <asm/hpet.h>
|
||||
#include <linux/kdebug.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
|
@ -139,6 +140,9 @@ void machine_crash_shutdown(struct pt_regs *regs)
|
|||
lapic_shutdown();
|
||||
#if defined(CONFIG_X86_IO_APIC)
|
||||
disable_IO_APIC();
|
||||
#endif
|
||||
#ifdef CONFIG_HPET_TIMER
|
||||
hpet_disable();
|
||||
#endif
|
||||
crash_save_cpu(regs, safe_smp_processor_id());
|
||||
}
|
||||
|
|
|
@ -193,6 +193,12 @@ default_entry:
|
|||
jb 10b
|
||||
movl %edi,(init_pg_tables_end - __PAGE_OFFSET)
|
||||
|
||||
/* Do an early initialization of the fixmap area */
|
||||
movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
|
||||
movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax
|
||||
addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */
|
||||
movl %eax, 4092(%edx)
|
||||
|
||||
xorl %ebx,%ebx /* This is the boot CPU (BSP) */
|
||||
jmp 3f
|
||||
/*
|
||||
|
@ -208,12 +214,6 @@ default_entry:
|
|||
.section .init.text,"ax",@progbits
|
||||
#endif
|
||||
|
||||
/* Do an early initialization of the fixmap area */
|
||||
movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
|
||||
movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax
|
||||
addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */
|
||||
movl %eax, 4092(%edx)
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
ENTRY(startup_32_smp)
|
||||
cld
|
||||
|
|
|
@ -446,6 +446,20 @@ static __init int hpet_late_init(void)
|
|||
}
|
||||
fs_initcall(hpet_late_init);
|
||||
|
||||
void hpet_disable(void)
|
||||
{
|
||||
if (is_hpet_capable()) {
|
||||
unsigned long cfg = hpet_readl(HPET_CFG);
|
||||
|
||||
if (hpet_legacy_int_enabled) {
|
||||
cfg &= ~HPET_CFG_LEGACY;
|
||||
hpet_legacy_int_enabled = 0;
|
||||
}
|
||||
cfg &= ~HPET_CFG_ENABLE;
|
||||
hpet_writel(cfg, HPET_CFG);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HPET_EMULATE_RTC
|
||||
|
||||
/* HPET in LegacyReplacement Mode eats up RTC interrupt line. When, HPET
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/reboot.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/apic.h>
|
||||
#include <asm/hpet.h>
|
||||
#include <asm/desc.h>
|
||||
#include "mach_reboot.h"
|
||||
#include <asm/reboot_fixups.h>
|
||||
|
@ -326,6 +327,9 @@ static void native_machine_shutdown(void)
|
|||
#ifdef CONFIG_X86_IO_APIC
|
||||
disable_IO_APIC();
|
||||
#endif
|
||||
#ifdef CONFIG_HPET_TIMER
|
||||
hpet_disable();
|
||||
#endif
|
||||
}
|
||||
|
||||
void __attribute__((weak)) mach_reboot_fixups(void)
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <asm/pgtable.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/apic.h>
|
||||
#include <asm/hpet.h>
|
||||
#include <asm/gart.h>
|
||||
|
||||
/*
|
||||
|
@ -113,6 +114,9 @@ void machine_shutdown(void)
|
|||
|
||||
disable_IO_APIC();
|
||||
|
||||
#ifdef CONFIG_HPET_TIMER
|
||||
hpet_disable();
|
||||
#endif
|
||||
local_irq_restore(flags);
|
||||
|
||||
pci_iommu_shutdown();
|
||||
|
|
|
@ -61,6 +61,7 @@ extern unsigned long force_hpet_address;
|
|||
extern int hpet_force_user;
|
||||
extern int is_hpet_enabled(void);
|
||||
extern int hpet_enable(void);
|
||||
extern void hpet_disable(void);
|
||||
extern unsigned long hpet_readl(unsigned long a);
|
||||
extern void force_hpet_resume(void);
|
||||
|
||||
|
|
Loading…
Reference in a new issue