...
 
Commits (3)
...@@ -43,7 +43,7 @@ static inline void stack_overflow_check(struct pt_regs *regs) ...@@ -43,7 +43,7 @@ static inline void stack_overflow_check(struct pt_regs *regs)
return; return;
if (IS_ENABLED(CONFIG_IPIPE)) if (IS_ENABLED(CONFIG_IPIPE))
sp = current_stack_pointer(); sp = current_stack_pointer;
else else
sp = regs->sp; sp = regs->sp;
......
...@@ -8453,6 +8453,10 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu) ...@@ -8453,6 +8453,10 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu)
unsigned long tmp; unsigned long tmp;
#endif #endif
#ifdef CONFIG_IPIPE
__clear_bit(IPIPE_STALL_FLAG,
&ipipe_this_cpu_root_context()->status);
#endif
vector = exit_intr_info & INTR_INFO_VECTOR_MASK; vector = exit_intr_info & INTR_INFO_VECTOR_MASK;
desc = (gate_desc *)vmx->host_idt_base + vector; desc = (gate_desc *)vmx->host_idt_base + vector;
entry = gate_offset(*desc); entry = gate_offset(*desc);
......
...@@ -6639,6 +6639,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) ...@@ -6639,6 +6639,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
|| need_resched() || signal_pending(current)) { || need_resched() || signal_pending(current)) {
vcpu->mode = OUTSIDE_GUEST_MODE; vcpu->mode = OUTSIDE_GUEST_MODE;
smp_wmb(); smp_wmb();
__ipipe_exit_vm();
hard_cond_local_irq_enable(); hard_cond_local_irq_enable();
local_irq_enable(); local_irq_enable();
preempt_enable(); preempt_enable();
......