Subject: BUG: Null pointer dereference on booting TC2 with vexpress_defconfig

From: [email-masked] (Sudeep Holla)
Date: Tue, 18 Feb 2014 16:59:23 +0000

On 18/02/14 16:33, Christoffer Dall wrote:
> On 18 February 2014 03:04, Sudeep Holla <[email-masked]> wrote:
>> On 17/02/14 22:39, Christoffer Dall wrote:
>>> Booting my TC2 using 3.14-rc3 and vexpress_defconfig causes a NULL
>>> pointer dereference in schedule_work_on.
>>>
>>> A quick look at the trace indicates that schedule_work() is called
>>> before system_wq is initialized.
>>>
>>> Further, a bisect seems to indicate that this call path is triggered by
>>> the changes in this merge commit of Theodore T'so's random_for_linus
>>> tag:
>>> 0891ad829d2a0501053703df66029e843e3b8365
>>>
>>> (However, my bisect may not be 100% correct, as some of the commits
>>> between 3.13 and 3.12 don't boot the TC2 with vexpress_defconfig,
>>> specifically the ones after f9300eaaac1ca300083ad41937923a90cc3a2394,
>>> which causes boot to halt after "ARM CCI driver probed").
>>>
>> Yes that requires some changes in defconfig to continue to work across
>> these changes(mainly have all these new configs disabled)
>>
> 
> So vexpress_defconfig is known to not work on TC2?
>

I would say yes before v3.13 for TC2 at-least. Pawel's commit: 81d6e719d1f8(
ARM: vexpress: Enable platform-specific options in defconfig) enabled several VE
specific features.

>>> Disabling CONFIG_ARCH_VEXPRESS_TC2_PM avoids the issue.
>>>
>> Are you just disabling this or even CONFIG_MCPM ? Are the secondaries cpus
>> coming up ?
>>
> 
> Disabling CONFIG_ARCH_VEXPRESS_TC2_PM allows the system to boot, but
> only with one CPU.
> 
> Disabling CONFIG_MCPM allows SMP boot as well.
> 
Yes that's what I suspected.

>>> I'm not familiar enough with any of these code paths to quicly identify
>>> what the issue could be.  Apologies if I missed a previous post about
>>> this issue (I couldn't find anything but would be surprised if I'm the
>>> only one doing vexpress_defconfig on a TC2).
>>>
>> I just tried and it works fine. If CONFIG_MCPM and CONFIG_ARCH_VEXPRESS_TC2_PM,
>> it requires some changes in board configurations(for bootmon), I assume you have
>> done those changes.
>>
> 
> What works fine? With both configs enabled?
> 
Yes with the default vexpress_defconfig as is in the mainline.

> I didn't change anything on the boot monitor side.  Can you give me a
> pointer to the specifics?  Was there an announcement about this
> somewhere that I failed to locate?
> 

You might be having very old firmware that doesn't support percpu mailbox and
hence can't enable CONFIG_MCPM. You can refer CFGREG48 in Section 3.3.2 of [1]
for details. You can grab the latest firmware in single step from [2] under
Firmware tab.

Regards,
Sudeep

[1] http://infocenter.arm.com/help/topic/com.arm.doc.ddi0503g/CHDCADED.html
[2] http://releases.linaro.org/14.01/openembedded/vexpress-lsk/