sdk/emulator/qemu.git
14 years agotrace: improve info trace output
Blue Swirl [Wed, 20 Oct 2010 16:41:36 +0000 (16:41 +0000)]
trace: improve info trace output

Use PRI*64 to print full 64 bit data even on ILP32 hosts.

Print also sixth tracepoint parameter.

Acked-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Cc: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Format strings must begin/end with double quotes
Stefan Hajnoczi [Wed, 20 Oct 2010 16:41:31 +0000 (16:41 +0000)]
trace: Format strings must begin/end with double quotes

Document the restriction that format strings must begin and end with
double quotes.  This is for easy parsing since we don't run cpp over
trace-events.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoapic: convert debug printf statements to tracepoints
Blue Swirl [Wed, 20 Oct 2010 16:41:28 +0000 (16:41 +0000)]
apic: convert debug printf statements to tracepoints

Replace debug printf statements with tracepoints.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Relax trace-events parsing regex in simpletrace.py
Stefan Hajnoczi [Mon, 18 Oct 2010 12:42:54 +0000 (13:42 +0100)]
trace: Relax trace-events parsing regex in simpletrace.py

The regular expression to parse trace event definitions assumed the
format string would be a simple double-quoted string.  However, we now
use PRI?64 for portability which splits string literals.  The regular
expression can disregard the format string entirely since simpletrace.py
never needs to use it.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoissue snd_pcm_start() when capturing audio
Jindrich Makovicka [Sun, 17 Oct 2010 18:17:19 +0000 (20:17 +0200)]
issue snd_pcm_start() when capturing audio

snd_pcm_start() starts the capture process and ensures that the events
are delivered to the poll handler. Without the call, capture can be started
only when there is simultaneous playback running.

Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: malc <av1474@comtv.ru>
14 years agofix 100% CPU load when idle with ALSA
Jindrich Makovicka [Sun, 17 Oct 2010 17:28:14 +0000 (19:28 +0200)]
fix 100% CPU load when idle with ALSA

Playback control function did not disable polling when playback stops.
Caused busy spinning of the main loop due to unprocessed events.

Signed-off-by: Jindrich Makovicka <makovick@gmail.com>
Signed-off-by: malc <av1474@comtv.ru>
14 years agotrace: print a warning if user tries to enable an unknown trace event
Blue Swirl [Wed, 13 Oct 2010 19:14:29 +0000 (19:14 +0000)]
trace: print a warning if user tries to enable an unknown trace event

There was no warning if a bad trace event name was given to
'trace-event' command, thus the user could think that the command
was successful even if this was not the case.

Print a warning if the user tries to enable a trace event which is not
known.

Acked-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomips: avoid write only variables
Blue Swirl [Wed, 13 Oct 2010 18:38:08 +0000 (18:38 +0000)]
mips: avoid write only variables

Compiling with GCC 4.6.0 20100925 produced a lot of warnings like:
/src/qemu/target-mips/translate.c: In function 'gen_ld':
/src/qemu/target-mips/translate.c:1039:17: error: variable 'opn' set but not used [-Werror=unused-but-set-variable]

Fix by adding a dummy cast so that the variable is not unused.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoppc: avoid write only variables
Blue Swirl [Wed, 13 Oct 2010 18:38:08 +0000 (18:38 +0000)]
ppc: avoid write only variables

Compiling with GCC 4.6.0 20100925 produced warnings:
/src/qemu/target-ppc/op_helper.c: In function 'helper_icbi':
/src/qemu/target-ppc/op_helper.c:351:14: error: variable 'tmp' set but not used [-Werror=unused-but-set-variable]
/src/qemu/target-ppc/op_helper.c: In function 'do_6xx_tlb':
/src/qemu/target-ppc/op_helper.c:3805:28: error: variable 'EPN' set but not used [-Werror=unused-but-set-variable]
/src/qemu/target-ppc/op_helper.c: In function 'do_74xx_tlb':
/src/qemu/target-ppc/op_helper.c:3838:28: error: variable 'EPN' set but not used [-Werror=unused-but-set-variable]

Fix by adding a dummy cast so that the variable is not unused. Delete tmp.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoi386: avoid a write only variable
Blue Swirl [Wed, 13 Oct 2010 18:38:08 +0000 (18:38 +0000)]
i386: avoid a write only variable

Compiling with GCC 4.6.0 20100925 produced warnings:
/src/qemu/target-i386/op_helper.c: In function 'switch_tss':
/src/qemu/target-i386/op_helper.c:283:53: error: variable 'new_trap' set but not used [-Werror=unused-but-set-variable]

Fix by adding a dummy cast so that the variable is not unused. Add also
pointer to docs.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agovnc: avoid write only variables
Blue Swirl [Wed, 13 Oct 2010 18:38:08 +0000 (18:38 +0000)]
vnc: avoid write only variables

Compiling with GCC 4.6.0 20100925 produced warnings:
/src/qemu/ui/vnc.c: In function 'vnc_client_cache_auth':
/src/qemu/ui/vnc.c:217:12: error: variable 'qdict' set but not used [-Werror=unused-but-set-variable]
/src/qemu/ui/vnc.c: In function 'vnc_display_open':
/src/qemu/ui/vnc.c:2526:9: error: variable 'acl' set but not used [-Werror=unused-but-set-variable]

Fix by making the variable declarations and their uses also conditional
to debug definition.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agocris: avoid a write only variable
Blue Swirl [Wed, 13 Oct 2010 18:38:08 +0000 (18:38 +0000)]
cris: avoid a write only variable

