On Wed, Nov 06, 2019 at 04:07:52PM +0000, Robin Murphy wrote:
On 06/11/2019 15:56, Naresh Kamboju wrote:
arm64 devices Juno-r2, hikey (Hi6220) and dragonboard (APQ 8016 SBC) boot failed while running linux next 20191106 kernel. But qemu_arm64 boot pass.
Crash log from dragonboard,
[ 10.656527] Unable to handle kernel paging request at virtual address ffff800011b3ef68 [ 10.656580] Mem abort info: [ 10.656587] ESR = 0x96000007 [ 10.656594] EC = 0x25: DABT (current EL), IL = 32 bits [ 10.656600] SET = 0, FnV = 0 [ 10.656605] EA = 0, S1PTW = 0 [ 10.656610] Data abort info: [ 10.656616] ISV = 0, ISS = 0x00000007 [ 10.656621] CM = 0, WnR = 0 [ 10.656629] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000081980000 [ 10.656635] [ffff800011b3ef68] pgd=00000000bfeff003, pud=00000000bfefe003, pmd=00000000bfefa003, pte=0000000000000000 [ 10.656887] Internal error: Oops: 96000007 [#1] PREEMPT SMP [ 10.656894] Modules linked in: adv7511(+) cec msm(+) mdt_loader drm_kms_helper qcom_rng drm socinfo rmtfs_mem qrtr fuse [ 10.656928] CPU: 0 PID: 230 Comm: systemd-udevd Not tainted 5.4.0-rc6-next-20191106 #1 [ 10.656933] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT) [ 10.656939] pstate: a0000085 (NzCv daIf -PAN -UAO) [ 10.656953] pc : __of_match_node.part.5+0x48/0x88 [ 10.656960] lr : of_match_node+0x40/0x70 [ 10.656964] sp : ffff8000132534d0 [ 10.656968] x29: ffff8000132534d0 x28: ffff8000101d6260 [ 10.656977] x27: ffff80001241a7a0 x26: ffff80001241a7a0 [ 10.656985] x25: ffff80001241a860 x24: ffff80001241a6e8 [ 10.656993] x23: 0000000000000000 x22: ffff00003fd08010 [ 10.657001] x21: 0000000000000000 x20: 0000000000000000 [ 10.657008] x19: ffff800011b3ef68 x18: ffffffffffffffff [ 10.657016] x17: 0000000000000000 x16: 0000000000000000 [ 10.657024] x15: ffff8000121ffa48 x14: 4e3a666f3d534149 [ 10.657032] x13: 0000000000000040 x12: 0000000000000028 [ 10.657039] x11: 0000000000000001 x10: 0101010101010101 [ 10.657047] x9 : ffff800012532c50 x8 : 0000000000000050 [ 10.657055] x7 : ffff800010df1164 x6 : 0000000000000000 [ 10.657063] x5 : 00000000a4fd7f12 x4 : ffff00003bd7cd18 [ 10.657070] x3 : 0000000000000000 x2 : 0000000000000001 [ 10.657078] x1 : ffff00003fd08010 x0 : ffff800010df1178 [ 10.657086] Call trace: [ 10.657094] __of_match_node.part.5+0x48/0x88
FWIW this smells like a builtin driver had its of_device_id table marked __init, leaving drv->of_match_table as a dangling pointer to freed memory by this point.
Yuck, there are lots of potential instances in mainline:
[mark@lakrids:~/src/linux]% git grep of_device_id | grep __init | wc -l 141
... so we probably need to clean that up.
Mark.