summaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorAlex Chiang2008-05-08 22:03:23 +0200
committerTony Luck2008-05-15 00:42:07 +0200
commitf13ae30e1397e3bfb38feb3b6e889af5d021f13d (patch)
tree4b82d1ee1e8bbb5f21d5f81bb0a73cf3daa8efb4 /arch/ia64
parent[IA64] Don't reserve crashkernel memory > 4 GB (diff)
downloadkernel-qcow2-linux-f13ae30e1397e3bfb38feb3b6e889af5d021f13d.tar.gz
kernel-qcow2-linux-f13ae30e1397e3bfb38feb3b6e889af5d021f13d.tar.xz
kernel-qcow2-linux-f13ae30e1397e3bfb38feb3b6e889af5d021f13d.zip
[IA64] allow user to force_pal_cache_flush
The sequence executed in check_sal_cache_flush: - pend a timer interrupt - call SAL_CACHE_FLUSH - see if interrupt is still pending can hang HP machines with buggy SAL_CACHE_FLUSH implementations. Provide a kernel command-line argument to allow users skip this check if desired. Using this parameter will force ia64_sal_cache_flush to call ia64_pal_cache_flush() instead of SAL_CACHE_FLUSH. Signed-off-by: Alex Chiang <achiang@hp.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/sal.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
index a3022dc48ef8..7e0259709c04 100644
--- a/arch/ia64/kernel/sal.c
+++ b/arch/ia64/kernel/sal.c
@@ -229,6 +229,14 @@ static void __init sal_desc_ap_wakeup(void *p) { }
*/
static int sal_cache_flush_drops_interrupts;
+static int __init
+force_pal_cache_flush(char *str)
+{
+ sal_cache_flush_drops_interrupts = 1;
+ return 0;
+}
+early_param("force_pal_cache_flush", force_pal_cache_flush);
+
void __init
check_sal_cache_flush (void)
{
@@ -237,6 +245,9 @@ check_sal_cache_flush (void)
u64 vector, cache_type = 3;
struct ia64_sal_retval isrv;
+ if (sal_cache_flush_drops_interrupts)
+ return;
+
cpu = get_cpu();
local_irq_save(flags);