Le 27/03/2020 à 19:19, Segher Boessenkool a écrit :
On Fri, Mar 27, 2020 at 04:12:13PM +0100, Christophe Leroy wrote:
Maybe you could also change invalidate_dcache_range():
for (i = 0; i < size >> shift; i++, addr += bytes) {
if (IS_ENABLED(CONFIG_PPC_BOOK3S_64))
dcbf(addr);
else
dcbi(addr);
}
But please note that flushing is pretty much the opposite from
invalidating (a flush (dcbf) makes sure that what is in the cache now
ends up in memory, while an invalidate (dcbi) makes sure it will *not*
end up in memory). (Both will remove the addressed cache line from the
data caches).
So you cannot blindly replace them; in all cases you need to look and
see if it does what you need here.
(dcbi is much harder to use correctly -- it can race very easily -- so
in practice you will be fine most of the time; but be careful around
startup code and the like).
At the time being, invalidate_dcache_range() is used in only one place,
and that's a place for PPC32 only. So I was just suggesting that just in
case. Maybe there is no point in bothering with that at the time being.
Christophe