sdk/emulator/qemu.git
14 years agoqemu-io: add 'const'
Blue Swirl [Sun, 13 Dec 2009 15:41:43 +0000 (15:41 +0000)]
qemu-io: add 'const'

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoSilence softfloat warnings on OpenSolaris
Andreas Färber [Sat, 12 Dec 2009 19:10:56 +0000 (20:10 +0100)]
Silence softfloat warnings on OpenSolaris

Don't define C99 math functions on OpenSolaris (Solaris 11),
which still ships GCC 3.4.3. This fixes redefinition warnings.

Spotted by Palle Lyckegaard.

Signed-off-by: Andreas Färber <afaerber@opensolaris.org>
Cc: Palle Lyckegaard <palle@lyckegaard.dk>
Cc: Ben Taylor <bentaylor.solx86@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agotap: Compilation fix for Solaris
Andreas Färber [Sat, 12 Dec 2009 19:10:55 +0000 (20:10 +0100)]
tap: Compilation fix for Solaris

Avoid an unresolved symbol error for TFR,
which is defined in sysemu.h.

Based on patch by Palle Lyckegaard.

Signed-off-by: Andreas Färber <afaerber@opensolaris.org>
Cc: Palle Lyckegaard <palle@lyckegaard.dk>
Cc: Ben Taylor <bentaylor.solx86@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agofdc/sparc32: don't hang on detection under OBP
Artyom Tarasenko [Sun, 13 Dec 2009 13:30:44 +0000 (13:30 +0000)]
fdc/sparc32: don't hang on detection under OBP

Stepping through the SS-5's OBP initialization routines
it looks like reading fdc main status register should
clear the fd interrupt.
The patch doesn't fix problems with fdc on sparc platform,
it only fixes fdc detection.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoSparc32: implement AFX for SS-5
Artyom Tarasenko [Sun, 13 Dec 2009 13:30:19 +0000 (13:30 +0000)]
Sparc32: implement AFX for SS-5

Implement a stub for the AFX register on SparcStation-5.
This stub is needed for running the original SS-5 OBP
instead of OpenBIOS (which allows to boot Solaris 2.5.1
and Solaris 2.6 kernels).

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoscsi-disk: Inquiry with allocation length of CDB < 36 (v4)
Artyom Tarasenko [Sun, 13 Dec 2009 10:32:36 +0000 (11:32 +0100)]
scsi-disk: Inquiry with allocation length of CDB < 36 (v4)

According to the SCSI-2 specification,
http://ldkelley.com/SCSI2/SCSI2/SCSI2/SCSI2-08.html#8.2.5 ,
"if the allocation length of the command descriptor block (CDB) is too
small to transfer all of the parameters, the additional length shall
not be adjusted to reflect the truncation."
The 36 mandatory bytes of response are written to outbuf, and then
only the length requested in CDB is transferred.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomicroblaze: Handle wdc flush and clear.
Edgar E. Iglesias [Sun, 13 Dec 2009 08:10:08 +0000 (09:10 +0100)]
microblaze: Handle wdc flush and clear.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agomicroblaze: Correct branch to registers.
Paul Hartke [Sun, 13 Dec 2009 02:22:24 +0000 (03:22 +0100)]
microblaze: Correct branch to registers.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agov2: properly save kvm system time msr registers
Glauber Costa [Thu, 22 Oct 2009 12:26:56 +0000 (10:26 -0200)]
v2: properly save kvm system time msr registers

Currently, the msrs involved in setting up pvclock are not saved over
migration and/or save/restore. This patch puts their value in special
fields in our CPUState, and deal with them using vmstate.

kvm also has to account for it, by including them in the msr list
for the ioctls.

This is a backport from qemu-kvm.git

[v2: sucessfully build without kerneldir ]

Signed-off-by: Glauber Costa <glommer@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoVNC: Convert do_info_vnc() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:10 +0000 (17:16 -0200)]
VNC: Convert do_info_vnc() to QObject

Return a QDict with server information. Connected clients are returned
as a QList of QDicts.

