qemu.git
11 years agoahci: add ahci emulation
Alexander Graf [Tue, 14 Dec 2010 00:34:40 +0000 (01:34 +0100)] 
ahci: add ahci emulation

This patch adds an emulation layer for an ICH-9 AHCI controller. For now
this controller does not do IDE legacy emulation. It is a pure AHCI controller.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agopci: add ich9 pci id
Alexander Graf [Tue, 14 Dec 2010 00:34:39 +0000 (01:34 +0100)] 
pci: add ich9 pci id

We need a PCI ID for our new AHCI adapter. I just picked an ICH-9
because that's the one in the Q35 chipset.

This patch adds a PCI ID define for an ICH-9 AHCI adapter.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agopci: add storage class for sata
Alexander Graf [Tue, 14 Dec 2010 00:34:38 +0000 (01:34 +0100)] 
pci: add storage class for sata

This patch adds the storage sata class id.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoide: add ncq identify data for ahci sata drives
Roland Elek [Tue, 14 Dec 2010 00:34:37 +0000 (01:34 +0100)] 
ide: add ncq identify data for ahci sata drives

I modified ide_identify() to include the zero-based queue length
value in word 75, and set bit 8 in word 76 to signal NCQ support
in the identify data for AHCI SATA drives.

Signed-off-by: Roland Elek <elek.roland@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoide: move transfer_start after variable modification
Alexander Graf [Tue, 14 Dec 2010 23:23:01 +0000 (00:23 +0100)] 
ide: move transfer_start after variable modification

We hook into transfer_start and immediately call the end function
for ahci. This means that everything needs to be in place for the
end function when we start the transfer, so let's move the function
down to where all state is in place.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoide: Split out BMDMA code from ATA core
Alexander Graf [Tue, 14 Dec 2010 23:23:00 +0000 (00:23 +0100)] 
ide: Split out BMDMA code from ATA core

The ATA core is currently heavily intertwined with BMDMA code. Let's loosen
that a bit, so we can happily replace the DMA backend with different
implementations.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoide: fix whitespace gap in ide_exec_cmd
Alexander Graf [Tue, 14 Dec 2010 00:34:34 +0000 (01:34 +0100)] 
ide: fix whitespace gap in ide_exec_cmd

Now that we have the function split out, we have to reindent it.
In order to increase the readability of the actual functional change,
this is split out.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoide: split ide command interpretation off
Alexander Graf [Tue, 14 Dec 2010 00:34:33 +0000 (01:34 +0100)] 
ide: split ide command interpretation off

The ATA command interpretation code can be used for PATA and SATA
interfaces alike. So let's split it out into a separate function.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoqemu-img.c: Clean up handling of image size in img_create()
Jes Sorensen [Thu, 9 Dec 2010 13:17:25 +0000 (14:17 +0100)] 
qemu-img.c: Clean up handling of image size in img_create()

This cleans up the handling of image size in img_create() by parsing
the value early, and then only setting it once if a value has been
added as the last argument to the command line.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoIntroduce strtosz_suffix()
Jes Sorensen [Thu, 9 Dec 2010 13:17:24 +0000 (14:17 +0100)] 
Introduce strtosz_suffix()

This introduces strtosz_suffix() which allows the caller to specify a
default suffix in case the non default of MB is wanted.

strtosz() is kept as a wrapper for strtosz_suffix() which keeps it's
current default of MB.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoblock: Fix the use of protocols in backing files
Stefan Hajnoczi [Thu, 2 Dec 2010 16:54:13 +0000 (16:54 +0000)] 
block: Fix the use of protocols in backing files

Backing filenames may contain a protocol.  The code currently doesn't
consider this case and produces filenames that embed "<protocol>:".
Don't combine filenames if the backing filename contains a protocol.

Based on an earlier patch by Anthony Liguori <aliguori@us.ibm.com>.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoblock: Introduce path_has_protocol() function
Stefan Hajnoczi [Thu, 9 Dec 2010 11:53:00 +0000 (11:53 +0000)] 
block: Introduce path_has_protocol() function

The bdrv_find_protocol() function returns NULL if an unknown protocol
name is given.  It returns the "file" protocol when the filename
contains no protocol at all.  This makes it difficult to distinguish
between paths which contain a protocol and those which do not.

