diff mbox series

[SRU,K,2/6] Revert "UBUNTU: SAUCE: x86/tdx: Add TDX Guest attestation interface driver"

Message ID 20230306092058.26718-3-andrea.righi@canonical.com
State New
Headers show
Series new TDX attestation driver from Intel | expand

Commit Message

Andrea Righi March 6, 2023, 9:20 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/2009437

This reverts commit the following commit, that will be replaced by a new
TDX patch set:

 285d6d8136eb ("UBUNTU: SAUCE: x86/tdx: Add TDX Guest attestation interface driver")

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
---
 arch/x86/coco/tdx/tdx.c         | 117 --------------------------------
 arch/x86/include/uapi/asm/tdx.h |  51 --------------
 2 files changed, 168 deletions(-)
 delete mode 100644 arch/x86/include/uapi/asm/tdx.h
diff mbox series

Patch

diff --git a/arch/x86/coco/tdx/tdx.c b/arch/x86/coco/tdx/tdx.c
index d8be693cb3a2..b8998cf0508a 100644
--- a/arch/x86/coco/tdx/tdx.c
+++ b/arch/x86/coco/tdx/tdx.c
@@ -5,21 +5,16 @@ 
 #define pr_fmt(fmt)     "tdx: " fmt
 
 #include <linux/cpufeature.h>
-#include <linux/miscdevice.h>
-#include <linux/mm.h>
-#include <linux/io.h>
 #include <asm/coco.h>
 #include <asm/tdx.h>
 #include <asm/vmx.h>
 #include <asm/insn.h>
 #include <asm/insn-eval.h>
 #include <asm/pgtable.h>
-#include <uapi/asm/tdx.h>
 
 /* TDX module Call Leaf IDs */
 #define TDX_GET_INFO			1
 #define TDX_GET_VEINFO			3
-#define TDX_GET_REPORT			4
 #define TDX_ACCEPT_PAGE			6
 
 /* TDX hypercall Leaf IDs */
@@ -39,10 +34,6 @@ 
 #define VE_GET_PORT_NUM(e)	((e) >> 16)
 #define VE_IS_IO_STRING(e)	((e) & BIT(4))
 