The new functions (vnc_qdict_remote_addr(), vnc_qdict_local_addr() and
put_addr_qdict()) are used to insert 'host' and 'service' information
in the returned QDict.

This patch is big, but I don't see how to split it.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoPCI: Convert pci_device_hot_add() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:09 +0000 (17:16 -0200)]
PCI: Convert pci_device_hot_add() to QObject

Return a QDict with information about the just added device.

This commit should not change user output.

Please, note that this patch does not do error handling
conversion. In error conditions the handler still calls
monitor_printf().

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agochar: Convert qemu_chr_info() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:08 +0000 (17:16 -0200)]
char: Convert qemu_chr_info() to QObject

Each device is represented by a QDict. The returned QObject is a QList
of all devices.

This commit should not change user output.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock: Convert bdrv_info_stats() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:07 +0000 (17:16 -0200)]
block: Convert bdrv_info_stats() to QObject

Each device statistic information is stored in a QDict and
the returned QObject is a QList of all devices.

This commit should not change user output.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock: Convert bdrv_info() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:06 +0000 (17:16 -0200)]
block: Convert bdrv_info() to QObject

Each block device information is stored in a QDict and the
returned QObject is a QList of all devices.

This commit should not change user output.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomigration: Convert do_info_migrate() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:05 +0000 (17:16 -0200)]
migration: Convert do_info_migrate() to QObject

Return a QDict, which may contain up to more two QDicts, depending
on the type of migration we're performing.

IMPORTANT: as a QInt stores a int64_t integer, RAM values are going
to be stored as int64_t and not as uint64_t as they are today. If
this is a problem QInt will have to be changed.

This commit should not change user output.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_mice() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:04 +0000 (17:16 -0200)]
monitor: Convert do_info_mice() to QObject

Each mouse is represented by a QDict, the returned QObject is a QList of
all mice.

This commit should not change user output.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_uuid() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:03 +0000 (17:16 -0200)]
monitor: Convert do_info_uuid() to QObject

snprintf() is used because the UUID_FMT is too complex for
qobject_from_jsonf().

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_hpet() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:02 +0000 (17:16 -0200)]
monitor: Convert do_info_hpet() to QObject

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_name() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:01 +0000 (17:16 -0200)]
monitor: Convert do_info_name() to QObject

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_kvm() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:16:00 +0000 (17:16 -0200)]
monitor: Convert do_info_kvm() to QObject

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Convert do_info_status() to QObject
Luiz Capitulino [Thu, 10 Dec 2009 19:15:59 +0000 (17:15 -0200)]
monitor: Convert do_info_status() to QObject

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: do_info_version(): Use QDict
Luiz Capitulino [Thu, 10 Dec 2009 19:15:58 +0000 (17:15 -0200)]
monitor: do_info_version(): Use QDict

All 'info' commands should use QDict, this commit also kills
monitor_print_qobject() as do_info_version() doesn't use it
anymore (and no handler will).

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: do_info_cpus(): Use QBool
Luiz Capitulino [Thu, 10 Dec 2009 19:15:57 +0000 (17:15 -0200)]
monitor: do_info_cpus(): Use QBool

While there update the documentation as well.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Fix do_info_commands() output
Luiz Capitulino [Thu, 10 Dec 2009 19:15:56 +0000 (17:15 -0200)]
monitor: Fix do_info_commands() output

Should return a QDict and should not print the user protocol bits
(eg. "c|cont").

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Fix do_info_balloon() output
Luiz Capitulino [Thu, 10 Dec 2009 19:15:55 +0000 (17:15 -0200)]
monitor: Fix do_info_balloon() output

Monitor commands should always return values in bytes and info
commands should always return a QDict.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQDict: Introduce qdict_get_qlist()
Luiz Capitulino [Thu, 10 Dec 2009 19:15:54 +0000 (17:15 -0200)]
QDict: Introduce qdict_get_qlist()

A helper function to get a QList from a QDict.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQDict: Introduce qdict_get_qbool()
Luiz Capitulino [Thu, 10 Dec 2009 19:15:53 +0000 (17:15 -0200)]
QDict: Introduce qdict_get_qbool()

