* [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC
@ 2013-10-24 1:30 Fenghua Yu
2013-10-25 10:57 ` Ingo Molnar
2013-11-07 15:18 ` [tip:x86/apic] x86/apic: Disable I/ O APIC before shutdown of the " tip-bot for Fenghua Yu
0 siblings, 2 replies; 4+ messages in thread
From: Fenghua Yu @ 2013-10-24 1:30 UTC (permalink / raw)
To: H Peter Anvin, Ingo Molnar, Thomas Gleixner, linux-kernel; +Cc: Fenghua Yu
From: Fenghua Yu <fenghua.yu@intel.com>
In reboot and crash path, when shutdown local APIC, I/O APIC is still active.
This may cause issues because external interrupts can still come in and
disturb local APIC during shutdown process. To quiet external interrupts,
disable I/O APIC before shutdown local APIC.
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
---
arch/x86/kernel/crash.c | 2 +-
arch/x86/kernel/reboot.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index e0e0841..18677a9 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -127,12 +127,12 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
cpu_emergency_vmxoff();
cpu_emergency_svm_disable();
- lapic_shutdown();
#ifdef CONFIG_X86_IO_APIC
/* Prevent crash_kexec() from deadlocking on ioapic_lock. */
ioapic_zap_locks();
disable_IO_APIC();
#endif
+ lapic_shutdown();
#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 7e920bf..618ce26 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -550,6 +550,10 @@ static void native_machine_emergency_restart(void)
void native_machine_shutdown(void)
{
/* Stop the cpus and apics */
+#ifdef CONFIG_X86_IO_APIC
+ disable_IO_APIC();
+#endif
+
#ifdef CONFIG_SMP
/*
* Stop all of the others. Also disable the local irq to
@@ -562,10 +566,6 @@ void native_machine_shutdown(void)
lapic_shutdown();
-#ifdef CONFIG_X86_IO_APIC
- disable_IO_APIC();
-#endif
-
#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
--
1.6.0.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC
2013-10-24 1:30 [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC Fenghua Yu
@ 2013-10-25 10:57 ` Ingo Molnar
2013-11-06 22:32 ` Yu, Fenghua
2013-11-07 15:18 ` [tip:x86/apic] x86/apic: Disable I/ O APIC before shutdown of the " tip-bot for Fenghua Yu
1 sibling, 1 reply; 4+ messages in thread
From: Ingo Molnar @ 2013-10-25 10:57 UTC (permalink / raw)
To: Fenghua Yu; +Cc: H Peter Anvin, Ingo Molnar, Thomas Gleixner, linux-kernel
* Fenghua Yu <fenghua.yu@intel.com> wrote:
> From: Fenghua Yu <fenghua.yu@intel.com>
>
> In reboot and crash path, when shutdown local APIC, I/O APIC is still active.
> This may cause issues because external interrupts can still come in and
> disturb local APIC during shutdown process. To quiet external interrupts,
> disable I/O APIC before shutdown local APIC.
What specific 'issues' were observed, on what kind of systems?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC
2013-10-25 10:57 ` Ingo Molnar
@ 2013-11-06 22:32 ` Yu, Fenghua
0 siblings, 0 replies; 4+ messages in thread
From: Yu, Fenghua @ 2013-11-06 22:32 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H Peter Anvin, Ingo Molnar, Thomas Gleixner, linux-kernel
> Ingo Molnar [mailto:mingo.kernel.org@gmail.com] wrote:
> Friday, October 25, 2013 3:58 AM
>
> * Fenghua Yu <fenghua.yu@intel.com> wrote:
>
> > From: Fenghua Yu <fenghua.yu@intel.com>
> >
> > In reboot and crash path, when shutdown local APIC, I/O APIC is still
> active.
> > This may cause issues because external interrupts can still come in
> and
> > disturb local APIC during shutdown process. To quiet external
> interrupts,
> > disable I/O APIC before shutdown local APIC.
>
> What specific 'issues' were observed, on what kind of systems?
>
This patch is a workaround for a to-be-published erratum; the erratum
will be published in a few weeks.
Thanks.
-Fenghua
^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip:x86/apic] x86/apic: Disable I/ O APIC before shutdown of the local APIC
2013-10-24 1:30 [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC Fenghua Yu
2013-10-25 10:57 ` Ingo Molnar
@ 2013-11-07 15:18 ` tip-bot for Fenghua Yu
1 sibling, 0 replies; 4+ messages in thread
From: tip-bot for Fenghua Yu @ 2013-11-07 15:18 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, stable, fenghua.yu, tglx
Commit-ID: 522e66464467543c0d88d023336eec4df03ad40b
Gitweb: http://git.kernel.org/tip/522e66464467543c0d88d023336eec4df03ad40b
Author: Fenghua Yu <fenghua.yu@intel.com>
AuthorDate: Wed, 23 Oct 2013 18:30:12 -0700
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 7 Nov 2013 10:12:37 +0100
x86/apic: Disable I/O APIC before shutdown of the local APIC
In reboot and crash path, when we shut down the local APIC, the I/O APIC is
still active. This may cause issues because external interrupts
can still come in and disturb the local APIC during shutdown process.
To quiet external interrupts, disable I/O APIC before shutdown local APIC.
Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Link: http://lkml.kernel.org/r/1382578212-4677-1-git-send-email-fenghua.yu@intel.com
Cc: <stable@kernel.org>
[ I suppose the 'issue' is a hang during shutdown. It's a fine change nevertheless. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/kernel/crash.c | 2 +-
arch/x86/kernel/reboot.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index e0e0841..18677a9 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -127,12 +127,12 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
cpu_emergency_vmxoff();
cpu_emergency_svm_disable();
- lapic_shutdown();
#ifdef CONFIG_X86_IO_APIC
/* Prevent crash_kexec() from deadlocking on ioapic_lock. */
ioapic_zap_locks();
disable_IO_APIC();
#endif
+ lapic_shutdown();
#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 7e920bf..618ce26 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -550,6 +550,10 @@ static void native_machine_emergency_restart(void)
void native_machine_shutdown(void)
{
/* Stop the cpus and apics */
+#ifdef CONFIG_X86_IO_APIC
+ disable_IO_APIC();
+#endif
+
#ifdef CONFIG_SMP
/*
* Stop all of the others. Also disable the local irq to
@@ -562,10 +566,6 @@ void native_machine_shutdown(void)
lapic_shutdown();
-#ifdef CONFIG_X86_IO_APIC
- disable_IO_APIC();
-#endif
-
#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-11-07 15:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-24 1:30 [PATCH] x86/apic: Disable I/O APIC before shutdown local APIC Fenghua Yu
2013-10-25 10:57 ` Ingo Molnar
2013-11-06 22:32 ` Yu, Fenghua
2013-11-07 15:18 ` [tip:x86/apic] x86/apic: Disable I/ O APIC before shutdown of the " tip-bot for Fenghua Yu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.