[Qemu-commits] [qemu/qemu] 924fe1: aio: fix qemu_bh_schedule() bh-ctx race condition

2014-06-09 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 924fe1293c3e7a3c787bbdfb351e7f168caee3e9
  
https://github.com/qemu/qemu/commit/924fe1293c3e7a3c787bbdfb351e7f168caee3e9
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M async.c

  Log Message:
  ---
  aio: fix qemu_bh_schedule() bh-ctx race condition

qemu_bh_schedule() is supposed to be thread-safe at least the first time
it is called.  Unfortunately this is not quite true:

  bh-scheduled = 1;
  aio_notify(bh-ctx);

Since another thread may run the BH callback once it has been scheduled,
there is a race condition if the callback frees the BH before
aio_notify(bh-ctx) has a chance to run.

Reported-by: Stefan Priebe s.pri...@profihost.ag
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com
Reviewed-by: Paolo Bonzini pbonz...@redhat.com
Tested-by: Stefan Priebe s.pri...@profihost.ag


  Commit: 2572b37a4751cc967582d7d04f21d9bf97187ae5
  
https://github.com/qemu/qemu/commit/2572b37a4751cc967582d7d04f21d9bf97187ae5
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M block.c

  Log Message:
  ---
  block: use BlockDriverState AioContext

Drop the assumption that we're using the main AioContext.  Convert
qemu_aio_wait() to aio_poll() and qemu_bh_new() to aio_bh_new() so the
BlockDriverState AioContext is used.

Note there is still one qemu_aio_wait() left in bdrv_create() but we do
not have a BlockDriverState there and only main loop code invokes this
function.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: ed78cda3de92056737364ab3cb748b16f5f17dea
  
https://github.com/qemu/qemu/commit/ed78cda3de92056737364ab3cb748b16f5f17dea
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M block.c

  Log Message:
  ---
  block: acquire AioContext in bdrv_*_all()

bdrv_close_all(), bdrv_commit_all(), bdrv_flush_all(),
bdrv_invalidate_cache_all(), and bdrv_clear_incoming_migration_all() are
called by main loop code and touch all BlockDriverState instances.

Some BlockDriverState instances may be running in another AioContext.
Make sure to acquire the AioContext before closing the BlockDriverState.

This will protect against race conditions once virtio-blk data-plane is
using the BlockDriverState from another AioContext event loop.

Note that this patch does not convert bdrv_drain_all() yet since that
conversion is non-trivial.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 9b536adcbefb72090f43c9715ce042e37e47af73
  
https://github.com/qemu/qemu/commit/9b536adcbefb72090f43c9715ce042e37e47af73
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M block.c

  Log Message:
  ---
  block: acquire AioContext in bdrv_drain_all()

Modify bdrv_drain_all() to take into account that BlockDriverState
instances may be running in different AioContexts.

This patch changes the implementation of bdrv_drain_all() while
preserving the semantics.  Previously kicking throttled requests and
checking for pending requests were done across all BlockDriverState
instances in sequence.  Now we process each BlockDriverState in turn,
making sure to acquire and release its AioContext.

This prevents race conditions between the thread executing
bdrv_drain_all() and the thread running the AioContext.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: dcd042282d855edf70df90b7d61d33b515320b7a
  
https://github.com/qemu/qemu/commit/dcd042282d855edf70df90b7d61d33b515320b7a
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M block.c
M include/block/block.h
M include/block/block_int.h

  Log Message:
  ---
  block: add bdrv_set_aio_context()

Up until now all BlockDriverState instances have used the QEMU main loop
for fd handlers, timers, and BHs.  This is not scalable on SMP guests
and hosts so we need to move to a model with multiple event loops on
different host CPUs.

bdrv_set_aio_context() assigns the AioContext event loop to use for a
particular BlockDriverState.  It first detaches the entire
BlockDriverState graph from the current AioContext and then attaches to
the new AioContext.

This function will be used by virtio-blk data-plane to assign a
BlockDriverState to its IOThread AioContext.  Make
bdrv_aio_set_context() public since data-plane should not include
block_int.h.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 7e1efdf0a30faa2b3e560deafe16b8bd12c6f399
  
https://github.com/qemu/qemu/commit/7e1efdf0a30faa2b3e560deafe16b8bd12c6f399
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
M block/blkdebug.c

  Log Message:
  ---
  blkdebug: use BlockDriverState's AioContext

Drop the assumption that 

[Qemu-commits] [qemu/qemu] 40e76f: net: xilinx_ethlite: Fix Rx-pong interrupt

