From 9d68d8066481a738fbb493234e899bb26f25c100 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 12 Jun 2009 22:27:01 -0600 Subject: [PATCH] --- yaml --- r: 147979 b: refs/heads/master c: a6c372de6e4b9a8188b66badcee3e3792eccdd26 h: refs/heads/master i: 147977: 67bf522af6b3757c38f8abd68c9e4d87fa93628f 147975: 98c4ea29dd1e6b795f47b953c33b913e6b2febd1 v: v3 --- [refs] | 2 +- trunk/drivers/lguest/interrupts_and_traps.c | 6 +++--- trunk/drivers/lguest/lguest_user.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 8c48a2a18a33..6cd081c61b9a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b43e352139f51216a8c56b0bd5fc3d4e05c65619 +refs/heads/master: a6c372de6e4b9a8188b66badcee3e3792eccdd26 diff --git a/trunk/drivers/lguest/interrupts_and_traps.c b/trunk/drivers/lguest/interrupts_and_traps.c index 6e99adbe1946..9ea26ad88c9d 100644 --- a/trunk/drivers/lguest/interrupts_and_traps.c +++ b/trunk/drivers/lguest/interrupts_and_traps.c @@ -511,9 +511,9 @@ static enum hrtimer_restart clockdev_fn(struct hrtimer *timer) /* Remember the first interrupt is the timer interrupt. */ set_bit(0, cpu->irqs_pending); - /* If the Guest is actually stopped, we need to wake it up. */ - if (cpu->halted) - wake_up_process(cpu->tsk); + /* Guest may be stopped or running on another CPU. */ + if (!wake_up_process(cpu->tsk)) + kick_process(cpu->tsk); return HRTIMER_NORESTART; } diff --git a/trunk/drivers/lguest/lguest_user.c b/trunk/drivers/lguest/lguest_user.c index b8ee103eed5f..bcdcf3453e78 100644 --- a/trunk/drivers/lguest/lguest_user.c +++ b/trunk/drivers/lguest/lguest_user.c @@ -24,8 +24,8 @@ static int break_guest_out(struct lg_cpu *cpu, const unsigned long __user*input) if (on) { cpu->break_out = 1; - /* Pop it out of the Guest (may be running on different CPU) */ - wake_up_process(cpu->tsk); + if (!wake_up_process(cpu->tsk)) + kick_process(cpu->tsk); /* Wait for them to reset it */ return wait_event_interruptible(cpu->break_wq, !cpu->break_out); } else {