On 15.05.24 г. 12:30 ч., Kirill A. Shutemov wrote:
On Tue, May 14, 2024 at 05:56:21PM +0300, Nikolay Borisov wrote:
diff --git a/arch/x86/coco/tdx/tdx.c b/arch/x86/coco/tdx/tdx.c
index 1ff571cb9177..ba37f4306f4e 100644
--- a/arch/x86/coco/tdx/tdx.c
+++ b/arch/x86/coco/tdx/tdx.c
@@ -77,6 +77,20 @@ static inline void tdcall(u64 fn, struct tdx_module_args *args)
panic("TDCALL %lld failed (Buggy TDX module!)\n", fn);
}
+/* Read TD-scoped metadata */
+static inline u64 tdg_vm_rd(u64 field, u64 *value)
+{
+ struct tdx_module_args args = {
+ .rdx = field,
+ };
+ u64 ret;
+
+ ret = __tdcall_ret(TDG_VM_RD, &args);
+ *value = args.r8;
+
+ return ret;
+}
nit: Perhaps this function can be put in the first patch and the description
there be made more generic, something along the lines of "introduce
functions for tdg_rd/tdg_wr" ?
A static function without an user will generate a build warning. I don't
think it is good idea.
But are those 2 wrappers really static-worthy? Those two interfaces seem
to be rather generic and could be used by more things in the future?
OTOH when the time comes they can be exposed as needed.
Anyway that could be considered a minor thing.