Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp4908876rdb; Tue, 12 Dec 2023 12:47:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IE2yIxPtIGNyWzO/Culn3zn/oKDMoDH+UsPTL6ZNdyKyYWOdpXQKopOv8wTKmiZ24VZJL7U X-Received: by 2002:a05:6e02:1906:b0:35d:5995:1d6d with SMTP id w6-20020a056e02190600b0035d59951d6dmr12253839ilu.50.1702414033794; Tue, 12 Dec 2023 12:47:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702414033; cv=none; d=google.com; s=arc-20160816; b=nhLIrLL6SSU+oLi0AbDar9tT+zQz5w15Ld5QXnkRl/q7D3zKMah52xCbxW6IFQHkxW H8lEvnSaS/hSHjnYHm+0ZCtnjhFm7HUseNa6iYV0fg+xPEA/nTRoY6fJjBbqzt6hE0qV 2FopOOcRVDeV07yCGsdLn0nuwYvYzcTmdvLu1NpIj7WOIqA5X3WzRLFszmjzq/J6pPGh S1hZNWZXvOCiRK7ZMXTU5dRkUMXJH/qDSA498AcoyEy0zRry4K28gAsxnjrVqT7Wffoi NXPvhxgWV2eIyp2mVDjTW0Sm8BZkTlrOyPK0zRieHTtXZ7vGYifabACvF/gn3NQ5Xmo2 I7ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:from:subject :message-id:mime-version:date:dkim-signature; bh=/7dr6LesSd6J0D4aMekJuWGTOXlB00/XOYyVR4kkX9o=; fh=Y5ua58y+ybdOPwRkMynUdu+Hv1LrozBumh8skcuOhBI=; b=ks0Fec9dMHrFZl/Yte8PXyD8X8fO1D9vwygBmzi/LCkaQKFWjYJrtZzu89RRbtz4bF 9TPkm/oAMJp1HrxzzseZvkt5It02j5S0OZw50Red7yMUTYQvwTK44WrAbP4n/wScP3TW 2afeHiWIOiGaOWRPUPB7N4n5GcFgk6/yKw2Qfk3F1rRw108bGjfvdDkvgVA+8oHLUMsG V6doLDEwC7KxblMNhrqGIYptlHBeu+44HKgju6deXs6e+5i91gbW+zLnh1Ur5Mo7PHYy cHs+2zz7d8rnuSwXAqSyQcFq4ROpTVhpHmAOOJf7L0MRPpkryIvs4a2VlUR3ga28F2dD 03Ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=RUrb8xMm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id k125-20020a632483000000b005c677007fa1si8157376pgk.447.2023.12.12.12.47.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 12:47:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=RUrb8xMm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id D50EE80F9BF6; Tue, 12 Dec 2023 12:47:09 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231358AbjLLUqx (ORCPT + 99 others); Tue, 12 Dec 2023 15:46:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229800AbjLLUqw (ORCPT ); Tue, 12 Dec 2023 15:46:52 -0500 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 839AB9B for ; Tue, 12 Dec 2023 12:46:58 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1d33751a322so5234695ad.3 for ; Tue, 12 Dec 2023 12:46:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702414018; x=1703018818; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:from:to:cc:subject:date:message-id:reply-to; bh=/7dr6LesSd6J0D4aMekJuWGTOXlB00/XOYyVR4kkX9o=; b=RUrb8xMmqcPxye6zfPKW+fyjdevULWJOJh0EPAET8OZ4N5Yy9ue9Kg+cJe3Y7mdeAR cDHOfiF6EH9MJTazfHljZpeNQHeefuGQ6Z4gU61zKjPBbmv2LTfmeXjmzneectoz7Mn0 zywgfbpgYwa69CArIgYtIl1AjQRpRuICAk/CVqBQ6zU1oMy7oSvNNtj1AjA8ITntEpYw HTeQqEIGJOdj8k9PlMaQPWai7yb6c8APZwl95b0Il9NIfw9EgrJ7Pp2VOMBJyrAEzG4T 07msYqaxuPe4gmiK2n+g8VbYSxV8S0OGvF/v1Vt4QTmBIodmW1ML1dPybkP8Qnre6B/X HHAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702414018; x=1703018818; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/7dr6LesSd6J0D4aMekJuWGTOXlB00/XOYyVR4kkX9o=; b=pL+/X8bymU/dTplJNKx3AeZCfm7Lm4KJN4hVMp3HOnIPHMh8H4d2Aj3mN7iV7BfYJm 5pQNcBswCHoiZZCfUzU93BPqzPWKTn6yricXw4AcBAOkfppvPMnVdcQ+wc4VL9Xbs3Hq 31ECyEZpnEcLMatHjwWDzxn9e1w01SahfdIvC39y7h5OfcrOV6wAP7NeZX7jtXIQ0PvH C3/5VbqRinWk23FB1TSLIjY7/9K4aFVyXYUpgf2tF+wBC94MruOxUrqSlBunEymu/++r rF0irwkdGRNcRvC9X72sDIlDbt7YF3uo6bUgum3kzjWZ1wVlj336CHeGvOsodzpZ4eSa +qsg== X-Gm-Message-State: AOJu0YyjsegbQnujiUVHsKhAcB0qWsjhcAzOYKcvcU6zJjWqO3K3p7Aq tFknsi7yIFHbW4dFsyksOfYiliaqcg== X-Received: from sagi.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:241b]) (user=sagis job=sendgmr) by 2002:a17:903:32c8:b0:1d0:902c:e834 with SMTP id i8-20020a17090332c800b001d0902ce834mr53461plr.12.1702414017857; Tue, 12 Dec 2023 12:46:57 -0800 (PST) Date: Tue, 12 Dec 2023 12:46:15 -0800 Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20231212204647.2170650-1-sagis@google.com> Subject: [RFC PATCH v5 00/29] TDX KVM selftests From: Sagi Shahar To: linux-kselftest@vger.kernel.org, Ackerley Tng , Ryan Afranji , Erdem Aktas , Sagi Shahar , Isaku Yamahata Cc: Sean Christopherson , Paolo Bonzini , Shuah Khan , Peter Gonda , Haibo Xu , Chao Peng , Vishal Annapurve , Roger Wang , Vipin Sharma , jmattson@google.com, dmatlack@google.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 12 Dec 2023 12:47:10 -0800 (PST) Hello, This is v4 of the patch series for TDX selftests. It has been updated for Intel=E2=80=99s v17 of the TDX host patches which w= as proposed here: https://lore.kernel.org/all/cover.1699368322.git.isaku.yamahata@intel.com/ The tree can be found at: https://github.com/googleprodkernel/linux-cc/tree/tdx-selftests-rfc-v5 Changes from RFC v4: Added patch to propagate KVM_EXIT_MEMORY_FAULT to userspace. Minor tweaks to align the tests to the new TDX 1.5 spec such as changes in the expected values in TDG.VP.INFO. In RFCv5, TDX selftest code is organized into: + headers in tools/testing/selftests/kvm/include/x86_64/tdx/ + common code in tools/testing/selftests/kvm/lib/x86_64/tdx/ + selftests in tools/testing/selftests/kvm/x86_64/tdx_* Dependencies + Peter=E2=80=99s patches, which provide functions for the host to allocate and track protected memory in the guest. https://lore.kernel.org/all/20230110175057.715453-1-pgonda@google.com/ Further work for this patch series/TODOs + Sean=E2=80=99s comments for the non-confidential UPM selftests patch seri= es at https://lore.kernel.org/lkml/Y8dC8WDwEmYixJqt@google.com/T/#u apply here as well + Add ucall support for TDX selftests I would also like to acknowledge the following people, who helped review or test patches in previous versions: + Sean Christopherson + Zhenzhong Duan + Peter Gonda + Andrew Jones + Maxim Levitsky + Xiaoyao Li + David Matlack + Marc Orr + Isaku Yamahata + Maciej S. Szmigiero Links to earlier patch series + RFC v1: https://lore.kernel.org/lkml/20210726183816.1343022-1-erdemaktas@= google.com/T/#u + RFC v2: https://lore.kernel.org/lkml/20220830222000.709028-1-sagis@google= .com/T/#u + RFC v3: https://lore.kernel.org/lkml/20230121001542.2472357-1-ackerleytng= @google.com/T/#u + RFC v4: https://lore.kernel.org/lkml/20230725220132.2310657-1-afranji@goo= gle.com/ *** BLURB HERE *** Ackerley Tng (12): KVM: selftests: Add function to allow one-to-one GVA to GPA mappings KVM: selftests: Expose function that sets up sregs based on VM's mode KVM: selftests: Store initial stack address in struct kvm_vcpu KVM: selftests: Refactor steps in vCPU descriptor table initialization KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs' attribute configuration KVM: selftests: TDX: Update load_td_memory_region for VM memory backed by guest memfd KVM: selftests: Add functions to allow mapping as shared KVM: selftests: Expose _vm_vaddr_alloc KVM: selftests: TDX: Add support for TDG.MEM.PAGE.ACCEPT KVM: selftests: TDX: Add support for TDG.VP.VEINFO.GET KVM: selftests: TDX: Add TDX UPM selftest KVM: selftests: TDX: Add TDX UPM selftests for implicit conversion Erdem Aktas (3): KVM: selftests: Add helper functions to create TDX VMs KVM: selftests: TDX: Add TDX lifecycle test KVM: selftests: TDX: Adding test case for TDX port IO Roger Wang (1): KVM: selftests: TDX: Add TDG.VP.INFO test Ryan Afranji (2): KVM: selftests: TDX: Verify the behavior when host consumes a TD private memory KVM: selftests: TDX: Add shared memory test Sagi Shahar (11): KVM: selftests: TDX: Add report_fatal_error test KVM: selftests: TDX: Add basic TDX CPUID test KVM: selftests: TDX: Add basic get_td_vmcall_info test KVM: selftests: TDX: Add TDX IO writes test KVM: selftests: TDX: Add TDX IO reads test KVM: selftests: TDX: Add TDX MSR read/write tests KVM: selftests: TDX: Add TDX HLT exit test KVM: selftests: TDX: Add TDX MMIO reads test KVM: selftests: TDX: Add TDX MMIO writes test KVM: selftests: TDX: Add TDX CPUID TDVMCALL test KVM: selftests: Propagate KVM_EXIT_MEMORY_FAULT to userspace tools/testing/selftests/kvm/Makefile | 8 + .../selftests/kvm/include/kvm_util_base.h | 30 + .../selftests/kvm/include/x86_64/processor.h | 4 + .../kvm/include/x86_64/tdx/td_boot.h | 82 + .../kvm/include/x86_64/tdx/td_boot_asm.h | 16 + .../selftests/kvm/include/x86_64/tdx/tdcall.h | 59 + .../selftests/kvm/include/x86_64/tdx/tdx.h | 65 + .../kvm/include/x86_64/tdx/tdx_util.h | 19 + .../kvm/include/x86_64/tdx/test_util.h | 164 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 101 +- .../selftests/kvm/lib/x86_64/processor.c | 77 +- .../selftests/kvm/lib/x86_64/tdx/td_boot.S | 101 ++ .../selftests/kvm/lib/x86_64/tdx/tdcall.S | 158 ++ .../selftests/kvm/lib/x86_64/tdx/tdx.c | 262 ++++ .../selftests/kvm/lib/x86_64/tdx/tdx_util.c | 558 +++++++ .../selftests/kvm/lib/x86_64/tdx/test_util.c | 101 ++ .../kvm/x86_64/tdx_shared_mem_test.c | 135 ++ .../selftests/kvm/x86_64/tdx_upm_test.c | 469 ++++++ .../selftests/kvm/x86_64/tdx_vm_tests.c | 1319 +++++++++++++++++ 19 files changed, 3693 insertions(+), 35 deletions(-) create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/td_boot.= h create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/td_boot_= asm.h create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdx_util= .h create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/test_uti= l.h create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/td_boot.S create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_shared_mem_test.= c create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_upm_test.c create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c --=20 2.43.0.472.g3155946c3a-goog