Factor out a helper function that tests whether or not a filename has a
protocol.  The next patch makes use of this function.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoblockdev: check dinfo ptr before using
Ryan Harper [Wed, 8 Dec 2010 16:05:00 +0000 (10:05 -0600)] 
blockdev: check dinfo ptr before using

If a user decides to punish a guest by revoking its block device via
drive_del, and subsequently also attempts to remove the pci device
backing it, and the device is using blockdev_auto_del() then we get a
segfault when we attempt to access dinfo->auto_del.[1]

The fix is to check if drive_get_by_blockdev() actually returns a valid
dinfo pointer or not.

1. (qemu) pci_add auto storage file=images/test01.raw,if=virtio,id=block1,snapshot=on
   (qemu) drive_del block1
   (qemu) pci_del 5
   *segfault*

Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
Tested-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoMerge remote branch 'arm/for-anthony' into staging
Anthony Liguori [Fri, 17 Dec 2010 14:25:17 +0000 (08:25 -0600)] 
Merge remote branch 'arm/for-anthony' into staging

11 years agoMerge remote branch 'kwolf/for-anthony' into staging
Anthony Liguori [Fri, 17 Dec 2010 14:23:53 +0000 (08:23 -0600)] 
Merge remote branch 'kwolf/for-anthony' into staging

11 years agoMerge remote branch 'qmp/for-anthony' into staging
Anthony Liguori [Fri, 17 Dec 2010 14:23:05 +0000 (08:23 -0600)] 
Merge remote branch 'qmp/for-anthony' into staging

11 years agoMerge remote branch 'jvrao/for-anthony' into staging
Anthony Liguori [Fri, 17 Dec 2010 14:22:31 +0000 (08:22 -0600)] 
Merge remote branch 'jvrao/for-anthony' into staging

11 years agoMerge remote branch 'mst/for_anthony' into staging
Anthony Liguori [Fri, 17 Dec 2010 14:21:29 +0000 (08:21 -0600)] 
Merge remote branch 'mst/for_anthony' into staging

11 years agoqemu-img: Fail creation if backing format is invalid
Stefan Hajnoczi [Tue, 7 Dec 2010 09:35:56 +0000 (09:35 +0000)] 
qemu-img: Fail creation if backing format is invalid

The qemu-img create command should check the backing format to ensure
only image files with valid backing formats are created.  By checking in
qemu-img.c we can print a useful error message.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoqemu-img: Free option parameter lists in img_create()
Stefan Hajnoczi [Tue, 7 Dec 2010 09:35:55 +0000 (09:35 +0000)] 
qemu-img: Free option parameter lists in img_create()

Free option parameter lists in the img_create() error return path.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoqemu-option: Fix parse_option_parameters() documentation typo
Stefan Hajnoczi [Tue, 7 Dec 2010 09:35:54 +0000 (09:35 +0000)] 
qemu-option: Fix parse_option_parameters() documentation typo

Yoda said, "list is the templace is".  Fix this.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoqemu-option: Don't reinvent append_option_parameters()
Stefan Hajnoczi [Tue, 7 Dec 2010 09:35:53 +0000 (09:35 +0000)] 
qemu-option: Don't reinvent append_option_parameters()

parse_option_parameters() may need to create a new option parameter list
from a template list.  Use append_option_parameters() instead of
duplicating the code.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoqemu-img: Deprecate obsolete -6 and -e options
Jes Sorensen [Tue, 7 Dec 2010 16:44:34 +0000 (17:44 +0100)] 
qemu-img: Deprecate obsolete -6 and -e options

If -6 or -e is specified, an error message is printed and we exit. It
does not print help() to avoid the error message getting lost in the
noise.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoceph/rbd block driver for qemu-kvm
Christian Brunner [Mon, 6 Dec 2010 19:53:01 +0000 (20:53 +0100)] 
ceph/rbd block driver for qemu-kvm

