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 8375CEB64DD for ; Thu, 22 Jun 2023 23:39:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D9EF18D0002; Thu, 22 Jun 2023 19:39:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D4EDF8D0001; Thu, 22 Jun 2023 19:39:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEF3E8D0002; Thu, 22 Jun 2023 19:39:11 -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 B019E8D0001 for ; Thu, 22 Jun 2023 19:39:11 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7DDE4406F5 for ; Thu, 22 Jun 2023 23:39:11 +0000 (UTC) X-FDA: 80932002102.30.8D7E729 Received: from mail-ot1-f53.google.com (mail-ot1-f53.google.com [209.85.210.53]) by imf16.hostedemail.com (Postfix) with ESMTP id 94797180016 for ; Thu, 22 Jun 2023 23:39:09 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=cVqJu1OM; spf=pass (imf16.hostedemail.com: domain of isaku.yamahata@gmail.com designates 209.85.210.53 as permitted sender) smtp.mailfrom=isaku.yamahata@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687477149; 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:references:dkim-signature; bh=VKGNAt/icqKcwe+w9bwI/FB6v+mJ4/WjZdPYohbNbZM=; b=sa2vPvfHK7Ol2fPusHPN+pEBp8AUk3rDPzvg/07Em8yBcmzIwVeRebwHvIXfYhnaEsdu5O dc9DHmZ/RqvBtvf1mEPTBCviWVoqA/QRbqLoFk+BGAg/vH3DQZ4sxwH44MV55miN1WmZCF ECqts8nsRc0lNssaipOjDksFB8WXT+M= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=cVqJu1OM; spf=pass (imf16.hostedemail.com: domain of isaku.yamahata@gmail.com designates 209.85.210.53 as permitted sender) smtp.mailfrom=isaku.yamahata@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687477149; a=rsa-sha256; cv=none; b=1HYnv9kKkEaiKUAkc/D1iXg+c45mnYEsGPlSGhr6lZcx2bh/KUMe/tsXylm87cAhAtKgxQ K3WhKkrz8kOdJckuEZ/BLAuQOENgo1B6FaPM75doDHn6p5ZroyUaREe+wLbKWscVF82OyY XNKxpVpoazgSN2abG4pSCtOKQ/i89FM= Received: by mail-ot1-f53.google.com with SMTP id 46e09a7af769-6b5d7e60015so122086a34.0 for ; Thu, 22 Jun 2023 16:39:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687477148; x=1690069148; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=VKGNAt/icqKcwe+w9bwI/FB6v+mJ4/WjZdPYohbNbZM=; b=cVqJu1OMS7i8yDV5cOeV8SMObfqGmXIDy0gvM0gXduTNRDIfCeyUxAhvcpL1dujfQF oFZh6XY2SoTIhec1kQ5ER53lQHciddI4wEalrMNRM3d3DWkpiQgnt8yo1VKZodh6TIlS XieNIB/PXCvfpyhLJz55tlo6kYys6FM0Wq8F+3137j/TjVod7lbTZhWDOfCi+vQ4gDyU Xl6QLYYaAS00BDZvC1prgQdUD5K4yd1G/zZwO52y9wDmDBiR1W7DaX1ycURJr4dbgjlo 0v9IZ8EmhT3v+JkG5pPaNxKq2S4vsjx0+FoHnTgktnuBB5SOtF0t5q5fojagagUbD9JQ RqBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687477148; x=1690069148; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VKGNAt/icqKcwe+w9bwI/FB6v+mJ4/WjZdPYohbNbZM=; b=lnOGhnUIi1p0NGoVKYHs62rkmlLzHb3J9wTX0IbWRZB2VlllFHTpZ0HVzvo5QGpAnZ DLQWKZswEITYoiScZ6tv8cNLC5AlmQPHrWc/PI0L2O+vC2r+XO+FvWDUR9BYZcqMwEI8 maYg0wlgH6g+1ld/k+sm8c7zYKro/xpI+zAMLMxOVQifhai4JAYG51DX06I4gSvjxJYt vXNwMZBl+gocZEOY/On4OZIRssbuv8GIrIlhavLzMuFfTvXW2DNuvBU+K97h6UPBC32P SW1JdcjtWKrdVKbGA/9Wv/Li/ENCSQdauvVNS1VbZ32YZbVYjiVeY8QUjAxmFOyLSmBl l23A== X-Gm-Message-State: AC+VfDwbcyGz32vlpYacIU+uNZJHzFacpWWIK5kR15AlwlbwkDvDsnlv ajWg/D8KT0EK9OF8UnpFh48= X-Google-Smtp-Source: ACHHUZ5/mpehgoqgo5DrR9jrPfIrB1wNcMotJ/HIKpHb5HNxz+eZGJaCXczntz3NIkl5y5Z57vYR4Q== X-Received: by 2002:a05:6359:67a0:b0:132:ad97:9ca7 with SMTP id sq32-20020a05635967a000b00132ad979ca7mr4719822rwb.12.1687477148331; Thu, 22 Jun 2023 16:39:08 -0700 (PDT) Received: from localhost ([192.55.54.50]) by smtp.gmail.com with ESMTPSA id s3-20020aa78283000000b0062e0515f020sm4998532pfm.162.2023.06.22.16.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 16:39:07 -0700 (PDT) Date: Thu, 22 Jun 2023 16:39:06 -0700 From: Isaku Yamahata To: "Huang, Kai" Cc: "michael.roth@amd.com" , "srinivas.pandruvada@linux.intel.com" , "liam.merwick@oracle.com" , "tobin@ibm.com" , "alpergun@google.com" , "Luck, Tony" , "jmattson@google.com" , "Lutomirski, Andy" , "ak@linux.intel.com" , "pbonzini@redhat.com" , "kvm@vger.kernel.org" , "tglx@linutronix.de" , "slp@redhat.com" , "dovmurik@linux.ibm.com" , "Wang, Zhi A" , "linux-kernel@vger.kernel.org" , "pgonda@google.com" , "thomas.lendacky@amd.com" , "rientjes@google.com" , "peterz@infradead.org" , "x86@kernel.org" , "bp@alien8.de" , "Annapurve, Vishal" , "dgilbert@redhat.com" , "Christopherson,, Sean" , "vkuznets@redhat.com" , "marcorr@google.com" , "vbabka@suse.cz" , "ashish.kalra@amd.com" , "linux-coco@lists.linux.dev" , "nikunj.dadhania@amd.com" , "Rodel, Jorg" , "isaku.yamahata@gmail.com" , "mingo@redhat.com" , "sathyanarayanan.kuppuswamy@linux.intel.com" , "kirill@shutemov.name" , "jarkko@kernel.org" , "hpa@zytor.com" , "ardb@kernel.org" , "linux-crypto@vger.kernel.org" , "linux-mm@kvack.org" , "dave.hansen@linux.intel.com" Subject: Re: [PATCH RFC v9 04/51] KVM: x86: Determine shared/private faults using a configurable mask Message-ID: <20230622233906.GA3436214@ls.amr.corp.intel.com> References: <20230612042559.375660-1-michael.roth@amd.com> <20230612042559.375660-5-michael.roth@amd.com> <20230614164709.GT2244082@ls.amr.corp.intel.com> <20230620202841.7qizls3u3kcck45g@amd.com> <20230620211845.GV2244082@ls.amr.corp.intel.com> <20230621230031.37hdnymbjzwjgbo2@amd.com> <20230622153229.vjkrzi6rgiolstns@amd.com> <25037dfe969698dd109daee8c6dbe0d08a874a08.camel@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <25037dfe969698dd109daee8c6dbe0d08a874a08.camel@intel.com> X-Rspamd-Queue-Id: 94797180016 X-Rspam-User: X-Stat-Signature: oz3u85gq6t5dukzgtsbe9akm1r6q1k6w X-Rspamd-Server: rspam01 X-HE-Tag: 1687477149-961918 X-HE-Meta: U2FsdGVkX19L6YA9RZ/krrwWhGPbATW5mGdH+OYhSJUqlJl6VPsXx+5cTREINuHN0229gGXdGh6R43tKVE4R5y/BKMqNSyfN2i1aoNBl83925//B3I8VS3A9EEzbGBVmHCWaK90+71LClSk5CL8iIKyFwN9kPZLavzuNta0Jn8qQ5qlwnTQnLb8en7+Sc81gwvgttCE72TlvQJ242gVKlekQ0pFjLbP0qr+FThcXEy665IKIFvahd/iJP9zA50eYO7iS0EOVxL6BwOJJ3BWg8U0cOrzxvBIrDLA9DROQH9OGCHbt7Pxv7shn/7I+Ogjc0FRICT+nHBlFMuc6aEevQrIQrIEmFfMwEgl88VS3jsfVdNtll6EIq94emYcYwB8il+O/r9lw25Cz2wmGjH9epTfrvhHa3y2+3Br3NUJ0aC15QcB9kFZ2Pyx20kKG1CWFOKSxA6eXvBzpoHM4Zr/5OKpresHPBZd2I5mhZZiyoXHSyGI0hgakRhBUGq3oNQ1ci5vpF+1YdvTy3tDfDTW8gXwtyyMholfnmFmaDyXgVAqn9/WuApIf+m9uLqkhPZSr6aYoB0nu7my93Ko9SRVWzi7kHv7dSEUuAiR/fMqhRFLCgpgM024WLZSzezd88Yls6iQvGs38uxc0ieFZ9pMMELqCp0QQosuWSewmAXM/zWlmaoKYWP8In5qCc/azmcHZNPR5IkQSp2HguM5r+kXbGqhuPG3i4I4dvjdO8HoLPPul0VuLOePpDTAXCu0rhnVgdsxfZKqydk4VHi/nh533jzIqretZY2GmnsMu9GK2QUWegj7BTBvoml7kimEAO1NbNETRoTskfNCOH2vg6tHOPO54VybsGeEfqgPP+YQcV357LglQCo34Pvnh+1/b4oZj1VQZfzFT5ycmp/x6K/Ryip2gx5JYonyTQ9zK/3HyUR7xTlGswWKlLdsp9/JIY87Xx0jGWJl7PQt+WgMlmZQ gSHAJQUJ 7Qam8Tsoqc2NJbLubzhS1yE5fvzXTBoaG3f6hRdXKoDv4NZchb9tHJzyP6SvVBXjqOsc6hb3wtONdV3oOOclgrL3DjkOR37P1HBfR1Y8khEjjHBn1GFn7Mdy8FXXAKO7cNe9xdCfqNu/I1oy6dx7v4otZkZUb8RF8FgWwrnDe/nhFpHhm0krl4BQvTnxAjc7KC0SqACT6jJM9te929mDlNjrfc9VTxIs0uddG8sPEyJ15AAbEgrEaMQsWocajhxMNgqqUnlPocKwPRuelSOgQRde1H+HDJdG24/ujemwnyHLAr3lMEcfLIwWS6BhUrpOML+kFgByXEN65l3G/eXM4aCFq0tJRSgKMHjKOQAVpK851mgePjnzVxmhZhgyCyntcLaj7FymWGR8YhEK0ro+679dwb1NOd9ex4FbOFb8RdnU87Zj1Q908NRVemZPsg5jlaqbUDJMJfTDZxJH1mut2Vd7L5ytRzwNr/QBXHzozB3Co/Ih/oWlIFoSftVSlJ4fFLW5wkiX31pIL7UIczchBKT0Qs55ye3GJK5OIabRowmivgXZxafcJMWgisEx/bM/dt/VFZUksqPNavtU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.005404, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Jun 22, 2023 at 10:31:08PM +0000, "Huang, Kai" wrote: > > If there are better ways to handle *how* > > that's done I don't have any complaints there, but moving/adding bits > > to GPA/error_flags after fault time just seems unecessary to me when > > fault->is_private field can serve that purpose just as well. > > Perhaps you missed my point. My point is arch.mmu_private_fault_mask and > arch.gfn_shared_mask seem redundant because the logic around them are exactly > the same. I do believe we should have fault->is_private passing to the common > MMU code. > > In fact, now I am wondering why we need to have "mmu_private_fault_mask" and > "gfn_shared_mask" in _common_ KVM MMU code. We already have enough mechanism in > KVM common code: > > 1) fault->is_private > 2) kvm_mmu_page_role.private > 3) an Xarray to tell whether a GFN is private or shared > > I am not convinced that we need to have "mmu_private_fault_mask" and > "gfn_shared_mask" in common KVM MMU code. Instead, they can be in AMD and > Intel's vendor code. > > Maybe it makes sense to have "gfn_shared_mask" in the KVM common code so that > the fault handler can just strip away the "shared bit" at the very beginning (at > least for TDX), but for the rest of the time I think we should already have > enough infrastructure to handle private/shared mapping. > > Btw, one minor issue is, if I recall correctly, for TDX the shared bit must be > applied to the GFN for shared mapping in normal EPT. I guess AMD doesn't need > that for shared mapping. So "gfn_shared_mask" maybe useful in this case, but > w/o it I believe we can also achieve in another way via vendor callback. "2) kvm_mmu_page_role.private" above has different meaning. a). The fault is private or not. b). page table the fault handler is walking is private or conventional. a.) is common for SNP, TDX and PROTECTED_VM. It makes sense in kvm_mmu_do_page_fault() and __kvm_faultin_pfn(). After kvm_faultin_pfn(), the fault handler can mostly forget it for SNP and PROTECTED_VM. (large page adjustment needs it, though.) This is what we're discussing in this thread. b.) is specific to TDX. TDX KVM MMU introduces one more page table. -- Isaku Yamahata