projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ea9f5b7
)
powerpc/mm: Fix node look up with numa=off boot
author
Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com>
Mon, 1 Jul 2019 14:36:25 +0000
(20:06 +0530)
committer
Michael Ellerman
<mpe@ellerman.id.au>
Thu, 4 Jul 2019 14:27:32 +0000
(
00:27
+1000)
If we boot with numa=off, we need to make sure we return NUMA_NO_NODE when
looking up associativity details of resources. Without this, we hit crash
like below
BUG: Unable to handle kernel data access at 0x40000000008
Faulting instruction address: 0xc000000008f31704
cpu 0x1b: Vector: 380 (Data SLB Access) at [
c00000000b9bb320
]
pc:
c000000008f31704
: _raw_spin_lock+0x14/0x100
lr:
c0000000083f41fc
: ____cache_alloc_node+0x5c/0x290
sp:
c00000000b9bb5b0
msr:
800000010280b033
dar:
40000000008
current = 0xc00000000b9a2700
paca = 0xc00000000a740c00 irqmask: 0x03 irq_happened: 0x01
pid = 1, comm = swapper/27
Linux version
5.2.0-rc4-00925-g74e188c620b1
(root@linux-d8ip) (gcc version 7.4.1
20190424
[gcc-7-branch revision 270538] (SUSE Linux)) #34 SMP Sat Jun 29 00:41:02 EDT 2019
enter ? for help
[link register ]
c0000000083f41fc
____cache_alloc_node+0x5c/0x290
[
c00000000b9bb5b0
]
0000000000000dc0
(unreliable)
[
c00000000b9bb5f0
]
c0000000083f48c8
kmem_cache_alloc_node_trace+0x138/0x360
[
c00000000b9bb670
]
c000000008aa789c
devres_alloc_node+0x4c/0xa0
[
c00000000b9bb6a0
]
c000000008337218
devm_memremap+0x58/0x130
[
c00000000b9bb6f0
]
c000000008aed00c
devm_nsio_enable+0xdc/0x170
[
c00000000b9bb780
]
c000000008af3b6c
nd_pmem_probe+0x4c/0x180
[
c00000000b9bb7b0
]
c000000008ad84cc
nvdimm_bus_probe+0xac/0x260
[
c00000000b9bb840
]
c000000008aa0628
really_probe+0x148/0x500
[
c00000000b9bb8d0
]
c000000008aa0d7c
driver_probe_device+0x19c/0x1d0
[
c00000000b9bb950
]
c000000008aa11bc
device_driver_attach+0xcc/0x100
[
c00000000b9bb990
]
c000000008aa12ec
__driver_attach+0xfc/0x1e0
[
c00000000b9bba10
]
c000000008a9d0a4
bus_for_each_dev+0xb4/0x130
[
c00000000b9bba70
]
c000000008a9fc04
driver_attach+0x34/0x50
[
c00000000b9bba90
]
c000000008a9f118
bus_add_driver+0x1d8/0x300
[
c00000000b9bbb20
]
c000000008aa2358
driver_register+0x98/0x1a0
[
c00000000b9bbb90
]
c000000008ad7e6c
__nd_driver_register+0x5c/0x100
[
c00000000b9bbbf0
]
c0000000093efbac
nd_pmem_driver_init+0x34/0x48
[
c00000000b9bbc10
]
c0000000080106c0
do_one_initcall+0x60/0x2d0
[
c00000000b9bbce0
]
c00000000938463c
kernel_init_freeable+0x384/0x48c
[
c00000000b9bbdb0
]
c000000008010a5c
kernel_init+0x2c/0x160
[
c00000000b9bbe20
]
c00000000800ba54
ret_from_kernel_thread+0x5c/0x68
Reported-and-debugged-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/numa.c
patch
|
blob
|
history
diff --git
a/arch/powerpc/mm/numa.c
b/arch/powerpc/mm/numa.c
index
b1ecfb8
..
a62bc98
100644
(file)
--- a/
arch/powerpc/mm/numa.c
+++ b/
arch/powerpc/mm/numa.c
@@
-232,7
+232,7
@@
static int associativity_to_nid(const __be32 *associativity)
{
int nid = NUMA_NO_NODE;
- if (min_common_depth == -1)
+ if (min_common_depth == -1
|| !numa_enabled
)
goto out;
if (of_read_number(associativity, 1) >= min_common_depth)
@@
-440,7
+440,7
@@
static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
int nid = default_nid;
int rc, index;
- if (
min_common_depth < 0
)
+ if (
(min_common_depth < 0) || !numa_enabled
)
return default_nid;
rc = of_get_assoc_arrays(&aa);
@@
-830,7
+830,7
@@
static void __init find_possible_nodes(void)
struct device_node *rtas;
u32 numnodes, i;
- if (min_common_depth <= 0)
+ if (min_common_depth <= 0
|| !numa_enabled
)
return;
rtas = of_find_node_by_path("/rtas");