linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	akpm@linux-foundation.org, songmuchun@bytedance.com,
	vbabka@suse.cz, william.kucharski@oracle.com,
	dhowells@redhat.com, peterx@redhat.com, arnd@arndb.de,
	ccross@google.com, hughd@google.com, ebiederm@xmission.com
Subject: Re: [PATCH 2/7] mm: add private field of first tail to struct page and struct folio
Date: Thu, 1 Sep 2022 19:32:59 +0100	[thread overview]
Message-ID: <YxD6215MS+L+tGLc@casper.infradead.org> (raw)
In-Reply-To: <YxDsu8Ol/yOg7sMV@monkey>

On Thu, Sep 01, 2022 at 10:32:43AM -0700, Mike Kravetz wrote:
> Not really an issue with this patch, but it made me read more of this
> comment about folios.  It goes on to say ...
> 
>  * same power-of-two.  It is at least as large as %PAGE_SIZE.  If it is
>  * in the page cache, it is at a file offset which is a multiple of that
>  * power-of-two.  It may be mapped into userspace at an address which is
>  * at an arbitrary page offset, but its kernel virtual address is aligned
>  * to its size.
>  */
> 
> This series is to begin converting hugetlb code to folios.  Just want to
> note that 'hugetlb folios' have specific user space alignment restrictions.
> So, I do not think the comment about arbitrary page offset would apply to
> hugetlb.
> 
> Matthew, should we note that hugetlb is special in the comment?  Or, is it
> not worth updating?

I'm open to updating it if we can find good wording.  What I'm trying
to get across there is that when dealing with folios, you can assume
that they're naturally aligned physically, logically (in the file) and
virtually (kernel address), but not necessarily virtually (user
address).  Hugetlb folios are special in that they are guaranteed to
be virtually aligned in user space, but I don't know if here is the
right place to document that.  It's an additional restriction, so code
which handles generic folios doesn't need to know it.

> Also, folio_get_private_1 will be used for the hugetlb subpool pointer
> which resides in page[1].private.  This is used in the next patch of
> this series.  I'm sure you are aware that hugetlb also uses page private
> in sub pages 2 and 3.  Can/will/should this method of accessing private
> in sub pages be expanded to cover these as well?  Expansion can happen
> later, but if this can not be expanded perhaps we should come up with
> another scheme.

There's a few ways of tackling this.  What I'm currently thinking is
that we change how hugetlbfs uses struct page to store its extra data.
It would end up looking something like this (in struct page):

+++ b/include/linux/mm_types.h
@@ -147,9 +147,10 @@ struct page {
                };
                struct {        /* Second tail page of compound page */
                        unsigned long _compound_pad_1;  /* compound_head */
-                       unsigned long _compound_pad_2;
                        /* For both global and memcg */
                        struct list_head deferred_list;
+                       unsigned long hugetlbfs_private_2;
+                       unsigned long hugetlbfs_private_3;
                };
                struct {        /* Page table pages */
                        unsigned long _pt_pad_1;        /* compound_head */

although we could use better names and/or types?  I haven't looked to
see what you're storing here yet.  And then we can make the
corresponding change to struct folio to add these elements at the
right place.

Does that sound sensible?


  reply	other threads:[~2022-09-01 18:33 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-29 23:00 [PATCH 0/7] begin converting hugetlb code to folios Sidhartha Kumar
2022-08-29 23:00 ` [PATCH 1/7] mm/hugetlb: add folio support to hugetlb specific flag macros Sidhartha Kumar
2022-08-30  3:33   ` Matthew Wilcox
2022-08-30 18:09     ` Sidhartha Kumar
2022-09-01 16:55       ` Mike Kravetz
2022-08-29 23:00 ` [PATCH 2/7] mm: add private field of first tail to struct page and struct folio Sidhartha Kumar
2022-08-30  3:36   ` Matthew Wilcox
2022-09-01 17:32   ` Mike Kravetz
2022-09-01 18:32     ` Matthew Wilcox [this message]
2022-09-01 20:29       ` Mike Kravetz
2022-08-29 23:00 ` [PATCH 3/7] mm/hugetlb: add hugetlb_folio_subpool() helper Sidhartha Kumar
2022-08-29 23:00 ` [PATCH 4/7] mm/hugetlb: add hugetlb_set_folio_subpool() helper Sidhartha Kumar
2022-08-29 23:00 ` [PATCH 5/7] mm/hugetlb: convert hugetlb_delete_from_page_cache() to use folios Sidhartha Kumar
2022-08-30  3:26   ` Matthew Wilcox
2022-08-30 16:47     ` Sidhartha Kumar
2022-08-29 23:00 ` [PATCH 6/7] mm/hugetlb add folio_hstate() Sidhartha Kumar
2022-09-01 18:34   ` Mike Kravetz
2022-08-29 23:00 ` [PATCH 7/7] mm/migrate: use folio_hstate() in alloc_migration_target() Sidhartha Kumar

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=YxD6215MS+L+tGLc@casper.infradead.org \
    --to=willy@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=ccross@google.com \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mike.kravetz@oracle.com \
    --cc=peterx@redhat.com \
    --cc=sidhartha.kumar@oracle.com \
    --cc=songmuchun@bytedance.com \
    --cc=vbabka@suse.cz \
    --cc=william.kucharski@oracle.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).