Re: [PATCH] KVM: VMX: Consume pending LAPIC INIT event when exit on INIT_SIGNAL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/11/19 13:16, Liran Alon wrote:
> Intel SDM section 25.2 OTHER CAUSES OF VM EXITS specifies the following
> on INIT signals: "Such exits do not modify register state or clear pending
> events as they would outside of VMX operation."
> 
> When commit 4b9852f4f389 ("KVM: x86: Fix INIT signal handling in various CPU states")
> was applied, I interepted above Intel SDM statement such that
> INIT_SIGNAL exit don’t consume the LAPIC INIT pending event.
> 
> However, when Nadav Amit run matching kvm-unit-test on a bare-metal
> machine, it turned out my interpetation was wrong. i.e. INIT_SIGNAL
> exit does consume the LAPIC INIT pending event.
> (See: https://www.spinics.net/lists/kvm/msg196757.html)
> 
> Therefore, fix KVM code to behave as observed on bare-metal.
> 
> Fixes: 4b9852f4f389 ("KVM: x86: Fix INIT signal handling in various CPU states")
> Reported-by: Nadav Amit <nadav.amit@xxxxxxxxx>
> Reviewed-by: Mihai Carabas <mihai.carabas@xxxxxxxxxx>
> Reviewed-by: Joao Martins <joao.m.martins@xxxxxxxxxx>
> Signed-off-by: Liran Alon <liran.alon@xxxxxxxxxx>
> ---
>  arch/x86/kvm/vmx/nested.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
> index 0e7c9301fe86..2c4336ac7576 100644
> --- a/arch/x86/kvm/vmx/nested.c
> +++ b/arch/x86/kvm/vmx/nested.c
> @@ -3461,6 +3461,7 @@ static int vmx_check_nested_events(struct kvm_vcpu *vcpu, bool external_intr)
>  		test_bit(KVM_APIC_INIT, &apic->pending_events)) {
>  		if (block_nested_events)
>  			return -EBUSY;
> +		clear_bit(KVM_APIC_INIT, &apic->pending_events);
>  		nested_vmx_vmexit(vcpu, EXIT_REASON_INIT_SIGNAL, 0, 0);
>  		return 0;
>  	}
> 

Queued, thanks.

Paolo





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux