On 26 July 2015 at 11:17, Peter Maydell <peter.mayd...@linaro.org> wrote: > On 26 July 2015 at 10:31, Laszlo Ersek <ler...@redhat.com> wrote: >> On 07/25/15 11:49, Gerd Hoffmann wrote: >>> virtio-vga in vga-compat mode uses a framebuffer with the usual dirty >>> tracking logic in pci bar 0 (simliar to stdvga). Which is exactly the >>> thing causing the cache coherency issues on aarch64 if I understand >>> things correctly. >> >> Yes. :( > > The question for cache-coherency of an emulated framebuffer with > KVM is simply "does the guest set up this region of physical address > space as Normal Cacheable memory, or does it set it up as Device > or some other non-cacheable memory attribute type?". Whether the > framebuffer is part of a PCI BAR or shared with "guest RAM" doesn't > matter for this. (Of course it may matter for the guest if the > guest makes assumptions about what kind of mapping it needs to > use for any PCI BAR.)
...and note also that it doesn't matter for this whether the guest expects the graphics device to automatically notice writes via dirty-tracking or whether it explicitly says "hey I wrote to the framebuffer" somehow -- if the guest and QEMU disagree about whether the memory is cacheable then you are potentially going to run into corruption problems. -- PMM