]> Git Repo - qemu.git/log
qemu.git
14 years agovirtio-9p: Do not reset atime
M. Mohan Kumar [Wed, 9 Jun 2010 13:44:38 +0000 (19:14 +0530)]
virtio-9p: Do not reset atime

    Current code resets file's atime to 0 when there is a change in mtime.
    This results in resetting the atime to "1970-01-01 05:30:00". For
    example, truncate -s 0 filename results in changing the mtime to the
    truncate time, but resets the atime to "1970-01-01 05:30:00". utime
    system call does not have any provision to set only mtime or atime. So
    change v9fs_wstat_post_chmod function to use utimensat function to change
    the atime and mtime fields. If tv_nsec field is set to the special value
    "UTIME_OMIT", corresponding file time stamp is not updated.

Signed-off-by: M. Mohan Kumar <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years agovirtio-9p: getattr server implementation for 9P2000.L protocol.
Sripathi Kodi [Tue, 20 Jul 2010 06:14:41 +0000 (11:44 +0530)]
virtio-9p: getattr server implementation for 9P2000.L protocol.

           SYNOPSIS

              size[4] Tgetattr tag[2] fid[4] request_mask[8]

              size[4] Rgetattr tag[2] lstat[n]

           DESCRIPTION

              The getattr transaction inquires about the file identified by fid.
              request_mask is a bit mask that specifies which fields of the
              stat structure is the client interested in.

              The reply will contain a machine-independent directory entry,
              laid out as follows:

                 st_result_mask[8]
                    Bit mask that indicates which fields in the stat structure
                    have been populated by the server

                 qid.type[1]
                    the type of the file (directory, etc.), represented as a bit
                    vector corresponding to the high 8 bits of the file's mode
                    word.

                 qid.vers[4]
                    version number for given path

                 qid.path[8]
                    the file server's unique identification for the file

                 st_mode[4]
                    Permission and flags

                 st_uid[4]
                    User id of owner

                 st_gid[4]
                    Group ID of owner

                 st_nlink[8]
                    Number of hard links

                 st_rdev[8]
                    Device ID (if special file)

                 st_size[8]
                    Size, in bytes

                 st_blksize[8]
                    Block size for file system IO

                 st_blocks[8]
                    Number of file system blocks allocated

                 st_atime_sec[8]
                    Time of last access, seconds

                 st_atime_nsec[8]
                    Time of last access, nanoseconds

                 st_mtime_sec[8]
                    Time of last modification, seconds

                 st_mtime_nsec[8]
                    Time of last modification, nanoseconds

                 st_ctime_sec[8]
                    Time of last status change, seconds

                 st_ctime_nsec[8]
                    Time of last status change, nanoseconds

                 st_btime_sec[8]
                    Time of creation (birth) of file, seconds

                 st_btime_nsec[8]
                    Time of creation (birth) of file, nanoseconds

                 st_gen[8]
                    Inode generation

                 st_data_version[8]
                    Data version number

              request_mask and result_mask bit masks contain the following bits
                 #define P9_STATS_MODE          0x00000001ULL
                 #define P9_STATS_NLINK         0x00000002ULL
                 #define P9_STATS_UID           0x00000004ULL
                 #define P9_STATS_GID           0x00000008ULL
                 #define P9_STATS_RDEV          0x00000010ULL
                 #define P9_STATS_ATIME         0x00000020ULL
                 #define P9_STATS_MTIME         0x00000040ULL
                 #define P9_STATS_CTIME         0x00000080ULL
                 #define P9_STATS_INO           0x00000100ULL
                 #define P9_STATS_SIZE          0x00000200ULL
                 #define P9_STATS_BLOCKS        0x00000400ULL

                 #define P9_STATS_BTIME         0x00000800ULL
                 #define P9_STATS_GEN           0x00001000ULL
                 #define P9_STATS_DATA_VERSION  0x00002000ULL

                 #define P9_STATS_BASIC         0x000007ffULL
                 #define P9_STATS_ALL           0x00003fffULL

        This patch implements the client side of getattr implementation for 9P2000.L.
        It introduces a new structure p9_stat_dotl for getting Linux stat information
        along with QID. The data layout is similar to stat structure in Linux user
        space with the following major differences:

        inode (st_ino) is not part of data. Instead qid is.

        device (st_dev) is not part of data because this doesn't make sense on the
        client.

        All time variables are 64 bit wide on the wire. The kernel seems to use
        32 bit variables for these variables. However, some of the architectures
        have used 64 bit variables and glibc exposes 64 bit variables to user
        space on some architectures. Hence to be on the safer side we have made
        these 64 bit in the protocol. Refer to the comments in
        include/asm-generic/stat.h

        There are some additional fields: st_btime_sec, st_btime_nsec, st_gen,
        st_data_version apart from the bitmask, st_result_mask. The bit mask
        is filled by the server to indicate which stat fields have been
        populated by the server. Currently there is no clean way for the
        server to obtain these additional fields, so it sends back just the
        basic fields.

Signed-off-by: M. Mohan Kumar <[email protected]>
Signed-off-by: Sripathi Kodi <[email protected]>
14 years agovirtio-9p: Compute iounit based on host filesystem block size
M. Mohan Kumar [Wed, 9 Jun 2010 13:44:28 +0000 (19:14 +0530)]
virtio-9p: Compute iounit based on host filesystem block size

Compute iounit based on the host filesystem block size and pass it to
client with open/create response. Also return iounit as statfs's f_bsize
for optimal block size transfers.

Signed-off-by: M. Mohan Kumar <[email protected]>
Reviewd-by: Sripathi Kodi <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years ago[V4] virtio-9p: readdir implementation for 9p2000.L
Sripathi Kodi [Wed, 9 Jun 2010 09:27:57 +0000 (14:57 +0530)]
[V4] virtio-9p: readdir implementation for 9p2000.L

This patch implements the server part of readdir() implementation for
9p2000.L

    SYNOPSIS

    size[4] Treaddir tag[2] fid[4] offset[8] count[4]
    size[4] Rreaddir tag[2] count[4] data[count]

    DESCRIPTION

    The readdir request asks the server to read the directory specified by 'fid'
    at an offset specified by 'offset' and return as many dirent structures as
    possible that fit into count bytes. Each dirent structure is laid out as
    follows.

            qid.type[1]
              the type of the file (directory, etc.), represented as a bit
              vector corresponding to the high 8 bits of the file's mode
              word.

            qid.vers[4]
              version number for given path

            qid.path[8]
              the file server's unique identification for the file

            offset[8]
              offset into the next dirent.

            type[1]
              type of this directory entry.

            name[256]
              name of this directory entry.

Signed-off-by: Sripathi Kodi <[email protected]>
Reviewed-by: M. Mohan Kumar <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years agovirtio-9p: Return correct error from v9fs_remove
Sripathi Kodi [Wed, 9 Jun 2010 09:03:22 +0000 (14:33 +0530)]
virtio-9p: Return correct error from v9fs_remove

