@@ -1537,6 +1537,13 @@ struct kvm_arch {
*/
#define SPLIT_DESC_CACHE_MIN_NR_OBJECTS (SPTE_ENT_PER_PAGE + 1)
struct kvm_mmu_memory_cache split_desc_cache;
+
+ /*
+ * When a system supports multiple VMPLs, injected interrupts need to be
+ * sent to the correct context. The default VMPL that IRQs should be sent
+ * to is indicated in this variable.
+ */
+ unsigned int default_irq_vmpl;
};
struct kvm_vm_stat {
@@ -3983,6 +3983,14 @@ static int __sev_snp_update_protected_guest_state(struct kvm_vcpu *vcpu)
* means.
*/
kvm_release_pfn_clean(pfn);
+
+ /*
+ * TEMP: If the newly created VMSA is for a lower VMPL then
+ * set this VMPL to be the default for sending IRQs to.
+ */
+ if (vcpu->vmpl > vcpu->kvm->arch.default_irq_vmpl) {
+ vcpu->kvm->arch.default_irq_vmpl = vcpu->vmpl;
+ }
}
return 0;
When a CPU supports multiple VMPLs, injected interrupts need to be sent to the correct context. This commit adds an operation that determines the VMPL number that IRQs should be sent to in the absence of an explicit target VMPL. Signed-off-by: Roy Hopkins <roy.hopkins@suse.com> --- arch/x86/include/asm/kvm_host.h | 7 +++++++ arch/x86/kvm/svm/sev.c | 8 ++++++++ 2 files changed, 15 insertions(+)