mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 13:27:57 +02:00
KVM SVM changes for 6.14:
- Macrofy the SEV=n version of the sev_xxx_guest() helpers so that the code is
optimized away when building with less than brilliant compilers.
- Remove a now-redundant TLB flush when guest CR4.PGE changes.
- Use str_enabled_disabled() to replace open coded strings.
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEKTobbabEP7vbhhN9OlYIJqCjN/0FAmeJoesACgkQOlYIJqCj
N/1FuQ//bKhTrPVvMhCZB7cxS7wcpb82LA15Gc73hXBTjsik896O6fAN0MyvYWvp
eLmvhRWloVspIAkLj4pYF7PB6Tl0VAtpGOIdZp9TXOkbGcWg7jFFBrF3Udr2kDig
3YyinqGhwPN6oSkrJMGuk79EKhuRVGcb7utE/T8MCV5ct9kayQAogGYMLwfnpYvX
02SRYj++PUz5rk/gVUA2RA/EFSe57JE2VrzQlT34ttqqMZ2JKtysl5ytONGpEW/u
ZJQ4naztY+vRCLHm+n8ZWE5TCQ3ZZVR5WVcnMqx1MQQEVSZJT5SxveLGVu9tVV4c
Fv5fTvxa6iKfsUYl4o6tX1E0s388mwEast6uY40q4GysgkpsRRQR1KOLMGTQTMiz
7hagYbc9gGY3Pr6pn1+qf3hgVogcDX0wnQlFe6PYkHiMc7woIhUCGJ3LND7Y11O+
cPnbdK+0ZZhsOzYQ6SGeXIv326wvZacqKzXkkWt9pf8abbwaUXVqjYe+Y0yEHsuJ
e1gPnTdtzzim3Jq5qDRhPEHthHLm+na4O+6vjYlFVoUN4XnbNGhVzUJvQX70WX8a
6vrQ6gM768dwkyzdpRAGuWv+OWXHBe8UYKp4HQKpWGjRcKiwcXWDwQeIbfE7JkS+
L/Ck0oQ72sWoBoH4noM/5ehVB4ZY/bEp+GbVbd/ny6nDP1fmApM=
=MhtD
-----END PGP SIGNATURE-----
Merge tag 'kvm-x86-svm-6.14' of https://github.com/kvm-x86/linux into HEAD
KVM SVM changes for 6.14:
- Macrofy the SEV=n version of the sev_xxx_guest() helpers so that the code is
optimized away when building with less than brilliant compilers.
- Remove a now-redundant TLB flush when guest CR4.PGE changes.
- Use str_enabled_disabled() to replace open coded strings.
This commit is contained in:
commit
672162a0d3
|
|
@ -3051,11 +3051,11 @@ void __init sev_hardware_setup(void)
|
|||
min_sev_asid, max_sev_asid);
|
||||
if (boot_cpu_has(X86_FEATURE_SEV_ES))
|
||||
pr_info("SEV-ES %s (ASIDs %u - %u)\n",
|
||||
sev_es_supported ? "enabled" : "disabled",
|
||||
str_enabled_disabled(sev_es_supported),
|
||||
min_sev_asid > 1 ? 1 : 0, min_sev_asid - 1);
|
||||
if (boot_cpu_has(X86_FEATURE_SEV_SNP))
|
||||
pr_info("SEV-SNP %s (ASIDs %u - %u)\n",
|
||||
sev_snp_supported ? "enabled" : "disabled",
|
||||
str_enabled_disabled(sev_snp_supported),
|
||||
min_sev_asid > 1 ? 1 : 0, min_sev_asid - 1);
|
||||
|
||||
sev_enabled = sev_supported;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/rwsem.h>
|
||||
#include <linux/cc_platform.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/string_choices.h>
|
||||
|
||||
#include <asm/apic.h>
|
||||
#include <asm/perf_event.h>
|
||||
|
|
@ -284,8 +285,6 @@ u32 svm_msrpm_offset(u32 msr)
|
|||
return MSR_INVALID;
|
||||
}
|
||||
|
||||
static void svm_flush_tlb_current(struct kvm_vcpu *vcpu);
|
||||
|
||||
static int get_npt_level(void)
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
|
|
@ -1921,9 +1920,6 @@ void svm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
|
|||
unsigned long host_cr4_mce = cr4_read_shadow() & X86_CR4_MCE;
|
||||
unsigned long old_cr4 = vcpu->arch.cr4;
|
||||
|
||||
if (npt_enabled && ((old_cr4 ^ cr4) & X86_CR4_PGE))
|
||||
svm_flush_tlb_current(vcpu);
|
||||
|
||||
vcpu->arch.cr4 = cr4;
|
||||
if (!npt_enabled) {
|
||||
cr4 |= X86_CR4_PAE;
|
||||
|
|
@ -5328,7 +5324,7 @@ static __init int svm_hardware_setup(void)
|
|||
/* Force VM NPT level equal to the host's paging level */
|
||||
kvm_configure_mmu(npt_enabled, get_npt_level(),
|
||||
get_npt_level(), PG_LEVEL_1G);
|
||||
pr_info("Nested Paging %sabled\n", npt_enabled ? "en" : "dis");
|
||||
pr_info("Nested Paging %s\n", str_enabled_disabled(npt_enabled));
|
||||
|
||||
/* Setup shadow_me_value and shadow_me_mask */
|
||||
kvm_mmu_set_me_spte_mask(sme_me_mask, sme_me_mask);
|
||||
|
|
|
|||
|
|
@ -358,39 +358,32 @@ static __always_inline struct kvm_sev_info *to_kvm_sev_info(struct kvm *kvm)
|
|||
return &to_kvm_svm(kvm)->sev_info;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KVM_AMD_SEV
|
||||
static __always_inline bool sev_guest(struct kvm *kvm)
|
||||
{
|
||||
#ifdef CONFIG_KVM_AMD_SEV
|
||||
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
|
||||
|
||||
return sev->active;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static __always_inline bool sev_es_guest(struct kvm *kvm)
|
||||
{
|
||||
#ifdef CONFIG_KVM_AMD_SEV
|
||||
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
|
||||
|
||||
return sev->es_active && !WARN_ON_ONCE(!sev->active);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static __always_inline bool sev_snp_guest(struct kvm *kvm)
|
||||
{
|
||||
#ifdef CONFIG_KVM_AMD_SEV
|
||||
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
|
||||
|
||||
return (sev->vmsa_features & SVM_SEV_FEAT_SNP_ACTIVE) &&
|
||||
!WARN_ON_ONCE(!sev_es_guest(kvm));
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#define sev_guest(kvm) false
|
||||
#define sev_es_guest(kvm) false
|
||||
#define sev_snp_guest(kvm) false
|
||||
#endif
|
||||
|
||||
static inline bool ghcb_gpa_is_registered(struct vcpu_svm *svm, u64 val)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user