Re: [PATCH v2 0/2] mm: unify the allocation of pglist_data instances
From: Mike Rapoport <rppt@kernel.org>
Date: 2021-05-19 03:49:11
Also in:
kexec, linux-arm-kernel, linux-doc, linux-mediatek, linux-mm
On Wed, May 19, 2021 at 08:12:06AM +0800, Miles Chen wrote:
On Tue, 2021-05-18 at 19:09 +0300, Mike Rapoport wrote:quoted
Hello Miles, On Tue, May 18, 2021 at 05:24:44PM +0800, Miles Chen wrote:quoted
This patches is created to fix the __pa() warning messages when CONFIG_DEBUG_VIRTUAL=y by unifying the allocation of pglist_data instances. In current implementation of node_data, if CONFIG_NEED_MULTIPLE_NODES=y, pglist_data is allocated by a memblock API. If CONFIG_NEED_MULTIPLE_NODES=n, we use a global variable named "contig_page_data". If CONFIG_DEBUG_VIRTUAL is not enabled. __pa() can handle both allocation and symbol cases. But if CONFIG_DEBUG_VIRTUAL is set, we will have the "virt_to_phys used for non-linear address" warning when booting. To fix the warning, always allocate pglist_data by memblock APIs and remove the usage of contig_page_data.Somehow I was sure that we can allocate pglist_data before it is accessed in sparse_init() somewhere outside mm/sparse.c. It's really not the case and having two places that may allocated this structure is surely worth than your previous suggestion. Sorry about that.Do you mean taht to call allocation function arch/*, somewhere after paging_init() (so we can access pglist_data) and before sparse_init() and free_area_init()?
No, I meant that your original patch is better than adding allocation of NODE_DATA(0) in two places.
Milesquoted
quoted
Warning message: [ 0.000000] ------------[ cut here ]------------ [ 0.000000] virt_to_phys used for non-linear address: (____ptrval____) (contig_page_data+0x0/0x1c00) [ 0.000000] WARNING: CPU: 0 PID: 0 at arch/arm64/mm/physaddr.c:15 __virt_to_phys+0x58/0x68 [ 0.000000] Modules linked in: [ 0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G W 5.13.0-rc1-00074-g1140ab592e2e #3 [ 0.000000] Hardware name: linux,dummy-virt (DT) [ 0.000000] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO BTYPE=--) [ 0.000000] pc : __virt_to_phys+0x58/0x68 [ 0.000000] lr : __virt_to_phys+0x54/0x68 [ 0.000000] sp : ffff800011833e70 [ 0.000000] x29: ffff800011833e70 x28: 00000000418a0018 x27: 0000000000000000 [ 0.000000] x26: 000000000000000a x25: ffff800011b70000 x24: ffff800011b70000 [ 0.000000] x23: fffffc0001c00000 x22: ffff800011b70000 x21: 0000000047ffffb0 [ 0.000000] x20: 0000000000000008 x19: ffff800011b082c0 x18: ffffffffffffffff [ 0.000000] x17: 0000000000000000 x16: ffff800011833bf9 x15: 0000000000000004 [ 0.000000] x14: 0000000000000fff x13: ffff80001186a548 x12: 0000000000000000 [ 0.000000] x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000 [ 0.000000] x8 : ffff8000115c9000 x7 : 737520737968705f x6 : ffff800011b62ef8 [ 0.000000] x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000 [ 0.000000] x2 : 0000000000000000 x1 : ffff80001159585e x0 : 0000000000000058 [ 0.000000] Call trace: [ 0.000000] __virt_to_phys+0x58/0x68 [ 0.000000] check_usemap_section_nr+0x50/0xfc [ 0.000000] sparse_init_nid+0x1ac/0x28c [ 0.000000] sparse_init+0x1c4/0x1e0 [ 0.000000] bootmem_init+0x60/0x90 [ 0.000000] setup_arch+0x184/0x1f0 [ 0.000000] start_kernel+0x78/0x488 [ 0.000000] ---[ end trace f68728a0d3053b60 ]--- [1] https://urldefense.com/v3/__https://lore.kernel.org/patchwork/patch/1425110/__;!!CTRNKA9wMg0ARbw!x-wGFEC1wLzXho2kI1CrC2fjXNaQm5f-n0ADQyJDckCOKZHAP_q055DCSWYcQ7Zdcw$ Change since v1: - use memblock_alloc() to create pglist_data when CONFIG_NUMA=n Miles Chen (2): mm: introduce prepare_node_data mm: replace contig_page_data with node_data Documentation/admin-guide/kdump/vmcoreinfo.rst | 13 ------------- arch/powerpc/kexec/core.c | 5 ----- include/linux/gfp.h | 3 --- include/linux/mm.h | 2 ++ include/linux/mmzone.h | 4 ++-- kernel/crash_core.c | 1 - mm/memblock.c | 3 +-- mm/page_alloc.c | 16 ++++++++++++++++ mm/sparse.c | 2 ++ 9 files changed, 23 insertions(+), 26 deletions(-) base-commit: 8ac91e6c6033ebc12c5c1e4aa171b81a662bd70f -- 2.18.0
-- Sincerely yours, Mike.