QSD8250 illegal instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm not sure if this is the right place but I don't know who else to address with this problem. The users of this list seem to know much about the qsd8* platform.

We are porting linux to the qsd8250 based htc leo device.

The code can be found at git://git.linuxtogo.org/home/groups/mobile-linux/kernel.git htc-msm-2.6.32 web: http://git.linuxtogo.org/?p=groups/mobile-linux/kernel.git;a=shortlog;h=refs/heads/htc-msm-2.6.32

It is based on the android-msm-2.6.32 branch from the google git at: http://android.git.kernel.org/?p=kernel/msm.git;a=shortlog;h=refs/heads/android-msm-2.6.32

General information on the device and on this subject can be found here: http://htc-linux.org/wiki/index.php?title=Leo


A lot of stuff is working out of the box. Our big problem is that we get illegal instructions on userspace binary execution. Some program work well, others will always crash with segfault / illegal instruction errors. For a while we thought that it is a question of using the correct toolchain and flags to compile. But it seems that the errors occur with various configurations. Also we tested rootfilesystems that worked perfectly well on the htc passion aka nexus one (same qsd8250) and they crashed in the same way. This makes it look like we have a problem with our kernel or that there are some hardware differences.

My understanding about these low-level things is bad so I can't go into great detail. I would like to to take the liberty to refer to the mailing list where the problem is discussed:

http://lists.linuxtogo.org/pipermail/mobile-linux-discuss/2010-May/thread.html

It would be very nice if somebody could take a look at that. We are stI will paste the mail with the latest finding for easier reference.

On Fri, May 28, 2010 at 3:09 PM, Le Tama <letama at free.fr> wrote:

Hi Guys,

I did a new experiment that yielded interesting results.

Here is what I did: I compiled eclair qaesd for ffa to get android binaries
with android toolchain.

With these binaries, I did a init script using android sh binary, it
reaches
the prompt.

I also launched static adbd from this script, that was terminated because
of
invalid instruction:

[   11.376047] adbd (42): undefined instruction: pc=0000fc60
[   11.380015] Code: e5843000 e8bd8010 e59f102c e1a0c000 (e52d4004)
[   11.387759] PL:send_signal (sig=4, from_ancestor=0)


I dumped the compiled adbd with objdump, here is the location:

0000fc58 <pthread_attr_init>:
   fc58:       e59f102c        ldr     r1, [pc, #44]   ; fc8c
<pthread_attr_init+0x34>
   fc5c:       e1a0c000        mov     ip, r0
   fc60:       e52d4004        push    {r4}            ; (str r4, [sp,
#-4]!)
   fc64:       e59f4024        ldr     r4, [pc, #36]   ; fc90
<pthread_attr_init+0x38>
   fc68:       e08f3001        add     r3, pc, r1
   fc6c:       e0834004        add     r4, r3, r4
   fc70:       e8b4000f        ldm     r4!, {r0, r1, r2, r3}
   fc74:       e8ac000f        stmia   ip!, {r0, r1, r2, r3}
   fc78:       e8940003        ldm     r4, {r0, r1}
   fc7c:       e88c0003        stm     ip, {r0, r1}
   fc80:       e3a00000        mov     r0, #0
   fc84:       e8bd0010        pop     {r4}
   fc88:       e12fff1e        bx      lr
   fc8c:       0001890c        .word   0x0001890c
   fc90:       ffffbe04        .word   0xffffbe04

So, as you can see, the undefined instruction is the push {r4} line.

If I interpret well what I see, the instruction is legit, memory is ok, but
the cpu considers it invalid.

Now, the question is why ? Invalid instruction cache ? Wrong processor
state
?

This is out of my league, if someone has an explanation ?

Best,

LeTama



_______________________________________________
Mobile-linux-discuss mailing list
Mobile-linux-discuss at linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/mobile-linux-discuss


We've been struggeling to get past this problem for quite a while now. Any hint is welcome!

Kind regards,

Lukas

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux