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

From: [email-masked] (Christoffer Dall)
Date: Tue, 18 Feb 2014 13:32:32 -0800

On Tue, Feb 18, 2014 at 04:59:23PM +0000, Sudeep Holla wrote:
> 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.
> 
> [2] http://releases.linaro.org/14.01/openembedded/vexpress-lsk/

Thanks, unfortunately when I flash this newest firmware, I just see:

Setting DVI mode for VGA.
Releasing Daughterboard resets.
Switching MCC log to UART1.

And it never seems to proceed.  Any pointers to what I could be doing
wrong?

-Christoffer