diff options
author | Jay Zhou <jianjay.zhou@huawei.com> | 2021-01-18 16:47:20 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-01-25 18:52:07 -0500 |
commit | 1f7becf1b7e21794fc9d460765fe09679bc9b9e0 (patch) | |
tree | ae4b92c0db859678c257fd7f9b8a3edb6d41cd08 /lib/parman.c | |
parent | 98dd2f108e448988d91e296173e773b06fb978b8 (diff) | |
download | linux-1f7becf1b7e21794fc9d460765fe09679bc9b9e0.tar.bz2 |
KVM: x86: get smi pending status correctly
The injection process of smi has two steps:
Qemu KVM
Step1:
cpu->interrupt_request &= \
~CPU_INTERRUPT_SMI;
kvm_vcpu_ioctl(cpu, KVM_SMI)
call kvm_vcpu_ioctl_smi() and
kvm_make_request(KVM_REQ_SMI, vcpu);
Step2:
kvm_vcpu_ioctl(cpu, KVM_RUN, 0)
call process_smi() if
kvm_check_request(KVM_REQ_SMI, vcpu) is
true, mark vcpu->arch.smi_pending = true;
The vcpu->arch.smi_pending will be set true in step2, unfortunately if
vcpu paused between step1 and step2, the kvm_run->immediate_exit will be
set and vcpu has to exit to Qemu immediately during step2 before mark
vcpu->arch.smi_pending true.
During VM migration, Qemu will get the smi pending status from KVM using
KVM_GET_VCPU_EVENTS ioctl at the downtime, then the smi pending status
will be lost.
Signed-off-by: Jay Zhou <jianjay.zhou@huawei.com>
Signed-off-by: Shengen Zhuang <zhuangshengen@huawei.com>
Message-Id: <20210118084720.1585-1-jianjay.zhou@huawei.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'lib/parman.c')
0 files changed, 0 insertions, 0 deletions