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 9B568C282D1 for ; Thu, 6 Mar 2025 10:46:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 645E1280003; Thu, 6 Mar 2025 05:46:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F6F6280002; Thu, 6 Mar 2025 05:46:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4972D280003; Thu, 6 Mar 2025 05:46:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2BCC3280002 for ; Thu, 6 Mar 2025 05:46:29 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 62CD781345 for ; Thu, 6 Mar 2025 10:46:29 +0000 (UTC) X-FDA: 83190797298.16.96DB14F Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by imf08.hostedemail.com (Postfix) with ESMTP id 51607160008 for ; Thu, 6 Mar 2025 10:46:27 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=yXJS8Wfw; spf=pass (imf08.hostedemail.com: domain of qperret@google.com designates 209.85.208.42 as permitted sender) smtp.mailfrom=qperret@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=1741257987; 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=k9jmbAtkWcX3aIfTXb+ZS5XnwnXJn6Hdi83Ai2OZSyc=; b=c4fQKDQR2HXRjeZu+nDYb/BJkOxznr7432IUq2BQy4xIUVkDtHNUn6idVO3cT7UbUP3Qh0 subL29Cm/usMN1uZ/pgVd+g/majHY85AKgJvvoYk0fLuWWlIIgITdIffNV27oHSz+esHTp No+sU2/rPn0XHRRpf6TxLjE4gNo4Oq4= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=yXJS8Wfw; spf=pass (imf08.hostedemail.com: domain of qperret@google.com designates 209.85.208.42 as permitted sender) smtp.mailfrom=qperret@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741257987; a=rsa-sha256; cv=none; b=Un1d+BXiO+9bTItnF6jrf3QKVdDrCcQvh3EiBogkF7LEY39WImgFLlwzfM2LKdlEl9gOJf OTwAUWADpJdRPCOQv8v2VfRKaOFfF6oX1jrwFWWBBLsTrF6zl2dxcaN9+0W4YT/np0q/lh fG1udNqJMH8QMtHyxGI6F1/PBWtwW34= Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5e058ca6806so838925a12.3 for ; Thu, 06 Mar 2025 02:46:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741257985; x=1741862785; darn=kvack.org; 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=k9jmbAtkWcX3aIfTXb+ZS5XnwnXJn6Hdi83Ai2OZSyc=; b=yXJS8Wfw1xSl0H247T/w2VuI1BaI1m8BM+gCZ5Tf6pLjznAmjvbLXbppylP/PMc9wH ong0cz8VG9PfrvbCdoF/LtWTc00DpwAs1X0N3ma8YbnSvrWBVmlnZpn6BpVmaIs50C06 iGOWb5jG9vSib3pXGkz+pABNfMDrDGNYKBtfKfKwnYyrT7ROxvfcD/uwBLhu1B9tAUoC jlks3bO3XX6yShRkoSFyPllfZWFhAz80m9Q36d1agjUru+LI7Y7X6RJYn9Ix+G4dc+vv mNkXs2jBev7mDGsEbchlSNfcs5mluao0hUZrCeHVcf76FBkXCbROoeUeqojcQbbhyE+c vz+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741257985; x=1741862785; 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=k9jmbAtkWcX3aIfTXb+ZS5XnwnXJn6Hdi83Ai2OZSyc=; b=GqPcgNia5PGh1aMdZz7CtonZtVjxxr6HXprSM7u8yrqsC9K3F2vdt/sDUlVzuzXfPl 8LBakfKB0k41rRJI+IEl64qUNi1I93hxqW5GJzSDPx4bFpjTjZ6xE7pCoWg+lEUxuRtL KsrmFSi5eicsNpb0XUtawHdmho/CF47FhllOkwUL2j0NBbkmmBe5Vd1KTAJIKXn2JlRI SJvyS7G07LewtBqjBUvjzR5rhFLbcgFfFyNYGcbNjIrwe7BIPUu3X49/Bwq26TbX1Vq1 +NMKnSFT0H/Ix26UgOHmGiElgBpBxuJ6auTWgaWdCdje+6CPLhW6N9n49OeiS+63CgrV 67/g== X-Forwarded-Encrypted: i=1; AJvYcCWNGt1L0PSsvBVFr0U5eqMJXE6cBVtmQICaeRgPnfc6ST9Ncp2DBlLEfDJgtzNm3pKxMwYQp5K1gQ==@kvack.org X-Gm-Message-State: AOJu0YzKEa5dCjr45vil7nD1ShfZp9Qh4CmTpD/S9B7pX7lnhww+tsC+ X37J8WhqcvWSWmBchhUQL5EsZQdeZqZFG2CP4/sf8Rr/vBMb2S8EwLTi0VV7sg== X-Gm-Gg: ASbGncsNgilQcnNe050qjY9TKr6xj0QaLGjJZU91MZVykHz7TaWLYSDviLg+Tkt2aqM c4BS6L9B5BTRGnDS8hvKR+zz310Qtc5jKPbN3gjh/XIaNcWLNYIIq+GtLXlPsvBiC+2dNO/ibJ1 YwDVxHdbXUu0NsgxF8i8iI+9NEtwVo6xASvUoGHHCATn9QdxjUpzrLlvjzk6kPN0B8vfnvibhmW XW6+KZyNyZB7d2iuZGh1J8EwSME3DVmGM6VzO7+jLUDFjjDldHjBLb5lZ7/R8bnegQIZxesJmba SLDasuSHGRQhWxvLmifhgFPP7IWHs4Ctsq8AW+jaOQRNefyDoMW3eIyWt+bLuf2EzL7Rl4BLh2p 8F78= X-Google-Smtp-Source: AGHT+IETwKaeWit7V6acHj/PeTIV3AggcxsBRGA3DBfdPK+S9nl8Tgvfmoy5A96/iD/YcQ6xyu0Sig== X-Received: by 2002:a17:907:6e93:b0:aa6:b63a:4521 with SMTP id a640c23a62f3a-ac20dababa1mr545816666b.15.1741257985088; Thu, 06 Mar 2025 02:46:25 -0800 (PST) Received: from google.com (140.20.91.34.bc.googleusercontent.com. [34.91.20.140]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac2399d7dadsm74534866b.172.2025.03.06.02.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 02:46:24 -0800 (PST) Date: Thu, 6 Mar 2025 10:46:20 +0000 From: Quentin Perret To: Fuad Tabba 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 Subject: Re: [PATCH v5 6/9] KVM: arm64: Refactor user_mem_abort() calculation of force_pte Message-ID: References: <20250303171013.3548775-1-tabba@google.com> <20250303171013.3548775-7-tabba@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250303171013.3548775-7-tabba@google.com> X-Rspam-User: X-Stat-Signature: 8kxhky99hiz5wf8fuodtrm58i5b5hhud X-Rspamd-Queue-Id: 51607160008 X-Rspamd-Server: rspam07 X-HE-Tag: 1741257987-339710 X-HE-Meta: U2FsdGVkX1+Yusw4iPQDl6b4G6oswLyklOaC4aOm8UrSACcvVQEG1Bs9RpP8JSgu/Rsw1Wxqlrg/ONGlSY/btQVcx+FOhBBjoz+L/0EnjVV2k5hClgRAwGDDD2CRJ2ZVQt5sILG/YFUlksF1MEuT4Qts+acNbJKm/R8ajm754yiw/XPOvn/ijA2KHl1knSY1+x334jcCvFC2hb747U+2nenbNdiWlrjRJZLGGhT7vTv3iwTQ2QLcj81/1B9v9KGIpU3aQ5mmcsELSbNkXEU6FmsOhpS8VLigzWO0upC6DHhVWP7JAmk/5btnc123pwB0m5cQMqH+c5MOgn2drz+rnFdsK5J02cQH+UaLi//EeyfaGQDpc9eS0JQROsp2Y2MQ1cnkd8JukPgTnSdRBbu+uqXw0f6kP7Q9VnXEb9ESmI+U3gIQQIBMl5B8u8V0RRCwUT8gsi4+FDY9wBAgCoIOZAf9y5JGxCV0qnDfXanRybR1sha/Gpw4zz+HAGwSi5ZXohSMtL5ujoTTCDU6CD+jjmuvWBXPctnzCo6Rm+lSTyH3NDpQ5Hyp7NRGzbfSMRjP8lLHeHIGrdgGYNqfQYfkoXC3Vkl4nbaU/dhKaUm9vk8uB6DCUFWo/W71+saz7SJQ5pbrtdTOgpw9rdmHYKD2oCBY0uKP/4H3or/t368qfIoDHH4jiF87bM/ZIuzsejbeN9aQ2uTIV56+eQgr/V7eqfJjIAylilreo6zy7XmNQKtaTR+heTogUzqvzAk4Z0rZRmkAHrBalgsX0Mq1SoWSGzVp+u6uPmN0ssHY2W8hXco3wLqjniULVXDFy1j7s7wXVGP+g4tN5w19wYXDsgUyo6jKwL0mKdiJIGM4ctuii+XQOskRJ9CPCBYbjyKu8Q4gdCTA9OHhJF1kGBPiQmBSeV/BqJLNLf1ZzuDHOu+AlyP1Q113lwM5IdgzymJ9XbYkGpsrGCL9zVNlVmDMdPA iktQMrmB spnTV/SxcNXPl/CY5ApRIGgfD0oDo944qwOICc0rHxgEiAPQcSU2wEBn6pgdvAoOBGvbdX5UCsXc8cfFjzmfFpP8lTI1lY7IzWjpeq+lf8D6+QrJgsCUCPooWILvTpVwuW70DnWWvMFeod2BaGHqEyvhWSnu4SlnETsbN/X7eHxVoF7WCxET5fm3VaNEGnXZkAFuFJxJdgofBvC3myA1t+kmUQFcIgPbSrmaCkUT15O2+1CEuWOUEVkoe2YK/H6qpMXod4he38f/0RXvgRusbLizfzM+ZV8pNf4gW5jB/DujBCqLKJqV4jaWUx1lq8E1wDO4iYQLgKtrq/2HNOQPTO8YdCnkK1l2bjo8Nm7J7Y4tx63hyHAyCtvz4rNxFfu0rYM51h0Wci5WStJMjDo4EAJQfM4A2x4vhODCjN0xnbWuBzQkaIC0P1hpdigrBANWwcOdilYtplRLRix/TDPbiEtsqtA== 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 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. 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 ... :-) 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 >