[PATCH] Remove CPU_32v6K dependencies in asm/spinlock.h

Catalin Marinas catalin.marinas at arm.com
Mon Jan 17 07:12:55 EST 2011


On 17 January 2011 10:53, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Mon, Jan 17, 2011 at 10:37:39AM +0000, Russell King - ARM Linux wrote:
>> 3. Do we always need a dsb prior to a sev?  Maybe the SPEAR patches need
>> another review to determine how they're using sev()?
>
> FYI, this is how the SPEAR patches use sev():
>
> | +static void __init wakeup_secondary(void)
> | +{
> | +     /* nobody is to be released from the pen yet */
> | +     pen_release = -1;
> | +
> | +     /*
> | +      * Write the address of secondary startup into the system-wide
> | +      * location (presently it is in SRAM). The BootMonitor waits
> | +      * for this register to become non-zero.
> | +      * We must also send an sev to wake it up
> | +      */
> | +     __raw_writel(BSYM(virt_to_phys(spear13xx_secondary_startup)),
> | +                     __io_address(SPEAR13XX_SYS_LOCATION));
> | +
> | +     mb();
> | +
> | +     /*
> | +      * Send a 'sev' to wake the secondary core from WFE.
> | +      */
> | +     sev();
> | +}
>
> so the dsb() is inside mb(), before the outer sync call.

BTW, don't we need some cache flushing for the pen_release?

-- 
Catalin



More information about the linux-arm-kernel mailing list