Signed-off-by: Sripathi Kodi <[email protected]>
In v9fs_remove_post_remove() we currently ignore the error returned by
the previous call to remove() and return an error only if freeing the
fid fails. However, the client expects to see the error from remove().
Currently the client falsely thinks that the remove call has always
succeeded. For example, doing rmdir on a non-empty directory does
not return ENOTEMPTY.

With this patch we ignore the error from free_fid(). The client cannot
use this error value anyway.

Signed-off-by: Sripathi Kodi <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years agoqemu: virtio-9p: Implement statfs support in server
M. Mohan Kumar [Mon, 10 May 2010 06:41:03 +0000 (12:11 +0530)]
qemu: virtio-9p: Implement statfs support in server

Implement statfs support in qemu server based on Sripathi's
initial statfs patch.

Signed-off-by: M. Mohan Kumar <[email protected]>
Signed-off-by: Sripathi Kodi <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years agoqemu: virtio-9p: Recognize 9P2000.L protocol
M. Mohan Kumar [Thu, 27 May 2010 08:27:29 +0000 (13:57 +0530)]
qemu: virtio-9p: Recognize 9P2000.L protocol

Make 9P server recognize 9P2000.L protocol version

Signed-off-by: M. Mohan Kumar <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
14 years agoqcow2: Remove unnecessary flush after L2 write
Kevin Wolf [Wed, 1 Sep 2010 10:40:52 +0000 (12:40 +0200)]
qcow2: Remove unnecessary flush after L2 write

When a new cluster was allocated, we only need a flush after the write to the
L2 table if it was a COW and we need to decrease the refcounts of the old
clusters.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agoblock: Fix BDRV_O_CACHE_MASK
Kevin Wolf [Tue, 31 Aug 2010 13:08:03 +0000 (15:08 +0200)]
block: Fix BDRV_O_CACHE_MASK

BDRV_O_CACHE_MASK should have been extended when cache=unsafe introduced a new
flag BDRV_O_NO_FLUSH. There are currently no users that would change their
behaviour because of this, but let's clean it up before things break.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agoqemu-img convert: Use cache=unsafe for output image
Kevin Wolf [Tue, 31 Aug 2010 11:44:25 +0000 (13:44 +0200)]
qemu-img convert: Use cache=unsafe for output image

If qemu-img crashes during the conversion, the user will throw away the broken
output file anyway and start over. So no need to be too cautious.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agoraw-posix: improve detection of scsi-generic devices
Bernhard Kohl [Mon, 6 Sep 2010 15:06:02 +0000 (17:06 +0200)]
raw-posix: improve detection of scsi-generic devices

Allow symbolic links which point to /dev/sgX devices.

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: add some optional scsi commands
Bernhard Kohl [Mon, 6 Sep 2010 09:50:55 +0000 (11:50 +0200)]
scsi-disk: add some optional scsi commands

I use a legacy OS which depends on some optional SCSI commands.
In fact this implementation does nothing special, but provides minimum
support for the following commands:

REZERO UNIT
WRITE AND VERIFY(10)
WRITE AND VERIFY(12)
WRITE AND VERIFY(16)
MODE SELECT(6)
MODE SELECT(10)
SEEK(6)
SEEK(10)

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoImprove ATA IDENTIFY word 64 contents.
Jonathan A. Kollasch [Fri, 3 Sep 2010 12:57:46 +0000 (07:57 -0500)]
Improve ATA IDENTIFY word 64 contents.

Fill in word 64 of IDENTIFY data to indicate support for PIO modes 3 and 4.
This allows NetBSD guests to use UltraDMA modes instead of just PIO mode 0.

Signed-off-by: Jonathan A. Kollasch <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoraw-posix: Don't use file name for host_cdrom detection on Linux
Kevin Wolf [Thu, 2 Sep 2010 15:48:32 +0000 (17:48 +0200)]
raw-posix: Don't use file name for host_cdrom detection on Linux

On Linux, we have code to detect CD-ROMs using an ioctl. We shouldn't lose
anything but false positives by removing the check for a /dev/cd* path.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agoqemu-io: Make alloc output useful when nb_sectors=1
Stefan Hajnoczi [Thu, 2 Sep 2010 09:38:03 +0000 (10:38 +0100)]
qemu-io: Make alloc output useful when nb_sectors=1

There is no indication whether or not the sector is allocated when
nb_sectors=1:

  sector allocated at offset 64 KiB

This message is produced whether or not the sector is allocated.

Simply use the same message as the plural case, I don't think the
English is so broken that we need special case output here:

  0/1 sectors allocated at offset 64 KiB

This change does not affect qemu-iotests since nb_sectors=1 is not used
there.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi: fix and improve debug prints
Bernhard Kohl [Wed, 1 Sep 2010 14:33:21 +0000 (16:33 +0200)]
scsi: fix and improve debug prints

Some of them are not compile clean.

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: fix the check of the DBD bit in the MODE SENSE command
Bernhard Kohl [Tue, 31 Aug 2010 12:08:27 +0000 (14:08 +0200)]
scsi-disk: fix the check of the DBD bit in the MODE SENSE command

The DBD bit does not work as expected.

SCSI-Spec:
http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.2.10
"A disable block descriptors (DBD) bit of zero indicates that the target
may return zero or more block descriptors in the returned MODE SENSE
data (see 8.3.3), at the target's discretion. A DBD bit of one
specifies that the target shall not return any block descriptors in the
returned MODE SENSE data."

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: return CHECK CONDITION for unknown page codes in the MODE SENSE command
Bernhard Kohl [Tue, 31 Aug 2010 12:08:26 +0000 (14:08 +0200)]
scsi-disk: return CHECK CONDITION for unknown page codes in the MODE SENSE command

SCSI-Spec:
http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.2.10
"An initiator may request any one or all of the supported mode pages
from a target. If an initiator issues a MODE SENSE command with a
page code value not implemented by the target, the target shall return
CHECK CONDITION status and shall set the sense key to ILLEGAL REQUEST
and the additional sense code to INVALID FIELD IN CDB."

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: fix the block descriptor returned by the MODE SENSE command
Bernhard Kohl [Tue, 31 Aug 2010 12:08:25 +0000 (14:08 +0200)]
scsi-disk: fix the block descriptor returned by the MODE SENSE command

The block descriptor contains the number of blocks, not the highest LBA.
Real hard disks return 0 if the number of blocks exceed the maximum 0xFFFFFF.

SCSI-Spec:
http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.3.3
"The number of blocks field specifies the number of logical blocks on the
medium to which the density code and block length fields apply. A value
of zero indicates that all of the remaining logical blocks of the logical
unit shall have the medium characteristics specified."

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: respect the page control (PC) field in the MODE SENSE command
Bernhard Kohl [Tue, 31 Aug 2010 12:08:24 +0000 (14:08 +0200)]
scsi-disk: respect the page control (PC) field in the MODE SENSE command

