From: Martijn Stolk <martijn.stolk@gmail.com>
To: linux-arm-msm@vger.kernel.org
Subject: Re: QSD8250 illegal instruction on WinCE devices
Date: Tue, 29 Jun 2010 23:29:46 +0200 [thread overview]
Message-ID: <4C2A65CA.4030102@gmail.com> (raw)
In-Reply-To: <1277843888.30743.42.camel@c-dwalke-linux.qualcomm.com>
On 06/29/2010 10:38 PM, Daniel Walker wrote:
> On Tue, 2010-06-29 at 21:03 +0200, Martijn Stolk wrote:
>> No worries. I wanted to isolate what specifically fixes the problem
>> myself in order to make a minimal patch. I'm also hoping for some help
>> regarding information, as I don't have access to official QSD8250
>> documentation.
>>
>> I've found the key register that differs between between how it is
>> initialized for Windows CE and for Linux, and solves the problem for us.
>> It is the Auxilliary Control Register (cp15, 0, c1, c0, 1).
>>
>> For Windows CE it is initialized to 0x002C0077
>> (=0b00000000001011000000000001110111)
>> For Linux it is initialized to 0x000C0037
>> (=0b00000000000011000000000000110111)
>>
>> The following page explains this register for the Cortex-A8, the ARM
>> core on which the QSD8250 is based:
>> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbffjhh.html
>>
>> The 7th bit (bit 6 on that page) controls the behaviour of the
>> Invalidate All& by MVA instructions. It needs to be disabled for Linux.
>>
>> The 22nd bit, however, is in an area marked as "reserved" on that page.
>> I am very curious what this bit does. Maybe this reserved area is
>> documented in QSD8250 documentation? Could anyone provide clearity about
>> this bit?
>
> You found that you needed both of these set? One or the other wasn't
> enough.
>
> I'm not sure that we can open talk about what this 22nd bit does, so I'd
> just set it like you have it and not worry about it.
>
> Daniel
>
Here's a table on what I noticed during my tests:
bit: 7 | 22 | remark
1 | 1 | Linux crashes due to segmentation faults
0 | 1 | Linux works fine, no crashes, no segfaults
0 | 0 | Same as above
1 | 0 | Linux doesn't segfault immediately, but seems to only
cause problems
when the device is idling for a second or less (maybe
power management
or something).
Disabling bit 7 solves the segfault issues already. Bit 22 just causes
some mysterious behaviour which I am curious about. We're able to
continue without knowing this of course, but I was hoping you were
allowed to answer a specific question like this. Don't worry if you can't.
Thanks either way for your help.
Regards,
Martijn
prev parent reply other threads:[~2010-06-29 21:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-22 0:14 QSD8250 illegal instruction on WinCE devices Lukas-David Gorris
2010-06-27 21:50 ` Lukas-David Gorris
2010-06-28 17:34 ` Daniel Walker
2010-06-28 22:24 ` Martijn Stolk
2010-06-29 16:49 ` Daniel Walker
2010-06-29 19:03 ` Martijn Stolk
2010-06-29 20:38 ` Daniel Walker
2010-06-29 21:29 ` Martijn Stolk [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C2A65CA.4030102@gmail.com \
--to=martijn.stolk@gmail.com \
--cc=linux-arm-msm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.