All of lore.kernel.org
 help / color / mirror / Atom feed
* Panic in quirk_usb_early_handoff
@ 2017-03-03 16:18 Mason
  2017-03-03 17:10 ` Mason
  0 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-03 16:18 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

I'm seeing this panic randomly at boot-time, so I want to throw
it out there in case someone recognizes the issue off the top of
their head.

I'm on Linux 4.9, using a USB3 PCIe card. I'm actively working on
the PCIe support, so I may be responsible for the crash by virtue
of something I did or didn't do (e.g. I haven't set up the IRQs
correctly, but I didn't think it would crash the system).

[    0.987520] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
[    0.993236] OF: PCI:   No bus range found for /soc/pcie at 50000000, using [bus 00-ff]
[    1.001034] OF: PCI: Parsing ranges property...
[    1.005693] OF: PCI:   MEM 0x90000000..0x9fffffff -> 0x90000000
[    1.014791] pci-host-generic 50000000.pcie: ECAM at [mem 0x50000000-0x5fffffff] for [bus 00-ff]
[    1.028570] pci-host-generic 50000000.pcie: PCI host bridge to bus 0000:00
[    1.035597] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.041212] pci_bus 0000:00: root bus resource [mem 0x90000000-0x9fffffff]
[    1.048219] pci_bus 0000:00: scanning bus
[    1.052376] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
[    1.058529] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
[    1.065119] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
[    1.072068] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.078415] pci 0000:00:00.0: supports D1 D2
[    1.082803] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
[    1.088937] pci 0000:00:00.0: PME# disabled
[    1.093445] pci_bus 0000:00: fixups for bus
[    1.097753] PCI: bus0: Fast back to back transfers disabled
[    1.103453] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
[    1.110286] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.118433] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[    1.125385] pci_bus 0000:01: scanning bus
[    1.129557] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
[    1.135727] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
[    1.142730] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.149150] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    1.155375] pci 0000:01:00.0: PME# disabled
[    1.159976] pci_bus 0000:01: fixups for bus
[    1.164305] PCI: bus1: Fast back to back transfers disabled
[    1.170002] pci_bus 0000:01: bus scan returning with max=01
[    1.175701] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.182447] pci_bus 0000:00: bus scan returning with max=01
[    1.188147] pci 0000:00:00.0: fixup irq: got 0
[    1.192707] pci 0000:00:00.0: assigning IRQ 00
[    1.197294] pci 0000:01:00.0: fixup irq: got 20
[    1.201945] pci 0000:01:00.0: assigning IRQ 20
[    1.206533] pci 0000:00:00.0: BAR 0: assigned [mem 0x90000000-0x90ffffff 64bit]
[    1.213984] pci 0000:00:00.0: BAR 8: assigned [mem 0x91000000-0x910fffff]
[    1.220908] pci 0000:01:00.0: BAR 0: assigned [mem 0x91000000-0x91001fff 64bit]
[    1.228363] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.233449] pci 0000:00:00.0:   bridge window [mem 0x91000000-0x910fffff]
[    1.240419] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
[    1.246648] pcieport 0000:00:00.0: enabling bus mastering
[    1.252321] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
[    1.259077] pci 0000:01:00.0: enabling device (0140 -> 0142)
[    1.264893] Unable to handle kernel paging request at virtual address d08664f4
[    1.272248] pgd = c0004000
[    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
[    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
[    1.286897] Modules linked in:
[    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
[    1.296696] Hardware name: Sigma Tango DT
[    1.300808] task: cf82c9c0 task.stack: cf838000
[    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
[    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
[    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
[    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
[    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
[    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
[    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
[    1.346105] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    1.353361] Control: 10c5387d  Table: 8fa9c04a  DAC: 00000051
[    1.359218] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
[    1.365339] Stack: (0xcf839d78 to 0xcf83a000)
[    1.369800] 9d60:                                                       c058f578 c058b180
[    1.378107] 9d80: cfb55240 cf839d98 c0350218 c05adccc cfb5f800 c05adcdc cf838000 00000000
[    1.386413] 9da0: 00000000 c10248a0 cf839e38 c030bfa4 cf923b80 c034e69c cf867270 00000000
[    1.394719] 9dc0: cfb5f800 cf9ef414 cf9ef400 cf839e30 cf923b80 00000000 cf906010 c02fa484
[    1.403025] 9de0: cfb5f800 cf9ef414 cf9ef400 c02fa538 cfb5fc00 cf9ef814 cf9ef800 c02fa56c
[    1.411330] 9e00: cf9ef80c cf9ef80c cf9ef800 c031387c cf839e30 cfaa39b0 c05178c8 c10101d8
[    1.419636] 9e20: cf881780 00000000 cf906000 c058cd2c cf839e30 cf839e30 50000000 5fffffff
[    1.427942] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
[    1.436248] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c0351624
[    1.444553] 9e80: c1056fb0 cf906010 cf906044 c03500c0 cf906010 c1010208 cf906044 c10177d0
[    1.452859] 9ea0: 00000073 c0350214 00000000 c1010208 c0350150 c034e5e8 cf80545c cf8a60b4
[    1.461165] 9ec0: c1010208 cf9b8a00 00000000 c034f72c c058cd84 c0616a64 c0633cb0 c1010208
[    1.469471] 9ee0: c0616a64 c0633cb0 c0628834 c0350770 ffffe000 c0616a64 c0633cb0 c0101834
[    1.477776] 9f00: c104a354 c100a5c8 00000000 c0220830 00000000 cf87cf00 00000000 c1009370
[    1.486082] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1c4 c05da4a4 00000000 00000006
[    1.494388] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
[    1.502693] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
[    1.510999] 9f80: 1113a9b3 00000000 c049fafc 00000000 00000000 00000000 00000000 00000000
[    1.519304] 9fa0: 00000000 c049fb04 00000000 c01077b8 00000000 00000000 00000000 00000000
[    1.527609] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    1.535914] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 2338eece a019c832
[    1.544236] [<c039fe8c>] (quirk_usb_early_handoff) from [<c030bfa4>] (pci_do_fixups+0xc8/0x158)
[    1.553077] [<c030bfa4>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
[    1.561386] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
[    1.570218] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
[    1.579140] [<c02fa56c>] (pci_bus_add_devices) from [<c031387c>] (pci_host_common_probe+0xfc/0x324)
[    1.588328] [<c031387c>] (pci_host_common_probe) from [<c0351624>] (platform_drv_probe+0x34/0x7c)
[    1.597337] [<c0351624>] (platform_drv_probe) from [<c03500c0>] (really_probe+0x1c4/0x254)
[    1.605733] [<c03500c0>] (really_probe) from [<c0350214>] (__driver_attach+0xc4/0xc8)
[    1.613691] [<c0350214>] (__driver_attach) from [<c034e5e8>] (bus_for_each_dev+0x68/0x9c)
[    1.621998] [<c034e5e8>] (bus_for_each_dev) from [<c034f72c>] (bus_add_driver+0x1a0/0x218)
[    1.630393] [<c034f72c>] (bus_add_driver) from [<c0350770>] (driver_register+0x78/0xf8)
[    1.638527] [<c0350770>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
[    1.646845] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
[    1.655678] [<c0600db4>] (kernel_init_freeable) from [<c049fb04>] (kernel_init+0x8/0x10c)
[    1.663990] [<c049fb04>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
[    1.671686] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
[    1.677929] ---[ end trace f034f5427be1ec2c ]---
[    1.682673] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.682673] 
[    1.692032] CPU1: stopping
[    1.694837] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #151
[    1.702703] Hardware name: Sigma Tango DT
[    1.706831] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
[    1.714703] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
[    1.722051] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
[    1.729571] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
[    1.737266] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
[    1.744869] Exception stack(0xcf859f98 to 0xcf859fe0)
[    1.750028] 9f80:                                                       00000001 00000000
[    1.758334] 9fa0: 000017b2 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
[    1.766640] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
[    1.774946] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
[    1.782472] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
[    1.790782] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
[    1.797867] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 16:18 Panic in quirk_usb_early_handoff Mason
@ 2017-03-03 17:10 ` Mason
  2017-03-03 17:15   ` Mason
  0 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-03 17:10 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/2017 17:18, Mason wrote:
> Hello,
> 
> I'm seeing this panic randomly at boot-time, so I want to throw
> it out there in case someone recognizes the issue off the top of
> their head.
> 
> I'm on Linux 4.9, using a USB3 PCIe card. I'm actively working on
> the PCIe support, so I may be responsible for the crash by virtue
> of something I did or didn't do (e.g. I haven't set up the IRQs
> correctly, but I didn't think it would crash the system).
> 
> [    0.987520] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
> [    0.993236] OF: PCI:   No bus range found for /soc/pcie at 50000000, using [bus 00-ff]
> [    1.001034] OF: PCI: Parsing ranges property...
> [    1.005693] OF: PCI:   MEM 0x90000000..0x9fffffff -> 0x90000000
> [    1.014791] pci-host-generic 50000000.pcie: ECAM at [mem 0x50000000-0x5fffffff] for [bus 00-ff]
> [    1.028570] pci-host-generic 50000000.pcie: PCI host bridge to bus 0000:00
> [    1.035597] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    1.041212] pci_bus 0000:00: root bus resource [mem 0x90000000-0x9fffffff]
> [    1.048219] pci_bus 0000:00: scanning bus
> [    1.052376] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
> [    1.058529] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
> [    1.065119] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
> [    1.072068] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
> [    1.078415] pci 0000:00:00.0: supports D1 D2
> [    1.082803] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
> [    1.088937] pci 0000:00:00.0: PME# disabled
> [    1.093445] pci_bus 0000:00: fixups for bus
> [    1.097753] PCI: bus0: Fast back to back transfers disabled
> [    1.103453] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
> [    1.110286] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    1.118433] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
> [    1.125385] pci_bus 0000:01: scanning bus
> [    1.129557] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
> [    1.135727] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
> [    1.142730] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
> [    1.149150] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
> [    1.155375] pci 0000:01:00.0: PME# disabled
> [    1.159976] pci_bus 0000:01: fixups for bus
> [    1.164305] PCI: bus1: Fast back to back transfers disabled
> [    1.170002] pci_bus 0000:01: bus scan returning with max=01
> [    1.175701] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
> [    1.182447] pci_bus 0000:00: bus scan returning with max=01
> [    1.188147] pci 0000:00:00.0: fixup irq: got 0
> [    1.192707] pci 0000:00:00.0: assigning IRQ 00
> [    1.197294] pci 0000:01:00.0: fixup irq: got 20
> [    1.201945] pci 0000:01:00.0: assigning IRQ 20
> [    1.206533] pci 0000:00:00.0: BAR 0: assigned [mem 0x90000000-0x90ffffff 64bit]
> [    1.213984] pci 0000:00:00.0: BAR 8: assigned [mem 0x91000000-0x910fffff]
> [    1.220908] pci 0000:01:00.0: BAR 0: assigned [mem 0x91000000-0x91001fff 64bit]
> [    1.228363] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    1.233449] pci 0000:00:00.0:   bridge window [mem 0x91000000-0x910fffff]
> [    1.240419] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
> [    1.246648] pcieport 0000:00:00.0: enabling bus mastering
> [    1.252321] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
> [    1.259077] pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
> [    1.272248] pgd = c0004000
> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> [    1.286897] Modules linked in:
> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
> [    1.296696] Hardware name: Sigma Tango DT
> [    1.300808] task: cf82c9c0 task.stack: cf838000
> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> [    1.346105] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [    1.353361] Control: 10c5387d  Table: 8fa9c04a  DAC: 00000051
> [    1.359218] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
> [    1.365339] Stack: (0xcf839d78 to 0xcf83a000)
> [    1.369800] 9d60:                                                       c058f578 c058b180
> [    1.378107] 9d80: cfb55240 cf839d98 c0350218 c05adccc cfb5f800 c05adcdc cf838000 00000000
> [    1.386413] 9da0: 00000000 c10248a0 cf839e38 c030bfa4 cf923b80 c034e69c cf867270 00000000
> [    1.394719] 9dc0: cfb5f800 cf9ef414 cf9ef400 cf839e30 cf923b80 00000000 cf906010 c02fa484
> [    1.403025] 9de0: cfb5f800 cf9ef414 cf9ef400 c02fa538 cfb5fc00 cf9ef814 cf9ef800 c02fa56c
> [    1.411330] 9e00: cf9ef80c cf9ef80c cf9ef800 c031387c cf839e30 cfaa39b0 c05178c8 c10101d8
> [    1.419636] 9e20: cf881780 00000000 cf906000 c058cd2c cf839e30 cf839e30 50000000 5fffffff
> [    1.427942] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
> [    1.436248] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c0351624
> [    1.444553] 9e80: c1056fb0 cf906010 cf906044 c03500c0 cf906010 c1010208 cf906044 c10177d0
> [    1.452859] 9ea0: 00000073 c0350214 00000000 c1010208 c0350150 c034e5e8 cf80545c cf8a60b4
> [    1.461165] 9ec0: c1010208 cf9b8a00 00000000 c034f72c c058cd84 c0616a64 c0633cb0 c1010208
> [    1.469471] 9ee0: c0616a64 c0633cb0 c0628834 c0350770 ffffe000 c0616a64 c0633cb0 c0101834
> [    1.477776] 9f00: c104a354 c100a5c8 00000000 c0220830 00000000 cf87cf00 00000000 c1009370
> [    1.486082] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1c4 c05da4a4 00000000 00000006
> [    1.494388] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
> [    1.502693] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
> [    1.510999] 9f80: 1113a9b3 00000000 c049fafc 00000000 00000000 00000000 00000000 00000000
> [    1.519304] 9fa0: 00000000 c049fb04 00000000 c01077b8 00000000 00000000 00000000 00000000
> [    1.527609] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    1.535914] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 2338eece a019c832
> [    1.544236] [<c039fe8c>] (quirk_usb_early_handoff) from [<c030bfa4>] (pci_do_fixups+0xc8/0x158)
> [    1.553077] [<c030bfa4>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
> [    1.561386] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
> [    1.570218] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
> [    1.579140] [<c02fa56c>] (pci_bus_add_devices) from [<c031387c>] (pci_host_common_probe+0xfc/0x324)
> [    1.588328] [<c031387c>] (pci_host_common_probe) from [<c0351624>] (platform_drv_probe+0x34/0x7c)
> [    1.597337] [<c0351624>] (platform_drv_probe) from [<c03500c0>] (really_probe+0x1c4/0x254)
> [    1.605733] [<c03500c0>] (really_probe) from [<c0350214>] (__driver_attach+0xc4/0xc8)
> [    1.613691] [<c0350214>] (__driver_attach) from [<c034e5e8>] (bus_for_each_dev+0x68/0x9c)
> [    1.621998] [<c034e5e8>] (bus_for_each_dev) from [<c034f72c>] (bus_add_driver+0x1a0/0x218)
> [    1.630393] [<c034f72c>] (bus_add_driver) from [<c0350770>] (driver_register+0x78/0xf8)
> [    1.638527] [<c0350770>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
> [    1.646845] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
> [    1.655678] [<c0600db4>] (kernel_init_freeable) from [<c049fb04>] (kernel_init+0x8/0x10c)
> [    1.663990] [<c049fb04>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
> [    1.671686] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
> [    1.677929] ---[ end trace f034f5427be1ec2c ]---
> [    1.682673] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    1.682673] 
> [    1.692032] CPU1: stopping
> [    1.694837] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #151
> [    1.702703] Hardware name: Sigma Tango DT
> [    1.706831] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
> [    1.714703] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
> [    1.722051] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
> [    1.729571] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
> [    1.737266] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
> [    1.744869] Exception stack(0xcf859f98 to 0xcf859fe0)
> [    1.750028] 9f80:                                                       00000001 00000000
> [    1.758334] 9fa0: 000017b2 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
> [    1.766640] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
> [    1.774946] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
> [    1.782472] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
> [    1.790782] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
> [    1.797867] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Had another one, with a different faulting address:

[    0.986295] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
[    0.992004] OF: PCI:   No bus range found for /soc/pcie at 50000000, using [bus 00-ff]
[    0.999798] OF: PCI: Parsing ranges property...
[    1.004457] OF: PCI:   MEM 0x90000000..0x9fffffff -> 0x90000000
[    1.013472] pci-host-generic 50000000.pcie: ECAM at [mem 0x50000000-0x5fffffff] for [bus 00-ff]
[    1.022605] pci-host-generic 50000000.pcie: PCI host bridge to bus 0000:00
[    1.029638] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.035250] pci_bus 0000:00: root bus resource [mem 0x90000000-0x9fffffff]
[    1.042257] pci_bus 0000:00: scanning bus
[    1.046407] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
[    1.052560] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
[    1.059143] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
[    1.066086] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.072428] pci 0000:00:00.0: supports D1 D2
[    1.076815] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
[    1.082950] pci 0000:00:00.0: PME# disabled
[    1.087453] pci_bus 0000:00: fixups for bus
[    1.091762] PCI: bus0: Fast back to back transfers disabled
[    1.097463] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
[    1.104323] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.112470] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[    1.119423] pci_bus 0000:01: scanning bus
[    1.123593] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
[    1.129770] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
[    1.136775] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.143197] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    1.149421] pci 0000:01:00.0: PME# disabled
[    1.154024] pci_bus 0000:01: fixups for bus
[    1.158332] PCI: bus1: Fast back to back transfers disabled
[    1.164030] pci_bus 0000:01: bus scan returning with max=01
[    1.169728] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.176476] pci_bus 0000:00: bus scan returning with max=01
[    1.182175] pci 0000:00:00.0: fixup irq: got 0
[    1.186736] pci 0000:00:00.0: assigning IRQ 00
[    1.191322] pci 0000:01:00.0: fixup irq: got 20
[    1.195971] pci 0000:01:00.0: assigning IRQ 20
[    1.200556] pci 0000:00:00.0: BAR 0: assigned [mem 0x90000000-0x90ffffff 64bit]
[    1.208009] pci 0000:00:00.0: BAR 8: assigned [mem 0x91000000-0x910fffff]
[    1.214932] pci 0000:01:00.0: BAR 0: assigned [mem 0x91000000-0x91001fff 64bit]
[    1.222387] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.227473] pci 0000:00:00.0:   bridge window [mem 0x91000000-0x910fffff]
[    1.234445] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
[    1.240676] pcieport 0000:00:00.0: enabling bus mastering
[    1.246350] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
[    1.253108] pci 0000:01:00.0: enabling device (0140 -> 0142)
[    1.258926] Unable to handle kernel paging request at virtual address d0863f70
[    1.266284] pgd = c0004000
[    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
[    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
[    1.280933] Modules linked in:
[    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
[    1.290732] Hardware name: Sigma Tango DT
[    1.294843] task: cf82c9c0 task.stack: cf838000
[    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
[    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
[    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
[    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
[    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
[    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
[    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000
[    1.340140] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    1.347395] Control: 10c5387d  Table: 8faa404a  DAC: 00000051
[    1.353253] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
[    1.359373] Stack: (0xcf839d78 to 0xcf83a000)
[    1.363834] 9d60:                                                       c058f56c c058b174
[    1.372141] 9d80: cfb48240 cf839d98 c03501cc c05adcc4 cfb52800 c05adcd4 cf838000 00000000
[    1.380447] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf884600 c034e650 cf867270 00000000
[    1.388752] 9dc0: cfb52800 cf9f2414 cf9f2400 cf839e30 cf884600 00000000 cf906010 c02fa484
[    1.397058] 9de0: cfb52800 cf9f2414 cf9f2400 c02fa538 cfb52c00 cf9f2814 cf9f2800 c02fa56c
[    1.405364] 9e00: cf9f280c cf9f280c cf9f2800 c0313830 cf839e30 cf9fa9b0 c05178b0 c10101d8
[    1.413670] 9e20: cf881400 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
[    1.421976] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
[    1.430281] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
[    1.438588] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
[    1.446894] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
[    1.455200] 9ec0: c1010208 cfa0ef00 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
[    1.463506] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
[    1.471811] 9f00: c05da71c cfffcec4 00000000 cfffcec9 00000000 cf839f30 c013291c c0132adc
[    1.480117] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
[    1.488423] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
[    1.496728] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
[    1.505034] 9f80: aa83c9e6 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
[    1.513339] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
[    1.521644] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    1.529949] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 94c2dc87 babd118e
[    1.538273] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
[    1.547113] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
[    1.555423] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
[    1.564255] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
[    1.573178] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
[    1.582365] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
[    1.591375] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
[    1.599770] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
[    1.607728] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
[    1.616036] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
[    1.624431] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
[    1.632565] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
[    1.640882] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
[    1.649716] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
[    1.658026] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
[    1.665722] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
[    1.671965] ---[ end trace 61b8b7d0e0f98e8c ]---
[    1.676708] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.676708] 
[    1.686067] CPU1: stopping
[    1.688872] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #157
[    1.696738] Hardware name: Sigma Tango DT
[    1.700865] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
[    1.708738] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
[    1.716085] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
[    1.723606] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
[    1.731301] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
[    1.738905] Exception stack(0xcf859f98 to 0xcf859fe0)
[    1.744064] 9f80:                                                       00000001 00000000
[    1.752370] 9fa0: 000017b0 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
[    1.760676] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
[    1.768983] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
[    1.776510] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
[    1.784819] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
[    1.791904] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 17:10 ` Mason
@ 2017-03-03 17:15   ` Mason
  2017-03-03 19:02     ` Robin Murphy
  0 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-03 17:15 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/2017 18:10, Mason wrote:
