sdk/emulator/qemu.git
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>
14 years agoUpdate OpenBIOS images to r640
Blue Swirl [Sun, 6 Dec 2009 09:25:06 +0000 (09:25 +0000)]
Update OpenBIOS images to r640

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoAdd S390 maintainer information
Alexander Graf [Sat, 5 Dec 2009 11:44:31 +0000 (12:44 +0100)]
Add S390 maintainer information

This patch adds information about who handles what when it comes to S390.
I'll gladly support anything that's related to the device emulation model and
S390 KVM parts.

Since this patchset doesn't implement S390 CPU emulation, I left that part
with a question mark. As soon as Uli's patchset gets committed I'd recommend
setting him there.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoSet default console to virtio on S390x
Alexander Graf [Sat, 5 Dec 2009 11:44:30 +0000 (12:44 +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.

I'm not particularly proud of this patch. It would be a lot better to
have something in the machine description that tells us about the default
terminal.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoS390 GDB stub
Alexander Graf [Sat, 5 Dec 2009 11:44:29 +0000 (12:44 +0100)]
S390 GDB stub

In order to debug funny kernel breakages it's always good to have a working
gdb stub around.

While Uli's patches don't include one one, I needed one that's at least good
enough for 'bt' and some variable examinations during early bootup.

So here it is - the absolute basics to get the qemu gdb stub running with s390x
targets.

Sgined-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoAdd S390x virtio machine description
Alexander Graf [Sat, 5 Dec 2009 11:44:28 +0000 (12:44 +0100)]
Add S390x virtio machine description

In order to use the new S390x virtio bus we just introduced, we also
need a machine description that sets up the machine according to our
PV specification.

Let's add that machine description and be happy!

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoAdd S390x virtio machine bus
Alexander Graf [Sat, 5 Dec 2009 11:44:27 +0000 (12:44 +0100)]
Add S390x virtio machine bus

On S390x we don't want to go through the hassle of emulating real existing
hardware, because we don't need to for running Linux.

So let's instead implement a machine that is 100% based on VirtIO which we
fortunately implement already.

This patch implements the bus that is the groundwork for such an S390x
virtio machine.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoAdd support for S390x system emulation
Alexander Graf [Sat, 5 Dec 2009 11:44:26 +0000 (12:44 +0100)]
Add support for S390x system emulation

Let's enable the basics for system emulation so we can run virtual machines
with KVM!

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoAllocate physical memory in low virtual address space
Alexander Graf [Sat, 5 Dec 2009 11:44:25 +0000 (12:44 +0100)]
Allocate physical memory in low virtual address space

KVM on S390x requires the virtual address space of the guest's RAM to be
within the first 256GB.

The general direction I'd like to see KVM on S390 move is that this requirement
is losened, but for now that's what we're stuck with.

So let's just hack up qemu_ram_alloc until KVM behaves nicely :-).

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoAdd KVM support for S390x
Alexander Graf [Sat, 5 Dec 2009 11:44:24 +0000 (12:44 +0100)]
Add KVM support for S390x

S390x was one of the first platforms that received support for KVM back in the
day. Unfortunately until now there hasn't been a qemu implementation that would
enable users to actually run guests.

So let's include support for KVM S390x in qemu!

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoS/390 fake TCG implementation
Alexander Graf [Sat, 5 Dec 2009 11:44:23 +0000 (12:44 +0100)]
S/390 fake TCG implementation

Qemu won't let us run a KVM target without having host TCG support. Well, for
now we don't have any so let's implement a fake target that only stubs out
everything.

I tried to keep the patch as close to Uli's source as possible, so whenever
he feels like it he can easily diff his version against this one.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoS/390 host/target build system support
Alexander Graf [Sat, 5 Dec 2009 11:44:22 +0000 (12:44 +0100)]
S/390 host/target build system support

This patch makes configure aware of S390 hosts and guests. When not explicitly
defined using --target-list= no S390 targets will be built though.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoS/390 CPU fake emulation
Alexander Graf [Sat, 5 Dec 2009 11:44:21 +0000 (12:44 +0100)]
S/390 CPU fake emulation

Because Qemu currently requires a TCG target to exist and there are quite some
useful helpers here to lay the groundwork for out KVM target, let's create a
stub TCG emulation target for S390X CPUs.

This is required to make tcg happy. The emulation target itself won't work
though.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoSparc64: handle MMU global bit and nucleus context
Blue Swirl [Sat, 5 Dec 2009 11:14:55 +0000 (11:14 +0000)]
Sparc64: handle MMU global bit and nucleus context

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomonitor: fix use of plain integer as NULL pointer, spotted by Sparse
Blue Swirl [Fri, 4 Dec 2009 20:52:02 +0000 (20:52 +0000)]
monitor: fix use of plain integer as NULL pointer, spotted by Sparse

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoAdd "static" to please Sparse
Blue Swirl [Fri, 4 Dec 2009 20:44:44 +0000 (20:44 +0000)]
Add "static" to please Sparse

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoscsi: fix incorrect ?: use
Blue Swirl [Fri, 4 Dec 2009 18:08:59 +0000 (18:08 +0000)]
scsi: fix incorrect ?: use

Fixes OpenBSD build.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomonitor: use qemu_gettimeofday(), not gettimeofday()
Blue Swirl [Fri, 4 Dec 2009 18:06:39 +0000 (18:06 +0000)]
monitor: use qemu_gettimeofday(), not gettimeofday()

Fix mingw32 build.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agowin32: fix variable use before initialization
Blue Swirl [Fri, 4 Dec 2009 18:06:20 +0000 (18:06 +0000)]
win32: fix variable use before initialization

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agomonitor: rename EVENT_* to QEVENT_* to avoid conflict on mingw32
Blue Swirl [Fri, 4 Dec 2009 18:05:45 +0000 (18:05 +0000)]
monitor: rename EVENT_* to QEVENT_* to avoid conflict on mingw32

Partially fixes mingw32 build.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoSparc64: fix compilation with DEBUG_MMU
Blue Swirl [Fri, 4 Dec 2009 16:16:33 +0000 (16:16 +0000)]
Sparc64: fix compilation with DEBUG_MMU

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
14 years agoide: implement stub for audio control/volume read
Thadeu Lima de Souza Cascardo [Mon, 30 Nov 2009 19:37:03 +0000 (17:37 -0200)]
ide: implement stub for audio control/volume read

This implements the audio control or volume read support as needed by
some systems. A Conectiva Parolin system required this to detect an IDE
device as CD-ROM, through the CDVOLREAD ioctl.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoide: Use some already defined page macros instead of constants
Thadeu Lima de Souza Cascardo [Mon, 30 Nov 2009 19:36:54 +0000 (17:36 -0200)]
ide: Use some already defined page macros instead of constants

Some PAGE constants were used instead of the macros we already have
defined in internal.h.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoeepro100: Improve debug messages
Stefan Weil [Fri, 27 Nov 2009 11:06:02 +0000 (12:06 +0100)]
eepro100: Improve debug messages

* buf was too small for longer register names.
* Use consistent upper case for nouns in register names.
* Use better name for array with e100 register names.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoRemove rule for config-devices.h
Stefan Weil [Wed, 25 Nov 2009 20:59:38 +0000 (21:59 +0100)]
Remove rule for config-devices.h

Since commit a992fe3d0fc185112677286f7a02204d8245b61e
config-devices.h is no longer used.

So there is no need to keep the dependency rules
any longer.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoeepro100: Allocate a larger buffer for regname()
David Benjamin [Thu, 26 Nov 2009 02:20:10 +0000 (21:20 -0500)]
eepro100: Allocate a larger buffer for regname()

This should avoid truncating the register name when debugging.

Signed-off-by: David Benjamin <davidben@mit.edu>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomultiboot: Use signed type for negative error numbers
Kevin Wolf [Wed, 18 Nov 2009 11:15:21 +0000 (12:15 +0100)]
multiboot: Use signed type for negative error numbers

In mb_mod_length a return value is stored that is negative in error case. With
an unsigned type the check goes wrong.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoposix-aio-compat: Fix error check
Kevin Wolf [Wed, 18 Nov 2009 11:15:10 +0000 (12:15 +0100)]
posix-aio-compat: Fix error check

Checking for nbytes < 0 is pointless as long as it's a size_t. If we want to
use negative numbers for error codes, we should use signed types.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqemu-img: Fix memory leak
Kevin Wolf [Wed, 18 Nov 2009 09:48:01 +0000 (10:48 +0100)]
qemu-img: Fix memory leak

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix compile error when LSI_DEBUG is defined
Ryan Harper [Fri, 20 Nov 2009 19:55:12 +0000 (13:55 -0600)]
Fix compile error when LSI_DEBUG is defined

This patch fixes the follow error when LSI_DEBUG is set.

  CC    libhw64/lsi53c895a.o
cc1: warnings being treated as errors
qemu/hw/lsi53c895a.c: In function 'lsi_io_mapfunc':
qemu/hw/lsi53c895a.c:1932: error: format '%08x' expects type 'unsigned int', but argument 2 has type 'pcibus_t'
qemu/hw/lsi53c895a.c: In function 'lsi_ram_mapfunc':
/qemu/hw/lsi53c895a.c:1947: error: format '%08x' expects type 'unsigned int', but argument 2 has type 'pcibus_t'
qemu/hw/lsi53c895a.c: In function 'lsi_mmio_mapfunc':
qemu/hw/lsi53c895a.c:1957: error: format '%08x' expects type 'unsigned int', but argument 2 has type 'pcibus_t'
make[1]: *** [lsi53c895a.o] Error 1
make: *** [subdir-libhw64] Error 2

Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix build for mingw32 on windows ($$ expansion)
Stefan Weil [Thu, 19 Nov 2009 19:19:56 +0000 (20:19 +0100)]
Fix build for mingw32 on windows ($$ expansion)

Make using mingw32 on windows fails when running grep "=y$$".
The command is expanded to grep "=y$ and the missing "
results in an error.

I don't expect a file config-devices.mak with =y somewhere in
the middle of a line (they are always at the end of the line),
so simplifying the regular expression to =y seems to be permitted.

This avoids problems with wrong expansion.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix build for mingw32 on windows ($@ in macro)
Stefan Weil [Thu, 19 Nov 2009 19:07:52 +0000 (20:07 +0100)]
Fix build for mingw32 on windows ($@ in macro)

Make using mingw32 on windows does not preserve $@ in macros
when they are modified using this pattern:
target: macro += something

This behaviour results in an error when QEMU_CFLAGS containing
"-MMD -MP -MT $@" is modified for compilation of source files
which use SDL: $@ will expand to nothing, -MT no longer has
the correct argument (it will take the next one from the command
line) and the build will fail or run with a wrong command line.

The problem is fixed by using a new macro QEMU_DGFLAGS
which is not modified by a target rule.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoe1000: Fix warning from code review
Stefan Weil [Thu, 19 Nov 2009 18:44:55 +0000 (19:44 +0100)]
e1000: Fix warning from code review

A code review run by Steve Grubb complained about code in e1000.c:

In hw/e1000.c at line 89, vlan is declared to be 4 bytes.
At line 382 is an attempt to do a memmove over it with a size of 12.

This was fixed by splitting the memmove in two calls and
adding a comment to the declaration of vlan and data.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agomultiboot: Fix module loading and setting of mmap.
Adam Lackorzynski [Mon, 30 Nov 2009 22:25:44 +0000 (23:25 +0100)]
multiboot: Fix module loading and setting of mmap.

Signed-off-by: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
Acked-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoMake -kernel for linux work with bochsbios
Alexander Graf [Tue, 17 Nov 2009 16:49:16 +0000 (17:49 +0100)]
Make -kernel for linux work with bochsbios

While trying to run -kernel with -bios pc-bios/pcbios.bin, I realized
that I was actually writing data to %es, but only set up %ds to a 32-bit
segment we want to write to.

So at the end of the day the data hasn't actually been copied. Oops.

So here's a fix to set ES instead of DS, which makes -kernel work with
BOCHS bios again (and actually makes the code do the correct thing)!

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix recently introduced bugs in -usbdevice host
Markus Armbruster [Fri, 27 Nov 2009 12:05:53 +0000 (13:05 +0100)]
Fix recently introduced bugs in -usbdevice host

Commit 26a9e82a has the following flaws:

* It enabled DEBUG.

* It referenced two properties by the wrong name in
  usb_host_device_open(), which crashes with "qdev_prop_set: property
  "USB Host Device.bus" not found".

* It broke "-usbdevice host:auto:..." by calling parse_filter()
  incorrectly.

* It broke parsing of "-usbdevice host:BUS.ADDR" and "-usbdevice
  host:VID:PRID" with a trivial pasto.

* It broke wildcards in "-usbdevice host:auto:...".  Before, the four
  filter components were stored as int, and the wildcard was encoded
  as -1.  The faulty commit changed storage to uint32_t, and the
  wildcard encoding to 0.  But it failed to update parse_filter()
  accordingly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoFix description of size parameter in qemu-img's help text
Pierre Riteau [Fri, 27 Nov 2009 13:14:56 +0000 (14:14 +0100)]
Fix description of size parameter in qemu-img's help text

Valid description taken from qemu-img.texi, although it would be better
to have this information recorded in only one place.

Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoSuppress optionrom build on Solaris x86
Andreas Faerber [Fri, 27 Nov 2009 21:18:52 +0000 (22:18 +0100)]
Suppress optionrom build on Solaris x86

To avoid the build failing with:

gcc -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-
builtin -I/export/home/andreas/QEMU/qemu   -Wall -Wstrict-prototypes -
Werror -fomit-frame-pointer -fno-builtin -I/export/home/andreas/QEMU/
qemu   -c -o multiboot.o multiboot.S
/var/tmp//ccd3aWyk.s: Assembler messages:
/var/tmp//ccd3aWyk.s:15: Error: value of 512 too large for field of 1
bytes at 0000000000000002
gmake[1]: *** [multiboot.o] Error 1

disable recursion into pc-bios/optionrom, as done for Darwin already.

Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoRename DriveInfo.onerror to on_write_error
Kevin Wolf [Fri, 27 Nov 2009 12:25:36 +0000 (13:25 +0100)]
Rename DriveInfo.onerror to on_write_error

Either rename variables and functions to refer to write errors (which is what
they actually do) or introduce a parameter to distinguish reads and writes.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoSCSI: Fix Standard INQUIRY data
Laszlo Ast [Thu, 19 Nov 2009 10:07:12 +0000 (11:07 +0100)]
SCSI: Fix Standard INQUIRY data

Vendor identification, product identification and product revision level
should be padded with spaces without a terminating NULL character, see
SCSI-2 standard, 8.2.5.1 Standard INQUIRY data.

Signed-off-by: Laszlo Ast <laszlo.ast@siemens-enterprise.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agokvm: x86: Add support for VCPU event states
Jan Kiszka [Tue, 24 Nov 2009 23:33:03 +0000 (00:33 +0100)]
kvm: x86: Add support for VCPU event states

This patch extends the qemu-kvm state sync logic with support for
KVM_GET/SET_VCPU_EVENTS, giving access to yet missing exception,
interrupt and NMI states.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agokvm: x86: Fix merge artifact of f8d926e9 about mp_state
Jan Kiszka [Tue, 24 Nov 2009 23:31:03 +0000 (00:31 +0100)]
kvm: x86: Fix merge artifact of f8d926e9 about mp_state

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agotarge-ppc: Sync CPU state for KVM
Alexander Graf [Wed, 2 Dec 2009 22:20:29 +0000 (23:20 +0100)]
targe-ppc: Sync CPU state for KVM

Some recent change made PPC guests always start at address 0x0 because env
isn't synced to kvm_state on first bootup.

I'm not sure if this is the correct bugfix, but at least it makes PPC boot
again with KVM enabled.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agotarget-ppc: Get MMU state on register sync
Alexander Graf [Wed, 2 Dec 2009 22:19:47 +0000 (23:19 +0100)]
target-ppc: Get MMU state on register sync

While x86 only needs to sync cr0-4 to know all about its MMU state and enable
qemu to resolve virtual to physical addresses, we need to sync all of the
segment registers on PPC to know which mapping we're in.

So let's grab the segment register contents to be able to use the "x" monitor
command and also enable the gdbstub to resolve virtual addresses.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
14 years agoqemu: cleanup unused macros in cirrus
Michael S. Tsirkin [Mon, 30 Nov 2009 19:02:32 +0000 (21:02 +0200)]
qemu: cleanup unused macros in cirrus

Cirrus vga has a copy of many PCI macros,
and it doesn't even use them. Clean up.
We also don't need to override header type
as it is NORMAL by default.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqemu: make cirrus init value pci spec compliant
Michael S. Tsirkin [Mon, 30 Nov 2009 19:02:26 +0000 (21:02 +0200)]
qemu: make cirrus init value pci spec compliant

PCI memory should be disabled at reset, otherwise
we might claim transactions at address 0.
I/O should also be disabled, although for cirrus
it is harmless to enable it as we do not
have I/O bar.

Note: bios fix needed for this patch to work
was already applied:
previously bios incorrently assumed that it does not
need to enable i/o unless device has i/o bar.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoDon't leak file descriptors
Kevin Wolf [Wed, 2 Dec 2009 11:24:42 +0000 (12:24 +0100)]
Don't leak file descriptors

We're leaking file descriptors to child processes. Set FD_CLOEXEC on file
descriptors that don't need to be passed to children to stop this misbehaviour.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqemu-img: There is more than one host device driver
Kevin Wolf [Mon, 30 Nov 2009 15:54:15 +0000 (16:54 +0100)]
qemu-img: There is more than one host device driver

I haven't heard yet of anyone using qemu-img to copy an image to a real floppy,
but it's a valid use case.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqcow2: Fix some more qemu_malloc fallout
Kevin Wolf [Fri, 27 Nov 2009 16:35:55 +0000 (17:35 +0100)]
qcow2: Fix some more qemu_malloc fallout

Oh joy...

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqcow2: Store exact backing format length
Kevin Wolf [Thu, 26 Nov 2009 13:03:42 +0000 (14:03 +0100)]
qcow2: Store exact backing format length

Currently qcow2 unnecessarily rounds up the length of the backing format string
to the next multiple of 8. At the same time, the array in BlockDriverState can
only hold 15 characters, so in effect backing formats with 9 characters or more
don't work (e.g. host_device).

Save the real string length and things start to work for all valid image format
names.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agovirtio-blk: Implement rerror option
Kevin Wolf [Fri, 27 Nov 2009 12:25:39 +0000 (13:25 +0100)]
virtio-blk: Implement rerror option

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoide: Implement rerror option
Kevin Wolf [Fri, 27 Nov 2009 12:25:38 +0000 (13:25 +0100)]
ide: Implement rerror option

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoIntroduce rerror option for drives
Kevin Wolf [Fri, 27 Nov 2009 12:25:37 +0000 (13:25 +0100)]
Introduce rerror option for drives

rerror controls the action to be taken when an error occurs while accessing the
guest image file. It corresponds to werror which already controls the action
take for write errors.

This purely introduces parsing rerror command line option into the right
structures, real support for it in the device emulation is added in the
following patches.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoRename DriveInfo.onerror to on_write_error
Kevin Wolf [Fri, 27 Nov 2009 12:25:36 +0000 (13:25 +0100)]
Rename DriveInfo.onerror to on_write_error

Either rename variables and functions to refer to write errors (which is what
they actually do) or introduce a parameter to distinguish reads and writes.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoram migration: Properly reset statistics
Jan Kiszka [Wed, 2 Dec 2009 10:29:38 +0000 (11:29 +0100)]
ram migration: Properly reset statistics

As we may do more than one migration (cancellation, live backup), reset
bytes_transferred on stage 1.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoqemu-opts: Release id on deletion
Jan Kiszka [Tue, 1 Dec 2009 14:24:18 +0000 (15:24 +0100)]
qemu-opts: Release id on deletion

The opts id is always allocated via qemu_strdup, so it need not be
const, but it has to be released on opts deletion.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agolive migration: Serialize vmstate saving in stage 2
Jan Kiszka [Tue, 1 Dec 2009 14:19:55 +0000 (15:19 +0100)]
live migration: Serialize vmstate saving in stage 2

The effect of this patch with current block migration is that its stage
2, ie. the first full walk-through of the block devices will be
performed completely before RAM migration starts. This ensures that
continuously changing RAM pages are not re-synchronized all the time
while block migration is not completed.

Future versions of block migration which will respect the specified
downtime will generate a different pattern: After RAM migration has
started as well, block migration may also continue to inject dirty
blocks into the RAM stream once it detects that the number of pending
blocks would extend the downtime unacceptably.

Note that all this relies on the current registration order: block
before RAM migration.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Skip zero-sized disks
Jan Kiszka [Mon, 30 Nov 2009 19:34:55 +0000 (20:34 +0100)]
block migration: Skip zero-sized disks

No need to migrate emptiness (risking divide by zero later on).

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Increase dirty chunk size to 1M
Jan Kiszka [Mon, 30 Nov 2009 17:21:22 +0000 (18:21 +0100)]
block migration: Increase dirty chunk size to 1M

4K is too small for efficiently saving and restoring multi-GB block
devices.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Add support for restore progress reporting
Jan Kiszka [Tue, 1 Dec 2009 14:20:17 +0000 (15:20 +0100)]
block migration: Add support for restore progress reporting

Inject progress report in percentage into the block live stream. This
can be read out and displayed easily on restore.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Report progress also via info migration
Jan Kiszka [Mon, 30 Nov 2009 17:21:21 +0000 (18:21 +0100)]
block migration: Report progress also via info migration

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Fix outgoing progress output
Jan Kiszka [Mon, 30 Nov 2009 17:21:21 +0000 (18:21 +0100)]
block migration: Fix outgoing progress output

Report progress of an outgoing live migration to the monitor instead of
stdout.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agolive migration: Propagate output monitor to callback handler
Jan Kiszka [Mon, 30 Nov 2009 17:21:21 +0000 (18:21 +0100)]
live migration: Propagate output monitor to callback handler

In order to allow proper progress reporting to the monitor that
initiated the migration, forward the monitor reference through the
migration layer down to SaveLiveStateHandler.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agoblock migration: Report overall migration progress
Jan Kiszka [Mon, 30 Nov 2009 17:21:21 +0000 (18:21 +0100)]
block migration: Report overall migration progress

So far progress reporting only works for the first block device. Fix
this by keeping an overall sum of sectors to be migratated, calculating
the sum of all processed sectors, and finally basing the progress
display on those values.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
14 years agolive migration: Allow cleanup after cancellation or error
Jan Kiszka [Mon, 30 Nov 2009 17:21:21 +0000 (18:21 +0100)]
live migration: Allow cleanup after cancellation or error

Introduce qemu_savevm_state_cancel and inject a stage -1 to cancel a
live migration. This gives the involved subsystems a chance to clean up
dynamically allocated resources. Namely, the block migration layer can
now free its device descriptors and pending blocks.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>