mm/page_owner: Remove drain_all_pages from init_early_allocated_pages
Subsystems (2)
PATCH 1/1 mm/page_owner: Remove drain_all_pages from init_early_allocated_pages
When setting page_owner = on, the following warning can be seen in the boot log:
WARNING: CPU: 0 PID: 0 at mm/page_alloc.c:2537 drain_all_pages+0x171/0x1a0 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180109-1-default+ #7 Hardware name: Dell Inc. Latitude E7470/0T6HHJ, BIOS 1.11.3 11/09/2016 RIP: 0010:drain_all_pages+0x171/0x1a0 RSP: 0000:ffffffff82003ea8 EFLAGS: 00010246 RAX: 000000000000000f RBX: ffffffffffffffff RCX: ffffffff8205b388 RDX: 0000000000000001 RSI: 0000000000000096 RDI: 0000000000000202 RBP: 0000000000000000 R08: 0000000000000000 R09: 00000000000000af R10: 0000000000000004 R11: 00000000000000ae R12: ffff88024dfdcec0 R13: ffffffff82530740 R14: 0000000000000000 R15: 00000000a8831448 FS: 0000000000000000(0000) GS:ffff88024dc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: ffff88024dfff000 CR3: 000000000200a001 CR4: 00000000000606b0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: init_page_owner+0x4e/0x260 start_kernel+0x3e6/0x4a6 ? set_init_arg+0x55/0x55 secondary_startup_64+0xa5/0xb0 Code: c5 ed ff 89 df 48 c7 c6 20 3b 71 82 e8 f9 4b 52 00 3b 05 d7 0b f8 00 89 c3 72 d5 5b 5d 41 5 ---[ end trace 45da7f0cb4aef07b ]---
This warning is showed because we are calling drain_all_pages() in init_early_allocated_pages(), but mm_percpu_wq is not up yet,
it is being set up later on in kernel_init_freeable() -> init_mm_internals().
--- mm/page_owner.c | 1 - 1 file changed, 1 deletion(-)
mm/page_owner.c +0 -1
@@ -616,7 +616,6 @@ static void init_early_allocated_pages(void) {pg_data_t *pgdat; -drain_all_pages (NULL );for_each_online_pgdat (pgdat)init_zones_in_node (pgdat); }
Signature · 7 lines
2.13.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Michal Hocko
reviewer[CC Joonsoo]
Quoted 26 lines · Oscar Salvador
When setting
page_owner= on, the following warning can be seen in the boot log:WARNING: CPU: 0 PID: 0 at mm/page_alloc.c:2537 drain_all_pages+0x171/0x1a0 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180109-1-default+ #7 Hardware name: Dell Inc. Latitude E7470/0T6HHJ, BIOS 1.11.3 11/09/2016 RIP: 0010:drain_all_pages+0x171/0x1a0 RSP: 0000:ffffffff82003ea8 EFLAGS: 00010246 RAX: 000000000000000f RBX: ffffffffffffffff RCX: ffffffff8205b388 RDX: 0000000000000001 RSI: 0000000000000096 RDI: 0000000000000202 RBP: 0000000000000000 R08: 0000000000000000 R09: 00000000000000af R10: 0000000000000004 R11: 00000000000000ae R12: ffff88024dfdcec0 R13: ffffffff82530740 R14: 0000000000000000 R15: 00000000a8831448 FS: 0000000000000000(0000) GS:ffff88024dc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: ffff88024dfff000 CR3: 000000000200a001 CR4: 00000000000606b0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: init_page_owner+0x4e/0x260 start_kernel+0x3e6/0x4a6 ? set_init_arg+0x55/0x55 secondary_startup_64+0xa5/0xb0 Code: c5 ed ff 89 df 48 c7 c6 20 3b 71 82 e8 f9 4b 52 00 3b 05 d7 0b f8 00 89 c3 72 d5 5b 5d 41 5 ---[ end trace 45da7f0cb4aef07b ]---
Quoted 3 lines
This warning is showed because we are calling
drain_all_pages()ininit_early_allocated_pages(), butmm_percpu_wqis not up yet,
it is being set up later on inkernel_init_freeable()->init_mm_internals().
I _think_ the patch is correct. The changelog should explain, _why_ removing drain_all_pages is OK. Joonsoo what was the reason to put it here in the first place? I do not see any real reason. This is an init code and we shouldn't have any pages on those caches anyway. Moreover I fail to see why the fact they are on the pcp caches mattered at all.
Quoted 20 lines
Signed-off-by Oscar Salvador <[email protected]>--- mm/page_owner.c | 1 - 1 file changed, 1 deletion(-)mm/page_owner.c +0
-1@@ -616,7 +616,6 @@ static void init_early_allocated_pages(void) {pg_data_t *pgdat; -drain_all_pages (NULL );for_each_online_pgdat (pgdat)init_zones_in_node (pgdat); }Signature · 1 line
2.13.5
Signature · 8 lines
Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Joonsoo Kim
Acked-by [email protected]2018-01-10 1:26 GMT+09:00 Michal Hocko <[email protected]>:
Quoted 33 lines
[CC Joonsoo]
Quoted 26 lines · Oscar Salvador
When setting
page_owner= on, the following warning can be seen in the boot log:WARNING: CPU: 0 PID: 0 at mm/page_alloc.c:2537 drain_all_pages+0x171/0x1a0 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180109-1-default+ #7 Hardware name: Dell Inc. Latitude E7470/0T6HHJ, BIOS 1.11.3 11/09/2016 RIP: 0010:drain_all_pages+0x171/0x1a0 RSP: 0000:ffffffff82003ea8 EFLAGS: 00010246 RAX: 000000000000000f RBX: ffffffffffffffff RCX: ffffffff8205b388 RDX: 0000000000000001 RSI: 0000000000000096 RDI: 0000000000000202 RBP: 0000000000000000 R08: 0000000000000000 R09: 00000000000000af R10: 0000000000000004 R11: 00000000000000ae R12: ffff88024dfdcec0 R13: ffffffff82530740 R14: 0000000000000000 R15: 00000000a8831448 FS: 0000000000000000(0000) GS:ffff88024dc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: ffff88024dfff000 CR3: 000000000200a001 CR4: 00000000000606b0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: init_page_owner+0x4e/0x260 start_kernel+0x3e6/0x4a6 ? set_init_arg+0x55/0x55 secondary_startup_64+0xa5/0xb0 Code: c5 ed ff 89 df 48 c7 c6 20 3b 71 82 e8 f9 4b 52 00 3b 05 d7 0b f8 00 89 c3 72 d5 5b 5d 41 5 ---[ end trace 45da7f0cb4aef07b ]---Quoted 3 lines
This warning is showed because we are calling
drain_all_pages()ininit_early_allocated_pages(), butmm_percpu_wqis not up yet,
it is being set up later on inkernel_init_freeable()->init_mm_internals().
Quoted 5 lines
I _think_ the patch is correct. The changelog should explain, _why_ removing
drain_all_pagesis OK. Joonsoo what was the reason to put it here in the first place? I do not see any real reason. This is an init code and we shouldn't have any pages on those caches anyway. Moreover I fail to see why the fact they are on the pcp caches mattered at all.
I also _think_ the patch is correct. My intention is to move all the free page from the pcp
to the buddy since init_early_allocated_pages() tries to distinguish allocated page by
checking the buddy flag. However, this is an init code and batch counter of the pcp would
be zero so there would be no free page on pcp.
Thanks.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>