Message ID | 20210809093750.131091-1-wangkefeng.wang@huawei.com (mailing list archive) |
---|---|
Headers | show |
Series | arm64: support page mapping percpu first chunk allocator | expand |
Hi Catalin and Will, The drivers/base/arch_numa.c is only shared by riscv and arm64, and the change from patch2 won't broke riscv. Could all patches be merged by arm64 tree? or any new comments? Many thanks. On 2021/8/9 17:37, Kefeng Wang wrote: > Percpu embedded first chunk allocator is the firstly option, but it > could fails on ARM64, eg, > "percpu: max_distance=0x5fcfdc640000 too large for vmalloc space 0x781fefff0000" > "percpu: max_distance=0x600000540000 too large for vmalloc space 0x7dffb7ff0000" > "percpu: max_distance=0x5fff9adb0000 too large for vmalloc space 0x5dffb7ff0000" > > then we could meet "WARNING: CPU: 15 PID: 461 at vmalloc.c:3087 pcpu_get_vm_areas+0x488/0x838", > even the system could not boot successfully. > > Let's implement page mapping percpu first chunk allocator as a fallback > to the embedding allocator to increase the robustness of the system. > > Also fix a crash when both NEED_PER_CPU_PAGE_FIRST_CHUNK and KASAN_VMALLOC enabled. > > Tested on ARM64 qemu with cmdline "percpu_alloc=page" based on v5.14-rc5. > > v3: > - search for a range that fits instead of always picking the end from > vmalloc area suggested by Catalin. > - use NUMA_NO_NODE to avoid "virt_to_phys used for non-linear address:" > issue in arm64 kasan_populate_early_vm_area_shadow(). > - add Acked-by: Marco Elver <elver@google.com> to patch v3 > > V2: > - fix build error when CONFIG_KASAN disabled, found by lkp@intel.com > - drop wrong __weak comment from kasan_populate_early_vm_area_shadow(), > found by Marco Elver <elver@google.com> > > Kefeng Wang (3): > vmalloc: Choose a better start address in vm_area_register_early() > arm64: Support page mapping percpu first chunk allocator > kasan: arm64: Fix pcpu_page_first_chunk crash with KASAN_VMALLOC > > arch/arm64/Kconfig | 4 ++ > arch/arm64/mm/kasan_init.c | 16 ++++++++ > drivers/base/arch_numa.c | 82 +++++++++++++++++++++++++++++++++----- > include/linux/kasan.h | 6 +++ > mm/kasan/init.c | 5 +++ > mm/vmalloc.c | 17 +++++--- > 6 files changed, 115 insertions(+), 15 deletions(-) >
On 2021/8/12 14:07, Kefeng Wang wrote: > Hi Catalin and Will, > > The drivers/base/arch_numa.c is only shared by riscv and arm64, > > and the change from patch2 won't broke riscv. > > Could all patches be merged by arm64 tree? or any new comments? Kindly ping... > > Many thanks. > > On 2021/8/9 17:37, Kefeng Wang wrote: >> Percpu embedded first chunk allocator is the firstly option, but it >> could fails on ARM64, eg, >> "percpu: max_distance=0x5fcfdc640000 too large for vmalloc space >> 0x781fefff0000" >> "percpu: max_distance=0x600000540000 too large for vmalloc space >> 0x7dffb7ff0000" >> "percpu: max_distance=0x5fff9adb0000 too large for vmalloc space >> 0x5dffb7ff0000" >> >> then we could meet "WARNING: CPU: 15 PID: 461 at vmalloc.c:3087 >> pcpu_get_vm_areas+0x488/0x838", >> even the system could not boot successfully. >> >> Let's implement page mapping percpu first chunk allocator as a fallback >> to the embedding allocator to increase the robustness of the system. >> >> Also fix a crash when both NEED_PER_CPU_PAGE_FIRST_CHUNK and >> KASAN_VMALLOC enabled. >> >> Tested on ARM64 qemu with cmdline "percpu_alloc=page" based on >> v5.14-rc5. >> >> v3: >> - search for a range that fits instead of always picking the end from >> vmalloc area suggested by Catalin. >> - use NUMA_NO_NODE to avoid "virt_to_phys used for non-linear address:" >> issue in arm64 kasan_populate_early_vm_area_shadow(). >> - add Acked-by: Marco Elver <elver@google.com> to patch v3 >> >> V2: >> - fix build error when CONFIG_KASAN disabled, found by lkp@intel.com >> - drop wrong __weak comment from kasan_populate_early_vm_area_shadow(), >> found by Marco Elver <elver@google.com> >> >> Kefeng Wang (3): >> vmalloc: Choose a better start address in vm_area_register_early() >> arm64: Support page mapping percpu first chunk allocator >> kasan: arm64: Fix pcpu_page_first_chunk crash with KASAN_VMALLOC >> >> arch/arm64/Kconfig | 4 ++ >> arch/arm64/mm/kasan_init.c | 16 ++++++++ >> drivers/base/arch_numa.c | 82 +++++++++++++++++++++++++++++++++----- >> include/linux/kasan.h | 6 +++ >> mm/kasan/init.c | 5 +++ >> mm/vmalloc.c | 17 +++++--- >> 6 files changed, 115 insertions(+), 15 deletions(-) >>
On Thu, Aug 12, 2021 at 02:07:36PM +0800, Kefeng Wang wrote: > The drivers/base/arch_numa.c is only shared by riscv and arm64, > > and the change from patch2 won't broke riscv. > > Could all patches be merged by arm64 tree? or any new comments? The series touches drivers/ and mm/ but missing acks from both Greg and Andrew (cc'ing them). I'm also happy for the series to go in via the mm tree in case Andrew wants to take it.