diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 04:29:00 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 04:29:00 -0500 |
| commit | 9caafa6c8686e319cf4d5f3757b3972c6c522b7c (patch) | |
| tree | b38979b835b5d22e681b175d0b98a3c7560d9c59 /arch/powerpc/kernel/rtas.c | |
| parent | 51e9f2ff83df6b1c81c5c44f4486c68ed87aa20e (diff) | |
| parent | cac0e8e8bb2e7a086643bdd00c41d900a79bb4fa (diff) | |
Merge branch 'upstream-fixes'
Diffstat (limited to 'arch/powerpc/kernel/rtas.c')
| -rw-r--r-- | arch/powerpc/kernel/rtas.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 7fe4a5c944c9..b5b2add7ad1e 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | #include <asm/prom.h> | 23 | #include <asm/prom.h> |
| 24 | #include <asm/rtas.h> | 24 | #include <asm/rtas.h> |
| 25 | #include <asm/hvcall.h> | ||
| 25 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
| 26 | #include <asm/machdep.h> | 27 | #include <asm/machdep.h> |
| 27 | #include <asm/page.h> | 28 | #include <asm/page.h> |
| @@ -565,6 +566,7 @@ static int ibm_suspend_me_token = RTAS_UNKNOWN_SERVICE; | |||
| 565 | #ifdef CONFIG_PPC_PSERIES | 566 | #ifdef CONFIG_PPC_PSERIES |
| 566 | static void rtas_percpu_suspend_me(void *info) | 567 | static void rtas_percpu_suspend_me(void *info) |
| 567 | { | 568 | { |
| 569 | int i; | ||
| 568 | long rc; | 570 | long rc; |
| 569 | long flags; | 571 | long flags; |
| 570 | struct rtas_suspend_me_data *data = | 572 | struct rtas_suspend_me_data *data = |
| @@ -587,18 +589,16 @@ static void rtas_percpu_suspend_me(void *info) | |||
| 587 | 589 | ||
| 588 | if (rc == H_Continue) { | 590 | if (rc == H_Continue) { |
| 589 | data->waiting = 0; | 591 | data->waiting = 0; |
| 590 | rtas_call(ibm_suspend_me_token, 0, 1, | 592 | data->args->args[data->args->nargs] = |
| 591 | data->args->args); | 593 | rtas_call(ibm_suspend_me_token, 0, 1, NULL); |
| 594 | for_each_cpu(i) | ||
| 595 | plpar_hcall_norets(H_PROD,i); | ||
| 592 | } else { | 596 | } else { |
| 593 | data->waiting = -EBUSY; | 597 | data->waiting = -EBUSY; |
| 594 | printk(KERN_ERR "Error on H_Join hypervisor call\n"); | 598 | printk(KERN_ERR "Error on H_Join hypervisor call\n"); |
| 595 | } | 599 | } |
| 596 | 600 | ||
| 597 | out: | 601 | out: |
| 598 | /* before we restore interrupts, make sure we don't | ||
| 599 | * generate a spurious soft lockup errors | ||
| 600 | */ | ||
| 601 | touch_softlockup_watchdog(); | ||
| 602 | local_irq_restore(flags); | 602 | local_irq_restore(flags); |
| 603 | return; | 603 | return; |
| 604 | } | 604 | } |
