From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Vlastimil Babka <vbabka@suse.cz>,
Roman Gushchin <roman.gushchin@linux.dev>,
Naoya Horiguchi <naoya.horiguchi@nec.com>,
Miaohe Lin <linmiaohe@huawei.com>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Minchan Kim <minchan@kernel.org>,
Mel Gorman <mgorman@techsingularity.net>,
Andrea Arcangeli <aarcange@redhat.com>,
Dan Williams <dan.j.williams@intel.com>,
Hugh Dickins <hughd@google.com>,
Muchun Song <songmuchun@bytedance.com>,
David Hildenbrand <david@redhat.com>,
Andrey Konovalov <andreyknvl@gmail.com>,
Marco Elver <elver@google.com>
Subject: Re: [PATCH] mm: move PG_slab flag to page_type
Date: Mon, 19 Sep 2022 22:16:17 +0900 [thread overview]
Message-ID: <YyhroRoWrQlmGdGu@hyeyoo> (raw)
In-Reply-To: <20220919125708.276864-1-42.hyeyoo@gmail.com>
On Mon, Sep 19, 2022 at 09:57:08PM +0900, Hyeonggon Yoo wrote:
> For now, only SLAB uses _mapcount field as a number of active objects in
> a slab, and other slab allocators do not use it. As 16 bits are enough
> for that, use remaining 16 bits of _mapcount as page_type even when
> SLAB is used. And then move PG_slab flag to page_type!
>
> Note that page_type is always placed in upper 16 bits of _mapcount to
> avoid confusing normal _mapcount as page_type. As underflow (actually
> I mean, yeah, overflow) is not a concern anymore, use more lower bits
> except bit zero.
>
> Add more folio helpers for PAGE_TYPE_OPS() not to break existing
> slab implementations.
>
> Remove PG_slab check from PAGE_FLAGS_CHECK_AT_FREE. buddy will still
> check if _mapcount is properly set at free.
>
> Exclude PG_slab from hwpoison and show_page_flags() for now.
>
> Note that with this patch, page_mapped() and folio_mapped() always return
> false for slab page.
>
[...]
Hi. a silly mistake:
>
> include/linux/mm_types.h | 22 +++++++--
> include/linux/page-flags.h | 83 ++++++++++++++++++++++++++--------
> include/trace/events/mmflags.h | 1 -
> mm/memory-failure.c | 8 ----
> mm/slab.h | 11 ++++-
> 5 files changed, 92 insertions(+), 33 deletions(-)
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index cf97f3884fda..4b217c6fbe1f 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -193,12 +193,24 @@ struct page {
> atomic_t _mapcount;
>
> /*
> - * If the page is neither PageSlab nor mappable to userspace,
> - * the value stored here may help determine what this page
> - * is used for. See page-flags.h for a list of page types
> - * which are currently stored here.
> + * If the page is not mappable to userspace, the value
> + * stored here may help determine what this page is used for.
> + * See page-flags.h for a list of page types which are currently
> + * stored here.
> */
> - unsigned int page_type;
> + struct {
> + /*
> + * Always place page_type in
> + * upper 16 bits of _mapcount
> + */
> +#ifdef CPU_BIG_ENDIAN
s/CPU_BIG_ENDIAN/CONFIG_CPU_BIG_ENDIAN/g
> + __u16 page_type;
> + __u16 active;
> +#else
> + __u16 active;
> + __u16 page_type;
> +#endif
> + };
> };
>
> /* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
[...]
> diff --git a/mm/slab.h b/mm/slab.h
> index 985820b9069b..a5273e189265 100644
> --- a/mm/slab.h
> +++ b/mm/slab.h
> @@ -20,7 +20,16 @@ struct slab {
> };
> struct rcu_head rcu_head;
> };
> - unsigned int active;
> + struct {
> + /* always place page_type in upper 16 bits of _mapcount */
> +#ifdef CPU_BIG_ENDIAN
same here.
> + __u16 page_type;
> + __u16 active;
> +#else
> + __u16 active;
> + __u16 page_type;
> +#endif
> + };
>
> #elif defined(CONFIG_SLUB)
>
> --
> 2.32.0
>
--
Thanks,
Hyeonggon
next prev parent reply other threads:[~2022-09-19 13:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-19 12:57 [PATCH] mm: move PG_slab flag to page_type Hyeonggon Yoo
2022-09-19 12:59 ` [RFC PATCH] " Hyeonggon Yoo
2022-09-19 13:16 ` Hyeonggon Yoo [this message]
2022-09-24 23:04 ` [PATCH] " Matthew Wilcox
2022-09-26 7:55 ` David Hildenbrand
2022-10-07 13:36 ` Hyeonggon Yoo
2022-10-07 18:02 ` Matthew Wilcox
2022-10-08 4:21 ` Hyeonggon Yoo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YyhroRoWrQlmGdGu@hyeyoo \
--to=42.hyeyoo@gmail.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=cl@linux.com \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=elver@google.com \
--cc=hughd@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=minchan@kernel.org \
--cc=naoya.horiguchi@nec.com \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=songmuchun@bytedance.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.