[PATCH 6/6] x86: Restrict KVM-induced symbol exports to KVM modules where obvious/possible

Huang, Kai kai.huang at intel.com
Wed Jul 30 12:14:14 AEST 2025


On Tue, 2025-07-29 at 10:42 -0700, Sean Christopherson wrote:
> Extend KVM's export macro framework to provide EXPORT_SYMBOL_GPL_FOR_KVM(),
> and use the helper macro to export symbols for KVM throughout x86 if and
> only if KVM will build one or more modules, and only for those modules.
> 
> To avoid unnecessary exports when CONFIG_KVM=m but kvm.ko will not be
> built (because no vendor modules are selected), let arch code #define
> EXPORT_SYMBOL_GPL_FOR_KVM to suppress/override the exports.
> 
> Note, the set of symbols to restrict to KVM was generated by manual search
> and audit; any "misses" are due to human error, not some grand plan.
> 
> Signed-off-by: Sean Christopherson <seanjc at google.com>
> ---

[...]

>  arch/x86/kernel/cpu/sgx/main.c     |  3 +-
>  arch/x86/kernel/cpu/sgx/virt.c     |  5 ++-
> 

[...]

>  arch/x86/virt/vmx/tdx/tdx.c        | 65 +++++++++++++++---------------
>  include/linux/kvm_types.h          | 14 +++++++
>  31 files changed, 140 insertions(+), 101 deletions(-)
> 

[...]

> 
> --- a/include/linux/kvm_types.h
> +++ b/include/linux/kvm_types.h
> @@ -11,8 +11,22 @@
>  #ifdef KVM_SUB_MODULES
>  #define EXPORT_SYMBOL_GPL_FOR_KVM_INTERNAL(symbol) \
>  	EXPORT_SYMBOL_GPL_FOR_MODULES(symbol, __stringify(KVM_SUB_MODULES))
> +#define EXPORT_SYMBOL_GPL_FOR_KVM(symbol) \
> +	EXPORT_SYMBOL_GPL_FOR_MODULES(symbol, "kvm," __stringify(KVM_SUB_MODULES))
> 

I was thinking to send out separate patches for SGX and TDX by just
changing to use EXPORT_SYMBOL_GPL_FOR_MODULES(.., "kvm,kvm-intel")
unconditionally, but yeah I agree having EXPORT_SYMBOL_GPL_FOR_KVM() and
only having the actual export when KVM sub module is enabled is better.

I tested that with this series I can still successfully create TDX and SGX
guests, so for TDX and SGX bits:

Acked-by: Kai Huang <kai.huang at intel.com>
Tested-by: Kai Huang <kai.huang at intel.com>


More information about the Linuxppc-dev mailing list