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