Re: aarch64 ACPI boot regressed by commit 7ba5f605f3a0 ("arm64/numa: remove the limitation that cpu0 must bind to node0")

From: Laszlo Ersek
Date: Fri Oct 14 2016 - 09:20:50 EST


On 10/14/16 10:05, Andrew Jones wrote:
> On Fri, Oct 14, 2016 at 12:50:29AM +0200, Laszlo Ersek wrote:
>> (4) Analysis (well, a lame attempt at that, because I have zero
>> familiarity with this code). Let me quote the patch:
>>
>>> commit 7ba5f605f3a0d9495aad539eeb8346d726dfc183
>>> Author: Zhen Lei <thunder.leizhen@xxxxxxxxxx>
>>> Date: Thu Sep 1 14:55:04 2016 +0800
>>>
>>> arm64/numa: remove the limitation that cpu0 must bind to node0
>>>
>>> 1. Remove the old binding code.
>>> 2. Read the nid of cpu0 from dts.
>>> 3. Fallback the nid of cpu0 to 0 when numa=off is set in bootargs.
>>>
>>> Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx>
>>> Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
>>>
>>> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
>>> index c3c08368a685..8b048e6ec34a 100644
>>> --- a/arch/arm64/kernel/smp.c
>>> +++ b/arch/arm64/kernel/smp.c
>>> @@ -624,6 +624,7 @@ static void __init of_parse_and_init_cpus(void)
>>> }
>>>
>>> bootcpu_valid = true;
>>> + early_map_cpu_to_node(0, of_node_to_nid(dn));
>>>
>>> /*
>>> * cpu_logical_map has already been
>>> diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c
>>> index 0a15f010b64a..778a985c8a70 100644
>>> --- a/arch/arm64/mm/numa.c
>>> +++ b/arch/arm64/mm/numa.c
>>> @@ -116,16 +116,24 @@ static void __init setup_node_to_cpumask_map(void)
>>> */
>>> void numa_store_cpu_info(unsigned int cpu)
>>> {
>>> - map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]);
>>> + map_cpu_to_node(cpu, cpu_to_node_map[cpu]);
>>> }
>>>
>>> void __init early_map_cpu_to_node(unsigned int cpu, int nid)
>>> {
>>> /* fallback to node 0 */
>>> - if (nid < 0 || nid >= MAX_NUMNODES)
>>> + if (nid < 0 || nid >= MAX_NUMNODES || numa_off)
>>> nid = 0;
>
> The ACPI equivalent code must be missing (at least) the above, because,
> even with DT, mach-virt won't have cpu to node mappings unless numa
> is configured on the command line. Can you try adding something like
>
> -m 512 -smp 4 \
> -numa node,mem=256M,cpus=0-1,nodeid=0 \
> -numa node,mem=256M,cpus=2-3,nodeid=1
>
> to your QEMU command line?

I added the following to my domain XML, under <cpu>:

<numa>
<cell id='0' cpus='0-1' memory='2097152' unit='KiB'/>
<cell id='1' cpus='2-3' memory='2097152' unit='KiB'/>
</numa>

(See <http://libvirt.org/formatdomain.html#elementsCPU>.)

With that, each NUMA node gets half of the VCPUs and half of the guest RAM.

(This is in a different guest now, one that has a bleeding edge Fedora kernel -- I didn't want to rebuild the upstream kernel yet again, just for this test. So, "4.9.0-0.rc0.git7.1.fc26.aarch64" is based on upstream v4.8-14109-g1573d2c, and it reproduces the problem too.)

> Then when you boot with ACPI you'll get a
> SRAT.

Yes, that's confirmed by the guest kernel log (see below).

> If that works, then we're just missing the "no SRAT, nid = 0"
> code (that should have been added with this patch)

It still crashes with the SRAT, with the following log:

> EFI stub: Booting Linux Kernel...
> ConvertPages: Incompatible memory types
> EFI stub: Using DTB from configuration table
> EFI stub: Exiting boot services and installing virtual address map...
> [ 0.000000] Booting Linux on physical CPU 0x0
> [ 0.000000] Linux version 4.9.0-0.rc0.git7.1.fc26.aarch64 (mockbuild@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) (gcc version 6.2.1 20160916 (Red Hat 6.2.1-2) (GCC) ) #1 SMP Wed Oct 12 17:44:54 UTC 2016
> [ 0.000000] Boot CPU: AArch64 Processor [500f0000]
> [ 0.000000] efi: Getting EFI parameters from FDT:
> [ 0.000000] efi: EFI v2.60 by EDK II
> [ 0.000000] efi: SMBIOS 3.0=0xbbdb0000 ACPI 2.0=0xb86d0000 MEMATTR=0xb936b018
> [ 0.000000] cma: Reserved 512 MiB at 0x00000000e0000000
> [ 0.000000] ACPI: Early table checksum verification disabled
> [ 0.000000] ACPI: RSDP 0x00000000B86D0000 000024 (v02 BOCHS )
> [ 0.000000] ACPI: XSDT 0x00000000B86C0000 000054 (v01 BOCHS BXPCFACP 00000001 01000013)
> [ 0.000000] ACPI: FACP 0x00000000B83E0000 00010C (v05 BOCHS BXPCFACP 00000001 BXPC 00000001)
> [ 0.000000] ACPI: DSDT 0x00000000B83F0000 0010E5 (v02 BOCHS BXPCDSDT 00000001 BXPC 00000001)
> [ 0.000000] ACPI: APIC 0x00000000B83D0000 00018C (v03 BOCHS BXPCAPIC 00000001 BXPC 00000001)
> [ 0.000000] ACPI: GTDT 0x00000000B83C0000 000060 (v02 BOCHS BXPCGTDT 00000001 BXPC 00000001)
> [ 0.000000] ACPI: MCFG 0x00000000B83B0000 00003C (v01 BOCHS BXPCMCFG 00000001 BXPC 00000001)
> [ 0.000000] ACPI: SPCR 0x00000000B83A0000 000050 (v02 BOCHS BXPCSPCR 00000001 BXPC 00000001)
> [ 0.000000] ACPI: SRAT 0x00000000B8390000 0000C8 (v03 BOCHS BXPCSRAT 00000001 BXPC 00000001)
> [ 0.000000] ACPI: SPCR: console: pl011,mmio,0x9000000,9600
> [ 0.000000] earlycon: pl11 at MMIO 0x0000000009000000 (options '9600')
> [ 0.000000] bootconsole [pl11] enabled
> [ 0.000000] ACPI: NUMA: SRAT: PXM 0 -> MPIDR 0x0 -> Node 0
> [ 0.000000] ACPI: NUMA: SRAT: PXM 0 -> MPIDR 0x1 -> Node 0
> [ 0.000000] ACPI: NUMA: SRAT: PXM 1 -> MPIDR 0x2 -> Node 1
> [ 0.000000] ACPI: NUMA: SRAT: PXM 1 -> MPIDR 0x3 -> Node 1
> [ 0.000000] NUMA: Adding memblock [0x40000000 - 0xbfffffff] on node 0
> [ 0.000000] ACPI: SRAT: Node 0 PXM 0 [mem 0x40000000-0xbfffffff]
> [ 0.000000] NUMA: Adding memblock [0xc0000000 - 0x13fffffff] on node 1
> [ 0.000000] ACPI: SRAT: Node 1 PXM 1 [mem 0xc0000000-0x13fffffff]
> [ 0.000000] NUMA: Initmem setup node 0 [mem 0x40000000-0xbfffffff]
> [ 0.000000] NUMA: NODE_DATA [mem 0xbfff2580-0xbfffffff]
> [ 0.000000] NUMA: Initmem setup node 1 [mem 0xc0000000-0x13fffffff]
> [ 0.000000] NUMA: NODE_DATA [mem 0x13fff2580-0x13fffffff]
> [ 0.000000] Zone ranges:
> [ 0.000000] DMA [mem 0x0000000040000000-0x00000000ffffffff]
> [ 0.000000] Normal [mem 0x0000000100000000-0x000000013fffffff]
> [ 0.000000] Movable zone start for each node
> [ 0.000000] Early memory node ranges
> [ 0.000000] node 0: [mem 0x0000000040000000-0x00000000b838ffff]
> [ 0.000000] node 0: [mem 0x00000000b8390000-0x00000000b83fffff]
> [ 0.000000] node 0: [mem 0x00000000b8400000-0x00000000b841ffff]
> [ 0.000000] node 0: [mem 0x00000000b8420000-0x00000000b874ffff]
> [ 0.000000] node 0: [mem 0x00000000b8750000-0x00000000bbc1ffff]
> [ 0.000000] node 0: [mem 0x00000000bbc20000-0x00000000bbffffff]
> [ 0.000000] node 0: [mem 0x00000000bc000000-0x00000000bfffffff]
> [ 0.000000] node 1: [mem 0x00000000c0000000-0x000000013fffffff]
> [ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x00000000bfffffff]
> [ 0.000000] Initmem setup node 1 [mem 0x00000000c0000000-0x000000013fffffff]
> [ 0.000000] psci: probing for conduit method from ACPI.
> [ 0.000000] psci: PSCIv0.2 detected in firmware.
> [ 0.000000] psci: Using standard PSCI v0.2 function IDs
> [ 0.000000] psci: Trusted OS migration not required
> [ 0.000000] percpu: Embedded 3 pages/cpu @fffffe007fda0000 s117832 r8192 d70584 u196608
> [ 0.000000] Detected PIPT I-cache on CPU0
> [ 0.000000] Built 2 zonelists in Node order, mobility grouping on. Total pages: 65472
> [ 0.000000] Policy zone: Normal
> [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.9.0-0.rc0.git7.1.fc26.aarch64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap LANG=en_US.UTF-8 earlycon acpi=force
> [ 0.000000] PID hash table entries: 4096 (order: -1, 32768 bytes)
> [ 0.000000] software IO TLB [mem 0xdbff0000-0xdfff0000] (64MB) mapped at [fffffe009bff0000-fffffe009ffeffff]
> [ 0.000000] Memory: 3542976K/4194304K available (9148K kernel code, 1612K rwdata, 3776K rodata, 1600K init, 15899K bss, 127040K reserved, 524288K cma-reserved)
> [ 0.000000] Virtual kernel memory layout:
> [ 0.000000] modules : 0xfffffc0000000000 - 0xfffffc0008000000 ( 128 MB)
> vmalloc : 0xfffffc0008000000 - 0xfffffdff5fff0000 ( 2045 GB)
> .text : 0xfffffc0008080000 - 0xfffffc0008970000 ( 9152 KB)
> .rodata : 0xfffffc0008970000 - 0xfffffc0008d30000 ( 3840 KB)
> .init : 0xfffffc0008d30000 - 0xfffffc0008ec0000 ( 1600 KB)
> .data : 0xfffffc0008ec0000 - 0xfffffc0009053200 ( 1613 KB)
> .bss : 0xfffffc0009053200 - 0xfffffc0009fda058 ( 15900 KB)
> fixed : 0xfffffdff7e7d0000 - 0xfffffdff7ec00000 ( 4288 KB)
> PCI I/O : 0xfffffdff7ee00000 - 0xfffffdff7fe00000 ( 16 MB)
> vmemmap : 0xfffffdff80000000 - 0xfffffe0000000000 ( 2 GB maximum)
> 0xfffffdff80000000 - 0xfffffdff80400000 ( 4 MB actual)
> memory : 0xfffffe0000000000 - 0xfffffe0100000000 ( 4096 MB)
> [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=2
> [ 0.000000] Running RCU self tests
> [ 0.000000] Hierarchical RCU implementation.
> [ 0.000000] RCU lockdep checking is enabled.
> [ 0.000000] Build-time adjustment of leaf fanout to 64.
> [ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
> [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4
> [ 0.000000] kmemleak: Kernel memory leak detector disabled
> [ 0.000000] NR_IRQS:64 nr_irqs:64 0
> [ 0.000000] GICv2m: ACPI overriding V2M MSI_TYPER (base:80, num:64)
> [ 0.000000] GICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143]
> [ 0.000000] GIC: PPI11 is secure or misconfigured
> [ 0.000000] arm_arch_timer: WARNING: Invalid trigger for IRQ3, assuming level low
> [ 0.000000] arm_arch_timer: WARNING: Please fix your firmware
> [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 50.00MHz (virt).
> [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xb8812736b, max_idle_ns: 440795202655 ns
> [ 0.000003] sched_clock: 56 bits at 50MHz, resolution 20ns, wraps every 4398046511100ns
> [ 0.002198] Console: colour dummy device 80x25
> [ 0.003319] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
> [ 0.005236] ... MAX_LOCKDEP_SUBCLASSES: 8
> [ 0.006183] ... MAX_LOCK_DEPTH: 48
> [ 0.007273] ... MAX_LOCKDEP_KEYS: 8191
> [ 0.008287] ... CLASSHASH_SIZE: 4096
> [ 0.009296] ... MAX_LOCKDEP_ENTRIES: 32768
> [ 0.010327] ... MAX_LOCKDEP_CHAINS: 65536
> [ 0.011318] ... CHAINHASH_SIZE: 32768
> [ 0.012453] memory used by lock dependency info: 8159 kB
> [ 0.013736] per task-struct memory footprint: 1920 bytes
> [ 0.015742] mempolicy: Enabling automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl
> [ 0.018710] Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=50000)
> [ 0.021221] pid_max: default: 32768 minimum: 301
> [ 0.022806] ACPI: Core revision 20160831
> [ 0.027885] ACPI: 1 ACPI AML tables successfully acquired and loaded
>
> [ 0.030252] Security Framework initialized
> [ 0.031355] Yama: becoming mindful.
> [ 0.032176] SELinux: Initializing.
> [ 0.033925] Dentry cache hash table entries: 524288 (order: 6, 4194304 bytes)
> [ 0.037039] Inode-cache hash table entries: 262144 (order: 5, 2097152 bytes)
> [ 0.039383] Mount-cache hash table entries: 8192 (order: 0, 65536 bytes)
> [ 0.041135] Mountpoint-cache hash table entries: 8192 (order: 0, 65536 bytes)
> [ 0.044725] ftrace: allocating 29596 entries in 8 pages
> [ 0.080467] ASID allocator initialised with 65536 entries
> [ 0.082070] ------------[ cut here ]------------
> [ 0.083227] WARNING: CPU: 0 PID: 1 at kernel/workqueue.c:5458 wq_numa_init+0x178/0x21c
> [ 0.085304] Modules linked in:
> [ 0.086102]
> [ 0.086499] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0-0.rc0.git7.1.fc26.aarch64 #1
> [ 0.088611] Hardware name: linux,dummy-virt (DT)
> [ 0.089816] task: fffffe00700aac00 task.stack: fffffe00f8044000
> [ 0.091375] PC is at wq_numa_init+0x178/0x21c
> [ 0.092514] LR is at wq_numa_init+0x14c/0x21c
> [ 0.093654] pc : [<fffffc0008d3f434>] lr : [<fffffc0008d3f408>] pstate: 60000045
> [ 0.095589] sp : fffffe00f8047cb0
> [ 0.096457] x29: fffffe00f8047cb0 [ 0.097311] x28: 0000000000000000
> [ 0.098201]
> [ 0.098601] x27: 0000000000000000 [ 0.099450] x26: fffffc0008ef4a28
> [ 0.100342]
> [ 0.100730] x25: fffffc0008ef3000 [ 0.101576] x24: fffffc0008ef3574
> [ 0.102466]
> [ 0.102853] x23: 0000000000000000 [ 0.103700] x22: fffffe007937de00
> [ 0.104593]
> [ 0.104982] x21: fffffc0008e887f8 [ 0.105829] x20: fffffc0009091000
> [ 0.106723]
> [ 0.107111] x19: 0000000000000000 [ 0.107956] x18: 0000000050642c6a
> [ 0.108847]
> [ 0.109234] x17: 0000000000000000 [ 0.110078] x16: 0000000000000000
> [ 0.110968]
> [ 0.111363] x15: 00000000fcacdc89 [ 0.112199] x14: 0000000000000000
> [ 0.113087]
> [ 0.113481] x13: 0000000000000000 [ 0.114324] x12: 00000000fe2ce6e0
> [ 0.115204]
> [ 0.115597] x11: 0000000000000001 [ 0.116439] x10: 0000000000000048
> [ 0.117328]
> [ 0.117716] x9 : 0000000000000000 [ 0.118563] x8 : fffffe00f4010080
> [ 0.119453]
> [ 0.119833] x7 : 0000000000000000 [ 0.120678] x6 : 0000000000000000
> [ 0.121571]
> [ 0.121959] x5 : 000000000000000f [ 0.122804] x4 : 0000000000000000
> [ 0.123695]
> [ 0.124084] x3 : 0000000000000000 [ 0.124922] x2 : 0000000000000000
> [ 0.125815]
> [ 0.126204] x1 : 0000000000000004 [ 0.127055] x0 : 00000000ffffffff
> [ 0.127966]
> [ 0.128361]
> [ 0.128767] ---[ end trace 0000000000000000 ]---
> [ 0.129983] Call trace:
> [ 0.130629] Exception stack(0xfffffe00f8047ad0 to 0xfffffe00f8047c00)
> [ 0.132316] 7ac0: 0000000000000000 0000040000000000
> [ 0.134360] 7ae0: fffffe00f8047cb0 fffffc0008d3f434 0000000060000045 000000000000003d
> [ 0.136405] 7b00: fffffc0008ef4000 fffffe007937df00 0000000000000000 0000000000000000
> [ 0.138446] 7b20: fffffc0008bf4110 0000000000000189 0000000000000018 0000000000000028
> [ 0.140498] 7b40: fffffe00f8047b80 0000000000000000 fffffe0000000000 fffffc000848af30
> [ 0.142541] 7b60: fffffe00f8047ba0 fffffc0008134d24 fffffe00f8044000 0000000000000040
> [ 0.144558] 7b80: 00000000ffffffff 0000000000000004 0000000000000000 0000000000000000
> [ 0.146607] 7ba0: 0000000000000000 000000000000000f 0000000000000000 0000000000000000
> [ 0.148664] 7bc0: fffffe00f4010080 0000000000000000 0000000000000048 0000000000000001
> [ 0.150704] 7be0: 00000000fe2ce6e0 0000000000000000 0000000000000000 00000000fcacdc89
> [ 0.152752] [<fffffc0008d3f434>] wq_numa_init+0x178/0x21c
> [ 0.154160] [<fffffc0008d3f578>] init_workqueues+0xa0/0x4b8
> [ 0.155596] [<fffffc0008083594>] do_one_initcall+0x44/0x138
> [ 0.157059] [<fffffc0008d30d28>] kernel_init_freeable+0x178/0x2dc
> [ 0.158670] [<fffffc0008956f48>] kernel_init+0x18/0x110
> [ 0.160036] [<fffffc0008083330>] ret_from_fork+0x10/0x20
> [ 0.161440] workqueue: NUMA node mapping not available for cpu0, disabling NUMA support
> [ 0.165296] Remapping and enabling EFI services.
> [ 0.166586] Unable to handle kernel paging request at virtual address b91000006be8
> [ 0.168448] pgd = fffffc000a010000
> [ 0.169341] [b91000006be8] *pgd=0000000000000000[ 0.170505] , *pud=0000000000000000
> , *pmd=0000000000000000[ 0.171942]
> [ 0.172332] Internal error: Oops: 96000004 [#1] SMP
> [ 0.173600] Modules linked in:
> [ 0.174407] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 4.9.0-0.rc0.git7.1.fc26.aarch64 #1
> [ 0.176836] Hardware name: linux,dummy-virt (DT)
> [ 0.178038] task: fffffe00700aac00 task.stack: fffffe00f8044000
> [ 0.179579] PC is at __ll_sc_atomic_add+0x20/0x40
> [ 0.180800] LR is at __lock_acquire+0xe8/0x698
> [ 0.181961] pc : [<fffffc0008487390>] lr : [<fffffc0008138c08>] pstate: 800000c5
> [ 0.183895] sp : fffffe00f8047820
> [ 0.184755] x29: fffffe00f8047820 [ 0.185588] x28: fffffc0008ef3000
> [ 0.186479]
> [ 0.186868] x27: fffffc0008ef2358 [ 0.187713] x26: fffffc0009ce6000
> [ 0.188606]
> [ 0.188997] x25: 0000000000000001 [ 0.189857] x24: 0000000000000000
> [ 0.190731]
> [ 0.191115] x23: fffffe00700aac00 [ 0.191951] x22: 0000000000000000
> [ 0.192843]
> [ 0.193231] x21: fffffe007fd9a018 [ 0.194074] x20: 0000000000000000
> [ 0.194966]
> [ 0.195361] x19: fffffe007fd9a018 [ 0.196192] x18: 0000000000000010
> [ 0.197077]
> [ 0.197476] x17: 0000000057181979 [ 0.198325] x16: 0000000000000000
> [ 0.199209]
> [ 0.199604] x15: 0000000000000000 [ 0.200450] x14: 0000000000000000
> [ 0.201337]
> [ 0.201723] x13: 0000000000000001 [ 0.202555] x12: fffffe007fff2580
> [ 0.203432]
> [ 0.203819] x11: 0000000000000000 [ 0.204664] x10: 0000000000000011
> [ 0.205550]
> [ 0.205937] x9 : 0000000000000001 [ 0.206784] x8 : 0000b91000006be8
> [ 0.207678]
> [ 0.208062] x7 : fffffc0008299fcc [ 0.208899] x6 : 0000000000000000
> [ 0.209787]
> [ 0.210176] x5 : 0000000000000080 [ 0.211022] x4 : 0000b91000006a50
> [ 0.211913]
> [ 0.212307] x3 : 0000000000000000 [ 0.213147] x2 : 000022c80000f420
> [ 0.214034]
> [ 0.214421] x1 : 0000b91000006be8 [ 0.215251] x0 : fffffc0008138c08
> [ 0.216134]
> [ 0.216527]
> [ 0.216916] Process swapper/0 (pid: 1, stack limit = 0xfffffe00f8044020)
> [ 0.218671] Stack: (0xfffffe00f8047820 to 0xfffffe00f8048000)
> [ 0.220167] 7820: fffffe00f8047840 fffffc0008138c08 fffffe00f8044000 0000000000000001
> [ 0.222190] 7840: fffffe00f80478c0 fffffc0008139590 fffffe007fd9a018 0000000000000000
> [ 0.224238] 7860: 0000000000000000 0000000000000000 0000000000000001 0000000000000000
> [ 0.226284] 7880: fffffc0008299fcc 00000000000000c0 fffffc0008ef2358 fffffc0008ef3000
> [ 0.228318] 78a0: 0000000000000001 fffffc0009ce6000 0000000000000000 fffffe0000000000
> [ 0.230362] 78c0: fffffe00f8047930 fffffc000895f2c4 fffffe007fd9a000 fffffc0008299fcc
> [ 0.232394] 78e0: fffffe007fd9a000 fffffc000829ad94 fffffe007001db00 000000000000e8e8
> [ 0.234435] 7900: fffffe007001db00 fffffe007001dbf8 fffffe00fff3ef50 0000000000000000
> [ 0.236481] 7920: fffffe00f8047a20 fffffc0008ef2000 fffffe00f8047950 fffffc0008299fcc
> [ 0.238516] 7940: 00000000ffffffff fffffe007fd9a000 fffffe00f8047a70 fffffc000829aa68
> [ 0.240560] 7960: 00000000ffffffff 0000000000000001 00000000024000c0 fffffc000829ad94
> [ 0.242604] 7980: 0000000000210d00 000000000000e8e8 fffffe007001db00 fffffe007001dbf8
> [ 0.244634] 79a0: fffffe00fff3ef50 0000000000000000 fffffe00f8044000 0000000000000040
> [ 0.246678] 79c0: fffffc000828d620 fffffc0008ef3000 00000000026080c0 fffffe00fff3ef60
> [ 0.248733] 79e0: fffffe00f8047a00 fffffc00024000c0 fffffc0008f89000 0000000000000000
> [ 0.250783] 7a00: fffffe00f8047a20 fffffc000822f62c fffffc0009016b30 fffffe00f8047b40
> [ 0.252896] 7a20: fffffe00f8047ba0 fffffc000828d620 0000000000000000 fffffc0008ef0b28
> [ 0.255009] 7a40: fffffe007fff3c00 0000000000000000 0000000000000000 0000000000000000
> [ 0.257121] 7a60: fffffe00f8044000 0000000000000000 fffffe00f8047b90 fffffc000829ad94
> [ 0.259240] 7a80: 0000000000000040 fffffe007001db00 00000000024000c0 00000000ffffffff
> [ 0.261358] 7aa0: fffffc0008266284 fffffe00fff3ef50 0000000020000000 00e8000000000f07
> [ 0.263472] 7ac0: 0000000000000000 0000000000000400 fffffc0008f89000 0000000000000000
> [ 0.265662] 7ae0: fffffe00f8047b00 fffffc000822f62c fffffe00fff3ef60 0000000000000000
> [ 0.267787] 7b00: 0000001000000000 fffffc0008266284 fffffe00f8047b50 fffffc0008134d24
> [ 0.269905] 7b20: fffffe00f8044000 0000000000000040 fffffc0008bf4110 0000000000000189
> [ 0.272020] 7b40: fffffc0008ef4000 0000000000000000 fffffe00f8047b70 fffffc000810267c
> [ 0.274136] 7b60: fffffc0009016893 0000000000000000 fffffe00f8047ba0 fffffc0008102784
> [ 0.276250] 7b80: fffffe00f8047b90 fffffc000829ad7c fffffe00f8047bd0 fffffc000829b13c
> [ 0.278371] 7ba0: fffffe007001db00 00000000024000c0 fffffc0008266284 fffffe007001db00
> [ 0.280484] 7bc0: fffffc0008ef4000 0000000000000000 fffffe00f8047c30 fffffc0008266284
> [ 0.282600] 7be0: fffffdff801b0200 fffffe006c080000 000000006c080000 0000000020000000
> [ 0.284715] 7c00: fffffe00f0010008 0000000004000000 0000000020000000 00e8000000000f07
> [ 0.286831] 7c20: 0000000000000000 0000000000000000 fffffe00f8047c50 fffffc0008098e24
> [ 0.288948] 7c40: fffffdff801b0200 0000000000000001 fffffe00f8047c80 fffffc00080991d0
> [ 0.291062] 7c60: 0000000024000000 0000000000000001 0000000024000000 fffffc0008ef0b28
> [ 0.293178] 7c80: fffffe00f8047d00 fffffc0008d361cc fffffe0078416018 00e8000000000707
> [ 0.295296] 7ca0: fffffc0008ff6410 fffffc0008ef7000 0000000000000000 fffffc0008ff6410
> [ 0.297408] 7cc0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.299523] 7ce0: 0000000000000000 00e8000000000f05 fffffc0008098dd0 0000000023ffffff
> [ 0.301636] 7d00: fffffe00f8047d10 fffffc0008d35020 fffffe00f8047d40 fffffc0008d88284
> [ 0.303748] 7d20: fffffe0078416018 fffffc0008ff6000 fffffc0008c87348 fffffc0008d8821c
> [ 0.305863] 7d40: fffffe00f8047d90 fffffc0008083594 fffffc0008d88154 fffffe00f8044000
> [ 0.307987] 7d60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.310099] 7d80: 0000000000000000 0000000004000000 fffffe00f8047e00 fffffc0008d30d28
> [ 0.312217] 7da0: fffffc0008e622d8 fffffc0008e622e0 0000000000000040 0000000000000000
> [ 0.314333] 7dc0: fffffe00f8047e00 fffffc0008d30d18 fffffc0008e62220 fffffc0008e622e0
> [ 0.316445] 7de0: 0000000000000040 0000000000000000 0000000000000000 fffffc0008e622e0
> [ 0.318572] 7e00: fffffe00f8047ea0 fffffc0008956f48 fffffc0008956f30 0000000000000000
> [ 0.320692] 7e20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.322805] 7e40: 0000000000000000 0000000000000000 0000000000000000 0000000000000001
> [ 0.324914] 7e60: 0000000000000003 0000000000000000 0000000000000000 0000000000000000
> [ 0.327027] 7e80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.329139] 7ea0: 0000000000000000 fffffc0008083330 fffffc0008956f30 0000000000000000
> [ 0.331248] 7ec0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.333361] 7ee0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.335470] 7f00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.337585] 7f20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.339695] 7f40: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.341810] 7f60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.343923] 7f80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.346037] 7fa0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.348154] 7fc0: 0000000000000000 0000000000000005 0000000000000000 0000000000000000
> [ 0.350272] 7fe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> [ 0.352392] Call trace:
> [ 0.353049] Exception stack(0xfffffe00f8047650 to 0xfffffe00f8047780)
> [ 0.354792] 7640: fffffe007fd9a018 0000040000000000
> [ 0.356910] 7660: fffffe00f8047820 fffffc0008487390 fffffe00f80476e0 fffffc0008131290
> [ 0.359025] 7680: fffffc000901690b fffffc0008f1e000 0000000000000001 fffffe00700aac00
> [ 0.361140] 76a0: fffffc000901690b fffffc0008f27a28 fffffe00fff3b700 fffffc0008e8b700
> [ 0.363255] 76c0: fffffe00fff3b700 fffffc0008ef1000 fffffe00f80476e0 00000000000000c0
> [ 0.365373] 76e0: fffffe00f8047720 fffffc000811a374 fffffc0008138c08 0000b91000006be8
> [ 0.367483] 7700: 000022c80000f420 0000000000000000 0000b91000006a50 0000000000000080
> [ 0.369593] 7720: 0000000000000000 fffffc0008299fcc 0000b91000006be8 0000000000000001
> [ 0.371702] 7740: 0000000000000011 0000000000000000 fffffe007fff2580 0000000000000001
> [ 0.373817] 7760: 0000000000000000 0000000000000000 0000000000000000 0000000057181979
> [ 0.375935] [<fffffc0008487390>] __ll_sc_atomic_add+0x20/0x40
> [ 0.377489] [<fffffc0008138c08>] __lock_acquire+0xe8/0x698
> [ 0.378960] [<fffffc0008139590>] lock_acquire+0xd8/0x2c0
> [ 0.380394] [<fffffc000895f2c4>] _raw_spin_lock+0x4c/0x60
> [ 0.381843] [<fffffc0008299fcc>] get_partial_node.isra.23+0x4c/0x440
> [ 0.383559] [<fffffc000829aa68>] ___slab_alloc+0x438/0x710
> [ 0.385031] [<fffffc000829ad94>] __slab_alloc+0x54/0xa0
> [ 0.386441] [<fffffc000829b13c>] kmem_cache_alloc+0x35c/0x428
> [ 0.387983] [<fffffc0008266284>] ptlock_alloc+0x2c/0x58
> [ 0.389394] [<fffffc0008098e24>] pgd_pgtable_alloc+0x54/0xd8
> [ 0.390912] [<fffffc00080991d0>] __create_pgd_mapping+0x158/0x2a8
> [ 0.392556] [<fffffc0008d361cc>] create_pgd_mapping+0x30/0x38
> [ 0.394100] [<fffffc0008d35020>] efi_create_mapping+0xfc/0x110
> [ 0.395682] [<fffffc0008d88284>] arm_enable_runtime_services+0x130/0x204
> [ 0.397501] [<fffffc0008083594>] do_one_initcall+0x44/0x138
> [ 0.399001] [<fffffc0008d30d28>] kernel_init_freeable+0x178/0x2dc
> [ 0.400646] [<fffffc0008956f48>] kernel_init+0x18/0x110
> [ 0.402053] [<fffffc0008083330>] ret_from_fork+0x10/0x20
> [ 0.403488] Code: aa1e03e0 aa0103e8 d503201f f9800111 (885f7d00)
> [ 0.405145] ---[ end trace f6be31446b0a9526 ]---
> [ 0.406286] note: swapper/0[1] exited with preempt_count 1
> [ 0.407687] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [ 0.407687]
> [ 0.410047] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [ 0.410047]
>

This log contains two call traces. The first is a WARNING in wq_numa_init(). The second is the unhandled page fault.

Note the warning message (from wq_numa_init()):

workqueue: NUMA node mapping not available for cpu0, disabling NUMA support

Something looks genuinely broken with the cpu <-> numa-node associations in the ACPI case -- it even seems to fail when the SRAT does exist.

So, perhaps, commit 7ba5f605f3a0 may not have introduced the bug, only exposed one in the ACPI code?...

Thanks
Laszlo