[PATCH] x86_64 irq_regs fix
smp_apic_timer_interrupt() needs to stack the pt_regs* for profile_tick. If any other of those APIC interrupt handlers want to run get_irq_regs() then their C entrypoint handlers will need the same treatment. Cc: Andi Kleen <ak@muc.de> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Acked-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
e630015504
commit
d150ad7bd9
1 changed files with 4 additions and 1 deletions
|
@ -913,8 +913,10 @@ void smp_local_timer_interrupt(void)
|
||||||
* [ if a single-CPU system runs an SMP kernel then we call the local
|
* [ if a single-CPU system runs an SMP kernel then we call the local
|
||||||
* interrupt as well. Thus we cannot inline the local irq ... ]
|
* interrupt as well. Thus we cannot inline the local irq ... ]
|
||||||
*/
|
*/
|
||||||
void smp_apic_timer_interrupt(void)
|
void smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the NMI deadlock-detector uses this.
|
* the NMI deadlock-detector uses this.
|
||||||
*/
|
*/
|
||||||
|
@ -934,6 +936,7 @@ void smp_apic_timer_interrupt(void)
|
||||||
irq_enter();
|
irq_enter();
|
||||||
smp_local_timer_interrupt();
|
smp_local_timer_interrupt();
|
||||||
irq_exit();
|
irq_exit();
|
||||||
|
set_irq_regs(old_regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue