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 8DAFBC282EC for ; Thu, 6 Mar 2025 10:54:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3BE60280002; Thu, 6 Mar 2025 05:54:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 36CBE280001; Thu, 6 Mar 2025 05:54:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 20DFF280002; Thu, 6 Mar 2025 05:54:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 03633280001 for ; Thu, 6 Mar 2025 05:54:55 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 6A07C81360 for ; Thu, 6 Mar 2025 10:54:57 +0000 (UTC) X-FDA: 83190818634.28.A13B139 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf28.hostedemail.com (Postfix) with ESMTP id 959B8C0005 for ; Thu, 6 Mar 2025 10:54:55 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=P1TRbo+n; spf=pass (imf28.hostedemail.com: domain of tabba@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741258495; 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=n8NpZ5y1NnHyafYNLq4ILW6Ns+61OzoqQPIfzuXR+8g=; b=C8RndOaP9s6QWGy2E6rFRLXS5iGS6hluEToGu+hTU80A54dM/Cdw1zC/KnsEp4WAIl6JXU ajZlo+40G+wFs/s8keoOejBwXc/wDJvK2FHy2NfFuNyWNovtnfSC5nrllhH+eppONEuuHk h3ZOaIo2Hfe3MBeylWVmAsnmBpMNzJ0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=P1TRbo+n; spf=pass (imf28.hostedemail.com: domain of tabba@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=tabba@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741258495; a=rsa-sha256; cv=none; b=0VGR86Va2ZmnYi56BA2CJT+/URDzZYaJ9opTPfUt4I5i3TGkHjpOKxypW8JGkJvJ1U1uFF 3sSKHTtjM5XKxBlCVa1kySZYOAW62C45iTrgxL59Cb1hpIHsNxv6DMMctcaFpvzFDd55Hn n5aQdf8AjWr1C2qotMQwPl1t3Abw5hQ= Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-472098e6e75so145661cf.1 for ; Thu, 06 Mar 2025 02:54:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741258495; x=1741863295; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=n8NpZ5y1NnHyafYNLq4ILW6Ns+61OzoqQPIfzuXR+8g=; b=P1TRbo+nA26RY6Sel6lrarl18ybi2MIqA2dj+KRjYAbhHruVb+fm8E3Q7a6bpuNeYf xm3rgLC76rKdpw7Joej4dW5Dg4HaOdCVd5HV/VsThgVAFUWGQeRLSYozENnhWVk6EgD5 2Wrc1W5jSGjrfYcp1IKO+scc4XMBmHaaRLQVTJkSq28XKwEz4B/bJ/hEu1GJD9gZOf+V D7IRtAEt8jG+qDbt8Tb9aA55GFwvvvQVTNxm8tJaJ6Y8dujQW7MSzPmk5YeV4RtxMxPE pitEn/d42xLDJ63KSoN1uOhpXefGIe5LK7OK4Zi4NCBc6ISMj99IAIC0CnLC2zZpShnS LFrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741258495; x=1741863295; h=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=n8NpZ5y1NnHyafYNLq4ILW6Ns+61OzoqQPIfzuXR+8g=; b=WT63oDLbOuAmKsqj6Mzb4sMLV4ca0h0GEyib4XNlD7irYLCohAB32dG+YcLTPhXsm5 OUDqbZoFgWK9bwzJ2857EKoSn6AZoK9D1oi+FYClUD6rKj+tCFTi4nBN2Rs4RgisC5r+ Wvzke/uBT5LOlqFikULjZI+ifYLlsYSh1GSBZEQjFZIFq2KvzPvO0ETc/68nrp1pCX1g uqHdWmeb7AS4hkcyaYzjblmk9AH27luZkGeZqV7k6T2PCTMLuEuRIs8WM5Tb/Fij2OJy olcn6MtQcpkVxM50xWsPZqq7H8rwuRi5GB01DE3xtjuSCB6toxRvDXUqsETvPo3P9lg8 trTw== X-Forwarded-Encrypted: i=1; AJvYcCUGRaPDldRlUDHWF7s3WZF1zv2WEX3bIg5gVtnvS86Mm1+MDxioqMfhCx68ThKGYF8TcvYZYjqMdQ==@kvack.org X-Gm-Message-State: AOJu0YyJRwRn4I2qhP2OtMAlCJBf/gH8aSjh0IbkWXD55QcoC9Sdfwdu /bhCgjNrMxJ4NVKzeGQJiayUvgAPgfdXoHcSHaXUiItJN0P3RfblNj3M5f7//crO6j/93toDPsa OSBiVub8KN+dHjjGZuAfGtbLfNdboaYqh11K6 X-Gm-Gg: ASbGnctxxxBKoTG03jmjee1cohldiWnvp7VbvQrvEwPUFrJwgyebMdMIxXElO87hvjv 4LpT6vlZbbKCVoxA56E79/hlyZEBz1jAoJvZL1PnZqsFEbSedmRk6nDdcawcy6ntnkKk78Quek5 heQpmlbhNbftkZGloCob2HFf41 X-Google-Smtp-Source: AGHT+IG6OsD42F1knNe3Kt9VjRfTzIWJ04jHpV3JKdkuhxaDtWGyJxm9xft2KkM6tmIjMhnXXjfbDbXbNxWWCB4wmEA= X-Received: by 2002:a05:622a:19a0:b0:474:b6cb:faea with SMTP id d75a77b69052e-4751c6128a6mr2545721cf.25.1741258494501; Thu, 06 Mar 2025 02:54:54 -0800 (PST) MIME-Version: 1.0 References: <20250303171013.3548775-1-tabba@google.com> <20250303171013.3548775-7-tabba@google.com> In-Reply-To: From: Fuad Tabba Date: Thu, 6 Mar 2025 10:54:17 +0000 X-Gm-Features: AQ5f1JpE7UvSKbJ3ozjQNKKGFVgoXYTnyCWiPZhh_kAgKiUUYyGIZ2pOslJRodU Message-ID: Subject: Re: [PATCH v5 6/9] KVM: arm64: Refactor user_mem_abort() calculation of force_pte To: Quentin Perret Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, ackerleytng@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 959B8C0005 X-Stat-Signature: zozbjx6c1o768x47wkzsnwjf5rt1xudo X-HE-Tag: 1741258495-100702 X-HE-Meta: U2FsdGVkX1+ueeXDEnuRTXrFCE1I02BhYOacicn0zLIntALMZNeVUvLbtSnRKtGCQBK88gAGzy7VtC/i4TyOvFllWN59yQQ0v3VvubD0C4uGr2Iku1Wq72pc4cFrq2zaJQY/p29iJot384TAE+164FRI1WZ3Tjd7y4Pko7aZTetDBhNIo4sUxnyGMqN+YBHcvNvNuycDPymiNZFNdq+YE8lbxgKKbUNSbw4PSRoa5jbo39RrNrv/o+jmO28w50krX0JP1fx3iTKMLkWKuwtQahqwav3enX4yeFmSPQc8BnBFxONJe85QyQtKlX1NuFMLm/7Hkg0vjTwKOTGDOAPNZEfJZ400TR0GoF1MLQuA1GuoznnXwRRlTKdcGD7p3asGP5a/ED8n99qYHcXZzrFZbKxBlTRT18sBxm4jj6l+K6WE1Nly97YGMjT5XBUZM4nLPiy/N5i2LgCHlyrXyO1dNjYfQeqDn4ZNIoRLpGhtLMGkNl+EygTPK6u1C/PXr305ftHqahFSlQYpgHhxCrU608OZF7mM3P5RATHDexo8Nvbq1VmZ2nKizybemEEDudbe3/KtfHeoDzC7wUQERQ+zEBo5L1learNez59lW6Pl5nGgU1sbwzJR0dUOWeM5ovxwz+hlXIfIvyelLXFAWwlWnwR/NmpVrDAe4qyjr+tRYW1HPNREA8uEj26zKDWwWDlDI+1dx9QXTNIgP5SI/fmw60jzALaYKSX8ejmI/6m+5MTJqJa/mRVNqkp4E9MgXns5LELN+N55BdfgGBlNZBNvMBt/Vh8Uju523zEg998qa03LNq2OhJQvOJONwZwpsIcm3Qat0B+CPBEPYbF7OY8Hj4QdIJMZ0CMK1YKXDuBsdReTrOjsXGPKv5Kc6OT65VdNkzP43kmmchtTo15mpZELvIyQ98UnPOgVoJFC/SeQNBTk/g3NRvEy0fSj++LC7MOw0gag/YT0m7nUMnNrlCa lg9/BNLR qnbkbnEAkNOmlH2v+HN8Ney4+WbAx4YFOLeepIlNv4eU4SNwmhAJ//KW4HqAclX5fKIyfvkWXbgbLHseF6zqrMvgkeM6s2Ilz56VFc7UUgikyMvCU1tXEHlwTGasioRqb/AvLe7cHQAHD8LlTPY+YUC0I7HF2lwEjkgJqCIstgV3aASipWVJa4GqUW2hQjU3kRI+Eae7VSVJ3WnMklgKtoIFkbIaJrRMLEjQJz8eK/X1YfUD3X5n3bk8xfUpZySJMDQBtRZzEuxK3FtpUI+BeydZTYjPEXMlDYHb0irWyoTS01PKBdY7xeOgcbv5oeYagcYpp07BkWEbZKIxwT+du0rp0QaR/6GgITLTNfdZmE9hafksR4T+kN7ZSXw== 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 Thu, 6 Mar 2025 at 10:46, Quentin Perret wrote: > > On Monday 03 Mar 2025 at 17:10:10 (+0000), Fuad Tabba wrote: > > To simplify the code and to make the assumptions clearer, > > refactor user_mem_abort() by immediately setting force_pte to > > true if the conditions are met. Also, remove the comment about > > logging_active being guaranteed to never be true for VM_PFNMAP > > memslots, since it's not technically correct right now. > > > > No functional change intended. > > > > Signed-off-by: Fuad Tabba > > --- > > arch/arm64/kvm/mmu.c | 13 ++++--------- > > 1 file changed, 4 insertions(+), 9 deletions(-) > > > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > > index 1f55b0c7b11d..887ffa1f5b14 100644 > > --- a/arch/arm64/kvm/mmu.c > > +++ b/arch/arm64/kvm/mmu.c > > @@ -1460,7 +1460,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, > > bool fault_is_perm) > > { > > int ret = 0; > > - bool write_fault, writable, force_pte = false; > > + bool write_fault, writable; > > bool exec_fault, mte_allowed; > > bool device = false, vfio_allow_any_uc = false; > > unsigned long mmu_seq; > > @@ -1472,6 +1472,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, > > gfn_t gfn; > > kvm_pfn_t pfn; > > bool logging_active = memslot_is_logging(memslot); > > + bool force_pte = logging_active || is_protected_kvm_enabled(); > > long vma_pagesize, fault_granule; > > enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R; > > struct kvm_pgtable *pgt; > > @@ -1521,16 +1522,10 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, > > return -EFAULT; > > } > > > > - /* > > - * logging_active is guaranteed to never be true for VM_PFNMAP > > - * memslots. > > - */ > > Indeed, I tried to add the following snippeton top of upstream: > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > index 1f55b0c7b11d..b5c3a6b9957f 100644 > --- a/arch/arm64/kvm/mmu.c > +++ b/arch/arm64/kvm/mmu.c > @@ -1525,6 +1525,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, > * logging_active is guaranteed to never be true for VM_PFNMAP > * memslots. > */ > + WARN_ON_ONCE(logging_active && (vma->vm_flags & VM_PFNMAP)); > if (logging_active || is_protected_kvm_enabled()) { > force_pte = true; > vma_shift = PAGE_SHIFT; > > And I could easily get that thing to trigger -- the trick is to back a > memslot with standard anon memory, enable dirty logging, and then mmap() > with MAP_FIXED on top of that a VM_PFNMAP region, and KVM will happily > proceed. Note that this has nothing to do with your series, it's just an > existing upstream bug. > Thanks Quentin. Since you had told me about this offline before I respun this series, I removed the warning I had in previous iterations, the existing comment about logging_active, and made this patch a "no functional change intended" one. > Sadly that means the vma checks we do in kvm_arch_prepare_memory_region() > are bogus. Memslots are associated with an HVA range, not the underlying > VMAs which are not guaranteed stable. This bug applies to both the > VM_PFNMAP checks and the MTE checks, I think. > > I can't immediately think of a good way to make the checks more robust, > but I'll have a think. If anybody has an idea ... :-) > Cheers, /fuad > Thanks, > Quentin > > > - if (logging_active || is_protected_kvm_enabled()) { > > - force_pte = true; > > + if (force_pte) > > vma_shift = PAGE_SHIFT; > > - } else { > > + else > > vma_shift = get_vma_page_shift(vma, hva); > > - } > > > > switch (vma_shift) { > > #ifndef __PAGETABLE_PMD_FOLDED > > -- > > 2.48.1.711.g2feabab25a-goog > >