2014-06-09 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 40e76f736d09535bc20e980a06c059229c7b5265
  
https://github.com/qemu/qemu/commit/40e76f736d09535bc20e980a06c059229c7b5265
  Author: Peter Crosthwaite peter.crosthwa...@xilinx.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/net/xilinx_ethlite.c

  Log Message:
  ---
  net: xilinx_ethlite: Fix Rx-pong interrupt

There is no CTRL_I bit in the pong buffer control register. The
CTRL_I bit from the ping buffer masks both ping and pong buffers.
Fix.

Signed-off-by: Peter Crosthwaite peter.crosthwa...@xilinx.com
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: b44672849ad9baaa6734f16bfd7aa0d6b0780065
  
https://github.com/qemu/qemu/commit/b44672849ad9baaa6734f16bfd7aa0d6b0780065
  Author: Jiri Pirko j...@resnulli.us
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/net/vmxnet3.c

  Log Message:
  ---
  vmxnet3: fix msix vectors unuse

In vmxnet3_cleanup_msix(), there is called msix_vector_unuse() with
VMXNET3_MAX_INTRS. That is not correct since vector of
value VMXNET3_MAX_INTRS was never used. Also all the used vectors
are not un-used. So call vmxnet3_unuse_msix_vectors() instead which
does the correct job.

Signed-off-by: Jiri Pirko j...@resnulli.us
Acked-by: Dmitry Fleytman dmi...@daynix.com
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 8597f2e19e68a70e4f45de7a5f29b4fdc047fcff
  
https://github.com/qemu/qemu/commit/8597f2e19e68a70e4f45de7a5f29b4fdc047fcff
  Author: Gabriel L. Somlo gso...@gmail.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/net/e1000.c
M hw/net/e1000_regs.h

  Log Message:
  ---
  e1000: allow command-line selection of card model

Allow selection of different card models from the qemu
command line, to better accomodate a wider range of guests.

Signed-off-by: Romain Dolbeau rom...@dolbeau.org
Signed-off-by: Gabriel Somlo so...@cmu.edu
Reviewed-by: Michael S. Tsirkin m...@redhat.com
Reviewed-by: Peter Crosthwaite peter.crosthwa...@xilinx.com
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: b167383ffbe995c6d48fbe8ca2bab5eb667e45dc
  
https://github.com/qemu/qemu/commit/b167383ffbe995c6d48fbe8ca2bab5eb667e45dc
  Author: Gabriel L. Somlo gso...@gmail.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M tests/e1000-test.c

  Log Message:
  ---
  tests: e1000: test additional device IDs

Update e1000-test.c to check all currently supported devices.

Suggested-by: Andreas Färber afaer...@suse.de
Signed-off-by: Gabriel Somlo so...@cmu.edu
Reviewed-by: Michael S. Tsirkin m...@redhat.com
Reviewed-by: Peter Crosthwaite peter.crosthwa...@xilinx.com
Reviewed-by: Stefan Hajnoczi stefa...@redhat.com
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 7efea763772c815ad6220d5ea7a46447329f6015
  
https://github.com/qemu/qemu/commit/7efea763772c815ad6220d5ea7a46447329f6015
  Author: Gabriel L. Somlo gso...@gmail.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/net/e1000.c
M tests/e1000-test.c

  Log Message:
  ---
  e1000: remove broken support for 82573L

Currently, e1000 support is based on the manual for the 8254xx
model series. 82573x models are documented in a separate manual
(see 
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/pcie-gbe-controllers-open-source-manual.pdf)
and the 82573L device ID no longer works correctly on either Linux
(3.14.*) or Windows 7.

This patch removes stale code claiming to support 82573L, cleaning
up the code base for the remaining 8254xx model series.

Signed-off-by: Gabriel Somlo so...@cmu.edu
Reviewed-by: Michael S. Tsirkin m...@redhat.com
Reviewed-by: Peter Crosthwaite peter.crosthwa...@xilinx.com
Reviewed-by: Stefan Hajnoczi stefa...@redhat.com
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 4a331bb33bdf112ba95470e5d6ea3561b049c280
  
https://github.com/qemu/qemu/commit/4a331bb33bdf112ba95470e5d6ea3561b049c280
  Author: Peter Maydell peter.mayd...@linaro.org
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/net/e1000.c
M hw/net/e1000_regs.h
M hw/net/vmxnet3.c
M hw/net/xilinx_ethlite.c
M tests/e1000-test.c

  Log Message:
  ---
  Merge remote-tracking branch 'remotes/stefanha/tags/net-pull-request' into 
staging

Net patches

