提交 d150ad7b 编写于 作者: A Andrew Morton 提交者: Linus Torvalds

[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: NAndrew Morton <akpm@osdl.org>
Acked-by: NAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 e6300155
...@@ -913,8 +913,10 @@ void smp_local_timer_interrupt(void) ...@@ -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) ...@@ -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);
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册