qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] a86a4c: qlist: add qlist_size()


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] a86a4c: qlist: add qlist_size()
Date: Thu, 16 Aug 2012 12:00:12 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: a86a4c2f7b7f0b72816ea1c219d8140699b6665b
      
https://github.com/qemu/qemu/commit/a86a4c2f7b7f0b72816ea1c219d8140699b6665b
  Author: Michael Roth <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M qlist.c
    M qlist.h

  Log Message:
  -----------
  qlist: add qlist_size()

Signed-off-by: Michael Roth <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Michael Roth <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: 65c0f1e9558c7c762cdb333406243fff1d687117
      
https://github.com/qemu/qemu/commit/65c0f1e9558c7c762cdb333406243fff1d687117
  Author: Michael Roth <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M json-parser.c

  Log Message:
  -----------
  json-parser: don't replicate tokens at each level of recursion

Currently, when parsing a stream of tokens we make a copy of the token
list at the beginning of each level of recursion so that we do not
modify the original list in cases where we need to fall back to an
earlier state.

In the worst case, we will only read 1 or 2 tokens off the list before
recursing again, which means an upper bound of roughly N^2 token allocations.

For a "reasonably" sized QMP request (in this a QMP representation of
cirrus_vga's device state, generated via QIDL, being passed in via
qom-set), this caused my 16GB's of memory to be exhausted before any
noticeable progress was made by the parser.

This patch works around the issue by using single copy of the token list
in the form of an indexable array so that we can save/restore state by
manipulating indices.

A subsequent commit adds a "large_dict" test case which exhibits the
same behavior as above. With this patch applied the test case successfully
completes in under a second.

Tested with valgrind, make check, and QMP.

Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Michael Roth <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: 7109edfeb69c1d3c2164175837784dfcd210fed0
      
https://github.com/qemu/qemu/commit/7109edfeb69c1d3c2164175837784dfcd210fed0
  Author: Michael Roth <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M tests/check-qjson.c

  Log Message:
  -----------
  check-qjson: add test for large JSON objects

Signed-off-by: Michael Roth <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: bbea4050802a2e7e0296a21823c0925782c02b93
      
https://github.com/qemu/qemu/commit/bbea4050802a2e7e0296a21823c0925782c02b93
  Author: Peter Maydell <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M configure

  Log Message:
  -----------
  configure: Don't override user's --cpu on MacOS and Solaris

Both MacOS and Solaris have special case handling for the CPU
type, because the check_define probes will return i386 even if
the hardware is 64 bit and x86_64 would be preferable. Move
these checks earlier in the configure probing so that we can
do them only if the user didn't specify a CPU with --cpu. This
fixes a bug where the user's command line argument was being
ignored.

Reviewed-by: Andreas F=E4rber <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: a0b7cf6b6ecc91e730de5ac6a6f7f927d16f89ca
      
https://github.com/qemu/qemu/commit/a0b7cf6b6ecc91e730de5ac6a6f7f927d16f89ca
  Author: Peter Maydell <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M configure

  Log Message:
  -----------
  configure: Define OS_OBJECT_USE_OBJC=0 for MacOSX builds

MacOSX 10.8 ("Mountain Lion") defaults to trying to use automated
reference counting on certain objects.  This means that the system
header files will use some Objective C syntax constructs even when
compiling pure C, which confuses mainline gcc. Suppress this by
setting OS_OBJECT_USE_OBJC=0. This avoids a compile error like this:

In file included from
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:5:0,
           from /usr/include/os/object.h:74,
           from /usr/include/dispatch/dispatch.h:48,
           from 
/System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h:56,
           from block/raw-posix.c:35:
/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:409:1: 
error: stray address@hidden in program
[with a large number of further run-on errors]

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


  Commit: 3c4a4d0dcbf4269e125f92df06816db1c1e86d20
      
https://github.com/qemu/qemu/commit/3c4a4d0dcbf4269e125f92df06816db1c1e86d20
  Author: Peter Maydell <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M configure
    M rules.mak

  Log Message:
  -----------
  Support using a different compiler for Objective-C files

MacOSX 10.8 ("Mountain Lion") requires us to compile our one
Objective-C source file with clang even if the rest of QEMU
requires a real gcc, because the system headers we use make
use of Apple's "Blocks" extension to C/ObjC, and mainline
gcc doesn't support that. Since we only need to use a true
gcc for the parts of QEMU that use the fixed-register
env variable, we can simply use clang to build the ObjC
file: it will link to the gcc-built objects with no problems.

Add the necessary support for an OBJCC variable in the
makefile and configure machinery; we default to clang
if we have it, otherwise whatever CC is (since gcc
might be the Apple gcc which does support Blocks).

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


  Commit: ddb97f1debbb6be8d871f3b565f7b8befebf0f4f
      