# gpg: Signature made Mon 09 Jun 2014 14:41:34 BST using RSA key ID 81AB73C8
# gpg: Good signature from Stefan Hajnoczi stefa...@redhat.com
# gpg: aka Stefan Hajnoczi stefa...@gmail.com

* remotes/stefanha/tags/net-pull-request:
  e1000: remove broken support for 82573L
  tests: e1000: test additional device IDs
  e1000: allow command-line selection of card model
  vmxnet3: fix msix vectors unuse
  net: xilinx_ethlite: Fix Rx-pong interrupt

Signed-off-by: Peter Maydell peter.mayd...@linaro.org


Compare: 

[Qemu-commits] [qemu/qemu] 26896c: trace: add pid field to simpletrace record

2014-06-09 Thread GitHub
  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 26896cbf353e3017f76da8193074839b6e875250
  
https://github.com/qemu/qemu/commit/26896cbf353e3017f76da8193074839b6e875250
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M trace/simple.c

  Log Message:
  ---
  trace: add pid field to simpletrace record

It is useful to know the QEMU process ID when working with traces from
multiple VMs.  Although the trace filename may contain the pid, tools
that aggregate traces or even trace globally need somewhere to record
the pid.

There is a reserved field in the trace event header struct that we can
use.

It is not necessary to bump the simpletrace file format version number
because it has already been incremented for the QEMU 2.1 release cycle
in commit trace: [simple] Bump up log version number.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 80ff35cd3ff451e8f200413ddf27816058630c1f
  
https://github.com/qemu/qemu/commit/80ff35cd3ff451e8f200413ddf27816058630c1f
  Author: Stefan Hajnoczi stefa...@redhat.com
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M scripts/simpletrace.py

  Log Message:
  ---
  simpletrace: add support for trace record pid field

Extract the pid field from the trace record and print it.

Change the trace record tuple from:
  (event_num, timestamp, arg1, ..., arg6)
to:
  (event_num, timestamp, pid, arg1, ..., arg6)

Trace event methods now support 3 prototypes:
1. event-name(arg1, arg2, arg3)
2. event-name(timestamp, arg1, arg2, arg3)
3. event-name(timestamp, pid, arg1, arg2, arg3)

Existing script continue to work without changes, they only know about
prototypes 1 and 2.

Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 82432638ebeedda8a2e18838b6fbef4b14a94f31
  
https://github.com/qemu/qemu/commit/82432638ebeedda8a2e18838b6fbef4b14a94f31
  Author: Alexey Kardashevskiy a...@ozlabs.ru
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M trace/control.c

  Log Message:
  ---
  trace: Replace error with warning if event is not defined

At the moment QEMU exits if trace point is not defined which makes
a developer life harder if he has to switch between branches with
different traces implemented.

This replaces error+exit wit WARNING if the tracepoint does not exist or
not traceable.

Signed-off-by: Alexey Kardashevskiy a...@ozlabs.ru
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 5b808275f3bbe8cc95bb9301f4d5a41331d0e0e6
  
https://github.com/qemu/qemu/commit/5b808275f3bbe8cc95bb9301f4d5a41331d0e0e6
  Author: Lluís Vilanova vilan...@ac.upc.edu
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M .travis.yml
M Makefile
M Makefile.target
M configure
M docs/tracing.txt
M qemu-io.c
M scripts/tracetool.py
M scripts/tracetool/__init__.py
M scripts/tracetool/backend/__init__.py
M trace/Makefile.objs
M trace/control-internal.h
M trace/control.c
M trace/control.h
R trace/default.c
M trace/ftrace.c
M trace/ftrace.h
M trace/simple.c
M trace/simple.h
R trace/stderr.c
M vl.c

  Log Message:
  ---
  trace: Multi-backend tracing

Adds support to compile QEMU with multiple tracing backends at the same time.

For example, you can compile QEMU with:

  $ ./configure --enable-trace-backends=ftrace,dtrace

Where 'ftrace' can be handy for having an in-flight record of events, and 
'dtrace' can be later used to extract more information from the system.

This patch allows having both available without recompiling QEMU.

Signed-off-by: Lluís Vilanova vilan...@ac.upc.edu
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: a35d9be622a85d9ad6be5448e78c8a3f95ee5f00
  
https://github.com/qemu/qemu/commit/a35d9be622a85d9ad6be5448e78c8a3f95ee5f00
  Author: Alexey Kardashevskiy a...@ozlabs.ru
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M trace/control.c

  Log Message:
  ---
  trace: Replace fprintf with error_report and print location

This replaces fprintf(stderr) with error_report.