The page control (PC) field defines the type of mode parameter values
to be returned in the mode pages:

PC=0 : Current values
PC=1 : Changeable values
PC=2 : Default values
PC=3 : Saved values

The current implementation always returns the same type of parameters.
This is OK for Current and Default values as we don't support changes
to be done by the MODE SELECT command.

For Saved values the following applies (implemented by this patch):
"A PC field value of 3h requests that the target return the saved
values of the mode parameters. Implementation of saved page parameters
is optional. Mode parameters not supported by the target shall be set
to zero. If saved values are not implemented, the command shall be
terminated with CHECK CONDITION status, the sense key set to
ILLEGAL REQUEST and the additional sense code set to
SAVING PARAMETERS NOT SUPPORTED."

For Changeable values the following applies (implemented by this patch):
"A PC field value of 1h requests that the target return a mask denoting
those mode parameters that are changeable. In the mask, the fields of
the mode parameters that are changeable shall be set to all one bits and
the fields of the mode parameters that are non-changeable (i.e. defined
by the target) shall be set to all zero bits."

In newer versions of the SCSI-2 spec the following clause was added.
"If the logical unit does not implement changeable parameters mode pages
and the device server receives a MODE SENSE command with 01b in the PC
field, then the command shall be terminated with CHECK CONDITION status,
with the sense key set to ILLEGAL REQUEST, and the additional sense code
set to INVALID FIELD IN CDB."

This was not yet included in the SCSI-2 Working Drafts from 1986-1993.
I assume that the variant to return CHECK CONDITION for PC=1 is not
widely implemented by real devices. I have a legacy OS which fails,
if MODE_SENSE returns non GOOD for PC=1. So for highest compatibility I
implemented the former variant with this patch.

The last Working Draft X3T9.2 Rev. 10L 7-SEP-93 can be found here:
http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.2.10

In mode_sense_page() this patch also avoids multiple hard coded
definitions of the same mode page length. Instead I use the varable
p[1]. In fact the returned length of the mode pages 4 and 5 were wrong
(2 bytes less).

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: fix the mode data header returned by the MODE SENSE(10) command
Bernhard Kohl [Tue, 31 Aug 2010 12:08:23 +0000 (14:08 +0200)]
scsi-disk: fix the mode data header returned by the MODE SENSE(10) command

The header for the  MODE SENSE(10) command is 8 bytes long.

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoscsi-disk: fix the mode data length field returned by the MODE SENSE command
Bernhard Kohl [Tue, 31 Aug 2010 09:22:29 +0000 (11:22 +0200)]
scsi-disk: fix the mode data length field returned by the MODE SENSE command

The MODE DATA LENGTH field indicates the length in bytes of the following
data that is available to be transferred. The mode data length does not include
the number of bytes in the MODE DATA LENGTH field.

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agovirtio-net: Introduce a new bottom half packet TX
Alex Williamson [Thu, 2 Sep 2010 15:01:10 +0000 (09:01 -0600)]
virtio-net: Introduce a new bottom half packet TX

Based on a patch from Mark McLoughlin, this patch introduces a new
bottom half packet transmitter that avoids the latency imposed by
the tx_timer approach.  Rather than scheduling a timer when a TX
packet comes in, schedule a bottom half to be run from the iothread.
The bottom half handler first attempts to flush the queue with
notification disabled (this is where we could race with a guest
without txburst).  If we flush a full burst, reschedule immediately.
If we send short of a full burst, try to re-enable notification.
To avoid a race with TXs that may have occurred, we must then
flush again.  If we find some packets to send, the guest it probably
active, so we can reschedule again.

tx_timer and tx_bh are mutually exclusive, so we can re-use the
tx_waiting flag to indicate one or the other needs to be setup.
This allows us to seamlessly migrate between timer and bh TX
handling.

The bottom half handler becomes the new default and we add a new
tx= option to virtio-net-pci.  Usage:

-device virtio-net-pci,tx=timer # select timer mitigation vs "bh"

Signed-off-by: Alex Williamson <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agovirtio-net: Rename tx_timer_active to tx_waiting
Alex Williamson [Thu, 2 Sep 2010 15:01:04 +0000 (09:01 -0600)]
virtio-net: Rename tx_timer_active to tx_waiting

De-couple this from the timer since we might want to use
different backends to send the packet.

Signed-off-by: Alex Williamson <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agovirtio-net: Limit number of packets sent per TX flush
Alex Williamson [Thu, 2 Sep 2010 15:00:57 +0000 (09:00 -0600)]
virtio-net: Limit number of packets sent per TX flush

If virtio_net_flush_tx() is called with notification disabled, we can
race with the guest, processing packets at the same rate as they
get produced.  The trouble is that this means we have no guaranteed
exit condition from the function and can spend minutes in there.
Currently flush_tx is only called with notification on, which seems
to limit us to one pass through the queue per call.  An upcoming
patch changes this.

Also add an option to set this value on the command line as different
workloads may wish to use different values.  We can't necessarily
support any random value, so this is a developer option: x-txburst=
Usage:

-device virtio-net-pci,x-txburst=64 # 64 packets per tx flush

One pass through the queue (256) seems to be a good default value
for this, balancing latency with throughput.  We use a signed int
for x-txburst because 2^31 packets in a burst would take many, many
minutes to process and it allows us to easily return a negative
value value from virtio_net_flush_tx() to indicate a back-off
or error condition.

Signed-off-by: Alex Williamson <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agovirtio-net: Make tx_timer timeout configurable
Alex Williamson [Thu, 2 Sep 2010 15:00:50 +0000 (09:00 -0600)]
virtio-net: Make tx_timer timeout configurable

Add an option to make the TX mitigation timer adjustable as a device
option.  The 150us hard coded default used currently is reasonable,
but may not be suitable for all workloads, this gives us a way to
adjust it using a single binary.  We can't support any random option
though, so use the "x-" prefix to indicate this is a developer
option.  Usage:

-device virtio-net-pci,x-txtimer=500000,... # .5ms timeout

Signed-off-by: Alex Williamson <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agovhost_net: mergeable buffers support
Michael S. Tsirkin [Fri, 16 Jul 2010 08:43:43 +0000 (11:43 +0300)]
vhost_net: mergeable buffers support

use the new tap APIs to set header length

Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agotap: add APIs for vnet header length
Michael S. Tsirkin [Fri, 16 Jul 2010 08:16:06 +0000 (11:16 +0300)]
tap: add APIs for vnet header length

Add APIs to control host header length. First user
will be vhost-net.

Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agotap: generalize code for different vnet header len
Michael S. Tsirkin [Tue, 13 Jul 2010 14:55:31 +0000 (17:55 +0300)]
tap: generalize code for different vnet header len

Make host vnet header length a structure field in
preparation for using this support in linux kernel.

Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agoPPC: Change PPC maintainer
Alexander Graf [Tue, 7 Sep 2010 11:46:15 +0000 (13:46 +0200)]
PPC: Change PPC maintainer

