diff options
author | Dean Nelson <dcn@sgi.com> | 2007-11-07 08:53:06 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-11-09 15:59:14 -0500 |
commit | 4c013f5c7ea39cd62e02c80408560751b4e8c0de (patch) | |
tree | 4dd58579377f878c555ec6ad6a6357366bba4af3 /arch | |
parent | ddd6fc7923fbcfbb53f9431cbc981b1c12636e14 (diff) |
[IA64] XPC heartbeat timer function must run on CPU 0
Currently, XPC's heartbeat timer function runs on whatever CPU modprobe/insmod
ran on when XPC was started. To avoid the heartbeat from being delayed for
long periods the timer function must run on CPU 0.
N.B. Altix doesn't currently allow cpu0 to be taken offline, so this is
safe for now. This code must be revised when offline of cpu0 is enabled.
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/sn/kernel/xpc_main.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c index e336e1692a73..81785b78bc1e 100644 --- a/arch/ia64/sn/kernel/xpc_main.c +++ b/arch/ia64/sn/kernel/xpc_main.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (c) 2004-2006 Silicon Graphics, Inc. All Rights Reserved. | 6 | * Copyright (c) 2004-2007 Silicon Graphics, Inc. All Rights Reserved. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | 9 | ||
@@ -257,7 +257,9 @@ xpc_hb_checker(void *ignore) | |||
257 | 257 | ||
258 | set_cpus_allowed(current, cpumask_of_cpu(XPC_HB_CHECK_CPU)); | 258 | set_cpus_allowed(current, cpumask_of_cpu(XPC_HB_CHECK_CPU)); |
259 | 259 | ||
260 | /* set our heartbeating to other partitions into motion */ | ||
260 | xpc_hb_check_timeout = jiffies + (xpc_hb_check_interval * HZ); | 261 | xpc_hb_check_timeout = jiffies + (xpc_hb_check_interval * HZ); |
262 | xpc_hb_beater(0); | ||
261 | 263 | ||
262 | while (!(volatile int) xpc_exiting) { | 264 | while (!(volatile int) xpc_exiting) { |
263 | 265 | ||
@@ -1338,16 +1340,8 @@ xpc_init(void) | |||
1338 | dev_warn(xpc_part, "can't register die notifier\n"); | 1340 | dev_warn(xpc_part, "can't register die notifier\n"); |
1339 | } | 1341 | } |
1340 | 1342 | ||
1341 | |||
1342 | /* | ||
1343 | * Set the beating to other partitions into motion. This is | ||
1344 | * the last requirement for other partitions' discovery to | ||
1345 | * initiate communications with us. | ||
1346 | */ | ||
1347 | init_timer(&xpc_hb_timer); | 1343 | init_timer(&xpc_hb_timer); |
1348 | xpc_hb_timer.function = xpc_hb_beater; | 1344 | xpc_hb_timer.function = xpc_hb_beater; |
1349 | xpc_hb_beater(0); | ||
1350 | |||
1351 | 1345 | ||
1352 | /* | 1346 | /* |
1353 | * The real work-horse behind xpc. This processes incoming | 1347 | * The real work-horse behind xpc. This processes incoming |