From: Vlastimil Babka <vbabka@suse.cz>
To: Matthew Wilcox <willy@infradead.org>, linux-mm@kvack.org
Cc: Matthew Wilcox <mawilcox@microsoft.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Christoph Lameter <cl@linux.com>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Pekka Enberg <penberg@kernel.org>
Subject: Re: [PATCH v3 10/14] mm: Move lru union within struct page
Date: Thu, 19 Apr 2018 15:56:33 +0200 [thread overview]
Message-ID: <352052d3-dfb1-44f9-7f89-5fc016f2f60f@suse.cz> (raw)
In-Reply-To: <20180418184912.2851-11-willy@infradead.org>
On 04/18/2018 08:49 PM, Matthew Wilcox wrote:
> From: Matthew Wilcox <mawilcox@microsoft.com>
>
> Since the LRU is two words, this does not affect the double-word
> alignment of SLUB's freelist.
>
> Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
> ---
> include/linux/mm_types.h | 102 +++++++++++++++++++--------------------
> 1 file changed, 51 insertions(+), 51 deletions(-)
>
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index 39521b8385c1..230d473f16da 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -72,6 +72,57 @@ struct hmm;
> struct page {
> unsigned long flags; /* Atomic flags, some possibly
> * updated asynchronously */
> + /*
> + * WARNING: bit 0 of the first word encode PageTail(). That means
> + * the rest users of the storage space MUST NOT use the bit to
> + * avoid collision and false-positive PageTail().
> + */
> + union {
> + struct list_head lru; /* Pageout list, eg. active_list
> + * protected by zone_lru_lock !
> + * Can be used as a generic list
> + * by the page owner.
> + */
> + struct dev_pagemap *pgmap; /* ZONE_DEVICE pages are never on an
> + * lru or handled by a slab
> + * allocator, this points to the
> + * hosting device page map.
> + */
> + struct { /* slub per cpu partial pages */
> + struct page *next; /* Next partial slab */
> +#ifdef CONFIG_64BIT
> + int pages; /* Nr of partial slabs left */
> + int pobjects; /* Approximate # of objects */
> +#else
> + short int pages;
> + short int pobjects;
> +#endif
> + };
> +
> + struct rcu_head rcu_head; /* Used by SLAB
> + * when destroying via RCU
> + */
> + /* Tail pages of compound page */
> + struct {
> + unsigned long compound_head; /* If bit zero is set */
> +
> + /* First tail page only */
> + unsigned char compound_dtor;
> + unsigned char compound_order;
> + /* two/six bytes available here */
> + };
> +
> +#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PMD_PTLOCKS
> + struct {
> + unsigned long __pad; /* do not overlay pmd_huge_pte
> + * with compound_head to avoid
> + * possible bit 0 collision.
> + */
> + pgtable_t pmd_huge_pte; /* protected by page->ptl */
> + };
> +#endif
> + };
> +
> union { /* This union is three words (12/24 bytes) in size */
> struct { /* Page cache and anonymous pages */
> /* See page-flags.h for PAGE_MAPPING_FLAGS */
> @@ -133,57 +184,6 @@ struct page {
> /* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
> atomic_t _refcount;
>
> - /*
> - * WARNING: bit 0 of the first word encode PageTail(). That means
> - * the rest users of the storage space MUST NOT use the bit to
> - * avoid collision and false-positive PageTail().
> - */
> - union {
> - struct list_head lru; /* Pageout list, eg. active_list
> - * protected by zone_lru_lock !
> - * Can be used as a generic list
> - * by the page owner.
> - */
> - struct dev_pagemap *pgmap; /* ZONE_DEVICE pages are never on an
> - * lru or handled by a slab
> - * allocator, this points to the
> - * hosting device page map.
> - */
> - struct { /* slub per cpu partial pages */
> - struct page *next; /* Next partial slab */
> -#ifdef CONFIG_64BIT
> - int pages; /* Nr of partial slabs left */
> - int pobjects; /* Approximate # of objects */
> -#else
> - short int pages;
> - short int pobjects;
> -#endif
> - };
> -
> - struct rcu_head rcu_head; /* Used by SLAB
> - * when destroying via RCU
> - */
> - /* Tail pages of compound page */
> - struct {
> - unsigned long compound_head; /* If bit zero is set */
> -
> - /* First tail page only */
> - unsigned char compound_dtor;
> - unsigned char compound_order;
> - /* two/six bytes available here */
> - };
> -
> -#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PMD_PTLOCKS
> - struct {
> - unsigned long __pad; /* do not overlay pmd_huge_pte
> - * with compound_head to avoid
> - * possible bit 0 collision.
> - */
> - pgtable_t pmd_huge_pte; /* protected by page->ptl */
> - };
> -#endif
> - };
> -
> #ifdef CONFIG_MEMCG
> struct mem_cgroup *mem_cgroup;
> #endif
>
next prev parent reply other threads:[~2018-04-19 13:56 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-18 18:48 [PATCH v3 00/14] Rearrange " Matthew Wilcox
2018-04-18 18:48 ` [PATCH v3 01/14] s390: Use _refcount for pgtables Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 02/14] mm: Split page_type out from _mapcount Matthew Wilcox
2018-04-19 9:04 ` Vlastimil Babka
2018-04-19 11:16 ` Matthew Wilcox
2018-04-20 15:17 ` Christopher Lameter
2018-04-20 20:43 ` Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 03/14] mm: Mark pages in use for page tables Matthew Wilcox
2018-04-19 9:30 ` Vlastimil Babka
2018-04-18 18:49 ` [PATCH v3 04/14] mm: Switch s_mem and slab_cache in struct page Matthew Wilcox
2018-04-19 11:06 ` Vlastimil Babka
2018-04-19 11:19 ` Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 05/14] mm: Move 'private' union within " Matthew Wilcox
2018-04-19 11:31 ` Vlastimil Babka
2018-04-20 15:25 ` Christopher Lameter
2018-04-20 20:27 ` Matthew Wilcox
2018-04-30 9:38 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 06/14] mm: Move _refcount out of struct page union Matthew Wilcox
2018-04-19 11:37 ` Vlastimil Babka
2018-04-30 9:40 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 07/14] slub: Remove page->counters Matthew Wilcox
2018-04-19 13:42 ` Vlastimil Babka
2018-04-19 14:23 ` Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 08/14] mm: Combine first three unions in struct page Matthew Wilcox
2018-04-19 13:46 ` Vlastimil Babka
2018-04-19 14:08 ` Matthew Wilcox
2018-04-30 9:42 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 09/14] mm: Use page->deferred_list Matthew Wilcox
2018-04-19 13:23 ` Vlastimil Babka
2018-04-30 9:43 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 10/14] mm: Move lru union within struct page Matthew Wilcox
2018-04-19 13:56 ` Vlastimil Babka [this message]
2018-04-30 9:44 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 11/14] mm: Combine first two unions in " Matthew Wilcox
2018-04-19 14:03 ` Vlastimil Babka
2018-04-30 9:47 ` Kirill A. Shutemov
2018-04-30 12:42 ` Matthew Wilcox
2018-04-30 13:12 ` Kirill A. Shutemov
2018-04-18 18:49 ` [PATCH v3 12/14] mm: Improve struct page documentation Matthew Wilcox
2018-04-18 23:32 ` Randy Dunlap
2018-04-18 23:43 ` Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 13/14] slab,slub: Remove rcu_head size checks Matthew Wilcox
2018-04-18 18:49 ` [PATCH v3 14/14] slub: Remove kmem_cache->reserved Matthew Wilcox
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=352052d3-dfb1-44f9-7f89-5fc016f2f60f@suse.cz \
--to=vbabka@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=mawilcox@microsoft.com \
--cc=penberg@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox