FAILED: patch "[PATCH] KVM: x86: use CPUID to locate host page table reserved bits" failed to apply to 5.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 7adacf5eb2d2048045d9fd8fdab861fd9e7e2e96 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Wed, 4 Dec 2019 15:50:27 +0100
Subject: [PATCH] KVM: x86: use CPUID to locate host page table reserved bits
The comment in kvm_get_shadow_phys_bits refers to MKTME, but the same is actually true of SME and SEV. Just use CPUID[0x8000_0008].EAX[7:0] unconditionally if available, it is simplest and works even if memory is not encrypted.
arch/x86/kvm/mmu/mmu.c +12 -8
@@ -538,16 +538,20 @@ EXPORT_SYMBOL_GPL(kvm_mmu_set_mask_ptes);static u8 kvm_get_shadow_phys_bits (void ) {/* -* boot_cpu_data.x86_phys_bits is reduced when MKTME is detected -* in CPU detection code, but MKTME treats those reduced bits as -* 'keyID' thus they are not reserved bits. Therefore for MKTME -* we should still return physical address bits reported by CPUID. +* boot_cpu_data.x86_phys_bits is reduced when MKTME or SME are detected +* in CPU detection code, but the processor treats those reduced bits as +* 'keyID' thus they are not reserved bits. Therefore KVM needs to look at +* the physical address bits reported by CPUID. */ -if (!boot_cpu_has (X86_FEATURE_TME ) || -WARN_ON_ONCE (boot_cpu_data.extended_cpuid_level <0x80000008 )) -return boot_cpu_data.x86_phys_bits; +if (likely (boot_cpu_data.extended_cpuid_level >=0x80000008 )) +return cpuid_eax (0x80000008 ) &0xff ; -return cpuid_eax (0x80000008 ) &0xff ; +/* +* Quite weird to have VMX or SVM but not MAXPHYADDR; probably a VM with +* custom CPUID. Proceed with whatever the kernel found since these features +* aren't virtualizable (SME/SEV also require CPUIDs higher than 0x80000008). +*/ +return boot_cpu_data.x86_phys_bits; }static void kvm_mmu_reset_all_pte_masks (void )
Sasha Levin
maintainerQuoted 17 lines · On Sun, Feb 09, 2020 at 01:31:10PM +0100, [email protected] wrote:
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
7adacf5eb2d2048045d9fd8fdab861fd9e7e2e96Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Wed, 4 Dec 2019 15:50:27 +0100
Subject: [PATCH] KVM: x86: use CPUID to locate host page table reserved bits
Quoted 7 lines
The comment in
kvm_get_shadow_phys_bitsrefers to MKTME, but the same is actually true of SME and SEV. Just use CPUID[0x8000_0008].EAX[7:0] unconditionally if available, it is simplest and works even if memory is not encrypted.Reported-by Tom Lendacky <[email protected]>Signed-off-by Paolo Bonzini <[email protected]>
For 5.4 it was just due to a file rename, I've fixed it and queued it up. 4.19 still needs a backport.
Signature · 2 lines
Thanks, Sasha
Sasha Levin
maintainerQuoted 17 lines · On Sun, Feb 09, 2020 at 01:31:10PM +0100, [email protected] wrote:
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
7adacf5eb2d2048045d9fd8fdab861fd9e7e2e96Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Wed, 4 Dec 2019 15:50:27 +0100
Subject: [PATCH] KVM: x86: use CPUID to locate host page table reserved bits
Quoted 7 lines
The comment in
kvm_get_shadow_phys_bitsrefers to MKTME, but the same is actually true of SME and SEV. Just use CPUID[0x8000_0008].EAX[7:0] unconditionally if available, it is simplest and works even if memory is not encrypted.Reported-by Tom Lendacky <[email protected]>Signed-off-by Paolo Bonzini <[email protected]>
I've fixed it up and queued for 5.4 and 4.19.
Signature · 2 lines
Thanks, Sasha