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.
Would anyone have a problem with renaming this function? To me, at
least, it's rather confusing to have all of:
flush_cache_all()
_flush_cache_all()
__flush_cache_all()
___flush_cache_all()
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.
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?
Thanks,
Justin
|