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 4309BC61CE8 for ; Mon, 9 Jun 2025 09:52:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A54976B0099; Mon, 9 Jun 2025 05:52:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2C3A6B009A; Mon, 9 Jun 2025 05:52:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 969DB6B009B; Mon, 9 Jun 2025 05:52:54 -0400 (EDT) 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 77EBC6B0099 for ; Mon, 9 Jun 2025 05:52:54 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 22C4B1A16C6 for ; Mon, 9 Jun 2025 09:52:54 +0000 (UTC) X-FDA: 83535398268.29.8B21A75 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf30.hostedemail.com (Postfix) with ESMTP id 5544B8000A for ; Mon, 9 Jun 2025 09:52:52 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; spf=pass (imf30.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749462772; 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; bh=PvOKh9mKSFDnwv0a7NTN8FiJNwAXExhR+wlYPTD7xKY=; b=2ICi08jt+XCnbMwif6BqgrgPk9m++taWdDfJ5Hyp431ISWiEUsZWcRfW/62aQT8ixxcphz vDT5kTRGC24/LkUrkwbtzDz6fh/IM3MrpSAr2fBrbOTJTuOEYMzf5Yw25INvaT7/+yHGI9 iYxmf4DnUKc7crc2duDysSp+oA3W2Pk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; spf=pass (imf30.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749462772; a=rsa-sha256; cv=none; b=nw50hqEUqzd/TJmKlvRw1k06hqtyMSPlantJzLXfWvsKOlM6Ur0/2gLN8FMrQnUtwPdHMW /Bn/0jEWnmmdTuy5YV5wNSywF9E5VQtqPSMcwV+T4pX1r/UsFVWG6h/EXlmlABKaxdE8Zv iEYnhORKdOqxD1AH9wECiI/32VeNYJ8= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CD91F150C; Mon, 9 Jun 2025 02:52:32 -0700 (PDT) Received: from [10.1.39.162] (XHFQ2J9959.cambridge.arm.com [10.1.39.162]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 72CC83F673; Mon, 9 Jun 2025 02:52:49 -0700 (PDT) Message-ID: <671f8164-a90b-48d7-9446-359eb9493500@arm.com> Date: Mon, 9 Jun 2025 10:52:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] mm: madvise: use walk_page_range_vma() instead of walk_page_range() Content-Language: en-GB To: Barry Song <21cnbao@gmail.com>, linux-mm@kvack.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Barry Song , Anshuman Khandual , Lorenzo Stoakes , David Hildenbrand , Oscar Salvador , "Liam R. Howlett" , Vlastimil Babka , Jann Horn , Suren Baghdasaryan , Lokesh Gidra , Dev Jain , Tangquan Zheng References: <20250605083144.43046-1-21cnbao@gmail.com> From: Ryan Roberts In-Reply-To: <20250605083144.43046-1-21cnbao@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: mad3npy18qkz5ejgjon4ddfb6xq35tks X-Rspamd-Queue-Id: 5544B8000A X-Rspamd-Server: rspam11 X-HE-Tag: 1749462772-897103 X-HE-Meta: U2FsdGVkX1/QR3dmtM+c6+259MbZxZvgrbwzMcVx1tkAcEScfSbyUiqJseXVsuGHS7FJrY6WYdaNMxsgRyBNHxdWTddySXoJzqgIq59DpUOhq0oN/si8hCoFs/I4G8FRryUE6iOoAm+cFVxmsV/IUXYRHwBTHzqSvig2Wu+fn46j8xRoVpjCuralgepF5PE4VUWnnTIih/WRd49a0/pIM0HHw/2slxgAv9AiUZEaFhEE0/vHm40EM3hvHFGkMBde4k4USNTYCHbC3l0JY2DeC4NAlG17oR3L3DJ5MggdUb83taKfZ6/xjQZLLrNwumyCZMJEAIevgNY7ursTDoeKa1bhA3znISDLhgjaYs6hhbTsUDKNhxOZvE+3JtaE2GQcFe0jD0kQztYiHHpnS1KBXGGVDdpUq4H8b15kZuYMFW+DtqnKLNaSlqmPsHPcriYS2wzyDhG5s/96IF5ixsCCTistIsoBA/enqJmiGqFGW3N0BnR+2YQQNyMMh9ZyKDRbIM0J44URYnY/mEYjvgjz6+k+Q9bxIWNBHiBG0YoOYj+/PNT7U2XAJovU0B/5zNmThYI5Dub/v/iUOpi7/X8O8DbnAZ62zg0uaHkv/Sz2VSyQ98wLN9f71LLgBc5RCD3pQe4dh3b9BsHxhM4ag7ObkKZLYhu0EhLWXrRzTTXOBGleb/4i2lp9S3Xt6w/pBjsSQv12cSr8bM2sA8ACIJJjG6MGHa6k0OZraA+n2Uiq/hrJKsgSFJiK5PF6bDQverPgcBHuZxulzeiJ7qKMlGzkBcm9i80x+JIda1IOu5vEntpiZma79jhnh/pLOJAaBv3tLouDHDmU5PN5MHLaj5/1arOP6FY+Gu6/Rss5hGze/9a86PLiBvzWG2kR8q6DAlwiVFP1/dKatXYkLAHUWqsTCrY9QdwmYQ5A3OuU5rs9Ce1H6s0X+rIFhRt/4sIsO3R8ULo/0S9gNig3UxUMXbl QEXKt5b3 YzCdozp2JcHvOkL6i+SH62h+m1T+WQasTysurm0llTCU7OFYCrKcBqv0I4PtsqXPS+T6uLzKMeb4fIr5eDAqHG1y2VP5MkDbytxkqgYSAxxdB9/ngWrPCln6Eyb8Rckc7BpvSa/mQYzB3toys28SNwZAlX3aVDfmJabNUf+K3FHga/LGtD1U89/qIfjwmGwS2dgsC7RP1CIh8irfi9OV9r/Q4Tw== 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 05/06/2025 09:31, Barry Song wrote: > From: Barry Song > > We've already found the VMA within madvise_walk_vmas() before calling > specific madvise behavior functions like madvise_free_single_vma(). > So calling walk_page_range() and doing find_vma() again seems > unnecessary. It also prevents potential optimizations in those madvise > callbacks, particularly the use of dedicated per-VMA locking. FYI it looks like this patch breaks all the guard-region mm selftests with: # guard-regions.c:719:split_merge:Expected madvise(ptr, 10 * page_size, MADV_GUARD_INSTALL) (-1) == 0 (0) Am I the only one that runs these things? :) [...] > mm/madvise.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > [...] > @@ -1160,7 +1160,7 @@ static long madvise_guard_install(struct vm_area_struct *vma, > unsigned long nr_pages = 0; > > /* Returns < 0 on error, == 0 if success, > 0 if zap needed. */ > - err = walk_page_range_mm(vma->vm_mm, start, end, > + err = walk_page_range_vma(vma, start, end, > &guard_install_walk_ops, &nr_pages); IIRC walk_page_range_mm() is an internal API that allows the install_pte() callback, and the other (public) APIs explicitly disallow it, so presumably walk_page_range_vma() is now returning an error due to install_pte != NULL? Thanks, Ryan > if (err < 0) > return err; > @@ -1244,7 +1244,7 @@ static long madvise_guard_remove(struct vm_area_struct *vma, > if (!is_valid_guard_vma(vma, /* allow_locked = */true)) > return -EINVAL; > > - return walk_page_range(vma->vm_mm, start, end, > + return walk_page_range_vma(vma, start, end, > &guard_remove_walk_ops, NULL); > } >