Panic in quirk_usb_early_handoff
Mason
slash.tmp at free.fr
Mon Mar 6 04:42:26 PST 2017
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>
More information about the linux-arm-kernel
mailing list