diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c index 4d6826a76f78..f105214e36a3 100644 --- a/arch/x86/virt/vmx/tdx/tdx.c +++ b/arch/x86/virt/vmx/tdx/tdx.c @@ -1097,6 +1097,27 @@ static int init_tdmrs(struct tdmr_info_list *tdmr_list) return 0; } +static void print_tdx_version(void) +{ + u64 major, minor, internal; + int ret; + + ret = read_sys_metadata_field(MD_FIELD_ID_MAJOR_VERSION, &major); + if (ret) + return; + + ret = read_sys_metadata_field(MD_FIELD_ID_MINOR_VERSION, &minor); + if (ret) + return; + + ret = read_sys_metadata_field(MD_FIELD_ID_INTERNAL_VERSION, &internal); + if (ret) + return; + + pr_info("module verson: major %u, minor %u, internal %u\n", + (u16)major, (u16)minor, (u16)internal); +} + static int init_tdx_module(void) { struct tdx_tdmr_sysinfo tdmr_sysinfo; @@ -1155,6 +1176,9 @@ static int init_tdx_module(void) * Lock out memory hotplug code while building it. */ put_online_mems(); + + print_tdx_version(); + return ret; err_reset_pamts: diff --git a/arch/x86/virt/vmx/tdx/tdx.h b/arch/x86/virt/vmx/tdx/tdx.h index b701f69485d3..ae8a96e0f53c 100644 --- a/arch/x86/virt/vmx/tdx/tdx.h +++ b/arch/x86/virt/vmx/tdx/tdx.h @@ -37,6 +37,10 @@ #define MD_FIELD_ID_PAMT_2M_ENTRY_SIZE 0x9100000100000011ULL #define MD_FIELD_ID_PAMT_1G_ENTRY_SIZE 0x9100000100000012ULL +#define MD_FIELD_ID_MINOR_VERSION 0x0800000100000003ULL +#define MD_FIELD_ID_MAJOR_VERSION 0x0800000100000004ULL +#define MD_FIELD_ID_INTERNAL_VERSION 0x0800000100000006ULL + /* * Sub-field definition of metadata field ID. *