On Tue, Apr 12, 2011 at 04:16,  <[email protected]> wrote:
> Revision 9824 Author sonicz Date 2011-04-12 04:16:04 -0400 (Tue, 12 Apr
> 2011)
>
> Log Message
>
> blackfin: SMP: Mike's commit 9589 causes recursive invoke in SMP icache
> flush function.
>
> The call to blackfin arch icache flush function is on purpose. Mike's commit
> "Blackfin: SMP: use standard cache functions" cause recursive invoke.
> Roll back and fix.
>
> Modified: trunk/arch/blackfin/mach-common/smp.c (9823 => 9824)
>
>       struct blackfin_flush_data *fdata = info;
>
>       /* Invalidate the memory holding the bounds of the flushed region. */
> -     invalidate_dcache_range((unsigned long)fdata,
> -             (unsigned long)fdata + sizeof(*fdata));
> +     blackfin_dcache_invalidate_range((unsigned long)fdata,
> +                                      (unsigned long)fdata + sizeof(*fdata));
>
> -     flush_icache_range(fdata->start, fdata->end);
> +     blackfin_icache_flush_range(fdata->start, fdata->end);
>  }

i guess the problem is that flush_icache_range() calls
flush_icache_range_others() which is implemented by ipi_flush_icache()
?  the reason i changed this code was two fold: it was missing logic
from the common implementation, and it was missing comments.  well i
guess three fold ... i was dumb.

if we need this func to only call the internal one, then there should
be a comment to that effect.  and this code needs an SSYNC() as that
macro only works on the active core.
-mike
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to