This is a helper function that does type checking before retrieving
a QBool from the dictionary.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoMakefile: move QObject objs to their own entry
Luiz Capitulino [Thu, 10 Dec 2009 19:15:52 +0000 (17:15 -0200)]
Makefile: move QObject objs to their own entry

Other subsystems will need to link against them.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoIntroduce qemu-objects.h header file
Luiz Capitulino [Thu, 10 Dec 2009 19:15:51 +0000 (17:15 -0200)]
Introduce qemu-objects.h header file

An easy way to include all QEMU objects.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agovnc: fix capslock tracking logic.
Gerd Hoffmann [Fri, 11 Dec 2009 10:25:07 +0000 (11:25 +0100)]
vnc: fix capslock tracking logic.

The capslock tracking logic added by commit
6b1325029d80455b9da7cd7bd84a88cb915b867c doesn't work correctly for vnc
clients without EXT_KEY_EVENT support.  The reason is that qemu converts
keysyms for letters to lowercase for the keysym2scancode lookup.  It
then also passes the lowercase value down to do_key_event(), but the
capslock tracking code needs it with the correct case to work properly.

This patch adds a new variable for the lowercase keysym so we'll keep
the unmodified value for do_key_event().

The keysym2scancode is not needed with EXT_KEY_EVENT capable clients
like any app based on the gtk-vnc widget, so I missed that case in
testing ...

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQemuOpts: allow larger option values.
Gerd Hoffmann [Thu, 10 Dec 2009 10:11:08 +0000 (11:11 +0100)]
QemuOpts: allow larger option values.

Use case: loooooooooooooooooong file names for -drive file=...

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoscsi: fix drive hotplug.
Gerd Hoffmann [Thu, 10 Dec 2009 10:11:07 +0000 (11:11 +0100)]
scsi: fix drive hotplug.

This patch fills the DriveInfo->unit after hotplugging a scsi disk.
It makes a difference when auto-assigning a scsi id, where unit was
left filled with '-1' instead of the actual scsi id.

With this patch applied the the drive naming logic in drive_init() works
as good as it did in previous releases.  Which means it works fine with
a single scsi bus.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agopci: don't hw_error() when no slot is available.
Gerd Hoffmann [Thu, 10 Dec 2009 10:11:06 +0000 (11:11 +0100)]
pci: don't hw_error() when no slot is available.

Current PCI code will simply hw_error() and thus abort in case no free
PCI slot is available or the requested PCI slot is already in use by
another device.  For the hotplug case this behavior is not acceptable.
This patch makes qemu pass up the error properly, so the calling code
can decide whenever it wants to exit with an error (on startup) or
whenever it wants to continue (hotplug).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agopci: don't abort() when trying to hotplug with acpi off.
Gerd Hoffmann [Thu, 10 Dec 2009 10:11:05 +0000 (11:11 +0100)]
pci: don't abort() when trying to hotplug with acpi off.

The PCI bus on x86 requires ACPI for hotplug support, thus disbling ACPI
also disables hotplug for the PCI bus.  This patch makes qemu check
whenever the PCI bus in question can handle hotplug before trying to add
devices.  This is needed because qdev will abort() on any attempt to
hotplug devices into a non-hotpluggable bus.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoSet default console to virtio on S390x
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:54 +0000 (13:11 +0100)]
Set default console to virtio on S390x

All "normal" system emulation targets in qemu I'm aware of display
output on either VGA or serial output.

Our S390x virtio machine doesn't have such kind of legacy hardware. So
instead we need to default to a virtio console.

Add flags to QEMUMachine to indicate which kind of default devices make
sense for the machine in question.  Use it for S390x: enable virtcon,
disable serial, parallel and vga.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: virtio consoles.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:53 +0000 (13:11 +0100)]
default devices: virtio consoles.

This patch adds a variable default_virtcon which says whenever a default
virtio console should be added.  It is disabled by default, followup
patch will enable it for s390.  It is cleared when qemu finds
'-virtiocon', '-device virtio-console-s390' or '-device
virtio-console-pci' on the command line.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoadd -qmp convinience switch
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:52 +0000 (13:11 +0100)]
add -qmp convinience switch

