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 5D741C47DD9 for ; Fri, 22 Mar 2024 09:43:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E87CA6B008A; Fri, 22 Mar 2024 05:43:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E37D16B008C; Fri, 22 Mar 2024 05:43:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CD9406B0092; Fri, 22 Mar 2024 05:43:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id BCFA56B008A for ; Fri, 22 Mar 2024 05:43:43 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 81E83A1F01 for ; Fri, 22 Mar 2024 09:43:43 +0000 (UTC) X-FDA: 81924187926.11.A3FDA03 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf10.hostedemail.com (Postfix) with ESMTP id 2B8AAC0026 for ; Fri, 22 Mar 2024 09:43:40 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Eb+iUovF; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="9r/G9PVG"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Eb+iUovF; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="9r/G9PVG"; dmarc=none; spf=pass (imf10.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711100621; 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:dkim-signature; bh=zZ3v/7jbqdNhQPiRHQ2UqQ+PeNWhDrCk0S+VuM/1ol4=; b=kn7Sl3oumcOX5E+Q/PYor9zOoHjTjYXOj6ZLefieKrnJbrdRLj12BD7H2awdl7CoBGOt5T q8q64/0Qi/hRDL7w3UV+Rt+SpPmtOAvdrTgIogDIiZBpIbTXCCYzCW1+5ColtSsd+A5geC XGAXc3riFRqTih9eI2PTrgSSieQDxW4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Eb+iUovF; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="9r/G9PVG"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Eb+iUovF; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="9r/G9PVG"; dmarc=none; spf=pass (imf10.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711100621; a=rsa-sha256; cv=none; b=UbbDXYQHgSbZTOAZKEsq6Qaqcew5vASEfr+pT6rLV+P0YweXH0ZQHJeVU4iuRQJ0XOaHfP 2mwpGDpfDop4M6sd32l20GMeCAUkW9SFOencQw6eWnrAg7IO1th/VvLU4KjbdhTZgWbeaV NwkpH9lJRxmqaQnWNlrOs8NK/eDbdaE= Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 3B9DD205FD; Fri, 22 Mar 2024 09:43:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1711100619; h=from:from:reply-to: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=zZ3v/7jbqdNhQPiRHQ2UqQ+PeNWhDrCk0S+VuM/1ol4=; b=Eb+iUovFag15m/ZS1xWECxMC6nJuQG4XZArQW383bZgC4fYt07d3Ha12Zn7uhpikTimhOz ORi59Xl4nvIL2BOl+/MUaC7NmkVEan328qRfTBLEp+tG+/pRuW6m3MvLI9rk0fue0qH6t8 kktWXZ0IOlnmKv+PGmaBvNb9kxLOa0U= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1711100619; h=from:from:reply-to: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=zZ3v/7jbqdNhQPiRHQ2UqQ+PeNWhDrCk0S+VuM/1ol4=; b=9r/G9PVG9Gd5GlZZbJetOyvgiWAhdKhV99ebg0e7XZeoAVWJdi4McaV2oK8tCizu1ealcV kZ8AbVmWPtZSqADA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1711100619; h=from:from:reply-to: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=zZ3v/7jbqdNhQPiRHQ2UqQ+PeNWhDrCk0S+VuM/1ol4=; b=Eb+iUovFag15m/ZS1xWECxMC6nJuQG4XZArQW383bZgC4fYt07d3Ha12Zn7uhpikTimhOz ORi59Xl4nvIL2BOl+/MUaC7NmkVEan328qRfTBLEp+tG+/pRuW6m3MvLI9rk0fue0qH6t8 kktWXZ0IOlnmKv+PGmaBvNb9kxLOa0U= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1711100619; h=from:from:reply-to: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=zZ3v/7jbqdNhQPiRHQ2UqQ+PeNWhDrCk0S+VuM/1ol4=; b=9r/G9PVG9Gd5GlZZbJetOyvgiWAhdKhV99ebg0e7XZeoAVWJdi4McaV2oK8tCizu1ealcV kZ8AbVmWPtZSqADA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 28520136AD; Fri, 22 Mar 2024 09:43:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id dY2HCctS/WWlSwAAD6G6ig (envelope-from ); Fri, 22 Mar 2024 09:43:39 +0000 Message-ID: <507dc279-fc1e-478c-a4af-7181a3593171@suse.cz> Date: Fri, 22 Mar 2024 10:43:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/9] mm: Support page_mapcount() on page_has_type() pages Content-Language: en-US To: "Matthew Wilcox (Oracle)" , Andrew Morton Cc: linux-mm@kvack.org, David Hildenbrand , Miaohe Lin , Muchun Song , Oscar Salvador References: <20240321142448.1645400-1-willy@infradead.org> <20240321142448.1645400-5-willy@infradead.org> From: Vlastimil Babka In-Reply-To: <20240321142448.1645400-5-willy@infradead.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 2B8AAC0026 X-Stat-Signature: igr84g5jgqqtc5r5twhjeeerzfuummz3 X-HE-Tag: 1711100620-12919 X-HE-Meta: U2FsdGVkX19vEN/x09Sa00makQ80BUYmjlEizVN1LYP9QJZe8pwchSH3lvNss/9XDJqhhUnXmJnvfza0oY8wXC3ny+WwcHWlBw/Ja69Nh1qaZE8Acmj+Qb6R1xTCV2bhxxFGsBAuI4kDClZ7qu3hBsPQUNlvLvWnU7Ywm3ExncLVthUoQK5zZosQegghSSb/stewok1sdnWszYbCDnjXo5UwbgXxe6mNE8ov3vFWKEp9tOPlj0NFCTWVD5Em5gO9ytl2egAXjak4qqoSdqIMk7LhWkhusZH9US0YfAc5LoGqVML2L1rW1A8yBV0PO6eO/HY4ZZp/lMmeiXjgMaaSg+xklkbRUxMMPW/6CJMGgs1FG1UlKuXcTnJ3MGNaZ8NsZoy+pydIqXGyvNdJpNZD/xvcGC46PYPF+MJ3w3Rd5yWhLqjVpcyggJJwxVFPnn/E7h6tq/YYmrxWQs1MJBTqg+q5Nhm0d9ceECPdzqXD12dxWbmifTfUJN9pOaQ7lFk2FrwFFlquaOObM6pDKeYhFYqUdo05tB814GSBQ2OfLHHJi9cvZ8H1ywFuMu6ka5eLidpRKqxzf8oWpYmeatryON3T51bybtvaS5j7g6xEjb5bk9S//j0f2GvhvVk0i81B9aHI1PjYdBywSE228+VHejiuMKO2PVI8O382JU4RyjW4b/SfNh44lL+2yiASLlkBBcEqHRG3AvU0iQQeJmggy8OaBaGjIAYAttFqbA1nxT7UMMvlxVnAn3X/6VfhNnu/NJidOutP57qielERgBoyktjrdKwoWD0rLvlZGeYL/6ldRl2D/GsEqakR3Aa2UpQBNTfjW2GlxfUnVptmCocilL6JNTiNsAg+ZICRuk4wVFabbFzt040gJrWV05/66f9KS+XhuJGLHSohZb9OsTkPrcRhV0Z7o5+4vJzdpQ6HsrTnIXjLBPxA1cL22w8kf2V8frg6rZW0XKSJF3uUsUx luotHbFc htcKLpag34Hnp36pBpXoYuEsYoUCj9SRE2rTeqZSuzyeVqxnW+yJP7/3QTDDpVjsvzcPx+hlKywDF0B7SELjZG/rYYEIznLUm4WJO3g8wmjv5dGSwFexF2hhabFx2qIgV17FPTGjgjlu1VOu9LCsOm6bVNKXY3UlFEIrQBQIrGf0zqeHlABQkCVj0nPXlgC0pWH5uyRmqiI6YRp9YxQ70eYGtw3+tWqDcOVhiAVlPRKfYmyhNKVQOKLyem6B2G15DldSfftFP3j89qW5w/a9Hv4OKsZDiLEsRR4PP0l+H/AI4muE9kkraCi50DOGvmWoHBn6uS1CHTuj2z9msA0bKO0/oZT00EnDvbAF1uuEugUuktEwigm1hNqoQqw== 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 3/21/24 15:24, Matthew Wilcox (Oracle) wrote: > Return 0 for pages which can't be mapped. This matches how page_mapped() > works. It is more convenient for users to not have to filter out > these pages. > > Signed-off-by: Matthew Wilcox (Oracle) Hm strictly speaking you shouldn't be removing those PageSlab tests until it's changed to a PageType in 7/9? If we're paranoid enough about not breaking bisection between this and that patch. Otherwise Acked-by: Vlastimil Babka > --- > fs/proc/page.c | 7 ++----- > include/linux/mm.h | 8 +++++--- > include/linux/page-flags.h | 4 ++-- > 3 files changed, 9 insertions(+), 10 deletions(-) > > diff --git a/fs/proc/page.c b/fs/proc/page.c > index 195b077c0fac..9223856c934b 100644 > --- a/fs/proc/page.c > +++ b/fs/proc/page.c > @@ -67,7 +67,7 @@ static ssize_t kpagecount_read(struct file *file, char __user *buf, > */ > ppage = pfn_to_online_page(pfn); > > - if (!ppage || PageSlab(ppage) || page_has_type(ppage)) > + if (!ppage) > pcount = 0; > else > pcount = page_mapcount(ppage); > @@ -124,11 +124,8 @@ u64 stable_page_flags(struct page *page) > > /* > * pseudo flags for the well known (anonymous) memory mapped pages > - * > - * Note that page->_mapcount is overloaded in SLAB, so the > - * simple test in page_mapped() is not enough. > */ > - if (!PageSlab(page) && page_mapped(page)) > + if (page_mapped(page)) > u |= 1 << KPF_MMAP; > if (PageAnon(page)) > u |= 1 << KPF_ANON; > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 0436b919f1c7..5ff3d687bc6c 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1223,14 +1223,16 @@ static inline void page_mapcount_reset(struct page *page) > * a large folio, it includes the number of times this page is mapped > * as part of that folio. > * > - * The result is undefined for pages which cannot be mapped into userspace. > - * For example SLAB or special types of pages. See function page_has_type(). > - * They use this field in struct page differently. > + * Will report 0 for pages which cannot be mapped into userspace, eg > + * slab, page tables and similar. > */ > static inline int page_mapcount(struct page *page) > { > int mapcount = atomic_read(&page->_mapcount) + 1; > > + /* Handle page_has_type() pages */ > + if (mapcount < 0) > + mapcount = 0; > if (unlikely(PageCompound(page))) > mapcount += folio_entire_mapcount(page_folio(page)); > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 8d0e6ce25ca2..5852f967c640 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -971,12 +971,12 @@ static inline bool is_page_hwpoison(struct page *page) > * page_type may be used. Because it is initialised to -1, we invert the > * sense of the bit, so __SetPageFoo *clears* the bit used for PageFoo, and > * __ClearPageFoo *sets* the bit used for PageFoo. We reserve a few high and > - * low bits so that an underflow or overflow of page_mapcount() won't be > + * low bits so that an underflow or overflow of _mapcount won't be > * mistaken for a page type value. > */ > > #define PAGE_TYPE_BASE 0xf0000000 > -/* Reserve 0x0000007f to catch underflows of page_mapcount */ > +/* Reserve 0x0000007f to catch underflows of _mapcount */ > #define PAGE_MAPCOUNT_RESERVE -128 > #define PG_buddy 0x00000080 > #define PG_offline 0x00000100