This moves local variables to the beginning of the function to comply
with QEMU's coding style.

Suggested-by: Lluís Vilanova vilan...@ac.upc.edu
Signed-off-by: Alexey Kardashevskiy a...@ozlabs.ru
Signed-off-by: Stefan Hajnoczi stefa...@redhat.com


  Commit: 14ac57339288c07b47e7e91fa192735158aa6a1e
  
https://github.com/qemu/qemu/commit/14ac57339288c07b47e7e91fa192735158aa6a1e
  Author: Peter Maydell peter.mayd...@linaro.org
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M .travis.yml
M Makefile
M Makefile.target
M configure
M docs/tracing.txt
M qemu-io.c
M scripts/simpletrace.py
M scripts/tracetool.py
M scripts/tracetool/__init__.py
M scripts/tracetool/backend/__init__.py
M trace/Makefile.objs
M trace/control-internal.h
M trace/control.c
M 

[Qemu-commits] [qemu/qemu] 61e992: vexpress: Add support for the -bios flag to provid...

2014-06-09 Thread GitHub
 paths:
M target-arm/helper.h
M target-arm/iwmmxt_helper.c
M target-arm/translate.c

  Log Message:
  ---
  target-arm: Delete unused iwmmxt_msadb helper

The iwmmxt_msadb helper and its corresponding gen function are unused;
delete them. (This function appears to have never been used right back
to the initial implementation of iwMMXt; it is identical to iwmmxt_madduq,
and is presumably an accidental remnant from the initial development.)

Reviewed-by: Peter Crosthwaite peter.crosthwa...@xilinx.com
Signed-off-by: Peter Maydell peter.mayd...@linaro.org
Message-id: 1401822125-1822-1-git-send-email-peter.mayd...@linaro.org


  Commit: 7721a3044234c46cd6f5f899e7467dc9351f3c8d
  
https://github.com/qemu/qemu/commit/7721a3044234c46cd6f5f899e7467dc9351f3c8d
  Author: Peter Maydell peter.mayd...@linaro.org
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
M hw/arm/vexpress.c
M linux-user/elfload.c
M target-arm/cpu.c
M target-arm/cpu.h
M target-arm/cpu64.c
M target-arm/crypto_helper.c
M target-arm/helper-a64.c
M target-arm/helper-a64.h
M target-arm/helper.c
M target-arm/helper.h
M target-arm/iwmmxt_helper.c
M target-arm/neon_helper.c
M target-arm/translate-a64.c
M target-arm/translate.c

  Log Message:
  ---
  Merge remote-tracking branch 
'remotes/pmaydell/tags/pull-target-arm-20140609-1' into staging


target-arm queue:
 * support -bios option in vexpress boards
 * register the Cortex-A57 impdef system registers
 * fix handling of UXN bit in ARMv8 page tables
 * complete support of crypto insns in A32/T32
 * implement CRC and crypto insns in A64
 * fix bugs in generic timer control register



# gpg: Signature made Mon 09 Jun 2014 16:08:26 BST using RSA key ID 14360CDE
# gpg: Good signature from Peter Maydell peter.mayd...@linaro.org

* remotes/pmaydell/tags/pull-target-arm-20140609-1:
  target-arm: Delete unused iwmmxt_msadb helper
  target-arm: Fix errors in writes to generic timer control registers
  target-arm: A64: Implement two-register SHA instructions
  target-arm: A64: Implement 3-register SHA instructions
  target-arm: A64: Implement AES instructions
  target-arm: A32/T32: Mask CRC value in calling code, not helper
  target-arm: A64: Implement CRC instructions
  target-arm: VFPv4 implies half-precision extension
  target-arm: Clean up handling of ARMv8 optional feature bits
  target-arm: Remove unnecessary setting of feature bits
  target-arm: arm_any_initfn() should never set ARM_FEATURE_AARCH64
  target-arm: A64: Use PMULL feature bit for PMULL
  target-arm: add support for v8 VMULL.P64 instruction
  target-arm: Allow 3reg_wide undefreq to encode more bad size options
  target-arm: add support for v8 SHA1 and SHA256 instructions
  target-arm: Correct handling of UXN bit in ARMv8 LPAE page tables
  target-arm: Prepare cpreg writefns/readfns for EL3/SecExt
  target-arm/cpu64.c: Actually register Cortex-A57 impdef registers
  vexpress: Add support for the -bios flag to provide firmware

Signed-off-by: Peter Maydell peter.mayd...@linaro.org


Compare: https://github.com/qemu/qemu/compare/14ac57339288...7721a3044234