mbox series

[-next,v2,00/13] mm: page_alloc: misc cleanup and refector

Message ID 20230516063821.121844-1-wangkefeng.wang@huawei.com
Headers show
Series mm: page_alloc: misc cleanup and refector | expand

Message

Kefeng Wang May 16, 2023, 6:38 a.m. UTC
This is aim to reduce more space in page_alloc.c, also do some
cleanup, no functional changes intended.

This is based on next-20230515.

v2: 
- drop move of __pageblock_pfn_to_page(), suggested by Huang Ying
- move __show_mem() below the __show_free_areas() in patch4
- add new patch13
- add RB from Mike

Kefeng Wang (13):
  mm: page_alloc: move mirrored_kernelcore into mm_init.c
  mm: page_alloc: move init_on_alloc/free() into mm_init.c
  mm: page_alloc: move set_zone_contiguous() into mm_init.c
  mm: page_alloc: collect mem statistic into show_mem.c
  mm: page_alloc: squash page_is_consistent()
  mm: page_alloc: remove alloc_contig_dump_pages() stub
  mm: page_alloc: split out FAIL_PAGE_ALLOC
  mm: page_alloc: split out DEBUG_PAGEALLOC
  mm: page_alloc: move mark_free_page() into snapshot.c
  mm: page_alloc: move pm_* function into power
  mm: vmscan: use gfp_has_io_fs()
  mm: page_alloc: move sysctls into it own fils
  mm: page_alloc: move is_check_pages_enabled() into page_alloc.c

 include/linux/fault-inject.h   |   9 +
 include/linux/gfp.h            |  15 +-
 include/linux/memory_hotplug.h |   3 -
 include/linux/mm.h             |  87 ++--
 include/linux/mmzone.h         |  21 -
 include/linux/suspend.h        |   9 +-
 kernel/power/main.c            |  27 ++
 kernel/power/power.h           |   5 +
 kernel/power/snapshot.c        |  52 +++
 kernel/sysctl.c                |  67 ---
 lib/Makefile                   |   2 +-
 lib/show_mem.c                 |  37 --
 mm/Makefile                    |   4 +-
 mm/debug_page_alloc.c          |  59 +++
 mm/fail_page_alloc.c           |  66 +++
 mm/internal.h                  |  21 +-
 mm/mm_init.c                   |  32 ++
 mm/page_alloc.c                | 799 ++++-----------------------------
 mm/show_mem.c                  | 429 ++++++++++++++++++
 mm/swapfile.c                  |   1 +
 mm/vmscan.c                    |   2 +-
 21 files changed, 857 insertions(+), 890 deletions(-)
 delete mode 100644 lib/show_mem.c
 create mode 100644 mm/debug_page_alloc.c
 create mode 100644 mm/fail_page_alloc.c
 create mode 100644 mm/show_mem.c

Comments

Andrew Morton May 16, 2023, 10:22 p.m. UTC | #1
On Tue, 16 May 2023 14:38:16 +0800 Kefeng Wang <wangkefeng.wang@huawei.com> wrote:

> DEBUG_PAGEALLOC
>
>  mm/debug_page_alloc.c | 59 +++++++++++++++++++++++++++++++++
>  mm/page_alloc.c       | 69 ---------------------------------------

and

FAIL_PAGE_ALLOC

We're irritatingly inconsistent about whether there's an underscore.

