Jessica Clarke
Jessica Clarke
Because an invalidate is a programmer-initiated instruction to potentially change memory, which is a dirtying action in my book
The result being that it's basically impossible to delegate CBO.INVAL permission to entities that sit above the layer doing swap, for example, even if you make sure to clean all...
You could equally view it as an uncached (cache-bypassing) load, cached store of the uncached data and clean. Look, I get the argument, but I do not agree with it,...
1 isn't in the cache, it's in DRAM. 2 is in the cache, until you invalidate it, at which point it's 1 again.
and then reappears on subsequent swap-in (step 9) because it's re-written to the cache by the kernel
> In the former case, the hart is a consumer (i.e. reader) of data produced by the non-coherent agent The sequence for this is: 1. invalidate 2. initiate + wait...
> > ``` > > 5. Userspace reads 2 from page (kernel swaps page in but leaves page on disk) > > ``` > > So the value 2 should...
> > ``` > > 8. Kernel evicts page again, but doesn't re-write out to disk because still dirty > > ``` > > Do you mean still _clean_ (or...
Why wouldn't the driver do the invalidate then in that situation? It knows best whether the DMA is coherent, and is the one initiating it, so it should be the...
Ping now the spec is in public review?