RBD is an block driver for the distributed file system Ceph
(http://ceph.newdream.net/). This driver uses librados (which is part
of the Ceph server) for direct access to the Ceph object store and is
running entirely in userspace (Yehuda also wrote a driver for the
linux kernel, that can be used to access rbd volumes as a block
device).

Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Christian Brunner <chb@muc.de>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoMake error handling more consistent in img_create() and img_resize()
Jes Sorensen [Mon, 6 Dec 2010 16:08:31 +0000 (17:08 +0100)] 
Make error handling more consistent in img_create() and img_resize()

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoFail if detecting an unknown option
Jes Sorensen [Mon, 6 Dec 2010 14:25:40 +0000 (15:25 +0100)] 
Fail if detecting an unknown option

This patch changes qemu-img to exit if an unknown option is detected,
instead of trying to continue with a set of arguments which may be
incorrect.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoFix formatting and missing braces in qemu-img.c
Jes Sorensen [Mon, 6 Dec 2010 14:25:39 +0000 (15:25 +0100)] 
Fix formatting and missing braces in qemu-img.c

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoConsolidate printing of block driver options
Jes Sorensen [Mon, 6 Dec 2010 14:25:38 +0000 (15:25 +0100)] 
Consolidate printing of block driver options

This consolidates the printing of block driver options in
print_block_option_help() which is called from both img_create() and
img_convert().

This allows for the "?" detection to be done just after the parsing of
options and the filename, instead of half way down the codepath of
these functions.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoimg_convert(): Only try to free bs[] entries if bs is valid.
Jes Sorensen [Mon, 6 Dec 2010 14:25:36 +0000 (15:25 +0100)] 
img_convert(): Only try to free bs[] entries if bs is valid.

This allows for jumping to 'out:' consistently for error exit.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoUse qemu_mallocz() instead of calloc() in img_convert()
Jes Sorensen [Mon, 6 Dec 2010 14:25:35 +0000 (15:25 +0100)] 
Use qemu_mallocz() instead of calloc() in img_convert()

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoAdd missing tracing to qemu_mallocz()
Jes Sorensen [Mon, 6 Dec 2010 14:25:34 +0000 (15:25 +0100)] 
Add missing tracing to qemu_mallocz()

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoblock: Make bdrv_create_file() ':' handling consistent
Stefan Hajnoczi [Tue, 30 Nov 2010 15:14:14 +0000 (15:14 +0000)] 
block: Make bdrv_create_file() ':' handling consistent

Filenames may start with "<protocol>:" to explicitly use a protocol like
nbd.  Filenames with unknown protocols are rejected in most of QEMU
except for bdrv_create_file().  Even if a file with an invalid filename
can be created, QEMU cannot use it since all the other relevant
functions reject such paths.  Make bdrv_create_file() consistent.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
11 years agoWatchdog: disable watchdog timer when hard-rebooting a guest.
Richard W.M. Jones [Fri, 24 Sep 2010 15:08:06 +0000 (16:08 +0100)] 
Watchdog: disable watchdog timer when hard-rebooting a guest.

This commit causes the watchdog timer to be reset when a guest is
hard-rebooted.

The failure case previously was as follows:

  (a) guest boots, watchdog is enabled

  (b) guest does a reset eg:
        echo 'b' > /proc/sysrq-trigger
    (note that an ordinary /sbin/reboot wouldn't hit this case
    since as the watchdog daemon is shut down, the daemon would
    properly disable the watchdog device)

  (c) the reboot takes longer than the remaining time on the
    watchdog

  (d) the watchdog therefore fires during the reboot

  (e) probably the VM would just reboot again at this point which
    is pretty benign, but it could depend on the action that the
    user had selected for the watchdog

Now we use the qdev reset function to register a reset handler
which disables the timer.  Note the handler is called _either_
just after init _or_ when the guest reboots.

In the i6300esb case there is a small refactoring of the code so
that the device's internal state is now fully restored to defaults
on a reboot.

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoPass boot device list to firmware.
Gleb Natapov [Wed, 8 Dec 2010 11:35:09 +0000 (13:35 +0200)] 
Pass boot device list to firmware.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd notifier that will be called when machine is fully created.
Gleb Natapov [Wed, 8 Dec 2010 11:35:08 +0000 (13:35 +0200)] 
Add notifier that will be called when machine is fully created.