Acts like -monitor but switched into qmp mode.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoadd new -mon switch
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:51 +0000 (13:11 +0100)]
add new -mon switch

Add -mon switch which maps pretty straight forward into the QemuOpts
internal representation:

  -mon chardev=<name>[,mode=[control|readline]][,[no]default]

Via config file:

[mon]
   chardev = "<name>"
   mode = "readline"
   default = "on"

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agorework -monitor handling, switch to QemuOpts
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:50 +0000 (13:11 +0100)]
rework -monitor handling, switch to QemuOpts

This patch reworks the -monitor handling:

 - It adds a new "mon" QemuOpts list for the monitor(s).
 - It adds a monitor_parse() function to parse the -monitor switch.
 - It adds a mon_init function to initialize the monitor(s) from the
   "mon" QemuOpts list.
 - It winds up everything and removes the old bits.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoun-static qemu_chr_parse_compat()
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:49 +0000 (13:11 +0100)]
un-static qemu_chr_parse_compat()

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: drives
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:48 +0000 (13:11 +0100)]
default devices: drives

Add a default_drive variable which specified whenever the default drives
(cdrom, floppy, sd) should be created.  It is cleared when the new
-nodefaults switch is specified on the command line.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: network
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:47 +0000 (13:11 +0100)]
default devices: network

Add a default_net variable which specified whenever a default network
should be created.  It is cleared in case any -net option is specified
and it is also added to the new -nodefaults switch.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: add global cmd line option.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:46 +0000 (13:11 +0100)]
default devices: add global cmd line option.

Add global command line option to disable default devices.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: vga adapter.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:45 +0000 (13:11 +0100)]
default devices: vga adapter.

Qemu creates a vga display for you in case you didn't specify one on the
command line.  Right now this is tied to the '-vga <type>' command line
switch, which in turn causes trouble if you are creating your gfx card
using '-device VGA,<props>'.

This patch adds a variable default_vga which says whenever a default
serial line should be added.  It is enabled by default.  It is cleared
when qemu finds '-vga' or '-device {VGA,Cirrus VGA,QEMUware SVGA}' on
the command line.

'-device VGA' still doesn't work though due to a initialization order
issue (vga must init before calling i440fx_init_memory_mappings).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agozap serial_monitor_mux
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:44 +0000 (13:11 +0100)]
zap serial_monitor_mux

The logic in this code obviously predates the multiple monitor
capability of qemu and looks increasingly silly these days.

I think the intention of this piece of code is to get a reasonable
default for the -nographic case: have monitor and serial line muxed
on stdio.

With the new default_serial and default_monitor variables we have now
doing just that became much easier ;)

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: qemu monitor.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:43 +0000 (13:11 +0100)]
default devices: qemu monitor.

This patch makes the monitor default device configuration work like the
default serial and parallel port devices.  It adds a variable
default_monitor which says whenever a default monitor should be added.
It is enabled by default.  It is cleared when qemu finds '-monitor' on
the command line.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: parallel port.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:42 +0000 (13:11 +0100)]
default devices: parallel port.

Qemu creates a default parallel port for you in case you didn't specify
one on the command line.  Right now this is tied to the '-parallel
<chardev>' command line switch, which in turn causes trouble if you are
creating your parallel port via '-device isa-parallel,<props>'.

This patch adds a variable default_parallel which says whenever a default
parallel port should be added.  It is enabled by default.  It is cleared
when qemu finds '-parallel' or '-device isa-parallel' on the command line.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agodefault devices: core code & serial lines.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:41 +0000 (13:11 +0100)]
default devices: core code & serial lines.

Qemu creates a default serial line for you in case you didn't specify
one on the command line.  Right now this is tied to the '-serial
<chardev>' command line switch, which in turn causes trouble if you are
creating your serial line via '-device isa-serial,<props>'.

This patch adds a variable default_serial which says whenever a default
serial line should be added.  It is enabled by default.  It is cleared
when qemu finds '-serial' or '-device isa-serial' on the command line.

