From 9aae51ad1141a47d5c2f7133b02f5f0ab6168860 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 22 Mar 2018 13:57:10 -0500 Subject: soc/intel/common/block: add VMX support Enable VMX if supported by CPU and enabled in board devicetree. Check lock bit unset before enabling VMX. Change-Id: Ic57eac45e9c65baa4479735c6d70a7eb685f080e Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/25331 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- .../intel/common/block/include/intelblocks/msr.h | 1 + .../intel/common/block/include/intelblocks/vmx.h | 30 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/soc/intel/common/block/include/intelblocks/vmx.h (limited to 'src/soc/intel/common/block/include/intelblocks') diff --git a/src/soc/intel/common/block/include/intelblocks/msr.h b/src/soc/intel/common/block/include/intelblocks/msr.h index 7aa81f09ea..22e8862e98 100644 --- a/src/soc/intel/common/block/include/intelblocks/msr.h +++ b/src/soc/intel/common/block/include/intelblocks/msr.h @@ -19,6 +19,7 @@ #define MSR_CORE_THREAD_COUNT 0x35 #define IA32_FEATURE_CONTROL 0x3a #define FEATURE_CONTROL_LOCK (1) +#define FEATURE_ENABLE_VMX (1 << 2) #define CPUID_VMX (1 << 5) #define CPUID_SMX (1 << 6) #define SGX_GLOBAL_ENABLE (1 << 18) diff --git a/src/soc/intel/common/block/include/intelblocks/vmx.h b/src/soc/intel/common/block/include/intelblocks/vmx.h new file mode 100644 index 0000000000..1f6d33656e --- /dev/null +++ b/src/soc/intel/common/block/include/intelblocks/vmx.h @@ -0,0 +1,30 @@ +/* + * This file is part of the coreboot project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef SOC_INTEL_COMMON_BLOCK_VMX_H +#define SOC_INTEL_COMMON_BLOCK_VMX_H + +struct vmx_param { + uint8_t enable; +}; + +/* + * Configure VMX. + */ +void vmx_configure(void); + +/* SOC specific API to get VMX params. + * returns 0, if able to get VMX params; otherwise returns -1 */ +int soc_fill_vmx_param(struct vmx_param *vmx_param); + +#endif /* SOC_INTEL_COMMON_BLOCK_VMX_H */ -- cgit v1.2.3