Compiling with GCC 4.6.0 20100925 produced a warning:
In file included from /src/qemu/target-cris/translate.c:3154:0:
/src/qemu/target-cris/translate_v10.c: In function 'dec10_prep_move_m':
/src/qemu/target-cris/translate_v10.c:111:22: error: variable 'rd' set but not used [-Werror=unused-but-set-variable]

Fix by deleting rd, adjust the only user.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoDelete write only variables
Blue Swirl [Wed, 13 Oct 2010 18:41:29 +0000 (18:41 +0000)]
Delete write only variables

Compiling with GCC 4.6.0 20100925 produced warnings like:
/src/qemu/net/tap-win32.c: In function 'tap_win32_open':
/src/qemu/net/tap-win32.c:582:12: error: variable 'hThread' set but not used [-Werror=unused-but-set-variable]

Fix by removing the unused variables.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoppc: remove video.x
Blue Swirl [Wed, 13 Oct 2010 18:38:07 +0000 (18:38 +0000)]
ppc: remove video.x

Only Mac-on-Linux stuff used video.x, OpenBIOS does not need it.

Remove video.x MoL hacks.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agolsi53c895a: avoid a write only variable
Blue Swirl [Wed, 13 Oct 2010 18:38:07 +0000 (18:38 +0000)]
lsi53c895a: avoid a write only variable

Compiling with GCC 4.6.0 20100925 produced a warning:
/src/qemu/hw/lsi53c895a.c: In function 'lsi_do_msgout':
/src/qemu/hw/lsi53c895a.c:848:9: error: variable 'len' set but not used [-Werror=unused-but-set-variable]

Fix by adding a dummy cast so that the variable is not unused for
non-debug case.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoeepro100: initialize a variable in all cases
Blue Swirl [Wed, 13 Oct 2010 18:38:07 +0000 (18:38 +0000)]
eepro100: initialize a variable in all cases

Compiling with GCC 4.6.0 20100925 produced warnings:
/src/qemu/hw/eepro100.c: In function 'eepro100_read4':
/src/qemu/hw/eepro100.c:1351:14: error: 'val' may be used uninitialized in this function [-Werror=uninitialized]
/src/qemu/hw/eepro100.c: In function 'eepro100_read2':
/src/qemu/hw/eepro100.c:1328:14: error: 'val' may be used uninitialized in this function [-Werror=uninitialized]
/src/qemu/hw/eepro100.c: In function 'eepro100_read1':
/src/qemu/hw/eepro100.c:1285:13: error: 'val' may be used uninitialized in this function [-Werror=uninitialized]

Fix by initializing 'val' at start.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agocirrus: avoid write only variables
Blue Swirl [Wed, 13 Oct 2010 18:38:07 +0000 (18:38 +0000)]
cirrus: avoid write only variables

Compiling with GCC 4.6.0 20100925 produced a lot of warnings like:
In file included from /src/qemu/hw/cirrus_vga_rop.h:174:0,
                 from /src/qemu/hw/cirrus_vga.c:284:
/src/qemu/hw/cirrus_vga_rop2.h: In function 'cirrus_patternfill_0_8':
/src/qemu/hw/cirrus_vga_rop2.h:48:18: error: variable 'col' set but not used [-Werror=unused-but-set-variable]
/src/qemu/hw/cirrus_vga_rop2.h: In function 'cirrus_colorexpand_transp_0_8':
/src/qemu/hw/cirrus_vga_rop2.h:104:18: error: variable 'col' set but not used [-Werror=unused-but-set-variable]

Fix the warnings by introducing an inline function, which avoids
exposing write-only variables.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoblock: avoid a write only variable
Blue Swirl [Wed, 13 Oct 2010 18:38:07 +0000 (18:38 +0000)]
block: avoid a write only variable

Compiling with GCC 4.6.0 20100925 produced a warning:
/src/qemu/block/qcow2-refcount.c: In function 'update_refcount':
/src/qemu/block/qcow2-refcount.c:552:13: error: variable 'dummy' set but not used [-Werror=unused-but-set-variable]

Fix by adding a dummy cast so that the result is not unused.

Acked-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoMerge remote branch 'mst/for_anthony' into staging
Anthony Liguori [Mon, 11 Oct 2010 20:37:11 +0000 (15:37 -0500)]
Merge remote branch 'mst/for_anthony' into staging

14 years agotrace: remove timestamp files when cleaning up
Blue Swirl [Sat, 9 Oct 2010 08:24:17 +0000 (08:24 +0000)]
trace: remove timestamp files when cleaning up

'make clean' did not remove trace.[ch]-timestamp files,
only trace.[ch]. But 'make' did not know how to make trace.[ch]
files if the timestamp files were present.

Fix by removing the timestamp files along with trace.[ch].

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoconfigure: Send error message from spice check to /dev/null
Stefan Weil [Thu, 7 Oct 2010 19:15:58 +0000 (21:15 +0200)]
configure: Send error message from spice check to /dev/null

pkg-config is not always available (e.g. on win32 hosts),
but we don't want to see the 'command not found' error message.

Redirect stdout and stderr to /dev/null.

v2:

* Removed changes which should not have been here.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agowin32: Set unbuffered stdout
Stefan Weil [Thu, 7 Oct 2010 16:55:48 +0000 (18:55 +0200)]
win32: Set unbuffered stdout

Win32 does not support line-buffering, but it allows
unbuffered output.

Unbuffered output is a good approximation. For typical output
statements which usually end with '\n', it's even identical.

Buffered output is unusable for program traces because of
its large delay.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years ago.gitignore: Ignore *-timestamp
Stefan Hajnoczi [Thu, 7 Oct 2010 11:07:15 +0000 (12:07 +0100)]
.gitignore: Ignore *-timestamp