Part of the patch is some infrastructure for the '-device $driver'
checking (default_driver_check function) which will also be used by the
other patches of this series.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agovc: colorize chardev title line with blue background.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:40 +0000 (13:11 +0100)]
vc: colorize chardev title line with blue background.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agochardev: move greeting into vc backend.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:39 +0000 (13:11 +0100)]
chardev: move greeting into vc backend.

Make the 'vc' chardev backend print a title line with the chardev name
after initialization, using CharDriverState->label.

This replaces the banner printing code in vl.c.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoRevert "Set default console to virtio on S390x"
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:38 +0000 (13:11 +0100)]
Revert "Set default console to virtio on S390x"

This reverts commit 93d434b4aec0702b87ebf52449a3cdf2c3596825.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoRevert "monitor: Command-line flag to enable control mode"
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:37 +0000 (13:11 +0100)]
Revert "monitor: Command-line flag to enable control mode"

This reverts commit adcb181afe5a951c521411c7a8e9d9b791aa6742.

Conflicts:

monitor.h

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agochardev: make chardevs specified in config file work.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:36 +0000 (13:11 +0100)]
chardev: make chardevs specified in config file work.

The patch decuples the -chardev switch and the actual chardev
initialization.  Without this patch qemu ignores chardev entries
coming via -readconfig.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: also match bus name for global properties
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:35 +0000 (13:11 +0100)]
qdev: also match bus name for global properties

i.e. -global PCI.<property>=<value> will set a default property for all
PCI devices.  Also works for the compat properties used by machine
types.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: add command line option to set global defaults for properties.
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:34 +0000 (13:11 +0100)]
qdev: add command line option to set global defaults for properties.

This patch adds infrastructure and command line option for setting
global defaults for device properties, i.e. you can for example use

  -global virtio-blk-pci.vectors=0

to turn off msi by default for all virtio block devices.  The config
file syntax is:

[global]
  driver = "virtio-blk-pci"
  property = "vectors"
  value = "0"

This can also be used to set properties for devices which are not
created via -device but implicitly via machine init, i.e.

  -global isa-fdc,driveA=<name>

This patch uses the mechanism which configures properties for the
compatibility machine types (pc-0.10 & friends).  The command line
takes precedence over the machine type values.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: make compat stuff more generic
Gerd Hoffmann [Tue, 8 Dec 2009 12:11:33 +0000 (13:11 +0100)]
qdev: make compat stuff more generic

This patch renames the compat properties into global properties and
makes them more generic.  The compatibility stuff is only one of
multiple possible users now.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agokvm: x86: Save/restore exception_index
Jan Kiszka [Tue, 8 Dec 2009 16:54:55 +0000 (17:54 +0100)]
kvm: x86: Save/restore exception_index

As KVM now makes use of exception_index to keep pending exceptions, we
have to save&restore this field as well.

NOTE: We have to nail the arch-independent exception_index down to a
certain bit width for proper vmstate processing, namely to 32 bit.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix recently added QERR_ definitions
Markus Armbruster [Tue, 8 Dec 2009 12:33:54 +0000 (13:33 +0100)]
Fix recently added QERR_ definitions

Commits c7c338c441471a237a046f5f and a488be27 used
lower_case_with_underscores for class values.  Existing usage
CamelCase.  ChangeToThatForConsistency.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: Replace device names containing whitespace
Markus Armbruster [Wed, 9 Dec 2009 16:07:53 +0000 (17:07 +0100)]
qdev: Replace device names containing whitespace

Device names with whitespace require quoting in the shell and in the
monitor.  Some of the offenders are also overly long.  Some have a
more convenient alias, some don't.

The place for verbose device names is DeviceInfo member desc.  The
name should be short & sweet.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: Separate USB product description from qdev name
Markus Armbruster [Wed, 9 Dec 2009 16:07:52 +0000 (17:07 +0100)]
qdev: Separate USB product description from qdev name

Using the qdev name for the product description makes for inconvenient
qdev names.

