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 191C1C25B74 for ; Mon, 27 May 2024 15:26:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7BC9D6B0089; Mon, 27 May 2024 11:26:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 76D136B008A; Mon, 27 May 2024 11:26:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 617236B008C; Mon, 27 May 2024 11:26:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 43B476B0089 for ; Mon, 27 May 2024 11:26:54 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DAEF5815A2 for ; Mon, 27 May 2024 15:26:53 +0000 (UTC) X-FDA: 82164553506.10.97D3DAF Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf03.hostedemail.com (Postfix) with ESMTP id 99D7E20012 for ; Mon, 27 May 2024 15:26:51 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=vSEUfjl8; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716823612; 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=u3fQhom/2PMZIi3mCUIS3hdWg4hX3jYiIfgerxDXhV8=; b=gUfNRBnUJ0H4QPNh8cJqK14AZS+jd1KPwtHrxUZHaFchV+Xxy0QvX+i2s1SSR7nN90LobS fWXvotPoTzPw9bviEch4MQ7IKcH0LsamZOKsYzIAAEdkImELfoMJsL/VNW9mDpalPa2ApT VpxbA0IZt8sY8E+cIhcHOwipewnraUw= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=vSEUfjl8; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716823612; a=rsa-sha256; cv=none; b=CRLviYjRRhWQ7AANyOcJQ4xbgrjWT53E/0V2F0zkIeDCTTLKDD9EPkYUZooCATHVgyprxB nQpzDrlcUMUl9qmb7vcVZoI6KPgsleRdgEGHZUBWP6woPmaFrPjKHKhKAYrOJX60PDQSlr 0orwfA7clYrWnDFVhFlNwE/AlMIRTJU= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=u3fQhom/2PMZIi3mCUIS3hdWg4hX3jYiIfgerxDXhV8=; b=vSEUfjl8y4/F0glaDVw1jAScRD d9Zduww7cYjXKRbukNjwLRCwhq6ObJgz5YT5nU9IhhwUxaQmeGxyeP8Mcu+TasBaqHaJcY6J5q0bO /Dgs9GdrcGGHeoluVfAVqCLh+ahJ8TvwGV+emc0E8hAKizWgBM3T2KJjwufaHA8jO6aJghvz3t4SA PvAhgUlqyF4YuX4Cj3JzC1Xeg56+ZtFBq8Z8OMxIQW+W2xOBieJ4eJ/d0fkmWcCWiI14R0DV8dQb7 kMlnagjhCab8m6G2Dml6eOt9PK1SLZqBqdl9R+TeCoTq01rqro/Cys+P66xGYwokqrvYMEFjvAszP iccxh9nA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1sBcFL-00000007l8p-3jVO; Mon, 27 May 2024 15:26:47 +0000 Date: Mon, 27 May 2024 16:26:47 +0100 From: Matthew Wilcox To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Mike Rapoport , Minchan Kim , Sergey Senozhatsky , Hyeonggon Yoo <42.hyeyoo@gmail.com> Subject: Re: [PATCH v1 2/6] mm: allow reuse of the lower 16 bit of the page type with an actual type Message-ID: References: <20240527141454.113132-1-david@redhat.com> <20240527141454.113132-3-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240527141454.113132-3-david@redhat.com> X-Stat-Signature: a88rxzeuk9g6tn8wuaiqc48ki84cwbnb X-Rspamd-Queue-Id: 99D7E20012 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1716823611-242476 X-HE-Meta: U2FsdGVkX1/y1DdNp3vaZVzazkraPcbmIdvjonZ47yXvrCdrwO3EyafxwkpUoWV9reTdc7Gs9rax1rdWuFaxlRUw4jukZixnpDiizMl94u9bSSpU8Zl+u9+/PiEz5sUQFDc8OTGfsLfH9GOaR6+Imt+oVp/MewvaD58rDAPq0shLEeHW5GpF58YKcWhsMCSp+wytFR8NB9yIWEwKZFE1Tafdwj8wQN0Gsy14xJ57pSdgWUneVxokrEXKl8jdzuSTXcQbJ9rjC4Q+wGusXmdIGwlDBXKgmllxcCgJVieOMZ6mtRR+agtpHi7Rx1NUNNIVWLQ8JBSf7x/bIc4Vw+Tz5h8AIR6bKmSQ2Ho345xjO11CUqPPENU5COp/CRAF47MOixA6R6BUAka7fwoS+rOJsNO8SWQUhV61Nx0jKTWLyKvahMONLOVPMk2iCegfjEaEtX/33SWKdSDIEQiFaRX7nbe/0fiDcwdyYJTzrHJlkbf1PdgC68kN7O99r/dq5sXhCf0K5k9ijVxsKQld/60sSOjjo+PxT/el1VHllVinmv/eajIygjmpwMXcQ3fTcNMfIt8T7zvbB/9e1VhVsANaodVX01UaSt8rmEO3OyruXVnuaHzMFAxpiUuAbSkH/OfDoeM+OZXvZ7a6tvakqk5V2vEQTxUcgJuZh5t5bR21l7uCmmIOjG9h7v0ydL4qXzPRvFcBiA6m1zvfumt9AMH9gDPcrZ9Ik8ORCtLjIIzXJcZW9+4Z0E39t//Q4eHGpVQGwqzVrUL9OdWRNvM34V0AJu141qiFFT0LLxC4nyGb+mbWGt5D1wIBdhhZB07ZLC1rcQ+oQ9PrsjoHvcu1pYI8rwQnme1tz/qSUgXrf6bVhPrRuZ8YS/Vn14InsmCQFrtdQihSf3o0eCw9Gh2n2vmp4Ck5NgEzdXSrfo/k2pRmcKYI3BYEvcU0szCnx/pZGBvet2MAMld8lsvqklFX4/t ZLb68GYB hH9DMVx649/9HRbf91n4GY7Kn92lVydyE2/8U2OUm3oOCwEaFsfqR7JsROKHiwBGZxxUXY8x+wn+S0CotvwOSd/x+DcEkYA/ZKGWxlv2Y7925GyPVMMLj0neLCPyzgibIh+qpHdrKBPDSNfAnOAvftvuz16MZfhyHRsm2Q7D65+XiXbF46UDKODL9l5sME1ovBOVg/kZ+T2bTdRKG6bv5NJT8TXQmV7sMCGGXYfMo64mqEuRtOyJj1naJ8xVltm6EgRcjQxt+G3rPgmfeWt+amine5g== 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 Mon, May 27, 2024 at 04:14:50PM +0200, David Hildenbrand wrote: > As long as the owner sets a page type first, we can allow reuse of the > lower 18 bit: sufficient to store an offset into a 64 KiB page, which You say 18 here and 16 below. > is the maximum base page size in *common* configurations (ignoring the > 256 KiB variant). Restrict it to the head page. > > We'll use that for zsmalloc next, to set a proper type while still > reusing that field to store information (offset into a base page) that > cannot go elsewhere for now. > > Fear of running out of bits for storing the actual type? Actually, we > don't need one bit per type, we could store a single value instead. > Further, we could likely limit PAGE_TYPE_BASE to a single (highest) bit. We could, but it's more instructions to check. > +++ b/include/linux/page-flags.h > @@ -945,14 +945,18 @@ PAGEFLAG_FALSE(HasHWPoisoned, has_hwpoisoned) > */ > > #define PAGE_TYPE_BASE 0xf0000000 > -/* Reserve 0x0000007f to catch underflows of _mapcount */ > -#define PAGE_MAPCOUNT_RESERVE -128 > -#define PG_buddy 0x00000080 > -#define PG_offline 0x00000100 > -#define PG_table 0x00000200 > -#define PG_guard 0x00000400 > -#define PG_hugetlb 0x00000800 > -#define PG_slab 0x00001000 > +/* > + * Reserve 0x0000ffff to catch underflows of _mapcount and > + * allow owners that set a type to reuse the lower 16 bit for their own > + * purposes. > + */ > +#define PAGE_MAPCOUNT_RESERVE -65536 I think my original comment was misleading. This should be: * Reserve 0xffff0000 - 0xfffffffe to catch _mapcount underflow. How about we start at the top end and let people extend down? ie: #define PAGE_TYPE_BASE 0x80000000 #define PG_buddy 0x40000000 #define PG_offline 0x20000000 #define PG_table 0x10000000 #define PG_guard 0x08000000 #define PG_hugetlb 0x04000000 #define PG_slab 0x02000000 #define PAGE_MAPCOUNT_RESERVE (~0x0000ffff) Now we can see that we have 9 flags remaining, which should last until we can have proper memdesc typing.