Action that depends on fully initialized device model should register
with this notifier chain.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd bootindex for option roms.
Gleb Natapov [Wed, 8 Dec 2010 11:35:07 +0000 (13:35 +0200)] 
Add bootindex for option roms.

Extend -option-rom command to have additional parameter ,bootindex=.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoChange fw_cfg_add_file() to get full file path as a parameter.
Gleb Natapov [Wed, 8 Dec 2010 11:35:06 +0000 (13:35 +0200)] 
Change fw_cfg_add_file() to get full file path as a parameter.

Change fw_cfg_add_file() to get full file path as a parameter instead
of building one internally. Two reasons for that. First caller may need
to know how file is named. Second this moves policy of file naming out
from fw_cfg. Platform may want to use more then two levels of
directories for instance.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd bootindex parameter to net/block/fd device
Gleb Natapov [Wed, 8 Dec 2010 11:35:05 +0000 (13:35 +0200)] 
Add bootindex parameter to net/block/fd device

If bootindex is specified on command line a string that describes device
in firmware readable way is added into sorted list. Later this list will
be passed into firmware to control boot order.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback to scsi bus.
Gleb Natapov [Wed, 8 Dec 2010 11:35:04 +0000 (13:35 +0200)] 
Add get_fw_dev_path callback to scsi bus.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback for usb bus.
Gleb Natapov [Wed, 8 Dec 2010 11:35:03 +0000 (13:35 +0200)] 
Add get_fw_dev_path callback for usb bus.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoRecord which USBDevice USBPort belongs too.
Gleb Natapov [Wed, 8 Dec 2010 11:35:02 +0000 (13:35 +0200)] 
Record which USBDevice USBPort belongs too.

Ports on root hub will have NULL here. This is needed to reconstruct
path from device to its root hub to build device path.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback for pci bus.
Gleb Natapov [Wed, 8 Dec 2010 11:35:01 +0000 (13:35 +0200)] 
Add get_fw_dev_path callback for pci bus.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback for system bus.
Gleb Natapov [Wed, 8 Dec 2010 11:35:00 +0000 (13:35 +0200)] 
Add get_fw_dev_path callback for system bus.

Prints out mmio or pio used to access child device.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback to IDE bus.
Gleb Natapov [Wed, 8 Dec 2010 11:34:59 +0000 (13:34 +0200)] 
Add get_fw_dev_path callback to IDE bus.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoStore IDE bus id in IDEBus structure for easy access.
Gleb Natapov [Wed, 8 Dec 2010 11:34:58 +0000 (13:34 +0200)] 
Store IDE bus id in IDEBus structure for easy access.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd get_fw_dev_path callback to ISA bus in qdev.
Gleb Natapov [Wed, 8 Dec 2010 11:34:57 +0000 (13:34 +0200)] 
Add get_fw_dev_path callback to ISA bus in qdev.

Use device ioports to create unique device path.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoKeep track of ISA ports ISA device is using in qdev.
Gleb Natapov [Wed, 8 Dec 2010 11:34:56 +0000 (13:34 +0200)] 
Keep track of ISA ports ISA device is using in qdev.

Store all io ports used by device in ISADevice structure.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoIntroduce new BusInfo callback get_fw_dev_path.
Gleb Natapov [Wed, 8 Dec 2010 11:34:55 +0000 (13:34 +0200)] 
Introduce new BusInfo callback get_fw_dev_path.

New get_fw_dev_path callback will be used for build device path usable
by firmware in contrast to qdev qemu internal device path.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoIntroduce fw_name field to DeviceInfo structure.
Gleb Natapov [Wed, 8 Dec 2010 11:34:54 +0000 (13:34 +0200)] 
Introduce fw_name field to DeviceInfo structure.

Add "fw_name" to DeviceInfo to use in device path building. In
contrast to "name" "fw_name" should refer to functionality device
provides instead of particular device model like "name" does.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agomonitor: implement x86 info mem for PAE and long modes
Blue Swirl [Sat, 11 Dec 2010 18:56:27 +0000 (18:56 +0000)] 
monitor: implement x86 info mem for PAE and long modes

'info mem' didn't show correct information for PAE mode and
x86_64 long mode.

