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 9AAC0C4332F for ; Thu, 9 Nov 2023 03:26:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2D0B78D00DC; Wed, 8 Nov 2023 22:26:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 283838D0073; Wed, 8 Nov 2023 22:26:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 122AA8D00DC; Wed, 8 Nov 2023 22:26:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id F30F38D0073 for ; Wed, 8 Nov 2023 22:26:11 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C8064A0A6E for ; Thu, 9 Nov 2023 03:26:11 +0000 (UTC) X-FDA: 81436977342.07.0177D56 Received: from out-180.mta1.migadu.com (out-180.mta1.migadu.com [95.215.58.180]) by imf18.hostedemail.com (Postfix) with ESMTP id 26C3B1C0014 for ; Thu, 9 Nov 2023 03:26:09 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=C4B7IH4J; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf18.hostedemail.com: domain of jeff.xie@linux.dev designates 95.215.58.180 as permitted sender) smtp.mailfrom=jeff.xie@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699500370; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=yFdep+48cn5+ZFbHO3HlhiGibtZePlz/+w+2QxfYwYY=; b=3ipEPRaOc7n8pPBaypSxWqOYCERkTkLoGm+nV2uycoutefsppceaQJrNDPR2fP5a/jncLx rXL9tQNz+kISxFzUmwkw0Xo24fkRY+TAeSeSqTER0z0kVTqRDBlGbf22gVrXo1BTUQf5K7 vAZHxTFtJKPHYrJTuUHLJBaQAOib1J8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=C4B7IH4J; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf18.hostedemail.com: domain of jeff.xie@linux.dev designates 95.215.58.180 as permitted sender) smtp.mailfrom=jeff.xie@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1699500370; a=rsa-sha256; cv=none; b=2nN0NOzwCigaxzNVU1YVV/l3OmNxom2AHa9dK5Q9bg2yii56Dduqqx0TOStz9Ee2yIdnIq qabFgwhxLN1hk9tM8q3F9m5Ws9Hnvt74w3Me9D5qu/bTxUT7FbycASjYXNvwp2i4iOiYT+ 30g18KyYmF4O+DP8JvKg8oJfs5Az57w= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1699500368; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yFdep+48cn5+ZFbHO3HlhiGibtZePlz/+w+2QxfYwYY=; b=C4B7IH4JlssLIKZU77TqalG3IHvqAIr7PjXfY1Uudqf1Vd5DDtHxXho00q/GTaq6FsPUhW NEYOXgwXMACBf2JDt8bMaObYEq1V9T24mVQ0qIO+xqNU1J7N3XzJxhKAut+d3fcIDN3Rxb fQOAhHvoFza5KCRwK3es8m5e/PwvwXo= From: Jeff Xie To: akpm@linux-foundation.org, iamjoonsoo.kim@lge.com, vbabka@suse.cz, cl@linux.com, penberg@kernel.org, rientjes@google.com, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, willy@infradead.org Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, chensong_2000@189.cn, xiehuan09@gmail.com, Jeff Xie Subject: [RFC][PATCH 4/4] mm/rmap: implement anonmap allocate post callback for page_owner Date: Thu, 9 Nov 2023 11:25:21 +0800 Message-Id: <20231109032521.392217-5-jeff.xie@linux.dev> In-Reply-To: <20231109032521.392217-1-jeff.xie@linux.dev> References: <20231109032521.392217-1-jeff.xie@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 26C3B1C0014 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: tyhq1t6rmrz1fo8bhp76e871d77aohdt X-HE-Tag: 1699500369-125052 X-HE-Meta: U2FsdGVkX1+umwrqNZYw5pkpxJSZQepW07cwm9WKSNYRpP+bwf0Jjv1ZRqTi0iCbTnvla1l+TIXsxx660GrXlB+ng76o9bXR4+l9daI1CKwNcVbwNSKBMi2J6KkZ6kOAl2RruXVaDzGrIVq7UiLCiXGmNqgfGoZVMfTxaowrmGc1tU7quJYUxPpE334DkuwSO3g/e0kuGuCN9qV8D0PlFDmllBcpLPQfLxHDvaRZsLc7UtMH5a9gZQwRvnJU/rwr5Gs68WYgsrhLRCxmAtE/L9fr7eI9XJ9DOwH5j6CgLG7L1TvdwQkYhyOh0DtS8wgrP8bWBAt9kfoosr6A7JPKYjE5z1Ws1/2WuRgkfzKD+W1rUctKBJ+0bbA+di93edOmCj9fze+2TXCqTgTIB3UtQukzd7kFdTtHg9wKIIingTQA0PWAfuYZlkZUsvfDBQGTfACDGPcPTIyrY9a/aLzfnqbhgDKqTMkdLnPGbleMvuzg2TC7CxgremPPl9IGiHBnCCqqCDVi7lUXnmiilNVGIR5V+Sh6wKQcQwqB3JM3phCe6dROxQN7aJ0LWB8zQHpHw3K9vUjY/dYruzDjB/pElV3CMJw6LObXGonv4r7SPx76GBmJJeCNIvhEQ7QJe6BRTXF65cNFKpd6E6dVdljObkmktYX/PPzVYbHZPmgVYrqnMyLUqqIwXOaI2D5Wskx3/U9UioBuMm7DKB4lKEzCwAhU0LETiKKe2vcV5ACJkiTWbe8fUS0W0r0v2EFEUp86YgFkUdrRpXjuybTI/GrheMv+yHzES2qN/ah7ZSpDkDyyiLvPt2MnBo+IRljcJjGD9W4dYRchlDGNLgne7OhROWZFRe9SJOM0IJN7J17YLECSaw0lJL6RQsZOzo8FqfP/sjfD8cDpBKcY/4r/Fdd3idO+TZ7NwYopIDWBpENJFqImAszNLudpCsu5TutTayy2FVdYzZ+BQVeihzleN6w s22w2jR5 UMthpGpEZQD0w5yoNuvSQGPDVJx76aQDcNN+KC4v3GO81o2qFzYxNUwsi30AUgOtZhBeESnxXXoVuzpIPG2gjXWd9Y+Hyw9KMmasGdzFYUED/QXOrhQkVI2dkoKwo1mRYCa5mkf57zeCKR1wP//Sbt6EmjxASnUZVGQQL41hRyFAh9VDW6vS/E4yXEw== 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: Implement the callback function anon_alloc_post_page_owner for the page_owner to make the owner of the anon page clearer For the pid 98: [root@JeffXie ]# cat /proc/98/maps 00400000-00401000 r--p 00000000 fd:00 1954 /test/mm/a.out 00401000-00499000 r-xp 00001000 fd:00 1954 /test/mm/a.out 00499000-004c2000 r--p 00099000 fd:00 1954 /test/mm/a.out 004c2000-004c6000 r--p 000c1000 fd:00 1954 /test/mm/a.out 004c6000-004c9000 rw-p 000c5000 fd:00 1954 /test/mm/a.out 004c9000-004ce000 rw-p 00000000 00:00 0 01d97000-01db9000 rw-p 00000000 00:00 0 [heap] 7f1588fc8000-7f1588fc9000 rw-p 00000000 fd:00 1945 /a.txt 7ffda207a000-7ffda209b000 rw-p 00000000 00:00 0 [stack] 7ffda2152000-7ffda2156000 r--p 00000000 00:00 0 [vvar] 7ffda2156000-7ffda2158000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] added: "ANON_PAGE address 0x4c4000" Page allocated via order 0, mask 0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), pid 98, tgid 98 (a.out), ts 28442066180 ns ANON_PAGE address 0x4c4000 PFN 0x2c3db type Movable Block 353 type Movable Flags 0x1fffc00000a0028(uptodate|lru|mappedtodisk|swapbacked|node=0|zone=1|lastcpupid=0x3fff) post_alloc_hook+0x77/0xf0 get_page_from_freelist+0x58d/0x14e0 __alloc_pages+0x1b2/0x380 alloc_pages_mpol+0x97/0x1f0 vma_alloc_folio+0x5c/0xd0 do_wp_page+0x288/0xe30 __handle_mm_fault+0x8ca/0x1760 handle_mm_fault+0xbc/0x2f0 do_user_addr_fault+0x158/0x5e0 exc_page_fault+0x73/0x170 asm_exc_page_fault+0x26/0x30 Charged to memcg / Signed-off-by: Jeff Xie --- include/linux/rmap.h | 7 +++++++ mm/rmap.c | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index b26fe858fd44..d85650c9c520 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -502,4 +502,11 @@ static inline int page_mkclean(struct page *page) { return folio_mkclean(page_folio(page)); } +#ifndef CONFIG_PAGE_OWNER +static inline int anon_alloc_post_page_owner(struct folio *folio, struct task_struct *tsk, + void *data, char *kbuf, size_t count) +{ + return 0; +} +#endif #endif /* _LINUX_RMAP_H */ diff --git a/mm/rmap.c b/mm/rmap.c index 7a27a2b41802..41c8a387cd37 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -75,7 +75,7 @@ #include #include #include - +#include #include #define CREATE_TRACE_POINTS @@ -1151,6 +1151,18 @@ void folio_move_anon_rmap(struct folio *folio, struct vm_area_struct *vma) */ WRITE_ONCE(folio->mapping, anon_vma); } +#ifdef CONFIG_PAGE_OWNER +static int anon_alloc_post_page_owner(struct folio *folio, struct task_struct *tsk, + void *data, char *kbuf, size_t count) +{ + int ret; + unsigned long address = (unsigned long)data; + + ret = scnprintf(kbuf, count, "ANON_PAGE address 0x%lx\n", address); + + return ret; +} +#endif /** * __folio_set_anon - set up a new anonymous rmap for a folio @@ -1182,6 +1194,7 @@ static void __folio_set_anon(struct folio *folio, struct vm_area_struct *vma, anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON; WRITE_ONCE(folio->mapping, (struct address_space *) anon_vma); folio->index = linear_page_index(vma, address); + set_folio_alloc_post_page_owner(folio, anon_alloc_post_page_owner, (void *)address); } /** -- 2.34.1