Since nobody else seems interested in maintaining PPC, let's change the
maintainer to myself. I keep a staging tree anyways and am probably the
person touching most of that code these days.

This changes the maintainer entry for working ppc targets to myself.

Signed-off-by: Alexander Graf <[email protected]>
14 years agoqemu: e1000 fix TOR math
Michael S. Tsirkin [Thu, 2 Sep 2010 14:47:43 +0000 (17:47 +0300)]
qemu: e1000 fix TOR math

Patch b0b900070c7cb29bbefb732ec00397abe5de6d73 made
TOR valuer incorrect: the spec says it should always
include the CRC field.
No one seems to use this field, but better to stick to spec.

Signed-off-by: Michael S. Tsirkin <[email protected]>
14 years agoPPC: Make e500 pci byte swap config data
Alexander Graf [Mon, 30 Aug 2010 22:22:50 +0000 (00:22 +0200)]
PPC: Make e500 pci byte swap config data

The config data field on the e500 pci controller is in little endian, so we need
to enable byte swap there.

Signed-off-by: Alexander Graf <[email protected]>
14 years agoPPC: Qdev'ify e500 pci
Alexander Graf [Mon, 30 Aug 2010 22:22:28 +0000 (00:22 +0200)]
PPC: Qdev'ify e500 pci

The e500 PCI controller isn't qdev'ified yet. This leads to severe issues
when running with -drive.

To be able to use a virtio disk with an e500 VM, let's convert the PCI
controller over to qdev.

Signed-off-by: Alexander Graf <[email protected]>
14 years agoKVM: PPC: Add level based interrupt logic
Alexander Graf [Mon, 30 Aug 2010 11:49:15 +0000 (13:49 +0200)]
KVM: PPC: Add level based interrupt logic

KVM on PowerPC used to have completely broken interrupt logic. Usually,
interrupts work by having a PIC that pulls a line up/down, so the CPU knows
that an interrupt is active. This line stays active until some action is
done to the PIC to release the line.

On KVM for PPC, we just checked if there was an interrupt pending and pulled
a line in the kernel module. We never released it though, hoping that kernel
space would just declare an interrupt as released when injected - which is
wrong.

To fix this, we need to completely redesign the interrupt injection logic.
Whenever an interrupt line gets triggered, we need to notify kernel space
that the line is up. Whenever it gets released, we do the same. This way
we can assure that the interrupt state is always known to kernel space.

This fixes random stalls in KVM guests on PowerPC that were waiting for
an interrupt while everyone else thought they received it already.

Signed-off-by: Alexander Graf <[email protected]>
14 years agovnc: use bswapNN() rather than bswap_NN()
Izumi Tsutsui [Sun, 8 Aug 2010 09:54:05 +0000 (18:54 +0900)]
vnc: use bswapNN() rather than bswap_NN()

bswap_NN() variants are not always available in CONFIG_MACHINE_BSWAP_H case
and bswapNN() are public APIs in "bswap.h".

Signed-off-by: Izumi Tsutsui <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agovnc: tight: remove unused variable
Serge Ziryukin [Sat, 28 Aug 2010 20:24:33 +0000 (23:24 +0300)]
vnc: tight: remove unused variable

Signed-off-by: Serge Ziryukin <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoFix ivshmem build on 32-bit hosts
Avi Kivity [Sun, 29 Aug 2010 09:43:15 +0000 (12:43 +0300)]
Fix ivshmem build on 32-bit hosts

stat() fields can be more or less anything depending on configuration, cast
explicitly to uint64_t to avoid printf() format mismatches.

Signed-off-by: Avi Kivity <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agovirtio-9p: Make sure -virtfs option works correctly
Aneesh Kumar K.V [Thu, 2 Sep 2010 16:17:59 +0000 (21:47 +0530)]
virtio-9p: Make sure -virtfs option works correctly

When making copy of arguments we were doing partial copy

Signed-off-by: Aneesh Kumar K.V <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agohw/ivshmem.c don't check for negative values on unsigned data types
Jes Sorensen [Mon, 30 Aug 2010 10:31:33 +0000 (12:31 +0200)]
hw/ivshmem.c don't check for negative values on unsigned data types

There is no need to check for dest < 0 or vector >= 0 as both are
uint16_t.

This should fix problems with broken build with aggressive compiler
flags. Reported by Xudong Hao <[email protected]>

Signed-off-by: Jes Sorensen <[email protected]>
Acked-by: Cam Macdonell <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoload_multiboot(): get_image_size() returns int
Jes Sorensen [Tue, 31 Aug 2010 07:30:38 +0000 (09:30 +0200)]
load_multiboot(): get_image_size() returns int

Do not store return of get_image_size() in a uint32_t as it makes it
impossible to detect error returns from get_image_size.

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoChange DPRINTF() to do{}while(0) to avoid compiler warning
Jes Sorensen [Tue, 31 Aug 2010 07:30:37 +0000 (09:30 +0200)]
Change DPRINTF() to do{}while(0) to avoid compiler warning

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agosize_t is unsigned, change to ssize_t to handle errors from tight_compress_data()
Jes Sorensen [Tue, 31 Aug 2010 07:30:36 +0000 (09:30 +0200)]
size_t is unsigned, change to ssize_t to handle errors from tight_compress_data()

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoFix repeated typo: was "end if list" instead of "end of list"
Jes Sorensen [Tue, 31 Aug 2010 07:30:35 +0000 (09:30 +0200)]
Fix repeated typo: was "end if list" instead of "end of list"

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoRespect return value from nbd_client()
Jes Sorensen [Tue, 31 Aug 2010 07:30:34 +0000 (09:30 +0200)]
Respect return value from nbd_client()

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoRemove unused argument for nbd_client()
Jes Sorensen [Tue, 31 Aug 2010 07:30:33 +0000 (09:30 +0200)]
Remove unused argument for nbd_client()

Signed-off-by: Jes Sorensen <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoFix OpenBSD linker warning
Blue Swirl [Tue, 31 Aug 2010 20:16:59 +0000 (20:16 +0000)]
Fix OpenBSD linker warning