Fix by implementing the output for missing modes.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agomonitor: implement x86 info tlb for PAE and long modes
Blue Swirl [Sat, 11 Dec 2010 18:56:24 +0000 (18:56 +0000)] 
monitor: implement x86 info tlb for PAE and long modes

'info tlb' didn't show correct information for PAE mode and
x86_64 long mode.

Implement the missing modes. Also print NX bit for PAE and long modes.
Fix off-by-one error in 32 bit mode mask.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agowdt_i6300esb: register a reset function
Bernhard Kohl [Wed, 8 Dec 2010 14:59:55 +0000 (15:59 +0100)] 
wdt_i6300esb: register a reset function

The device shall set its default hardware state after each reset.
This includes that the timer is stopped which is especially important
if the guest does a reboot independantly of a watchdog bite. I moved
the initialization of the state variables completely from the init
to the reset function which is called right after init during the
first boot and afterwards during each reboot.

Signed-off-by: Bernhard Kohl <bernhard.kohl@nsn.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoisa-bus.c: use hw_error instead of fprintf
Tristan Gingold [Fri, 3 Dec 2010 11:05:03 +0000 (12:05 +0100)] 
isa-bus.c: use hw_error instead of fprintf

Minor clean-up in isa-bus.c.  Using hw_error is more consistent.
There is a difference however: hw_error dumps the cpu state.

Signed-off-by: Tristan Gingold <gingold@adacore.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agousb_ohci: Always use little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:50 +0000 (12:05 +0100)] 
usb_ohci: Always use little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Because we don't depend on the target endianness anymore, we can also
move the driver over to Makefile.objs.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoisa_mmio: Always use little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:49 +0000 (12:05 +0100)] 
isa_mmio: Always use little endian

This patch converts the ISA MMIO bridge code to always use little endian mmio.
All bswap code that existed was only there to convert from native cpu
endianness to little endian ISA devices.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoheathrow_pic: Declare as little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:48 +0000 (12:05 +0100)] 
heathrow_pic: Declare as little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agortl8139: Declare as little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:47 +0000 (12:05 +0100)] 
rtl8139: Declare as little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Because we don't depend on the target endianness anymore, we can also
move the driver over to Makefile.objs.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoopenpic: Replace explicit byte swap with endian hints
Alexander Graf [Wed, 8 Dec 2010 11:05:46 +0000 (12:05 +0100)] 
openpic: Replace explicit byte swap with endian hints

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoppc4xx_pci: Declare as little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:45 +0000 (12:05 +0100)] 
ppc4xx_pci: Declare as little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoversatile_pci: Declare as little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:44 +0000 (12:05 +0100)] 
versatile_pci: Declare as little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoprep: Declare as little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:43 +0000 (12:05 +0100)] 
prep: Declare as little endian

This patch replaces explicit bswaps with endianness hints to the
mmio layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoe1000: Make little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:42 +0000 (12:05 +0100)] 
e1000: Make little endian

The e1000 has compatibility code to handle big endianness which makes it
mandatory to be recompiled on different targets.

With the generic mmio endianness solution, there's no need for that anymore.
We just declare all mmio to be little endian and call it a day.

Because we don't depend on the target endianness anymore, we can also
move the driver over to Makefile.objs.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agouninorth: Get rid of bswap
Alexander Graf [Wed, 8 Dec 2010 11:05:41 +0000 (12:05 +0100)] 
uninorth: Get rid of bswap

There's no need to bswap once we correctly set the mmio to be little endian.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agopci-host: Delegate bswap to mmio layer
Alexander Graf [Wed, 8 Dec 2010 11:05:40 +0000 (12:05 +0100)] 
pci-host: Delegate bswap to mmio layer

The only reason we have bswap versions of the pci host code is that
most pci host devices are little endian. The ppc e500 is the only
odd one here, being big endian.

So let's directly pass the endianness down to the mmio layer and not
worry about it on the pci host layer.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agodbdma: Make little endian
Alexander Graf [Wed, 8 Dec 2010 11:05:39 +0000 (12:05 +0100)] 
dbdma: Make little endian

