reboot not working on linux-2.6.37 for ARMv7

Santosh Shilimkar santosh.shilimkar at ti.com
Fri Feb 11 07:10:46 EST 2011


> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-
> arm-kernel-bounces at lists.infradead.org] On Behalf Of Russell King -
> ARM Linux
> Sent: Friday, February 11, 2011 5:33 PM
> To: shiraz hashim
> Cc: Armando VISCONTI; amit.goel at st.com; vipin.kumar at st.com; linux-
> arm-kernel at lists.infradead.org
> Subject: Re: reboot not working on linux-2.6.37 for ARMv7
>
> On Fri, Feb 11, 2011 at 05:01:06PM +0530, shiraz hashim wrote:
> > Hi,
> >
> > I am using linux-2.6.37 on our ARM Cortex A9 (dual core) SMP
> platform
> > with PL310 as Level 2 cache. We observe that on reboot the control
> > is not able to reach to the arch_reset.
> >
> > The problem happens when L1 cache is disabled in
> > arm_machine_restart, through cpu_proc_fin() and L2 cache is
> flushed.
>
> Where's the L2 cache flush?  The sequence is:
>
>         /* Clean and invalidate caches */
>         flush_cache_all();
>         /* Turn off caching */
>         cpu_proc_fin();
>         /* Push out any further dirty data, and ensure cache is
> empty */
>         flush_cache_all();
>
> and flush_cache_all() calls v7_flush_kern_cache_all() in
> arch/arm/mm/cache-v7.S.
>
> I do hope you're not modifying flush_cache_all() to also call the L2
> cache functions because that's wrong.
>
I don't want to hijack this thread. But don't we need L2 flush too in
reboot path ? If the arch_reset function fails because of the data has
not made it main memory and stuck in L2 which is used as part of this
function. With C bit disabled, there won't be any look up done in L2.

May be I am missing something here.

Regards,
Santosh



More information about the linux-arm-kernel mailing list