On Thu, Sep 27, 2018 at 04:55:38PM +0100, Peter Maydell wrote: > If QEMU is compiled with clang-7 it results in the warning: > > hw/display/qxl.c:1884:19: error: misaligned or large atomic operation > may incur significant performance penalty [-Werror,-Watomic-alignment] > old_pending = atomic_fetch_or(&d->ram->int_pending, le_events); > ^ > > This is because the Spice headers forgot to define the QXLRam struct > with the '__aligned__(4)' attribute. clang 7 and newer will thus > warn that the access here to int_pending might not be 4-aligned > (because the QXLRam object d->ram points at might start at a > misaligned address). In fact we set up d->ram in init_qxl_ram() so > it always starts at a 4K boundary, so we know the atomic access here > is OK. > > Newer Spice versions (with Spice commit > beda5ec7a6848be20c0cac2a9a8ef2a41e8069c1) will fix the bug; > for older Spice versions, work around it by telling the compiler > explicitly that the alignment is OK using __builtin_assume_aligned().
Added to vga queue. cheers, Gerd