mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
MTTCG regression fixes for rc2
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJY2jLeAAoJEPvQ2wlanipED3sH/R1rexS6OKyKannz5SrqxgxK l3oD/OxBLT1KsBRxAtu7g6RR84Mzjfp5ILAYcDLv97uG8Y5AaVVhXXxv3HsDRE5E US95v5J6ZjqYwDs2ryNtDO27GDF56TAx8nfpX7kxkxRM7E9GSEYjrQSkwebOkYrA svdu1TpYYC++QlUcAe7rQCAoPRE4KbaorADiPw/6NJmq4fr0hMLZ0Cjsi+RaSpn8 lkyJNlyQl3cHnFPDJInm3V+kX6kaEF/O/fDQHCWB30IbkE1cVrL7/1E21eaqf46M 94CtkowSnCmC6zoGmZO7Nci6emyzlv3SUeQL2AmdcVURZlNncdtuzmPaqeEDmwk= =d0OM -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/stsquad/tags/pull-mttcg-fixups-for-rc2-280317-1' into staging MTTCG regression fixes for rc2 # gpg: Signature made Tue 28 Mar 2017 10:54:38 BST # gpg: using RSA key 0xFBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * remotes/stsquad/tags/pull-mttcg-fixups-for-rc2-280317-1: replay/replay.c: bump REPLAY_VERSION tcg: Add a new line after incompatibility warning ui/console: use exclusive mechanism directly ui/console: ensure do_safe_dpy_refresh holds BQL bsd-user: align use of mmap_lock to that of linux-user user-exec: handle synchronous signals from QEMU gracefully Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
0491c22154
7 changed files with 30 additions and 27 deletions
18
ui/console.c
18
ui/console.c
|
@ -1576,17 +1576,22 @@ bool dpy_gfx_check_format(QemuConsole *con,
|
|||
}
|
||||
|
||||
/*
|
||||
* Safe DPY refresh for TCG guests. This runs when the TCG vCPUs are
|
||||
* quiescent so we can avoid races between dirty page tracking for
|
||||
* direct frame-buffer access by the guest.
|
||||
* Safe DPY refresh for TCG guests. We use the exclusive mechanism to
|
||||
* ensure the TCG vCPUs are quiescent so we can avoid races between
|
||||
* dirty page tracking for direct frame-buffer access by the guest.
|
||||
*
|
||||
* This is a temporary stopgap until we've fixed the dirty tracking
|
||||
* races in display adapters.
|
||||
*/
|
||||
static void do_safe_dpy_refresh(CPUState *cpu, run_on_cpu_data opaque)
|
||||
static void do_safe_dpy_refresh(DisplayChangeListener *dcl)
|
||||
{
|
||||
DisplayChangeListener *dcl = opaque.host_ptr;
|
||||
qemu_mutex_unlock_iothread();
|
||||
start_exclusive();
|
||||
qemu_mutex_lock_iothread();
|
||||
dcl->ops->dpy_refresh(dcl);
|
||||
qemu_mutex_unlock_iothread();
|
||||
end_exclusive();
|
||||
qemu_mutex_lock_iothread();
|
||||
}
|
||||
|
||||
static void dpy_refresh(DisplayState *s)
|
||||
|
@ -1596,8 +1601,7 @@ static void dpy_refresh(DisplayState *s)
|
|||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||
if (dcl->ops->dpy_refresh) {
|
||||
if (tcg_enabled()) {
|
||||
async_safe_run_on_cpu(first_cpu, do_safe_dpy_refresh,
|
||||
RUN_ON_CPU_HOST_PTR(dcl));
|
||||
do_safe_dpy_refresh(dcl);
|
||||
} else {
|
||||
dcl->ops->dpy_refresh(dcl);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue