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 052B2C25B75 for ; Wed, 29 May 2024 15:56:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 633F56B00A0; Wed, 29 May 2024 11:55:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5BB2D6B00A3; Wed, 29 May 2024 11:55:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 45C576B00A4; Wed, 29 May 2024 11:55:59 -0400 (EDT) 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 2384C6B00A0 for ; Wed, 29 May 2024 11:55:59 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C4A8141342 for ; Wed, 29 May 2024 15:55:58 +0000 (UTC) X-FDA: 82171884396.30.9FD62E9 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.2]) by imf23.hostedemail.com (Postfix) with ESMTP id 13F6D140021 for ; Wed, 29 May 2024 15:55:55 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=163.com header.s=s110527 header.b=YP0UQpve; spf=pass (imf23.hostedemail.com: domain of a929244872@163.com designates 117.135.210.2 as permitted sender) smtp.mailfrom=a929244872@163.com; dmarc=pass (policy=none) header.from=163.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716998157; 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=3dMOK+h64umb2Ww2HIMnnwaYpG06QZyWi58gxbbVwQ8=; b=FoQloc3PepoVFs9Di3d3cr/I8VmSNvTnT9VpMY4RdTBoAenAzApSsEg3opzDtgaey5sgBy 3r7ZNL88GKFPoyJbG+w0KwwJoA5PH3uRaZPE1M2wbQgign+8p4gOy/0+iYDV5+yxE9mEXI M5h6Av83lEnFB497oYqJ6Pwp+0s6t58= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=163.com header.s=s110527 header.b=YP0UQpve; spf=pass (imf23.hostedemail.com: domain of a929244872@163.com designates 117.135.210.2 as permitted sender) smtp.mailfrom=a929244872@163.com; dmarc=pass (policy=none) header.from=163.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716998157; a=rsa-sha256; cv=none; b=wgfz6ikFXrd/Z5dEQkuJ26iRm/XxegNBvdM7sj2CXJO+6b1azAtk8cskQvQ/M6KKva6BPH +rM9aFfoCdGQqQmyEV63bjHOGhM6+ZGBuzUTiHEHZwFKJqCCCMkuMGaSpfCBmxwtTZZtxA Tx75u+CCpbLhvj5tK0xXhDEqPJmm0Sg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=3dMOK +h64umb2Ww2HIMnnwaYpG06QZyWi58gxbbVwQ8=; b=YP0UQpvejOS+fsNjhCsDJ EfWBnufGbRRoqt+o3djgzVYMPcjguMs/Yj+6czMCOHfQlU8M2LTQtAoMZYlYfZuq hjdXd2dKFcLYYcRai5xBucL4/Nhbm90ZXHCrJRoJohRhGGZnLdySBaLJdhnOYIoT Cxf9q2jzix1xa6B36BxMBg= Received: from localhost.localdomain (unknown [124.90.108.240]) by gzga-smtp-mta-g3-4 (Coremail) with SMTP id _____wD33xXqT1dmLAKCBw--.56428S2; Wed, 29 May 2024 23:55:23 +0800 (CST) From: wang wei To: david@redhat.com Cc: 42.hyeyoo@gmail.com, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, minchan@kernel.org, rppt@kernel.org, senozhatsky@chromium.org, willy@infradead.org, wang wei Subject: Re: [PATCH v1 26] mm allow reuse of the lower 16 bit of the page type with an actual type Date: Wed, 29 May 2024 23:55:20 +0800 Message-Id: <20240529155520.33161-1-a929244872@163.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240527141454.113132-3-david@redhat.com> References: <20240527141454.113132-3-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wD33xXqT1dmLAKCBw--.56428S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxCw43ZF4xKw4UCw4DtrW5ZFb_yoW5GFWrpF 4qkFyYkr48t3y2kw4fKwnxAr17WrsYkFWUC343WrW0yF98Kw1vgF1DKr45X34kurWkAFyY qFZrWw1q934DJw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0JUVGQDUUUUU= X-Originating-IP: [124.90.108.240] X-CM-SenderInfo: jdzsmjiuuylji6rwjhhfrp/1tbiLgDtpmV4JOd7rgABsv X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 13F6D140021 X-Stat-Signature: 8gyewsc141o4s3q6969gwgkyz97whhhy X-HE-Tag: 1716998155-606231 X-HE-Meta: U2FsdGVkX1/yrg51yWOauRD8lWi5xxvjeebzCbCdVIvbxED76jaY9oDkodfQyfmnCN4YqGQ9fH8/Gf473FHS5pD5sa1nl5WgnA6E4PK/+CQHdr3h1I4U/mxleeEK/zBKIR8O89ajcMA/ZkjdrGdpzrNP5Yp3JtFoogHkBy8IcPL85plwGX5jzYrGuIRvgpyY+TVgjPFfzrhtxpk+CRva+qWW2mv2g4Hut6pISPwCya++8xKYlTLOoOym0y8YznZOkThyG3o5mOBA4SeRcIRNoc8U60qNAK5mSY8rBm1waaGH/0lChg56hnMyEVHc83sS4Unx5SepBzWytmsBWJD5HcSXVfEI2JBsLm+cj58vWJm8U2cepgE5ZFH9MrS/ZrHK3L3+yt1F8dLujMZIf3L8378J8Anpq5A3vnmsHp+7msAi3QwwVtDueYX/tqeueZk6zOOAiPD7C/XdYjVch57gcq+Lxyt8AtQXyL9h8gJd9eKdVMz9S/4sRGpRNjt4n9OLIWW4ulGc7Xd+0ArysCm1pIReYbK0ODXBf+7UYYLOzRJg5kCdeW2t5gIlSnqL/TOEtBScc43wwsXqeR68ircQjWSUULxwNkUxjR5Uoxs5nFw5tzYDYiv87HA+Krnd4JP4PKvMuwyJ+BgK+WVzC/3UEeGVjPi8+guU+kdiXKbyaydMas7DMK8ZqbjizMXZuW4zUV1IaJCSB3LWQ6YRlpRgj+JayvoIWvnnr+QL7cbklNrHASfvRuMRetS3Gi/oBayYqfOp2DgcFDhI12RtDTn3lorTR0XYcKlguRLXUXpHzfa5FVabWzZAw15cqmZQjW/kzQbhttUAKP4FOdCMeICUwKrVbPLY8Uv53brBFhvP7A/3DFogWb05Y51h1KsaeFdodMDtRUeUsjPNZb6pOHt/vuFsRR2mr0R9Vm71hJPjmFI4dH52vVdp3FiE0+TQEHBeAyBP4w/tyqrvBe6GbA5 a8fI9gnx 8IQtyWgauGBZwHPgnFo/r7IwND8EiMBmzWFzycg0RKNhmpexTZFCgAF7ueOLI7+EMT/cs0XtgjvdmUovlpHrJKAKHh0iV1XA+NV//JwMVIQK4HOVeK9hy4RkEE+a+dPsKqpQS43dpvOJ6CJN6vdmuZvpeLAvdCUl6Xrh0n33o1ja/eXN80FJEV3B9hstc/3nHDs61IriNY3wr+rL4bu7voJwM43kOKVKH3d4oCbRojd9Kb4lRdqCznsguZRDyavZwkh+MUtSXTK2gNd1D4H1SvwHiVAd2n9nPqeMkzx8YZsPpdOzODwgMQFZqCAQqopt3oCj/bktnViUBhG7RK4voD7+699+CX5lIEWUadfm4llcBdvK7qOU/MRF+G8HuLPYtWQBuzhjTMQbxGx4J4aFKaNoUdt9k/IMoaZuXh3L6io2B/qPnT1cJZRNLcocElusOlfelRdrHntk1KIYzCXrShavk03e+FUckJDKb 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: --- > 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 > 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. > > Signed-off-by: David Hildenbrand > --- > include/linux/mm_types.h | 5 +++++ > include/linux/page-flags.h | 20 ++++++++++++-------- > 2 files changed, 17 insertions(+), 8 deletions(-) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 6b2aeba792c4..598cfedbbfa0 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -157,6 +157,11 @@ struct page { > * > * See page-flags.h for a list of page types which are currently > * stored here. > + * > + * Owners of typed folios may reuse the lower 16 bit of the > + * head page page_type field after setting the page type, > + * but must reset these 16 bit to -1 before clearing the > + * page type. > */ > unsigned int page_type; > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 104078afe0b1..b43e380ffa0b 100644 > --- a/include/linux/page-flags.h > +++ 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 > +#define PG_buddy 0x00010000 > +#define PG_offline 0x00020000 > +#define PG_table 0x00040000 > +#define PG_guard 0x00080000 > +#define PG_hugetlb 0x00100800 Every PG_XX occupies one bit in my understanding. But why PG_hugetlb occupies two bits? > +#define PG_slab 0x00200000 > > #define PageType(page, flag) \ > ((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE) -- 2.25.1