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 4EFA5C4829B for ; Mon, 12 Feb 2024 10:50:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C6F366B007E; Mon, 12 Feb 2024 05:50:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BF8866B0080; Mon, 12 Feb 2024 05:50:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A71D56B0081; Mon, 12 Feb 2024 05:50:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 93AA26B007E for ; Mon, 12 Feb 2024 05:50:46 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 56EB41201F7 for ; Mon, 12 Feb 2024 10:50:46 +0000 (UTC) X-FDA: 81782833692.04.63FFD07 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf09.hostedemail.com (Postfix) with ESMTP id 305B814002C for ; Mon, 12 Feb 2024 10:50:42 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=M4V85FiM; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf09.hostedemail.com: domain of pbonzini@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=pbonzini@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707735043; 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=CGzi02Tn24h+4KX7saOQvUPo/IOGq4TShidAZaCvX4Q=; b=ebmZ7JIgOWrB1s6J5aXOaRJyDcyi8zIRFmHrPeIfEYqHwiC73mC6hNlimCumqCa76EDyGe CrQdx1xUgQXnOj8BJnojmAAxgq/gLjYDXXV+PeNK8LzGl++Xs0Vq9CGW9EkHcH1jaK40av 6kWQ6QD7JCUKs/AbPYpeynS55RBPuNU= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=M4V85FiM; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf09.hostedemail.com: domain of pbonzini@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=pbonzini@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707735043; a=rsa-sha256; cv=none; b=xE+NTqGrXcKfWkY+k9e+8wtsP4ncuRTgihbx+iq0iJ77LDuGgYWFu17KXh+1vTQZMyYvzm Zd756CHWCrpgzPcqxJ2m/vEo5dqhbmhBOgpPi5+lRa6x8l2vsBbJgPP/6OItV4s7iqQYIV fZH742l7a/u52t7+1XKcoVFfa6Yepi4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1707735042; h=from:from: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; bh=CGzi02Tn24h+4KX7saOQvUPo/IOGq4TShidAZaCvX4Q=; b=M4V85FiMpVf9ad8urNi0YLTZhEIaligdCP40ZSJMQuB/+e88t892IdYfQf7tpsPXcVVIRU lNvneXKfh6Qhgysh2A7uaPzLn4Ky6H1JlxEvfcY/5k919GzwiqhcwaaOXwTehtM2Yrwi0x SLJyCK4L9RQwg6lRXGq9H4HAyCbo0Jc= Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-214-iGndyeKpM1unVuvWfxfalA-1; Mon, 12 Feb 2024 05:50:41 -0500 X-MC-Unique: iGndyeKpM1unVuvWfxfalA-1 Received: by mail-ej1-f69.google.com with SMTP id a640c23a62f3a-a29bb25df84so214521866b.1 for ; Mon, 12 Feb 2024 02:50:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707735040; x=1708339840; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CGzi02Tn24h+4KX7saOQvUPo/IOGq4TShidAZaCvX4Q=; b=JyhgO3eSs1UVVBMYA3bIVRRO0AAH7u8sl5zphSCruutoCL6f9nbPklQ51G67Vz9+nY CXeQ8/R00eq5pHch6AgLhUXl7WD3OwQERu+vHV8pa7Mn3lAZveN9OF0+nbdWKL3s8JpE ozC/TwIfkwdr7wd3rD9RIxnoeS8DgBIxRAfBNRQVN8qMnDVxxmGO8CiQOSO7mbZpPvc4 el845FP3nXLxojH+6x/bmrI2xrcyrIwuy9xeMpsKMDkRERsE11MmzL/1vx1K6VWwCD3k tqhrQA9+KeZUwTAfrajFKHL8pWJP4G9ULS5lDBwSkQEKGOT7W1RybgyFqJxzQKP2LPTE X33g== X-Gm-Message-State: AOJu0Yz0uDvTMzutZkhKpLW1YsOXf3ie8s7CvFtM+r4ZiAjdWyFqRuVA CnreHRSrTW/jh/GsxCbtjXWgUDL7PL1JKMkRh3Li1YolxZEUiy2l8k0c9SA3nRmNDXObWVUNzFV iXcGVO7M2KlFjcBbWxnaPWQAGxC8esq0DeFglpygPn+LFHpeW5GAoBlw2/8CqGYYLwsXQsrJBTU sCBlTt6ELKtRwUzsuTyjk+DNY= X-Received: by 2002:a17:906:3507:b0:a3c:2293:6500 with SMTP id r7-20020a170906350700b00a3c22936500mr3694536eja.62.1707735039902; Mon, 12 Feb 2024 02:50:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IEs/dTfWeYlV2h3bAXvOeCpDOIaWG7ELxlYs012S707SouVNragOMr+4A+e87Se2En7qrc/XFhuu59BW51wQ4A= X-Received: by 2002:a17:906:3507:b0:a3c:2293:6500 with SMTP id r7-20020a170906350700b00a3c22936500mr3694493eja.62.1707735039576; Mon, 12 Feb 2024 02:50:39 -0800 (PST) MIME-Version: 1.0 References: <20231230172351.574091-1-michael.roth@amd.com> <20231230172351.574091-31-michael.roth@amd.com> In-Reply-To: <20231230172351.574091-31-michael.roth@amd.com> From: Paolo Bonzini Date: Mon, 12 Feb 2024 11:50:26 +0100 Message-ID: Subject: Re: [PATCH v11 30/35] KVM: x86: Add gmem hook for determining max NPT mapping level To: Michael Roth Cc: kvm@vger.kernel.org, linux-coco@lists.linux.dev, linux-mm@kvack.org, linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de, thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com, vkuznets@redhat.com, jmattson@google.com, luto@kernel.org, dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com, peterz@infradead.org, srinivas.pandruvada@linux.intel.com, rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de, vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com, nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com, zhi.a.wang@intel.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 305B814002C X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: fsgnz4zr658ygrh9mam4iwqizc6atf9o X-HE-Tag: 1707735042-815671 X-HE-Meta: U2FsdGVkX18KSTWytVTQ5Q0myh9XUlq0F8v0j6JblSj6ka1kH0F30bAc0qULOTrYC7el32vkzgHeGdweAGxHIkLLHtr0fe1ANk9SDexjEoBHMNQIwIZ7GhpF/T4Hl5elkIOQCyMdNH682J83vQbjJfej+1btGuews3T95BI5MUe5itMqz4WyNAVgt//NEPJZZ4c3HFeEsgZMF1sPiX84tVYGRmDg3fbNnRvR3Cf/qYHp3SQ4uQIKtdYyV0MZBULNdHbe8kmHXBaciPlUxM10Mwpmrvb1WBPSU+fUI/jA8cXiHI+1BeATBVc7SFyIiw0CreIWXMpzvP7tjLLXylKgkWCqn6VlcaWn1jpp11ophCYGdIgyUHO3DDn2JTeFWsF43n5bJa4+rHeY33bBmjBqoFoQ23A1h/7hK/J9Har3Gd0QF4WZuNgDO/Drd/G/K+eUoPSDAuiMaTZAodbotrCnUspcTviWLfSIyrFpOzrX+6BCIlPhj2AqJUt6FEYx8nXVNH2RpIVJ2Ho8zIQwls3PFyxqDmkCXOWSzuMtJwqAoTzJUqkC4nTwapJ9wh5X/ViwaYbCp3pw8NxwYi5eSMLO2UDKzSRjB+WoQiISav55WuglmU90IMz2+gmrH0DA3VGZMvp5Sv93V1ifdN3SpMM0ws1kL0UmOdZy8r9+ijOyhghPlkM2RpccltJm8AJRmI/qH7Pas5vJBjmXFXyQyh0SilNqtNn8k0FSFrEPA053vlGiUgzw1QdyYoKnD72elcNumOMLbJfrAhtZlWNXMSoI+tvPoElQ8jb/7sADOzrY5JT53H/3G4qSED6Hvz3xDCz4IhCZR1Yd4eRojKcyJeKJjsU8bwFJ/gHHkIybyhyY1735IDYuIedslYqZcdG9m5RN1nKhbq7t6KyOGQH3a47ouxX/UUy3kYKaPzAbO4tZ3TYBmRJziq18bwkSj6QZCNkWZBKe9GkaMzX8G5Q9iaj 3pcRqS12 4/XoSE9yKffCyzkejFgsNAI6ErffcKn9S0TH0JiST8RKgc7AQvzLaAnrJxusv2Eoe64kA9UiUTzukiP5mlH0JckCrSQHqmv2a0ndBT99EZnBf/R6dHiinfdQjPqixrayjpzJD2zl2eL5UX1TIFyBH+e226wyRyLhDcIiTarhFxXkmpX1hfHkpstQfgnMvqN8tD6rJLo8JZyTwQlptesDHBK/VbHvolk3yUdNk65Udjyn5DguEUewM4kqy4lSFY0w8wACG14iN8vBgM/8= 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: List-Subscribe: List-Unsubscribe: On Sat, Dec 30, 2023 at 6:32=E2=80=AFPM Michael Roth = wrote: > int max_order, r; > + u8 max_level; > > if (!kvm_slot_can_be_private(fault->slot)) { > kvm_mmu_prepare_memory_fault_exit(vcpu, fault); > @@ -4321,8 +4322,15 @@ static int kvm_faultin_pfn_private(struct kvm_vcpu= *vcpu, > return r; > } > > - fault->max_level =3D min(kvm_max_level_for_order(max_order), > - fault->max_level); > + max_level =3D kvm_max_level_for_order(max_order); > + r =3D static_call(kvm_x86_gmem_max_level)(vcpu->kvm, fault->pfn, > + fault->gfn, &max_level); Might as well pass &fault->max_level directly to the callback, with no change to the vendor-specific code. I'll include the MMU part in a generic series to be the base for both Intel TDX and AMD SEV-SNP, and will do that change. Paolo > + if (r) { > + kvm_release_pfn_clean(fault->pfn); > + return r; > + } > + > + fault->max_level =3D min(max_level, fault->max_level); > fault->map_writable =3D !(fault->slot->flags & KVM_MEM_READONLY); > > return RET_PF_CONTINUE; > diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c > index 85f63b6842b6..5eb836b73131 100644 > --- a/arch/x86/kvm/svm/sev.c > +++ b/arch/x86/kvm/svm/sev.c > @@ -4315,3 +4315,30 @@ void sev_gmem_invalidate(kvm_pfn_t start, kvm_pfn_= t end) > pfn +=3D use_2m_update ? PTRS_PER_PMD : 1; > } > } > + > +int sev_gmem_max_level(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, u8 *ma= x_level) > +{ > + int level, rc; > + bool assigned; > + > + if (!sev_snp_guest(kvm)) > + return 0; > + > + rc =3D snp_lookup_rmpentry(pfn, &assigned, &level); > + if (rc) { > + pr_err_ratelimited("SEV: RMP entry not found: GFN %llx PF= N %llx level %d error %d\n", > + gfn, pfn, level, rc); > + return -ENOENT; > + } > + > + if (!assigned) { > + pr_err_ratelimited("SEV: RMP entry is not assigned: GFN %= llx PFN %llx level %d\n", > + gfn, pfn, level); > + return -EINVAL; > + } > + > + if (level < *max_level) > + *max_level =3D level; > + > + return 0; > +} > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index f26b8c2a8be4..f745022f7454 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -5067,6 +5067,7 @@ static struct kvm_x86_ops svm_x86_ops __initdata = =3D { > .alloc_apic_backing_page =3D svm_alloc_apic_backing_page, > > .gmem_prepare =3D sev_gmem_prepare, > + .gmem_max_level =3D sev_gmem_max_level, > .gmem_invalidate =3D sev_gmem_invalidate, > }; > > -- > 2.25.1 >