Re: SGI MIPS, Speculative Execution issue
Jonathan Stone <[email protected]> Sat, 26 Oct 2024 17:06:48 +0000 (UTC)
| Newsgroups | gmane.os.netbsd.ports.mips.devel |
|---|---|
| Message-ID | <[email protected]> |
[[ non-cache-coherent question, rather than speculative execution ]] For uniprocessor MIPS systems, "non-cache-coherent" usually means that changing memory via DMA is not reflected in the caches. Software has to explicitly invalidate any cache entries for a page, after a DMA write (I/O read operation) on a page completes. That includes both I-cache(s) and D-cache(s). If your caches are write-back rather than write-through, you may also need to push any matching (and therefore dirty) D-cache lines to memory, before a DMA read (I/O write operation). The I-cache and D-cache are also not coherent with each other. So if you modify code on the fly -- for example, setting a breakpoint by writing an invalid instruction into code -- you will need to flush any possible I-cache hit for the modified memory location(s). The above is accurate for MIPS R2000A/R3000 and R4000/R4400. I've not personally delved that deep on an R10000.