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 2D5FFC7EE25 for ; Wed, 7 Jun 2023 20:22:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A72226B0072; Wed, 7 Jun 2023 16:22:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A22026B0074; Wed, 7 Jun 2023 16:22:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8EA2A8E0001; Wed, 7 Jun 2023 16:22:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 7F9A66B0072 for ; Wed, 7 Jun 2023 16:22:40 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 3FBCAC0506 for ; Wed, 7 Jun 2023 20:22:40 +0000 (UTC) X-FDA: 80877074880.25.D0C859E Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by imf21.hostedemail.com (Postfix) with ESMTP id 03A651C0003 for ; Wed, 7 Jun 2023 20:22:37 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="NuwxF/Qx"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf21.hostedemail.com: domain of dave.hansen@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=dave.hansen@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686169358; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dMjeLYNLgIOXeyZ2olujqH0iR0Gw8mMCTplRF4MyHKI=; b=QpaVv+RbL6ZcBEtXhF+JkUVRctC1VD2D3Uu2RF40n35FzdV6iz9FnIdfNee0anCBF8MPHS OECg00NQJr3xHES98EZV/BN6NtTNd3ZhPQwCbCtUEywW42PYIt4eXUVXd51rdp3OjPQs2Y STzqJ01hLI7T8rCkKqVkPOJ5Kut8gIA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="NuwxF/Qx"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf21.hostedemail.com: domain of dave.hansen@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=dave.hansen@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686169358; a=rsa-sha256; cv=none; b=LMY7Jin80+JTmpTA58phMUhw2xEYIEHJrf01FmM/prQQ3m4hny0zM+VzIQ7skJRHeGSnwc EZClsCf/Z0TepEcA02Vd0KLbh1pdh7oBki/8nNKbS5LxMj2dvdQo1VM7PdedhKlfyo8ITu gehYuBCd8RJxiu6e21FvegEnumGgWGA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686169358; x=1717705358; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=Yx3Hykw4LiAqDclb6vXT/niFHdtBDleUGtGrsmgGkKc=; b=NuwxF/Qxv6qON8UZVmjtj6qKMN9naU6D6gVmmdcDxNViUrEckFAuh2iy 0gH1cy9ctWvhqCzGRgZSG75r6o71eIe7bqk7Lp2hCdcKew2WU0LEuixYk UGKyTZ3oUbFKysUn402ASC9ZZ3/GjX3tFeVbQvRX0myBjXUeiGlx0oEXE 4s+v2XS8nx/XVdDzpanF7IEnupbTRY19X6rmexV3Heq8pFm2Ar5MDY8lD ZVYcPrlgG/98M77wyB2r/CubPDm3Qkb6MAKAyEm6b+wLKqtViaXsvt0kU NSvx1AnqpRtWiY6B+h1VjyqCts3LqKbFOJiMuc/8ZAqpFygJxjhAW9COk w==; X-IronPort-AV: E=McAfee;i="6600,9927,10734"; a="355955973" X-IronPort-AV: E=Sophos;i="6.00,225,1681196400"; d="scan'208";a="355955973" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2023 13:22:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10734"; a="1039828552" X-IronPort-AV: E=Sophos;i="6.00,225,1681196400"; d="scan'208";a="1039828552" Received: from vsmyers-mobl2.amr.corp.intel.com (HELO [10.212.146.233]) ([10.212.146.233]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2023 13:22:35 -0700 Message-ID: <2061ced1-59d7-f21c-490c-b650b7378386@intel.com> Date: Wed, 7 Jun 2023 13:22:34 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH v11 05/20] x86/virt/tdx: Add SEAMCALL infrastructure Content-Language: en-US To: Sean Christopherson , Isaku Yamahata Cc: Kai Huang , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, kirill.shutemov@linux.intel.com, tony.luck@intel.com, peterz@infradead.org, tglx@linutronix.de, pbonzini@redhat.com, david@redhat.com, dan.j.williams@intel.com, rafael.j.wysocki@intel.com, ying.huang@intel.com, reinette.chatre@intel.com, len.brown@intel.com, ak@linux.intel.com, isaku.yamahata@intel.com, chao.gao@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, bagasdotme@gmail.com, sagis@google.com, imammedo@redhat.com References: <92e19d74-447f-19e0-d9ec-8a3f12f04927@intel.com> <20230607185355.GH2244082@ls.amr.corp.intel.com> <20230607194721.GI2244082@ls.amr.corp.intel.com> From: Dave Hansen In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: wu4a9eoxdf7b49y8ftzo7ewkdkj5xs4x X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 03A651C0003 X-HE-Tag: 1686169357-703319 X-HE-Meta: U2FsdGVkX18Idd3D+lR3eIsb9Ro1zHXNahE5hi/8TzjIY+fUx6uzNFTX/6tGsmO6/+2qPcyDdwu9DZhdcfI+U2jr7gfy0DpQxD/SVE1fCPTp5rCf5H+hg7z9ct5M3IH79B2Qglaq+7NJ/fPjLL4NVUN35yEZ3rJkJCWQYdXXMs7eL4NcT0XpRxHkqy+Jto1c8D+TN7YYGQn7whfk8smY5zCdtAuAH5yGtE8tppOlfrSvR/u5wNdpd76ziJL01G2qltMCJ9tvUGl9OPlGoWBoVc8BBrjJ/vQXJx/F6uG4y4TFCiqqmyKV9ZibzuQ2vXktit3QCJTU8iJOjXxva62cdofEnZOIFwTxwkTA0iXSOGcxeQi/qFgNc/bWnm6fLzhPke/UZCY/9NZOVWZ/b1zEBeJ5OfFH2XGp/L7adI8bjmGo4gqy8bx7+Y2wooPtzukTNGS3R/zDHUwu4A7btIa/VmW9S3HvObZKqVATgPl68JP7efOBhpcd9czbw8ErhgjMsUHoOnD19aVn4TFFY31MrlVbMSX/hm8qos5DaETi2ymjBT90k8g4twI0EaE2P3speZjhdDi2S5EKaBuaOiYKWnPDth9CReFV0p/ROodSOswI0fU/isSzGCBpcGNUUo0PwT2sDiCHkwMSZvfIVnNT5xrZ5vQDssqk8WN5QpeJzgIANumeOipdiD+rIv8UF/hvIveOMgdOEDRevIUxMcIFArPhJpPipOVxtv3kBBoYpIjr/2DYHGQ5hy5Sy2qz/OPz+ixhZgJmPJgU5GnG4/uvnidHQtEA0EfZr/bPEE48jEFPm5kFtZDdAok7LOYIFV9hIxHoUKHc7RpD7OqfTyG1YWN+EnJwoq4N2ptVrvJ8nj7NnwaO3FlzGUMDjB3xwAo59leEHrA8c7oFl5/FRBpPbBfJZI3Ajml2QaYXWmy9ETsL3XB9O7q9htHWiCUjkzOs8E8vqNovMwXVf76pUUo Htt0ZnAP E+CA5Wvsvz5bJ2ynX2HPGRbsCpXZW6TB4jwtX1Yy2eYMd/7U19eDUBuOKbyEvrsKEVTRwrqFIyE5QnR38AhdeXW2COWqj2dhbRq+bgvjJnxOpFsXa3oNa25Gd0wO5JX1dMBsS3P2ZNOhmGD8tu5o3E0vP0V6fOIMMwGf+ec2zRmVLtgR3gHySQOisiFRML2NO5S5z8L5wtZO/GC1yNQa8PZqpJg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 6/7/23 13:08, Sean Christopherson wrote: >>>>>> The current TDX_MODULE_CALL macro handles neither #GP nor #UD. The >>>>>> kernel would hit Oops if SEAMCALL were mistakenly made w/o enabling VMX >>>>>> first. Architecturally, there is no CPU flag to check whether the CPU >>>>>> is in VMX operation. Also, if a BIOS were buggy, it could still report >>>>>> valid TDX private KeyIDs when TDX actually couldn't be enabled. >>>>> I'm not sure this is a great justification. If the BIOS is lying to the >>>>> OS, we _should_ oops. >>>>> >>>>> How else can this happen other than silly kernel bugs. It's OK to oops >>>>> in the face of silly kernel bugs. >>>> TDX KVM + reboot can hit #UD. On reboot, VMX is disabled (VMXOFF) via >>>> syscore.shutdown callback. However, guest TD can be still running to issue >>>> SEAMCALL resulting in #UD. >>>> >>>> Or we can postpone the change and make the TDX KVM patch series carry a patch >>>> for it. >>> How does the existing KVM use of VMLAUNCH/VMRESUME avoid that problem? >> extable. From arch/x86/kvm/vmx/vmenter.S >> >> .Lvmresume: >> vmresume >> jmp .Lvmfail >> >> .Lvmlaunch: >> vmlaunch >> jmp .Lvmfail >> >> _ASM_EXTABLE(.Lvmresume, .Lfixup) >> _ASM_EXTABLE(.Lvmlaunch, .Lfixup) > More specifically, KVM eats faults on VMX and SVM instructions that occur after > KVM forcefully disables VMX/SVM. That's a *TOTALLY* different argument than the patch makes. KVM is being a _bit_ nutty here, but I do respect it trying to honor the "-f". I have no objections to the SEAMCALL code being nutty in the same way. Why do I get the feeling that code is being written without understanding _why_, despite this being v11?