[fedora-arm] Data abort when booting utilite

Steven Falco stevenfalco at gmail.com
Sat Jul 4 19:42:47 UTC 2015


Thanks to advice from folks on the list, I've gotten a little further with
booting the utilite with rawhide, but I'm not there yet.

I ran into problems with the extlinux.conf and boot.scr, so I decided to
try booting manually (addresses were chosen from boot.scr):

ext4load mmc2 2:1 0x14000000 uImage
ext4load mmc2 2:1 0x32000000 uInitrd
ext4load mmc2 2:1 0x12000000 dtb-4.2.0-0.rc0.git4.1.fc23.armv7hl/imx6q-cm-fx6.dtb
bootm 0x14000000 0x32000000 0x12000000

The above results in a "data abort" right after "Loading Kernel Image" is
printed.

Here is the register dump:

data abort
pc : [<8ff719e6>] lr : [<8ff719cb>]
reloc pc : [<1782d9e6>] lr : [<1782d9cb>]
sp : 8f543c98 ip : 0000001c fp : 00008000
r10: 14000040 r9 : 8f543eb0 r8 : 8f543d0c
r7 : 00800000 r6 : 00008000 r5 : 140fc041 r4 : 00604450
r3 : 14604490 r2 : 00103fff r1 : 000000a6 r0 : 00000024
Flags: Nzcv IRQs off FIQs off Mode SVC_32
Resetting CPU ...

>From objdump, the reloc pc is inside memmove (see disassembly below).
I next instrumented memmove() since it is the failing function.  It is
called with these arguments:

memmove: 00008000 14000040 00604450

That looks correct - we are trying to relocate the kernel from 14000040
down to 00008000.

Looking at the disassembly, r5 is the source pointer, and r2 is the
destination pointer.  I think r3 is the desired "last source address"
because the memmove loop keeps comparing r5 to r3, if I am reading the
disassembly correctly.

But I don't see any reason for the data abort.  The memmove has apparently
been running for a while; the source and destination pointers have advanced
roughly 1 MB out of the total 6 MB kernel size.  And it doesn't look like
anything is overlapping.

I've also tried some other addresses for the ext4load commands, but I keep
getting the same data abort.

Suggestions greatly appreciated.

	Steve


1782d9b4 <memmove>:
1782d9b4:	b573      	push	{r0, r1, r4, r5, r6, lr}
1782d9b6:	460b      	mov	r3, r1
1782d9b8:	4606      	mov	r6, r0
1782d9ba:	460d      	mov	r5, r1
1782d9bc:	9200      	str	r2, [sp, #0]
1782d9be:	4614      	mov	r4, r2
1782d9c0:	490e      	ldr	r1, [pc, #56]	; (1782d9fc <memmove+0x48>)
1782d9c2:	4602      	mov	r2, r0
1782d9c4:	480e      	ldr	r0, [pc, #56]	; (1782da00 <memmove+0x4c>)
1782d9c6:	f7e2 ff17 	bl	178107f8 <printf>
1782d9ca:	42ae      	cmp	r6, r5
1782d9cc:	d013      	beq.n	1782d9f6 <memmove+0x42>
1782d9ce:	eb05 0304 	add.w	r3, r5, r4
1782d9d2:	d807      	bhi.n	1782d9e4 <memmove+0x30>
1782d9d4:	1e72      	subs	r2, r6, #1
1782d9d6:	429d      	cmp	r5, r3
1782d9d8:	d00d      	beq.n	1782d9f6 <memmove+0x42>
1782d9da:	f815 1b01 	ldrb.w	r1, [r5], #1
1782d9de:	f802 1f01 	strb.w	r1, [r2, #1]!
1782d9e2:	e7f8      	b.n	1782d9d6 <memmove+0x22>
1782d9e4:	1932      	adds	r2, r6, r4
1782d9e6:	1ae4      	subs	r4, r4, r3
1782d9e8:	42e3      	cmn	r3, r4
1782d9ea:	d004      	beq.n	1782d9f6 <memmove+0x42>
1782d9ec:	f813 1d01 	ldrb.w	r1, [r3, #-1]!
1782d9f0:	f802 1d01 	strb.w	r1, [r2, #-1]!
1782d9f4:	e7f8      	b.n	1782d9e8 <memmove+0x34>
1782d9f6:	4630      	mov	r0, r6
1782d9f8:	b002      	add	sp, #8
1782d9fa:	bd70      	pop	{r4, r5, r6, pc}
1782d9fc:	178346bc 	.word	0x178346bc
1782da00:	178428e5 	.word	0x178428e5


More information about the arm mailing list