diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/lpar.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/lpar.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index 27a49508b410..948e0e3b3547 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c | |||
@@ -554,7 +554,10 @@ void __trace_hcall_entry(unsigned long opcode, unsigned long *args) | |||
554 | goto out; | 554 | goto out; |
555 | 555 | ||
556 | (*depth)++; | 556 | (*depth)++; |
557 | preempt_disable(); | ||
557 | trace_hcall_entry(opcode, args); | 558 | trace_hcall_entry(opcode, args); |
559 | if (opcode == H_CEDE) | ||
560 | rcu_idle_enter(); | ||
558 | (*depth)--; | 561 | (*depth)--; |
559 | 562 | ||
560 | out: | 563 | out: |
@@ -575,7 +578,10 @@ void __trace_hcall_exit(long opcode, unsigned long retval, | |||
575 | goto out; | 578 | goto out; |
576 | 579 | ||
577 | (*depth)++; | 580 | (*depth)++; |
581 | if (opcode == H_CEDE) | ||
582 | rcu_idle_exit(); | ||
578 | trace_hcall_exit(opcode, retval, retbuf); | 583 | trace_hcall_exit(opcode, retval, retbuf); |
584 | preempt_enable(); | ||
579 | (*depth)--; | 585 | (*depth)--; |
580 | 586 | ||
581 | out: | 587 | out: |