qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 16ef9d: qemu-thread: handle spurious futex_wa


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 16ef9d: qemu-thread: handle spurious futex_wait wakeups
Date: Mon, 14 Sep 2015 10:30:06 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 16ef9d0252318d7e32e445fd7474af55dbaab7db
      
https://github.com/qemu/qemu/commit/16ef9d0252318d7e32e445fd7474af55dbaab7db
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-02 (Wed, 02 Sep 2015)

  Changed paths:
    M util/qemu-thread-posix.c

  Log Message:
  -----------
  qemu-thread: handle spurious futex_wait wakeups

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 123fdbac9b8f1e394fbe92e8b5359193e94ba5bf
      
https://github.com/qemu/qemu/commit/123fdbac9b8f1e394fbe92e8b5359193e94ba5bf
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M include/qemu/seqlock.h

  Log Message:
  -----------
  seqlock: add missing 'inline' to seqlock_read_retry

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d12f7309483e20d1bae9304f4b812bf53a8e6510
      
https://github.com/qemu/qemu/commit/d12f7309483e20d1bae9304f4b812bf53a8e6510
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M include/qemu/seqlock.h

  Log Message:
  -----------
  seqlock: read sequence number atomically

With this change we make sure that the compiler will not
optimise the read of the sequence number in any way.

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 46036b2462c7ff56c0af6466ea6b9248197a38a8
      
https://github.com/qemu/qemu/commit/46036b2462c7ff56c0af6466ea6b9248197a38a8
  Author: Aníbal Limón <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M cpus.c

  Log Message:
  -----------
  cpus.c: qemu_mutex_lock_iothread fix race condition at cpu thread init

When QEMU starts the RCU thread executes qemu_mutex_lock_thread
causing error "qemu:qemu_cpu_kick_thread: No such process" and exits.

This isn't occur frequently but in glibc the thread id can exist and
this not guarantee that the thread is on active/running state. If is
inserted a sleep(1) after newthread assignment [1] the issue appears.

So not make assumption that thread exist if first_cpu->thread is set
then change the validation of cpu to created that is set into cpu
threads (kvm, tcg, dummy).

[1] 
https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_create.c;h=d10f4ea8004e1d8f3a268b95cc0f8d93b8d89867;hb=HEAD#l621

Cc: address@hidden
Signed-off-by: Aníbal Limón <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f3926945c85689e8af324c0db0b39be771dbbebb
      
https://github.com/qemu/qemu/commit/f3926945c85689e8af324c0db0b39be771dbbebb
  Author: Fam Zheng <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M include/qemu/main-loop.h
    M iohandler.c
    M main-loop.c

  Log Message:
  -----------
  iohandler: Use aio API

iohandler.c shares the same interface with aio, but with duplicated
code. It's better to rebase iohandler, also because that aio is a
more friendly interface to multi-threads.

Create a global AioContext instance and let its GSource handle the
iohandler events.

Signed-off-by: Fam Zheng <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6d1f252d8c1ba73bf6ed9af28731a9c9c3d473a2
      
https://github.com/qemu/qemu/commit/6d1f252d8c1ba73bf6ed9af28731a9c9c3d473a2
  Author: Peter Lieven <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M block/iscsi.c

  Log Message:
  -----------
  block/iscsi: validate block size returned from target

It has been reported that at least tgtd returns a block size of 0
for LUN 0. To avoid running into divide by zero later on and protect
against other problematic block sizes validate the block size right
at connection time.

Cc: address@hidden
Reported-by: Andrey Korolyov <address@hidden>
Signed-off-by: Peter Lieven <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5f5b5942d56a138baad0ae01458d5d0e62d5be68
      
https://github.com/qemu/qemu/commit/5f5b5942d56a138baad0ae01458d5d0e62d5be68
  Author: Andrey Smetanin <address@hidden>
  Date:   2015-09-07 (Mon, 07 Sep 2015)

  Changed paths:
    M hw/misc/pvpanic.c
    M include/sysemu/sysemu.h
    M target-s390x/kvm.c
    M vl.c

  Log Message:
  -----------
  Added generic panic handler qemu_system_guest_panicked()

There are pieces of guest panic handling code
that can be shared in one generic function.
These code replaced by call qemu_system_guest_panicked().

Signed-off-by: Andrey Smetanin <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
CC: Paolo Bonzini <address@hidden>
CC: Andreas Färber <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 19d2b5e6ff7202c2bf45c547efa85ae6c2d76bbd
      
https://github.com/qemu/qemu/commit/19d2b5e6ff7202c2bf45c547efa85ae6c2d76bbd
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M hw/block/fdc.c
    M hw/dma/i8257.c
    M hw/sparc/sun4m.c
    M hw/sparc64/sun4u.c
    M include/hw/isa/isa.h

  Log Message:
  -----------
  i8257: rewrite DMA_schedule to avoid hooking into the CPU loop

The i8257 DMA controller uses an idle bottom half, which by default
does not cause the main loop to exit.  Therefore, the DMA_schedule
function is there to ensure that the CPU relinquishes the iothread
mutex to the iothread.

However, this is not enough since the iothread will call
aio_compute_timeout() and go to sleep again.  In the iothread
world, forcing execution of the idle bottom half is much simpler,
and only requires a call to qemu_notify_event().  Do it, removing
the need for the "cpu_request_exit" pseudo-irq.  The next patch
will remove it.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5039d6e23586fe6bbedc5e4fe302b48a66890ade
      
https://github.com/qemu/qemu/commit/5039d6e23586fe6bbedc5e4fe302b48a66890ade
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M hw/dma/i82374.c
    M hw/dma/i8257.c
    M hw/i386/pc.c
    M hw/isa/i82378.c
    M hw/mips/mips_fulong2e.c
    M hw/mips/mips_jazz.c
    M hw/mips/mips_malta.c
    M hw/ppc/prep.c
    M hw/sparc/sun4m.c
    M hw/sparc64/sun4u.c
    M include/hw/isa/isa.h

  Log Message:
  -----------
  i8257: remove cpu_request_exit irq

This is unused.  cpu_exit now is almost exclusively an internal function
to the CPU execution loop.  In a few patches, we'll change the remaining
occurrences to qemu_cpu_kick, making it truly internal.

Reviewed-by: Richard henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9373e63297c43752f9cf085feb7f5aed57d959f8
      
https://github.com/qemu/qemu/commit/9373e63297c43752f9cf085feb7f5aed57d959f8
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M cpus.c
    M include/exec/exec-all.h

  Log Message:
  -----------
  tcg: introduce tcg_current_cpu

This is already useful on Windows in order to remove tls.h, because
accesses to current_cpu are done from a different thread on that
platform.  It will be used on POSIX platforms as soon TCG stops using
signals to interrupt the execution of translated code.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f240eb6fdcf63a5600e15fb44c6960586459a97f
      
https://github.com/qemu/qemu/commit/f240eb6fdcf63a5600e15fb44c6960586459a97f
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M exec.c
    R include/qemu/tls.h
    M include/qom/cpu.h

  Log Message:
  -----------
  remove qemu/tls.h

TLS is now required on all platforms, so DECLARE_TLS/DEFINE_TLS is not
needed anymore.  Removing it does not break Windows because of the
previous patch.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b0a46fa796504c7334202877a68c857e49f7c96c
      
https://github.com/qemu/qemu/commit/b0a46fa796504c7334202877a68c857e49f7c96c
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c

  Log Message:
  -----------
  tcg: assign cpu->current_tb in a simpler place

TCG has not been reading cpu->current_tb from signal handlers for years.
The code that synchronized cpu_exec with the signal handler is not
needed anymore.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ab096a75cd626dcd4ad34b2a11652df0269bee0d
      
https://github.com/qemu/qemu/commit/ab096a75cd626dcd4ad34b2a11652df0269bee0d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M qom/cpu.c

  Log Message:
  -----------
  tcg: synchronize cpu->exit_request and cpu->tcg_exit_req accesses

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: aed807c8e2bf009b2c6a35490d4fd4383887221d
      
https://github.com/qemu/qemu/commit/aed807c8e2bf009b2c6a35490d4fd4383887221d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M cpus.c

  Log Message:
  -----------
  tcg: synchronize exit_request and tcg_current_cpu accesses

Synchronize the remaining pair of accesses in cpu_signal.  These should
be necessary on Windows as well, at least in theory.  Probably
SuspendProcess and ResumeProcess introduce some implicit memory
barrier.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9102dedaa1ee1e89ce4a81283c403ff4928e9ef9
      
https://github.com/qemu/qemu/commit/9102dedaa1ee1e89ce4a81283c403ff4928e9ef9
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpus.c
    M gdbstub.c
    M hw/ppc/spapr_rtas.c

  Log Message:
  -----------
  use qemu_cpu_kick instead of cpu_exit or qemu_cpu_kick_thread

Use the same API to trigger interruption of a CPU, no matter if
under TCG or KVM.  There is no difference: these calls come from
the CPU thread, so the qemu_cpu_kick calls will send a signal
to the running thread and it will be processed synchronously,
just like a call to cpu_exit.  The only difference is in the
overhead, but neither call to cpu_exit (now qemu_cpu_kick)
is in a hot path.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e0c382113f768cc375a0d61b7cb3692f1b4bba58
      
https://github.com/qemu/qemu/commit/e0c382113f768cc375a0d61b7cb3692f1b4bba58
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M cpus.c
    M include/exec/exec-all.h
    M include/qom/cpu.h

  Log Message:
  -----------
  tcg: signal-free qemu_cpu_kick

Signals are slow and do not exist on Win32.  The previous patches
have done most of the legwork to introduce memory barriers (some
of them were even there already for the sake of Windows!) and
we can now set the flags directly in the iothread.

qemu_cpu_kick_thread is not used anymore on TCG, since the TCG thread is
never outside usermode while the CPU is running (not halted).  Instead run
the content of the signal handler (now in qemu_cpu_kick_no_halt) directly.
qemu_cpu_kick_no_halt is also used in qemu_mutex_lock_iothread to avoid
the overhead of qemu_cond_broadcast.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3c9589e180d98cdadb143bd2a792fb9d19d9aec6
      
https://github.com/qemu/qemu/commit/3c9589e180d98cdadb143bd2a792fb9d19d9aec6
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/exec/cpu-all.h
    M include/exec/ram_addr.h

  Log Message:
  -----------
  Move RAMBlock and ram_list to ram_addr.h

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 12a1ddc160cb6a73e8a6c319f3962a20da2cd22f
      
https://github.com/qemu/qemu/commit/12a1ddc160cb6a73e8a6c319f3962a20da2cd22f
  Author: Michael Marineau <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M Makefile.target

  Log Message:
  -----------
  Makefile.target: include top level build dir in vpath

Using ccache with CCACHE_BASEDIR set to $(SRC_PATH) or a parent will
rewrite all absolute paths to relative paths. This interacts poorly with
QEMU's two-level build directory scheme. For example, lets say
BUILD_DIR=$(SRC_PATH)/build so build/blockdev.d will contain:

  blockdev.o: ../blockdev.c ../include/sysemu/block-backend.h \

Now the target build under build/x86_64-softmmu or similar will depend
on ../blockdev.o which in turn will get make to source ../blockdev.d to
check its dependencies. Since make always considers paths relative to
the current working directory rather than the makefile the path appeared
in the relative path to ../blockdev.c is useless.

This change simply adds the top level build directory to vpath so paths
relative to the source directory, top build directory, and target build
directory all work just fine.

Signed-off-by: Michael Marineau <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5243722376873a48e9852a58b91f4d4101ee66e4
      
https://github.com/qemu/qemu/commit/5243722376873a48e9852a58b91f4d4101ee66e4
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M util/rcu.c

  Log Message:
  -----------
  rcu: init rcu_registry_lock after fork

We were unlocking this lock after fork, which is wrong since
only the thread that holds a mutex is allowed to unlock it.

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 492e1ca9bd3f43ba417a5cf918e6c769aa2478b9
      
https://github.com/qemu/qemu/commit/492e1ca9bd3f43ba417a5cf918e6c769aa2478b9
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/qemu/rcu.h

  Log Message:
  -----------
  rcu: fix comment with s/rcu_gp_lock/rcu_registry_lock/

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 709037636992e9289ce9147e59d56fb35d90b140
      
https://github.com/qemu/qemu/commit/709037636992e9289ce9147e59d56fb35d90b140
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: call rcu_(un)register_thread on pthread_(exit|create)

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d1142fb83efdcf8a6c2dee825569892203e16d2c
      
https://github.com/qemu/qemu/commit/d1142fb83efdcf8a6c2dee825569892203e16d2c
  Author: Emilio G. Cota <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M translate-all.c

  Log Message:
  -----------
  translate-all: remove obsolete comment about l1_map

l1_map is based on physical addresses in full-system mode, as pointed
out in an earlier comment. Said comment also mentions that virtual
addresses are only used in l1_map in user-only mode.

Signed-off-by: Emilio G. Cota <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 764e0fa497ff5bbc9c9d7c116da2f00f34e71716
      
https://github.com/qemu/qemu/commit/764e0fa497ff5bbc9c9d7c116da2f00f34e71716
  Author: Carlos L. Torres <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/qemu-common.h
    M tests/test-cutils.c
    M util/cutils.c

  Log Message:
  -----------
  cutils: Add qemu_strtol() wrapper

Add wrapper for strtol() function. Include unit tests.

Signed-off-by: Carlos L. Torres <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: c817c01548b1500753d0bea3852938d919161778
      
https://github.com/qemu/qemu/commit/c817c01548b1500753d0bea3852938d919161778
  Author: Carlos L. Torres <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/qemu-common.h
    M tests/test-cutils.c
    M util/cutils.c

  Log Message:
  -----------
  cutils: Add qemu_strtoul() wrapper

Add wrapper for strtoul() function. Include unit tests.

Signed-off-by: Carlos L. Torres <address@hidden>
Message-Id: <address@hidden>
[Fix tests for 32-bit build. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8ac4df40cc5de606a8ac9174e2340c21093b4e3b
      
https://github.com/qemu/qemu/commit/8ac4df40cc5de606a8ac9174e2340c21093b4e3b
  Author: Carlos L. Torres <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/qemu-common.h
    M tests/test-cutils.c
    M util/cutils.c

  Log Message:
  -----------
  cutils: Add qemu_strtoll() wrapper

Add wrapper for strtoll() function. Include unit tests.

Signed-off-by: Carlos L. Torres <address@hidden>
Message-Id: <address@hidden>
[Use int64_t in prototype, since that's what QEMU uses. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3904e6bf042391abc749d717465022e96e276fc7
      
https://github.com/qemu/qemu/commit/3904e6bf042391abc749d717465022e96e276fc7
  Author: Carlos L. Torres <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M include/qemu-common.h
    M tests/test-cutils.c
    M util/cutils.c

  Log Message:
  -----------
  cutils: Add qemu_strtoull() wrapper

Add wrapper for strtoull() function. Include unit tests.

Signed-off-by: Carlos L. Torres <address@hidden>
Message-Id: <address@hidden>
[Use uint64_t in prototype. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d4ba8cb0a17e7de54753ff1bdeee4428118bb9ab
      
https://github.com/qemu/qemu/commit/d4ba8cb0a17e7de54753ff1bdeee4428118bb9ab
  Author: Carlos L. Torres <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M qmp.c

  Log Message:
  -----------
  qmp: Add example usage of strto*l() qemu wrapper

Signed-off-by: Carlos L. Torres <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 690a35e1f2acf4ccd0501b18228bc6fba8f9c768
      
https://github.com/qemu/qemu/commit/690a35e1f2acf4ccd0501b18228bc6fba8f9c768
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M CODING_STYLE

  Log Message:
  -----------
  CODING_STYLE: update mixed declaration rules

Mixed declarations do come in handy at the top of #ifdef blocks.
Reluctantly allow this particular usage and suggest an alternative.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 71c47b01ca0df34d6b41e0975be6e0633c5254cf
      
https://github.com/qemu/qemu/commit/71c47b01ca0df34d6b41e0975be6e0633c5254cf
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M scripts/checkpatch.pl

  Log Message:
  -----------
  checkpatch: adapt some tests to QEMU

Mostly change severity levels, but some tests can also be adjusted to refer
to QEMU APIs or data structures.

Reviewed-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f1e155bbf863ade457019c6f09d4cba06b2d6bb4
      
https://github.com/qemu/qemu/commit/f1e155bbf863ade457019c6f09d4cba06b2d6bb4
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M scripts/checkpatch.pl

  Log Message:
  -----------
  checkpatch: remove tests that are not relevant outside the kernel

Fully removing Sparse support requires more invasive changes.  Only
remove the really kernel-specific parts such as address space names.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f42bf6a262ab5923a1a3bc8f731b830396937c47
      
https://github.com/qemu/qemu/commit/f42bf6a262ab5923a1a3bc8f731b830396937c47
  Author: Gonglei <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M hw/scsi/vhost-scsi.c

  Log Message:
  -----------
  vhost-scsi: fix wrong vhost-scsi firmware path

vhost-scsi bootindex does't work because Qemu passes
wrong fireware path to seabios.

before:
  /address@hidden/address@hidden@0/address@hidden,0
after applying the patch:
  /address@hidden/address@hidden/address@hidden/address@hidden,0

Reported-by: Subo <address@hidden>
Signed-off-by: Gonglei <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: c765fcac96e111199225c7387c01694fe076b341
      
https://github.com/qemu/qemu/commit/c765fcac96e111199225c7387c01694fe076b341
  Author: Peter Crosthwaite <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M configure

  Log Message:
  -----------
  configure: factor out adding disas configure

Every arch adds its disas configury to both its own config as well
config_disas_all. Make a small function do to both at once.

Signed-off-by: Peter Crosthwaite <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3f7a899ff4e0681ed148b1cea07dc65550114fdb
      
https://github.com/qemu/qemu/commit/3f7a899ff4e0681ed148b1cea07dc65550114fdb
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    A scripts/cocci-macro-file.h

  Log Message:
  -----------
  add macro file for coccinelle

Coccinelle chokes on some idioms from compiler.h and queue.h.
Extract those in a macro file, to be used with "--macro-file
scripts/cocci-macro-file.h".

Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 7b01cb974f1093885c40bf4d0d3e78e27e531363
      
https://github.com/qemu/qemu/commit/7b01cb974f1093885c40bf4d0d3e78e27e531363
  Author: Alexandre Derumier <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M configure

  Log Message:
  -----------
  configure: Add support for jemalloc

This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking
to jemalloc memory allocator.

We have already tcmalloc support,
but it seem to not working well with a lot of iothreads/disks.

The main problem is that tcmalloc use a shared thread cache of 16MB
by default.
With more threads, this cache is shared, and some bad garbage collections
can occur if the cache is too low.

It's possible to tcmalloc cache increase it with a env var:
TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB

With default 16MB, performances are  really bad with more than 2 disks.
Increasing to 256MB, it's helping but still have problem with 16 
disks/iothreads.

Jemalloc don't have performance problem with default configuration.

Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32,
with rbd block backend (librbd is doing a lot of memory allocation),
1 iothread by disk

glibc malloc
------------

1 disk      29052
2 disks     55878
4 disks     127899
8 disks     240566
15 disks    269976

jemalloc
--------

1 disk      41278
2 disks     75781
4 disks     195351
8 disks     294241
15 disks    298199

tcmalloc 2.2.1 default 16M cache
--------------------------------

1 disk   37911
2 disks  67698
4 disks  41076
8 disks  43312
15 disks 37569

tcmalloc : 256M cache
---------------------------

1 disk     33914
2 disks    58839
4 disks    148205
8 disks    213298
15 disks   218383

Signed-off-by: Alexandre Derumier <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 0c71d41e2aa3c7356500ae624166f3bb8c201aee
      
https://github.com/qemu/qemu/commit/0c71d41e2aa3c7356500ae624166f3bb8c201aee
  Author: Michael S. Tsirkin <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M scripts/dump-guest-memory.py

  Log Message:
  -----------
  scripts/dump-guest-memory.py: fix after RAMBlock change

commit 9b8424d5735278ca382f11adc7c63072b632ab83
    "exec: split length -> used_length/max_length"
changed field names in struct RAMBlock

It turns out that scripts/dump-guest-memory.py was
poking at this field, update it accordingly.

Cc: address@hidden
Cc: Paolo Bonzini <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 376692b9dc6f02303ee07a4146d08d8727d79c0c
      
https://github.com/qemu/qemu/commit/376692b9dc6f02303ee07a4146d08d8727d79c0c
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpus.c
    M include/qom/cpu.h
    M qom/cpu.c

  Log Message:
  -----------
  cpus: protect work list with work_mutex

Protect the list of queued work items with something other than
the BQL, as a preparation for running the work items outside it.

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: KONRAD Frederic <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d5f8d61390de8f2acc0da93f184e421a709cb503
      
https://github.com/qemu/qemu/commit/d5f8d61390de8f2acc0da93f184e421a709cb503
  Author: KONRAD Frederic <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpus.c

  Log Message:
  -----------
  cpus: remove tcg_halt_cond and tcg_cpu_thread globals

This hides the tcg_halt_cond and tcg_cpu_thread global variables
inside qemu_tcg_init_vcpu.  Multi-threaded TCG will need one
QemuCond and one QemuThread per virtual cpu, so it's preferrable
to use cpu->halt_cond and cpu->thread.

Signed-off-by: KONRAD Frederic <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 677ef6230b603571ae05125db469f7b4c8912a77
      
https://github.com/qemu/qemu/commit/677ef6230b603571ae05125db469f7b4c8912a77
  Author: KONRAD Frederic <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M include/exec/exec-all.h
    M linux-user/main.c
    M target-i386/cpu.h
    M target-i386/mem_helper.c
    M target-i386/translate.c
    M tcg/tcg.h
    M translate-all.c

  Log Message:
  -----------
  replace spinlock by QemuMutex.

spinlock is only used in two cases:
  * cpu-exec.c: to protect TranslationBlock
  * mem_helper.c: for lock helper in target-i386 (which seems broken).

It's a pthread_mutex_t in user-mode, so we can use QemuMutex directly,
with an #ifdef.  The #ifdef will be removed when multithreaded TCG
will need the mutex as well.

Signed-off-by: KONRAD Frederic <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Emilio G. Cota <address@hidden>
[Merge Emilio G. Cota's patch to remove volatile. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 2496ff1311283480f9de3614080b8842d838ade4
      
https://github.com/qemu/qemu/commit/2496ff1311283480f9de3614080b8842d838ade4
  Author: KONRAD Frederic <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    R include/exec/spinlock.h

  Log Message:
  -----------
  remove unused spinlock.

This just removes spinlock as it is not used anymore.

Signed-off-by: KONRAD Frederic <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6940fab84b826175cf90d48d0e3da1b76518f5b4
      
https://github.com/qemu/qemu/commit/6940fab84b826175cf90d48d0e3da1b76518f5b4
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M translate-all.c

  Log Message:
  -----------
  tcg: add memory barriers in page_find_alloc accesses

page_find is reading the radix tree outside all locks, so it has to
use the RCU primitives.  It does not need RCU critical sections
because the PageDescs are never removed, so there is never a need
to wait for the end of code sections that use a PageDesc.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 756920876f60829fad0d15df4f3fa205077a8131
      
https://github.com/qemu/qemu/commit/756920876f60829fad0d15df4f3fa205077a8131
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M translate-all.c

  Log Message:
  -----------
  tcg: comment on which functions have to be called with mmap_lock held

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8fd19e6cfd5b6cdf028c6ac2ff4157ed831ea3a6
      
https://github.com/qemu/qemu/commit/8fd19e6cfd5b6cdf028c6ac2ff4157ed831ea3a6
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M bsd-user/qemu.h
    M include/exec/exec-all.h
    M linux-user/qemu.h
    M translate-all.c

  Log Message:
  -----------
  exec: make mmap_lock/mmap_unlock globally available

There is some iffy lock hierarchy going on in translate-all.c.  To
fix it, we need to take the mmap_lock in cpu-exec.c.  Make the
functions globally available.

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9fd1a94888cd6a559f95c3596ec1ac28b74838c1
      
https://github.com/qemu/qemu/commit/9fd1a94888cd6a559f95c3596ec1ac28b74838c1
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-09 (Wed, 09 Sep 2015)

  Changed paths:
    M cpu-exec.c
    M translate-all.c

  Log Message:
  -----------
  cpu-exec: fix lock hierarchy for user-mode emulation

tb_lock has to be taken inside the mmap_lock (example:
tb_invalidate_phys_range is called by target_mmap), but
tb_link_page is taking the mmap_lock and it is called
with the tb_lock held.

To fix this, take the mmap_lock in tb_find_slow, not
in tb_link_page.

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 47d4be12c3997343e436c6cca89aefbbbeb70863
      
https://github.com/qemu/qemu/commit/47d4be12c3997343e436c6cca89aefbbbeb70863
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-09-10 (Thu, 10 Sep 2015)

  Changed paths:
    M tests/test-cutils.c
    M util/cutils.c

  Log Message:
  -----------
  cutils: work around platform differences in strto{l,ul,ll,ull}

Linux returns 0 if no conversion was made, while OS X and presumably
the BSDs return EINVAL.  The OS X convention rejects more invalid
inputs, so convert to it and adjust the test case.

Windows returns 1 from strtoul and strtoull (instead of -1) for
negative out-of-range input; fix it up.

Reported-by: Peter Maydell <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: a2aa09e18186801931763fbd40a751fa39971b18
      
https://github.com/qemu/qemu/commit/a2aa09e18186801931763fbd40a751fa39971b18
  Author: Peter Maydell <address@hidden>
  Date:   2015-09-14 (Mon, 14 Sep 2015)

  Changed paths:
    M CODING_STYLE
    M Makefile.target
    M block/iscsi.c
    M bsd-user/qemu.h
    M configure
    M cpu-exec.c
    M cpus.c
    M exec.c
    M gdbstub.c
    M hw/block/fdc.c
    M hw/dma/i82374.c
    M hw/dma/i8257.c
    M hw/i386/pc.c
    M hw/isa/i82378.c
    M hw/mips/mips_fulong2e.c
    M hw/mips/mips_jazz.c
    M hw/mips/mips_malta.c
    M hw/misc/pvpanic.c
    M hw/ppc/prep.c
    M hw/ppc/spapr_rtas.c
    M hw/scsi/vhost-scsi.c
    M hw/sparc/sun4m.c
    M hw/sparc64/sun4u.c
    M include/exec/cpu-all.h
    M include/exec/exec-all.h
    M include/exec/ram_addr.h
    R include/exec/spinlock.h
    M include/hw/isa/isa.h
    M include/qemu-common.h
    M include/qemu/main-loop.h
    M include/qemu/rcu.h
    M include/qemu/seqlock.h
    R include/qemu/tls.h
    M include/qom/cpu.h
    M include/sysemu/sysemu.h
    M iohandler.c
    M linux-user/main.c
    M linux-user/qemu.h
    M linux-user/syscall.c
    M main-loop.c
    M qmp.c
    M qom/cpu.c
    M scripts/checkpatch.pl
    A scripts/cocci-macro-file.h
    M scripts/dump-guest-memory.py
    M target-i386/cpu.h
    M target-i386/mem_helper.c
    M target-i386/translate.c
    M target-s390x/kvm.c
    M tcg/tcg.h
    M tests/test-cutils.c
    M translate-all.c
    M util/cutils.c
    M util/qemu-thread-posix.c
    M util/rcu.c
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging

* Support for jemalloc
* qemu_mutex_lock_iothread "No such process" fix
* cutils: qemu_strto* wrappers
* iohandler.c simplification
* Many other fixes and misc patches.

And some MTTCG work (with Emilio's fixes squashed):
* Signal-free TCG kick
* Removing spinlock in favor of QemuMutex
* User-mode emulation multi-threading fixes/docs

# gpg: Signature made Thu 10 Sep 2015 09:03:07 BST using RSA key ID 78C7AE83
# gpg: Good signature from "Paolo Bonzini <address@hidden>"
# gpg:                 aka "Paolo Bonzini <address@hidden>"

* remotes/bonzini/tags/for-upstream: (44 commits)
  cutils: work around platform differences in strto{l,ul,ll,ull}
  cpu-exec: fix lock hierarchy for user-mode emulation
  exec: make mmap_lock/mmap_unlock globally available
  tcg: comment on which functions have to be called with mmap_lock held
  tcg: add memory barriers in page_find_alloc accesses
  remove unused spinlock.
  replace spinlock by QemuMutex.
  cpus: remove tcg_halt_cond and tcg_cpu_thread globals
  cpus: protect work list with work_mutex
  scripts/dump-guest-memory.py: fix after RAMBlock change
  configure: Add support for jemalloc
  add macro file for coccinelle
  configure: factor out adding disas configure
  vhost-scsi: fix wrong vhost-scsi firmware path
  checkpatch: remove tests that are not relevant outside the kernel
  checkpatch: adapt some tests to QEMU
  CODING_STYLE: update mixed declaration rules
  qmp: Add example usage of strto*l() qemu wrapper
  cutils: Add qemu_strtoull() wrapper
  cutils: Add qemu_strtoll() wrapper
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/7e4804dafd46...a2aa09e18186

reply via email to

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