The device is only used on big endian systems, but always byte swaps. That's
a very good indicator that it's actually a little endian device ;-).

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoMake simple io mem handler endian aware
Alexander Graf [Wed, 8 Dec 2010 11:05:38 +0000 (12:05 +0100)] 
Make simple io mem handler endian aware

As an alternative to the 3 individual handlers, there is also a simplified
io mem hook function. To be consistent, let's add an endianness parameter
there too.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoAdd endianness as io mem parameter
Alexander Graf [Wed, 8 Dec 2010 11:05:37 +0000 (12:05 +0100)] 
Add endianness as io mem parameter

As stated before, devices can be little, big or native endian. The
target endianness is not of their concern, so we need to push things
down a level.

This patch adds a parameter to cpu_register_io_memory that allows a
device to choose its endianness. For now, all devices simply choose
native endian, because that's the same behavior as before.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agoexec: introduce endianness swapped mmio
Alexander Graf [Wed, 8 Dec 2010 11:05:36 +0000 (12:05 +0100)] 
exec: introduce endianness swapped mmio

The way we're currently modeling mmio is too simplified. We assume that
every device has the same endianness as the target CPU. In reality,
most devices are little endian (all PCI and ISA ones I'm aware of). Some
are big endian (special system devices) and a very little fraction is
target native endian (fw_cfg).

So instead of assuming every device to be native endianness, let's move
to a model where the device tells us which endianness it's in.

That way we can compile the devices only once and get rid of all the ugly
swap will be done by the underlying layer.

For the same of readability, this patch only introduces the helper framework
but doesn't allow the registering code to set its endianness yet.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
11 years agonoaudio: fix return value for read()
Michael Walle [Wed, 8 Dec 2010 23:34:51 +0000 (00:34 +0100)] 
noaudio: fix return value for read()

Read should return bytes instead of samples.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: malc <av1474@comtv.ru>
11 years agopci/aer: factor out common code
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:28 +0000 (17:46 +0900)] 
pci/aer: factor out common code

Same logic is used to assert interrupts
and send msix messages, so add a static functin for this.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
11 years agopci/aer: remove dead code
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:27 +0000 (17:46 +0900)] 
pci/aer: remove dead code

Remove some unused variables and return values.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
11 years agopci/aer: fix interrupt on config write
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:26 +0000 (17:46 +0900)] 
pci/aer: fix interrupt on config write

config write handling for aer seems broken:
For example, it won't clear a level interrupt
when command register is set to 0.

Make it match the spec: level should equal
the logical or of enabled bits, msi only
be sent when the logical or changes.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
11 years agopci/aer: fix error injection
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:25 +0000 (17:46 +0900)] 
pci/aer: fix error injection

Fix the injection logic upon aer message to follow 6.2.4.1.2 more
closely: specifically only send an msi interrupt when the logical or of
the enabled bits changed, not when a bit which was previously clear
becomes set.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
11 years agoMakefile: make msix/msi depend on CONFIG_PCI
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:24 +0000 (17:46 +0900)] 
Makefile: make msix/msi depend on CONFIG_PCI

Possible now that pci is not depending on these.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
11 years agopci: untangle pci/msi dependency
Michael S. Tsirkin [Wed, 8 Dec 2010 08:46:23 +0000 (17:46 +0900)] 
pci: untangle pci/msi dependency

msi depends on pci but pci should not depend on msi.
The only dependency we have is a recent addition
of pci_msi_ functions, IMO they add little enough to
open-code in the small number of users.

Follow-up patches add more cleanups.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
11 years agopci: make command SERR bit writable
Isaku Yamahata [Fri, 26 Nov 2010 12:01:41 +0000 (21:01 +0900)] 
pci: make command SERR bit writable

pcie aer needs SERR bit to be writable, and the PCI spec requires
this as well.  For compatibility, introduce compat global property
command_serr_enable and make this bit readonly for a pre 0.14 pc
machine.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
11 years agovirtio-net: stop/start bh when appropriate
Michael S. Tsirkin [Mon, 22 Nov 2010 17:52:30 +0000 (19:52 +0200)] 
virtio-net: stop/start bh when appropriate

Avoid sending out packets, and modifying
memory, when VM is stopped.
Add assert statements to verify this does not happen.