https://github.com/qemu/qemu/commit/ddb97f1debbb6be8d871f3b565f7b8befebf0f4f
  Author: Jason Baron <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M exec.c
    M osdep.h
    M qemu-config.c
    M qemu-options.hx

  Log Message:
  -----------
  memory: add -machine dump-guest-core=on|off

Add a new '[,dump-guest-core=on|off]' option to the '-machine' option. When
'dump-guest-core=off' is specified, guest memory is omitted from the core dump.
The default behavior continues to be to include guest memory when a core dump is
triggered. In my testing, this brought the core dump size down from 384MB to 6MB
on a 2GB guest.

Is anything additional required to preserve this setting for migration or
savevm? I don't believe so.

Changelog:
v3:
    Eliminate globals as per Anthony's suggestion
    set no dump from qemu_ram_remap() as well
v2:
    move the option from -m to -machine, rename option dump -> dump-guest-core

Signed-off-by: Jason Baron <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: bc9b78debf63c9be051abe51403736d386092d09
      
https://github.com/qemu/qemu/commit/bc9b78debf63c9be051abe51403736d386092d09
  Author: Benjamin Herrenschmidt <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M dma-helpers.c

  Log Message:
  -----------
  dma: Fix stupid typo/thinko

Hi hard a brain fart when coding that function, it will
fail to "set" the memory beyond the first 512 bytes. This
is in turn causing guest crashes in ibmveth (spapr_llan.c
on the qemu side) due to the receive queue not being
properly initialized.

Signed-off-by: Benjamin Herrenschmidt <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: f794573eab564548fa7aa463b5908b0042c0e6a4
      
https://github.com/qemu/qemu/commit/f794573eab564548fa7aa463b5908b0042c0e6a4
  Author: Eduardo Otubo <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M Makefile.objs
    M configure

  Log Message:
  -----------
  Adding support for libseccomp in configure and Makefile (v8)

Adding basic options to the configure script to use libseccomp or not.
The default is set to 'no'. If the flag --enable-libseccomp is used, the
script will check for its existence using pkg-config.

Signed-off-by: Eduardo Otubo <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
---
v1 -> v2:
 - As I removed all the code related to seccomp from vl.c, I created
   qemu-seccomp.[ch].
 - Also making the configure script to add the specific line to
   Makefile.obj in order to compile with appropriate support to seccomp.

v2 -> v3:
 - Removing the line from Makefile.obj and adding it to Makefile.objs.
 - Marking libseccomp default option to 'yes' in the configure script.

v3 -> v8:
 - fix configure probe if libseccomp isn't available (aliguori)


  Commit: 2f668be77501c0232a84aafb6a066c9915987f0e
      
https://github.com/qemu/qemu/commit/2f668be77501c0232a84aafb6a066c9915987f0e
  Author: Eduardo Otubo <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    A qemu-seccomp.c
    A qemu-seccomp.h

  Log Message:
  -----------
  Adding qemu-seccomp.[ch] (v8)

Signed-off-by: Eduardo Otubo <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
---
v1:
 - I added a syscall struct using priority levels as described in the
   libseccomp man page. The priority numbers are based to the frequency
   they appear in a sample strace from a regular qemu guest run under
   libvirt.

   Libseccomp generates linear BPF code to filter system calls, those rules
   are read one after another. The priority system places the most common
   rules first in order to reduce the overhead when processing them.

v1 -> v2:
 - Fixed some style issues
 - Removed code from vl.c and created qemu-seccomp.[ch]
 - Now using ARRAY_SIZE macro
 - Added more syscalls without priority/frequency set yet

v2 -> v3:
 - Adding copyright and license information
 - Replacing seccomp_whitelist_count just by ARRAY_SIZE
 - Adding header protection to qemu-seccomp.h
 - Moving QemuSeccompSyscall definition to qemu-seccomp.c
 - Negative return from seccomp_start is fatal now.
 - Adding open() and execve() to the whitelis

v3 -> v4:
 - Tests revealed a bigger set of syscalls.
 - seccomp_start() now has an argument to set the mode according to the
   configure option trap or kill.

v4 -> v5:
 - Tests on x86_64 required a new specific set of system calls.
 - libseccomp release 1.0.0: part of the API have changed in this last
   release, had to adapt to the new function signatures.


  Commit: 452dfbef600837c0e430564ea9e35138ef48f24c
      
https://github.com/qemu/qemu/commit/452dfbef600837c0e430564ea9e35138ef48f24c
  Author: Eduardo Otubo <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M vl.c

  Log Message:
  -----------
  Adding seccomp calls to vl.c (v8)

Signed-off-by: Eduardo Otubo <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
---
v1:
 - Full seccomp calls and data included in vl.c

v1 -> v2:
 - Full seccomp calls and data removed from vl.c and put into separate
   qemu-seccomp.[ch] file.


  Commit: 7d76ad4fa4405bb20c35fd24c3c848d2bc48f694
      