-#define DRIVER_NAME	"tdx-guest"
-
-static struct miscdevice tdx_misc_dev;
-
 #define ATTR_SEPT_VE_DISABLE	BIT(28)
 
 /*
@@ -795,111 +786,3 @@  void __init tdx_early_init(void)
 
 	pr_info("Guest detected\n");
 }
-
-static long tdx_get_report(void __user *argp)
-{
-	u8 *reportdata = NULL, *tdreport = NULL;
-	struct tdx_report_req req;
-	long ret;
-
-	/* Copy request struct from the user buffer */
-	if (copy_from_user(&req, argp, sizeof(req)))
-		return -EFAULT;
-
-	/*
-	 * Per TDX Module 1.0 specification, section titled
-	 * "TDG.MR.REPORT", REPORTDATA and TDREPORT length
-	 * is fixed as TDX_REPORTDATA_LEN and TDX_REPORT_LEN.
-	 */
-	if (req.rpd_len != TDX_REPORTDATA_LEN || req.tdr_len != TDX_REPORT_LEN)
-		return -EINVAL;
-
-	/* Allocate kernel buffers for REPORTDATA and TDREPORT */
-	reportdata = kzalloc(req.rpd_len, GFP_KERNEL);
-	if (!reportdata) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	tdreport = kzalloc(req.tdr_len, GFP_KERNEL);
-	if (!tdreport) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-
-	/* Copy REPORTDATA from user to kernel buffer */
-	if (copy_from_user(reportdata, (void *)req.reportdata, req.rpd_len)) {
-		ret = -EFAULT;
-		goto out;
-	}
-
-	/*
-	 * 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.
-	 */
-	ret = __tdx_module_call(TDX_GET_REPORT, virt_to_phys(tdreport),
-				virt_to_phys(reportdata), req.subtype,
-				0, NULL);
-	if (ret) {
-		ret = -EIO;
-		goto out;
-	}
-
-	/* Copy TDREPORT data back to the user buffer */
-	if (copy_to_user((void *)req.tdreport, tdreport, req.tdr_len))
-		ret = -EFAULT;
-
-out:
-	kfree(reportdata);
-	kfree(tdreport);
-	return ret;
-}
-static long tdx_guest_ioctl(struct file *file, unsigned int cmd,
-			    unsigned long arg)
-{
-	void __user *argp = (void __user *)arg;
-	long ret = -EINVAL;
-
-	switch (cmd) {
-	case TDX_CMD_GET_REPORT:
-		ret = tdx_get_report(argp);
-		break;
-	default:
-		pr_debug("cmd %d not supported\n", cmd);
-		break;
-	}
-
-	return ret;
-}
-
-static const struct file_operations tdx_guest_fops = {
-	.owner		= THIS_MODULE,
-	.unlocked_ioctl	= tdx_guest_ioctl,
-	.llseek		= no_llseek,
-};
-
-static int __init tdx_guest_init(void)
-{
-	int ret;
-
-	/* Make sure we are in a valid TDX platform */
-	if (!cpu_feature_enabled(X86_FEATURE_TDX_GUEST))
-		return -EIO;
-
-	tdx_misc_dev.name = DRIVER_NAME;
-	tdx_misc_dev.minor = MISC_DYNAMIC_MINOR;
-	tdx_misc_dev.fops = &tdx_guest_fops;
-
-	ret = misc_register(&tdx_misc_dev);
-	if (ret) {
-		pr_err("misc device registration failed\n");
-		return ret;
-	}
-
-	return 0;
-}
-device_initcall(tdx_guest_init)
diff --git a/arch/x86/include/uapi/asm/tdx.h b/arch/x86/include/uapi/asm/tdx.h
deleted file mode 100644
index c1667b20fe20..000000000000
--- a/arch/x86/include/uapi/asm/tdx.h
+++ /dev/null
@@ -1,51 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _UAPI_ASM_X86_TDX_H
-#define _UAPI_ASM_X86_TDX_H
-
-#include <linux/types.h>
-#include <linux/ioctl.h>
-
-/* Length of the REPORTDATA used in TDG.MR.REPORT TDCALL */
-#define TDX_REPORTDATA_LEN              64
-
-/* Length of TDREPORT used in TDG.MR.REPORT TDCALL */
-#define TDX_REPORT_LEN                  1024
-
-/**
- * struct tdx_report_req: Get TDREPORT using REPORTDATA as input.
- *
- * @subtype        : Subtype of TDREPORT (fixed as 0 by TDX Module
- *                   specification, but added a parameter to handle
- *                   future extension).
- * @reportdata     : User-defined REPORTDATA to be included into
- *                   TDREPORT. Typically it can be some nonce
- *                   provided by attestation service, so the
- *                   generated TDREPORT can be uniquely verified.
- * @rpd_len        : Length of the REPORTDATA (fixed as 64 bytes by
- *                   the TDX Module specification, but parameter is
- *                   added to handle future extension).
- * @tdreport       : TDREPORT output from TDCALL[TDG.MR.REPORT].
- * @tdr_len        : Length of the TDREPORT (fixed as 1024 bytes by
- *                   the TDX Module specification, but a parameter
- *                   is added to accommodate future extension).
- *
- * Used in TDX_CMD_GET_REPORT IOCTL request.
- */
-struct tdx_report_req {
-	__u8  subtype;
-	__u64 reportdata;
-	__u32 rpd_len;
-	__u64 tdreport;
-	__u32 tdr_len;
-};
-
-/*
- * TDX_CMD_GET_REPORT - Get TDREPORT using TDCALL[TDG.MR.REPORT]
- *
- * Return 0 on success, -EIO on TDCALL execution failure, and
- * standard errno on other general error cases.
- *
- */
-#define TDX_CMD_GET_REPORT		_IOWR('T', 0x01, __u64)
-
-#endif /* _UAPI_ASM_X86_TDX_H */