On Wed, May 29, 2002 at 09:50:52AM -0700, Justin Carlson wrote:
> Looking at the cache routines, I've noticed that there's been a
> relatively recent introduction of a __flush_cache_all() routine.
> Looking at oss.sgi.com's cvs logs, I see this comment:
>
> >Introduce __flush_cache_all() which flushes the cache no matter if
> >this operation is necessary from the mm point of view or not.
>
> Some questions:
>
> Which caches does this apply to? It looks like the current
> implementations assume L1 only.
The operation got introduced for the R10000 where we only need to flush
the caches during initialization or the (unlikely on Origin) case of
> Would anyone have a problem with renaming this function? To me, at
> least, it's rather confusing to have all of:
No. You may have noticed that I already introduced a bunch of local_*()
functions for the TLB stuff for the same reason - the old functions had
poor names. The common Linux conventions to use extra underscores for a
more basic version of a function (like get_user vs __get_user etc.) is
frequently not expressive enough.
> flush_cache_all()
> _flush_cache_all()
> __flush_cache_all()
> ___flush_cache_all()
Odd number of underscores means it's a pointer ;)
> defined, especially when the latter two mean something significantly
> different from the former two. I'd prefer calling the new one
> {_}force_flush_l1_caches() or somesuch.
Ok.
> In a related note, one of the few places this routine is called is the
> kgdb stub routines (in arch/mips/kernel/gdb-stub.c):
>
> void set_async_breakpoint(unsigned int epc)
> {
> int cpu = smp_processor_id();
>
> async_bp[cpu].addr = epc;
> async_bp[cpu].val = *(unsigned *)epc;
> *(unsigned *)epc = BP;
> __flush_cache_all();
> }
>
> Shouldn't that be a flush_icache_range() call anyways?
Yes.
Ralf
|