Fix a warning from OpenBSD linker:
../libhw32/vl.o(.text+0x5c3c): In function `main':
/src/qemu/vl.c:2335: warning: sprintf() is often misused, please use snprintf()

Signed-off-by: Blue Swirl <[email protected]>
14 years agoacpi: fix file size check with -acpitable.
Isaku Yamahata [Wed, 28 Jul 2010 23:08:42 +0000 (23:08 +0000)]
acpi: fix file size check with -acpitable.

acpi table file can be modified during load so file size check
should be more strict.
pointer calculation should be after qemu_realloc(). not before realloc().

Signed-off-by: Isaku Yamahata <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agosavevm: Generate a name when run without one
Miguel Di Ciurcio Filho [Wed, 4 Aug 2010 17:55:49 +0000 (14:55 -0300)]
savevm: Generate a name when run without one

When savevm is run without a name, the name stays blank and the snapshot is
saved anyway.

The new behavior is when savevm is run without parameters a name will be
created automaticaly, so the snapshot is accessible to the user without needing
the id when loadvm is run.

(qemu) savevm
(qemu) info snapshots
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         vm-20100728134640      978K 2010-07-28 13:46:40   00:00:08.603

We use a name with the format 'vm-YYYYMMDDHHMMSS'.

This is a first step to hide the internal id, because I don't see a reason to
expose this kind of internals to the user.

Signed-off-by: Miguel Di Ciurcio Filho <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agomonitor: make 'info snapshots' show only fully available snapshots
Miguel Di Ciurcio Filho [Wed, 4 Aug 2010 17:55:48 +0000 (14:55 -0300)]
monitor: make 'info snapshots' show only fully available snapshots

The output generated by 'info snapshots' shows only snapshots that exist on the
block device that saves the VM state. This output can cause an user to
erroneously try to load an snapshot that is not available on all block devices.

$ qemu-img snapshot -l xxtest.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1                                1.5M 2010-07-26 16:51:52   00:00:08.599
2                                1.5M 2010-07-26 16:51:53   00:00:09.719
3                                1.5M 2010-07-26 17:26:49   00:00:13.245
4                                1.5M 2010-07-26 19:01:00   00:00:46.763

$ qemu-img snapshot -l xxtest2.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
3                                   0 2010-07-26 17:26:49   00:00:13.245
4                                   0 2010-07-26 19:01:00   00:00:46.763

Current output:
$ qemu -hda xxtest.qcow2 -hdb xxtest2.qcow2 -monitor stdio -vnc :0
QEMU 0.12.4 monitor - type 'help' for more information
(qemu) info snapshots
Snapshot devices: ide0-hd0
Snapshot list (from ide0-hd0):
ID        TAG                 VM SIZE                DATE       VM CLOCK
1                                1.5M 2010-07-26 16:51:52   00:00:08.599
2                                1.5M 2010-07-26 16:51:53   00:00:09.719
3                                1.5M 2010-07-26 17:26:49   00:00:13.245
4                                1.5M 2010-07-26 19:01:00   00:00:46.763

Snapshots 1 and 2 do not exist on xxtest2.qcow, but they are displayed anyway.

This patch sumarizes the output to only show fully available snapshots.

New output:
(qemu) info snapshots
ID        TAG                 VM SIZE                DATE       VM CLOCK
3                                1.5M 2010-07-26 17:26:49   00:00:13.245
4                                1.5M 2010-07-26 19:01:00   00:00:46.763

Signed-off-by: Miguel Di Ciurcio Filho <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoposix-aio-compat: Fix async_conmtext for ioctl
Andrew de Quincey [Sun, 8 Aug 2010 20:04:50 +0000 (21:04 +0100)]
posix-aio-compat: Fix async_conmtext for ioctl

Set the async_context_id field when queuing an async ioctl call

Signed-off-by: Andrew de Quincey <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agonbd: Introduce NBD named exports.
Laurent Vivier [Wed, 25 Aug 2010 20:48:33 +0000 (22:48 +0200)]
nbd: Introduce NBD named exports.

This patch allows to connect Qemu using NBD protocol to an nbd-server
using named exports.

For instance, if on the host "isoserver", in /etc/nbd-server/config, you have:

[generic]
[debian-500-ppc-netinst]
        exportname = /ISO/debian-500-powerpc-netinst.iso
[Fedora-10-ppc-netinst]
        exportname = /ISO/Fedora-10-ppc-netinst.iso

You can connect to it, using:

    qemu -cdrom nbd:isoserver:exportname=debian-500-ppc-netinst
    qemu -cdrom nbd:isoserver:exportname=Fedora-10-ppc-netinst

NOTE: you need at least nbd-server 2.9.18

Signed-off-by: Laurent Vivier <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agovvfat: fat_chksum(): fix access above array bounds
Loïc Minier [Sat, 21 Aug 2010 22:47:23 +0000 (00:47 +0200)]
vvfat: fat_chksum(): fix access above array bounds

Signed-off-by: Loïc Minier <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoqemu-img rebase: Open new backing file read-only
Kevin Wolf [Tue, 17 Aug 2010 16:58:55 +0000 (18:58 +0200)]
qemu-img rebase: Open new backing file read-only

We never write to a backing file, so opening rw is useless. It just means that
you can't rebase on top of a file for which you don't have write permissions.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agosheepdog: remove unnecessary includes
Izumi Tsutsui [Sun, 8 Aug 2010 09:31:04 +0000 (18:31 +0900)]
sheepdog: remove unnecessary includes

"qemu_socket.h" includes all necessary files and
including <netinet/tcp.h> without <netinet/in.h>
could cause errors on some systems.

Signed-off-by: Izumi Tsutsui <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
14 years agoblock: Fix image re-open in bdrv_commit
Kevin Wolf [Thu, 5 Aug 2010 11:05:22 +0000 (13:05 +0200)]
block: Fix image re-open in bdrv_commit

Arguably we should re-open the backing file with the backing file format and
not with the format of the snapshot image.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agovirtio-blk: Fix migration of queued requests
Kevin Wolf [Tue, 3 Aug 2010 14:57:02 +0000 (16:57 +0200)]
virtio-blk: Fix migration of queued requests

in_sg[].iovec and out_sg[].ioved are pointer to (source) host memory and
therefore invalid after migration. When loading the device state we must
create a new mapping on the destination host.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agovirtio: Factor virtqueue_map_sg out
Kevin Wolf [Tue, 3 Aug 2010 14:54:38 +0000 (16:54 +0200)]
virtio: Factor virtqueue_map_sg out

Separate the mapping of requests to host memory from the descriptor iteration.
The next patch will make use of it in a different context.

Signed-off-by: Kevin Wolf <[email protected]>
14 years agoisapc: fix segfault.
Isaku Yamahata [Wed, 4 Aug 2010 08:43:20 +0000 (17:43 +0900)]
isapc: fix segfault.

https://bugs.launchpad.net/bugs/611646
reports that ./i386-softmmu/qemu -M isapc segfaults.
This patch fixes the segfault introduced by
f885f1eaa8711c06033ceb1599e3750fb37c306f

It's because i440fx_state in pc_init1() isn't initialized.

> Core was generated by `./i386-softmmu/qemu -M isapc'.
> Program terminated with signal 11, Segmentation fault.
> [New process 19686]
>     at qemu/hw/piix_pci.c:136
> (gdb) where
>     at qemu/hw/piix_pci.c:136
>     boot_device=0x7fffe1f5b040 "cad", kernel_filename=0x0,
>     kernel_cmdline=0x6469bf "", initrd_filename=0x0,
>     cpu_model=0x654d10 "486", pci_enabled=0)
>     at qemu/hw/pc_piix.c:178
>     boot_device=0x7fffe1f5b040 "cad", kernel_filename=0x0,
>     kernel_cmdline=0x6469bf "", initrd_filename=0x0, cpu_model=0x654d10 "486")
>     at qemu/hw/pc_piix.c:207
>     envp=0x7fffe1f5b188)
>     at qemu/vl.c:2871