Avoid scheduling bh when vhost-net is started.

Stop bh when driver disabled bus mastering
(we must not access memory after this).

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Jason Wang <jasowang@redhat.com>
11 years agovirtio-net: don't dma while vm is stopped
Michael S. Tsirkin [Mon, 22 Nov 2010 17:52:19 +0000 (19:52 +0200)] 
virtio-net: don't dma while vm is stopped

DMA into memory while VM is stopped makes it
hard to debug migration (consequitive saves
result in different files).
Fixing this completely is a large effort,
this patch does this for virtio-net.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Jason Wang <jasowang@redhat.com>
11 years agomigration/savevm: no need to flush requests
Michael S. Tsirkin [Mon, 22 Nov 2010 17:52:26 +0000 (19:52 +0200)] 
migration/savevm: no need to flush requests

There's no need to flush requests after vmstop
as vmstop does it for us automatically now.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Jason Wang <jasowang@redhat.com>
11 years agocpus: flush all requests on each vm stop
Michael S. Tsirkin [Mon, 22 Nov 2010 17:52:22 +0000 (19:52 +0200)] 
cpus: flush all requests on each vm stop

Flush all requests once we have stopped all
cpus and devices.
Make sure disk is in consistent state.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Jason Wang <jasowang@redhat.com>
Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
11 years agonet/sock: option to specify local address
Mike Ryan [Wed, 1 Dec 2010 19:16:47 +0000 (11:16 -0800)] 
net/sock: option to specify local address

Add an option to specify the host IP to send multicast packets from,
when using a multicast socket for networking. The option takes an IP
address and sets the IP_MULTICAST_IF socket option, which causes the
packets to use that IP's interface as an egress.

This is useful if the host machine has several interfaces with several
virtual networks across disparate interfaces.

Signed-off-by: Mike Ryan <mikeryan@ISI.EDU>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
11 years agoppc: kvm: fix signedness warning
Alexander Graf [Thu, 25 Nov 2010 07:20:46 +0000 (08:20 +0100)] 
ppc: kvm: fix signedness warning

I get a warning on a signed comparison with an unsigned variable, so
let's make the variable signed and be happy.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
11 years agoARM: Implement VCVT to 16 bit integer using new softfloat routines
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Implement VCVT to 16 bit integer using new softfloat routines

Use the softfloat conversion routines for conversion to 16 bit
integers, because just casting to a 16 bit type truncates the
value rather than saturating it at 16-bit MAXINT/MININT.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agosoftfloat: Add float/double to 16 bit integer conversion functions
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
softfloat: Add float/double to 16 bit integer conversion functions

