From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C27E5C4345F for ; Fri, 12 Apr 2024 04:56:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4775F6B0082; Fri, 12 Apr 2024 00:56:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 423EA6B0087; Fri, 12 Apr 2024 00:56:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2EBF26B008A; Fri, 12 Apr 2024 00:56:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 11F7A6B0082 for ; Fri, 12 Apr 2024 00:56:44 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C8150A1A0C for ; Fri, 12 Apr 2024 04:56:43 +0000 (UTC) X-FDA: 81999669486.17.DC5FD6D Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf09.hostedemail.com (Postfix) with ESMTP id 103DC14000F for ; Fri, 12 Apr 2024 04:56:41 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SFkcOYUH; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of 3Cb8YZgsKCCI8AICPJCWRLEEMMEJC.AMKJGLSV-KKIT8AI.MPE@flex--ackerleytng.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3Cb8YZgsKCCI8AICPJCWRLEEMMEJC.AMKJGLSV-KKIT8AI.MPE@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712897802; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=cqWwq/YjmJyQ4CvXHHLBMD+DqXASBJiMvQ6ZfNbBSk8=; b=C+zrDPFbtyr3kL4PEGpmF5X4yotXjQz7Y7UXjSdRmMaU4/gZByVWgVt2ugm81JD09dE4Uv 0/YJtV/yh3kh8T/5At6kw/UlfcnM0DqGhgqzvChLnd4d4fisbgcrKP0B3/UZHDro+XD1tS IYbQEmIhw/kRTFnGB+Ct3S38AivO+iQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SFkcOYUH; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of 3Cb8YZgsKCCI8AICPJCWRLEEMMEJC.AMKJGLSV-KKIT8AI.MPE@flex--ackerleytng.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3Cb8YZgsKCCI8AICPJCWRLEEMMEJC.AMKJGLSV-KKIT8AI.MPE@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712897802; a=rsa-sha256; cv=none; b=bt1Xt8nBtlFYdQHKp0O/D/Y5IMwlnInQjhxpDNsyD7ckMGyGEk77cXN6pmOII060TVu54W vQEOjbmX6SZi4OKutk2BJ4oeQe2PqMYzkNZWcS0JMifHQX88aoQP1Pp1yu7HQ403wjmWPi KIZjErwC0z9ZSvsLBSgVRBHEQzlf4/c= Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60a20c33f06so6417237b3.2 for ; Thu, 11 Apr 2024 21:56:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712897801; x=1713502601; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=cqWwq/YjmJyQ4CvXHHLBMD+DqXASBJiMvQ6ZfNbBSk8=; b=SFkcOYUHJ1OxZs3e9UjrpWDxLVd0U3YdjQCTjb1P9oE6Hmyvn+FKHobPQRMbiUr1kn EDSnakDaw0yrUrAhcmH4bms0Wd1HRKXJhai3/EL2ImXPGA2VBUUzN4lvwxuyQmXlcglT TVfcGZxOwTQx7p0J5AH1ahPWMhqbTbPu25a8HSfRXH9jp7yS42t83+c8Ybp0XvFzMAel OyZoildW1HKLuUhrdZ5TDH4tbz/9BYUe13VowkRpymotXCZga1A6UrWILNpeZbLWjrxV Huzz5cY1uhh8BCxOykMKTTCO7HOCJ0YIHZyc+P3O2JTC7Qg5Gk/qp0qRLnV/LbrzpNu5 pXLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712897801; x=1713502601; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cqWwq/YjmJyQ4CvXHHLBMD+DqXASBJiMvQ6ZfNbBSk8=; b=iviEfkIPp6CJURBYU61PcwRz6LuknCGE87vpZGqdZvLIXqHKi35dYcUy7JrFPt/r6j 8mMAC1ElIDVMyHwM+6JzuPnr8XWRMvXLKtBnigBG2uZTOD2MJnr/zdgfsra6Jc/UI5t7 wwheLsurVTca7J9VJNsa2p2r8b/krsIpmzofgP8WO7n3GzPjphT9ztt9Rgq+ZKLVIMhn ZYxgqcgSrbn0+M+bv0jOp482hs2ZcTJwROMjMskN2g1fGzsTH+9pQVHNozNrGqgeLsF1 iKMHqCGmQYpnBNSxSl9xT3bjXqLBEWdwK9wYAmz8Vk2B0qw6AjqFecZO8PZuiiXVitYn 7u8g== X-Forwarded-Encrypted: i=1; AJvYcCXlXLOc18RdQU5oSbsxFtI16FlBx0lbbGUciyFqHKXLFgvLh07ugMsRErNT+TbRTajdVU/SAbrqAkFpgLV+dJhBVv0= X-Gm-Message-State: AOJu0YzrMb5HjBamnbtLQ8qG2jcpzj8JSrfUPyxu3+9f4PDvyTpfkdd+ k/9iVJV6A2XRHxhsmzwlkHKQmfmvJjvEXRNxEjr3A7nwgdm+BL85T3yssNvc1EoGp/7G5SdSlob qbtRRezfKvB+92Ej5+uOR3Q== X-Google-Smtp-Source: AGHT+IHogRXL4LbEeXZgb/SXhHT8euqOuh88Q0krefn7tSKN+a+HFavAX4VGgrluxxBH6lf3KC3qAeiPCLP4+nYV7A== X-Received: from ctop-sg.c.googlers.com ([fda3:e722:ac3:cc00:4f:4b78:c0a8:1223]) (user=ackerleytng job=sendgmr) by 2002:a5b:c49:0:b0:dcd:3a37:65 with SMTP id d9-20020a5b0c49000000b00dcd3a370065mr159815ybr.7.1712897801099; Thu, 11 Apr 2024 21:56:41 -0700 (PDT) Date: Fri, 12 Apr 2024 04:56:36 +0000 In-Reply-To: (message from Yan Zhao on Fri, 1 Mar 2024 20:09:58 +0800) Mime-Version: 1.0 Message-ID: Subject: Re: [RFC PATCH v5 09/29] KVM: selftests: TDX: Add report_fatal_error test From: Ackerley Tng To: Yan Zhao Cc: sagis@google.com, linux-kselftest@vger.kernel.org, afranji@google.com, erdemaktas@google.com, isaku.yamahata@intel.com, seanjc@google.com, pbonzini@redhat.com, shuah@kernel.org, pgonda@google.com, haibo1.xu@intel.com, chao.p.peng@linux.intel.com, vannapurve@google.com, runanwang@google.com, vipinsh@google.com, 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" X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 103DC14000F X-Stat-Signature: igazhw7k9qreqa343agj1df6uyfmo71i X-Rspam-User: X-HE-Tag: 1712897801-454575 X-HE-Meta: U2FsdGVkX1/rIPAveGXj7Ooui4kfmS9fC3/DVgpYWTBicAPdY+pIAd43p2I9rgRD6o/CxG3d0HoTkNixtd29RN0ST8uTnLtTlrbnkcMqJhgKQ/TInKuZzYwNEp6B/Gt8SYpLidbRe+4ISabcYV7vOh3Z7514s6Za9KsRtvJraOpyko5WFKkKDfskNKpQj/O2MURZ9iuf3YsOIfT44b7UjlyJqNOHfn0eFd3cmDjovkgDqktRzW1dTgabd+Q87T2alQQ7tUyXJJ3VSEygQhcaks+PQGNkz5ts6rvVQQM2c85xBb+vxOaHSOMWbYARbWLjfmspC+kY5kAIWhTtJeXpgvRTxuetbSSohjytLriy1IL/2F+QAG+FhSOukkYUrVXpLShoADT2OBL2tkSDPLb7MbS7SOLCjoqizoedhV6ZFDEOMcwpvG7Nd4/WVKHWyBz2RxWD/9Bo2lIhRjN/mzOJ4XsFHfzIiWKMi7xy8Bed+yMGWSNb29h187ya7R3DAzkWZ57i4UhJVivAfKaMNPd5828tn6SHQPVspDx/Y+cSs6XMz2qmDTLYBYQbP/lztBgxODOSrjPODzcNiY/+VIpIGtoOK16RjtM3Kj4wu1nQh5Dupp7PjXSg4fuK+XD2GwWdA5zQDZD0+YXfrKKMK1PDMPIxEV7jBY1pm/mP3DCuT63d7p0/h0+pGMydzMQJtfkkhx15D140c5Cw4RHJpH8mlRBMzzUdyiXADpMI+y4cZXu0R8pj854Bpief8cPAEhAAlSugfzUC6yQFrbMnnktQ5ST8SSdCSvGxr8NFKZbVLf3IHcGp0zaEP4m5fgkja09htbqUdQ4B5D4QwgQ8itMCIjfzDeYl9hhvJBWm7SLE5dhLvsBviNhddKsl0jnL/+veiVKsCH7SnagQ5m9it0r+BIVRe7EJephJz3IdLbOMg2qoKXkysyTriCqLMB4qQEcuN1wcj20QPOYronEniKX jau//gaM vgc53p7Xoj87KoYi/tMf7KA4kmVEhcX8V6ba5LU+TGIZtckE/rjySrmwzeT6azLZ/JTS4jpflynQKk+d7x2dGDadZ3sIAyYa8ZmGN7MnqBw3ppLx6qQ9WP8X81+8/Rk7mVqRaYmbpVFpGyH/duwgiC5gX5qANci60upCziOPZvrwqYiGwwAIJNeQPXqPMIHH1Nyiwv2gyfkvkFr9ZgJLyj2poqGDB4b8lerdyaUwwf6vKoM8mgTy3oVQjF6IPOsqxs7LDsZjR2lt4xwFVFQnEfU56ubS29QWPhVgSNL95BIylHcb40h8UmqqTlrYf8RMzXjPwwrlEn2QTcDmWz2iNrDC0LELhLvY8e5xp5TZA6pEJsJzPfL5v4u31S1okJrUmZnyQ0Cp28mBuZ0J0Ey70lHYOgDOQwJGLMusn34g9EdRVfMlJhhqMT3HpHPnJ8wgPb9sDXzWajGkE5M/09pxm6deqJKt9PWgPB2jbFiUIphIVEFvI+KB4IapS3QnqddoLlVk3XVqgQB4pKS0NR5+7I1kMbSdOotUL8MQ4ZEw+MgZHlIcaDTJgP87CnVbpDXvQQ0Px+h/XWLRsTkyuoZvX49C/yoKQIm9DvOC5SBPw5cxhjzz5r25WOWF6kVBqN1YhZwHvA7rMWU7URmg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.143103, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Yan Zhao writes: > ... >> diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h b/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h >> index b570b6d978ff..6d69921136bd 100644 >> --- a/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h >> +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h >> @@ -49,4 +49,23 @@ bool is_tdx_enabled(void); >> */ >> void tdx_test_success(void); >> >> +/** >> + * Report an error with @error_code to userspace. >> + * >> + * Return value from tdg_vp_vmcall_report_fatal_error is ignored since execution >> + * is not expected to continue beyond this point. >> + */ >> +void tdx_test_fatal(uint64_t error_code); >> + >> +/** >> + * Report an error with @error_code to userspace. >> + * >> + * @data_gpa may point to an optional shared guest memory holding the error >> + * string. >> + * >> + * Return value from tdg_vp_vmcall_report_fatal_error is ignored since execution >> + * is not expected to continue beyond this point. >> + */ >> +void tdx_test_fatal_with_data(uint64_t error_code, uint64_t data_gpa); > I found nowhere is using "data_gpa" as a gpa, even in patch 23, it's > usage is to pass a line number ("tdx_test_fatal_with_data(ret, __LINE__)"). > > This function tdx_test_fatal_with_data() is meant to provide a generic interface for TDX tests to use TDG.VP.VMCALL, and so the parameters of tdx_test_fatal_with_data() generically allow error_code and data_gpa to be specified. The tests just happen to use the data_gpa parameter to pass __LINE__ to the host VMM, but other tests in future that use the tdx_test_fatal_with_data() function in the TDX testing library could actually pass a GPA through using data_gpa. >> #endif // SELFTEST_TDX_TEST_UTIL_H >> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c >> index c2414523487a..b854c3aa34ff 100644 >> --- a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c >> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c >> @@ -1,8 +1,31 @@ >> // SPDX-License-Identifier: GPL-2.0-only >> >> +#include >> + >> #include "tdx/tdcall.h" >> #include "tdx/tdx.h" >> >> +void handle_userspace_tdg_vp_vmcall_exit(struct kvm_vcpu *vcpu) >> +{ >> + struct kvm_tdx_vmcall *vmcall_info = &vcpu->run->tdx.u.vmcall; >> + uint64_t vmcall_subfunction = vmcall_info->subfunction; >> + >> + switch (vmcall_subfunction) { >> + case TDG_VP_VMCALL_REPORT_FATAL_ERROR: >> + vcpu->run->exit_reason = KVM_EXIT_SYSTEM_EVENT; >> + vcpu->run->system_event.ndata = 3; >> + vcpu->run->system_event.data[0] = >> + TDG_VP_VMCALL_REPORT_FATAL_ERROR; >> + vcpu->run->system_event.data[1] = vmcall_info->in_r12; >> + vcpu->run->system_event.data[2] = vmcall_info->in_r13; >> + vmcall_info->status_code = 0; >> + break; >> + default: >> + TEST_FAIL("TD VMCALL subfunction %lu is unsupported.\n", >> + vmcall_subfunction); >> + } >> +} >> + >> uint64_t tdg_vp_vmcall_instruction_io(uint64_t port, uint64_t size, >> uint64_t write, uint64_t *data) >> { >> @@ -25,3 +48,19 @@ uint64_t tdg_vp_vmcall_instruction_io(uint64_t port, uint64_t size, >> >> return ret; >> } >> + >> +void tdg_vp_vmcall_report_fatal_error(uint64_t error_code, uint64_t data_gpa) >> +{ >> + struct tdx_hypercall_args args; >> + >> + memset(&args, 0, sizeof(struct tdx_hypercall_args)); >> + >> + if (data_gpa) >> + error_code |= 0x8000000000000000; >> > So, why this error_code needs to set bit 63? > > The Intel GHCI Spec says in R12, bit 63 is set if the GPA is valid. As a generic TDX testing library function, this check allows the user to use tdg_vp_vmcall_report_fatal_error() with error_code and data_gpa and not worry about setting bit 63 before calling tdg_vp_vmcall_report_fatal_error(), though if the user set bit 63 before that, there is no issue. >> + args.r11 = TDG_VP_VMCALL_REPORT_FATAL_ERROR; >> + args.r12 = error_code; >> + args.r13 = data_gpa; >> + >> + __tdx_hypercall(&args, 0); >> +} >>