Signed-off-by: Markus Armbruster <[email protected]>
Signed-off-by: Isaku Yamahata <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoFix segfault in mmio subpage handling code.
Gleb Natapov [Thu, 29 Jul 2010 07:41:45 +0000 (10:41 +0300)]
Fix segfault in mmio subpage handling code.

It is possible that subpage mmio is registered over existing memory
page. When this happens "memory" will have real memory address and not
index into io_mem array so next access to the page will generate
segfault. It is uncommon to have some part of a page to be accessed as
memory and some as mmio, but qemu shouldn't crash even when guest does
stupid things. So lets just pretend that the rest of the page is
unassigned if guest configure part of the memory page as mmio.

Signed-off-by: Gleb Natapov <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoetraxfs_eth: correct use of ! and &
Blue Swirl [Thu, 26 Aug 2010 18:04:18 +0000 (18:04 +0000)]
etraxfs_eth: correct use of ! and &

Combining bitwise AND and logical NOT is suspicious.

Fixed by this Coccinelle script:
// From http://article.gmane.org/gmane.linux.kernel/646367
@@ expression E1,E2; @@
(
 !E1 & !E2
|
- !E1 & E2
+ !(E1 & E2)
)

Acked-by: Edgar E. Iglesias <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoSparc: update OpenBIOS images to r859
Blue Swirl [Thu, 26 Aug 2010 17:57:47 +0000 (17:57 +0000)]
Sparc: update OpenBIOS images to r859

Update Sparc32 and Sparc64 OpenBIOS images to SVN revision 859.

Bring also pc-bios/README up to date including the update performed by
419ef5f1c6a9614e8ddcb0b0f826de692e7e4a43.

Signed-off-by: Blue Swirl <[email protected]>
14 years agoppc4xx: load Bamboo kernel, initrd, and fdt at fixed addresses
Hollis Blanchard [Thu, 5 Aug 2010 00:21:37 +0000 (17:21 -0700)]
ppc4xx: load Bamboo kernel, initrd, and fdt at fixed addresses

We can't use the return value of load_uimage() for the kernel because it
can't account for BSS size, and the PowerPC kernel does not relocate
blobs before zeroing BSS.

Instead, we now load at the fixed addresses chosen by u-boot (the normal
firmware for the board).

Signed-off-by: Hollis Blanchard <[email protected]>
14 years agoppc4xx: don't unregister RAM at reset
Hollis Blanchard [Thu, 5 Aug 2010 00:21:36 +0000 (17:21 -0700)]
ppc4xx: don't unregister RAM at reset

The PowerPC 4xx SDRAM controller emulation unregisters RAM in its reset
callback. However, qemu_system_reset() is now called at initialization
time, so all RAM is unregistered before starting the guest (!).

Signed-off-by: Hollis Blanchard <[email protected]>
14 years agoppc4xx: correct SDRAM controller warning message condition
Hollis Blanchard [Thu, 5 Aug 2010 00:21:35 +0000 (17:21 -0700)]
ppc4xx: correct SDRAM controller warning message condition

The message "Truncating memory to %d MiB to fit SDRAM controller limits"
should be displayed only when a user chooses an amount of RAM which
can't be represented by the PPC 4xx SDRAM controller (e.g. 129MB, which
would only be valid if the controller supports a bank size of 1MB).

Signed-off-by: Hollis Blanchard <[email protected]>
14 years agoFix "make install" with a cross toolchain
Hollis Blanchard [Thu, 5 Aug 2010 00:21:34 +0000 (17:21 -0700)]
Fix "make install" with a cross toolchain

We must be able to use a non-native strip executable, but not all
versions of 'install' support the --strip-program option (e.g.
OpenBSD). Accordingly, we can't use 'install -s', and we must run strip
separately.

Signed-off-by: Hollis Blanchard <[email protected]>
Cc: [email protected]
14 years agoPPC: Update openbios binary to r859
Alexander Graf [Thu, 26 Aug 2010 16:15:20 +0000 (18:15 +0200)]
PPC: Update openbios binary to r859

This updates the openBIOS binary to r589, adding support for PPC PV feature
pass-through in KVM.

Signed-off-by: Alexander Graf <[email protected]>
14 years agoPPC: Add PV hypercall transport through fw_cfg
Alexander Graf [Tue, 3 Aug 2010 13:22:42 +0000 (15:22 +0200)]
PPC: Add PV hypercall transport through fw_cfg

On KVM for PPC we need to tell the guest which instructions to use when
doing a hypercall. The clean way to do this is to go through an ioctl
from userspace and passing it on to the guest using the device tree.

So let's do the qemu part here: read out the hypercall and pass it on
to the guest's fw_cfg so openBIOS can read it out and expose it again.

Signed-off-by: Alexander Graf <[email protected]>
14 years agoRearrange block headers
Blue Swirl [Tue, 24 Aug 2010 15:22:24 +0000 (15:22 +0000)]
Rearrange block headers

Changing block.h or blockdev.h resulted in recompiling most objects.

Move DriveInfo typedef and BlockInterfaceType enum definitions
to qemu-common.h and rearrange blockdev.h use to decrease churn.

Signed-off-by: Blue Swirl <[email protected]>
14 years agoMerge remote branch 'qemu-kvm/uq/master' into staging
Anthony Liguori [Mon, 23 Aug 2010 20:10:12 +0000 (15:10 -0500)]
Merge remote branch 'qemu-kvm/uq/master' into staging

14 years agocompile -fsdev and -virtfs cmd line options unconditionally.
Gerd Hoffmann [Fri, 20 Aug 2010 11:52:02 +0000 (13:52 +0200)]
compile -fsdev and -virtfs cmd line options unconditionally.

Signed-off-by: Gerd Hoffmann <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQemuOpts: make most qemu_*_opts static
Gerd Hoffmann [Fri, 20 Aug 2010 11:52:01 +0000 (13:52 +0200)]
QemuOpts: make most qemu_*_opts static

Switch tree to lookup-by-name using qemu_find_opts().
Also hook up virtfs options so qemu_find_opts works for them too.

Signed-off-by: Gerd Hoffmann <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQemuOpts: allow new option groups be registered at runtime.
Gerd Hoffmann [Fri, 20 Aug 2010 11:52:00 +0000 (13:52 +0200)]
QemuOpts: allow new option groups be registered at runtime.

Signed-off-by: Gerd Hoffmann <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoVGA: Don't register deprecated VBE range
Alex Williamson [Fri, 20 Aug 2010 21:34:16 +0000 (15:34 -0600)]
VGA: Don't register deprecated VBE range