The ARM architecture needs float/double to 16 bit integer conversions.
(The 32 bit versions aren't sufficient because of the requirement
to saturate at 16 bit MAXINT/MININT and to get the exception bits right.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Ignore top 16 bits when doing VCVT from 16 bit fixed point
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Ignore top 16 bits when doing VCVT from 16 bit fixed point

VCVT of 16 bit fixed point to float should ignore the top 16 bits
of the source register. Cast to int16_t and friends rather than
int16 -- the former is guaranteed exactly 16 bits wide where the
latter is merely at least 16 bits wide (and so is usually 32 bits).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Return correct result for single<->double conversion of NaN
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Return correct result for single<->double conversion of NaN

The ARM ARM defines that if the input to a single<->double conversion
is a NaN then the output is always forced to be a quiet NaN by setting
the most significant bit of the fraction part.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agosoftfloat: Add float*_maybe_silence_nan() functions
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
softfloat: Add float*_maybe_silence_nan() functions

Add functions float*_maybe_silence_nan() which ensure that a
value is not a signaling NaN by turning it into a quiet NaN.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Return correct result for float-to-integer conversion of NaN
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Return correct result for float-to-integer conversion of NaN

The ARM architecture mandates that converting a NaN value to
integer gives zero (if Invalid Operation FP exceptions are
not being trapped). This isn't the behaviour of the SoftFloat
library, so NaNs must be special-cased.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agosoftfloat: Add float*_is_any_nan() functions
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
softfloat: Add float*_is_any_nan() functions

Add float*_is_any_nan() functions which return true if the argument
is a NaN of any kind (quiet or signalling).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Fix sense of to_integer bit in Neon VCVT float/int conversion
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Fix sense of to_integer bit in Neon VCVT float/int conversion

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Fix decoding of Neon forms of VCVT between float and fixed point
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Fix decoding of Neon forms of VCVT between float and fixed point

Fix errors in the decoding of the Neon forms of fixed-point VCVT:
 * fixed-point VCVT is op 14 and 15, not 15 and 16
 * the fbits immediate field was being misinterpreted
 * the sense of the to_fixed bit was inverted

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: Fix decoding of VFP forms of VCVT between float and int/fixed
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: Fix decoding of VFP forms of VCVT between float and int/fixed

Correct the decoding of source and destination registers
for the VFP forms of the VCVT instructions which convert
between floating point and integer or fixed-point.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agoARM: fix ldrexd/strexd
Peter Maydell [Tue, 7 Dec 2010 15:37:34 +0000 (15:37 +0000)] 
ARM: fix ldrexd/strexd

Correct ldrexd and strexd code to always read and write the
high word of the 64-bit value from addr+4.
Also make ldrexd and strexd agree that for a 64 bit value the
address in env->exclusive_addr is that of the low word.

This fixes the issues reported in
https://bugs.launchpad.net/qemu/+bug/670883

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agotarget-arm: Handle 'smc' as an undefined instruction
Adam Lackorzynski [Tue, 7 Dec 2010 12:01:44 +0000 (12:01 +0000)] 
target-arm: Handle 'smc' as an undefined instruction

Refine check on bkpt so that smc and undefined instruction encodings are
handled as an undefined instruction and trap.

Signed-off-by: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agotarget-arm: Fix mixup in decoding of saturating add and sub
Johan Bengtsson [Tue, 7 Dec 2010 12:01:44 +0000 (12:01 +0000)] 
target-arm: Fix mixup in decoding of saturating add and sub

The thumb2 decoder contained a mixup between the bit controlling
doubling and the bit controlling if the operation was an add or a sub.

Signed-off-by: Johan Bengtsson <teofrastius@gmail.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agotarget-arm: Add support for PKHxx in thumb2
Johan Bengtsson [Tue, 7 Dec 2010 12:01:44 +0000 (12:01 +0000)] 
target-arm: Add support for PKHxx in thumb2

The PKHxx instructions were not recognized by the thumb2 decoder. The
solution provided in this changeset is identical to the arm-mode
implementation.

Signed-off-by: Johan Bengtsson <teofrastius@gmail.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>
11 years agocorrect migrate_set_speed's args_type
Wen Congyang [Thu, 25 Nov 2010 01:06:05 +0000 (09:06 +0800)] 
correct migrate_set_speed's args_type

The args_type of migrate_set_speed in qmp-commands.hx is wrong.
When we set migrate speed by json, qemu will be core dumped.

This bug was caused by 07de3e60b05 and hence affects master only.

Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
11 years agoQMP: Simplify monitor_json_emitter()
Luiz Capitulino [Mon, 22 Nov 2010 19:10:37 +0000 (17:10 -0200)] 
QMP: Simplify monitor_json_emitter()

Use the ternary operator instead of an if (also fixes bad indentation).

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
11 years agoQMP: Drop dead code
Luiz Capitulino [Mon, 22 Nov 2010 18:35:09 +0000 (16:35 -0200)] 
QMP: Drop dead code

The first if/else clause in handler_audit() makes no sense for two
reasons:

  1. this function is now called only by QMP code, so testing if
     it's a QMP call makes no sense anymore

  2. the else clause first asserts that there's no error in the
     monitor object, then it tries to free it!

Just drop it.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
11 years agoQMP: Fix default response regression
Luiz Capitulino [Mon, 22 Nov 2010 18:22:47 +0000 (16:22 -0200)] 
QMP: Fix default response regression

Commit 030db6e89d dropped do_info() usage from QMP and introduced
qmp_call_query_cmd(). However, the new function doesn't emit QMP's
default OK response when the handler doesn't return data.

Fix that by also calling monitor_protocol_emitter() when
ret_data == NULL, so that the default response is emitted.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>