Put the product description in new USBDeviceInfo member product_desc.
Make usb_qdev_init() use it.  No user or guest visible change, since
the value is still the same.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqdev: Rename USBDevice member devname to product_desc
Markus Armbruster [Wed, 9 Dec 2009 16:07:51 +0000 (17:07 +0100)]
qdev: Rename USBDevice member devname to product_desc

It's not a device name, it's the USB product description string.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agofix rtc-td-hack on host without high-res timers
Gleb Natapov [Tue, 8 Dec 2009 13:50:54 +0000 (15:50 +0200)]
fix rtc-td-hack on host without high-res timers

On hosts without high-res timers it is impossible to inject rtc interrupt
faster then 1kHz. Windows sometimes configures RTC to generate 1kHz
interrupts, so we can't inject missed interrupts when running on such
hosts. Always injecting an interrupt on REG_C read is also not an option
since Windows wait for REG_C to become zero with interrupt disabled
during boot. This patch uses mixed approach: accelerate timer + inject
up to 1000 interrupts on REG_C read.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agovirtio: verify features on load
Michael S. Tsirkin [Tue, 8 Dec 2009 18:07:48 +0000 (20:07 +0200)]
virtio: verify features on load

migrating between hosts which have different features
might break silently, if the migration destination
does not support some features supported by source.

Prevent this from happening by comparing acked feature
bits with the mask supported by the device.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agovmware_vga: add rom file so that it boots.
Dave Airlie [Fri, 11 Dec 2009 05:47:44 +0000 (15:47 +1000)]
vmware_vga: add rom file so that it boots.

This just adds the rom file to the vmware SVGA chipset so it boots.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoDo not abort on qemu_malloc(0) in production builds
Anthony Liguori [Wed, 9 Dec 2009 18:59:36 +0000 (12:59 -0600)]
Do not abort on qemu_malloc(0) in production builds

qemu_malloc() does not allow size=0 to be passed in and aborts on this behavior.

Unfortunately, there is good reason to believe that within qemu, there are a
number of, so far, undetected places that assume size=0 can be safely passed.
Since we do not want to abort unnecessarily in production builds, return
qemu_malloc(1) whenever the version file indicates that this is a production
build.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix ARM userspace strex implementation.
Paul Brook [Fri, 11 Dec 2009 15:38:10 +0000 (15:38 +0000)]
Fix ARM userspace strex implementation.

Signed-off-by: Paul Brook <paul@codesourcery.com>
14 years agomicroblaze: Make boot_info static.
Edgar E. Iglesias [Thu, 10 Dec 2009 13:46:18 +0000 (14:46 +0100)]
microblaze: Make boot_info static.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agomicroblaze: Add missing cpu_reset.
Edgar E. Iglesias [Thu, 10 Dec 2009 13:43:13 +0000 (14:43 +0100)]
microblaze: Add missing cpu_reset.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agomicroblaze: Boot and reset fixes.
Edgar E. Iglesias [Thu, 10 Dec 2009 13:40:35 +0000 (14:40 +0100)]
microblaze: Boot and reset fixes.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agomicroblaze: Update disasm to latest GPLv2 version.
Edgar E. Iglesias [Thu, 10 Dec 2009 11:33:49 +0000 (12:33 +0100)]
microblaze: Update disasm to latest GPLv2 version.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
14 years agoqemu: delete rule target on error
Michael S. Tsirkin [Mon, 7 Dec 2009 19:04:52 +0000 (21:04 +0200)]
qemu: delete rule target on error

