On 9 February 2017 at 12:53, Alexander Graf <ag...@suse.de> wrote: > ARM is amazing when it comes to cache coherency and VMs. While any sane > architecture allows the host to override the guest's caching attributes, > that's very hard to do on ARM. > > That means that the guest may directly access guest memory bypassing the > cache while QEMU happily writes to / reads from cache. The end result is > very nasty, because both sides see very different views of the world. > > That means that we need to be very cautious to tell guests that devices > that QEMU emulates are going to use data in the cache rather than directly > on memory. > > We added this to PCI a while back for DT (5d636e21 "hw/arm/virt: mark the PCIe > host controller as DMA coherent in the DT") and ACPI (bc64b96 "hw/arm/virt- > acpi-build: _CCA attribute is compulsory") but never updated virtio-mmio or > fw-cfg in DT or ACPI tables. > > This patch set adds the respective cache coherency flags for them in both DT > and > ACPI. > > Fortunately, no guests except for Linux 4.9.7 and 4.9.8 are broken because of > this. Upstream realized quickly enough that every user of virtio-mmio out > there > describes its cache coherency incorrectly and reverted the patch that would > require said dma coherency flag. But we should be safe for the future and "do > the right thing". > > Alexander Graf (4): > target-arm: Declare virtio-mmio as dma-coherent in dt > hw/arm/virt: Declare virtio-mmio as dma cache coherent in ACPI > hw/arm/virt: Declare fwcfg as dma cache coherent in ACPI > hw/arm/virt: Declare fwcfg as dma cache coherent in dt > > hw/arm/vexpress.c | 1 + > hw/arm/virt-acpi-build.c | 2 ++ > hw/arm/virt.c | 2 ++ > 3 files changed, 5 insertions(+)
The patches in this series have more lines of Reviewed-by: tags than they do actual code changes :-) Thanks, applied to target-arm.next. -- PMM