On 10/12/22 7:27 AM, Borislav Petkov wrote: > On Wed, Oct 12, 2022 at 06:35:56AM -0700, Sathyanarayanan Kuppuswamy wrote: >> So we should create a new wrapper for this use case or use > > Yes, you got it - a new wrapper pls. Ok. I will add a new wrapper to get the TDREPORT. +/* + * Add a wrapper for TDG.MR.REPORT TDCALL. It is used in TDX guest + * driver module to get the TDREPORT. + */ +long tdx_mcall_get_report(void *reportdata, void *tdreport, u8 subtype) +{ + if (subtype || !reportdata || !tdreport) + return -EINVAL; + + /* + * Generate TDREPORT using "TDG.MR.REPORT" TDCALL. + * + * Get the TDREPORT using REPORTDATA as input. Refer to + * section 22.3.3 TDG.MR.REPORT leaf in the TDX Module 1.0 + * specification for detailed information. + */ + return __tdx_module_call(TDX_GET_REPORT, virt_to_phys(tdreport), + virt_to_phys(reportdata), subtype, 0, NULL); +} +EXPORT_SYMBOL_GPL(tdx_mcall_get_report); > > Thx. > -- Sathyanarayanan Kuppuswamy Linux Kernel Developer