Old versions of the BOCHs VGA BIOS (cira 2003) made use of VBE
registers at 0xff80/81.  In VBE API version 0xb0c2 these were
moved to 0x1ce/cf.  Unfortunately, QEMU still registers handlers
for the old range.  If a guest attempts to assign an I/O device
overlapping this region, QEMU exits with a hw_error.  Windows
guests seem to like to assign I/O devices to the high end of
the address space, so it's pretty easy to hot add an rtl8139
to a Win2k8 guest and trigger the bug.  I can't find any reason
to register these handlers, so let's remove the cruft.

Signed-off-by: Alex Williamson <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQMP: Update README file
Luiz Capitulino [Fri, 20 Aug 2010 19:42:32 +0000 (16:42 -0300)]
QMP: Update README file

A number of changes I prefer to do in one shot:

- Fix example
- Small clarifications
- Add multiple monitors example
- Add 'Development Process' section

Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQMP doc: Add 'Stability Considerations' section
Luiz Capitulino [Fri, 20 Aug 2010 19:42:31 +0000 (16:42 -0300)]
QMP doc: Add 'Stability Considerations' section

Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQMP/monitor: update do_info_version() to output broken down version string
Miguel Di Ciurcio Filho [Fri, 20 Aug 2010 19:42:30 +0000 (16:42 -0300)]
QMP/monitor: update do_info_version() to output broken down version string

This code was originally developed by Daniel P. Berrange <[email protected]>

Signed-off-by: Miguel Di Ciurcio Filho <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQMP: update 'query-version' documentation
Miguel Di Ciurcio Filho [Fri, 20 Aug 2010 19:42:29 +0000 (16:42 -0300)]
QMP: update 'query-version' documentation

Update the documentation of 'query-version' to output the string version broken
down.

Signed-off-by: Miguel Di Ciurcio Filho <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agovnc: check fd before calling qemu_set_fd_handler2() in vnc_client_write()
Yoshiaki Tamura [Fri, 20 Aug 2010 10:10:41 +0000 (19:10 +0900)]
vnc: check fd before calling qemu_set_fd_handler2() in vnc_client_write()

Setting fd = -1 to qemu_set_fd_handler2() causes bus error at FD_SET
in main_loop_wait().

Signed-off-by: Yoshiaki Tamura <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agovirtio-serial: Cleanup on device hot-unplug
Amit Shah [Thu, 19 Aug 2010 01:21:04 +0000 (06:51 +0530)]
virtio-serial: Cleanup on device hot-unplug

Free malloc'ed memory, unregister from savevm and clean up virtio-common
bits on device hot-unplug.

This was found performing a migration after device hot-unplug.

Reported-by: <[email protected]>
Signed-off-by: Amit Shah <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agotarget-i386: svm: Fix MSRPM check
Adam Lackorzynski [Sun, 15 Aug 2010 13:58:32 +0000 (15:58 +0200)]
target-i386: svm: Fix MSRPM check

Correct the calculation of the offset in the msrpm
for the MSR range 0 - 0x1fff.

Signed-off-by: Adam Lackorzynski <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoexec: remove code duplication in qemu_ram_alloc() and qemu_ram_alloc_from_ptr()
Yoshiaki Tamura [Wed, 18 Aug 2010 06:41:49 +0000 (15:41 +0900)]
exec: remove code duplication in qemu_ram_alloc() and qemu_ram_alloc_from_ptr()

Since most of the code in qemu_ram_alloc() and
qemu_ram_alloc_from_ptr() are duplicated, let
qemu_ram_alloc_from_ptr() to switch by checking void *host, and change
qemu_ram_alloc() to a wrapper.

Signed-off-by: Yoshiaki Tamura <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoexec: replace tabs by spaces.
Yoshiaki Tamura [Wed, 18 Aug 2010 04:30:13 +0000 (13:30 +0900)]
exec: replace tabs by spaces.

Signed-off-by: Yoshiaki Tamura <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoarch_init: replace tabs by spaces.
Yoshiaki Tamura [Wed, 18 Aug 2010 04:30:12 +0000 (13:30 +0900)]
arch_init: replace tabs by spaces.

Signed-off-by: Yoshiaki Tamura <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agopckbd: support for commands 0xf0-0xff: Pulse output bit
Bernhard Kohl [Thu, 19 Aug 2010 12:52:12 +0000 (14:52 +0200)]
pckbd: support for commands 0xf0-0xff: Pulse output bit

I have a guest OS which sends the command 0xfd to the keyboard
controller during initialization. To get rid of the message
"qemu: unsupported keyboard cmd=0x%02x\n" I added support for
the pulse output bit commands.

I found the following explanation here:
http://www.win.tue.nl/~aeb/linux/kbd/scancodes-11.html#ss11.3

Command 0xf0-0xff: Pulse output bit
Bits 3-0 of the output port P2 of the keyboard controller may
be pulsed low for approximately 6 µseconds. Bits 3-0 of this
command specify the output port bits to be pulsed. 0: Bit should
be pulsed. 1: Bit should not be modified. The only useful version
of this command is Command 0xfe.
(For MCA, replace 3-0 by 1-0 in the above.)

Command 0xfe: System reset
Pulse bit 0 of the output port P2 of the keyboard controller.
This will reset the CPU.

Signed-off-by: Bernhard Kohl <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoReplace qemu_malloc + memset with qemu_mallocz
Blue Swirl [Fri, 20 Aug 2010 21:04:37 +0000 (21:04 +0000)]
Replace qemu_malloc + memset with qemu_mallocz

Replace a qemu_malloc call, followed by a memset, with qemu_mallocz.

Found with this Coccinelle semantic patch, adapted from
Coccinelle test package rule 94:
@@
type T;
expression x;
expression E;
@@

- x = (T)qemu_malloc(E)
+ x = qemu_mallocz(E)
  ...
(
- memset(x,0,E);
|
- memset(x,0,sizeof(*x));
)

