qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 02bed6: user-exec: handle synchronous signals


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 02bed6: user-exec: handle synchronous signals from QEMU gr...
Date: Tue, 28 Mar 2017 05:15:10 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 02bed6bd5f45819f1557a4b04db300a72383ecdb
      
https://github.com/qemu/qemu/commit/02bed6bd5f45819f1557a4b04db300a72383ecdb
  Author: Alex Bennée <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M user-exec.c

  Log Message:
  -----------
  user-exec: handle synchronous signals from QEMU gracefully

When "tcg: enable thread-per-vCPU" (commit 3725794) was merged the
lifetime of current_cpu was changed. Previously a broken linux-user
call might abort() which can eventually escalate into a SIGSEGV which
would then crash qemu as it attempted to deref a NULL current_cpu.
After commit 3725794 it would attempt to fixup state and re-start the
run-loop and much hilarity (i.e. a looping lockup) would ensue from
jumping into a stale jmp_env.

As we can actually tell if we are in the run-loop from looking at the
cpu->running flag we should catch this badness first and abort()
cleanly rather than try to soldier on. There is a theoretical race
between the flag being set and sigsetjmp refreshing the jump buffer
but we can try really hard to not introduce crashes into that code.

[LV: setgroups03 fails on powerpc LTP]
Reported-by: Laurent Vivier <address@hidden>
Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Richard Henderson <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>


  Commit: 95992b674c43339d0b313dd79fa8cc45ba22eab8
      
https://github.com/qemu/qemu/commit/95992b674c43339d0b313dd79fa8cc45ba22eab8
  Author: Alex Bennée <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M bsd-user/mmap.c
    M bsd-user/qemu.h

  Log Message:
  -----------
  bsd-user: align use of mmap_lock to that of linux-user

The introduction of stricter mmap_lock checking in translate-all broke
the BSD user build. The working mmap_lock functions were hidden behind
CONFIG_USE_NPTL which is never defined. This patch brings them inline
with linux-user.

Despite the disapearence of the comment "We aren't threadsafe to start
with..." this doesn't make bsd-user so. It will still need the rest of
the fixes that have been done in linux-user ported over.

Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>


  Commit: 85390939190e4b7eeba57765e344947c328cd166
      
https://github.com/qemu/qemu/commit/85390939190e4b7eeba57765e344947c328cd166
  Author: Alex Bennée <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M cpu-exec-common.c
    M ui/console.c

  Log Message:
  -----------
  ui/console: ensure do_safe_dpy_refresh holds BQL

I missed the fact that when an exclusive work item runs it drops the
BQL to ensure all no vCPUs are stuck waiting for it, hence causing a
deadlock. However the actual helper needs to take the BQL especially
as we'll be messing with device emulation bits during the update which
all assume BQL is held.

We make a minor cpu_reloading_memory_map which must try and unlock the
RCU if we are actually outside the running context.

Reported-by: Laurent Desnogues <address@hidden>
Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Gerd Hoffmann <address@hidden>


  Commit: 0096109052c5b83ee6894c88acedfd59b76d0113
      
https://github.com/qemu/qemu/commit/0096109052c5b83ee6894c88acedfd59b76d0113
  Author: Alex Bennée <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M ui/console.c

  Log Message:
  -----------
  ui/console: use exclusive mechanism directly

The previous commit (8bb93c6f99) using async_safe_run_on_cpu() doesn't
work on graphics sub-system which restrict which threads can do GUI
updates. Rather the special casing MacOS we just directly call the
helper and move all the exclusive handling into do_dafe_dpy_refresh().

The unfortunate bouncing of the BQL is to ensure there is no deadlock
as vCPUs waiting on the BQL are kicked into their quiescent state.

Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Gerd Hoffmann <address@hidden>


  Commit: 8cfef89271e27e4a7cd047835dc8161fad50bc5a
      
https://github.com/qemu/qemu/commit/8cfef89271e27e4a7cd047835dc8161fad50bc5a
  Author: Pranith Kumar <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M cpus.c

  Log Message:
  -----------
  tcg: Add a new line after incompatibility warning

Signed-off-by: Pranith Kumar <address@hidden>
Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>


  Commit: 5b12c163c830081cbb78e2de3b42c5fe1b73e74e
      
https://github.com/qemu/qemu/commit/5b12c163c830081cbb78e2de3b42c5fe1b73e74e
  Author: Alex Bennée <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M replay/replay.c

  Log Message:
  -----------
  replay/replay.c: bump REPLAY_VERSION

A previous commit (3d4d16f4) added support for audio record/playback.
However this breaks the logfile ABI due to the re-ordering of the
ReplayEvents enum. The REPLAY_VERSION check is meant to prevent you
from using old log files in newer QEMUs but this is currently broken.

Signed-off-by: Alex Bennée <address@hidden>
Reviewed-by: Pavel Dovgalyuk <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>


  Commit: 0491c221547a38b58e41fade9953cd1cf015288b
      
https://github.com/qemu/qemu/commit/0491c221547a38b58e41fade9953cd1cf015288b
  Author: Peter Maydell <address@hidden>
  Date:   2017-03-28 (Tue, 28 Mar 2017)

  Changed paths:
    M bsd-user/mmap.c
    M bsd-user/qemu.h
    M cpu-exec-common.c
    M cpus.c
    M replay/replay.c
    M ui/console.c
    M user-exec.c

  Log Message:
  -----------
  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) <address@hidden>"
# 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 <address@hidden>


Compare: https://github.com/qemu/qemu/compare/142b9ca51d72...0491c221547a

reply via email to

[Prev in Thread] Current Thread [Next in Thread]