I don't understand one part. If you read from an arbitrary memory location (during speculative execution, I get all that) how does that read pull data from a different process? Aren't all addresses virtual until they go through the MMU and get translated to a physical address depending on the process?
Or does this work only because the kernel exists in the same virtual address space, hence KPTI as a mitigation?