> On 03/03/2017 17:18, Mason wrote:
>> Hello,
>>
>> I'm seeing this panic randomly at boot-time, so I want to throw
>> it out there in case someone recognizes the issue off the top of
>> their head.
>>
>> I'm on Linux 4.9, using a USB3 PCIe card. I'm actively working on
>> the PCIe support, so I may be responsible for the crash by virtue
>> of something I did or didn't do (e.g. I haven't set up the IRQs
>> correctly, but I didn't think it would crash the system).
>>
>> [    0.987520] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
>> [    0.993236] OF: PCI:   No bus range found for /soc/pcie at 50000000, using [bus 00-ff]
>> [    1.001034] OF: PCI: Parsing ranges property...
>> [    1.005693] OF: PCI:   MEM 0x90000000..0x9fffffff -> 0x90000000
>> [    1.014791] pci-host-generic 50000000.pcie: ECAM at [mem 0x50000000-0x5fffffff] for [bus 00-ff]
>> [    1.028570] pci-host-generic 50000000.pcie: PCI host bridge to bus 0000:00
>> [    1.035597] pci_bus 0000:00: root bus resource [bus 00-ff]
>> [    1.041212] pci_bus 0000:00: root bus resource [mem 0x90000000-0x9fffffff]
>> [    1.048219] pci_bus 0000:00: scanning bus
>> [    1.052376] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
>> [    1.058529] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
>> [    1.065119] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
>> [    1.072068] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
>> [    1.078415] pci 0000:00:00.0: supports D1 D2
>> [    1.082803] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
>> [    1.088937] pci 0000:00:00.0: PME# disabled
>> [    1.093445] pci_bus 0000:00: fixups for bus
>> [    1.097753] PCI: bus0: Fast back to back transfers disabled
>> [    1.103453] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
>> [    1.110286] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>> [    1.118433] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
>> [    1.125385] pci_bus 0000:01: scanning bus
>> [    1.129557] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
>> [    1.135727] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
>> [    1.142730] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
>> [    1.149150] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
>> [    1.155375] pci 0000:01:00.0: PME# disabled
>> [    1.159976] pci_bus 0000:01: fixups for bus
>> [    1.164305] PCI: bus1: Fast back to back transfers disabled
>> [    1.170002] pci_bus 0000:01: bus scan returning with max=01
>> [    1.175701] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
>> [    1.182447] pci_bus 0000:00: bus scan returning with max=01
>> [    1.188147] pci 0000:00:00.0: fixup irq: got 0
>> [    1.192707] pci 0000:00:00.0: assigning IRQ 00
>> [    1.197294] pci 0000:01:00.0: fixup irq: got 20
>> [    1.201945] pci 0000:01:00.0: assigning IRQ 20
>> [    1.206533] pci 0000:00:00.0: BAR 0: assigned [mem 0x90000000-0x90ffffff 64bit]
>> [    1.213984] pci 0000:00:00.0: BAR 8: assigned [mem 0x91000000-0x910fffff]
>> [    1.220908] pci 0000:01:00.0: BAR 0: assigned [mem 0x91000000-0x91001fff 64bit]
>> [    1.228363] pci 0000:00:00.0: PCI bridge to [bus 01]
>> [    1.233449] pci 0000:00:00.0:   bridge window [mem 0x91000000-0x910fffff]
>> [    1.240419] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
>> [    1.246648] pcieport 0000:00:00.0: enabling bus mastering
>> [    1.252321] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
>> [    1.259077] pci 0000:01:00.0: enabling device (0140 -> 0142)
>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
>> [    1.272248] pgd = c0004000
>> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>> [    1.286897] Modules linked in:
>> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
>> [    1.296696] Hardware name: Sigma Tango DT
>> [    1.300808] task: cf82c9c0 task.stack: cf838000
>> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
>> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
>> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
>> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
>> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
>> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
>> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>> [    1.346105] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
>> [    1.353361] Control: 10c5387d  Table: 8fa9c04a  DAC: 00000051
>> [    1.359218] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
>> [    1.365339] Stack: (0xcf839d78 to 0xcf83a000)
>> [    1.369800] 9d60:                                                       c058f578 c058b180
>> [    1.378107] 9d80: cfb55240 cf839d98 c0350218 c05adccc cfb5f800 c05adcdc cf838000 00000000
>> [    1.386413] 9da0: 00000000 c10248a0 cf839e38 c030bfa4 cf923b80 c034e69c cf867270 00000000
>> [    1.394719] 9dc0: cfb5f800 cf9ef414 cf9ef400 cf839e30 cf923b80 00000000 cf906010 c02fa484
>> [    1.403025] 9de0: cfb5f800 cf9ef414 cf9ef400 c02fa538 cfb5fc00 cf9ef814 cf9ef800 c02fa56c
>> [    1.411330] 9e00: cf9ef80c cf9ef80c cf9ef800 c031387c cf839e30 cfaa39b0 c05178c8 c10101d8
>> [    1.419636] 9e20: cf881780 00000000 cf906000 c058cd2c cf839e30 cf839e30 50000000 5fffffff
>> [    1.427942] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
>> [    1.436248] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c0351624
>> [    1.444553] 9e80: c1056fb0 cf906010 cf906044 c03500c0 cf906010 c1010208 cf906044 c10177d0
>> [    1.452859] 9ea0: 00000073 c0350214 00000000 c1010208 c0350150 c034e5e8 cf80545c cf8a60b4
>> [    1.461165] 9ec0: c1010208 cf9b8a00 00000000 c034f72c c058cd84 c0616a64 c0633cb0 c1010208
>> [    1.469471] 9ee0: c0616a64 c0633cb0 c0628834 c0350770 ffffe000 c0616a64 c0633cb0 c0101834
>> [    1.477776] 9f00: c104a354 c100a5c8 00000000 c0220830 00000000 cf87cf00 00000000 c1009370
>> [    1.486082] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1c4 c05da4a4 00000000 00000006
>> [    1.494388] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
>> [    1.502693] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
>> [    1.510999] 9f80: 1113a9b3 00000000 c049fafc 00000000 00000000 00000000 00000000 00000000
>> [    1.519304] 9fa0: 00000000 c049fb04 00000000 c01077b8 00000000 00000000 00000000 00000000
>> [    1.527609] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>> [    1.535914] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 2338eece a019c832
>> [    1.544236] [<c039fe8c>] (quirk_usb_early_handoff) from [<c030bfa4>] (pci_do_fixups+0xc8/0x158)
>> [    1.553077] [<c030bfa4>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
>> [    1.561386] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
>> [    1.570218] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
>> [    1.579140] [<c02fa56c>] (pci_bus_add_devices) from [<c031387c>] (pci_host_common_probe+0xfc/0x324)
>> [    1.588328] [<c031387c>] (pci_host_common_probe) from [<c0351624>] (platform_drv_probe+0x34/0x7c)
>> [    1.597337] [<c0351624>] (platform_drv_probe) from [<c03500c0>] (really_probe+0x1c4/0x254)
>> [    1.605733] [<c03500c0>] (really_probe) from [<c0350214>] (__driver_attach+0xc4/0xc8)
>> [    1.613691] [<c0350214>] (__driver_attach) from [<c034e5e8>] (bus_for_each_dev+0x68/0x9c)
>> [    1.621998] [<c034e5e8>] (bus_for_each_dev) from [<c034f72c>] (bus_add_driver+0x1a0/0x218)
>> [    1.630393] [<c034f72c>] (bus_add_driver) from [<c0350770>] (driver_register+0x78/0xf8)
>> [    1.638527] [<c0350770>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
>> [    1.646845] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
>> [    1.655678] [<c0600db4>] (kernel_init_freeable) from [<c049fb04>] (kernel_init+0x8/0x10c)
>> [    1.663990] [<c049fb04>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
>> [    1.671686] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
>> [    1.677929] ---[ end trace f034f5427be1ec2c ]---
>> [    1.682673] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
>> [    1.682673] 
>> [    1.692032] CPU1: stopping
>> [    1.694837] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #151
>> [    1.702703] Hardware name: Sigma Tango DT
>> [    1.706831] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
>> [    1.714703] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
>> [    1.722051] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
>> [    1.729571] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
>> [    1.737266] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
>> [    1.744869] Exception stack(0xcf859f98 to 0xcf859fe0)
>> [    1.750028] 9f80:                                                       00000001 00000000
>> [    1.758334] 9fa0: 000017b2 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
>> [    1.766640] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
>> [    1.774946] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
>> [    1.782472] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
>> [    1.790782] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
>> [    1.797867] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> 
> Had another one, with a different faulting address:
> 
> [    0.986295] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
> [    0.992004] OF: PCI:   No bus range found for /soc/pcie at 50000000, using [bus 00-ff]
> [    0.999798] OF: PCI: Parsing ranges property...
> [    1.004457] OF: PCI:   MEM 0x90000000..0x9fffffff -> 0x90000000
> [    1.013472] pci-host-generic 50000000.pcie: ECAM at [mem 0x50000000-0x5fffffff] for [bus 00-ff]
> [    1.022605] pci-host-generic 50000000.pcie: PCI host bridge to bus 0000:00
> [    1.029638] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    1.035250] pci_bus 0000:00: root bus resource [mem 0x90000000-0x9fffffff]
> [    1.042257] pci_bus 0000:00: scanning bus
> [    1.046407] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
> [    1.052560] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
> [    1.059143] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
> [    1.066086] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
> [    1.072428] pci 0000:00:00.0: supports D1 D2
> [    1.076815] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
> [    1.082950] pci 0000:00:00.0: PME# disabled
> [    1.087453] pci_bus 0000:00: fixups for bus
> [    1.091762] PCI: bus0: Fast back to back transfers disabled
> [    1.097463] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
> [    1.104323] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    1.112470] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
> [    1.119423] pci_bus 0000:01: scanning bus
> [    1.123593] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
> [    1.129770] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
> [    1.136775] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
> [    1.143197] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
> [    1.149421] pci 0000:01:00.0: PME# disabled
> [    1.154024] pci_bus 0000:01: fixups for bus
> [    1.158332] PCI: bus1: Fast back to back transfers disabled
> [    1.164030] pci_bus 0000:01: bus scan returning with max=01
> [    1.169728] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
> [    1.176476] pci_bus 0000:00: bus scan returning with max=01
> [    1.182175] pci 0000:00:00.0: fixup irq: got 0
> [    1.186736] pci 0000:00:00.0: assigning IRQ 00
> [    1.191322] pci 0000:01:00.0: fixup irq: got 20
> [    1.195971] pci 0000:01:00.0: assigning IRQ 20
> [    1.200556] pci 0000:00:00.0: BAR 0: assigned [mem 0x90000000-0x90ffffff 64bit]
> [    1.208009] pci 0000:00:00.0: BAR 8: assigned [mem 0x91000000-0x910fffff]
> [    1.214932] pci 0000:01:00.0: BAR 0: assigned [mem 0x91000000-0x91001fff 64bit]
> [    1.222387] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    1.227473] pci 0000:00:00.0:   bridge window [mem 0x91000000-0x910fffff]
> [    1.234445] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
> [    1.240676] pcieport 0000:00:00.0: enabling bus mastering
> [    1.246350] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
> [    1.253108] pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    1.258926] Unable to handle kernel paging request at virtual address d0863f70
> [    1.266284] pgd = c0004000
> [    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
> [    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> [    1.280933] Modules linked in:
> [    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
> [    1.290732] Hardware name: Sigma Tango DT
> [    1.294843] task: cf82c9c0 task.stack: cf838000
> [    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
> [    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
> [    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
> [    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
> [    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
> [    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
> [    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> [    1.340140] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [    1.347395] Control: 10c5387d  Table: 8faa404a  DAC: 00000051
> [    1.353253] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
> [    1.359373] Stack: (0xcf839d78 to 0xcf83a000)
> [    1.363834] 9d60:                                                       c058f56c c058b174
> [    1.372141] 9d80: cfb48240 cf839d98 c03501cc c05adcc4 cfb52800 c05adcd4 cf838000 00000000
> [    1.380447] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf884600 c034e650 cf867270 00000000
> [    1.388752] 9dc0: cfb52800 cf9f2414 cf9f2400 cf839e30 cf884600 00000000 cf906010 c02fa484
> [    1.397058] 9de0: cfb52800 cf9f2414 cf9f2400 c02fa538 cfb52c00 cf9f2814 cf9f2800 c02fa56c
> [    1.405364] 9e00: cf9f280c cf9f280c cf9f2800 c0313830 cf839e30 cf9fa9b0 c05178b0 c10101d8
> [    1.413670] 9e20: cf881400 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
> [    1.421976] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
> [    1.430281] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
> [    1.438588] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
> [    1.446894] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
> [    1.455200] 9ec0: c1010208 cfa0ef00 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
> [    1.463506] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
> [    1.471811] 9f00: c05da71c cfffcec4 00000000 cfffcec9 00000000 cf839f30 c013291c c0132adc
> [    1.480117] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
> [    1.488423] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
> [    1.496728] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
> [    1.505034] 9f80: aa83c9e6 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
> [    1.513339] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
> [    1.521644] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    1.529949] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 94c2dc87 babd118e
> [    1.538273] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
> [    1.547113] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
> [    1.555423] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
> [    1.564255] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
> [    1.573178] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
> [    1.582365] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
> [    1.591375] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
> [    1.599770] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
> [    1.607728] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
> [    1.616036] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
> [    1.624431] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
> [    1.632565] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
> [    1.640882] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
> [    1.649716] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
> [    1.658026] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
> [    1.665722] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
> [    1.671965] ---[ end trace 61b8b7d0e0f98e8c ]---
> [    1.676708] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    1.676708] 
> [    1.686067] CPU1: stopping
> [    1.688872] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #157
> [    1.696738] Hardware name: Sigma Tango DT
> [    1.700865] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
> [    1.708738] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
> [    1.716085] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
> [    1.723606] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
> [    1.731301] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
> [    1.738905] Exception stack(0xcf859f98 to 0xcf859fe0)
> [    1.744064] 9f80:                                                       00000001 00000000
> [    1.752370] 9fa0: 000017b0 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
> [    1.760676] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
> [    1.768983] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
> [    1.776510] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
> [    1.784819] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
> [    1.791904] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

One more for the road:

[    1.261813] Unable to handle kernel paging request at virtual address d08611e4
[    1.269167] pgd = c0004000
[    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
[    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
[    1.283815] Modules linked in:
[    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
[    1.293614] Hardware name: Sigma Tango DT
[    1.297726] task: cf82c9c0 task.stack: cf838000
[    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
[    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
[    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
[    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
[    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
[    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
[    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
[    1.343022] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    1.350277] Control: 10c5387d  Table: 8fa2c04a  DAC: 00000051
[    1.356135] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
[    1.362255] Stack: (0xcf839d78 to 0xcf83a000)
[    1.366716] 9d60:                                                       c058f56c c058b174
[    1.375022] 9d80: cfb44240 cf839d98 c03501cc c05adcc4 cfb4e800 c05adcd4 cf838000 00000000
[    1.383328] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf886900 c034e650 cf867270 00000000
[    1.391633] 9dc0: cfb4e800 cfa3e414 cfa3e400 cf839e30 cf886900 00000000 cf906010 c02fa484
[    1.399939] 9de0: cfb4e800 cfa3e414 cfa3e400 c02fa538 cfb4ec00 cfa3e814 cfa3e800 c02fa56c
[    1.408245] 9e00: cfa3e80c cfa3e80c cfa3e800 c0313830 cf839e30 cf9ee9b0 c05178b0 c10101d8
[    1.416551] 9e20: cf932140 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
[    1.424856] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
[    1.433162] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
[    1.441468] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
[    1.449774] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
[    1.458080] 9ec0: c1010208 cfa52480 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
[    1.466386] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
[    1.474692] 9f00: c01017f0 80000013 ffffffff cf839f54 00000000 cf838000 c062883c c010b90c
[    1.482997] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
[    1.491303] 9f40: 00000006 c05723fc c062883c c1024880 c1024880 c1024880 c0633cb0 c0628834
[    1.499608] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
[    1.507914] 9f80: c83b3b47 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
[    1.516219] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
[    1.524524] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    1.532829] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 9dbaf28f 56839b11
[    1.541152] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
[    1.549992] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
[    1.558301] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
[    1.567133] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
[    1.576055] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
[    1.585243] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
[    1.594252] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
[    1.602647] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
[    1.610605] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
[    1.618912] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
[    1.627307] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
[    1.635442] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
[    1.643759] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
[    1.652592] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
[    1.660904] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
[    1.668601] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
[    1.674843] ---[ end trace 4ba687b661f0690b ]---
[    1.679586] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.679586] 
[    1.688946] CPU1: stopping
[    1.691751] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #157
[    1.699617] Hardware name: Sigma Tango DT
[    1.703741] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
[    1.711613] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
[    1.718961] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
[    1.726482] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
[    1.734176] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
[    1.741780] Exception stack(0xcf859f98 to 0xcf859fe0)
[    1.746939] 9f80:                                                       00000001 00000000
[    1.755245] 9fa0: 00001572 c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
[    1.763550] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
[    1.771857] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
[    1.779383] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
[    1.787693] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
[    1.794777] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Next boot didn't tickle the panic...

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 17:15   ` Mason
@ 2017-03-03 19:02     ` Robin Murphy
  2017-03-03 22:09       ` Mason
                         ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Robin Murphy @ 2017-03-03 19:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/17 17:15, Mason wrote:
[...]
>>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4

Note that that's a reasonable approximation of a vmalloc address...

>>> [    1.272248] pgd = c0004000
>>> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [    1.286897] Modules linked in:
>>> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
>>> [    1.296696] Hardware name: Sigma Tango DT
>>> [    1.300808] task: cf82c9c0 task.stack: cf838000
>>> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
>>> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
>>> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
>>> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
>>> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
>>> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000

...and that specifically it's r0 + r3...

[...]
>> [    1.258926] Unable to handle kernel paging request at virtual address d0863f70
>> [    1.266284] pgd = c0004000
>> [    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
>> [    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>> [    1.280933] Modules linked in:
>> [    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>> [    1.290732] Hardware name: Sigma Tango DT
>> [    1.294843] task: cf82c9c0 task.stack: cf838000
>> [    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
>> [    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
>> [    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>> [    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
>> [    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
>> [    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
>> [    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000

...and again...

[...]
> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
> [    1.269167] pgd = c0004000
> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> [    1.283815] Modules linked in:
> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
> [    1.293614] Hardware name: Sigma Tango DT
> [    1.297726] task: cf82c9c0 task.stack: cf838000
> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000

...and again. And always at the same PC, too. Looking at
quirk_usb_early_handoff(), it mostly seems to go off poking bridge
resources, so I'd hazard a guess that it's down to your host driver,
with something uninitialised (or already freed) being used as an offset
into some ioremapped resource (which given the consistency of r0 is
probably allocated pretty early on).

"addr2line -i -e vmlinux c039fe44", and work backwards from there ;) In
particular I'd follow the provenance of r3.

Robin.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 19:02     ` Robin Murphy
@ 2017-03-03 22:09       ` Mason
  2017-03-04  0:24       ` Mason
  2017-03-06 12:42       ` Mason
  2 siblings, 0 replies; 21+ messages in thread
From: Mason @ 2017-03-03 22:09 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/2017 20:02, Robin Murphy wrote:

> On 03/03/17 17:15, Mason wrote:
> 
>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
> 
> Note that that's a reasonable approximation of a vmalloc address...
> 
> ...and that specifically it's r0 + r3...
> 
> ...and again. And always at the same PC, too. Looking at
> quirk_usb_early_handoff(), it mostly seems to go off poking bridge
> resources, so I'd hazard a guess that it's down to your host driver,
> with something uninitialised (or already freed) being used as an offset
> into some ioremapped resource (which given the consistency of r0 is
> probably allocated pretty early on).

When you say "host driver", do you mean the USB driver,
or the PCIe controller driver?

I am currently writing the PCIe controller driver, so I do
expect a large number of bugs there; but the USB driver is
just the generic XHCI driver. Although I now realize that
I wrote no DT node for the USB HW... Would that explain
the random weirdness?

> "addr2line -i -e vmlinux c039fe44", and work backwards from there ;) In
> particular I'd follow the provenance of r3.

I'll definitely take a closer look. Thanks for the disassembly.

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 19:02     ` Robin Murphy
  2017-03-03 22:09       ` Mason
@ 2017-03-04  0:24       ` Mason
  2017-03-04  8:07         ` Ard Biesheuvel
  2017-03-06 12:42       ` Mason
  2 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-04  0:24 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/2017 20:02, Robin Murphy wrote:

> On 03/03/17 17:15, Mason wrote:
> 
>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>> [    1.269167] pgd = c0004000
>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>> [    1.283815] Modules linked in:
>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>> [    1.293614] Hardware name: Sigma Tango DT
>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> 
> ...and again. And always at the same PC, too.

By the way, isn't LR supposed to point to the caller of the
current function? ("LR is at ioremap_page_range")

If so, why does it not appear in the back trace?

[    1.541152] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
[    1.549992] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
[    1.558301] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
[    1.567133] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
[    1.576055] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
[    1.585243] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04  0:24       ` Mason
@ 2017-03-04  8:07         ` Ard Biesheuvel
  2017-03-04 15:51           ` Alan Stern
  2017-03-04 16:57           ` Mason
  0 siblings, 2 replies; 21+ messages in thread
From: Ard Biesheuvel @ 2017-03-04  8:07 UTC (permalink / raw)
  To: linux-arm-kernel

On 4 March 2017 at 00:24, Mason <slash.tmp@free.fr> wrote:
> On 03/03/2017 20:02, Robin Murphy wrote:
>
>> On 03/03/17 17:15, Mason wrote:
>>
>>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>> [    1.269167] pgd = c0004000
>>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [    1.283815] Modules linked in:
>>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>> [    1.293614] Hardware name: Sigma Tango DT
>>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and again. And always at the same PC, too.
>
> By the way, isn't LR supposed to point to the caller of the
> current function? ("LR is at ioremap_page_range")
>
> If so, why does it not appear in the back trace?
>

lr is supposed to point to the return address at function entry. After
that, all bets are off, really, since ARM usually pops the return
address from the stack straight into the pc register. So in this case,
it looks like it still contains the address that the most recent leaf
function returned to (or another function that actually restores the
return address into lr before branching to it). But it could easily
contain garbage as well.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04  8:07         ` Ard Biesheuvel
@ 2017-03-04 15:51           ` Alan Stern
  2017-03-04 16:57           ` Mason
  1 sibling, 0 replies; 21+ messages in thread
From: Alan Stern @ 2017-03-04 15:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, 4 Mar 2017, Ard Biesheuvel wrote:

> On 4 March 2017 at 00:24, Mason <slash.tmp@free.fr> wrote:
> > On 03/03/2017 20:02, Robin Murphy wrote:
> >
> >> On 03/03/17 17:15, Mason wrote:
> >>
> >>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
> >>> [    1.269167] pgd = c0004000
> >>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
> >>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> >>> [    1.283815] Modules linked in:
> >>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
> >>> [    1.293614] Hardware name: Sigma Tango DT
> >>> [    1.297726] task: cf82c9c0 task.stack: cf838000
> >>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
> >>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
> >>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
> >>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
> >>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
> >>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
> >>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> >>
> >> ...and again. And always at the same PC, too.
> >
> > By the way, isn't LR supposed to point to the caller of the
> > current function? ("LR is at ioremap_page_range")
> >
> > If so, why does it not appear in the back trace?
> >
> 
> lr is supposed to point to the return address at function entry. After
> that, all bets are off, really, since ARM usually pops the return
> address from the stack straight into the pc register. So in this case,
> it looks like it still contains the address that the most recent leaf
> function returned to (or another function that actually restores the
> return address into lr before branching to it). But it could easily
> contain garbage as well.

Besides, the compiler often inlines static subroutines that are called
from only one place.  As a result there is no hardware stack frame for 
these subroutine calls, and they don't show up in the back trace.

Alan Stern

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04  8:07         ` Ard Biesheuvel
  2017-03-04 15:51           ` Alan Stern
@ 2017-03-04 16:57           ` Mason
  2017-03-04 17:16             ` Ard Biesheuvel
  1 sibling, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-04 16:57 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/03/2017 09:07, Ard Biesheuvel wrote:
> On 4 March 2017 at 00:24, Mason wrote:
>> On 03/03/2017 20:02, Robin Murphy wrote:
>>
>>> On 03/03/17 17:15, Mason wrote:
>>>
>>>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>>> [    1.269167] pgd = c0004000
>>>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>> [    1.283815] Modules linked in:
>>>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>>> [    1.293614] Hardware name: Sigma Tango DT
>>>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>>>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>>>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>>>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>>
>>> ...and again. And always at the same PC, too.
>>
>> By the way, isn't LR supposed to point to the caller of the
>> current function? ("LR is at ioremap_page_range")
>>
>> If so, why does it not appear in the back trace?
> 
> lr is supposed to point to the return address at function entry. After
> that, all bets are off, really, since ARM usually pops the return
> address from the stack straight into the pc register. So in this case,
> it looks like it still contains the address that the most recent leaf
> function returned to (or another function that actually restores the
> return address into lr before branching to it). But it could easily
> contain garbage as well.

If there is only a tiny chance that LR contains genuinely useful
information, then what is the rationale for providing the info
at all in the panic message?

I would argue that no info is better than info that is wrong
most of the time.

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04 16:57           ` Mason
@ 2017-03-04 17:16             ` Ard Biesheuvel
  2017-03-04 17:29               ` Mason
  0 siblings, 1 reply; 21+ messages in thread
From: Ard Biesheuvel @ 2017-03-04 17:16 UTC (permalink / raw)
  To: linux-arm-kernel


> On 4 Mar 2017, at 16:57, Mason <slash.tmp@free.fr> wrote:
> 
>> On 04/03/2017 09:07, Ard Biesheuvel wrote:
>>> On 4 March 2017 at 00:24, Mason wrote:
>>>> On 03/03/2017 20:02, Robin Murphy wrote:
>>>> 
>>>>> On 03/03/17 17:15, Mason wrote:
>>>>> 
>>>>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>>>> [    1.269167] pgd = c0004000
>>>>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>>> [    1.283815] Modules linked in:
>>>>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>>>> [    1.293614] Hardware name: Sigma Tango DT
>>>>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>>>>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>>>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>>>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>>>>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>>>>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>>> 
>>>> ...and again. And always at the same PC, too.
>>> 
>>> By the way, isn't LR supposed to point to the caller of the
>>> current function? ("LR is at ioremap_page_range")
>>> 
>>> If so, why does it not appear in the back trace?
>> 
>> lr is supposed to point to the return address at function entry. After
>> that, all bets are off, really, since ARM usually pops the return
>> address from the stack straight into the pc register. So in this case,
>> it looks like it still contains the address that the most recent leaf
>> function returned to (or another function that actually restores the
>> return address into lr before branching to it). But it could easily
>> contain garbage as well.
> 
> If there is only a tiny chance that LR contains genuinely useful
> information, then what is the rationale for providing the info
> at all in the panic message?
> 
> I would argue that no info is better than info that is wrong
> most of the time.
> 

After pc, the link register is the most likely to legally point into the kernel .text section so it makes sense imo to decode the address into a function name plus offset.

Educating people about the architecture's calling convention and associated caveats is not the job of the panic handler.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04 17:16             ` Ard Biesheuvel
@ 2017-03-04 17:29               ` Mason
  2017-03-04 18:27                 ` Ard Biesheuvel
  0 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-04 17:29 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/03/2017 18:16, Ard Biesheuvel wrote:

> After pc, the link register is the most likely to legally point into
> the kernel .text section so it makes sense imo to decode the address
> into a function name plus offset.

Does gcc ever use the link register as a general purpose register?
(In which case, it is very likely to contain "garbage" as far as
function addresses are concerned.)

> Educating people about the architecture's calling convention and
> associated caveats is not the job of the panic handler.

That's a weird statement.

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-04 17:29               ` Mason
@ 2017-03-04 18:27                 ` Ard Biesheuvel
  0 siblings, 0 replies; 21+ messages in thread
From: Ard Biesheuvel @ 2017-03-04 18:27 UTC (permalink / raw)
  To: linux-arm-kernel


> On 4 Mar 2017, at 17:29, Mason <slash.tmp@free.fr> wrote:
> 
>> On 04/03/2017 18:16, Ard Biesheuvel wrote:
>> 
>> After pc, the link register is the most likely to legally point into
>> the kernel .text section so it makes sense imo to decode the address
>> into a function name plus offset.
> 
> Does gcc ever use the link register as a general purpose register?

Yes.

> (In which case, it is very likely to contain "garbage" as far as
> function addresses are concerned.)
> 
>> Educating people about the architecture's calling convention and
>> associated caveats is not the job of the panic handler.
> 
> That's a weird statement.
> 

By your own admission (in various threads and in #armlinux on IRC), you are not an expert in the topics you seek help about. Yet, that does not seem to stop you from sharing your opinions vocally, how 'weird' or 'useless' some things are.

As for the lr, I attempted to explain that in some cases, annotating its value can be useful. Adding an explanation to or letting the panic handler reason about whether this is currently the case is not so useful imo.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-03 19:02     ` Robin Murphy
  2017-03-03 22:09       ` Mason
  2017-03-04  0:24       ` Mason
@ 2017-03-06 12:42       ` Mason
  2017-03-06 13:49         ` Mason
  2017-03-06 14:30           ` Robin Murphy
  2 siblings, 2 replies; 21+ messages in thread
From: Mason @ 2017-03-06 12:42 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/03/2017 20:02, Robin Murphy wrote:

> On 03/03/17 17:15, Mason wrote:
> 
>>>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
> 
> Note that that's a reasonable approximation of a vmalloc address...
> 
>>>> [    1.272248] pgd = c0004000
>>>> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>> [    1.286897] Modules linked in:
>>>> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
>>>> [    1.296696] Hardware name: Sigma Tango DT
>>>> [    1.300808] task: cf82c9c0 task.stack: cf838000
>>>> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
>>>> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
>>>> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
>>>> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
>>>> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> 
> ...and that specifically it's r0 + r3...
> 
>>> [    1.258926] Unable to handle kernel paging request at virtual address d0863f70
>>> [    1.266284] pgd = c0004000
>>> [    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [    1.280933] Modules linked in:
>>> [    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>> [    1.290732] Hardware name: Sigma Tango DT
>>> [    1.294843] task: cf82c9c0 task.stack: cf838000
>>> [    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
>>> [    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>> [    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
>>> [    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
>>> [    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
>>> [    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> 
> ...and again...
> 
>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>> [    1.269167] pgd = c0004000
>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>> [    1.283815] Modules linked in:
>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>> [    1.293614] Hardware name: Sigma Tango DT
>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> 
> ...and again. And always at the same PC, too. Looking at
> quirk_usb_early_handoff(), it mostly seems to go off poking bridge
> resources, so I'd hazard a guess that it's down to your host driver,
> with something uninitialised (or already freed) being used as an offset
> into some ioremapped resource (which given the consistency of r0 is
> probably allocated pretty early on).
> 
> "addr2line -i -e vmlinux c039fe44", and work backwards from there ;)
> In particular I'd follow the provenance of r3.

Starting from a fresh panic:

[    1.236243] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
[    1.242474] pcieport 0000:00:00.0: enabling bus mastering
[    1.248147] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
[    1.254904] pci 0000:01:00.0: enabling device (0140 -> 0142)
[    1.260719] Unable to handle kernel paging request at virtual address d08509f8
[    1.268073] pgd = c0004000
[    1.270874] [d08509f8] *pgd=8f804811, *pte=00000000, *ppte=00000000
[    1.277282] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
[    1.282702] Modules linked in:
[    1.285858] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #2
[    1.292327] Hardware name: Sigma Tango DT
[    1.296438] task: cf82c9c0 task.stack: cf838000
[    1.301076] PC is at quirk_usb_early_handoff+0x3e8/0x790
[    1.306501] LR is at ioremap_page_range+0xf8/0x1a8
[    1.311400] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
[    1.311400] sp : cf839d78  ip : 00000000  fp : cf839e38
[    1.323110] r10: c10248a0  r9 : 00000000  r8 : d08509f8
[    1.328444] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
[    1.335087] r3 : 000029f8  r2 : 00000000  r1 : 91001e13  r0 : d084e000
[    1.341732] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    1.348987] Control: 10c5387d  Table: 8faa004a  DAC: 00000051
[    1.354844] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
[    1.360963] Stack: (0xcf839d78 to 0xcf83a000)
[    1.365424] 9d60:                                                       c058f56c c058b174
[    1.373730] 9d80: cfb55240 cf839d98 c03501cc c05adcc4 cfb5f800 c05adcd4 cf838000 00000000
[    1.382036] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf889200 c034e650 cf867270 00000000
[    1.390342] 9dc0: cfb5f800 cf999414 cf999400 cf839e30 cf889200 00000000 cf906010 c02fa484
[    1.398648] 9de0: cfb5f800 cf999414 cf999400 c02fa538 cfb5fc00 cf999814 cf999800 c02fa56c
[    1.406953] 9e00: cf99980c cf99980c cf999800 c0313830 cf839e30 cf9929b0 c05178b0 c10101d8
[    1.415259] 9e20: cf881780 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
[    1.423564] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
[    1.431869] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
[    1.440175] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
[    1.448481] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
[    1.456787] 9ec0: c1010208 cf9a5f00 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
[    1.465093] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
[    1.473399] 9f00: 00000069 cf839f20 c013291c c02d4f10 20000000 ffffffff 00000051 00000000
[    1.481704] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
[    1.490010] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
[    1.498315] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
[    1.506620] 9f80: 58fe5add 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
[    1.514925] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
[    1.523230] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    1.531536] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 88719a14 4a5337f3
[    1.539858] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
[    1.548699] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
[    1.557008] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
[    1.565839] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
[    1.574761] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
[    1.583948] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
[    1.592957] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
[    1.601353] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
[    1.609311] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
[    1.617618] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
[    1.626013] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
[    1.634147] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
[    1.642463] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
[    1.651296] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
[    1.659607] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
[    1.667302] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
[    1.673545] ---[ end trace c146f95bb6e22b24 ]---
[    1.678294] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.678294] 
[    1.687652] CPU1: stopping
[    1.690457] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #2
[    1.698148] Hardware name: Sigma Tango DT
[    1.702276] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
[    1.710148] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
[    1.717495] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
[    1.725016] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
[    1.732710] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
[    1.740314] Exception stack(0xcf859f98 to 0xcf859fe0)
[    1.745474] 9f80:                                                       00000001 00000000
[    1.753779] 9fa0: 0000196e c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
[    1.762085] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
[    1.770392] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
[    1.777918] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
[    1.786227] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
[    1.793311] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b


$ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44
arch/arm/include/asm/io.h:119

In other words, readl()
Not as helpful as expected...

AFAICT, quirk_usb_handoff_xhci() is inlined at c039fd18

and c039fd48 is likely
	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
http://lxr.free-electrons.com/source/drivers/usb/host/pci-quirks.c?v=4.9#L978

Panic seems to occur in
ext_cap_offset = xhci_find_next_ext_cap(base, 0, XHCI_EXT_CAPS_LEGACY);

c039fd54:	e5973010 	ldr	r3, [r7, #16]
c039fd58:	f57ff04f 	dsb	sy
c039fd5c:	e3730001 	cmn	r3, #1
c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>

		val = readl(base + XHCI_HCC_PARAMS_OFFSET);
		if (val == ~0)
			return 0;

At this point, r7 is base.

c039fd64:	e1a03823 	lsr	r3, r3, #16
c039fd68:	e1b03103 	lsls	r3, r3, #2
c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>

		offset = XHCI_HCC_EXT_CAPS(val) << 2;
		if (!offset)
			return 0;

At this point, r3 is XHCI_HCC_EXT_CAPS(val) << 2

	do {
		val = readl(base + offset);
		if (val == ~0)
			return 0;

c039fe40:	e0878003 	add	r8, r7, r3
c039fe44:	e5982000 	ldr	r2, [r8]

r8 = r7 + r3 = base + offset;

So the kernel panics in xhci_find_next_ext_cap()
( drivers/usb/host/xhci-ext-caps.h:122 )
http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122

Any idea how this can happen?

	base = ioremap_nocache(pci_resource_start(pdev, 0), len);

Could I be passing garbage to ioremap_nocache?

Regards.



Full disassembly below, for my own reference.

c039fa5c <quirk_usb_early_handoff>:
c039fa5c:	e1d022b0 	ldrh	r2, [r0, #32]
c039fa60:	e301384e 	movw	r3, #6222	; 0x184e
c039fa64:	e1520003 	cmp	r2, r3
c039fa68:	012fff1e 	bxeq	lr
c039fa6c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}
c039fa70:	e3a03c03 	mov	r3, #768	; 0x300
c039fa74:	e5905028 	ldr	r5, [r0, #40]	; 0x28
c039fa78:	e340300c 	movt	r3, #12
c039fa7c:	e24dd014 	sub	sp, sp, #20
c039fa80:	e1a04000 	mov	r4, r0
c039fa84:	e3c55030 	bic	r5, r5, #48	; 0x30
c039fa88:	e1550003 	cmp	r5, r3
c039fa8c:	0a000001 	beq	c039fa98 <quirk_usb_early_handoff+0x3c>
c039fa90:	e28dd014 	add	sp, sp, #20
c039fa94:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
c039fa98:	ebfd890d 	bl	c0301ed4 <pci_enable_device>
c039fa9c:	e3500000 	cmp	r0, #0
c039faa0:	ba000097 	blt	c039fd04 <quirk_usb_early_handoff+0x2a8>
c039faa4:	e5943028 	ldr	r3, [r4, #40]	; 0x28
c039faa8:	e1530005 	cmp	r3, r5
c039faac:	0a00000f 	beq	c039faf0 <quirk_usb_early_handoff+0x94>
c039fab0:	e3a02e31 	mov	r2, #784	; 0x310
c039fab4:	e340200c 	movt	r2, #12
c039fab8:	e1530002 	cmp	r3, r2
c039fabc:	0a00001e 	beq	c039fb3c <quirk_usb_early_handoff+0xe0>
c039fac0:	e3a02e32 	mov	r2, #800	; 0x320
c039fac4:	e340200c 	movt	r2, #12
c039fac8:	e1530002 	cmp	r3, r2
c039facc:	0a000054 	beq	c039fc24 <quirk_usb_early_handoff+0x1c8>
c039fad0:	e3a02e33 	mov	r2, #816	; 0x330
c039fad4:	e340200c 	movt	r2, #12
c039fad8:	e1530002 	cmp	r3, r2
c039fadc:	0a00008d 	beq	c039fd18 <quirk_usb_early_handoff+0x2bc>
c039fae0:	e1a00004 	mov	r0, r4
c039fae4:	ebfd846d 	bl	c0300ca0 <pci_disable_device>
c039fae8:	e28dd014 	add	sp, sp, #20
c039faec:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
c039faf0:	e28d300c 	add	r3, sp, #12
c039faf4:	e3a02004 	mov	r2, #4
c039faf8:	e594101c 	ldr	r1, [r4, #28]
c039fafc:	e5940008 	ldr	r0, [r4, #8]
c039fb00:	ebfd631b 	bl	c02f8774 <pci_bus_read_config_word>
c039fb04:	e3500000 	cmp	r0, #0
c039fb08:	1afffff4 	bne	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb0c:	e1dd30bc 	ldrh	r3, [sp, #12]
c039fb10:	e3130001 	tst	r3, #1
c039fb14:	0afffff1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb18:	e1a03004 	mov	r3, r4
c039fb1c:	e5932178 	ldr	r2, [r3, #376]	; 0x178
c039fb20:	e2833020 	add	r3, r3, #32
c039fb24:	e3120c01 	tst	r2, #256	; 0x100
c039fb28:	1a00012b 	bne	c039ffdc <quirk_usb_early_handoff+0x580>
c039fb2c:	e2800001 	add	r0, r0, #1
c039fb30:	e3500006 	cmp	r0, #6
c039fb34:	1afffff8 	bne	c039fb1c <quirk_usb_early_handoff+0xc0>
c039fb38:	eaffffe8 	b	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb3c:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
c039fb40:	e3530000 	cmp	r3, #0
c039fb44:	0affffe5 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb48:	e1a00004 	mov	r0, r4
c039fb4c:	ebffff8f 	bl	c039f990 <mmio_resource_enabled.part.0>
c039fb50:	e3500000 	cmp	r0, #0
c039fb54:	0affffe1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb58:	e3a01000 	mov	r1, #0
c039fb5c:	e1a00004 	mov	r0, r4
c039fb60:	ebfd7875 	bl	c02fdd3c <pci_ioremap_bar>
c039fb64:	e2508000 	subs	r8, r0, #0
c039fb68:	0affffdc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fb6c:	e5949020 	ldr	r9, [r4, #32]
c039fb70:	e2887004 	add	r7, r8, #4
c039fb74:	e598a004 	ldr	sl, [r8, #4]
c039fb78:	f57ff04f 	dsb	sy
c039fb7c:	e31a0c01 	tst	sl, #256	; 0x100
c039fb80:	02886008 	addeq	r6, r8, #8
c039fb84:	1a000128 	bne	c03a002c <quirk_usb_early_handoff+0x5d0>
c039fb88:	f57ff04e 	dsb	st
c039fb8c:	ebf5c6a8 	bl	c0111634 <arm_heavy_mb>
c039fb90:	e3e03000 	mvn	r3, #0
c039fb94:	e5883014 	str	r3, [r8, #20]
c039fb98:	e31a00c0 	tst	sl, #192	; 0xc0
c039fb9c:	1a000119 	bne	c03a0008 <quirk_usb_early_handoff+0x5ac>
c039fba0:	e30130b9 	movw	r3, #4281	; 0x10b9
c039fba4:	e3453237 	movt	r3, #21047	; 0x5237
c039fba8:	e1590003 	cmp	r9, r3
c039fbac:	03a0a000 	moveq	sl, #0
c039fbb0:	0a000001 	beq	c039fbbc <quirk_usb_early_handoff+0x160>
c039fbb4:	e598a034 	ldr	sl, [r8, #52]	; 0x34
c039fbb8:	f57ff04f 	dsb	sy
c039fbbc:	f57ff04e 	dsb	st
c039fbc0:	ebf5c69b 	bl	c0111634 <arm_heavy_mb>
c039fbc4:	e3a03001 	mov	r3, #1
c039fbc8:	e5863000 	str	r3, [r6]
c039fbcc:	e307b4dc 	movw	fp, #29916	; 0x74dc
c039fbd0:	e30d7495 	movw	r7, #54421	; 0xd495
c039fbd4:	e34cb05a 	movt	fp, #49242	; 0xc05a
c039fbd8:	e3407009 	movt	r7, #9
c039fbdc:	e3a0501e 	mov	r5, #30
c039fbe0:	ea000003 	b	c039fbf4 <quirk_usb_early_handoff+0x198>
c039fbe4:	e59b3004 	ldr	r3, [fp, #4]
c039fbe8:	e12fff33 	blx	r3
c039fbec:	e2555001 	subs	r5, r5, #1
c039fbf0:	0a000004 	beq	c039fc08 <quirk_usb_early_handoff+0x1ac>
c039fbf4:	e5963000 	ldr	r3, [r6]
c039fbf8:	f57ff04f 	dsb	sy
c039fbfc:	e3130001 	tst	r3, #1
c039fc00:	e1a00007 	mov	r0, r7
c039fc04:	1afffff6 	bne	c039fbe4 <quirk_usb_early_handoff+0x188>
c039fc08:	e30130b9 	movw	r3, #4281	; 0x10b9
c039fc0c:	e3453237 	movt	r3, #21047	; 0x5237
c039fc10:	e1590003 	cmp	r9, r3
c039fc14:	1a0000f7 	bne	c039fff8 <quirk_usb_early_handoff+0x59c>
c039fc18:	e1a00008 	mov	r0, r8
c039fc1c:	ebf5c806 	bl	c0111c3c <iounmap>
c039fc20:	eaffffae 	b	c039fae0 <quirk_usb_early_handoff+0x84>
c039fc24:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
c039fc28:	e3530000 	cmp	r3, #0
c039fc2c:	0affffab 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fc30:	e1a00004 	mov	r0, r4
c039fc34:	ebffff55 	bl	c039f990 <mmio_resource_enabled.part.0>
c039fc38:	e3500000 	cmp	r0, #0
c039fc3c:	0affffa7 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fc40:	e3a01000 	mov	r1, #0
c039fc44:	e1a00004 	mov	r0, r4
c039fc48:	ebfd783b 	bl	c02fdd3c <pci_ioremap_bar>
c039fc4c:	e250b000 	subs	fp, r0, #0
c039fc50:	0affffa2 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fc54:	e5db8000 	ldrb	r8, [fp]
c039fc58:	e6ef8078 	uxtb	r8, r8
c039fc5c:	f57ff04f 	dsb	sy
c039fc60:	e08b8008 	add	r8, fp, r8
c039fc64:	e59b6008 	ldr	r6, [fp, #8]
c039fc68:	f57ff04f 	dsb	sy
c039fc6c:	e7e76456 	ubfx	r6, r6, #8, #8
c039fc70:	e3560000 	cmp	r6, #0
c039fc74:	0a0000c8 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
c039fc78:	e3073bf4 	movw	r3, #31732	; 0x7bf4
c039fc7c:	e3079b80 	movw	r9, #31616	; 0x7b80
c039fc80:	e34c3059 	movt	r3, #49241	; 0xc059
c039fc84:	e34c9059 	movt	r9, #49241	; 0xc059
c039fc88:	e58d3004 	str	r3, [sp, #4]
c039fc8c:	e3a0703f 	mov	r7, #63	; 0x3f
c039fc90:	e284a068 	add	sl, r4, #104	; 0x68
c039fc94:	ea00000d 	b	c039fcd0 <quirk_usb_early_handoff+0x274>
c039fc98:	e3520001 	cmp	r2, #1
c039fc9c:	1a000014 	bne	c039fcf4 <quirk_usb_early_handoff+0x298>
c039fca0:	e2113801 	ands	r3, r1, #65536	; 0x10000
c039fca4:	e58d100c 	str	r1, [sp, #12]
c039fca8:	1a00008c 	bne	c039fee0 <quirk_usb_early_handoff+0x484>
c039fcac:	e2862004 	add	r2, r6, #4
c039fcb0:	e594101c 	ldr	r1, [r4, #28]
c039fcb4:	e5940008 	ldr	r0, [r4, #8]
c039fcb8:	ebfd674f 	bl	c02f99fc <pci_bus_write_config_dword>
c039fcbc:	e5dd6009 	ldrb	r6, [sp, #9]
c039fcc0:	e3560000 	cmp	r6, #0
c039fcc4:	0a0000b4 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
c039fcc8:	e2577001 	subs	r7, r7, #1
c039fccc:	0a0000ac 	beq	c039ff84 <quirk_usb_early_handoff+0x528>
c039fcd0:	e1a02006 	mov	r2, r6
c039fcd4:	e594101c 	ldr	r1, [r4, #28]
c039fcd8:	e28d3008 	add	r3, sp, #8
c039fcdc:	e5940008 	ldr	r0, [r4, #8]
c039fce0:	ebfd62c7 	bl	c02f8804 <pci_bus_read_config_dword>
c039fce4:	e59d1008 	ldr	r1, [sp, #8]
c039fce8:	e21120ff 	ands	r2, r1, #255	; 0xff
c039fcec:	1affffe9 	bne	c039fc98 <quirk_usb_early_handoff+0x23c>
c039fcf0:	e58d2008 	str	r2, [sp, #8]
c039fcf4:	e1a01009 	mov	r1, r9
c039fcf8:	e1a0000a 	mov	r0, sl
c039fcfc:	ebfeb48b 	bl	c034cf30 <dev_warn>
c039fd00:	eaffffed 	b	c039fcbc <quirk_usb_early_handoff+0x260>
c039fd04:	e3071b50 	movw	r1, #31568	; 0x7b50
c039fd08:	e2840068 	add	r0, r4, #104	; 0x68
c039fd0c:	e34c1059 	movt	r1, #49241	; 0xc059
c039fd10:	ebfeb486 	bl	c034cf30 <dev_warn>
c039fd14:	eaffff5d 	b	c039fa90 <quirk_usb_early_handoff+0x34>
c039fd18:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
c039fd1c:	e3530000 	cmp	r3, #0
c039fd20:	0affff6e 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fd24:	e5946170 	ldr	r6, [r4, #368]	; 0x170
c039fd28:	e1a00004 	mov	r0, r4
c039fd2c:	e2866001 	add	r6, r6, #1
c039fd30:	e0466003 	sub	r6, r6, r3
c039fd34:	ebffff15 	bl	c039f990 <mmio_resource_enabled.part.0>
c039fd38:	e3500000 	cmp	r0, #0
c039fd3c:	0affff67 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fd40:	e1a01006 	mov	r1, r6
c039fd44:	e594016c 	ldr	r0, [r4, #364]	; 0x16c
c039fd48:	ebf5c865 	bl	c0111ee4 <ioremap>
c039fd4c:	e2507000 	subs	r7, r0, #0
c039fd50:	0affff62 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039fd54:	e5973010 	ldr	r3, [r7, #16]
c039fd58:	f57ff04f 	dsb	sy
c039fd5c:	e3730001 	cmn	r3, #1
c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
c039fd64:	e1a03823 	lsr	r3, r3, #16
c039fd68:	e1b03103 	lsls	r3, r3, #2
c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>
c039fd70:	e1d422b0 	ldrh	r2, [r4, #32]
c039fd74:	e3083086 	movw	r3, #32902	; 0x8086
c039fd78:	e1520003 	cmp	r2, r3
c039fd7c:	0a0000f4 	beq	c03a0154 <quirk_usb_early_handoff+0x6f8>
c039fd80:	e5978000 	ldr	r8, [r7]
c039fd84:	f57ff04f 	dsb	sy
c039fd88:	e6ef8078 	uxtb	r8, r8
c039fd8c:	e307a4dc 	movw	sl, #29916	; 0x74dc
c039fd90:	e3049dd2 	movw	r9, #19922	; 0x4dd2
c039fd94:	e0878008 	add	r8, r7, r8
c039fd98:	e34ca05a 	movt	sl, #49242	; 0xc05a
c039fd9c:	e2886004 	add	r6, r8, #4
c039fda0:	e3409062 	movt	r9, #98	; 0x62
c039fda4:	e3a05f7d 	mov	r5, #500	; 0x1f4
c039fda8:	ea000003 	b	c039fdbc <quirk_usb_early_handoff+0x360>
c039fdac:	e59a3004 	ldr	r3, [sl, #4]
c039fdb0:	e12fff33 	blx	r3
c039fdb4:	e2555001 	subs	r5, r5, #1
c039fdb8:	0a0000d1 	beq	c03a0104 <quirk_usb_early_handoff+0x6a8>
c039fdbc:	e5963000 	ldr	r3, [r6]
c039fdc0:	f57ff04f 	dsb	sy
c039fdc4:	e3130b02 	tst	r3, #2048	; 0x800
c039fdc8:	e1a00009 	mov	r0, r9
c039fdcc:	1afffff6 	bne	c039fdac <quirk_usb_early_handoff+0x350>
c039fdd0:	e5985000 	ldr	r5, [r8]
c039fdd4:	f57ff04f 	dsb	sy
c039fdd8:	e3c55b01 	bic	r5, r5, #1024	; 0x400
c039fddc:	e3c5500d 	bic	r5, r5, #13
c039fde0:	f57ff04e 	dsb	st
c039fde4:	ebf5c612 	bl	c0111634 <arm_heavy_mb>
c039fde8:	e5885000 	str	r5, [r8]
c039fdec:	e307a4dc 	movw	sl, #29916	; 0x74dc
c039fdf0:	e30c9cc1 	movw	r9, #52417	; 0xccc1
c039fdf4:	e34ca05a 	movt	sl, #49242	; 0xc05a
c039fdf8:	e34094cc 	movt	r9, #1228	; 0x4cc
c039fdfc:	e3a05080 	mov	r5, #128	; 0x80
c039fe00:	ea000003 	b	c039fe14 <quirk_usb_early_handoff+0x3b8>
c039fe04:	e59a3004 	ldr	r3, [sl, #4]
c039fe08:	e12fff33 	blx	r3
c039fe0c:	e2555001 	subs	r5, r5, #1
c039fe10:	0a0000c2 	beq	c03a0120 <quirk_usb_early_handoff+0x6c4>
c039fe14:	e5963000 	ldr	r3, [r6]
c039fe18:	f57ff04f 	dsb	sy
c039fe1c:	e3130001 	tst	r3, #1
c039fe20:	e1a00009 	mov	r0, r9
c039fe24:	0afffff6 	beq	c039fe04 <quirk_usb_early_handoff+0x3a8>
c039fe28:	e1a00007 	mov	r0, r7
c039fe2c:	ebf5c782 	bl	c0111c3c <iounmap>
c039fe30:	eaffff2a 	b	c039fae0 <quirk_usb_early_handoff+0x84>
c039fe34:	e3500000 	cmp	r0, #0
c039fe38:	e0833100 	add	r3, r3, r0, lsl #2
c039fe3c:	0affffcb 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
c039fe40:	e0878003 	add	r8, r7, r3
c039fe44:	e5982000 	ldr	r2, [r8]
c039fe48:	f57ff04f 	dsb	sy
c039fe4c:	e3720001 	cmn	r2, #1
c039fe50:	e6ef1072 	uxtb	r1, r2
c039fe54:	e7e70452 	ubfx	r0, r2, #8, #8
c039fe58:	0affffc4 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
c039fe5c:	e2411001 	sub	r1, r1, #1
c039fe60:	e3530000 	cmp	r3, #0
c039fe64:	e16f1f11 	clz	r1, r1
c039fe68:	e1a012a1 	lsr	r1, r1, #5
c039fe6c:	03a01000 	moveq	r1, #0
c039fe70:	e3510000 	cmp	r1, #0
c039fe74:	0affffee 	beq	c039fe34 <quirk_usb_early_handoff+0x3d8>
c039fe78:	e2835004 	add	r5, r3, #4
c039fe7c:	e1550006 	cmp	r5, r6
c039fe80:	8a0000ae 	bhi	c03a0140 <quirk_usb_early_handoff+0x6e4>
c039fe84:	e598a000 	ldr	sl, [r8]
c039fe88:	f57ff04f 	dsb	sy
c039fe8c:	e5942020 	ldr	r2, [r4, #32]
c039fe90:	e301104c 	movw	r1, #4172	; 0x104c
c039fe94:	e3013912 	movw	r3, #6418	; 0x1912
c039fe98:	e3481241 	movt	r1, #33345	; 0x8241
c039fe9c:	e3403014 	movt	r3, #20
c039fea0:	e1520003 	cmp	r2, r3
c039fea4:	11520001 	cmpne	r2, r1
c039fea8:	0a0000ac 	beq	c03a0160 <quirk_usb_early_handoff+0x704>
c039feac:	e31a0801 	tst	sl, #65536	; 0x10000
c039feb0:	1a0000b1 	bne	c03a017c <quirk_usb_early_handoff+0x720>
c039feb4:	e0875005 	add	r5, r7, r5
c039feb8:	e5956000 	ldr	r6, [r5]
c039febc:	f57ff04f 	dsb	sy
c039fec0:	e3012fee 	movw	r2, #8174	; 0x1fee
c039fec4:	e340200e 	movt	r2, #14
c039fec8:	e0022006 	and	r2, r2, r6
c039fecc:	e382620e 	orr	r6, r2, #-536870912	; 0xe0000000
c039fed0:	f57ff04e 	dsb	st
c039fed4:	ebf5c5d6 	bl	c0111634 <arm_heavy_mb>
c039fed8:	e5856000 	str	r6, [r5]
c039fedc:	eaffffa3 	b	c039fd70 <quirk_usb_early_handoff+0x314>
c039fee0:	e1a03002 	mov	r3, r2
c039fee4:	e594101c 	ldr	r1, [r4, #28]
c039fee8:	e2862003 	add	r2, r6, #3
c039feec:	e5940008 	ldr	r0, [r4, #8]
c039fef0:	ebfd6267 	bl	c02f8894 <pci_bus_write_config_byte>
c039fef4:	e59d300c 	ldr	r3, [sp, #12]
c039fef8:	e2133801 	ands	r3, r3, #65536	; 0x10000
c039fefc:	0affff6a 	beq	c039fcac <quirk_usb_early_handoff+0x250>
c039ff00:	e3a05064 	mov	r5, #100	; 0x64
c039ff04:	ea000001 	b	c039ff10 <quirk_usb_early_handoff+0x4b4>
c039ff08:	e2555001 	subs	r5, r5, #1
c039ff0c:	0a000013 	beq	c039ff60 <quirk_usb_early_handoff+0x504>
c039ff10:	e3a0000a 	mov	r0, #10
c039ff14:	ebf734be 	bl	c016d214 <msleep>
c039ff18:	e1a02006 	mov	r2, r6
c039ff1c:	e28d300c 	add	r3, sp, #12
c039ff20:	e594101c 	ldr	r1, [r4, #28]
c039ff24:	e5940008 	ldr	r0, [r4, #8]
c039ff28:	ebfd6235 	bl	c02f8804 <pci_bus_read_config_dword>
c039ff2c:	e59d200c 	ldr	r2, [sp, #12]
c039ff30:	e3120801 	tst	r2, #65536	; 0x10000
c039ff34:	1afffff3 	bne	c039ff08 <quirk_usb_early_handoff+0x4ac>
c039ff38:	e2862004 	add	r2, r6, #4
c039ff3c:	e3a03000 	mov	r3, #0
c039ff40:	e594101c 	ldr	r1, [r4, #28]
c039ff44:	e5940008 	ldr	r0, [r4, #8]
c039ff48:	ebfd66ab 	bl	c02f99fc <pci_bus_write_config_dword>
c039ff4c:	f57ff04e 	dsb	st
c039ff50:	ebf5c5b7 	bl	c0111634 <arm_heavy_mb>
c039ff54:	e3a03000 	mov	r3, #0
c039ff58:	e5883040 	str	r3, [r8, #64]	; 0x40
c039ff5c:	eaffff56 	b	c039fcbc <quirk_usb_early_handoff+0x260>
c039ff60:	e1a0000a 	mov	r0, sl
c039ff64:	e59d1004 	ldr	r1, [sp, #4]
c039ff68:	ebfeb3f0 	bl	c034cf30 <dev_warn>
c039ff6c:	e1a03005 	mov	r3, r5
c039ff70:	e2862002 	add	r2, r6, #2
c039ff74:	e594101c 	ldr	r1, [r4, #28]
c039ff78:	e5940008 	ldr	r0, [r4, #8]
c039ff7c:	ebfd6244 	bl	c02f8894 <pci_bus_write_config_byte>
c039ff80:	eaffffec 	b	c039ff38 <quirk_usb_early_handoff+0x4dc>
c039ff84:	e3072c20 	movw	r2, #31776	; 0x7c20
c039ff88:	e3080b30 	movw	r0, #35632	; 0x8b30
c039ff8c:	e34c2059 	movt	r2, #49241	; 0xc059
c039ff90:	e34c0057 	movt	r0, #49239	; 0xc057
c039ff94:	e2841068 	add	r1, r4, #104	; 0x68
c039ff98:	ebfeb37a 	bl	c034cd88 <dev_printk>
c039ff9c:	e2886004 	add	r6, r8, #4
c039ffa0:	e5983004 	ldr	r3, [r8, #4]
c039ffa4:	f57ff04f 	dsb	sy
c039ffa8:	e3130a01 	tst	r3, #4096	; 0x1000
c039ffac:	0a000037 	beq	c03a0090 <quirk_usb_early_handoff+0x634>
c039ffb0:	f57ff04e 	dsb	st
c039ffb4:	ebf5c59e 	bl	c0111634 <arm_heavy_mb>
c039ffb8:	e3a03000 	mov	r3, #0
c039ffbc:	e5883008 	str	r3, [r8, #8]
c039ffc0:	f57ff04e 	dsb	st
c039ffc4:	ebf5c59a 	bl	c0111634 <arm_heavy_mb>
c039ffc8:	e3a0303f 	mov	r3, #63	; 0x3f
c039ffcc:	e5883004 	str	r3, [r8, #4]
c039ffd0:	e1a0000b 	mov	r0, fp
c039ffd4:	ebf5c718 	bl	c0111c3c <iounmap>
c039ffd8:	eafffec0 	b	c039fae0 <quirk_usb_early_handoff+0x84>
c039ffdc:	e0840280 	add	r0, r4, r0, lsl #5
c039ffe0:	e590116c 	ldr	r1, [r0, #364]	; 0x16c
c039ffe4:	e3510000 	cmp	r1, #0
c039ffe8:	0afffebc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
c039ffec:	e1a00004 	mov	r0, r4
c039fff0:	ebfffe40 	bl	c039f8f8 <uhci_check_and_reset_hc>
c039fff4:	eafffeb9 	b	c039fae0 <quirk_usb_early_handoff+0x84>
c039fff8:	f57ff04e 	dsb	st
c039fffc:	ebf5c58c 	bl	c0111634 <arm_heavy_mb>
c03a0000:	e588a034 	str	sl, [r8, #52]	; 0x34
c03a0004:	eaffff03 	b	c039fc18 <quirk_usb_early_handoff+0x1bc>
c03a0008:	f57ff04e 	dsb	st
c03a000c:	ebf5c588 	bl	c0111634 <arm_heavy_mb>
c03a0010:	e20aac02 	and	sl, sl, #512	; 0x200
c03a0014:	e588a004 	str	sl, [r8, #4]
c03a0018:	e5983004 	ldr	r3, [r8, #4]
c03a001c:	f57ff04f 	dsb	sy
c03a0020:	e3a00032 	mov	r0, #50	; 0x32
c03a0024:	ebf7347a 	bl	c016d214 <msleep>
c03a0028:	eafffedc 	b	c039fba0 <quirk_usb_early_handoff+0x144>
c03a002c:	f57ff04e 	dsb	st
c03a0030:	ebf5c57f 	bl	c0111634 <arm_heavy_mb>
c03a0034:	e3a03101 	mov	r3, #1073741824	; 0x40000000
c03a0038:	e5883010 	str	r3, [r8, #16]
c03a003c:	f57ff04e 	dsb	st
c03a0040:	ebf5c57b 	bl	c0111634 <arm_heavy_mb>
c03a0044:	e2886008 	add	r6, r8, #8
c03a0048:	e3a03008 	mov	r3, #8
c03a004c:	e5883008 	str	r3, [r8, #8]
c03a0050:	e3a05032 	mov	r5, #50	; 0x32
c03a0054:	e5973000 	ldr	r3, [r7]
c03a0058:	f57ff04f 	dsb	sy
c03a005c:	e3130c01 	tst	r3, #256	; 0x100
c03a0060:	e3a0000a 	mov	r0, #10
c03a0064:	0afffec7 	beq	c039fb88 <quirk_usb_early_handoff+0x12c>
c03a0068:	ebf73469 	bl	c016d214 <msleep>
c03a006c:	e2555001 	subs	r5, r5, #1
c03a0070:	1afffff7 	bne	c03a0054 <quirk_usb_early_handoff+0x5f8>
c03a0074:	e5982004 	ldr	r2, [r8, #4]
c03a0078:	f57ff04f 	dsb	sy
c03a007c:	e3071bc8 	movw	r1, #31688	; 0x7bc8
c03a0080:	e2840068 	add	r0, r4, #104	; 0x68
c03a0084:	e34c1059 	movt	r1, #49241	; 0xc059
c03a0088:	ebfeb3a8 	bl	c034cf30 <dev_warn>
c03a008c:	eafffebd 	b	c039fb88 <quirk_usb_early_handoff+0x12c>
c03a0090:	e5985000 	ldr	r5, [r8]
c03a0094:	f57ff04f 	dsb	sy
c03a0098:	e3c55001 	bic	r5, r5, #1
c03a009c:	f57ff04e 	dsb	st
c03a00a0:	ebf5c563 	bl	c0111634 <arm_heavy_mb>
c03a00a4:	e5885000 	str	r5, [r8]
c03a00a8:	e30774dc 	movw	r7, #29916	; 0x74dc
c03a00ac:	e3009a34 	movw	r9, #2612	; 0xa34
c03a00b0:	e34c705a 	movt	r7, #49242	; 0xc05a
c03a00b4:	e34093d7 	movt	r9, #983	; 0x3d7
c03a00b8:	e3a05e7d 	mov	r5, #2000	; 0x7d0
c03a00bc:	e3a0a03f 	mov	sl, #63	; 0x3f
c03a00c0:	f57ff04e 	dsb	st
c03a00c4:	ebf5c55a 	bl	c0111634 <arm_heavy_mb>
c03a00c8:	e586a000 	str	sl, [r6]
c03a00cc:	e5973004 	ldr	r3, [r7, #4]
c03a00d0:	e1a00009 	mov	r0, r9
c03a00d4:	e12fff33 	blx	r3
c03a00d8:	e2455064 	sub	r5, r5, #100	; 0x64
c03a00dc:	e5963000 	ldr	r3, [r6]
c03a00e0:	f57ff04f 	dsb	sy
c03a00e4:	e3730001 	cmn	r3, #1
c03a00e8:	e2232a01 	eor	r2, r3, #4096	; 0x1000
c03a00ec:	0affffaf 	beq	c039ffb0 <quirk_usb_early_handoff+0x554>
c03a00f0:	e2953000 	adds	r3, r5, #0
c03a00f4:	13a03001 	movne	r3, #1
c03a00f8:	e0133622 	ands	r3, r3, r2, lsr #12
c03a00fc:	1affffef 	bne	c03a00c0 <quirk_usb_early_handoff+0x664>
c03a0100:	eaffffaa 	b	c039ffb0 <quirk_usb_early_handoff+0x554>
c03a0104:	e5982004 	ldr	r2, [r8, #4]
c03a0108:	f57ff04f 	dsb	sy
c03a010c:	e3071c64 	movw	r1, #31844	; 0x7c64
c03a0110:	e2840068 	add	r0, r4, #104	; 0x68
c03a0114:	e34c1059 	movt	r1, #49241	; 0xc059
c03a0118:	ebfeb384 	bl	c034cf30 <dev_warn>
c03a011c:	eaffff2b 	b	c039fdd0 <quirk_usb_early_handoff+0x374>
c03a0120:	e5983004 	ldr	r3, [r8, #4]
c03a0124:	f57ff04f 	dsb	sy
c03a0128:	e3071c9c 	movw	r1, #31900	; 0x7c9c
c03a012c:	e2840068 	add	r0, r4, #104	; 0x68
c03a0130:	e34c1059 	movt	r1, #49241	; 0xc059
c03a0134:	e3a02dfa 	mov	r2, #16000	; 0x3e80
c03a0138:	ebfeb37c 	bl	c034cf30 <dev_warn>
c03a013c:	eaffff39 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
c03a0140:	e3071ba4 	movw	r1, #31652	; 0x7ba4
c03a0144:	e2840068 	add	r0, r4, #104	; 0x68
c03a0148:	e34c1059 	movt	r1, #49241	; 0xc059
c03a014c:	ebfeb377 	bl	c034cf30 <dev_warn>
c03a0150:	eaffff34 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
c03a0154:	e1a00004 	mov	r0, r4
c03a0158:	ebfffe1c 	bl	c039f9d0 <usb_enable_intel_xhci_ports>
c03a015c:	eaffff07 	b	c039fd80 <quirk_usb_early_handoff+0x324>
c03a0160:	e3caa401 	bic	sl, sl, #16777216	; 0x1000000
c03a0164:	e3caa801 	bic	sl, sl, #65536	; 0x10000
c03a0168:	e38aa401 	orr	sl, sl, #16777216	; 0x1000000
c03a016c:	f57ff04e 	dsb	st
c03a0170:	ebf5c52f 	bl	c0111634 <arm_heavy_mb>
c03a0174:	e588a000 	str	sl, [r8]
c03a0178:	eaffff4b 	b	c039feac <quirk_usb_early_handoff+0x450>
c03a017c:	f57ff04e 	dsb	st
c03a0180:	ebf5c52b 	bl	c0111634 <arm_heavy_mb>
c03a0184:	e38a3401 	orr	r3, sl, #16777216	; 0x1000000
c03a0188:	e5883000 	str	r3, [r8]
c03a018c:	e307b4dc 	movw	fp, #29916	; 0x74dc
c03a0190:	e3049dd2 	movw	r9, #19922	; 0x4dd2
c03a0194:	e34cb05a 	movt	fp, #49242	; 0xc05a
c03a0198:	e3409062 	movt	r9, #98	; 0x62
c03a019c:	e3a06f7d 	mov	r6, #500	; 0x1f4
c03a01a0:	e5983000 	ldr	r3, [r8]
c03a01a4:	f57ff04f 	dsb	sy
c03a01a8:	e3130801 	tst	r3, #65536	; 0x10000
c03a01ac:	e1a00009 	mov	r0, r9
c03a01b0:	0affff3f 	beq	c039feb4 <quirk_usb_early_handoff+0x458>
c03a01b4:	e59b3004 	ldr	r3, [fp, #4]
c03a01b8:	e12fff33 	blx	r3
c03a01bc:	e2566001 	subs	r6, r6, #1
c03a01c0:	1afffff6 	bne	c03a01a0 <quirk_usb_early_handoff+0x744>
c03a01c4:	e3071c38 	movw	r1, #31800	; 0x7c38
c03a01c8:	e1a0200a 	mov	r2, sl
c03a01cc:	e34c1059 	movt	r1, #49241	; 0xc059
c03a01d0:	e2840068 	add	r0, r4, #104	; 0x68
c03a01d4:	ebfeb355 	bl	c034cf30 <dev_warn>
c03a01d8:	f57ff04e 	dsb	st
c03a01dc:	ebf5c514 	bl	c0111634 <arm_heavy_mb>
c03a01e0:	e3caa801 	bic	sl, sl, #65536	; 0x10000
c03a01e4:	e588a000 	str	sl, [r8]
c03a01e8:	eaffff31 	b	c039feb4 <quirk_usb_early_handoff+0x458>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-06 12:42       ` Mason
@ 2017-03-06 13:49         ` Mason
  2017-03-06 15:27           ` David Laight
  2017-03-06 14:30           ` Robin Murphy
  1 sibling, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-06 13:49 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/03/2017 13:42, Mason wrote:

> So the kernel panics in xhci_find_next_ext_cap()
> ( drivers/usb/host/xhci-ext-caps.h:122 )
> http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122
> 
> Any idea how this can happen?
> 
> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> 
> Could I be passing garbage to ioremap_nocache?

Oh...

I have just now understood what Ard wrote a few days ago.

The issue was that, on this platform, the PCI configuration space
and memory space are multiplexed; in other words they reside at
the same physical address, with a bit in MMIO to choose one or
the other.

I was specifying an arbitrary address for the memory space,
which doesn't make any sense, as Ard pointed out.

So quirk_usb_handoff_xhci would ioremap(0x91000000, 8192)
which is the size of the USB device's memory region, but
0x91000000 is an address in system RAM. Thus, the readl
was actually picking up random garbage in RAM, which
makes xhci_find_next_ext_cap blow up pretty fast.

[    1.265224] xhci_find_next_ext_cap: offset=0xec44

I'm off to fix my blunder.

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Panic in quirk_usb_early_handoff
  2017-03-06 12:42       ` Mason
@ 2017-03-06 14:30           ` Robin Murphy
  2017-03-06 14:30           ` Robin Murphy
  1 sibling, 0 replies; 21+ messages in thread
From: Robin Murphy @ 2017-03-06 14:30 UTC (permalink / raw)
  To: Mason, linux-usb, Linux ARM, linux-pci
  Cc: Thibaud Cornic, Alan Stern, Ard Biesheuvel

[+linux-pci, just in case]

On 06/03/17 12:42, Mason wrote:
> On 03/03/2017 20:02, Robin Murphy wrote:
> 
>> On 03/03/17 17:15, Mason wrote:
>>
>>>>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
>>
>> Note that that's a reasonable approximation of a vmalloc address...
>>
>>>>> [    1.272248] pgd = c0004000
>>>>> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>>> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>>> [    1.286897] Modules linked in:
>>>>> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
>>>>> [    1.296696] Hardware name: Sigma Tango DT
>>>>> [    1.300808] task: cf82c9c0 task.stack: cf838000
>>>>> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>>> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
>>>>> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
>>>>> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>>> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
>>>>> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
>>>>> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and that specifically it's r0 + r3...
>>
>>>> [    1.258926] Unable to handle kernel paging request at virtual address d0863f70
>>>> [    1.266284] pgd = c0004000
>>>> [    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>> [    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>> [    1.280933] Modules linked in:
>>>> [    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>>> [    1.290732] Hardware name: Sigma Tango DT
>>>> [    1.294843] task: cf82c9c0 task.stack: cf838000
>>>> [    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>> [    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
>>>> [    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>>> [    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>> [    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
>>>> [    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
>>>> [    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and again...
>>
>>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>> [    1.269167] pgd = c0004000
>>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [    1.283815] Modules linked in:
>>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>> [    1.293614] Hardware name: Sigma Tango DT
>>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and again. And always at the same PC, too. Looking at
>> quirk_usb_early_handoff(), it mostly seems to go off poking bridge
>> resources, so I'd hazard a guess that it's down to your host driver,
>> with something uninitialised (or already freed) being used as an offset
>> into some ioremapped resource (which given the consistency of r0 is
>> probably allocated pretty early on).
>>
>> "addr2line -i -e vmlinux c039fe44", and work backwards from there ;)
>> In particular I'd follow the provenance of r3.
> 
> Starting from a fresh panic:
> 
> [    1.236243] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
> [    1.242474] pcieport 0000:00:00.0: enabling bus mastering
> [    1.248147] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
> [    1.254904] pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    1.260719] Unable to handle kernel paging request at virtual address d08509f8
> [    1.268073] pgd = c0004000
> [    1.270874] [d08509f8] *pgd=8f804811, *pte=00000000, *ppte=00000000
> [    1.277282] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> [    1.282702] Modules linked in:
> [    1.285858] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #2
> [    1.292327] Hardware name: Sigma Tango DT
> [    1.296438] task: cf82c9c0 task.stack: cf838000
> [    1.301076] PC is at quirk_usb_early_handoff+0x3e8/0x790
> [    1.306501] LR is at ioremap_page_range+0xf8/0x1a8
> [    1.311400] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
> [    1.311400] sp : cf839d78  ip : 00000000  fp : cf839e38
> [    1.323110] r10: c10248a0  r9 : 00000000  r8 : d08509f8
> [    1.328444] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
> [    1.335087] r3 : 000029f8  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> [    1.341732] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [    1.348987] Control: 10c5387d  Table: 8faa004a  DAC: 00000051
> [    1.354844] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
> [    1.360963] Stack: (0xcf839d78 to 0xcf83a000)
> [    1.365424] 9d60:                                                       c058f56c c058b174
> [    1.373730] 9d80: cfb55240 cf839d98 c03501cc c05adcc4 cfb5f800 c05adcd4 cf838000 00000000
> [    1.382036] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf889200 c034e650 cf867270 00000000
> [    1.390342] 9dc0: cfb5f800 cf999414 cf999400 cf839e30 cf889200 00000000 cf906010 c02fa484
> [    1.398648] 9de0: cfb5f800 cf999414 cf999400 c02fa538 cfb5fc00 cf999814 cf999800 c02fa56c
> [    1.406953] 9e00: cf99980c cf99980c cf999800 c0313830 cf839e30 cf9929b0 c05178b0 c10101d8
> [    1.415259] 9e20: cf881780 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
> [    1.423564] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
> [    1.431869] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
> [    1.440175] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
> [    1.448481] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
> [    1.456787] 9ec0: c1010208 cf9a5f00 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
> [    1.465093] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
> [    1.473399] 9f00: 00000069 cf839f20 c013291c c02d4f10 20000000 ffffffff 00000051 00000000
> [    1.481704] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
> [    1.490010] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
> [    1.498315] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
> [    1.506620] 9f80: 58fe5add 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
> [    1.514925] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
> [    1.523230] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    1.531536] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 88719a14 4a5337f3
> [    1.539858] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
> [    1.548699] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
> [    1.557008] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
> [    1.565839] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
> [    1.574761] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
> [    1.583948] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
> [    1.592957] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
> [    1.601353] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
> [    1.609311] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
> [    1.617618] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
> [    1.626013] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
> [    1.634147] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
> [    1.642463] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
> [    1.651296] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
> [    1.659607] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
> [    1.667302] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
> [    1.673545] ---[ end trace c146f95bb6e22b24 ]---
> [    1.678294] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    1.678294] 
> [    1.687652] CPU1: stopping
> [    1.690457] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #2
> [    1.698148] Hardware name: Sigma Tango DT
> [    1.702276] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
> [    1.710148] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
> [    1.717495] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
> [    1.725016] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
> [    1.732710] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
> [    1.740314] Exception stack(0xcf859f98 to 0xcf859fe0)
> [    1.745474] 9f80:                                                       00000001 00000000
> [    1.753779] 9fa0: 0000196e c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
> [    1.762085] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
> [    1.770392] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
> [    1.777918] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
> [    1.786227] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
> [    1.793311] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> 
> 
> $ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44
> arch/arm/include/asm/io.h:119
> 
> In other words, readl()
> Not as helpful as expected...

I guess your toolchain isn't generating whatever debug info that -i uses
to show where it was actually inlined, shame.

> AFAICT, quirk_usb_handoff_xhci() is inlined at c039fd18
> 
> and c039fd48 is likely
> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> http://lxr.free-electrons.com/source/drivers/usb/host/pci-quirks.c?v=4.9#L978
> 
> Panic seems to occur in
> ext_cap_offset = xhci_find_next_ext_cap(base, 0, XHCI_EXT_CAPS_LEGACY);
> 
> c039fd54:	e5973010 	ldr	r3, [r7, #16]
> c039fd58:	f57ff04f 	dsb	sy
> c039fd5c:	e3730001 	cmn	r3, #1
> c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> 
> 		val = readl(base + XHCI_HCC_PARAMS_OFFSET);
> 		if (val == ~0)
> 			return 0;
> 
> At this point, r7 is base.
> 
> c039fd64:	e1a03823 	lsr	r3, r3, #16
> c039fd68:	e1b03103 	lsls	r3, r3, #2
> c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>
> 
> 		offset = XHCI_HCC_EXT_CAPS(val) << 2;
> 		if (!offset)
> 			return 0;
> 
> At this point, r3 is XHCI_HCC_EXT_CAPS(val) << 2
> 
> 	do {
> 		val = readl(base + offset);
> 		if (val == ~0)
> 			return 0;
> 
> c039fe40:	e0878003 	add	r8, r7, r3
> c039fe44:	e5982000 	ldr	r2, [r8]
> 
> r8 = r7 + r3 = base + offset;
> 
> So the kernel panics in xhci_find_next_ext_cap()
> ( drivers/usb/host/xhci-ext-caps.h:122 )
> http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122
> 
> Any idea how this can happen?
> 
> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> 
> Could I be passing garbage to ioremap_nocache?

For reference, from your original log:

[    1.118433] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[    1.125385] pci_bus 0000:01: scanning bus
[    1.129557] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
[    1.135727] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
[    1.142730] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40

Put together, if I'm skimming unfamiliar XHCI code and docs correctly,
this would imply that a supposed read of the HCC Parameters register
claimed that the extended capabilities register was at offset 0x29f8
into a 0x2000-long BAR. That does suggest that whatever's being accessed
through that ioremap() isn't actually the contents of BAR 0 at all (said
field should apparently read as 0x140 representing an offset of 0x500).
You're not still trying have your PCI host controller place its
MEM-space window over the top of system RAM, are you? Otherwise, I'd be
inclined to double check that your config space accesses and resource
assignment are producing sane values.

I think that's about as far as I can go, 'cause by this point I know a
lot less than it might sound like I do ;)

Robin.

> 
> Regards.
> 
> 
> 
> Full disassembly below, for my own reference.
> 
> c039fa5c <quirk_usb_early_handoff>:
> c039fa5c:	e1d022b0 	ldrh	r2, [r0, #32]
> c039fa60:	e301384e 	movw	r3, #6222	; 0x184e
> c039fa64:	e1520003 	cmp	r2, r3
> c039fa68:	012fff1e 	bxeq	lr
> c039fa6c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}
> c039fa70:	e3a03c03 	mov	r3, #768	; 0x300
> c039fa74:	e5905028 	ldr	r5, [r0, #40]	; 0x28
> c039fa78:	e340300c 	movt	r3, #12
> c039fa7c:	e24dd014 	sub	sp, sp, #20
> c039fa80:	e1a04000 	mov	r4, r0
> c039fa84:	e3c55030 	bic	r5, r5, #48	; 0x30
> c039fa88:	e1550003 	cmp	r5, r3
> c039fa8c:	0a000001 	beq	c039fa98 <quirk_usb_early_handoff+0x3c>
> c039fa90:	e28dd014 	add	sp, sp, #20
> c039fa94:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
> c039fa98:	ebfd890d 	bl	c0301ed4 <pci_enable_device>
> c039fa9c:	e3500000 	cmp	r0, #0
> c039faa0:	ba000097 	blt	c039fd04 <quirk_usb_early_handoff+0x2a8>
> c039faa4:	e5943028 	ldr	r3, [r4, #40]	; 0x28
> c039faa8:	e1530005 	cmp	r3, r5
> c039faac:	0a00000f 	beq	c039faf0 <quirk_usb_early_handoff+0x94>
> c039fab0:	e3a02e31 	mov	r2, #784	; 0x310
> c039fab4:	e340200c 	movt	r2, #12
> c039fab8:	e1530002 	cmp	r3, r2
> c039fabc:	0a00001e 	beq	c039fb3c <quirk_usb_early_handoff+0xe0>
> c039fac0:	e3a02e32 	mov	r2, #800	; 0x320
> c039fac4:	e340200c 	movt	r2, #12
> c039fac8:	e1530002 	cmp	r3, r2
> c039facc:	0a000054 	beq	c039fc24 <quirk_usb_early_handoff+0x1c8>
> c039fad0:	e3a02e33 	mov	r2, #816	; 0x330
> c039fad4:	e340200c 	movt	r2, #12
> c039fad8:	e1530002 	cmp	r3, r2
> c039fadc:	0a00008d 	beq	c039fd18 <quirk_usb_early_handoff+0x2bc>
> c039fae0:	e1a00004 	mov	r0, r4
> c039fae4:	ebfd846d 	bl	c0300ca0 <pci_disable_device>
> c039fae8:	e28dd014 	add	sp, sp, #20
> c039faec:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
> c039faf0:	e28d300c 	add	r3, sp, #12
> c039faf4:	e3a02004 	mov	r2, #4
> c039faf8:	e594101c 	ldr	r1, [r4, #28]
> c039fafc:	e5940008 	ldr	r0, [r4, #8]
> c039fb00:	ebfd631b 	bl	c02f8774 <pci_bus_read_config_word>
> c039fb04:	e3500000 	cmp	r0, #0
> c039fb08:	1afffff4 	bne	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb0c:	e1dd30bc 	ldrh	r3, [sp, #12]
> c039fb10:	e3130001 	tst	r3, #1
> c039fb14:	0afffff1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb18:	e1a03004 	mov	r3, r4
> c039fb1c:	e5932178 	ldr	r2, [r3, #376]	; 0x178
> c039fb20:	e2833020 	add	r3, r3, #32
> c039fb24:	e3120c01 	tst	r2, #256	; 0x100
> c039fb28:	1a00012b 	bne	c039ffdc <quirk_usb_early_handoff+0x580>
> c039fb2c:	e2800001 	add	r0, r0, #1
> c039fb30:	e3500006 	cmp	r0, #6
> c039fb34:	1afffff8 	bne	c039fb1c <quirk_usb_early_handoff+0xc0>
> c039fb38:	eaffffe8 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb3c:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fb40:	e3530000 	cmp	r3, #0
> c039fb44:	0affffe5 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb48:	e1a00004 	mov	r0, r4
> c039fb4c:	ebffff8f 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fb50:	e3500000 	cmp	r0, #0
> c039fb54:	0affffe1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb58:	e3a01000 	mov	r1, #0
> c039fb5c:	e1a00004 	mov	r0, r4
> c039fb60:	ebfd7875 	bl	c02fdd3c <pci_ioremap_bar>
> c039fb64:	e2508000 	subs	r8, r0, #0
> c039fb68:	0affffdc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb6c:	e5949020 	ldr	r9, [r4, #32]
> c039fb70:	e2887004 	add	r7, r8, #4
> c039fb74:	e598a004 	ldr	sl, [r8, #4]
> c039fb78:	f57ff04f 	dsb	sy
> c039fb7c:	e31a0c01 	tst	sl, #256	; 0x100
> c039fb80:	02886008 	addeq	r6, r8, #8
> c039fb84:	1a000128 	bne	c03a002c <quirk_usb_early_handoff+0x5d0>
> c039fb88:	f57ff04e 	dsb	st
> c039fb8c:	ebf5c6a8 	bl	c0111634 <arm_heavy_mb>
> c039fb90:	e3e03000 	mvn	r3, #0
> c039fb94:	e5883014 	str	r3, [r8, #20]
> c039fb98:	e31a00c0 	tst	sl, #192	; 0xc0
> c039fb9c:	1a000119 	bne	c03a0008 <quirk_usb_early_handoff+0x5ac>
> c039fba0:	e30130b9 	movw	r3, #4281	; 0x10b9
> c039fba4:	e3453237 	movt	r3, #21047	; 0x5237
> c039fba8:	e1590003 	cmp	r9, r3
> c039fbac:	03a0a000 	moveq	sl, #0
> c039fbb0:	0a000001 	beq	c039fbbc <quirk_usb_early_handoff+0x160>
> c039fbb4:	e598a034 	ldr	sl, [r8, #52]	; 0x34
> c039fbb8:	f57ff04f 	dsb	sy
> c039fbbc:	f57ff04e 	dsb	st
> c039fbc0:	ebf5c69b 	bl	c0111634 <arm_heavy_mb>
> c039fbc4:	e3a03001 	mov	r3, #1
> c039fbc8:	e5863000 	str	r3, [r6]
> c039fbcc:	e307b4dc 	movw	fp, #29916	; 0x74dc
> c039fbd0:	e30d7495 	movw	r7, #54421	; 0xd495
> c039fbd4:	e34cb05a 	movt	fp, #49242	; 0xc05a
> c039fbd8:	e3407009 	movt	r7, #9
> c039fbdc:	e3a0501e 	mov	r5, #30
> c039fbe0:	ea000003 	b	c039fbf4 <quirk_usb_early_handoff+0x198>
> c039fbe4:	e59b3004 	ldr	r3, [fp, #4]
> c039fbe8:	e12fff33 	blx	r3
> c039fbec:	e2555001 	subs	r5, r5, #1
> c039fbf0:	0a000004 	beq	c039fc08 <quirk_usb_early_handoff+0x1ac>
> c039fbf4:	e5963000 	ldr	r3, [r6]
> c039fbf8:	f57ff04f 	dsb	sy
> c039fbfc:	e3130001 	tst	r3, #1
> c039fc00:	e1a00007 	mov	r0, r7
> c039fc04:	1afffff6 	bne	c039fbe4 <quirk_usb_early_handoff+0x188>
> c039fc08:	e30130b9 	movw	r3, #4281	; 0x10b9
> c039fc0c:	e3453237 	movt	r3, #21047	; 0x5237
> c039fc10:	e1590003 	cmp	r9, r3
> c039fc14:	1a0000f7 	bne	c039fff8 <quirk_usb_early_handoff+0x59c>
> c039fc18:	e1a00008 	mov	r0, r8
> c039fc1c:	ebf5c806 	bl	c0111c3c <iounmap>
> c039fc20:	eaffffae 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc24:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fc28:	e3530000 	cmp	r3, #0
> c039fc2c:	0affffab 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc30:	e1a00004 	mov	r0, r4
> c039fc34:	ebffff55 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fc38:	e3500000 	cmp	r0, #0
> c039fc3c:	0affffa7 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc40:	e3a01000 	mov	r1, #0
> c039fc44:	e1a00004 	mov	r0, r4
> c039fc48:	ebfd783b 	bl	c02fdd3c <pci_ioremap_bar>
> c039fc4c:	e250b000 	subs	fp, r0, #0
> c039fc50:	0affffa2 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc54:	e5db8000 	ldrb	r8, [fp]
> c039fc58:	e6ef8078 	uxtb	r8, r8
> c039fc5c:	f57ff04f 	dsb	sy
> c039fc60:	e08b8008 	add	r8, fp, r8
> c039fc64:	e59b6008 	ldr	r6, [fp, #8]
> c039fc68:	f57ff04f 	dsb	sy
> c039fc6c:	e7e76456 	ubfx	r6, r6, #8, #8
> c039fc70:	e3560000 	cmp	r6, #0
> c039fc74:	0a0000c8 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
> c039fc78:	e3073bf4 	movw	r3, #31732	; 0x7bf4
> c039fc7c:	e3079b80 	movw	r9, #31616	; 0x7b80
> c039fc80:	e34c3059 	movt	r3, #49241	; 0xc059
> c039fc84:	e34c9059 	movt	r9, #49241	; 0xc059
> c039fc88:	e58d3004 	str	r3, [sp, #4]
> c039fc8c:	e3a0703f 	mov	r7, #63	; 0x3f
> c039fc90:	e284a068 	add	sl, r4, #104	; 0x68
> c039fc94:	ea00000d 	b	c039fcd0 <quirk_usb_early_handoff+0x274>
> c039fc98:	e3520001 	cmp	r2, #1
> c039fc9c:	1a000014 	bne	c039fcf4 <quirk_usb_early_handoff+0x298>
> c039fca0:	e2113801 	ands	r3, r1, #65536	; 0x10000
> c039fca4:	e58d100c 	str	r1, [sp, #12]
> c039fca8:	1a00008c 	bne	c039fee0 <quirk_usb_early_handoff+0x484>
> c039fcac:	e2862004 	add	r2, r6, #4
> c039fcb0:	e594101c 	ldr	r1, [r4, #28]
> c039fcb4:	e5940008 	ldr	r0, [r4, #8]
> c039fcb8:	ebfd674f 	bl	c02f99fc <pci_bus_write_config_dword>
> c039fcbc:	e5dd6009 	ldrb	r6, [sp, #9]
> c039fcc0:	e3560000 	cmp	r6, #0
> c039fcc4:	0a0000b4 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
> c039fcc8:	e2577001 	subs	r7, r7, #1
> c039fccc:	0a0000ac 	beq	c039ff84 <quirk_usb_early_handoff+0x528>
> c039fcd0:	e1a02006 	mov	r2, r6
> c039fcd4:	e594101c 	ldr	r1, [r4, #28]
> c039fcd8:	e28d3008 	add	r3, sp, #8
> c039fcdc:	e5940008 	ldr	r0, [r4, #8]
> c039fce0:	ebfd62c7 	bl	c02f8804 <pci_bus_read_config_dword>
> c039fce4:	e59d1008 	ldr	r1, [sp, #8]
> c039fce8:	e21120ff 	ands	r2, r1, #255	; 0xff
> c039fcec:	1affffe9 	bne	c039fc98 <quirk_usb_early_handoff+0x23c>
> c039fcf0:	e58d2008 	str	r2, [sp, #8]
> c039fcf4:	e1a01009 	mov	r1, r9
> c039fcf8:	e1a0000a 	mov	r0, sl
> c039fcfc:	ebfeb48b 	bl	c034cf30 <dev_warn>
> c039fd00:	eaffffed 	b	c039fcbc <quirk_usb_early_handoff+0x260>
> c039fd04:	e3071b50 	movw	r1, #31568	; 0x7b50
> c039fd08:	e2840068 	add	r0, r4, #104	; 0x68
> c039fd0c:	e34c1059 	movt	r1, #49241	; 0xc059
> c039fd10:	ebfeb486 	bl	c034cf30 <dev_warn>
> c039fd14:	eaffff5d 	b	c039fa90 <quirk_usb_early_handoff+0x34>
> c039fd18:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fd1c:	e3530000 	cmp	r3, #0
> c039fd20:	0affff6e 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd24:	e5946170 	ldr	r6, [r4, #368]	; 0x170
> c039fd28:	e1a00004 	mov	r0, r4
> c039fd2c:	e2866001 	add	r6, r6, #1
> c039fd30:	e0466003 	sub	r6, r6, r3
> c039fd34:	ebffff15 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fd38:	e3500000 	cmp	r0, #0
> c039fd3c:	0affff67 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd40:	e1a01006 	mov	r1, r6
> c039fd44:	e594016c 	ldr	r0, [r4, #364]	; 0x16c
> c039fd48:	ebf5c865 	bl	c0111ee4 <ioremap>
> c039fd4c:	e2507000 	subs	r7, r0, #0
> c039fd50:	0affff62 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd54:	e5973010 	ldr	r3, [r7, #16]
> c039fd58:	f57ff04f 	dsb	sy
> c039fd5c:	e3730001 	cmn	r3, #1
> c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fd64:	e1a03823 	lsr	r3, r3, #16
> c039fd68:	e1b03103 	lsls	r3, r3, #2
> c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>
> c039fd70:	e1d422b0 	ldrh	r2, [r4, #32]
> c039fd74:	e3083086 	movw	r3, #32902	; 0x8086
> c039fd78:	e1520003 	cmp	r2, r3
> c039fd7c:	0a0000f4 	beq	c03a0154 <quirk_usb_early_handoff+0x6f8>
> c039fd80:	e5978000 	ldr	r8, [r7]
> c039fd84:	f57ff04f 	dsb	sy
> c039fd88:	e6ef8078 	uxtb	r8, r8
> c039fd8c:	e307a4dc 	movw	sl, #29916	; 0x74dc
> c039fd90:	e3049dd2 	movw	r9, #19922	; 0x4dd2
> c039fd94:	e0878008 	add	r8, r7, r8
> c039fd98:	e34ca05a 	movt	sl, #49242	; 0xc05a
> c039fd9c:	e2886004 	add	r6, r8, #4
> c039fda0:	e3409062 	movt	r9, #98	; 0x62
> c039fda4:	e3a05f7d 	mov	r5, #500	; 0x1f4
> c039fda8:	ea000003 	b	c039fdbc <quirk_usb_early_handoff+0x360>
> c039fdac:	e59a3004 	ldr	r3, [sl, #4]
> c039fdb0:	e12fff33 	blx	r3
> c039fdb4:	e2555001 	subs	r5, r5, #1
> c039fdb8:	0a0000d1 	beq	c03a0104 <quirk_usb_early_handoff+0x6a8>
> c039fdbc:	e5963000 	ldr	r3, [r6]
> c039fdc0:	f57ff04f 	dsb	sy
> c039fdc4:	e3130b02 	tst	r3, #2048	; 0x800
> c039fdc8:	e1a00009 	mov	r0, r9
> c039fdcc:	1afffff6 	bne	c039fdac <quirk_usb_early_handoff+0x350>
> c039fdd0:	e5985000 	ldr	r5, [r8]
> c039fdd4:	f57ff04f 	dsb	sy
> c039fdd8:	e3c55b01 	bic	r5, r5, #1024	; 0x400
> c039fddc:	e3c5500d 	bic	r5, r5, #13
> c039fde0:	f57ff04e 	dsb	st
> c039fde4:	ebf5c612 	bl	c0111634 <arm_heavy_mb>
> c039fde8:	e5885000 	str	r5, [r8]
> c039fdec:	e307a4dc 	movw	sl, #29916	; 0x74dc
> c039fdf0:	e30c9cc1 	movw	r9, #52417	; 0xccc1
> c039fdf4:	e34ca05a 	movt	sl, #49242	; 0xc05a
> c039fdf8:	e34094cc 	movt	r9, #1228	; 0x4cc
> c039fdfc:	e3a05080 	mov	r5, #128	; 0x80
> c039fe00:	ea000003 	b	c039fe14 <quirk_usb_early_handoff+0x3b8>
> c039fe04:	e59a3004 	ldr	r3, [sl, #4]
> c039fe08:	e12fff33 	blx	r3
> c039fe0c:	e2555001 	subs	r5, r5, #1
> c039fe10:	0a0000c2 	beq	c03a0120 <quirk_usb_early_handoff+0x6c4>
> c039fe14:	e5963000 	ldr	r3, [r6]
> c039fe18:	f57ff04f 	dsb	sy
> c039fe1c:	e3130001 	tst	r3, #1
> c039fe20:	e1a00009 	mov	r0, r9
> c039fe24:	0afffff6 	beq	c039fe04 <quirk_usb_early_handoff+0x3a8>
> c039fe28:	e1a00007 	mov	r0, r7
> c039fe2c:	ebf5c782 	bl	c0111c3c <iounmap>
> c039fe30:	eaffff2a 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fe34:	e3500000 	cmp	r0, #0
> c039fe38:	e0833100 	add	r3, r3, r0, lsl #2
> c039fe3c:	0affffcb 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fe40:	e0878003 	add	r8, r7, r3
> c039fe44:	e5982000 	ldr	r2, [r8]
> c039fe48:	f57ff04f 	dsb	sy
> c039fe4c:	e3720001 	cmn	r2, #1
> c039fe50:	e6ef1072 	uxtb	r1, r2
> c039fe54:	e7e70452 	ubfx	r0, r2, #8, #8
> c039fe58:	0affffc4 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fe5c:	e2411001 	sub	r1, r1, #1
> c039fe60:	e3530000 	cmp	r3, #0
> c039fe64:	e16f1f11 	clz	r1, r1
> c039fe68:	e1a012a1 	lsr	r1, r1, #5
> c039fe6c:	03a01000 	moveq	r1, #0
> c039fe70:	e3510000 	cmp	r1, #0
> c039fe74:	0affffee 	beq	c039fe34 <quirk_usb_early_handoff+0x3d8>
> c039fe78:	e2835004 	add	r5, r3, #4
> c039fe7c:	e1550006 	cmp	r5, r6
> c039fe80:	8a0000ae 	bhi	c03a0140 <quirk_usb_early_handoff+0x6e4>
> c039fe84:	e598a000 	ldr	sl, [r8]
> c039fe88:	f57ff04f 	dsb	sy
> c039fe8c:	e5942020 	ldr	r2, [r4, #32]
> c039fe90:	e301104c 	movw	r1, #4172	; 0x104c
> c039fe94:	e3013912 	movw	r3, #6418	; 0x1912
> c039fe98:	e3481241 	movt	r1, #33345	; 0x8241
> c039fe9c:	e3403014 	movt	r3, #20
> c039fea0:	e1520003 	cmp	r2, r3
> c039fea4:	11520001 	cmpne	r2, r1
> c039fea8:	0a0000ac 	beq	c03a0160 <quirk_usb_early_handoff+0x704>
> c039feac:	e31a0801 	tst	sl, #65536	; 0x10000
> c039feb0:	1a0000b1 	bne	c03a017c <quirk_usb_early_handoff+0x720>
> c039feb4:	e0875005 	add	r5, r7, r5
> c039feb8:	e5956000 	ldr	r6, [r5]
> c039febc:	f57ff04f 	dsb	sy
> c039fec0:	e3012fee 	movw	r2, #8174	; 0x1fee
> c039fec4:	e340200e 	movt	r2, #14
> c039fec8:	e0022006 	and	r2, r2, r6
> c039fecc:	e382620e 	orr	r6, r2, #-536870912	; 0xe0000000
> c039fed0:	f57ff04e 	dsb	st
> c039fed4:	ebf5c5d6 	bl	c0111634 <arm_heavy_mb>
> c039fed8:	e5856000 	str	r6, [r5]
> c039fedc:	eaffffa3 	b	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fee0:	e1a03002 	mov	r3, r2
> c039fee4:	e594101c 	ldr	r1, [r4, #28]
> c039fee8:	e2862003 	add	r2, r6, #3
> c039feec:	e5940008 	ldr	r0, [r4, #8]
> c039fef0:	ebfd6267 	bl	c02f8894 <pci_bus_write_config_byte>
> c039fef4:	e59d300c 	ldr	r3, [sp, #12]
> c039fef8:	e2133801 	ands	r3, r3, #65536	; 0x10000
> c039fefc:	0affff6a 	beq	c039fcac <quirk_usb_early_handoff+0x250>
> c039ff00:	e3a05064 	mov	r5, #100	; 0x64
> c039ff04:	ea000001 	b	c039ff10 <quirk_usb_early_handoff+0x4b4>
> c039ff08:	e2555001 	subs	r5, r5, #1
> c039ff0c:	0a000013 	beq	c039ff60 <quirk_usb_early_handoff+0x504>
> c039ff10:	e3a0000a 	mov	r0, #10
> c039ff14:	ebf734be 	bl	c016d214 <msleep>
> c039ff18:	e1a02006 	mov	r2, r6
> c039ff1c:	e28d300c 	add	r3, sp, #12
> c039ff20:	e594101c 	ldr	r1, [r4, #28]
> c039ff24:	e5940008 	ldr	r0, [r4, #8]
> c039ff28:	ebfd6235 	bl	c02f8804 <pci_bus_read_config_dword>
> c039ff2c:	e59d200c 	ldr	r2, [sp, #12]
> c039ff30:	e3120801 	tst	r2, #65536	; 0x10000
> c039ff34:	1afffff3 	bne	c039ff08 <quirk_usb_early_handoff+0x4ac>
> c039ff38:	e2862004 	add	r2, r6, #4
> c039ff3c:	e3a03000 	mov	r3, #0
> c039ff40:	e594101c 	ldr	r1, [r4, #28]
> c039ff44:	e5940008 	ldr	r0, [r4, #8]
> c039ff48:	ebfd66ab 	bl	c02f99fc <pci_bus_write_config_dword>
> c039ff4c:	f57ff04e 	dsb	st
> c039ff50:	ebf5c5b7 	bl	c0111634 <arm_heavy_mb>
> c039ff54:	e3a03000 	mov	r3, #0
> c039ff58:	e5883040 	str	r3, [r8, #64]	; 0x40
> c039ff5c:	eaffff56 	b	c039fcbc <quirk_usb_early_handoff+0x260>
> c039ff60:	e1a0000a 	mov	r0, sl
> c039ff64:	e59d1004 	ldr	r1, [sp, #4]
> c039ff68:	ebfeb3f0 	bl	c034cf30 <dev_warn>
> c039ff6c:	e1a03005 	mov	r3, r5
> c039ff70:	e2862002 	add	r2, r6, #2
> c039ff74:	e594101c 	ldr	r1, [r4, #28]
> c039ff78:	e5940008 	ldr	r0, [r4, #8]
> c039ff7c:	ebfd6244 	bl	c02f8894 <pci_bus_write_config_byte>
> c039ff80:	eaffffec 	b	c039ff38 <quirk_usb_early_handoff+0x4dc>
> c039ff84:	e3072c20 	movw	r2, #31776	; 0x7c20
> c039ff88:	e3080b30 	movw	r0, #35632	; 0x8b30
> c039ff8c:	e34c2059 	movt	r2, #49241	; 0xc059
> c039ff90:	e34c0057 	movt	r0, #49239	; 0xc057
> c039ff94:	e2841068 	add	r1, r4, #104	; 0x68
> c039ff98:	ebfeb37a 	bl	c034cd88 <dev_printk>
> c039ff9c:	e2886004 	add	r6, r8, #4
> c039ffa0:	e5983004 	ldr	r3, [r8, #4]
> c039ffa4:	f57ff04f 	dsb	sy
> c039ffa8:	e3130a01 	tst	r3, #4096	; 0x1000
> c039ffac:	0a000037 	beq	c03a0090 <quirk_usb_early_handoff+0x634>
> c039ffb0:	f57ff04e 	dsb	st
> c039ffb4:	ebf5c59e 	bl	c0111634 <arm_heavy_mb>
> c039ffb8:	e3a03000 	mov	r3, #0
> c039ffbc:	e5883008 	str	r3, [r8, #8]
> c039ffc0:	f57ff04e 	dsb	st
> c039ffc4:	ebf5c59a 	bl	c0111634 <arm_heavy_mb>
> c039ffc8:	e3a0303f 	mov	r3, #63	; 0x3f
> c039ffcc:	e5883004 	str	r3, [r8, #4]
> c039ffd0:	e1a0000b 	mov	r0, fp
> c039ffd4:	ebf5c718 	bl	c0111c3c <iounmap>
> c039ffd8:	eafffec0 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039ffdc:	e0840280 	add	r0, r4, r0, lsl #5
> c039ffe0:	e590116c 	ldr	r1, [r0, #364]	; 0x16c
> c039ffe4:	e3510000 	cmp	r1, #0
> c039ffe8:	0afffebc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039ffec:	e1a00004 	mov	r0, r4
> c039fff0:	ebfffe40 	bl	c039f8f8 <uhci_check_and_reset_hc>
> c039fff4:	eafffeb9 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fff8:	f57ff04e 	dsb	st
> c039fffc:	ebf5c58c 	bl	c0111634 <arm_heavy_mb>
> c03a0000:	e588a034 	str	sl, [r8, #52]	; 0x34
> c03a0004:	eaffff03 	b	c039fc18 <quirk_usb_early_handoff+0x1bc>
> c03a0008:	f57ff04e 	dsb	st
> c03a000c:	ebf5c588 	bl	c0111634 <arm_heavy_mb>
> c03a0010:	e20aac02 	and	sl, sl, #512	; 0x200
> c03a0014:	e588a004 	str	sl, [r8, #4]
> c03a0018:	e5983004 	ldr	r3, [r8, #4]
> c03a001c:	f57ff04f 	dsb	sy
> c03a0020:	e3a00032 	mov	r0, #50	; 0x32
> c03a0024:	ebf7347a 	bl	c016d214 <msleep>
> c03a0028:	eafffedc 	b	c039fba0 <quirk_usb_early_handoff+0x144>
> c03a002c:	f57ff04e 	dsb	st
> c03a0030:	ebf5c57f 	bl	c0111634 <arm_heavy_mb>
> c03a0034:	e3a03101 	mov	r3, #1073741824	; 0x40000000
> c03a0038:	e5883010 	str	r3, [r8, #16]
> c03a003c:	f57ff04e 	dsb	st
> c03a0040:	ebf5c57b 	bl	c0111634 <arm_heavy_mb>
> c03a0044:	e2886008 	add	r6, r8, #8
> c03a0048:	e3a03008 	mov	r3, #8
> c03a004c:	e5883008 	str	r3, [r8, #8]
> c03a0050:	e3a05032 	mov	r5, #50	; 0x32
> c03a0054:	e5973000 	ldr	r3, [r7]
> c03a0058:	f57ff04f 	dsb	sy
> c03a005c:	e3130c01 	tst	r3, #256	; 0x100
> c03a0060:	e3a0000a 	mov	r0, #10
> c03a0064:	0afffec7 	beq	c039fb88 <quirk_usb_early_handoff+0x12c>
> c03a0068:	ebf73469 	bl	c016d214 <msleep>
> c03a006c:	e2555001 	subs	r5, r5, #1
> c03a0070:	1afffff7 	bne	c03a0054 <quirk_usb_early_handoff+0x5f8>
> c03a0074:	e5982004 	ldr	r2, [r8, #4]
> c03a0078:	f57ff04f 	dsb	sy
> c03a007c:	e3071bc8 	movw	r1, #31688	; 0x7bc8
> c03a0080:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0084:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0088:	ebfeb3a8 	bl	c034cf30 <dev_warn>
> c03a008c:	eafffebd 	b	c039fb88 <quirk_usb_early_handoff+0x12c>
> c03a0090:	e5985000 	ldr	r5, [r8]
> c03a0094:	f57ff04f 	dsb	sy
> c03a0098:	e3c55001 	bic	r5, r5, #1
> c03a009c:	f57ff04e 	dsb	st
> c03a00a0:	ebf5c563 	bl	c0111634 <arm_heavy_mb>
> c03a00a4:	e5885000 	str	r5, [r8]
> c03a00a8:	e30774dc 	movw	r7, #29916	; 0x74dc
> c03a00ac:	e3009a34 	movw	r9, #2612	; 0xa34
> c03a00b0:	e34c705a 	movt	r7, #49242	; 0xc05a
> c03a00b4:	e34093d7 	movt	r9, #983	; 0x3d7
> c03a00b8:	e3a05e7d 	mov	r5, #2000	; 0x7d0
> c03a00bc:	e3a0a03f 	mov	sl, #63	; 0x3f
> c03a00c0:	f57ff04e 	dsb	st
> c03a00c4:	ebf5c55a 	bl	c0111634 <arm_heavy_mb>
> c03a00c8:	e586a000 	str	sl, [r6]
> c03a00cc:	e5973004 	ldr	r3, [r7, #4]
> c03a00d0:	e1a00009 	mov	r0, r9
> c03a00d4:	e12fff33 	blx	r3
> c03a00d8:	e2455064 	sub	r5, r5, #100	; 0x64
> c03a00dc:	e5963000 	ldr	r3, [r6]
> c03a00e0:	f57ff04f 	dsb	sy
> c03a00e4:	e3730001 	cmn	r3, #1
> c03a00e8:	e2232a01 	eor	r2, r3, #4096	; 0x1000
> c03a00ec:	0affffaf 	beq	c039ffb0 <quirk_usb_early_handoff+0x554>
> c03a00f0:	e2953000 	adds	r3, r5, #0
> c03a00f4:	13a03001 	movne	r3, #1
> c03a00f8:	e0133622 	ands	r3, r3, r2, lsr #12
> c03a00fc:	1affffef 	bne	c03a00c0 <quirk_usb_early_handoff+0x664>
> c03a0100:	eaffffaa 	b	c039ffb0 <quirk_usb_early_handoff+0x554>
> c03a0104:	e5982004 	ldr	r2, [r8, #4]
> c03a0108:	f57ff04f 	dsb	sy
> c03a010c:	e3071c64 	movw	r1, #31844	; 0x7c64
> c03a0110:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0114:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0118:	ebfeb384 	bl	c034cf30 <dev_warn>
> c03a011c:	eaffff2b 	b	c039fdd0 <quirk_usb_early_handoff+0x374>
> c03a0120:	e5983004 	ldr	r3, [r8, #4]
> c03a0124:	f57ff04f 	dsb	sy
> c03a0128:	e3071c9c 	movw	r1, #31900	; 0x7c9c
> c03a012c:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0130:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0134:	e3a02dfa 	mov	r2, #16000	; 0x3e80
> c03a0138:	ebfeb37c 	bl	c034cf30 <dev_warn>
> c03a013c:	eaffff39 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
> c03a0140:	e3071ba4 	movw	r1, #31652	; 0x7ba4
> c03a0144:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0148:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a014c:	ebfeb377 	bl	c034cf30 <dev_warn>
> c03a0150:	eaffff34 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
> c03a0154:	e1a00004 	mov	r0, r4
> c03a0158:	ebfffe1c 	bl	c039f9d0 <usb_enable_intel_xhci_ports>
> c03a015c:	eaffff07 	b	c039fd80 <quirk_usb_early_handoff+0x324>
> c03a0160:	e3caa401 	bic	sl, sl, #16777216	; 0x1000000
> c03a0164:	e3caa801 	bic	sl, sl, #65536	; 0x10000
> c03a0168:	e38aa401 	orr	sl, sl, #16777216	; 0x1000000
> c03a016c:	f57ff04e 	dsb	st
> c03a0170:	ebf5c52f 	bl	c0111634 <arm_heavy_mb>
> c03a0174:	e588a000 	str	sl, [r8]
> c03a0178:	eaffff4b 	b	c039feac <quirk_usb_early_handoff+0x450>
> c03a017c:	f57ff04e 	dsb	st
> c03a0180:	ebf5c52b 	bl	c0111634 <arm_heavy_mb>
> c03a0184:	e38a3401 	orr	r3, sl, #16777216	; 0x1000000
> c03a0188:	e5883000 	str	r3, [r8]
> c03a018c:	e307b4dc 	movw	fp, #29916	; 0x74dc
> c03a0190:	e3049dd2 	movw	r9, #19922	; 0x4dd2
> c03a0194:	e34cb05a 	movt	fp, #49242	; 0xc05a
> c03a0198:	e3409062 	movt	r9, #98	; 0x62
> c03a019c:	e3a06f7d 	mov	r6, #500	; 0x1f4
> c03a01a0:	e5983000 	ldr	r3, [r8]
> c03a01a4:	f57ff04f 	dsb	sy
> c03a01a8:	e3130801 	tst	r3, #65536	; 0x10000
> c03a01ac:	e1a00009 	mov	r0, r9
> c03a01b0:	0affff3f 	beq	c039feb4 <quirk_usb_early_handoff+0x458>
> c03a01b4:	e59b3004 	ldr	r3, [fp, #4]
> c03a01b8:	e12fff33 	blx	r3
> c03a01bc:	e2566001 	subs	r6, r6, #1
> c03a01c0:	1afffff6 	bne	c03a01a0 <quirk_usb_early_handoff+0x744>
> c03a01c4:	e3071c38 	movw	r1, #31800	; 0x7c38
> c03a01c8:	e1a0200a 	mov	r2, sl
> c03a01cc:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a01d0:	e2840068 	add	r0, r4, #104	; 0x68
> c03a01d4:	ebfeb355 	bl	c034cf30 <dev_warn>
> c03a01d8:	f57ff04e 	dsb	st
> c03a01dc:	ebf5c514 	bl	c0111634 <arm_heavy_mb>
> c03a01e0:	e3caa801 	bic	sl, sl, #65536	; 0x10000
> c03a01e4:	e588a000 	str	sl, [r8]
> c03a01e8:	eaffff31 	b	c039feb4 <quirk_usb_early_handoff+0x458>
> 


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
@ 2017-03-06 14:30           ` Robin Murphy
  0 siblings, 0 replies; 21+ messages in thread
From: Robin Murphy @ 2017-03-06 14:30 UTC (permalink / raw)
  To: linux-arm-kernel

[+linux-pci, just in case]

On 06/03/17 12:42, Mason wrote:
> On 03/03/2017 20:02, Robin Murphy wrote:
> 
>> On 03/03/17 17:15, Mason wrote:
>>
>>>>> [    1.264893] Unable to handle kernel paging request at virtual address d08664f4
>>
>> Note that that's a reasonable approximation of a vmalloc address...
>>
>>>>> [    1.272248] pgd = c0004000
>>>>> [    1.275060] [d08664f4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>>> [    1.281476] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>>> [    1.286897] Modules linked in:
>>>>> [    1.290053] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #151
>>>>> [    1.296696] Hardware name: Sigma Tango DT
>>>>> [    1.300808] task: cf82c9c0 task.stack: cf838000
>>>>> [    1.305446] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>>> [    1.310873] LR is at ioremap_page_range+0xf8/0x1a8
>>>>> [    1.315771] pc : [<c039fe8c>]    lr : [<c02d0a10>]    psr: 000e0013
>>>>> [    1.315771] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>>> [    1.327482] r10: c10248a0  r9 : 00000000  r8 : d08664f4
>>>>> [    1.332816] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
>>>>> [    1.339460] r3 : 000184f4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and that specifically it's r0 + r3...
>>
>>>> [    1.258926] Unable to handle kernel paging request at virtual address d0863f70
>>>> [    1.266284] pgd = c0004000
>>>> [    1.269097] [d0863f70] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>>> [    1.275512] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>>> [    1.280933] Modules linked in:
>>>> [    1.284089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>>> [    1.290732] Hardware name: Sigma Tango DT
>>>> [    1.294843] task: cf82c9c0 task.stack: cf838000
>>>> [    1.299482] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>>> [    1.304907] LR is at ioremap_page_range+0xf8/0x1a8
>>>> [    1.309806] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>>> [    1.309806] sp : cf839d78  ip : 00000000  fp : cf839e38
>>>> [    1.321517] r10: c10248a0  r9 : 00000000  r8 : d0863f70
>>>> [    1.326851] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb52800
>>>> [    1.333495] r3 : 00015f70  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and again...
>>
>>> [    1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>> [    1.269167] pgd = c0004000
>>> [    1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [    1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [    1.283815] Modules linked in:
>>> [    1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>> [    1.293614] Hardware name: Sigma Tango DT
>>> [    1.297726] task: cf82c9c0 task.stack: cf838000
>>> [    1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [    1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>> [    1.312688] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
>>> [    1.312688] sp : cf839d78  ip : 00000000  fp : cf839e38
>>> [    1.324399] r10: c10248a0  r9 : 00000000  r8 : d08611e4
>>> [    1.329733] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb4e800
>>> [    1.336377] r3 : 000131e4  r2 : 00000000  r1 : 91001e13  r0 : d084e000
>>
>> ...and again. And always at the same PC, too. Looking at
>> quirk_usb_early_handoff(), it mostly seems to go off poking bridge
>> resources, so I'd hazard a guess that it's down to your host driver,
>> with something uninitialised (or already freed) being used as an offset
>> into some ioremapped resource (which given the consistency of r0 is
>> probably allocated pretty early on).
>>
>> "addr2line -i -e vmlinux c039fe44", and work backwards from there ;)
>> In particular I'd follow the provenance of r3.
> 
> Starting from a fresh panic:
> 
> [    1.236243] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
> [    1.242474] pcieport 0000:00:00.0: enabling bus mastering
> [    1.248147] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x790
> [    1.254904] pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    1.260719] Unable to handle kernel paging request at virtual address d08509f8
> [    1.268073] pgd = c0004000
> [    1.270874] [d08509f8] *pgd=8f804811, *pte=00000000, *ppte=00000000
> [    1.277282] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
> [    1.282702] Modules linked in:
> [    1.285858] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #2
> [    1.292327] Hardware name: Sigma Tango DT
> [    1.296438] task: cf82c9c0 task.stack: cf838000
> [    1.301076] PC is at quirk_usb_early_handoff+0x3e8/0x790
> [    1.306501] LR is at ioremap_page_range+0xf8/0x1a8
> [    1.311400] pc : [<c039fe44>]    lr : [<c02d0a10>]    psr: 000e0013
> [    1.311400] sp : cf839d78  ip : 00000000  fp : cf839e38
> [    1.323110] r10: c10248a0  r9 : 00000000  r8 : d08509f8
> [    1.328444] r7 : d084e000  r6 : 00002000  r5 : 000c0300  r4 : cfb5f800
> [    1.335087] r3 : 000029f8  r2 : 00000000  r1 : 91001e13  r0 : d084e000
> [    1.341732] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [    1.348987] Control: 10c5387d  Table: 8faa004a  DAC: 00000051
> [    1.354844] Process swapper/0 (pid: 1, stack limit = 0xcf838210)
> [    1.360963] Stack: (0xcf839d78 to 0xcf83a000)
> [    1.365424] 9d60:                                                       c058f56c c058b174
> [    1.373730] 9d80: cfb55240 cf839d98 c03501cc c05adcc4 cfb5f800 c05adcd4 cf838000 00000000
> [    1.382036] 9da0: 00000000 c10248a0 cf839e38 c030bf58 cf889200 c034e650 cf867270 00000000
> [    1.390342] 9dc0: cfb5f800 cf999414 cf999400 cf839e30 cf889200 00000000 cf906010 c02fa484
> [    1.398648] 9de0: cfb5f800 cf999414 cf999400 c02fa538 cfb5fc00 cf999814 cf999800 c02fa56c
> [    1.406953] 9e00: cf99980c cf99980c cf999800 c0313830 cf839e30 cf9929b0 c05178b0 c10101d8
> [    1.415259] 9e20: cf881780 00000000 cf906000 c058cd20 cf839e30 cf839e30 50000000 5fffffff
> [    1.423564] 9e40: cfdf7764 00000200 00000000 00000000 00000000 00000000 c1057de8 cf906010
> [    1.431869] 9e60: c1010208 cf906044 c1010208 00000000 00000007 00000000 cfffcec0 c03515d8
> [    1.440175] 9e80: c1056fb0 cf906010 cf906044 c0350074 cf906010 c1010208 cf906044 c10177d0
> [    1.448481] 9ea0: 00000073 c03501c8 00000000 c1010208 c0350104 c034e59c cf80545c cf8a60b4
> [    1.456787] 9ec0: c1010208 cf9a5f00 00000000 c034f6e0 c058cd78 c0616a64 c0633cb0 c1010208
> [    1.465093] 9ee0: c0616a64 c0633cb0 c0628834 c0350724 ffffe000 c0616a64 c0633cb0 c0101834
> [    1.473399] 9f00: 00000069 cf839f20 c013291c c02d4f10 20000000 ffffffff 00000051 00000000
> [    1.481704] 9f20: cfffceee c050fa08 00000073 c0132aec c059a1b8 c05da49c 00000000 00000006
> [    1.490010] 9f40: 00000006 c05723fc c1009358 c1024880 c1024880 c1024880 c0633cb0 c0628834
> [    1.498315] 9f60: 00000073 00000007 c062883c c0600db4 00000006 00000006 00000000 c06005ac
> [    1.506620] 9f80: 58fe5add 00000000 c049fab4 00000000 00000000 00000000 00000000 00000000
> [    1.514925] 9fa0: 00000000 c049fabc 00000000 c01077b8 00000000 00000000 00000000 00000000
> [    1.523230] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    1.531536] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 88719a14 4a5337f3
> [    1.539858] [<c039fe44>] (quirk_usb_early_handoff) from [<c030bf58>] (pci_do_fixups+0xc8/0x158)
> [    1.548699] [<c030bf58>] (pci_do_fixups) from [<c02fa484>] (pci_bus_add_device+0x18/0x90)
> [    1.557008] [<c02fa484>] (pci_bus_add_device) from [<c02fa538>] (pci_bus_add_devices+0x3c/0x80)
> [    1.565839] [<c02fa538>] (pci_bus_add_devices) from [<c02fa56c>] (pci_bus_add_devices+0x70/0x80)
> [    1.574761] [<c02fa56c>] (pci_bus_add_devices) from [<c0313830>] (pci_host_common_probe+0xfc/0x324)
> [    1.583948] [<c0313830>] (pci_host_common_probe) from [<c03515d8>] (platform_drv_probe+0x34/0x7c)
> [    1.592957] [<c03515d8>] (platform_drv_probe) from [<c0350074>] (really_probe+0x1c4/0x254)
> [    1.601353] [<c0350074>] (really_probe) from [<c03501c8>] (__driver_attach+0xc4/0xc8)
> [    1.609311] [<c03501c8>] (__driver_attach) from [<c034e59c>] (bus_for_each_dev+0x68/0x9c)
> [    1.617618] [<c034e59c>] (bus_for_each_dev) from [<c034f6e0>] (bus_add_driver+0x1a0/0x218)
> [    1.626013] [<c034f6e0>] (bus_add_driver) from [<c0350724>] (driver_register+0x78/0xf8)
> [    1.634147] [<c0350724>] (driver_register) from [<c0101834>] (do_one_initcall+0x44/0x174)
> [    1.642463] [<c0101834>] (do_one_initcall) from [<c0600db4>] (kernel_init_freeable+0x154/0x1e4)
> [    1.651296] [<c0600db4>] (kernel_init_freeable) from [<c049fabc>] (kernel_init+0x8/0x10c)
> [    1.659607] [<c049fabc>] (kernel_init) from [<c01077b8>] (ret_from_fork+0x14/0x3c)
> [    1.667302] Code: e3500000 e0833100 0affffcb e0878003 (e5982000) 
> [    1.673545] ---[ end trace c146f95bb6e22b24 ]---
> [    1.678294] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    1.678294] 
> [    1.687652] CPU1: stopping
> [    1.690457] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.9.7-1-rc2 #2
> [    1.698148] Hardware name: Sigma Tango DT
> [    1.702276] [<c010ed94>] (unwind_backtrace) from [<c010ae24>] (show_stack+0x10/0x14)
> [    1.710148] [<c010ae24>] (show_stack) from [<c02cecc0>] (dump_stack+0x78/0x8c)
> [    1.717495] [<c02cecc0>] (dump_stack) from [<c010dc10>] (handle_IPI+0x198/0x1ac)
> [    1.725016] [<c010dc10>] (handle_IPI) from [<c01014a4>] (gic_handle_irq+0x88/0x8c)
> [    1.732710] [<c01014a4>] (gic_handle_irq) from [<c010b90c>] (__irq_svc+0x6c/0xa8)
> [    1.740314] Exception stack(0xcf859f98 to 0xcf859fe0)
> [    1.745474] 9f80:                                                       00000001 00000000
> [    1.753779] 9fa0: 0000196e c0114620 cf858000 c1002fe4 c1003048 00000002 c100ba2e 413fc090
> [    1.762085] 9fc0: 00000000 00000000 00000001 cf859fe8 c0108220 c0108224 60000013 ffffffff
> [    1.770392] [<c010b90c>] (__irq_svc) from [<c0108224>] (arch_cpu_idle+0x38/0x3c)
> [    1.777918] [<c0108224>] (arch_cpu_idle) from [<c0151f4c>] (cpu_startup_entry+0xcc/0x144)
> [    1.786227] [<c0151f4c>] (cpu_startup_entry) from [<8010154c>] (0x8010154c)
> [    1.793311] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> 
> 
> $ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44
> arch/arm/include/asm/io.h:119
> 
> In other words, readl()
> Not as helpful as expected...

I guess your toolchain isn't generating whatever debug info that -i uses
to show where it was actually inlined, shame.

> AFAICT, quirk_usb_handoff_xhci() is inlined at c039fd18
> 
> and c039fd48 is likely
> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> http://lxr.free-electrons.com/source/drivers/usb/host/pci-quirks.c?v=4.9#L978
> 
> Panic seems to occur in
> ext_cap_offset = xhci_find_next_ext_cap(base, 0, XHCI_EXT_CAPS_LEGACY);
> 
> c039fd54:	e5973010 	ldr	r3, [r7, #16]
> c039fd58:	f57ff04f 	dsb	sy
> c039fd5c:	e3730001 	cmn	r3, #1
> c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> 
> 		val = readl(base + XHCI_HCC_PARAMS_OFFSET);
> 		if (val == ~0)
> 			return 0;
> 
> At this point, r7 is base.
> 
> c039fd64:	e1a03823 	lsr	r3, r3, #16
> c039fd68:	e1b03103 	lsls	r3, r3, #2
> c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>
> 
> 		offset = XHCI_HCC_EXT_CAPS(val) << 2;
> 		if (!offset)
> 			return 0;
> 
> At this point, r3 is XHCI_HCC_EXT_CAPS(val) << 2
> 
> 	do {
> 		val = readl(base + offset);
> 		if (val == ~0)
> 			return 0;
> 
> c039fe40:	e0878003 	add	r8, r7, r3
> c039fe44:	e5982000 	ldr	r2, [r8]
> 
> r8 = r7 + r3 = base + offset;
> 
> So the kernel panics in xhci_find_next_ext_cap()
> ( drivers/usb/host/xhci-ext-caps.h:122 )
> http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122
> 
> Any idea how this can happen?
> 
> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> 
> Could I be passing garbage to ioremap_nocache?

For reference, from your original log:

[    1.118433] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[    1.125385] pci_bus 0000:01: scanning bus
[    1.129557] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
[    1.135727] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
[    1.142730] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40

Put together, if I'm skimming unfamiliar XHCI code and docs correctly,
this would imply that a supposed read of the HCC Parameters register
claimed that the extended capabilities register was at offset 0x29f8
into a 0x2000-long BAR. That does suggest that whatever's being accessed
through that ioremap() isn't actually the contents of BAR 0 at all (said
field should apparently read as 0x140 representing an offset of 0x500).
You're not still trying have your PCI host controller place its
MEM-space window over the top of system RAM, are you? Otherwise, I'd be
inclined to double check that your config space accesses and resource
assignment are producing sane values.

I think that's about as far as I can go, 'cause by this point I know a
lot less than it might sound like I do ;)

Robin.

> 
> Regards.
> 
> 
> 
> Full disassembly below, for my own reference.
> 
> c039fa5c <quirk_usb_early_handoff>:
> c039fa5c:	e1d022b0 	ldrh	r2, [r0, #32]
> c039fa60:	e301384e 	movw	r3, #6222	; 0x184e
> c039fa64:	e1520003 	cmp	r2, r3
> c039fa68:	012fff1e 	bxeq	lr
> c039fa6c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}
> c039fa70:	e3a03c03 	mov	r3, #768	; 0x300
> c039fa74:	e5905028 	ldr	r5, [r0, #40]	; 0x28
> c039fa78:	e340300c 	movt	r3, #12
> c039fa7c:	e24dd014 	sub	sp, sp, #20
> c039fa80:	e1a04000 	mov	r4, r0
> c039fa84:	e3c55030 	bic	r5, r5, #48	; 0x30
> c039fa88:	e1550003 	cmp	r5, r3
> c039fa8c:	0a000001 	beq	c039fa98 <quirk_usb_early_handoff+0x3c>
> c039fa90:	e28dd014 	add	sp, sp, #20
> c039fa94:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
> c039fa98:	ebfd890d 	bl	c0301ed4 <pci_enable_device>
> c039fa9c:	e3500000 	cmp	r0, #0
> c039faa0:	ba000097 	blt	c039fd04 <quirk_usb_early_handoff+0x2a8>
> c039faa4:	e5943028 	ldr	r3, [r4, #40]	; 0x28
> c039faa8:	e1530005 	cmp	r3, r5
> c039faac:	0a00000f 	beq	c039faf0 <quirk_usb_early_handoff+0x94>
> c039fab0:	e3a02e31 	mov	r2, #784	; 0x310
> c039fab4:	e340200c 	movt	r2, #12
> c039fab8:	e1530002 	cmp	r3, r2
> c039fabc:	0a00001e 	beq	c039fb3c <quirk_usb_early_handoff+0xe0>
> c039fac0:	e3a02e32 	mov	r2, #800	; 0x320
> c039fac4:	e340200c 	movt	r2, #12
> c039fac8:	e1530002 	cmp	r3, r2
> c039facc:	0a000054 	beq	c039fc24 <quirk_usb_early_handoff+0x1c8>
> c039fad0:	e3a02e33 	mov	r2, #816	; 0x330
> c039fad4:	e340200c 	movt	r2, #12
> c039fad8:	e1530002 	cmp	r3, r2
> c039fadc:	0a00008d 	beq	c039fd18 <quirk_usb_early_handoff+0x2bc>
> c039fae0:	e1a00004 	mov	r0, r4
> c039fae4:	ebfd846d 	bl	c0300ca0 <pci_disable_device>
> c039fae8:	e28dd014 	add	sp, sp, #20
> c039faec:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}
> c039faf0:	e28d300c 	add	r3, sp, #12
> c039faf4:	e3a02004 	mov	r2, #4
> c039faf8:	e594101c 	ldr	r1, [r4, #28]
> c039fafc:	e5940008 	ldr	r0, [r4, #8]
> c039fb00:	ebfd631b 	bl	c02f8774 <pci_bus_read_config_word>
> c039fb04:	e3500000 	cmp	r0, #0
> c039fb08:	1afffff4 	bne	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb0c:	e1dd30bc 	ldrh	r3, [sp, #12]
> c039fb10:	e3130001 	tst	r3, #1
> c039fb14:	0afffff1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb18:	e1a03004 	mov	r3, r4
> c039fb1c:	e5932178 	ldr	r2, [r3, #376]	; 0x178
> c039fb20:	e2833020 	add	r3, r3, #32
> c039fb24:	e3120c01 	tst	r2, #256	; 0x100
> c039fb28:	1a00012b 	bne	c039ffdc <quirk_usb_early_handoff+0x580>
> c039fb2c:	e2800001 	add	r0, r0, #1
> c039fb30:	e3500006 	cmp	r0, #6
> c039fb34:	1afffff8 	bne	c039fb1c <quirk_usb_early_handoff+0xc0>
> c039fb38:	eaffffe8 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb3c:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fb40:	e3530000 	cmp	r3, #0
> c039fb44:	0affffe5 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb48:	e1a00004 	mov	r0, r4
> c039fb4c:	ebffff8f 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fb50:	e3500000 	cmp	r0, #0
> c039fb54:	0affffe1 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb58:	e3a01000 	mov	r1, #0
> c039fb5c:	e1a00004 	mov	r0, r4
> c039fb60:	ebfd7875 	bl	c02fdd3c <pci_ioremap_bar>
> c039fb64:	e2508000 	subs	r8, r0, #0
> c039fb68:	0affffdc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fb6c:	e5949020 	ldr	r9, [r4, #32]
> c039fb70:	e2887004 	add	r7, r8, #4
> c039fb74:	e598a004 	ldr	sl, [r8, #4]
> c039fb78:	f57ff04f 	dsb	sy
> c039fb7c:	e31a0c01 	tst	sl, #256	; 0x100
> c039fb80:	02886008 	addeq	r6, r8, #8
> c039fb84:	1a000128 	bne	c03a002c <quirk_usb_early_handoff+0x5d0>
> c039fb88:	f57ff04e 	dsb	st
> c039fb8c:	ebf5c6a8 	bl	c0111634 <arm_heavy_mb>
> c039fb90:	e3e03000 	mvn	r3, #0
> c039fb94:	e5883014 	str	r3, [r8, #20]
> c039fb98:	e31a00c0 	tst	sl, #192	; 0xc0
> c039fb9c:	1a000119 	bne	c03a0008 <quirk_usb_early_handoff+0x5ac>
> c039fba0:	e30130b9 	movw	r3, #4281	; 0x10b9
> c039fba4:	e3453237 	movt	r3, #21047	; 0x5237
> c039fba8:	e1590003 	cmp	r9, r3
> c039fbac:	03a0a000 	moveq	sl, #0
> c039fbb0:	0a000001 	beq	c039fbbc <quirk_usb_early_handoff+0x160>
> c039fbb4:	e598a034 	ldr	sl, [r8, #52]	; 0x34
> c039fbb8:	f57ff04f 	dsb	sy
> c039fbbc:	f57ff04e 	dsb	st
> c039fbc0:	ebf5c69b 	bl	c0111634 <arm_heavy_mb>
> c039fbc4:	e3a03001 	mov	r3, #1
> c039fbc8:	e5863000 	str	r3, [r6]
> c039fbcc:	e307b4dc 	movw	fp, #29916	; 0x74dc
> c039fbd0:	e30d7495 	movw	r7, #54421	; 0xd495
> c039fbd4:	e34cb05a 	movt	fp, #49242	; 0xc05a
> c039fbd8:	e3407009 	movt	r7, #9
> c039fbdc:	e3a0501e 	mov	r5, #30
> c039fbe0:	ea000003 	b	c039fbf4 <quirk_usb_early_handoff+0x198>
> c039fbe4:	e59b3004 	ldr	r3, [fp, #4]
> c039fbe8:	e12fff33 	blx	r3
> c039fbec:	e2555001 	subs	r5, r5, #1
> c039fbf0:	0a000004 	beq	c039fc08 <quirk_usb_early_handoff+0x1ac>
> c039fbf4:	e5963000 	ldr	r3, [r6]
> c039fbf8:	f57ff04f 	dsb	sy
> c039fbfc:	e3130001 	tst	r3, #1
> c039fc00:	e1a00007 	mov	r0, r7
> c039fc04:	1afffff6 	bne	c039fbe4 <quirk_usb_early_handoff+0x188>
> c039fc08:	e30130b9 	movw	r3, #4281	; 0x10b9
> c039fc0c:	e3453237 	movt	r3, #21047	; 0x5237
> c039fc10:	e1590003 	cmp	r9, r3
> c039fc14:	1a0000f7 	bne	c039fff8 <quirk_usb_early_handoff+0x59c>
> c039fc18:	e1a00008 	mov	r0, r8
> c039fc1c:	ebf5c806 	bl	c0111c3c <iounmap>
> c039fc20:	eaffffae 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc24:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fc28:	e3530000 	cmp	r3, #0
> c039fc2c:	0affffab 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc30:	e1a00004 	mov	r0, r4
> c039fc34:	ebffff55 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fc38:	e3500000 	cmp	r0, #0
> c039fc3c:	0affffa7 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc40:	e3a01000 	mov	r1, #0
> c039fc44:	e1a00004 	mov	r0, r4
> c039fc48:	ebfd783b 	bl	c02fdd3c <pci_ioremap_bar>
> c039fc4c:	e250b000 	subs	fp, r0, #0
> c039fc50:	0affffa2 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fc54:	e5db8000 	ldrb	r8, [fp]
> c039fc58:	e6ef8078 	uxtb	r8, r8
> c039fc5c:	f57ff04f 	dsb	sy
> c039fc60:	e08b8008 	add	r8, fp, r8
> c039fc64:	e59b6008 	ldr	r6, [fp, #8]
> c039fc68:	f57ff04f 	dsb	sy
> c039fc6c:	e7e76456 	ubfx	r6, r6, #8, #8
> c039fc70:	e3560000 	cmp	r6, #0
> c039fc74:	0a0000c8 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
> c039fc78:	e3073bf4 	movw	r3, #31732	; 0x7bf4
> c039fc7c:	e3079b80 	movw	r9, #31616	; 0x7b80
> c039fc80:	e34c3059 	movt	r3, #49241	; 0xc059
> c039fc84:	e34c9059 	movt	r9, #49241	; 0xc059
> c039fc88:	e58d3004 	str	r3, [sp, #4]
> c039fc8c:	e3a0703f 	mov	r7, #63	; 0x3f
> c039fc90:	e284a068 	add	sl, r4, #104	; 0x68
> c039fc94:	ea00000d 	b	c039fcd0 <quirk_usb_early_handoff+0x274>
> c039fc98:	e3520001 	cmp	r2, #1
> c039fc9c:	1a000014 	bne	c039fcf4 <quirk_usb_early_handoff+0x298>
> c039fca0:	e2113801 	ands	r3, r1, #65536	; 0x10000
> c039fca4:	e58d100c 	str	r1, [sp, #12]
> c039fca8:	1a00008c 	bne	c039fee0 <quirk_usb_early_handoff+0x484>
> c039fcac:	e2862004 	add	r2, r6, #4
> c039fcb0:	e594101c 	ldr	r1, [r4, #28]
> c039fcb4:	e5940008 	ldr	r0, [r4, #8]
> c039fcb8:	ebfd674f 	bl	c02f99fc <pci_bus_write_config_dword>
> c039fcbc:	e5dd6009 	ldrb	r6, [sp, #9]
> c039fcc0:	e3560000 	cmp	r6, #0
> c039fcc4:	0a0000b4 	beq	c039ff9c <quirk_usb_early_handoff+0x540>
> c039fcc8:	e2577001 	subs	r7, r7, #1
> c039fccc:	0a0000ac 	beq	c039ff84 <quirk_usb_early_handoff+0x528>
> c039fcd0:	e1a02006 	mov	r2, r6
> c039fcd4:	e594101c 	ldr	r1, [r4, #28]
> c039fcd8:	e28d3008 	add	r3, sp, #8
> c039fcdc:	e5940008 	ldr	r0, [r4, #8]
> c039fce0:	ebfd62c7 	bl	c02f8804 <pci_bus_read_config_dword>
> c039fce4:	e59d1008 	ldr	r1, [sp, #8]
> c039fce8:	e21120ff 	ands	r2, r1, #255	; 0xff
> c039fcec:	1affffe9 	bne	c039fc98 <quirk_usb_early_handoff+0x23c>
> c039fcf0:	e58d2008 	str	r2, [sp, #8]
> c039fcf4:	e1a01009 	mov	r1, r9
> c039fcf8:	e1a0000a 	mov	r0, sl
> c039fcfc:	ebfeb48b 	bl	c034cf30 <dev_warn>
> c039fd00:	eaffffed 	b	c039fcbc <quirk_usb_early_handoff+0x260>
> c039fd04:	e3071b50 	movw	r1, #31568	; 0x7b50
> c039fd08:	e2840068 	add	r0, r4, #104	; 0x68
> c039fd0c:	e34c1059 	movt	r1, #49241	; 0xc059
> c039fd10:	ebfeb486 	bl	c034cf30 <dev_warn>
> c039fd14:	eaffff5d 	b	c039fa90 <quirk_usb_early_handoff+0x34>
> c039fd18:	e594316c 	ldr	r3, [r4, #364]	; 0x16c
> c039fd1c:	e3530000 	cmp	r3, #0
> c039fd20:	0affff6e 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd24:	e5946170 	ldr	r6, [r4, #368]	; 0x170
> c039fd28:	e1a00004 	mov	r0, r4
> c039fd2c:	e2866001 	add	r6, r6, #1
> c039fd30:	e0466003 	sub	r6, r6, r3
> c039fd34:	ebffff15 	bl	c039f990 <mmio_resource_enabled.part.0>
> c039fd38:	e3500000 	cmp	r0, #0
> c039fd3c:	0affff67 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd40:	e1a01006 	mov	r1, r6
> c039fd44:	e594016c 	ldr	r0, [r4, #364]	; 0x16c
> c039fd48:	ebf5c865 	bl	c0111ee4 <ioremap>
> c039fd4c:	e2507000 	subs	r7, r0, #0
> c039fd50:	0affff62 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fd54:	e5973010 	ldr	r3, [r7, #16]
> c039fd58:	f57ff04f 	dsb	sy
> c039fd5c:	e3730001 	cmn	r3, #1
> c039fd60:	0a000002 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fd64:	e1a03823 	lsr	r3, r3, #16
> c039fd68:	e1b03103 	lsls	r3, r3, #2
> c039fd6c:	1a000033 	bne	c039fe40 <quirk_usb_early_handoff+0x3e4>
> c039fd70:	e1d422b0 	ldrh	r2, [r4, #32]
> c039fd74:	e3083086 	movw	r3, #32902	; 0x8086
> c039fd78:	e1520003 	cmp	r2, r3
> c039fd7c:	0a0000f4 	beq	c03a0154 <quirk_usb_early_handoff+0x6f8>
> c039fd80:	e5978000 	ldr	r8, [r7]
> c039fd84:	f57ff04f 	dsb	sy
> c039fd88:	e6ef8078 	uxtb	r8, r8
> c039fd8c:	e307a4dc 	movw	sl, #29916	; 0x74dc
> c039fd90:	e3049dd2 	movw	r9, #19922	; 0x4dd2
> c039fd94:	e0878008 	add	r8, r7, r8
> c039fd98:	e34ca05a 	movt	sl, #49242	; 0xc05a
> c039fd9c:	e2886004 	add	r6, r8, #4
> c039fda0:	e3409062 	movt	r9, #98	; 0x62
> c039fda4:	e3a05f7d 	mov	r5, #500	; 0x1f4
> c039fda8:	ea000003 	b	c039fdbc <quirk_usb_early_handoff+0x360>
> c039fdac:	e59a3004 	ldr	r3, [sl, #4]
> c039fdb0:	e12fff33 	blx	r3
> c039fdb4:	e2555001 	subs	r5, r5, #1
> c039fdb8:	0a0000d1 	beq	c03a0104 <quirk_usb_early_handoff+0x6a8>
> c039fdbc:	e5963000 	ldr	r3, [r6]
> c039fdc0:	f57ff04f 	dsb	sy
> c039fdc4:	e3130b02 	tst	r3, #2048	; 0x800
> c039fdc8:	e1a00009 	mov	r0, r9
> c039fdcc:	1afffff6 	bne	c039fdac <quirk_usb_early_handoff+0x350>
> c039fdd0:	e5985000 	ldr	r5, [r8]
> c039fdd4:	f57ff04f 	dsb	sy
> c039fdd8:	e3c55b01 	bic	r5, r5, #1024	; 0x400
> c039fddc:	e3c5500d 	bic	r5, r5, #13
> c039fde0:	f57ff04e 	dsb	st
> c039fde4:	ebf5c612 	bl	c0111634 <arm_heavy_mb>
> c039fde8:	e5885000 	str	r5, [r8]
> c039fdec:	e307a4dc 	movw	sl, #29916	; 0x74dc
> c039fdf0:	e30c9cc1 	movw	r9, #52417	; 0xccc1
> c039fdf4:	e34ca05a 	movt	sl, #49242	; 0xc05a
> c039fdf8:	e34094cc 	movt	r9, #1228	; 0x4cc
> c039fdfc:	e3a05080 	mov	r5, #128	; 0x80
> c039fe00:	ea000003 	b	c039fe14 <quirk_usb_early_handoff+0x3b8>
> c039fe04:	e59a3004 	ldr	r3, [sl, #4]
> c039fe08:	e12fff33 	blx	r3
> c039fe0c:	e2555001 	subs	r5, r5, #1
> c039fe10:	0a0000c2 	beq	c03a0120 <quirk_usb_early_handoff+0x6c4>
> c039fe14:	e5963000 	ldr	r3, [r6]
> c039fe18:	f57ff04f 	dsb	sy
> c039fe1c:	e3130001 	tst	r3, #1
> c039fe20:	e1a00009 	mov	r0, r9
> c039fe24:	0afffff6 	beq	c039fe04 <quirk_usb_early_handoff+0x3a8>
> c039fe28:	e1a00007 	mov	r0, r7
> c039fe2c:	ebf5c782 	bl	c0111c3c <iounmap>
> c039fe30:	eaffff2a 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fe34:	e3500000 	cmp	r0, #0
> c039fe38:	e0833100 	add	r3, r3, r0, lsl #2
> c039fe3c:	0affffcb 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fe40:	e0878003 	add	r8, r7, r3
> c039fe44:	e5982000 	ldr	r2, [r8]
> c039fe48:	f57ff04f 	dsb	sy
> c039fe4c:	e3720001 	cmn	r2, #1
> c039fe50:	e6ef1072 	uxtb	r1, r2
> c039fe54:	e7e70452 	ubfx	r0, r2, #8, #8
> c039fe58:	0affffc4 	beq	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fe5c:	e2411001 	sub	r1, r1, #1
> c039fe60:	e3530000 	cmp	r3, #0
> c039fe64:	e16f1f11 	clz	r1, r1
> c039fe68:	e1a012a1 	lsr	r1, r1, #5
> c039fe6c:	03a01000 	moveq	r1, #0
> c039fe70:	e3510000 	cmp	r1, #0
> c039fe74:	0affffee 	beq	c039fe34 <quirk_usb_early_handoff+0x3d8>
> c039fe78:	e2835004 	add	r5, r3, #4
> c039fe7c:	e1550006 	cmp	r5, r6
> c039fe80:	8a0000ae 	bhi	c03a0140 <quirk_usb_early_handoff+0x6e4>
> c039fe84:	e598a000 	ldr	sl, [r8]
> c039fe88:	f57ff04f 	dsb	sy
> c039fe8c:	e5942020 	ldr	r2, [r4, #32]
> c039fe90:	e301104c 	movw	r1, #4172	; 0x104c
> c039fe94:	e3013912 	movw	r3, #6418	; 0x1912
> c039fe98:	e3481241 	movt	r1, #33345	; 0x8241
> c039fe9c:	e3403014 	movt	r3, #20
> c039fea0:	e1520003 	cmp	r2, r3
> c039fea4:	11520001 	cmpne	r2, r1
> c039fea8:	0a0000ac 	beq	c03a0160 <quirk_usb_early_handoff+0x704>
> c039feac:	e31a0801 	tst	sl, #65536	; 0x10000
> c039feb0:	1a0000b1 	bne	c03a017c <quirk_usb_early_handoff+0x720>
> c039feb4:	e0875005 	add	r5, r7, r5
> c039feb8:	e5956000 	ldr	r6, [r5]
> c039febc:	f57ff04f 	dsb	sy
> c039fec0:	e3012fee 	movw	r2, #8174	; 0x1fee
> c039fec4:	e340200e 	movt	r2, #14
> c039fec8:	e0022006 	and	r2, r2, r6
> c039fecc:	e382620e 	orr	r6, r2, #-536870912	; 0xe0000000
> c039fed0:	f57ff04e 	dsb	st
> c039fed4:	ebf5c5d6 	bl	c0111634 <arm_heavy_mb>
> c039fed8:	e5856000 	str	r6, [r5]
> c039fedc:	eaffffa3 	b	c039fd70 <quirk_usb_early_handoff+0x314>
> c039fee0:	e1a03002 	mov	r3, r2
> c039fee4:	e594101c 	ldr	r1, [r4, #28]
> c039fee8:	e2862003 	add	r2, r6, #3
> c039feec:	e5940008 	ldr	r0, [r4, #8]
> c039fef0:	ebfd6267 	bl	c02f8894 <pci_bus_write_config_byte>
> c039fef4:	e59d300c 	ldr	r3, [sp, #12]
> c039fef8:	e2133801 	ands	r3, r3, #65536	; 0x10000
> c039fefc:	0affff6a 	beq	c039fcac <quirk_usb_early_handoff+0x250>
> c039ff00:	e3a05064 	mov	r5, #100	; 0x64
> c039ff04:	ea000001 	b	c039ff10 <quirk_usb_early_handoff+0x4b4>
> c039ff08:	e2555001 	subs	r5, r5, #1
> c039ff0c:	0a000013 	beq	c039ff60 <quirk_usb_early_handoff+0x504>
> c039ff10:	e3a0000a 	mov	r0, #10
> c039ff14:	ebf734be 	bl	c016d214 <msleep>
> c039ff18:	e1a02006 	mov	r2, r6
> c039ff1c:	e28d300c 	add	r3, sp, #12
> c039ff20:	e594101c 	ldr	r1, [r4, #28]
> c039ff24:	e5940008 	ldr	r0, [r4, #8]
> c039ff28:	ebfd6235 	bl	c02f8804 <pci_bus_read_config_dword>
> c039ff2c:	e59d200c 	ldr	r2, [sp, #12]
> c039ff30:	e3120801 	tst	r2, #65536	; 0x10000
> c039ff34:	1afffff3 	bne	c039ff08 <quirk_usb_early_handoff+0x4ac>
> c039ff38:	e2862004 	add	r2, r6, #4
> c039ff3c:	e3a03000 	mov	r3, #0
> c039ff40:	e594101c 	ldr	r1, [r4, #28]
> c039ff44:	e5940008 	ldr	r0, [r4, #8]
> c039ff48:	ebfd66ab 	bl	c02f99fc <pci_bus_write_config_dword>
> c039ff4c:	f57ff04e 	dsb	st
> c039ff50:	ebf5c5b7 	bl	c0111634 <arm_heavy_mb>
> c039ff54:	e3a03000 	mov	r3, #0
> c039ff58:	e5883040 	str	r3, [r8, #64]	; 0x40
> c039ff5c:	eaffff56 	b	c039fcbc <quirk_usb_early_handoff+0x260>
> c039ff60:	e1a0000a 	mov	r0, sl
> c039ff64:	e59d1004 	ldr	r1, [sp, #4]
> c039ff68:	ebfeb3f0 	bl	c034cf30 <dev_warn>
> c039ff6c:	e1a03005 	mov	r3, r5
> c039ff70:	e2862002 	add	r2, r6, #2
> c039ff74:	e594101c 	ldr	r1, [r4, #28]
> c039ff78:	e5940008 	ldr	r0, [r4, #8]
> c039ff7c:	ebfd6244 	bl	c02f8894 <pci_bus_write_config_byte>
> c039ff80:	eaffffec 	b	c039ff38 <quirk_usb_early_handoff+0x4dc>
> c039ff84:	e3072c20 	movw	r2, #31776	; 0x7c20
> c039ff88:	e3080b30 	movw	r0, #35632	; 0x8b30
> c039ff8c:	e34c2059 	movt	r2, #49241	; 0xc059
> c039ff90:	e34c0057 	movt	r0, #49239	; 0xc057
> c039ff94:	e2841068 	add	r1, r4, #104	; 0x68
> c039ff98:	ebfeb37a 	bl	c034cd88 <dev_printk>
> c039ff9c:	e2886004 	add	r6, r8, #4
> c039ffa0:	e5983004 	ldr	r3, [r8, #4]
> c039ffa4:	f57ff04f 	dsb	sy
> c039ffa8:	e3130a01 	tst	r3, #4096	; 0x1000
> c039ffac:	0a000037 	beq	c03a0090 <quirk_usb_early_handoff+0x634>
> c039ffb0:	f57ff04e 	dsb	st
> c039ffb4:	ebf5c59e 	bl	c0111634 <arm_heavy_mb>
> c039ffb8:	e3a03000 	mov	r3, #0
> c039ffbc:	e5883008 	str	r3, [r8, #8]
> c039ffc0:	f57ff04e 	dsb	st
> c039ffc4:	ebf5c59a 	bl	c0111634 <arm_heavy_mb>
> c039ffc8:	e3a0303f 	mov	r3, #63	; 0x3f
> c039ffcc:	e5883004 	str	r3, [r8, #4]
> c039ffd0:	e1a0000b 	mov	r0, fp
> c039ffd4:	ebf5c718 	bl	c0111c3c <iounmap>
> c039ffd8:	eafffec0 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039ffdc:	e0840280 	add	r0, r4, r0, lsl #5
> c039ffe0:	e590116c 	ldr	r1, [r0, #364]	; 0x16c
> c039ffe4:	e3510000 	cmp	r1, #0
> c039ffe8:	0afffebc 	beq	c039fae0 <quirk_usb_early_handoff+0x84>
> c039ffec:	e1a00004 	mov	r0, r4
> c039fff0:	ebfffe40 	bl	c039f8f8 <uhci_check_and_reset_hc>
> c039fff4:	eafffeb9 	b	c039fae0 <quirk_usb_early_handoff+0x84>
> c039fff8:	f57ff04e 	dsb	st
> c039fffc:	ebf5c58c 	bl	c0111634 <arm_heavy_mb>
> c03a0000:	e588a034 	str	sl, [r8, #52]	; 0x34
> c03a0004:	eaffff03 	b	c039fc18 <quirk_usb_early_handoff+0x1bc>
> c03a0008:	f57ff04e 	dsb	st
> c03a000c:	ebf5c588 	bl	c0111634 <arm_heavy_mb>
> c03a0010:	e20aac02 	and	sl, sl, #512	; 0x200
> c03a0014:	e588a004 	str	sl, [r8, #4]
> c03a0018:	e5983004 	ldr	r3, [r8, #4]
> c03a001c:	f57ff04f 	dsb	sy
> c03a0020:	e3a00032 	mov	r0, #50	; 0x32
> c03a0024:	ebf7347a 	bl	c016d214 <msleep>
> c03a0028:	eafffedc 	b	c039fba0 <quirk_usb_early_handoff+0x144>
> c03a002c:	f57ff04e 	dsb	st
> c03a0030:	ebf5c57f 	bl	c0111634 <arm_heavy_mb>
> c03a0034:	e3a03101 	mov	r3, #1073741824	; 0x40000000
> c03a0038:	e5883010 	str	r3, [r8, #16]
> c03a003c:	f57ff04e 	dsb	st
> c03a0040:	ebf5c57b 	bl	c0111634 <arm_heavy_mb>
> c03a0044:	e2886008 	add	r6, r8, #8
> c03a0048:	e3a03008 	mov	r3, #8
> c03a004c:	e5883008 	str	r3, [r8, #8]
> c03a0050:	e3a05032 	mov	r5, #50	; 0x32
> c03a0054:	e5973000 	ldr	r3, [r7]
> c03a0058:	f57ff04f 	dsb	sy
> c03a005c:	e3130c01 	tst	r3, #256	; 0x100
> c03a0060:	e3a0000a 	mov	r0, #10
> c03a0064:	0afffec7 	beq	c039fb88 <quirk_usb_early_handoff+0x12c>
> c03a0068:	ebf73469 	bl	c016d214 <msleep>
> c03a006c:	e2555001 	subs	r5, r5, #1
> c03a0070:	1afffff7 	bne	c03a0054 <quirk_usb_early_handoff+0x5f8>
> c03a0074:	e5982004 	ldr	r2, [r8, #4]
> c03a0078:	f57ff04f 	dsb	sy
> c03a007c:	e3071bc8 	movw	r1, #31688	; 0x7bc8
> c03a0080:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0084:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0088:	ebfeb3a8 	bl	c034cf30 <dev_warn>
> c03a008c:	eafffebd 	b	c039fb88 <quirk_usb_early_handoff+0x12c>
> c03a0090:	e5985000 	ldr	r5, [r8]
> c03a0094:	f57ff04f 	dsb	sy
> c03a0098:	e3c55001 	bic	r5, r5, #1
> c03a009c:	f57ff04e 	dsb	st
> c03a00a0:	ebf5c563 	bl	c0111634 <arm_heavy_mb>
> c03a00a4:	e5885000 	str	r5, [r8]
> c03a00a8:	e30774dc 	movw	r7, #29916	; 0x74dc
> c03a00ac:	e3009a34 	movw	r9, #2612	; 0xa34
> c03a00b0:	e34c705a 	movt	r7, #49242	; 0xc05a
> c03a00b4:	e34093d7 	movt	r9, #983	; 0x3d7
> c03a00b8:	e3a05e7d 	mov	r5, #2000	; 0x7d0
> c03a00bc:	e3a0a03f 	mov	sl, #63	; 0x3f
> c03a00c0:	f57ff04e 	dsb	st
> c03a00c4:	ebf5c55a 	bl	c0111634 <arm_heavy_mb>
> c03a00c8:	e586a000 	str	sl, [r6]
> c03a00cc:	e5973004 	ldr	r3, [r7, #4]
> c03a00d0:	e1a00009 	mov	r0, r9
> c03a00d4:	e12fff33 	blx	r3
> c03a00d8:	e2455064 	sub	r5, r5, #100	; 0x64
> c03a00dc:	e5963000 	ldr	r3, [r6]
> c03a00e0:	f57ff04f 	dsb	sy
> c03a00e4:	e3730001 	cmn	r3, #1
> c03a00e8:	e2232a01 	eor	r2, r3, #4096	; 0x1000
> c03a00ec:	0affffaf 	beq	c039ffb0 <quirk_usb_early_handoff+0x554>
> c03a00f0:	e2953000 	adds	r3, r5, #0
> c03a00f4:	13a03001 	movne	r3, #1
> c03a00f8:	e0133622 	ands	r3, r3, r2, lsr #12
> c03a00fc:	1affffef 	bne	c03a00c0 <quirk_usb_early_handoff+0x664>
> c03a0100:	eaffffaa 	b	c039ffb0 <quirk_usb_early_handoff+0x554>
> c03a0104:	e5982004 	ldr	r2, [r8, #4]
> c03a0108:	f57ff04f 	dsb	sy
> c03a010c:	e3071c64 	movw	r1, #31844	; 0x7c64
> c03a0110:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0114:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0118:	ebfeb384 	bl	c034cf30 <dev_warn>
> c03a011c:	eaffff2b 	b	c039fdd0 <quirk_usb_early_handoff+0x374>
> c03a0120:	e5983004 	ldr	r3, [r8, #4]
> c03a0124:	f57ff04f 	dsb	sy
> c03a0128:	e3071c9c 	movw	r1, #31900	; 0x7c9c
> c03a012c:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0130:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a0134:	e3a02dfa 	mov	r2, #16000	; 0x3e80
> c03a0138:	ebfeb37c 	bl	c034cf30 <dev_warn>
> c03a013c:	eaffff39 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
> c03a0140:	e3071ba4 	movw	r1, #31652	; 0x7ba4
> c03a0144:	e2840068 	add	r0, r4, #104	; 0x68
> c03a0148:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a014c:	ebfeb377 	bl	c034cf30 <dev_warn>
> c03a0150:	eaffff34 	b	c039fe28 <quirk_usb_early_handoff+0x3cc>
> c03a0154:	e1a00004 	mov	r0, r4
> c03a0158:	ebfffe1c 	bl	c039f9d0 <usb_enable_intel_xhci_ports>
> c03a015c:	eaffff07 	b	c039fd80 <quirk_usb_early_handoff+0x324>
> c03a0160:	e3caa401 	bic	sl, sl, #16777216	; 0x1000000
> c03a0164:	e3caa801 	bic	sl, sl, #65536	; 0x10000
> c03a0168:	e38aa401 	orr	sl, sl, #16777216	; 0x1000000
> c03a016c:	f57ff04e 	dsb	st
> c03a0170:	ebf5c52f 	bl	c0111634 <arm_heavy_mb>
> c03a0174:	e588a000 	str	sl, [r8]
> c03a0178:	eaffff4b 	b	c039feac <quirk_usb_early_handoff+0x450>
> c03a017c:	f57ff04e 	dsb	st
> c03a0180:	ebf5c52b 	bl	c0111634 <arm_heavy_mb>
> c03a0184:	e38a3401 	orr	r3, sl, #16777216	; 0x1000000
> c03a0188:	e5883000 	str	r3, [r8]
> c03a018c:	e307b4dc 	movw	fp, #29916	; 0x74dc
> c03a0190:	e3049dd2 	movw	r9, #19922	; 0x4dd2
> c03a0194:	e34cb05a 	movt	fp, #49242	; 0xc05a
> c03a0198:	e3409062 	movt	r9, #98	; 0x62
> c03a019c:	e3a06f7d 	mov	r6, #500	; 0x1f4
> c03a01a0:	e5983000 	ldr	r3, [r8]
> c03a01a4:	f57ff04f 	dsb	sy
> c03a01a8:	e3130801 	tst	r3, #65536	; 0x10000
> c03a01ac:	e1a00009 	mov	r0, r9
> c03a01b0:	0affff3f 	beq	c039feb4 <quirk_usb_early_handoff+0x458>
> c03a01b4:	e59b3004 	ldr	r3, [fp, #4]
> c03a01b8:	e12fff33 	blx	r3
> c03a01bc:	e2566001 	subs	r6, r6, #1
> c03a01c0:	1afffff6 	bne	c03a01a0 <quirk_usb_early_handoff+0x744>
> c03a01c4:	e3071c38 	movw	r1, #31800	; 0x7c38
> c03a01c8:	e1a0200a 	mov	r2, sl
> c03a01cc:	e34c1059 	movt	r1, #49241	; 0xc059
> c03a01d0:	e2840068 	add	r0, r4, #104	; 0x68
> c03a01d4:	ebfeb355 	bl	c034cf30 <dev_warn>
> c03a01d8:	f57ff04e 	dsb	st
> c03a01dc:	ebf5c514 	bl	c0111634 <arm_heavy_mb>
> c03a01e0:	e3caa801 	bic	sl, sl, #65536	; 0x10000
> c03a01e4:	e588a000 	str	sl, [r8]
> c03a01e8:	eaffff31 	b	c039feb4 <quirk_usb_early_handoff+0x458>
> 

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: Panic in quirk_usb_early_handoff
  2017-03-06 14:30           ` Robin Murphy
@ 2017-03-06 14:56             ` Mason
  -1 siblings, 0 replies; 21+ messages in thread
From: Mason @ 2017-03-06 14:56 UTC (permalink / raw)
  To: Robin Murphy, linux-usb, Linux ARM, linux-pci
  Cc: Thibaud Cornic, Alan Stern, Ard Biesheuvel

On 06/03/2017 15:30, Robin Murphy wrote:

> On 06/03/17 12:42, Mason wrote:
>
>> $ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44
>> arch/arm/include/asm/io.h:119
>>
>> In other words, readl()
>> Not as helpful as expected...
> 
> I guess your toolchain isn't generating whatever debug info that -i uses
> to show where it was actually inlined, shame.

I used gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf
Is that too old?

Might the issue come from my kernel config?

#
# Compile-time checks and compiler options
#
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_REDUCED=y
CONFIG_DEBUG_INFO_SPLIT=y
# CONFIG_DEBUG_INFO_DWARF4 is not set
# CONFIG_GDB_SCRIPTS is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_KERNEL=y


> Put together, if I'm skimming unfamiliar XHCI code and docs correctly,
> this would imply that a supposed read of the HCC Parameters register
> claimed that the extended capabilities register was at offset 0x29f8
> into a 0x2000-long BAR. That does suggest that whatever's being accessed
> through that ioremap() isn't actually the contents of BAR 0 at all (said
> field should apparently read as 0x140 representing an offset of 0x500).
> You're not still trying have your PCI host controller place its
> MEM-space window over the top of system RAM, are you? Otherwise, I'd be
> inclined to double check that your config space accesses and resource
> assignment are producing sane values.

It looks like the current PCI framework doesn't expect platforms to
multiplex config space and MEM space :-(

[    0.994011] OF: PCI: host bridge /soc/pcie@50000000 ranges:
[    0.999721] OF: PCI: Parsing ranges property...
[    1.004386] OF: PCI:   MEM 0x50000000..0x5fffffff -> 0x00000000
[    1.010471] pci-host-generic 50000000.pcie:
		can't claim ECAM area [mem 0x50000000-0x5fffffff]:
		address conflict with /soc/pcie@50000000 [mem 0x50000000-0x5fffffff]
[    1.025265] pci-host-generic: probe of 50000000.pcie failed with error -16

		pcie@50000000 {
			compatible = "pci-host-ecam-generic";
			reg = <0x50000000 0x10000000>;
			device_type = "pci";
			#size-cells = <2>;
			#address-cells = <3>;
			#interrupt-cells = <1>;
			ranges = <0x02000000 0x0 0x0  0x50000000  0x0 0x10000000>;
		};

Regards.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
@ 2017-03-06 14:56             ` Mason
  0 siblings, 0 replies; 21+ messages in thread
From: Mason @ 2017-03-06 14:56 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/03/2017 15:30, Robin Murphy wrote:

> On 06/03/17 12:42, Mason wrote:
>
>> $ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44
>> arch/arm/include/asm/io.h:119
>>
>> In other words, readl()
>> Not as helpful as expected...
> 
> I guess your toolchain isn't generating whatever debug info that -i uses
> to show where it was actually inlined, shame.

I used gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf
Is that too old?

Might the issue come from my kernel config?

#
# Compile-time checks and compiler options
#
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_REDUCED=y
CONFIG_DEBUG_INFO_SPLIT=y
# CONFIG_DEBUG_INFO_DWARF4 is not set
# CONFIG_GDB_SCRIPTS is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_KERNEL=y


> Put together, if I'm skimming unfamiliar XHCI code and docs correctly,
> this would imply that a supposed read of the HCC Parameters register
> claimed that the extended capabilities register was at offset 0x29f8
> into a 0x2000-long BAR. That does suggest that whatever's being accessed
> through that ioremap() isn't actually the contents of BAR 0 at all (said
> field should apparently read as 0x140 representing an offset of 0x500).
> You're not still trying have your PCI host controller place its
> MEM-space window over the top of system RAM, are you? Otherwise, I'd be
> inclined to double check that your config space accesses and resource
> assignment are producing sane values.

It looks like the current PCI framework doesn't expect platforms to
multiplex config space and MEM space :-(

[    0.994011] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
[    0.999721] OF: PCI: Parsing ranges property...
[    1.004386] OF: PCI:   MEM 0x50000000..0x5fffffff -> 0x00000000
[    1.010471] pci-host-generic 50000000.pcie:
		can't claim ECAM area [mem 0x50000000-0x5fffffff]:
		address conflict with /soc/pcie at 50000000 [mem 0x50000000-0x5fffffff]
[    1.025265] pci-host-generic: probe of 50000000.pcie failed with error -16

		pcie at 50000000 {
			compatible = "pci-host-ecam-generic";
			reg = <0x50000000 0x10000000>;
			device_type = "pci";
			#size-cells = <2>;
			#address-cells = <3>;
			#interrupt-cells = <1>;
			ranges = <0x02000000 0x0 0x0  0x50000000  0x0 0x10000000>;
		};

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-06 13:49         ` Mason
@ 2017-03-06 15:27           ` David Laight
  2017-03-06 15:45             ` Mason
  0 siblings, 1 reply; 21+ messages in thread
From: David Laight @ 2017-03-06 15:27 UTC (permalink / raw)
  To: linux-arm-kernel

From: Mason
> Sent: 06 March 2017 13:50
> On 06/03/2017 13:42, Mason wrote:
> 
> > So the kernel panics in xhci_find_next_ext_cap()
> > ( drivers/usb/host/xhci-ext-caps.h:122 )
> > http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122
> >
> > Any idea how this can happen?
> >
> > 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
> >
> > Could I be passing garbage to ioremap_nocache?
> 
> Oh...
> 
> I have just now understood what Ard wrote a few days ago.
> 
> The issue was that, on this platform, the PCI configuration space
> and memory space are multiplexed; in other words they reside at
> the same physical address, with a bit in MMIO to choose one or
> the other.

Time to shoot another hardware engineer.
Hopefully it isn't an SMP system - but I wouldn't put it past them.

	David

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-06 15:27           ` David Laight
@ 2017-03-06 15:45             ` Mason
  2017-03-06 15:58               ` David Laight
  0 siblings, 1 reply; 21+ messages in thread
From: Mason @ 2017-03-06 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/03/2017 16:27, David Laight wrote:

> Mason wrote:
>>
>>> So the kernel panics in xhci_find_next_ext_cap()
>>> ( drivers/usb/host/xhci-ext-caps.h:122 )
>>> http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122
>>>
>>> Any idea how this can happen?
>>>
>>> 	base = ioremap_nocache(pci_resource_start(pdev, 0), len);
>>>
>>> Could I be passing garbage to ioremap_nocache?
>>
>> Oh...
>>
>> I have just now understood what Ard wrote a few days ago.
>>
>> The issue was that, on this platform, the PCI configuration space
>> and memory space are multiplexed; in other words they reside at
>> the same physical address, with a bit in MMIO to choose one or
>> the other.
> 
> Time to shoot another hardware engineer.

He's in CC :-)

> Hopefully it isn't an SMP system - but I wouldn't put it past them.

This is a dual- and quad- Cortex A9 MP platform :-(

Regards.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Panic in quirk_usb_early_handoff
  2017-03-06 15:45             ` Mason
@ 2017-03-06 15:58               ` David Laight
  0 siblings, 0 replies; 21+ messages in thread
From: David Laight @ 2017-03-06 15:58 UTC (permalink / raw)
  To: linux-arm-kernel

> From: Mason
> Sent: 06 March 2017 15:46
...
> >> The issue was that, on this platform, the PCI configuration space
> >> and memory space are multiplexed; in other words they reside at
> >> the same physical address, with a bit in MMIO to choose one or
> >> the other.
> >
> > Time to shoot another hardware engineer.
> 
> He's in CC :-)
> 
> > Hopefully it isn't an SMP system - but I wouldn't put it past them.
> 
> This is a dual- and quad- Cortex A9 MP platform :-(

So to do a config space access you have to use a pair of IPIs
to stop the other cpus doing any PCIe data accesses while the
MMIO bit makes the accesses all point to config space.
(After taking a lock to get access to the MMIO register.)

Or has someone a better idea?

	David

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2017-03-06 15:58 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-03 16:18 Panic in quirk_usb_early_handoff Mason
2017-03-03 17:10 ` Mason
2017-03-03 17:15   ` Mason
2017-03-03 19:02     ` Robin Murphy
2017-03-03 22:09       ` Mason
2017-03-04  0:24       ` Mason
2017-03-04  8:07         ` Ard Biesheuvel
2017-03-04 15:51           ` Alan Stern
2017-03-04 16:57           ` Mason
2017-03-04 17:16             ` Ard Biesheuvel
2017-03-04 17:29               ` Mason
2017-03-04 18:27                 ` Ard Biesheuvel
2017-03-06 12:42       ` Mason
2017-03-06 13:49         ` Mason
2017-03-06 15:27           ` David Laight
2017-03-06 15:45             ` Mason
2017-03-06 15:58               ` David Laight
2017-03-06 14:30         ` Robin Murphy
2017-03-06 14:30           ` Robin Murphy
2017-03-06 14:56           ` Mason
2017-03-06 14:56             ` Mason

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.