Instruct make to remove any rule target on error. This prevetns
situation where there was an error during build but generated file still
stays behind.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQMP: add human-readable description to error response
Markus Armbruster [Mon, 7 Dec 2009 20:37:16 +0000 (21:37 +0100)]
QMP: add human-readable description to error response

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: convert do_getfd() to QError
Markus Armbruster [Mon, 7 Dec 2009 20:37:15 +0000 (21:37 +0100)]
monitor: convert do_getfd() to QError

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_TOO_MANY_FILES
Markus Armbruster [Mon, 7 Dec 2009 20:37:14 +0000 (21:37 +0100)]
QError: New QERR_TOO_MANY_FILES

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoNew QERR_INVALID_PARAMETER
Markus Armbruster [Mon, 7 Dec 2009 20:37:13 +0000 (21:37 +0100)]
New QERR_INVALID_PARAMETER

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_FD_NOT_SUPPLIED
Markus Armbruster [Mon, 7 Dec 2009 20:37:12 +0000 (21:37 +0100)]
QError: New QERR_FD_NOT_SUPPLIED

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: convert do_closefd() to QError
Markus Armbruster [Mon, 7 Dec 2009 20:37:11 +0000 (21:37 +0100)]
monitor: convert do_closefd() to QError

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_FD_NOT_FOUND
Markus Armbruster [Mon, 7 Dec 2009 20:37:10 +0000 (21:37 +0100)]
QError: New QERR_FD_NOT_FOUND

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: convert do_change() to QObject, QError
Markus Armbruster [Mon, 7 Dec 2009 20:37:09 +0000 (21:37 +0100)]
monitor: convert do_change() to QObject, QError

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_VNC_SERVER_FAILED
Markus Armbruster [Mon, 7 Dec 2009 20:37:08 +0000 (21:37 +0100)]
QError: New QERR_VNC_SERVER_FAILED

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_SET_PASSWD_FAILED
Markus Armbruster [Mon, 7 Dec 2009 20:37:07 +0000 (21:37 +0100)]
QError: New QERR_SET_PASSWD_FAILED

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_INVALID_BLOCK_FORMAT
Markus Armbruster [Mon, 7 Dec 2009 20:37:06 +0000 (21:37 +0100)]
QError: New QERR_INVALID_BLOCK_FORMAT

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: convert do_eject() to QError
Markus Armbruster [Mon, 7 Dec 2009 20:37:05 +0000 (21:37 +0100)]
monitor: convert do_eject() to QError

Also affects do_change(), because the two share eject_device().

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_DEVICE_NOT_REMOVABLE
Markus Armbruster [Mon, 7 Dec 2009 20:37:04 +0000 (21:37 +0100)]
QError: New QERR_DEVICE_NOT_REMOVABLE

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: New QERR_DEVICE_LOCKED
Markus Armbruster [Mon, 7 Dec 2009 20:37:03 +0000 (21:37 +0100)]
QError: New QERR_DEVICE_LOCKED

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: Put error definitions in alphabetical order
Markus Armbruster [Mon, 7 Dec 2009 20:37:02 +0000 (21:37 +0100)]
QError: Put error definitions in alphabetical order

Also fix the odd typoe and clean up whitespace.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: Fix double-prompt after "change vnc passwd BLA"
Markus Armbruster [Mon, 7 Dec 2009 20:37:01 +0000 (21:37 +0100)]
monitor: Fix double-prompt after "change vnc passwd BLA"

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomonitor: do_cont(): Don't ask for passwords
Luiz Capitulino [Mon, 7 Dec 2009 20:37:00 +0000 (21:37 +0100)]
monitor: do_cont(): Don't ask for passwords

The do_cont() function will ask the user to enter a password if a
device is encrypted.

This is invalid under QMP, so we raise a QERR_DEVICE_ENCRYPTED
error.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: new class for device encrypted errors
Luiz Capitulino [Mon, 7 Dec 2009 20:36:59 +0000 (21:36 +0100)]
QError: new class for device encrypted errors

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoMerge commit 'mst/pci' into staging
Anthony Liguori [Mon, 7 Dec 2009 20:31:38 +0000 (14:31 -0600)]
Merge commit 'mst/pci' into staging

14 years agomonitor: Introduce 'block_passwd' command
Luiz Capitulino [Fri, 4 Dec 2009 17:24:09 +0000 (15:24 -0200)]
monitor: Introduce 'block_passwd' command

When using encrypted disk images, QEMU will prompt the user
for passwords when started.

This makes sense for the user protocol, but doesn't for QMP.

The solution is to have Monitor command which allows the user
or a Client to set passwords in advance, so that we avoid
the prompt completely.

