|
@@ -2885,7 +2885,7 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc)
|
|
*/
|
|
*/
|
|
trace_hardirqs_on();
|
|
trace_hardirqs_on();
|
|
|
|
|
|
- guest_enter();
|
|
|
|
|
|
+ guest_enter_irqoff();
|
|
|
|
|
|
srcu_idx = srcu_read_lock(&vc->kvm->srcu);
|
|
srcu_idx = srcu_read_lock(&vc->kvm->srcu);
|
|
|
|
|
|
@@ -2893,8 +2893,6 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc)
|
|
|
|
|
|
srcu_read_unlock(&vc->kvm->srcu, srcu_idx);
|
|
srcu_read_unlock(&vc->kvm->srcu, srcu_idx);
|
|
|
|
|
|
- guest_exit();
|
|
|
|
-
|
|
|
|
trace_hardirqs_off();
|
|
trace_hardirqs_off();
|
|
set_irq_happened(trap);
|
|
set_irq_happened(trap);
|
|
|
|
|
|
@@ -2937,6 +2935,7 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc)
|
|
kvmppc_set_host_core(pcpu);
|
|
kvmppc_set_host_core(pcpu);
|
|
|
|
|
|
local_irq_enable();
|
|
local_irq_enable();
|
|
|
|
+ guest_exit();
|
|
|
|
|
|
/* Let secondaries go back to the offline loop */
|
|
/* Let secondaries go back to the offline loop */
|
|
for (i = 0; i < controlled_threads; ++i) {
|
|
for (i = 0; i < controlled_threads; ++i) {
|