diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2018-10-09 12:35:29 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-10-09 12:38:42 -0400 |
commit | 853c110982eaff0d99dace3f66f1ba58b5bfd9d5 (patch) | |
tree | cb694c46802482ccc83ba2e37c7ba5e99969594c | |
parent | cc906f07d7d569a30bb6f0baf8f80b2968353dc9 (diff) |
KVM: x86: support CONFIG_KVM_AMD=y with CONFIG_CRYPTO_DEV_CCP_DD=m
SEV requires access to the AMD cryptographic device APIs, and this
does not work when KVM is builtin and the crypto driver is a module.
Actually the Kconfig conditions for CONFIG_KVM_AMD_SEV try to disable
SEV in that case, but it does not work because the actual crypto
calls are not culled, only sev_hardware_setup() is.
This patch adds two CONFIG_KVM_AMD_SEV checks that gate all the remaining
SEV code; it fixes this particular configuration, and drops 5 KiB of
code when CONFIG_KVM_AMD_SEV=n.
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | arch/x86/kvm/svm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index d96092b35936..61ccfb13899e 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -436,14 +436,18 @@ static inline struct kvm_svm *to_kvm_svm(struct kvm *kvm) | |||
436 | 436 | ||
437 | static inline bool svm_sev_enabled(void) | 437 | static inline bool svm_sev_enabled(void) |
438 | { | 438 | { |
439 | return max_sev_asid; | 439 | return IS_ENABLED(CONFIG_KVM_AMD_SEV) ? max_sev_asid : 0; |
440 | } | 440 | } |
441 | 441 | ||
442 | static inline bool sev_guest(struct kvm *kvm) | 442 | static inline bool sev_guest(struct kvm *kvm) |
443 | { | 443 | { |
444 | #ifdef CONFIG_KVM_AMD_SEV | ||
444 | struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; | 445 | struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; |
445 | 446 | ||
446 | return sev->active; | 447 | return sev->active; |
448 | #else | ||
449 | return false; | ||
450 | #endif | ||
447 | } | 451 | } |
448 | 452 | ||
449 | static inline int sev_get_asid(struct kvm *kvm) | 453 | static inline int sev_get_asid(struct kvm *kvm) |