Re: microblaze HAVE_MEMBLOCK_NODE_MAP dependency (was Re: [PATCH v2 0/5] mm: Enable CONFIG_NODES_SPAN_OTHER_NODES by default for NUMA)

From: Michal Simek
Date: Mon Sep 02 2019 - 09:51:49 EST


On 31. 07. 19 19:15, Mike Rapoport wrote:
> On Wed, Jul 31, 2019 at 04:41:14PM +0200, Michal Hocko wrote:
>> On Wed 31-07-19 17:21:29, Mike Rapoport wrote:
>>> On Wed, Jul 31, 2019 at 03:00:37PM +0200, Michal Hocko wrote:
>>>>
>>>> I am sorry, but I still do not follow. Who is consuming that node id
>>>> information when NUMA=n. In other words why cannot we simply do
>>>
>>> We can, I think nobody cared to change it.
>>
>> It would be great if somebody with the actual HW could try it out.
>> I can throw a patch but I do not even have a cross compiler in my
>> toolbox.
>
> Well, it compiles :)
>
>>>> diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
>>>> index a015a951c8b7..3a47e8db8d1c 100644
>>>> --- a/arch/microblaze/mm/init.c
>>>> +++ b/arch/microblaze/mm/init.c
>>>> @@ -175,14 +175,9 @@ void __init setup_memory(void)
>>>>
>>>> start_pfn = memblock_region_memory_base_pfn(reg);
>>>> end_pfn = memblock_region_memory_end_pfn(reg);
>>>> - memblock_set_node(start_pfn << PAGE_SHIFT,
>>>> - (end_pfn - start_pfn) << PAGE_SHIFT,
>>>> - &memblock.memory, 0);
>>>> + memory_present(0, start_pfn << PAGE_SHIFT, end_pfn << PAGE_SHIFT);
>>>
>>> memory_present() expects pfns, the shift is not needed.
>>
>> Right.

Sorry for slow response on this. In general regarding this topic.
Microblaze is soft core CPU (now there are hardcore versions too but not
running Linux). I believe there could be Numa system with
microblaze/microblazes (SMP is not supported in mainline).

This code was added in 2011 which is pretty hard to remember why it was
done in this way.

It compiles but not working on HW. Please take a look at log below.

Thanks,
Michal


[ 0.000000] Linux version 5.3.0-rc6-00007-g54b01939182f-dirty
(monstr@monstr-desktop3) (gcc version 8.2.0 (crosstool-NG 1.20.0)) #101
Mon Sep 2 15:44:05 CEST 2019
[ 0.000000] setup_memory: max_mapnr: 0x40000
[ 0.000000] setup_memory: min_low_pfn: 0x80000
[ 0.000000] setup_memory: max_low_pfn: 0xb0000
[ 0.000000] setup_memory: max_pfn: 0xc0000
[ 0.000000] start pfn 0x80000
[ 0.000000] end pfn 0xc0000
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000080000000-0x00000000afffffff]
[ 0.000000] Normal empty
[ 0.000000] HighMem [mem 0x00000000b0000000-0x00000000bfffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 1: [mem 0x0000000080000000-0x00000000bfffffff]
[ 0.000000] Could not find start_pfn for node 0
[ 0.000000] Initmem setup node 0 [mem
0x0000000000000000-0x0000000000000000]
[ 0.000000] earlycon: ns16550a0 at MMIO 0x44a01000 (options '115200n8')
[ 0.000000] printk: bootconsole [ns16550a0] enabled
[ 0.000000] setup_cpuinfo: initialising
[ 0.000000] setup_cpuinfo: Using full CPU PVR support
[ 0.000000] wt_msr_noirq
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 0
[ 0.000000] Kernel command line: earlycon
[ 0.000000] Dentry cache hash table entries: -2147483648 (order: -13,
0 bytes, linear)
[ 0.000000] Inode-cache hash table entries: -2147483648 (order: -13,
0 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Oops: kernel access of bad area, sig: 11
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted
5.3.0-rc6-00007-g54b01939182f-dirty #101
[ 0.000000] Registers dump: mode=805B9EA8
[ 0.000000] r1=000065A0, r2=C05B7AE6, r3=00000000, r4=00000000
[ 0.000000] r5=00080000, r6=00080B50, r7=00000000, r8=00000004
[ 0.000000] r9=00000000, r10=0000001F, r11=00000000, r12=00006666
[ 0.000000] r13=4119DCC0, r14=00000000, r15=C05EFF8C, r16=00000000
[ 0.000000] r17=C0604408, r18=FFFC0000, r19=C05B9F6C, r20=BFFEC168
[ 0.000000] r21=BFFEC168, r22=EFFF9AC0, r23=00000001, r24=C0606874
[ 0.000000] r25=BFE6B74C, r26=80000000, r27=00000000, r28=90000040
[ 0.000000] r29=01000000, r30=00000380, r31=C05C02F0, rPC=C0604408
[ 0.000000] msr=000046A0, ear=00000004, esr=00000D12, fsr=FFFFFFFF
[ 0.000000] Oops: kernel access of bad area, sig: 11


--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs


Attachment: signature.asc
Description: OpenPGP digital signature