This is what block_passwd does, for example:

(QEMU) block_passwd ide0-hd0 foobar

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoQError: Add class for invalid passwords
Luiz Capitulino [Fri, 4 Dec 2009 17:24:08 +0000 (15:24 -0200)]
QError: Add class for invalid passwords

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agopci: interrupt disable bit support
Michael S. Tsirkin [Wed, 25 Nov 2009 14:31:42 +0000 (16:31 +0200)]
pci: interrupt disable bit support

Interrupt disable bit is mandatory in PCI spec.
Implement it to make devices spec compliant.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Isaku Yamahata <yamahata@valinux.co.jp>
14 years agopci: interrupt status bit implementation
Michael S. Tsirkin [Wed, 25 Nov 2009 13:44:40 +0000 (15:44 +0200)]
pci: interrupt status bit implementation

interrupt status is a mandatory feature in PCI spec,
so devices must implement it to be spec compliant.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Isaku Yamahata <yamahata@valinux.co.jp>
14 years agopci: prepare irq code for interrupt state
Michael S. Tsirkin [Wed, 25 Nov 2009 13:20:51 +0000 (15:20 +0200)]
pci: prepare irq code for interrupt state

This rearranges code in preparation for interrupt state
implementation.
Changes:
- split up bus walk away from interrupt handling
          into a subroutine
- change irq_state from an array to bitmask
- verify that irq_state values are 0 or 1 on load

There are no functional changes.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Isaku Yamahata <yamahata@valinux.co.jp>
14 years agomsix: function mask support
Michael S. Tsirkin [Wed, 25 Nov 2009 10:19:32 +0000 (12:19 +0200)]
msix: function mask support

Function mask is a mandatory feature in MSIX
spec so not implementing it is a spec violation.
Implement.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agomsix: macro rename for function mask support
Michael S. Tsirkin [Wed, 25 Nov 2009 10:18:00 +0000 (12:18 +0200)]
msix: macro rename for function mask support

rename ENABLE_OFFSET -> CONTROL_OFFSET, since
same byte includes function mask.
This is in preparation for function mask support.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
14 years agocpuid: Fix multicore setup on Intel
Andre Przywara [Mon, 7 Dec 2009 10:58:02 +0000 (11:58 +0100)]
cpuid: Fix multicore setup on Intel

The multicore CPUID code detects whether the guest is an Intel or an
AMD CPU, because the Linux kernel is picky about the CmpLegacy bit.
KVM by default passes through the host's vendor, which was not
catched by the code. So fork out the vendor determining bits into a
separate function to be used from both places and always get the real
vendor.
This fixes KVM's multicore setup on Intel CPUs.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
Reported-by: Dietmar Maurer <dietmar@proxmox.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agokvm: x86: Fix initial kvm_has_msr_star
Jan Kiszka [Sun, 6 Dec 2009 14:51:24 +0000 (15:51 +0100)]
kvm: x86: Fix initial kvm_has_msr_star

KVM_GET_MSR_INDEX_LIST returns -E2BIG when the provided space is too
small for all MSRs. But this is precisely the error we trigger with the
initial request in order to obtain that size. Do not fail in that case.

This caused a subtle corruption of the guest state as MSR_STAR was not
properly saved/restored. The corruption became visible with latest kvm
optimizing the MSR updates.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoTCG: Mac OS X support for ppc64 target
Andreas Faerber [Sun, 6 Dec 2009 13:00:24 +0000 (14:00 +0100)]
TCG: Mac OS X support for ppc64 target

Darwin/ppc64 does not use function descriptors,
adapt prologue and tcg_out_call accordingly.
GPR2 is available for general use, so let's use it.

http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/LowLevelABI/110-64-bit_PowerPC_Function_Calling_Conventions/64bitPowerPC.html

v2:
- Don't mark reserved GPR13 as callee-save.
- Move tcg_out_b up.
- Fix unused variable warning in prologue.

Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
Cc: malc <av1474@comtv.ru>
Signed-off-by: malc <av1474@comtv.ru>