On Thu, Mar 28, 2024 at 04:12:36PM +0800,Then, it's better to add some comments?
Chao Gao <chao.gao@xxxxxxxxx> wrote:
That's true. We can complicate this function and HLT emulation. But I don't}Ditto.
void vmx_vcpu_pi_put(struct kvm_vcpu *vcpu)
@@ -200,7 +222,8 @@ void vmx_vcpu_pi_put(struct kvm_vcpu *vcpu)
if (!vmx_needs_pi_wakeup(vcpu))
return;
- if (kvm_vcpu_is_blocking(vcpu) && !vmx_interrupt_blocked(vcpu))
+ if (kvm_vcpu_is_blocking(vcpu) &&
+ (is_td_vcpu(vcpu) || !vmx_interrupt_blocked(vcpu)))
This looks incorrect to me. here we assume interrupt is always enabled for TD.
But on TDVMCALL(HLT), the guest tells KVM if hlt is called with interrupt
disabled. KVM can just check that interrupt status passed from the guest.
think it's worthwhile because HLT with interrupt masked is rare. Only for
CPU online.