Timestamp files were recently added to reduce make churn on source files
that use tracing.  The timestamp files should never be committed and
should not be visible in git status.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoacpi: Fix an infinite loop in acpi_table_add
Vincent Minet [Tue, 5 Oct 2010 00:23:12 +0000 (02:23 +0200)]
acpi: Fix an infinite loop in acpi_table_add

Commit d729bb9a7700e364b1c5f9893d61f07a9e002bce has a typo, causing an
infinite loop in acpi_table_add.

Signed-off-by: Vincent Minet <vincent@vincent-minet.net>
Acked-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoconfigure: Remove unneeded defines from checks
Stefan Weil [Wed, 6 Oct 2010 19:09:17 +0000 (21:09 +0200)]
configure: Remove unneeded defines from checks

_GNU_SOURCE is already defined in QEMU_CFLAGS which
is passed to gcc in shell function compile_prog.

Removing the definition from several checks avoids compiler warnings
(which are now written to config.log).

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoconfigure: include stddef.h for NULL
Scott Wood [Tue, 5 Oct 2010 19:28:17 +0000 (14:28 -0500)]
configure: include stddef.h for NULL

This fixes an observed failure to detect madvise() on Linux.

To avoid similar issues, all other tests that use NULL but don't already
have stddef.h (or another header that is defined to provide NULL,
such as stdio.h, unistd.h, or time.h) are also fixed.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Trace bdrv_aio_{readv,writev}
Stefan Hajnoczi [Tue, 5 Oct 2010 13:28:53 +0000 (14:28 +0100)]
trace: Trace bdrv_aio_{readv,writev}

Observing block layer aio readv/writev operations is useful for
debugging image formats or understanding guest disk I/O patterns.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Use TP_PROTO() and TP_ARGS() for LTTng UST
Stefan Hajnoczi [Tue, 5 Oct 2010 13:28:52 +0000 (14:28 +0100)]
trace: Use TP_PROTO() and TP_ARGS() for LTTng UST

The LTTng UserSpace Tracer formerly used TPPROTO() and TPARGS() instead
of TP_PROTO() and TP_ARGS() like the kernel uses.  This has been changed
so QEMU needs to follow.

I am not aware of a graceful way of making the transition but since no
one complained that the UST build is broken, it should be fine to just
switch over without compatibility for old UST headers.  The newer UST
headers are shipping in distro packages so it is realistic to make this
change now.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Don't strip lines containing '#' arbitrarily
Stefan Hajnoczi [Tue, 5 Oct 2010 13:28:51 +0000 (14:28 +0100)]
trace: Don't strip lines containing '#' arbitrarily

Although comment lines must be skipped, the '#' character can occur in
valid format strings.  Be more careful when checking for comments.
Leave comments at the end of the line where they will not interfere with
other processing.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: Use portable format strings
Stefan Hajnoczi [Tue, 5 Oct 2010 13:28:50 +0000 (14:28 +0100)]
trace: Use portable format strings

It is not portable to use "%ld" for int64_t because int64_t may have
type long on 64-bit platforms and long long on 32-bit platforms.  Use
the standard library PRId64 macros to keep format strings portable.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agocris: Consider the TLB valid bit on writes to the TLB
Edgar E. Iglesias [Thu, 7 Oct 2010 19:20:52 +0000 (21:20 +0200)]
cris: Consider the TLB valid bit on writes to the TLB

When updating the guest TLB we only need to flush previous
mappings from the entry written if the entry was valid.

Also fixes a compiler warning reported by Blue Swirl.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agovhost: error code
Michael S. Tsirkin [Wed, 6 Oct 2010 13:20:28 +0000 (15:20 +0200)]
vhost: error code

fix up errors returned to include errno, not just -1

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agovirtio: change set guest notifier to per-device
Michael S. Tsirkin [Wed, 6 Oct 2010 13:20:17 +0000 (15:20 +0200)]
virtio: change set guest notifier to per-device

When using irqfd with vhost-net to inject interrupts,
a single evenfd might inject multiple interrupts.
Implementing this is much easier with a single
per-device callback to set guest notifiers.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agoeepro100: Add support for multiple individual addresses (multiple IA)
Stefan Weil [Wed, 29 Sep 2010 19:59:55 +0000 (21:59 +0200)]
eepro100: Add support for multiple individual addresses (multiple IA)

I reviewed the latest sources of Linux, FreeBSD and NetBSD.
They all reset the multiple IA bit (multi_ia in BSD) to zero,
but I did not find code which sets this bit to one
(like it is done by some routers).

Running Windows guests also did not set this bit.

Intel's Open Source Software Developer Manual does not
give much information on the semantics related to this bit,
so I had to guess how it works. The guess was good enough
to make the router emulation work.

Related changes in this patch:
* Update naming and documentation of the internal hash register.
  It is not limited to multicast, but also used for multiple IA.
* Dump complete configuration register when debug traces are enabled.
* Debug output when multiple IA bit is set during CmdConfigure.
* Debug output when frames are received because multiple IA bit is set,
  or when they are ignored although it is set.

Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agovirtio-net: unify vhost-net start/stop
Michael S. Tsirkin [Mon, 27 Sep 2010 16:41:30 +0000 (18:41 +0200)]
virtio-net: unify vhost-net start/stop

Move all of vhost-net start/stop logic to a single routine,
and call it from everywhere.

Additionally, start/stop vhost-net on link up/down:
we should not transmit anything if user asked us to
put the link down.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
14 years agovirtio: invoke set_status callback on reset
Michael S. Tsirkin [Mon, 27 Sep 2010 16:32:52 +0000 (18:32 +0200)]
virtio: invoke set_status callback on reset