https://github.com/qemu/qemu/commit/7d76ad4fa4405bb20c35fd24c3c848d2bc48f694
  Author: Eduardo Otubo <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M qemu-config.c
    M qemu-config.h
    M qemu-options.hx
    M vl.c

  Log Message:
  -----------
  Command line support for seccomp with -sandbox (v8)

Signed-off-by: Eduardo Otubo <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
---
v7 -> v8
 - Parse options correctly (aliguori)


  Commit: d973ba18ced6e9440131c55b0f07e97bdbbc6703
      
https://github.com/qemu/qemu/commit/d973ba18ced6e9440131c55b0f07e97bdbbc6703
  Author: Peter Maydell <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M osdep.c

  Log Message:
  -----------
  osdep: Fix compilation failure on BSD systems

Fix compilation failure on BSD systems (which don't have
O_DIRECT or O_NOATIME:
osdep.c:116: error: ‘O_DIRECT’ undeclared (first use in this function)
osdep.c:116: error: (Each undeclared identifier is reported only once
osdep.c:116: error: for each function it appears in.)
osdep.c:116: error: ‘O_NOATIME’ undeclared (first use in this function)

Reviewed-by: Stefan Weil <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: 35139a590c4e2f3086d069028bda77f1de1d46b0
      
https://github.com/qemu/qemu/commit/35139a590c4e2f3086d069028bda77f1de1d46b0
  Author: David Gibson <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M hw/spapr.c

  Log Message:
  -----------
  pseries: Instantiate USB interface when required

The pseries machine already supports the -vga std option, creating a
graphics adapter.  However, this is not very useful without being able to
add a keyboard and mouse as well.  This patch addresses this by adding
a USB interface when requested, and automatically adding a USB keyboard
and mouse when VGA is enabled.

This is a stop gap measure to get usable graphics mode on pseries while
waiting for Li Zhang's rework of USB options to go in after 1.2.

Signed-off-by: David Gibson <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: be52202902d166e914d426c8e3d8976b25121b4d
      
https://github.com/qemu/qemu/commit/be52202902d166e914d426c8e3d8976b25121b4d
  Author: David Gibson <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M hw/boards.h
    M sysemu.h
    M vl.c

  Log Message:
  -----------
  Allow QEMUMachine to override reset sequencing

qemu_system_reset() function always performs the same basic actions on
all machines.  This includes running all the reset handler hooks,
however the order in which these will run is not always easily predictable.

This patch splits the core of qemu_system_reset() - the invocation of
the reset handlers - out into a new qemu_devices_reset() function.
qemu_system_reset() will usually call qemu_devices_reset(), but that
can be now overriden by a new reset method in the QEMUMachine
structure.

Individual machines can use this reset method, if necessary, to
perform any extra, machine specific initializations which have to
occur before or after the bulk of the reset handlers.  It's expected
that the method will call qemu_devices_reset() at some point, but if
the machine has really strange ordering requirements between devices
resets it could even override that with it's own reset sequence (with
great care, obviously).

For a specific example of when this might be needed: a number of
machines (but not PC) load images specified with -kernel or -initrd
directly into the machine RAM before booting the guest.  This mostly
works at the moment, but to make this actually safe requires that this
load occurs after peripheral devices are reset - otherwise they could
have active DMAs in progress which would clobber the in memory images.
Some machines (notably pseries) also have other entry conditions which
need to be set up as the last thing before executing in guest space -
some of this could be considered "emulated firmware" in the sense that
the actions of the firmware are emulated directly by qemu rather than
by executing a firmware image within the guest.  When the platform's
firmware to OS interface is sufficiently well specified, this saves
time both in implementing the "firmware" and executing it.

aliguori: don't unconditionally dereference current_machine

Reviewed-by: Andreas Färber <address@hidden>
Signed-off-by: David Gibson <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: c3767ed0eb5d0bb25fe409ae5dec06e3411ff1b6
      
https://github.com/qemu/qemu/commit/c3767ed0eb5d0bb25fe409ae5dec06e3411ff1b6
  Author: Lei Li <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M qemu-char.c

  Log Message:
  -----------
  qemu-char: (Re-)connect for tcp_chr_write() unconnected writing

tcp_chr_write() did not deal with writing to an unconnected
connection and return the original length of the data, it's
not right and would cause false writing. So (re-)connect it
and return 0 for this situation.

Reviewed-by: Anthony Liguori <address@hidden>
Signed-off-by: Lei Li <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>


  Commit: 731dc9ecd4f2c3041538f7eb2d10eee0cb82da1b
      
https://github.com/qemu/qemu/commit/731dc9ecd4f2c3041538f7eb2d10eee0cb82da1b
  Author: Anthony Liguori <address@hidden>
  Date:   2012-08-16 (Thu, 16 Aug 2012)

  Changed paths:
    M VERSION

  Log Message:
  -----------
  Update version to 1.2.0-rc0

Signed-off-by: Anthony Liguori <address@hidden>


Compare: https://github.com/qemu/qemu/compare/5a4d701acde8...731dc9ecd4f2

reply via email to

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