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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C9008C43458 for ; Thu, 2 Jul 2026 10:51:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 22B6C10F2BB; Thu, 2 Jul 2026 10:51:21 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="UqfDPRoQ"; dkim-atps=neutral Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9521910E498; Thu, 2 Jul 2026 10:51:19 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 05B8760103; Thu, 2 Jul 2026 10:51:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A432F1F000E9; Thu, 2 Jul 2026 10:51:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782989478; bh=prNepFwbbNENFK8ZoSoOyJUpCn4wZi4Ts2NMaeAqiMU=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=UqfDPRoQYK8ANeU4JUCLjKk9A8iE+hSWZ5wo1NqICXJ2dLmh73t4GqMO1fh0HAn1K pwTV7GYSa5WUr2DuNxzAidH757fbi4hkBVfhORzKkMPouaGSMTC3eC7P64pygPx1gg twzR4BS+XJmtcXGhnBk6IOBVH5lML7tYmNSrdqjQkghoHAUdY2a9K3BbGlsRvEzP8z qiRubXQIvMiYJo9cyIPjaUHLYRsw4Q780Fqe6cunRrITc9+NUlbI4WXrJrMsbc/go/ 0sJrEx4V4K3K4d+AIMG568tIZ3hxQUlIFCj6BKr8thGyIdR+Mq7VpaUHu2vgSQvE3H pIcYBXUjIpU7A== Date: Thu, 2 Jul 2026 11:50:56 +0100 From: Lorenzo Stoakes To: Pedro Falcato Cc: Andrew Morton , Russell King , Dinh Nguyen , Simon Schuster , "James E . J . Bottomley" , Helge Deller , Jarkko Sakkinen , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Ian Abbott , H Hartley Sweeten , Lucas Stach , David Airlie , Simona Vetter , Patrik Jakobsson , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Clark , Dmitry Baryshkov , Tomi Valkeinen , Thierry Reding , Mikko Perttunen , Jonathan Hunter , Christian Koenig , Huang Rui , Ankit Agrawal , Alex Williamson , Alexander Viro , Christian Brauner , Dan Williams , Muchun Song , Oscar Salvador , David Hildenbrand , Suren Baghdasaryan , "Liam R . Howlett" , Matthew Wilcox , Marek Szyprowski , Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim , Masami Hiramatsu , Oleg Nesterov , Steven Rostedt , SeongJae Park , Miaohe Lin , Hugh Dickins , Mike Rapoport , Kees Cook , Paolo Bonzini , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-sgx@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-tegra@vger.kernel.org, kvm@vger.kernel.org, linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev, linux-mm@kvack.org, iommu@lists.linux.dev, linux-perf-users@vger.kernel.org, linux-trace-kernel@vger.kernel.org, kasan-dev@googlegroups.com, damon@lists.linux.dev, Rik van Riel , Harry Yoo , Jann Horn Subject: Re: [PATCH 13/30] mm/vma: refactor vmg_adjust_set_range() for clarity Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Thu, Jul 02, 2026 at 11:37:11AM +0100, Pedro Falcato wrote: > On Mon, Jun 29, 2026 at 01:23:24PM +0100, Lorenzo Stoakes wrote: > > Add comments with ASCII diagrams to describe what we're doing, avoid > > dubious use of PHYS_PFN(), and use vma_start_pgoff(). > > > > The most complicated scenario represented here is vmg->__adjust_next_start > > - when this is set, vmg->[start, end] actually indicate the range to be > > retained, so take special care to describe this accurately. > > > > No functional change intended. > > > > Signed-off-by: Lorenzo Stoakes > > --- > > mm/vma.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++---- > > 1 file changed, 47 insertions(+), 4 deletions(-) > > > > diff --git a/mm/vma.c b/mm/vma.c > > index 6296acecf3b7..1e99fe8aa6ef 100644 > > --- a/mm/vma.c > > +++ b/mm/vma.c > > @@ -704,11 +704,54 @@ static void vmg_adjust_set_range(struct vma_merge_struct *vmg) > > pgoff_t pgoff; > > > > if (vmg->__adjust_middle_start) { > > - adjust = vmg->middle; > > - pgoff = adjust->vm_pgoff + PHYS_PFN(vmg->end - adjust->vm_start); > > + /* > > + * vmg->start vmg->end > > + * | | > > + * v merge v > > + * <-------------> > > + * delta > > + * <------> > > + * |------|----------------| > > + * | prev | middle | > > + * |------|----------------| > > + * ^ > > + * | > > + * middle->vm_start > > + */ > > + struct vm_area_struct *middle = vmg->middle; > > FWIW this can be simplified to > adjust = middle; > const unsigned long delta = vmg->end - adjust->vm_start; > > But I guess you're looking for explicitness here? Yeah I'm intentionally trying to make that explicit as this code is very confusing, so people don't have to think 'oh what was adjust again?'. > > > + const unsigned long delta = vmg->end - middle->vm_start; > > + > > + pgoff = vma_start_pgoff(middle) + (delta >> PAGE_SHIFT); > > + adjust = middle; > > } else if (vmg->__adjust_next_start) { > > - adjust = vmg->next; > > - pgoff = adjust->vm_pgoff - PHYS_PFN(adjust->vm_start - vmg->end); > > + /* > > + * Originally: > > + * > > + * vmg->start vmg->end > > + * | | > > + * v merge v > > + * <------------> > > + * . . > > + * merge_existing_range() updates to: > > + * . . > > + * vmg->start vmg->end . > > + * | | . > > + * v retain v . > > + * <----------> . > > + * delta . > > + * <-----> . > > + * |----------------|------| > > + * | middle | next | > > + * |----------------|------| > > + * ^ > > + * | > > + * next->vm_start > > + */ > > + struct vm_area_struct *next = vmg->next; > > + const unsigned long delta = next->vm_start - vmg->end; > > + > > + pgoff = vma_start_pgoff(next) - (delta >> PAGE_SHIFT); > > + adjust = next; > > } else { > > return; > > } > > Reviewed-by: Pedro Falcato Thanks! > > -- > Pedro Cheers, Lorenzo