From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0A3251B16C for ; Thu, 1 Oct 2026 19:38:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.198 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790883527; cv=none; b=cSUbzhGfoS7Hvrg1+ItAfQeWvmXjGCUG18xirHRg1dP5+NuTFAa+gwS37tvK2W3HjLqTB6YJlo1VHY4VX9PDNHX5tcYS21BLfAaq7WNbpFKDETf076yB77se7Cx5LvL+u4+FNK7f/bQExZr8AqrsxfpT0gm7siuVL2iMhX03KUs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790883527; c=relaxed/simple; bh=qxkfdoOz77H+HUvwagh4OJO5TYMmdDlmCgK4NuPofnY=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=VrhUld70jCZvUg6YWbL+gaR/92kUmzFc4j/vjxl4DWQcS4Cm4c/Pcf9GPcRt+YjuXkXxfjuzufzHWTVNLezYejMReScYIhLVxNpg2jMDQQJg8aWKPdhqqbmTutNLBQdnRM3LzCn5jsKdP9w7hSkpnD1fAT+by5/2PqgaBPPvPhY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--wyihan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=uzijRiKl; arc=none smtp.client-ip=209.85.214.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--wyihan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="uzijRiKl" Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2df8484f12cso65781545ad.3 for ; Thu, 01 Oct 2026 12:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1790883524; x=1791488324; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=iRA8eHvPSJgAQEOmbd1O/CbESc/R97pEVe2Nxiy3I3w=; b=uzijRiKlGDSo8PnNCIBlSWtzT+TFP47oLRjjIxThlTKPvI8Q7yUv2uFsaK5qXfQn2R lY/ykuLUUjBqmtY/zngUJdtmA8urhamhG3mGTZnOMnFBdJSj1Vt0fTKqUTLfUL5QAXLG xKUo0JK8xX/ZfN5WZlH/qpMMSLdrboL/ypthtOt08WPhzDh50t9ksWCXmmQQ0/HNjjeP bbUOOOBwK2c1dJjvRaIPauPnRSyMQM9Aj1VuVqkGnSikkMDVGljWluJbRCkH//iyHt2X NOsePEjkgiAS/T7sJmoXvYH0zvUTtMuNDAjZyEECfRH5I1BodV6T9VXxIDZI/GN7KiaD fgTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790883524; x=1791488324; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iRA8eHvPSJgAQEOmbd1O/CbESc/R97pEVe2Nxiy3I3w=; b=EFFPvAiddnPFHjON7nILFlKnC2xwANJdTC6S54UzyYbHGT792mh2Do1FKPzToO+t/a 7pQ6suNThY30s6Lniygbjp2+gIrJItLySnVPiRfI2L396CXZi4jcVvnF045gRe3fS7Oz Z6784qCMAFk7BJ3DDc66NRQtcnDgvUngtkPIHsfw3ftw4Y87gspIPa+Q4M/z+p28cw/f xDpdbUjafnO+IxB6max4L7SFNSNOmHCwe/r4+lx/WISU+xJ9upGuEORbDGs7EBmlqiBN tpTXdvyLu5uZJdyTYH30C6R28pOU4Bcu9VWQJ/w4B1oDnWSv9gZbw5pD0gokk3LntJ83 EHVg== X-Forwarded-Encrypted: i=1; AKwUvBxEhkInqvqiCq+NjUu+rOOTYPqwBCYA2bdIHuQ2WcBZBbiRFi2jSn/7OioSn7BbFPHc0s2RVHnrlaVQt/o=@vger.kernel.org X-Gm-Message-State: AFq9FYIuHGYlpwYEYkZWw2gwoWRfaTLiMVMzBdkxnd25lNBpCzhbSSQs lRNAHZEX0AwY4YHXRt4SxjB58IaFaW8zZW9wzY0/wzOAZ5B3sB2sXDfTrJ709d/kcuXAf2OiVlb 1a10Kdw== X-Received: from plsd22.prod.google.com ([2002:a17:902:b716:b0:2db:1fc8:4e2e]) (user=wyihan job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ec92:b0:2e2:bf79:3cbc with SMTP id d9443c01a7336-2e49b4e2a2fmr4637155ad.14.1790883523793; Thu, 01 Oct 2026 12:38:43 -0700 (PDT) Date: Thu, 01 Oct 2026 19:37:29 +0000 In-Reply-To: <20261001-tdx-selftests-v15-0-7c62a5d8a992@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20261001-tdx-selftests-v15-0-7c62a5d8a992@google.com> X-Developer-Key: i=wyihan@google.com; a=ed25519; pk=cRi0fKzS5BMxlHyHY2pJv3w/1zcgfYKr6EYGYppdMYc= X-Developer-Signature: v=1; a=ed25519-sha256; t=1790883521; l=2835; i=wyihan@google.com; s=20260319; h=from:subject:message-id; bh=DW/6EpNF2WplxQYir4TA0kFPBYD+uNW2zXhuAmi1ip8=; b=e2t+cuZSTEesNo/L46pvlAEvH3ClwUA+3LqLDSyVjnRm14E6gXv5tHEpx+r3cITV7QLqizX7A dKFgmtG3kS3BeN/8XSec5K/CTPUKZz7SsAJdKf4o+RT66zwQ/ChYNkp X-Mailer: b4 0.14.3 Message-ID: <20261001-tdx-selftests-v15-2-7c62a5d8a992@google.com> Subject: [PATCH v15 02/23] KVM: selftests: Update kvm_init_vm_address_properties() for TDX From: Lisa Wang To: Andrew Jones , Ackerley Tng , Binbin Wu , Chao Gao , Chenyi Qiang , Dave Hansen , Erdem Aktas , Ira Weiny , Isaku Yamahata , Kiryl Shutsemau , linux-kselftest@vger.kernel.org, Paolo Bonzini , "Pratik R. Sampat" , Reinette Chatre , Rick Edgecombe , Roger Wang , Ryan Afranji , Sagi Shahar , Sean Christopherson , Shuah Khan , Xiaoyao Li , Oliver Upton Cc: Jeremiah McReynolds , kvm@vger.kernel.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, x86@kernel.org, Lisa Wang , Adrian Hunter , Ira Weiny Content-Type: text/plain; charset="utf-8" From: Isaku Yamahata Initialize the TDX S-bit and the GPA tag mask in kvm_init_vm_address_properties() for TDX VMs, similar to how the C-bit is initialized for SEV VMs. The TDX S-bit is used to distinguish between shared and private guest physical addresses. Its position is determined by the guest physical address width, which is either 48 or 52 bits for current TDX implementations. Co-developed-by: Adrian Hunter Signed-off-by: Adrian Hunter Co-developed-by: Sagi Shahar Signed-off-by: Sagi Shahar Signed-off-by: Isaku Yamahata Signed-off-by: Lisa Wang Reviewed-by: Binbin Wu Reviewed-by: Ira Weiny Reviewed-by: Xiaoyao Li --- tools/testing/selftests/kvm/include/x86/tdx/tdx_util.h | 14 ++++++++++++++ tools/testing/selftests/kvm/lib/x86/processor.c | 12 ++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/include/x86/tdx/tdx_util.h b/tools/testing/selftests/kvm/include/x86/tdx/tdx_util.h new file mode 100644 index 000000000000..f647e6ca6b34 --- /dev/null +++ b/tools/testing/selftests/kvm/include/x86/tdx/tdx_util.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef SELFTESTS_TDX_TDX_UTIL_H +#define SELFTESTS_TDX_TDX_UTIL_H + +#include + +#include "kvm_util.h" + +static inline bool is_tdx_vm(struct kvm_vm *vm) +{ + return vm->type == KVM_X86_TDX_VM; +} + +#endif /* SELFTESTS_TDX_TDX_UTIL_H */ diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c index d31fa81ea075..24395a8e654a 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -11,6 +11,7 @@ #include "smm.h" #include "svm_util.h" #include "sev.h" +#include "tdx/tdx_util.h" #include "vmx.h" #ifndef NUM_INTERRUPTS @@ -1330,12 +1331,19 @@ void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bits) void kvm_init_vm_address_properties(struct kvm_vm *vm) { + u32 gpa_bits = kvm_cpu_property(X86_PROPERTY_GUEST_MAX_PHY_ADDR); + + vm->arch.sev_fd = -1; + if (is_sev_vm(vm)) { vm->arch.sev_fd = open_sev_dev_path_or_exit(); vm->arch.c_bit = BIT_ULL(this_cpu_property(X86_PROPERTY_SEV_C_BIT)); vm->gpa_tag_mask = vm->arch.c_bit; - } else { - vm->arch.sev_fd = -1; + } else if (is_tdx_vm(vm)) { + TEST_ASSERT(gpa_bits == 48 || gpa_bits == 52, + "TDX: bad X86_PROPERTY_GUEST_MAX_PHY_ADDR value: %u", gpa_bits); + vm->arch.s_bit = BIT_ULL(gpa_bits - 1); + vm->gpa_tag_mask = vm->arch.s_bit; } } -- 2.56.0.rc1.315.gc6ed9934b7-goog