aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>2007-08-22 19:53:30 +0900
committerTony Luck <tony.luck@intel.com>2007-08-28 16:03:06 -0700
commitf740e6c9c55cac6ab0a7d44a464b54467cca4f4f (patch)
tree915ce6c71163623ddb5dbbb09133e126007e6dfd /arch/ia64
parent17764d2437b0c4440e0718205f2c26dbaa72bc27 (diff)
downloadkernel_samsung_tuna-f740e6c9c55cac6ab0a7d44a464b54467cca4f4f.zip
kernel_samsung_tuna-f740e6c9c55cac6ab0a7d44a464b54467cca4f4f.tar.gz
kernel_samsung_tuna-f740e6c9c55cac6ab0a7d44a464b54467cca4f4f.tar.bz2
[IA64] Clear pending interrupts at CPU boot up time
The pending interrupts can be remaining at boot up time on some platform. This will cause spurious interrupts when interrupt is enabled for the first time. This patch clears IVR at the CPU initialization to eliminate such spurious interrupts. Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/setup.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 407efea..1f9b1d8 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -960,6 +960,11 @@ cpu_init (void)
/* clear TPR & XTP to enable all interrupt classes: */
ia64_setreg(_IA64_REG_CR_TPR, 0);
+
+ /* Clear any pending interrupts left by SAL/EFI */
+ while (ia64_get_ivr() != IA64_SPURIOUS_INT_VECTOR)
+ ia64_eoi();
+
#ifdef CONFIG_SMP
normal_xtp();
#endif