xemu/ui
Alex Bennée 8bb93c6f99 ui/console: ensure graphic updates don't race with TCG vCPUs
Commit 8d04fb55..

  tcg: drop global lock during TCG code execution

..broke the assumption that updates to the GUI couldn't happen at the
same time as TCG vCPUs where running. As a result the TCG vCPU could
still be updating a directly mapped frame-buffer while the display
side was updating. This would cause artefacts to appear when the
update code assumed that memory block hadn't changed.

The simplest solution is to ensure the two things can't happen at the
same time like the old BQL locking scheme. Here we use the solution
introduced for MTTCG and schedule the update as async_safe_work when
we know no vCPUs can be running.

Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20170315144825.3108-1-alex.bennee@linaro.org
Cc: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

[ kraxel: updated comment clarifying the display adapters are buggy
          and this is a temporary workaround ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-03-17 10:17:21 +01:00
..
shader console-gl: add opengl rendering helper functions 2015-05-05 10:48:22 +02:00
Makefile.objs input: linux evdev support 2016-03-08 12:20:11 +01:00
cocoa.m ui/cocoa.m: add toast file support 2017-03-14 15:09:56 +00:00
console-gl.c ui/console-gl: Add support for big endian display surfaces 2016-06-10 11:13:59 +02:00
console.c ui/console: ensure graphic updates don't race with TCG vCPUs 2017-03-17 10:17:21 +01:00
curses.c curses: Fix compiler warnings (Mingw-w64 redefinition of macro KEY_EVENT) 2017-01-10 08:14:20 +01:00
curses_keys.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
cursor.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
cursor_hidden.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
cursor_left_ptr.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
egl-context.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
egl-helpers.c egl-helpers: Support newer MESA versions 2017-02-20 12:46:09 +01:00
gtk-egl.c gtk-egl: add scanout_disable support 2017-02-27 16:15:29 +01:00
gtk-gl-area.c console: rename dpy_gl_scanout to dpy_gl_scanout_texture 2017-02-27 16:15:28 +01:00
gtk.c ui: Use XkbGetMap and XkbGetNames instead of XkbGetKeyboard 2017-02-27 16:19:47 +01:00
input-keymap.c ps2: Fix lost scancodes by recent changes 2017-01-10 08:14:20 +01:00
input-legacy.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
input-linux.c ui: add support for mice with extra/side buttons 2017-01-31 08:14:51 +01:00
input.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
keymaps.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
keymaps.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
qemu-pixman.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
qemu-x509.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
sdl.c ui: Use XkbGetMap and XkbGetNames instead of XkbGetKeyboard 2017-02-27 16:19:47 +01:00
sdl2-2d.c SDL2: add bgrx pixel format 2016-06-03 08:23:26 +02:00
sdl2-gl.c sdl2: add scanout_disable support 2017-02-27 16:15:29 +01:00
sdl2-input.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
sdl2-keymap.h sdl2: keymap fixups 2014-09-16 08:07:05 +02:00
sdl2.c sdl2: add scanout_disable support 2017-02-27 16:15:29 +01:00
sdl_keysym.h ui/sdl2 : initial port to SDL 2.0 (v2.0) 2014-03-05 09:52:05 +01:00
sdl_zoom.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
sdl_zoom.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
sdl_zoom_template.h sdl: Fix heap smash in sdl_zoom_rgb{16,32} for int > 32 bits 2013-01-15 18:25:30 -06:00
shader.c Changed malloc to g_malloc, free to g_free in ui/shader.c 2016-05-12 16:41:46 +02:00
spice-core.c spice: add display & head options 2017-02-27 16:21:23 +01:00
spice-display.c spice: add display & head options 2017-02-27 16:21:23 +01:00
spice-input.c qapi: rename input buttons 2016-03-01 08:19:07 +01:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
vgafont.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
vnc-auth-sasl.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
vnc-auth-sasl.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-auth-vencrypt.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
vnc-auth-vencrypt.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-enc-hextile-template.h pixman/vnc: use pixman images in vnc. 2012-11-01 14:00:04 +01:00
vnc-enc-hextile.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-tight.c ui/vnc-enc-tight: remove switch and have single return 2016-09-28 12:55:09 +02:00
vnc-enc-tight.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zlib.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle-template.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zywrle-template.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zywrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-jobs.c ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +01:00
vnc-jobs.h ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +01:00
vnc-palette.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
vnc-palette.h all: Clean up includes 2016-02-23 12:43:05 +00:00
vnc-ws.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
vnc-ws.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc.c cirrus/vnc: zap bitblit support from console code. 2017-03-16 08:58:15 +01:00
vnc.h ui: refactor VncDisplay to allow multiple listening sockets 2017-02-08 14:59:37 +01:00
vnc_keysym.h qemu-char: add cyrillic characters 'numerosign' to VNC keysyms 2015-03-10 08:15:34 +03:00
x_keymap.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
x_keymap.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00