Hi, I have been confused by this question for a long time, both in hardware and software. First, in the real x86 hardware architectures, while the DMA is operating, can other CPUs access the same memory region? Or the DMA controller will hold the bus and the memory exclusively and CPUs have to wait? Of course, we assume that the operating system is too stupid to provide the mutex in software. Second, if the CPUs have to wait, then how about in QEMU? When QEMU is emulating the DMA, can other vcpus access the memory (or exactly, the same memory region)? If not, how does QEMU achieve this? That is, how does QEMU prevent other vcpus to access the memory? I have read through the part of the emulation of DMA, but I didn't see anything related to this. Thanks very much!
--Le Tan