As status is set to 0 on reset, invoke the relevant callback. This makes
for a cleaner code in devices as they don't need to duplicate the code
in their reset routine, as well as excercises this path a little more.

In particular this makes it possible to unify
vhost-net handling code with the following patch.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agonet: delay freeing peer host device
Michael S. Tsirkin [Mon, 20 Sep 2010 16:08:41 +0000 (18:08 +0200)]
net: delay freeing peer host device

With -netdev, virtio devices present offload
features to guest, depending on the backend used.
Thus, removing host netdev peer while guest is
active leads to guest-visible inconsistency and/or crashes.

As a solution, while guest (NIC) peer device exists,
we prevent the host peer from being deleted.
This patch does this by adding peer_deleted flag in nic state:
if host device is going away while guest device
is around, set this flag and keep a shell of
the host device around for as long as guest device exists.

The link is put down so all packets will get discarded.

At the moment, management can detect that device deletion
is delayed by doing info net. As a next step, we shall add
commands that control hotplug/unplug without
removing the device, and an event to report that
guest has responded to the hotplug event.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
14 years agoMerge remote branch 'spice/submit.6' into staging
Anthony Liguori [Tue, 5 Oct 2010 19:14:19 +0000 (14:14 -0500)]
Merge remote branch 'spice/submit.6' into staging

Conflicts:
configure

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoMerge remote branch 'qmp/for-anthony' into staging
Anthony Liguori [Tue, 5 Oct 2010 18:54:49 +0000 (13:54 -0500)]
Merge remote branch 'qmp/for-anthony' into staging

14 years agolinux-user: Fix typo m86k -> m68k
Stefan Weil [Fri, 24 Sep 2010 16:30:35 +0000 (18:30 +0200)]
linux-user: Fix typo m86k -> m68k

Replace m86k_sim_stat by m68k_sim_stat.

Cc: Riku Voipio <riku.voipio@iki.fi>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
14 years agoFix spelling in comments
Stefan Weil [Fri, 6 Aug 2010 19:53:45 +0000 (21:53 +0200)]
Fix spelling in comments

multifuction -> multifunction
successfull -> successful.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
14 years agodocs: Improve documentation
Stefan Weil [Sun, 1 Aug 2010 11:43:18 +0000 (13:43 +0200)]
docs: Improve documentation

Fix some inconsistencies (tabs and punctuation)
and try to improve grammar and spelling.

Cc: Juan Quintela <quintela@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
14 years agoAdd new user mode option -ignore-environment
Stefan Weil [Thu, 15 Jul 2010 20:28:02 +0000 (22:28 +0200)]
Add new user mode option -ignore-environment

An empty environment is sometimes useful in user mode.
The new option provides it for linux-user and bsd-user
(darwin-user still has no environment related options).

The patch also adds the documentation for other
environment related options.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
14 years agoppc: Minor 40x MMU fixes
John Clark [Tue, 5 Oct 2010 16:38:55 +0000 (18:38 +0200)]
ppc: Minor 40x MMU fixes

* Fix swapped reading of tlblo/hi.
* Fix tlb exec permissions

Signed-off-by: John Clark <clarkjc@runbox.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agoconsole: Avoid dereferencing NULL active_console
Stefan Hajnoczi [Mon, 20 Sep 2010 13:11:19 +0000 (14:11 +0100)]
console: Avoid dereferencing NULL active_console

The console_select() function does not check that active_console is
non-NULL before dereferencing it.  When invoked with qemu -nodefaults it
is possible to hit this case.

This patch checks that active_console is non-NULL before stashing away
the old console dimensions in console_select().

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoexec: Fix compilation error for debug code
Stefan Weil [Thu, 30 Sep 2010 20:39:51 +0000 (22:39 +0200)]
exec: Fix compilation error for debug code

is_softmmu was removed with commit
d4c430a80f000d722bb70287af4d4c184a8d7006,
so remove it now from debug code, too.

Fix also the format specifier for paddr
in the same line of code.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agorc4030: Fix compilation error in debug code
Stefan Weil [Thu, 30 Sep 2010 20:05:42 +0000 (22:05 +0200)]
rc4030: Fix compilation error in debug code

min was unknown here, so avoid it.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomipsnet: Fix compiler warning in debug code
Stefan Weil [Thu, 30 Sep 2010 19:33:15 +0000 (21:33 +0200)]
mipsnet: Fix compiler warning in debug code

size_t needs a different format specifier, so fix this.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoblock/vvfat: Fix compiler warning in debug code
Stefan Weil [Thu, 30 Sep 2010 19:15:39 +0000 (21:15 +0200)]
block/vvfat: Fix compiler warning in debug code

Fix this compiler warning:
./block/vvfat.c:2285: error: comparison of unsigned expression >= 0 is always true

Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agovirtio-9p: Use GCC_FMT_ATTR and fix a format warning
Stefan Weil [Mon, 27 Sep 2010 16:45:47 +0000 (18:45 +0200)]
virtio-9p: Use GCC_FMT_ATTR and fix a format warning

With the new gcc format warnings, gcc detected this:

/qemu/hw/virtio-9p.c:1040: error: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘__nlink_t’

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoblockdev: Use GCC_FMT_ATTR (format checking)
Stefan Weil [Thu, 23 Sep 2010 18:47:32 +0000 (20:47 +0200)]
blockdev: Use GCC_FMT_ATTR (format checking)

Additional changes:

