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 46117C25B74 for ; Fri, 24 May 2024 10:05:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CE1976B0089; Fri, 24 May 2024 06:05:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C909E6B008A; Fri, 24 May 2024 06:05:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B0A506B008C; Fri, 24 May 2024 06:05:09 -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 946876B0089 for ; Fri, 24 May 2024 06:05:09 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 337568095D for ; Fri, 24 May 2024 10:05:09 +0000 (UTC) X-FDA: 82152856338.02.81C9896 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf22.hostedemail.com (Postfix) with ESMTP id EA269C001A for ; Fri, 24 May 2024 10:05:05 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=X4JUrOp1; spf=pass (imf22.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716545106; a=rsa-sha256; cv=none; b=T/6C7TlRWww6MFuU7Mvtg+U9VLuwWz7nScOeSg2r/PzwodlpoZWSg0njLI4M/w3E6+92Yw iaokNQEfjC7hAWnvW7HJCco4aFRqax+nFgq5omrUQo4mMPS05NDKWBuBEG3nPH2Hm+VLpk JHg51hcChMKArxs4qdXh9UlWYWMmrw8= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=X4JUrOp1; spf=pass (imf22.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716545106; 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=0tqPEqXzpdrWLSDfzE9+RYZErKg7lcDK/U8gukkaq3Q=; b=TwbkvHl1YNzhUhrqjxgxwGPlKUJeW0zRlcsd/l+Cmubijws99XFUU/wrDfj4ybdJsMroJ4 xuqndT428D9ZeuhWGgVWPjdy9KBQQ/mjpHvcGzVBNoRch1cJ8eVbkog49Dj5bCpQpScQOb zxj/VHNfQa3sRNgloKopBv7Vfwzc6ts= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1716545105; h=from:from: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:autocrypt:autocrypt; bh=0tqPEqXzpdrWLSDfzE9+RYZErKg7lcDK/U8gukkaq3Q=; b=X4JUrOp1wl/OEeAsBUV586wxNHf7HEaHw6pYgXOq70CyBspBRxP/6/j2ovfh19xGmYVP2v aYnea2cPs6vRfC2IDMFnyeFGfuBDKE9MLQtzsyC4zKCMy5EodVBky/htWyvBEYq3n28rqX PVp9eFoPkJn5w4SovS9OZZ60jOpQv5g= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-103-6PBbRqblMhaTh3EyXpKf6A-1; Fri, 24 May 2024 06:05:01 -0400 X-MC-Unique: 6PBbRqblMhaTh3EyXpKf6A-1 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-420122cf3eeso515175e9.0 for ; Fri, 24 May 2024 03:05:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716545100; x=1717149900; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:from:references:cc:to:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=0tqPEqXzpdrWLSDfzE9+RYZErKg7lcDK/U8gukkaq3Q=; b=M14x+yO7RdKEmB429PsoklNmrLQ4cxoAvklnuGuzyQBv0vG04qALyNc3Lo+3bXBc5/ Q0nNz6tjEklb1mmRe8Vr6B29j7/nSDWAkHAxxX9EGfSdC2P0UyTpINwHLonBwRbS/r4P q2TlH2xEsJzTOJy50ONlvKUpiTGjkDkEMhlgTCOls1hhYV4BoqEUPgdqHXfQLje8x5E9 VmqVxbRmYdnux7M5TllOBmntC8RCcBoG3buW9/FHCupfVJDJPwDH5GmEoeLArusW+TOs ZinwQC5nTV+K8bSXXkMDE/rTQWr2uNXF2kX9bGb0fA+2WcuCamqBtC1ZZuKUbMuvGjnV kIUA== X-Gm-Message-State: AOJu0Yx0rNVrb3UjG5e5H0UzDhGn3pfU+HJ004CSWvg/ScAYkw5WRUMR 3djIFC7uTWNBEqDOY56SN9iK/WCbFl+7yp+JyAy9pB6eTHWKYkCiGmAaLEs8lPHvLaMGS0derTh ikDcE+mvrq6n5MuSxup3K1KJ2cmZ6Fly0+Ag/pSP+WxaiN+of X-Received: by 2002:a05:600c:3552:b0:41b:e406:5ae6 with SMTP id 5b1f17b1804b1-421089f816fmr13306085e9.9.1716545100542; Fri, 24 May 2024 03:05:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFJnxxG5qQ6YaT7VBUS6F2j0w0cnfRCjEd+/YfQzE2Xare2Yg22u6sGQVGwlJjKwOKWN8YSJA== X-Received: by 2002:a05:600c:3552:b0:41b:e406:5ae6 with SMTP id 5b1f17b1804b1-421089f816fmr13305875e9.9.1716545100026; Fri, 24 May 2024 03:05:00 -0700 (PDT) Received: from ?IPV6:2a01:599:31a:f535:61b2:4e2f:ddce:8bf? ([2a01:599:31a:f535:61b2:4e2f:ddce:8bf]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-420fd37d5c0sm32948985e9.1.2024.05.24.03.04.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 24 May 2024 03:04:59 -0700 (PDT) Message-ID: Date: Fri, 24 May 2024 12:04:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RFC 2/6] mm: allow reuse of the lower 16bit of the page type with an actual type To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Andrew Morton , "Matthew Wilcox (Oracle)" , Mike Rapoport , Minchan Kim , Sergey Senozhatsky , Hyeonggon Yoo <42.hyeyoo@gmail.com> References: <20240522210341.1030552-1-david@redhat.com> <20240522210341.1030552-3-david@redhat.com> From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= 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 WNyWQQ== Organization: Red Hat In-Reply-To: <20240522210341.1030552-3-david@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: EA269C001A X-Stat-Signature: xyq6r7mwmmf63ouwhzc3rjh91myxe8hq X-HE-Tag: 1716545105-346661 X-HE-Meta: U2FsdGVkX19kdhPTP6Tj9QQLtOh5vDRFyz4X6LUtm6tXBeav/4Q0dEkF6l1p4Su5ogc5OKOi8xDRw6qbDo7NGRVwpE10TMz+R3kaSDDl8LfxIaMpdltJDH7tPZbIWB4c4CV7SpN2KjGXQ1EKNpwU497VKuxS2tpX2BdQD41fiXvjfy2ZOLuT0LXzO1Nv2telf5Kw7CiLwoabckpdzc4jEt57MPxq5u7e3ouvmnClM3b2QFeY/6BtbDKgOw9yvh5ON6fwHkf3w3RTvyQZt/g8PThv1Wb8fhqEaqh70PjxVh09V+/STn0NN7NJLuqLA0HFj+3DQcEj6d884ikuwukreCzX1vQbx3LQK1QWrEPpFRci8Fk12E5aMy3xscowFahKrMgtM0gD+c7wWUANtk/juTOoq+Rg/KhEd84PYxboIf+b5CjlolQ+ygzZ7DgnXHo+q4LvvPp5MtcRFYWVniltP1gaGF87flv1uYwu4NBap2JJA2fN8vUYvTlAVzDdd0noDN0ACXyQaxp4sF5Lm5frmf4xyvB4MOWab9uzdQYLPlI5myBXSvpcQ+Qjr6s/HKyNVU8GfJ0GIlzW2NzT88JylGYk58EmJSGIhwvgSkJEZnoNz5LXnelgCmIFY/xfI2d1ZpcWmSnfpLdFSxVbI2cB9TCJyVWL0XKw1uhhrupFspPBhk7VGv40gMc85VyEFeHQ5bjIkXqOlUPVAkce0gT8LdwwkcUNckS6HGbplOknUXNEoBEGFboPt1r+Y4FdPJNTmMNvRNf2w5owl+1ax/aqlz44SRo96C7rNhNZ0DdL+36kw1MqOWA+JFJ4NWYrfLHg6eyEQFFaIPi2zgJvKuUzZuA6LE5SdOGSkq0NdD2l1QqSU1wuuEUd3/ApUHEqhGts4upAfyPuVkMGv0Mb8y1Z07+K6rOKh3xUgOT3DBz1NgnqmfqYN+YbwePH7fhqSMoOl824oW/9nbxBK4WwuYy NbRkIPo/ d1uwo8deqEeiCGr+p0pl+lnUg8FYevku7NmAmhgJRGtgvSoBt7vdoblZyf4IOhjHWBxd1kYWFtK6Rq7851UIGRdgsC7aNUdSwx9IpkMc6ojgtIRmxisyp54Q66JtZ+tvQ+LUu08NBNKfcB3xLPD9uZyJpWrKUT3AeD7AToKeU1DK4WJx+xn6gmqQjOb8Bxj6EwUX6HY7uQqlgH9WYMM8GEpc0HGLesphfaPIJaT25LhSyXuM1YS6+Z0BlTci8YLR4jqoZUopMLgPAWRPkmqQALvqCxQFYsdEtl2mwsqPyamtUGpMyE74vfE9G9/9wKAZYM4zGTw337FX2IfdlAO3M6F4NfEevdLCtKS/YJJbXxe7K4i7cZgMaMmQCGBYe2UUMjjTV6LE0TzyZ9f7vM4Vn0F+Cbwds3cyLatgVvA+YToCHTFXjGZIteww4ciHWM2kEw42vTHfBqNUBAY9dA8mDsR2bs4b5p5TicdX2HRvz3sY9K3Sazs8trYLIiD2HVxl9EWJAUbPllg33uOJVBk3S2EShHoADqX66ElYGVmXHoyD59SgqnKrith2quSMho1C+HUNYpAFrsOEAyaReSQTGGQX/kGJm2jNeqdPTsbLHC8Bub3E= 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 22.05.24 23:03, David Hildenbrand wrote: > As long as the owner sets a page type first, we can allow reuse of the > lower 16bit! 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 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. > > Signed-off-by: David Hildenbrand > --- Likely the following might be better if we want to go down that path: From 39f198589039451d94166f3893dc939a919f74c7 Mon Sep 17 00:00:00 2001 From: David Hildenbrand Date: Wed, 22 May 2024 21:57:43 +0200 Subject: [PATCH] mm: allow reuse of the lower 18 bit of the page type with an actual type 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 256 KiB page, which is the maximum base page size we support. 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 532a3030405d..437a62bed277 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -168,6 +168,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 18 bit of the + * head page page_type field after setting the page type, + * but must reset these 18 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..2f49c8b2f411 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 0x0003ffff to catch underflows of _mapcount and + * allow owners that set a type to reuse the lower 18 bit for their own + * purposes. + */ +#define PAGE_MAPCOUNT_RESERVE -262144 +#define PG_buddy 0x00040000 +#define PG_offline 0x00080000 +#define PG_table 0x00100000 +#define PG_guard 0x00200000 +#define PG_hugetlb 0x00400800 +#define PG_slab 0x00800000 #define PageType(page, flag) \ ((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE) -- 2.45.0 -- Cheers, David / dhildenb