From patchwork Thu Oct 20 04:58:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuppuswamy Sathyanarayanan X-Patchwork-Id: 393 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp65409wrs; Wed, 19 Oct 2022 22:00:22 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7iBe9JCVB+7XIkkih4CiyGp6tnIy5VYp3yBOwaSTG4oqi+D/3w/VgUjqAgzKRbJbkDNWz2 X-Received: by 2002:a17:90a:c388:b0:20a:db9d:8337 with SMTP id h8-20020a17090ac38800b0020adb9d8337mr13564746pjt.61.1666242022379; Wed, 19 Oct 2022 22:00:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666242022; cv=none; d=google.com; s=arc-20160816; b=Aj6gBa5BXVz689/+HPrFBedEn2nRESNL30r1CVqObQ/zuYm8dzVQzh7Ykq7D8XQC6l 1zsLl6DUZ9L9roa6cWiAu5K4WdcLEHHqveunuayKoXfsFRHhN7fG3z/22qNUlQVNVyDD ZLgedMM4tBmeBaeP+33qlADeu+wTzOrdrRDPhuuJ7gZpx/A8WGmImzdcZrwefzxVrEt4 MhToYfotebI4VzBcn2efQoD6VZOmn+OPgenMO62eFEEdJvFvAXib5QSFMkiYkG7J5aVE dnU5kUXsB27nbdWhuB8/iYaqgfcfdlxWqK8J1cUAgbPLhhXS+yFIF8In05lEkQTf7gqF 5xNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=2ip6crueYWwQfRX08GLcGvwf/8HMt/9H6+cSJcFoi+w=; b=YAOGEjRZB5yPJnsroQODQQTnLqWYAgFSzcSg9FTTDEAa4foe/82aOrRF40H2Bhbb0a xx+tMPxdkOmvUqbKxUNoQwbtFgIdeoHle1eQ30loYmpwj1GA9K0DJnW6DAnMZXqyGyk4 3BBEacC5OAF19am+ZH0qH3QmeweNwRfMkAGVXu1ESojQZLfvrny0Mx4DExaDAGkcjshr r/u6EEvZs3Ov2nqnnJi6OxlwVnpRIko6/r6TmWIpjZG9HJ4W+2nBc0nuCHt15eye6a0X o5elV2rssL8frDnmoXipcuG5SPvHc0giRz8MuGsUk27Bwi5nGbqmtpYOzC3FCH+G0q2X TQ0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=iZKnrB6M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e20-20020a056a001a9400b00562be402e14si21577389pfv.353.2022.10.19.22.00.05; Wed, 19 Oct 2022 22:00:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=iZKnrB6M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229664AbiJTE7k (ORCPT + 99 others); Thu, 20 Oct 2022 00:59:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229497AbiJTE7h (ORCPT ); Thu, 20 Oct 2022 00:59:37 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D462D186C0; Wed, 19 Oct 2022 21:59:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666241976; x=1697777976; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=ZeManeh8urWZwWabFCHDLXg+rU167WQjv7MnROaoT+c=; b=iZKnrB6Mzh4kRxAmhhdNmiO4mrkgsfbBHx3M2gxMvuErDEoWgkuNc9PB Y5HMaS7+aWNv2biveH5WB2PCnavgiSYkAXX5i7/g46KMF3ZHbLHEe0tib mNLYVzQXL4ewrXj17NiPzPdL0+lx5mWbASnlSOCSUGL69rIEJtFk2G0Bg Z2/NvyEu7z7VJgP9Kl7m1U7t+95eQwRLdNonunwvGe7+XmH5j2/nydEpC zT5VfFQk3HzPs6tIqHMzB6JA3Lcp2VvqLQuIqFs7bprXqy3wifFS4YAjy tqNVBBcNFTPcZA6zf58j3hKaIJDSYAQOCGmOrXuE2Bq4nKr64P3FKUUEM Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10505"; a="293997446" X-IronPort-AV: E=Sophos;i="5.95,198,1661842800"; d="scan'208";a="293997446" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2022 21:59:31 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10505"; a="660690252" X-IronPort-AV: E=Sophos;i="5.95,198,1661842800"; d="scan'208";a="660690252" Received: from srnaisha-mobl.amr.corp.intel.com (HELO skuppusw-desk1.amr.corp.intel.com) ([10.209.25.189]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2022 21:59:30 -0700 From: Kuppuswamy Sathyanarayanan To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Shuah Khan , Jonathan Corbet Cc: "H . Peter Anvin" , Greg Kroah-Hartman , Kuppuswamy Sathyanarayanan , "Kirill A . Shutemov" , Tony Luck , Kai Huang , Wander Lairson Costa , Isaku Yamahata , marcelo.cerri@canonical.com, tim.gardner@canonical.com, khalid.elmously@canonical.com, philip.cox@canonical.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org Subject: [PATCH v15 0/3]] Add TDX Guest Attestation support Date: Wed, 19 Oct 2022 21:58:25 -0700 Message-Id: <20221020045828.2354731-1-sathyanarayanan.kuppuswamy@linux.intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747181394711232821?= X-GMAIL-MSGID: =?utf-8?q?1747181394711232821?= Hi All, Intel's Trust Domain Extensions (TDX) protect guest VMs from malicious hosts and some physical attacks. VM guest with TDX support is called as a TDX Guest. In TDX guest, attestation process is used to verify the TDX guest trustworthiness to other entities before provisioning secrets to the guest. For example, a key server may request for attestation before releasing the encryption keys to mount the encrypted rootfs or secondary drive. This patch set adds attestation support for the TDX guest. Details about the TDX attestation process and the steps involved are explained in Documentation/x86/tdx.rst (added by patch 2/3). Following are the details of the patch set: Patch 1/3 -> Preparatory patch for adding attestation support. Patch 2/3 -> Adds user interface driver to support attestation. Patch 3/3 -> Adds selftest support for TDREPORT feature. Commit log history is maintained in the individual patches. Kuppuswamy Sathyanarayanan (3): x86/tdx: Add a wrapper to get TDREPORT from the TDX Module virt: Add TDX guest driver selftests: tdx: Test TDX attestation GetReport support Documentation/virt/coco/tdx-guest.rst | 42 +++++ Documentation/virt/index.rst | 1 + Documentation/x86/tdx.rst | 43 +++++ arch/x86/coco/tdx/tdx.c | 31 ++++ arch/x86/include/asm/tdx.h | 2 + drivers/virt/Kconfig | 2 + drivers/virt/Makefile | 1 + drivers/virt/coco/tdx-guest/Kconfig | 10 ++ drivers/virt/coco/tdx-guest/Makefile | 2 + drivers/virt/coco/tdx-guest/tdx-guest.c | 131 ++++++++++++++ include/uapi/linux/tdx-guest.h | 51 ++++++ tools/testing/selftests/Makefile | 1 + tools/testing/selftests/tdx/Makefile | 7 + tools/testing/selftests/tdx/config | 1 + tools/testing/selftests/tdx/tdx_guest_test.c | 175 +++++++++++++++++++ 15 files changed, 500 insertions(+) create mode 100644 Documentation/virt/coco/tdx-guest.rst create mode 100644 drivers/virt/coco/tdx-guest/Kconfig create mode 100644 drivers/virt/coco/tdx-guest/Makefile create mode 100644 drivers/virt/coco/tdx-guest/tdx-guest.c create mode 100644 include/uapi/linux/tdx-guest.h create mode 100644 tools/testing/selftests/tdx/Makefile create mode 100644 tools/testing/selftests/tdx/config create mode 100644 tools/testing/selftests/tdx/tdx_guest_test.c