Some files (tests/*) had to be filtered out.

Signed-off-by: Blue Swirl <[email protected]>
14 years agoUse ARRAY_SIZE macro
Blue Swirl [Fri, 20 Aug 2010 21:03:24 +0000 (21:03 +0000)]
Use ARRAY_SIZE macro

Replace array size calculations with ARRAY_SIZE macro.

Implemented with this Coccinelle semantic patch, adapted from
Linux kernel:
@@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(*E))
+ ARRAY_SIZE(E)

@@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(E[...]))
+ ARRAY_SIZE(E)

@@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(T))
+ ARRAY_SIZE(E)

Some files (*-dis.c, tests/*) had to be filtered out.

Signed-off-by: Blue Swirl <[email protected]>
14 years agoRemove useless NULL check for qemu_strdup return value
Blue Swirl [Thu, 19 Aug 2010 20:24:43 +0000 (20:24 +0000)]
Remove useless NULL check for qemu_strdup return value

Found with this Coccinelle semantic patch:
@@
expression E;
identifier ptr;
identifier fn ~= "qemu_strn?dup";
@@

-ptr = fn(E);
-if (ptr == NULL) { ... }
-
+ptr = fn(E);

Signed-off-by: Blue Swirl <[email protected]>
14 years agoRemove useless NULL checks for qemu_malloc return value
Blue Swirl [Thu, 19 Aug 2010 20:24:39 +0000 (20:24 +0000)]
Remove useless NULL checks for qemu_malloc return value

Found with this Coccinelle semantic patch:
@@
expression E;
identifier ptr;
identifier fn ~= "qemu_mallocz*";
@@

-ptr = fn(E);
-if (ptr == NULL) { ... }
-
+ptr = fn(E);

Signed-off-by: Blue Swirl <[email protected]>
14 years agosavevm: Reset last block info at beginning of each save
Alex Williamson [Thu, 19 Aug 2010 13:18:42 +0000 (10:18 -0300)]
savevm: Reset last block info at beginning of each save

If we save more than once we need to reset the last block info or else
only the first save has the actual block info and each subsequent save
will only use continue flags, making them unloadable independently.

Found-by: Miguel Di Ciurcio Filho <[email protected]>
Signed-off-by: Alex Williamson <[email protected]>
Acked-by: Glauber Costa <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoset proper migration status on ->write error (v5)
Marcelo Tosatti [Thu, 19 Aug 2010 13:18:39 +0000 (10:18 -0300)]
set proper migration status on ->write error (v5)

If ->write fails, declare migration status as MIG_STATE_ERROR.

Also, in buffered_file.c, ->close the object in case of an
error.

Fixes "migrate -d "exec:dd of=file", where dd fails to open file.

Signed-off-by: Marcelo Tosatti <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agortc: Remove TARGET_I386 from qemu-config.c, enables driftfix
Amit Shah [Wed, 23 Jun 2010 14:44:04 +0000 (20:14 +0530)]
rtc: Remove TARGET_I386 from qemu-config.c, enables driftfix

qemu-config.c doesn't contain any target-specific code, and the
TARGET_I386 conditional code didn't get compiled as a result. Removing
this enables the driftfix parameter for rtc.

Signed-off-by: Amit Shah <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agoQEMUFileBuffered: indicate that we're ready when the underlying file is ready
Avi Kivity [Wed, 7 Jul 2010 16:44:22 +0000 (19:44 +0300)]
QEMUFileBuffered: indicate that we're ready when the underlying file is ready

QEMUFileBuffered stops writing when the underlying QEMUFile is not ready,
and tells its producer so.  However, when the underlying QEMUFile becomes
ready, it neglects to pass that information along, resulting in stoppage
of all data until the next tick (a tenths of a second).

Usually this doesn't matter, because most QEMUFiles used with QEMUFileBuffered
are almost always ready, but in the case of exec: migration this is not true,
due to the small pipe buffers used to connect to the target process.  The
result is very slow migration.

Fix by detecting the readiness notification and propagating it.  The detection
is a little ugly since QEMUFile overloads put_buffer() to send it, but that's
the suject for a different patch.

Signed-off-by: Avi Kivity <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
14 years agosparc escc IUS improvements (SunOS 4.1.4 fix)
Artyom Tarasenko [Sun, 15 Aug 2010 14:04:41 +0000 (16:04 +0200)]
sparc escc IUS improvements (SunOS 4.1.4 fix)

According to scc_escc_um.pdf:
 - Reset Highest IUS must update irq status to allow processing
   of the next priority interrupt.
 - rx interrupt has always higher priority than tx on same channel

The documentation only explicitly says that Reset Highest IUS
command (0x38) clears IUS bits, not that it clears the corresponding
interrupt too, so don't clear interrupts on this command.

The patch allows SunOS 4.1.4 to use the serial ports

Signed-off-by: Artyom Tarasenko <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoFix mingw32 build
Blue Swirl [Sun, 15 Aug 2010 09:46:24 +0000 (09:46 +0000)]
Fix mingw32 build

Don't define qemu_chr_open_eventfd() on Windows.

Signed-off-by: Blue Swirl <[email protected]>
14 years agowin32: Avoid compiler warning (WIN32_LEAN_AND_MEAN redefined)
Stefan Weil [Thu, 1 Apr 2010 04:20:07 +0000 (04:20 +0000)]
win32: Avoid compiler warning (WIN32_LEAN_AND_MEAN redefined)

configure adds the macro WIN32_LEAN_AND_MEAN to
QEMU_CFLAGS, and SDL_syswm.h defines it, too.

This results in a compiler warning (redefinition of
WIN32_LEAN_AND_MEAN in SDL_syswm.h. That warning prevents
compilations for win32 with warning = error).

Fix this by removing the definition of WIN32_LEAN_AND_MEAN
before including SDL_syswm.h.

[[email protected]: rebased]
Signed-off-by: Stefan Weil <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agowin32: Add missing function setenv
Stefan Weil [Thu, 1 Jul 2010 00:47:49 +0000 (00:47 +0000)]
win32: Add missing function setenv

Mingw32 does not provide a declaration and implementation of function
setenv (which is used in sdl.c), so this patch adds both.

Signed-off-by: Stefan Weil <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoDisable build of ivshmem on non-KVM systems
Cam Macdonell [Sat, 14 Aug 2010 23:47:31 +0000 (17:47 -0600)]
Disable build of ivshmem on non-KVM systems

Signed-off-by: Cam Macdonell <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoAdd kvm_set_ioeventfd_mmio_long definition for non-KVM systems
Cam Macdonell [Sat, 14 Aug 2010 23:47:30 +0000 (17:47 -0600)]
Add kvm_set_ioeventfd_mmio_long definition for non-KVM systems

Signed-off-by: Cam Macdonell <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
14 years agoTCG: Revert ppc64 tcg_out_movi32 change
Andreas Färber [Sat, 14 Aug 2010 20:52:56 +0000 (22:52 +0200)]
TCG: Revert ppc64 tcg_out_movi32 change

3b6dac34161bc0a342336072643c2f6d17e0ec45 apparently broke the ppc64 TCG target
compilation in the code path without guest base.

Reverting this line fixes the build.

Signed-off-by: Andreas F?rber <[email protected]>
Cc: malc <[email protected]>
Cc: Aurelien Jarno <[email protected]>
Cc: Richard Henderson <[email protected]>
Signed-off-by: malc <[email protected]>
14 years agoTCG: Fix Darwin/ppc calling convention recognition
Andreas Färber [Sat, 14 Aug 2010 18:51:50 +0000 (20:51 +0200)]
TCG: Fix Darwin/ppc calling convention recognition

5da79c86a3744e3a901c7986c109dd06951befd2 broke compilation on Mac OS X v10.5 ppc.
Apple's GCC 4.0.1 does not define _CALL_DARWIN. Recognize __APPLE__ again as well.

Signed-off-by: Andreas F?rber <[email protected]>
Cc: malc <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Cc: J?rgen Lock <[email protected]>
Cc: Stefan Weil <[email protected]>
Signed-off-by: malc <[email protected]>
This page took 0.093586 seconds and 4 git commands to generate.