* Removed 'extern' from drive_add (avoids too long line).
* Removed 'extern' from other functions (makes declarations
  consistent with others in same header file).

Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoUse GCC_FMT_ATTR (format checking)
Stefan Weil [Thu, 23 Sep 2010 19:28:05 +0000 (21:28 +0200)]
Use GCC_FMT_ATTR (format checking)

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoReplace most gcc format attributes by macro GCC_FMT_ATTR (format checking)
Stefan Weil [Thu, 23 Sep 2010 19:28:03 +0000 (21:28 +0200)]
Replace most gcc format attributes by macro GCC_FMT_ATTR (format checking)

Since version 4.4.x, gcc supports additional format attributes.
    __attribute__ ((format (gnu_printf, 1, 2)))
should be used instead of
    __attribute__ ((format (printf, 1, 2))
because QEMU always uses standard format strings (even with mingw32).

The patch replaces format attribute printf / __printf__ by macro
GCC_FMT_ATTR which uses gnu_printf if supported.

It also removes an #ifdef __GNUC__ (not needed any longer).

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoslirp: Silence warning on Haiku
Andreas Färber [Sun, 19 Sep 2010 22:50:48 +0000 (00:50 +0200)]
slirp: Silence warning on Haiku

Haiku has O_BINARY in fcntl.h.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Cc: Jan Kiszka <jan.kiszka@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotap: Add stub for Haiku
Andreas Färber [Sun, 19 Sep 2010 22:50:47 +0000 (00:50 +0200)]
tap: Add stub for Haiku

Adapted from AIX code.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agonbd: Haiku has _IO() in its BSD compatibility layer
Andreas Färber [Sun, 19 Sep 2010 22:50:46 +0000 (00:50 +0200)]
nbd: Haiku has _IO() in its BSD compatibility layer

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoHaiku doesn't have libm
Andreas Färber [Sun, 19 Sep 2010 22:50:45 +0000 (00:50 +0200)]
Haiku doesn't have libm

Math functions are integrated into Haiku's libroot.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoconfigure: Don't rely on special pthreads library
Andreas Färber [Sun, 19 Sep 2010 22:50:44 +0000 (00:50 +0200)]
configure: Don't rely on special pthreads library

Haiku has pthreads integrated into its libroot.so library. No linker arguments
are needed for it, so don't fail if -lpthread and similar don't link.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoconfigure: Add basic support for Haiku
Andreas Färber [Sun, 19 Sep 2010 22:50:43 +0000 (00:50 +0200)]
configure: Add basic support for Haiku

For compatibility with BeOS, Haiku's error codes are negative whereas recent
POSIX versions require them to be positive. As spotted by François, some
parts of QEMU code rely on this, so use a mapper library to convert them
to positive ones.

Cc: François Revol <revol@free.fr>
Cc: Ingo Weinhold <ingo_weinhold@gmx.de>
Haiku has network functions in libnetwork.so. It doesn't ship libutil.so.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotrace: avoid unnecessary recompilation if nothing changed
Blue Swirl [Sat, 2 Oct 2010 14:28:12 +0000 (14:28 +0000)]
trace: avoid unnecessary recompilation if nothing changed

Add logic to detect changes in generated files. If the old
and new files are identical, don't touch the generated file.
This avoids a lot of churn since many files depend on trace.h.

Based on suggestion by Paolo Bonzini.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoMakefile: fix config-devices.mak generation
Blue Swirl [Sat, 2 Oct 2010 14:28:08 +0000 (14:28 +0000)]
Makefile: fix config-devices.mak generation

The logic of detecting changes in default-configs/*.mak is
flawed as can be demonstrated by 'touch default-configs/*.mak'
followed by make. This results in a message claiming that user
made changes to the */config-devices.mak files.

Fix by separating the detection of changes made by the user and
changes in the default-configs.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agosysbus: fix address truncation
Blue Swirl [Sat, 2 Oct 2010 14:27:41 +0000 (14:27 +0000)]
sysbus: fix address truncation

Fix address truncation in sysbus by using a wider type.

Reported-by: Artyom Tarasenko <atar4qemu@googlemail.com>
Tested-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotarget-cris: Use %td for ptrdiff_t arguments in debug message
Stefan Weil [Sat, 2 Oct 2010 10:41:03 +0000 (12:41 +0200)]
target-cris: Use %td for ptrdiff_t arguments in debug message

According to ISO/IEC 9899:1999 7.19.6.1,
the correct length modifier for ptrdiff_t is 't', not 'z'.

Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agotarget-microblaze: Use %td for ptrdiff_t arguments in debug message
Stefan Weil [Sat, 2 Oct 2010 10:41:04 +0000 (12:41 +0200)]
target-microblaze: Use %td for ptrdiff_t arguments in debug message

According to ISO/IEC 9899:1999 7.19.6.1,
the correct length modifier for ptrdiff_t is 't', not 'z'.

Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agovirtex: Add braces
Edgar E. Iglesias [Sat, 2 Oct 2010 11:04:49 +0000 (13:04 +0200)]
virtex: Add braces

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agoQMP/README: Update QMP homepage address
Luiz Capitulino [Fri, 10 Sep 2010 17:05:23 +0000 (14:05 -0300)]
QMP/README: Update QMP homepage address

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Rename the qemu-monitor.hx file
Luiz Capitulino [Thu, 30 Sep 2010 19:00:22 +0000 (16:00 -0300)]
Monitor: Rename the qemu-monitor.hx file

Let's be consistent and call it hmp-commands.hx, so that we have
qmp-commands.hx for QMP and hmp-commands.hx for HMP.

Please, note that this commit doesn't touch qemu-monitor.texi. All
texi files have the qemu- prefix and I don't think it's worth
changing that.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Introduce qmp_call_cmd()
Luiz Capitulino [Thu, 16 Sep 2010 14:11:18 +0000 (11:11 -0300)]
QMP: Introduce qmp_call_cmd()

Calls a QObject handler and emits the QMP response, also drops
monitor_call_handler() which is now unused.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Directly call QObject handlers
Luiz Capitulino [Thu, 16 Sep 2010 14:06:11 +0000 (11:06 -0300)]
Monitor: Directly call QObject handlers

This avoids handle_user_command() calling monitor_call_handler(),
which is currently shared with QMP.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Rename monitor_handler_is_async()
Luiz Capitulino [Thu, 16 Sep 2010 14:01:32 +0000 (11:01 -0300)]
Monitor: Rename monitor_handler_is_async()

Let's follow the convention introduced by the previous commit and
call it handler_is_async().

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Rename monitor_handler_ported()
Luiz Capitulino [Thu, 16 Sep 2010 13:58:59 +0000 (10:58 -0300)]
Monitor: Rename monitor_handler_ported()

That name makes no sense anymore, as dispatch tables have been split,
a better name is handler_is_qobject(), which really communicates
the handler's type.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Drop monitor_cmd_user_only()
Luiz Capitulino [Thu, 16 Sep 2010 13:47:54 +0000 (10:47 -0300)]
Monitor: Drop monitor_cmd_user_only()

This function was only needed when QMP and HMP were sharing dispatch
tables, this is no longer true so just drop it.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Drop QMP info from the qemu-monitor.hx file
Luiz Capitulino [Mon, 13 Sep 2010 18:34:56 +0000 (15:34 -0300)]
Monitor: Drop QMP info from the qemu-monitor.hx file

QMP has its own dispatch table and documentation file
(qmp-commands.hx), we can now drop the following QMP specific info
from qemu-monitor.hx:

    o SQMP/EQMP sections
    o The qmp_capabilities command
    o The query-commands command

However, note that QObject handlers entries are not being removed.
This will only happen when we introduce a proper QMP call interface.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Small cleanup in handle_qmp_command()
Luiz Capitulino [Mon, 13 Sep 2010 17:44:27 +0000 (14:44 -0300)]
QMP: Small cleanup in handle_qmp_command()

QMP has its own dispatch tables, we can now drop the following
checks:

    o 'info' command: this command doesn't exist in QMP's
       dispatch table, the right thing will happen when it's
       issued by a client (ie. command not found error)

    o monitor_handler_ported(): all QMP handlers are 'ported', no
      need to check for that

    o monitor_cmd_user_only(): no HMP handler will exist in QMP's
      dispatch tables, that's why we have split them after all :-)

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Simplify do_info_commands()
Luiz Capitulino [Thu, 16 Sep 2010 13:36:54 +0000 (10:36 -0300)]
QMP: Simplify do_info_commands()

We now iterate over QMP's dispatch tables, no need to check for
QMP-only handlers anymore.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Introduce query commands dispatch table
Luiz Capitulino [Wed, 15 Sep 2010 20:20:33 +0000 (17:20 -0300)]
QMP: Introduce query commands dispatch table

The new table is a copy of HMP's table, containing only QObject
handlers.

In the near future HMP will be making QMP calls and then we will
be able to drop QObject handlers from HMP's table.

From now on, QMP and HMP have different query command dispatch
tables.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Introduce command dispatch table
Luiz Capitulino [Wed, 15 Sep 2010 20:17:45 +0000 (17:17 -0300)]
QMP: Introduce command dispatch table

Also update QMP functions to use it. The table is generated
from the qmp-commands.hx file.

From now on, QMP and HMP have different command dispatch
tables.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Introduce qmp_find_cmd()
Luiz Capitulino [Wed, 15 Sep 2010 20:08:39 +0000 (17:08 -0300)]
QMP: Introduce qmp_find_cmd()

Next commit needs this new function: it will introduce the
the QMP's command dispatch table and qmp_find_cmd() will be
used to search on it.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Introduce the qmp-commands.hx file
Luiz Capitulino [Mon, 13 Sep 2010 15:26:00 +0000 (12:26 -0300)]
Monitor: Introduce the qmp-commands.hx file

This file contains a copy of the following information from the
qemu-monitor.hx file:

    o QObject handlers entries
    o QMP documentation (all SQMP/EQMP sections)

Right now it's only used to generate the QMP docs in QMP/, but
next commits will turn this into QMP's command dispatch table.

It's important to note that QObject handlers entries are going
to get duplicated: they will exist in both QMP's and HMP's
dispatch tables.

This will be fixed in the near future, when we add a proper
QMP call interface and HMP is converted to use it. This way we
can completely drop QObject handlers entries from HMP's tables.

NOTE: HMP specific constructions, like "q|quit", have been dropped.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Convert do_info() back to HMP
Luiz Capitulino [Mon, 13 Sep 2010 15:15:26 +0000 (12:15 -0300)]
Monitor: Convert do_info() back to HMP

This is a HMP specific handler, it makes no sense to have it
under QMP.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Drop is_async_return()
Luiz Capitulino [Wed, 15 Sep 2010 19:56:48 +0000 (16:56 -0300)]
Monitor: Drop is_async_return()

If I understood it correcty, the is_async_return() logic was only
used to prevent QMP from issuing duplicated success responses
for asynchronous handlers.

However, QMP doesn't use do_info() anymore so this is dead logic
and (hopefully) can be safely dropped.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Drop QMP bits from do_info()
Luiz Capitulino [Fri, 10 Sep 2010 20:00:16 +0000 (17:00 -0300)]
Monitor: Drop QMP bits from do_info()

As of last commit, QMP doesn't use do_info() anymore. Simplify it.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: Don't use do_info()
Luiz Capitulino [Fri, 10 Sep 2010 19:03:38 +0000 (16:03 -0300)]
QMP: Don't use do_info()

Since its inception, QMP has been using HMP's do_info() function
to run query commands.

This was a bad choice, as it made do_info() more complex and
contributed to couple QMP and HMP.

This commit fixes that by doing the following changes:

  1. Introduce qmp_find_query_cmd() and use it to directly lookup
     the info_cmds table

  2. Introduce qmp_call_query_cmd() so that QMP code is able
     to call query handlers without using do_info()

  3. Drop do_info() usage (via monitor_find_command("info"))

We need all the three changes in one shot so that we don't break
the calling of query commands in QMP.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoQMP: handle_qmp_command(): Move 'cmd' sanity check
Luiz Capitulino [Wed, 15 Sep 2010 13:56:17 +0000 (10:56 -0300)]
QMP: handle_qmp_command(): Move 'cmd' sanity check

Next commit will change how query commands are handled in a
way that the 'cmd' sanity check is also going to be needed
for query commands handling.

Let's move it out of the else body then.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoMonitor: Introduce search_dispatch_table()
Luiz Capitulino [Mon, 13 Sep 2010 16:17:58 +0000 (13:17 -0300)]
Monitor: Introduce search_dispatch_table()

It's a generic version of monitor_find_command() which searches
the dispatch table passed as an argument.

Future commits will introduce new dispatch tables, so we need
common code to search them.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agodisable guest-provided stats on "info balloon" command
Eduardo Habkost [Tue, 14 Sep 2010 16:43:39 +0000 (13:43 -0300)]
disable guest-provided stats on "info balloon" command

The addition of memory stats reporting to the virtio balloon causes
the 'info balloon' command to become asynchronous.  This is a regression
because in some cases it can hang the user monitor.

This is an alternative to Adam Litke's patch. Adam's patch disabled the
corresponding (guest-visible) virtio feature bit, causing issues for migration.
Original discussion is available at:
http://marc.info/?l=qemu-devel&m=128448124328314&w=2

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Acked-by: Adam Litke <agl@us.ibm.com
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoAdd option to turn on JSON pretty printing in monitor
Daniel P. Berrange [Mon, 7 Jun 2010 14:42:31 +0000 (15:42 +0100)]
Add option to turn on JSON pretty printing in monitor

Expaned '-mon' arg to allow a 'pretty=on' flag. This makes the
monitor pretty print its replies to easy human debugging / reading

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agoAdd support for JSON pretty printing
Daniel P. Berrange [Mon, 7 Jun 2010 14:42:14 +0000 (15:42 +0100)]
Add support for JSON pretty printing

The monitor does not pretty-print JSON output, so that everything
will be on a single line reply. When JSON docs get large this is
quite unpleasant to read. For the future command line capabilities
query ability, huge JSON docs will be available. This needs the
ability to pretty-print.

This introduces a new API qobject_to_json_pretty() that does
a minimal indentation of list and dict members. As an example,
this makes

  {"QMP": {"version": {"micro": 50, "minor": 12, "package": "", "major": 0}, "capabilities": []}}

Output as

  {
      "QMP": {
          "version": {
              "micro": 50,
              "minor": 12,
              "package": "",
              "major": 0
          },
          "capabilities": [
          ]
      }
  }

NB: this is not turned on for the QMP monitor.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
14 years agopowerpc: Add a virtex5 ml507 refdesign board
Edgar E. Iglesias [Wed, 29 Sep 2010 13:31:44 +0000 (15:31 +0200)]
powerpc: Add a virtex5 ml507 refdesign board

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
14 years agopowerpc: Add a ppc-440x5 Xilinx model
Edgar E. Iglesias [Sat, 11 Sep 2010 13:29:01 +0000 (15:29 +0200)]
powerpc: Add a ppc-440x5 Xilinx model

Add a powerpc 440x5 with the model ID on the Xilinx virtex5.
Connect the 440x5 to the 40x interrupt logic.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
14 years agotap: Remove double include of util.h
Andreas Färber [Tue, 28 Sep 2010 21:48:42 +0000 (23:48 +0200)]
tap: Remove double include of util.h

If neither of __FreeBSD__, __FreeBSD_kernel__ and __DragonFly__ is defined,
util.h is included from tap-bsd.c.
Don't include it again if __OpenBSD__ is defined.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agopulse-audio: fix bug on updating rpos
Wu Fengguang [Wed, 29 Sep 2010 04:18:41 +0000 (12:18 +0800)]
pulse-audio: fix bug on updating rpos

Fix a rpos coordination bug between qpa_run_out() and qpa_thread_out(),
which shows up as playback noises.

qpa_run_out()
qpa_thread_out loop N critical section 1
qpa_run_out()   qpa_thread_out loop N doing pa_simple_write()
qpa_run_out() qpa_thread_out loop N doing pa_simple_write()
qpa_thread_out loop N critical section 2
qpa_thread_out loop N+1 critical section 1
qpa_run_out() qpa_thread_out loop N+1 doing pa_simple_write()

In the above scheme, "qpa_thread_out loop N+1 critical section 1" will
get the same rpos as the one used by "qpa_thread_out loop N critical
section 1". So it will be reading dead samples from the old rpos.

The rpos can only be updated back to qpa_thread_out when there is a
qpa_run_out() run between two qpa_thread_out loops.

normal sequence:
qpa_thread_out:
hw->rpos (X0) => local rpos => pa->rpos (X1)
qpa_run_out:
pa->rpos (X1) => hw->rpos (X1)
qpa_thread_out:
hw->rpos (X1) => local rpos => pa->rpos (X2)

buggy sequence:
qpa_thread_out:
hw->rpos (X0) => local rpos => pa->rpos (X1)
qpa_thread_out:
hw->rpos (X0) => local rpos => pa->rpos (X1')

Obviously qpa_run_out() shall be called at least once between any two
qpa_thread_out loops (after pa->rpos is set), in order for the new
qpa_thread_out loop to see the updated rpos.

Setting pa->live to 0 does the trick. The next loop will have to wait
for one qpa_run_out() invocation in order to get a non-zero pa->live
and proceed.

Signed-off-by: malc <av1474@comtv.ru>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
14 years agoaudio: Fix memory size for resampling buffer in DAC case
malc [Tue, 28 Sep 2010 04:54:24 +0000 (08:54 +0400)]
audio: Fix memory size for resampling buffer in DAC case

Signed-off-by: malc <av1474@comtv.ru>
14 years agomingw: add version information to the executables
Blue Swirl [Sun, 26 Sep 2010 16:07:57 +0000 (16:07 +0000)]
mingw: add version information to the executables

Add QEMU version information to the executables, based on earlier
work by C. W. Betts and Robert Riebisch.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoAvoid exit in trap as it breaks with some shells
Loïc Minier [Sat, 25 Sep 2010 19:52:30 +0000 (21:52 +0200)]
Avoid exit in trap as it breaks with some shells

Don't call exit in the trap handler as it causes the return code to be
zero with some buggy shells (dash and pdksh at least) and is useless
here anyway.

Signed-off-by: Loïc Minier <loic.minier@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoIntroduce qemu_madvise()
Andreas Färber [Sat, 25 Sep 2010 11:26:05 +0000 (11:26 +0000)]
Introduce qemu_madvise()

vl.c has a Sun-specific hack to supply a prototype for madvise(),
but the call site has apparently moved to arch_init.c.

Haiku doesn't implement madvise() in favor of posix_madvise().
OpenBSD and Solaris 10 don't implement posix_madvise() but madvise().
MinGW implements neither.

Check for madvise() and posix_madvise() in configure and supply qemu_madvise()
as wrapper. Prefer madvise() over posix_madvise() due to flag availability.
Convert all callers to use qemu_madvise() and QEMU_MADV_*.

Note that on Solaris the warning is fixed by moving the madvise() prototype,
not by qemu_madvise() itself. It helps with porting though, and it simplifies
most call sites.

v7 -> v8:
* Some versions of MinGW have no sys/mman.h header. Reported by Blue Swirl.

v6 -> v7:
* Adopt madvise() rather than posix_madvise() semantics for returning errors.
* Use EINVAL in place of ENOTSUP.

v5 -> v6:
* Replace two leftover instances of POSIX_MADV_NORMAL with QEMU_MADV_INVALID.
  Spotted by Blue Swirl.

v4 -> v5:
* Introduce QEMU_MADV_INVALID, suggested by Alexander Graf.
  Note that this relies on -1 not being a valid advice value.

v3 -> v4:
* Eliminate #ifdefs at qemu_advise() call sites. Requested by Blue Swirl.
  This will currently break the check in kvm-all.c by calling madvise() with
  a supported flag, which will not fail. Ideas/patches welcome.

v2 -> v3:
* Reuse the *_MADV_* defines for QEMU_MADV_*. Suggested by Alexander Graf.
* Add configure check for madvise(), too.
  Add defines to Makefile, not QEMU_CFLAGS.
  Convert all callers, untested. Suggested by Blue Swirl.
* Keep Solaris' madvise() prototype around. Pointed out by Alexander Graf.
* Display configure check results.

v1 -> v2:
* Don't rely on posix_madvise() availability, add qemu_madvise().
  Suggested by Blue Swirl.

Signed-off-by: Andreas Färber <afaerber@opensolaris.org>
Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Alexander Graf <agraf@suse.de>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agopowerpc: Make the decr interrupt type overridable
Edgar E. Iglesias [Mon, 20 Sep 2010 17:08:42 +0000 (19:08 +0200)]
powerpc: Make the decr interrupt type overridable

Make it possible for boards to override the kind of interrupt
to be signaled when the decr timer hits. The 405's signal PIT
interrupts while the 440's signal DECR.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agopowerpc: Improve emulation of the BookE MMU
Edgar E. Iglesias [Mon, 20 Sep 2010 17:06:32 +0000 (19:06 +0200)]
powerpc: Improve emulation of the BookE MMU

Improve the emulation of the BookE MMU to be able to boot linux
on virtex5 boards.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agofmopl: workaround for -Wempty-body
malc [Thu, 23 Sep 2010 18:16:15 +0000 (22:16 +0400)]
fmopl: workaround for -Wempty-body

Signed-off-by: malc <av1474@comtv.ru>
14 years agoMove macros GCC_ATTR and GCC_FMT_ATTR to common header file
Stefan Weil [Tue, 21 Sep 2010 20:27:49 +0000 (22:27 +0200)]
Move macros GCC_ATTR and GCC_FMT_ATTR to common header file

By moving the definition of GCC_ATTR and GCC_FMT_ATTR
from audio_int.h to qemu-common.h these macros are
now generally available for further patches which add
the gcc format attribute.

Newer gcc versions support format gnu_printf which is
better suited for use in QEMU than format printf
(QEMU always uses standard format strings (even with mingw32)).

V2: Use correct operator '==' (instead of '=')

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>