x86/virt/tdx: Make TDX host depend on X86_MCE
authorKai Huang <kai.huang@intel.com>
Wed, 13 Dec 2023 22:28:25 +0000 (11:28 +1300)
committerDave Hansen <dave.hansen@linux.intel.com>
Thu, 14 Dec 2023 22:08:24 +0000 (14:08 -0800)
A build failure was reported that when INTEL_TDX_HOST is enabled but
X86_MCE is not, the tdx_dump_mce_info() function fails to link:

  ld: vmlinux.o: in function `tdx_dump_mce_info':
  ...: undefined reference to `mce_is_memory_error'
  ...: undefined reference to `mce_usable_address'

The reason is in such configuration, despite there's no caller of
tdx_dump_mce_info() it is still built and there's no implementation for
the two "mce_*()" functions.

Make INTEL_TDX_HOST depend on X86_MCE to fix.

It makes sense to enable MCE support for the TDX host anyway.  Because
the only way that TDX has to report integrity errors is an MCE, and it
is not good to silently ignore such MCE.  The TDX spec also suggests
the host VMM is expected to implement the MCE handler.

Note it also makes sense to make INTEL_TDX_HOST select X86_MCE but this
generates "recursive dependency detected!" error in the Kconfig.

Closes: https://lore.kernel.org/all/20231212214612.GHZXjUpBFa1IwVMTI7@fat_crate.local/T/
Fixes: 70060463cb2b ("x86/mce: Differentiate real hardware #MCs from TDX erratum ones")
Reported-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Kai Huang <kai.huang@intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: https://lore.kernel.org/all/20231212214612.GHZXjUpBFa1IwVMTI7@fat_crate.local/T/#m1a109c29324b2bbd0b3b1d45c218012cd3a13be6
Link: https://lore.kernel.org/all/20231213222825.286809-1-kai.huang%40intel.com
arch/x86/Kconfig

index 01cdb16acff6e6b0a0606652029026066c1768b2..92c03cb99b3e63c1d465cb9a9625f42b2c9e1797 100644 (file)
@@ -1974,6 +1974,7 @@ config INTEL_TDX_HOST
        select ARCH_KEEP_MEMBLOCK
        depends on CONTIG_ALLOC
        depends on !KEXEC_CORE
+       depends on X86_MCE
        help
          Intel Trust Domain Extensions (TDX) protects guest VMs from malicious
          host and certain physical attacks.  This option enables necessary TDX