virt: Add TDX guest driver
authorKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Wed, 16 Nov 2022 22:38:19 +0000 (14:38 -0800)
committerDave Hansen <dave.hansen@linux.intel.com>
Thu, 17 Nov 2022 19:04:23 +0000 (11:04 -0800)
commit6c8c1406a6d6a3f2e61ac590f5c0994231bc6be7
treead14b7d721bababb8e11439738c8d4ef6e1b17f5
parent51acfe89af1118f906f9b68d95fdfb22832ac960
virt: Add TDX guest driver

TDX guest driver exposes IOCTL interfaces to service TDX guest
user-specific requests. Currently, it is only used to allow the user to
get the TDREPORT to support TDX attestation.

Details about the TDX attestation process are documented in
Documentation/x86/tdx.rst, and the IOCTL details are documented in
Documentation/virt/coco/tdx-guest.rst.

Operations like getting TDREPORT involves sending a blob of data as
input and getting another blob of data as output. It was considered
to use a sysfs interface for this, but it doesn't fit well into the
standard sysfs model for configuring values. It would be possible to
do read/write on files, but it would need multiple file descriptors,
which would be somewhat messy. IOCTLs seem to be the best fitting
and simplest model for this use case. The AMD sev-guest driver also
uses the IOCTL interface to support attestation.

[Bagas Sanjaya: Ack is for documentation portion]
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Kai Huang <kai.huang@intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Wander Lairson Costa <wander@redhat.com>
Link: https://lore.kernel.org/all/20221116223820.819090-3-sathyanarayanan.kuppuswamy%40linux.intel.com
Documentation/virt/coco/tdx-guest.rst [new file with mode: 0644]
Documentation/virt/index.rst
Documentation/x86/tdx.rst
drivers/virt/Kconfig
drivers/virt/Makefile
drivers/virt/coco/tdx-guest/Kconfig [new file with mode: 0644]
drivers/virt/coco/tdx-guest/Makefile [new file with mode: 0644]
drivers/virt/coco/tdx-guest/tdx-guest.c [new file with mode: 0644]
include/uapi/linux/tdx-guest.h [new file with mode: 0644]