diff options
Diffstat (limited to 'include/asm-ia64/system.h')
-rw-r--r-- | include/asm-ia64/system.h | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/include/asm-ia64/system.h b/include/asm-ia64/system.h index 99b6f307e94b..cd4233d66f15 100644 --- a/include/asm-ia64/system.h +++ b/include/asm-ia64/system.h | |||
@@ -256,32 +256,7 @@ extern void ia64_load_extra (struct task_struct *task); | |||
256 | # define switch_to(prev,next,last) __switch_to(prev, next, last) | 256 | # define switch_to(prev,next,last) __switch_to(prev, next, last) |
257 | #endif | 257 | #endif |
258 | 258 | ||
259 | /* | ||
260 | * On IA-64, we don't want to hold the runqueue's lock during the low-level context-switch, | ||
261 | * because that could cause a deadlock. Here is an example by Erich Focht: | ||
262 | * | ||
263 | * Example: | ||
264 | * CPU#0: | ||
265 | * schedule() | ||
266 | * -> spin_lock_irq(&rq->lock) | ||
267 | * -> context_switch() | ||
268 | * -> wrap_mmu_context() | ||
269 | * -> read_lock(&tasklist_lock) | ||
270 | * | ||
271 | * CPU#1: | ||
272 | * sys_wait4() or release_task() or forget_original_parent() | ||
273 | * -> write_lock(&tasklist_lock) | ||
274 | * -> do_notify_parent() | ||
275 | * -> wake_up_parent() | ||
276 | * -> try_to_wake_up() | ||
277 | * -> spin_lock_irq(&parent_rq->lock) | ||
278 | * | ||
279 | * If the parent's rq happens to be on CPU#0, we'll wait for the rq->lock | ||
280 | * of that CPU which will not be released, because there we wait for the | ||
281 | * tasklist_lock to become available. | ||
282 | */ | ||
283 | #define __ARCH_WANT_UNLOCKED_CTXSW | 259 | #define __ARCH_WANT_UNLOCKED_CTXSW |
284 | |||
285 | #define ARCH_HAS_PREFETCH_SWITCH_STACK | 260 | #define ARCH_HAS_PREFETCH_SWITCH_STACK |
286 | #define ia64_platform_is(x) (strcmp(x, platform_name) == 0) | 261 | #define ia64_platform_is(x) (strcmp(x, platform_name) == 0) |
287 | 262 | ||