All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-arm] [PATCH v2 0/4] target-arm: Add some omitted dma cache coherency flags
@ 2017-02-09 12:53 Alexander Graf
  2017-02-09 12:53 ` [Qemu-arm] [PATCH v2 1/4] target-arm: Declare virtio-mmio as dma-coherent in dt Alexander Graf
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Alexander Graf @ 2017-02-09 12:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ard Biesheuvel, qemu-arm, Laszlo Ersek, Shannon Zhao, mst

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(+)

-- 
2.10.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-02-10 15:03 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-09 12:53 [Qemu-arm] [PATCH v2 0/4] target-arm: Add some omitted dma cache coherency flags Alexander Graf
2017-02-09 12:53 ` [Qemu-arm] [PATCH v2 1/4] target-arm: Declare virtio-mmio as dma-coherent in dt Alexander Graf
2017-02-09 12:53 ` [Qemu-arm] [PATCH v2 2/4] hw/arm/virt: Declare virtio-mmio as dma cache coherent in ACPI Alexander Graf
2017-02-10  2:49   ` [Qemu-arm] [Qemu-devel] " Shannon Zhao
2017-02-09 12:53 ` [Qemu-arm] [PATCH v2 3/4] hw/arm/virt: Declare fwcfg " Alexander Graf
2017-02-10  2:49   ` [Qemu-arm] [Qemu-devel] " Shannon Zhao
2017-02-09 12:53 ` [Qemu-arm] [PATCH v2 4/4] hw/arm/virt: Declare fwcfg as dma cache coherent in dt Alexander Graf
2017-02-09 13:15 ` [Qemu-arm] [PATCH v2 0/4] target-arm: Add some omitted dma cache coherency flags Laszlo Ersek
2017-02-09 18:13   ` Michael S. Tsirkin
2017-02-09 18:27     ` Alexander Graf
2017-02-09 20:28       ` Laszlo Ersek
2017-02-09 17:51 ` [Qemu-devel] " Ard Biesheuvel
2017-02-10 15:02 ` [Qemu-arm] " Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.