akpm:/usr/src/25> grep page_alloc mm/*c|wc -l
49
akpm:/usr/src/25> grep pagealloc mm/*c|wc -l 
28
Kefeng Wang May 18, 2023, 1:35 a.m. UTC | #2
On 2023/5/17 6:22, Andrew Morton wrote:
> On Tue, 16 May 2023 14:38:16 +0800 Kefeng Wang <wangkefeng.wang@huawei.com> wrote:
> 
>> DEBUG_PAGEALLOC
>>
>>   mm/debug_page_alloc.c | 59 +++++++++++++++++++++++++++++++++
>>   mm/page_alloc.c       | 69 ---------------------------------------
> 
> and
> 
> FAIL_PAGE_ALLOC
> 
> We're irritatingly inconsistent about whether there's an underscore.
> 
> akpm:/usr/src/25> grep page_alloc mm/*c|wc -l
> 49
> akpm:/usr/src/25> grep pagealloc mm/*c|wc -l
> 28

All the 28 pagealloc naming is from DEBUG_PAGEALLOC feature, they chould
be changed to page_alloc except the cmdline, but it will lead to long
function name and don't gain too much advantage, so keep unchange?

$ grep pagealloc mm/*c
mm/debug_page_alloc.c:bool _debug_pagealloc_enabled_early __read_mostly
mm/debug_page_alloc.c:EXPORT_SYMBOL(_debug_pagealloc_enabled_early);
mm/debug_page_alloc.c:DEFINE_STATIC_KEY_FALSE(_debug_pagealloc_enabled);
mm/debug_page_alloc.c:EXPORT_SYMBOL(_debug_pagealloc_enabled);
mm/debug_page_alloc.c:static int __init early_debug_pagealloc(char *buf)
mm/debug_page_alloc.c:	return kstrtobool(buf, 
&_debug_pagealloc_enabled_early);
mm/debug_page_alloc.c:early_param("debug_pagealloc", early_debug_pagealloc);
mm/memory_hotplug.c:	 * Freeing the page with debug_pagealloc enabled 
will try to unmap it,
mm/memory_hotplug.c:	debug_pagealloc_map_pages(page, 1 << order);
mm/mm_init.c:	      debug_pagealloc_enabled())) {
mm/mm_init.c:	if (debug_pagealloc_enabled()) {
mm/mm_init.c:		static_branch_enable(&_debug_pagealloc_enabled);
mm/page_alloc.c:	 * page becomes unavailable via debug_pagealloc or 
arch_free_page.
mm/page_alloc.c:	debug_pagealloc_unmap_pages(page, 1 << order);
mm/page_alloc.c:	debug_pagealloc_map_pages(page, 1 << order);
mm/page_poison.c:		pr_err("pagealloc: single bit error\n");
mm/page_poison.c:		pr_err("pagealloc: memory corruption\n");
mm/page_poison.c:	dump_page(page, "pagealloc: corrupted page details");
mm/slab.c:static inline bool is_debug_pagealloc_cache(struct kmem_cache 
*cachep)
mm/slab.c:	return debug_pagealloc_enabled_static() && OFF_SLAB(cachep) &&
mm/slab.c:	if (!is_debug_pagealloc_cache(cachep))
mm/slab.c:	if (is_debug_pagealloc_cache(cachep))
mm/slab.c:	 * To activate debug pagealloc, off-slab management is necessary
mm/slab.c:	if (debug_pagealloc_enabled_static() && (flags & SLAB_POISON) &&
mm/slab.c:		is_debug_pagealloc_cache(cachep))
mm/slub.c:	if (!debug_pagealloc_enabled_static())
mm/vmalloc.c:	if (debug_pagealloc_enabled_static())
mm/vmalloc.c:	if (debug_pagealloc_enabled_static())



>
Andrew Morton May 18, 2023, 2:10 a.m. UTC | #3
On Thu, 18 May 2023 09:35:29 +0800 Kefeng Wang <wangkefeng.wang@huawei.com> wrote:

> > We're irritatingly inconsistent about whether there's an underscore.
> > 
> > akpm:/usr/src/25> grep page_alloc mm/*c|wc -l
> > 49
> > akpm:/usr/src/25> grep pagealloc mm/*c|wc -l
> > 28
> 
> All the 28 pagealloc naming is from DEBUG_PAGEALLOC feature, they chould
> be changed to page_alloc except the cmdline, but it will lead to long
> function name and don't gain too much advantage, so keep unchange?

Sure, it's probably not the worst thing in there.  I was just having
a moan.