Statistics
| Branch: | Revision:

root / hw / virtio-pci.c @ df0db221

History | View | Annotate | Download (24.1 kB)

# Date Author Comment
54dd9321 10/07/2010 01:19 pm Michael S. Tsirkin

virtio: change set guest notifier to per-device

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

Signed-off-by: Michael S. Tsirkin <>

a697a334 09/07/2010 08:29 pm Alex Williamson

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....

e3f30488 09/07/2010 08:29 pm Alex Williamson

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...

f0c07c7c 09/07/2010 08:29 pm Alex Williamson

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...

2446333c 08/24/2010 06:22 pm Blue Swirl

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 <>

8b53a865 08/23/2010 12:19 am Amit Shah

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: <>
Signed-off-by: Amit Shah <>...

9d0d3138 07/26/2010 02:39 pm Alex Williamson

virtio-blk: Create exit function to unregister savevm

Otherwise we can't migrate after we've removed a virtio block device.

Signed-off-by: Alex Williamson <>
Signed-off-by: Kevin Wolf <>

ac0c14d7 07/13/2010 06:48 pm Markus Armbruster

virtio-pci: Check for virtio_blk_init() failure

It can't actually fail now, but the next commit will change that.

s390_virtio_blk_init() already checks for failure, but
virtio_blk_init_pci() doesn't. Fix that.

Signed-off-by: Markus Armbruster <>...

d75d25e3 07/13/2010 06:48 pm Markus Armbruster

virtio-blk: Fix virtio-blk-s390 to require drive

Move the check from virtio_blk_init_pci(), where it protects only
virtio-blk-pci, to virtio_blk_init(). Without that, virtio-blk-s390
initializes without a drive. I figure that can lead to null pointer
dereferences....

b80d4a98 07/11/2010 08:00 pm Isaku Yamahata

pci: don't overwrite multi functio bit in pci header type.

Don't overwrite pci header type.
Otherwise, multi function bit which pci_init_header_type() sets
appropriately is lost.
Anyway PCI_HEADER_TYPE_NORMAL is zero, so it is unnecessary to zero
which is already zero cleared....

f8b6cc00 07/02/2010 02:18 pm Markus Armbruster

qdev: Decouple qdev_prop_drive from DriveInfo

Make the property point to BlockDriverState, cutting out the DriveInfo
middleman. This prepares the ground for block devices that don't have
a DriveInfo.

Currently all user-defined ones have a DriveInfo, because the only way...

14bafc54 07/02/2010 02:18 pm Markus Armbruster

blockdev: Clean up automatic drive deletion

We automatically delete blockdev host parts on unplug of the guest
device. Too much magic, but we can't change that now.

The delete happens early in the guest device teardown, before the
connection to the host part is severed. Thus, the guest part's...

8a911107 06/22/2010 11:15 pm Alex Williamson

virtio-pci: fix bus master bug setting on load

The comment suggests we're checking for the driver in the ready
state and bus master disabled, but the code is checking that it's
not in the ready state.

Signed-off-by: Alex Williamson <>...

758e8e38 06/22/2010 11:15 pm Venkateswararao Jujjuri (JV)

virtio-9p: Make infrastructure for the new security model.

This patch adds required infrastructure for the new security model.

- A new configure option for attr/xattr.
- if CONFIG_VIRTFS will be defined if both CONFIG_LINUX and CONFIG_ATTR defined.
- Defines routines related to both security models....

666daa68 06/04/2010 04:20 pm Markus Armbruster

blockdev: Collect block device code in new blockdev.c

Anything that moves hundreds of lines out of vl.c can't be all bad.

Signed-off-by: Markus Armbruster <>
Signed-off-by: Kevin Wolf <>

9f107513 05/03/2010 08:17 pm Anthony Liguori

virtio-9p: Add a virtio 9p device to qemu

This patch doesn't implement the 9p protocol handling
code. It adds a simple device which dump the protocol data.

[: Little-Endian to host format conversion]
[: Multiple-mounts support]...

3e607cb5 04/01/2010 09:56 pm Michael S. Tsirkin

virtio: add set_status callback

vhost net backend needs to be notified when
frontend status changes. Add a callback,
similar to set_features.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

ade80dc8 04/01/2010 09:56 pm Michael S. Tsirkin

virtio-pci: fill in notifier support

Support host/guest notifiers in virtio-pci.
The last one only with kvm, that's okay
because vhost relies on kvm anyway.

Note on kvm usage: kvm ioeventfd API
is implemented on non-kvm systems as well,
this is the reason we don't need if (kvm_enabled())...

c81131db 03/31/2010 07:16 pm Alexander Graf

Don't check for bus master for old guests

Older Linux guests don't activate the bus master enable bit. So for those we
can just try to be clever and track if they set the DEVICE_OK bit even though
bus mastering is still disabled.

Under that condition we can disable the windows safety check. With that logic...

1ecda02b 03/16/2010 05:58 pm Markus Armbruster

error: Replace qemu_error() by error_report()

error_report() terminates the message with a newline. Strip it it
from its arguments.

This fixes a few error messages lacking a newline:
net_handle_fd_param()'s "No file descriptor named %s found", and
tap_open()'s "vnet_hdr=1 requested, but no kernel support for...

2f792016 03/16/2010 05:55 pm Markus Armbruster

error: Move qemu_error & friends into their own header

573fb60c 03/08/2010 07:30 pm Amit Shah

virtio-pci: Use DEV_NVECTORS_UNSPECIFIED instead of -1 for virtio-serial

Use the named constant instead of -1.

Signed-off-by: Amit Shah <>
Reported-by: "Michael S. Tsirkin" <>
Signed-off-by: Anthony Liguori <>

7b665b66 02/19/2010 11:32 pm Amit Shah

virtio-serial: pci: Allow MSI to be disabled

Michael noted we don't allow disabling of MSI for the virtio-serial-pci
device. Fix that.

Signed-off-by: Amit Shah <>
CC: "Michael S. Tsirkin" <>
Signed-off-by: Anthony Liguori <>

428c149b 02/11/2010 12:53 am Christoph Hellwig

block: add topology qdev properties

Add three new qdev properties to export block topology information to
the guest. This is needed to get optimal I/O alignment for RAID arrays
or SSDs.

The options are:

- physical_block_size to specify the physical block size of the device,...
98b19252 01/20/2010 04:25 pm Amit Shah

virtio-console: qdev conversion, new virtio-serial-bus

This commit converts the virtio-console device to create a new
virtio-serial bus that can host console and generic serial ports. The
file hosting this code is now called virtio-serial-bus.c.

The virtio console is now a very simple qdev device that sits on the...

a1829205 01/20/2010 04:25 pm Amit Shah

virtio-serial: Use MSI vectors for port virtqueues

This commit enables the use of MSI interrupts for virtqueue
notifications for ports. We use nr_ports + 1 (for control channel) msi
entries for the ports, as only the in_vq operations need an interrupt on...

49e75cf3 01/11/2010 09:41 pm Michael S. Tsirkin

virtio-pci: thinko fix

Since patch ed757e140c0ada220f213036e4497315d24ca8bct, virtio will
sometimes clear all status registers on bus master disable, which loses
information such as VIRTIO_CONFIG_S_FAILED bit. This is a result of
a patch being misapplied: code uses ! instead of ~ for bit...

704a76fc 01/11/2010 09:40 pm Michael S. Tsirkin

virtio: rename features -> guest_features

Rename features->guest_features. This is
what they are, avoid confusion with
host features which we also need to keep around.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

8172539d 01/11/2010 09:40 pm Michael S. Tsirkin

virtio: add features as qdev properties

Add feature bits as properties to virtio. This makes it possible to e.g. define
machine without indirect buffer support, which is required for 0.10
compatibility, or without hardware checksum support, which is required for 0.11...

c2039bd0 12/18/2009 07:26 pm Anthony Liguori

Support PCI based option rom loading

Currently, we preload option roms into the option rom space in memory. This
prevents DDIM from functioning correctly which severely limits the number
of roms we can support.

This patch introduces a pci_add_option_rom() which registers the...

8c52c8f3 12/18/2009 07:26 pm Gerd Hoffmann

pci romfiles: add property, add default to PCIDeviceInfo

This patch adds a romfile property to the pci bus. It allows to specify
a romfile to load into the rom bar of the pci device. The default value
comes from a new field in PCIDeviceInfo. The property allows to change...

6d74ca5a 12/12/2009 03:59 pm Michael S. Tsirkin

virtio: verify features on load

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

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

1b8e9b27 12/01/2009 05:58 pm Michael S. Tsirkin

virtio: do not reset msix state on soft reset

msix state is managed by OS, not the
driver, so it's wrong to touch it
on io from driver.
Mark all vectors unused instead.

Signed-off-by: Michael S. Tsirkin <>

6e355d90 11/09/2009 04:43 pm Isaku Yamahata

pci: introduce pcibus_t to represent pci bus address/size instead of uint32_t

This patch is preliminary for 64 bit BAR support.
Introduce dedicated type, pcibus_t, to represent pci bus address/size
instead of uint32_t.
Later this type will be changed to uint64_t....

0392a017 11/09/2009 04:43 pm Isaku Yamahata

pci: s/PCI_ADDRESS_SPACE_/PCI_BASE_ADDRESS_SPACE_/ to match pci_regs.h

make constants for pci base address match pci_regs.h by
renaming PCI_ADDRESS_SPACE_xxx to PCI_BASE_ADDRESS_SPACE_xxx.

Signed-off-by: Isaku Yamahata <>
Acked-by: Michael S. Tsirkin <>...

97b15621 10/27/2009 07:28 pm Gerd Hoffmann

virtio: use qdev properties for configuration.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

0f457d91 10/06/2009 10:36 pm Michael S. Tsirkin

qemu/pci: make pci not depend on msix

Making pci device cleanup msix automatically makes pci.c depend on
msix.c, which is IMO messy. Since devices do msix_init it's easy and
natural for them to also do msix_uninit.

Signed-off-by: Michael S. Tsirkin <>...

25fe3654 10/05/2009 05:32 pm Amit Shah

virtio-pci: return error if virtio_console_init fails

Currently only one virtio_console device is supported. Trying to add
multiple devices fails and such failure should be reported back to the
qdev init functions.

Signed-off-by: Amit Shah <>...

5a1fc5e8 10/05/2009 05:32 pm Michael S. Tsirkin

qemu: clean up target page usage in msix

Since cpu_register_phys_memory does not require size to be a multiple of
target page size, simply make msix page size 0x1000. Do this in msix,
reverting part of 5e520a7d500ec2569d22d80f9ef4272a34cb3c80, as we no
longer have to pass target page around....

85352471 10/05/2009 05:32 pm Michael S. Tsirkin

qemu/virtio-pci: remove unnecessary check

it's safe to call msix_write_config if msix
is disabled, so call it unconditionally on
pci config write.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

e489030d 10/05/2009 05:32 pm Michael S. Tsirkin

qemu/virtio: fix reset with device removal

virtio pci registers its own reset handler, but fails to unregister it,
which will lead to crashes after device removal. Solve this problem by
switching to qdev reset handler, which is automatically unregistered....

56a14938 10/05/2009 05:32 pm Gerd Hoffmann

drive cleanup fixes.

Changes: * drive_uninit() wants a DriveInfo now. * drive_uninit() also calls bdrv_delete(),
so callers don't need to do that. * drive_uninit() calls are moved over to the ->exit()
callbacks, destroy_bdrvs() is zapped. * setting bdrv->private is not needed any more as the...

e3936fa5 10/05/2009 05:32 pm Gerd Hoffmann

pci: move unregister from PCIDevice to PCIDeviceInfo

One more cleanup while being at it ;)

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

c227f099 10/02/2009 12:12 am Anthony Liguori

Revert "Get rid of _t suffix"

In the very least, a change like this requires discussion on the list.

The naming convention is goofy and it causes a massive merge problem. Something
like this must be presented on the list first so people can provide input...

99a0949b 10/01/2009 09:45 pm malc

Get rid of _t suffix

Some not so obvious bits, slirp and Xen were left alone for the time
being.

Signed-off-by: malc <>

5e520a7d 09/20/2009 06:35 pm Blue Swirl

Compile msix only once

Get page size in device init.

Signed-off-by: Blue Swirl <>

ed757e14 09/11/2009 06:19 pm Yan Vugenfirer

VirtIO: Fix QEMU crash during Windows PNP tests

Hello,

In some cases bus driver can deassert "bus master" bit in PCI command
register. The driver will no longer be able to update related registers in
the device. Eventually it will cause QEMU to exit in "virtqueue_num_heads"...

84fc5589 08/28/2009 04:43 am Gerd Hoffmann

virtio-pci error logging

Use the new qemu_error() function for virtio-blk-pci.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

81a322d4 08/28/2009 04:43 am Gerd Hoffmann

qdev: add return value to init() callbacks.

Sorry folks, but it has to be. One more of these invasive qdev patches.

We have a serious design bug in the qdev interface: device init
callbacks can't signal failure because the init() callback has no
return value. This patch fixes it....

177539e0 08/24/2009 04:46 pm Gerd Hoffmann

virtio-blk: add msi support.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

72c61d0b 08/10/2009 09:11 pm Gerd Hoffmann

qdev/prop: convert virtio-pci.c to helper macros.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>
Message-Id:

d176c495 08/10/2009 09:05 pm Gerd Hoffmann

qdev-ify virtio-blk.

First user of the new drive property. With this patch applied host
and guest config can be specified separately, like this:

-drive if=none,id=disk1,file=/path/to/disk.img
-device virtio-blk-pci,drive=disk1

You can set any property for virtio-blk-pci now. You can set the pci...

85c2c735 07/30/2009 05:50 pm Mark McLoughlin

Remove the virtio-{blk, console}-pci-0-10 device types

These are now unused.

However, perhaps the idea is that when we add -device, they will be
useful? In that case, we should add virtio-net-pci-0-10 too.

Signed-off-by: Mark McLoughlin <>...

ab73ff29 07/17/2009 01:28 am Gerd Hoffmann

qdev/compat: virtio-blk-pci 0.10 compatibility.

Add class property to virtio-blk-pci allowing to specify the PCI class.
Add compat property to pc-0.10 to set the old PCI class.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

d6beee99 07/17/2009 01:28 am Gerd Hoffmann

qdev/compat: virtio-console-pci 0.10 compatibility.

Add class property to virtio-console-pci allowing to specify the PCI class.
Add compat property to pc-0.10 to set the old PCI class.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

a1e0fea5 07/17/2009 01:28 am Gerd Hoffmann

qdev/compat: virtio-net-pci 0.10 compatibility.

Add vectors property, allowing to turn off msi by setting vectors=0.
Add compat property to pc-0.10 disabling msi.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

15239b2e 07/17/2009 01:28 am Gerd Hoffmann

cleanup: drop unused struct elements from VirtIOPCIProxy.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

5c634ef3 07/16/2009 04:28 pm Mark McLoughlin

Change default PCI class of virtio-blk to PCI_CLASS_STORAGE_SCSI

Windows virtio driver cannot pass DTM (certification) tests while the
storage class is PCI_CLASS_STORAGE_UNKNOWN.

A new qdev type is introduced to allow devices using the old class
to be created for compatibility with qemu-0.10.x....

21d58b57 07/16/2009 04:28 pm Mark McLoughlin

Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER

We're using PCI_CLASS_DISPLAY_OTHER now, but qemu-kvm.git is using
PCI_CLASS_OTHERS because:

"As a PCI_CLASS_DISPLAY_OTHER, it reduces primary display somehow on
Windows XP (possibly Windows disables acceleration since it fails...
e6da7680 07/10/2009 09:44 pm Michael S. Tsirkin

qemu/virtio: mark msi vectors used on load

Usage of msi vectors is controlled by the guest and so needs to be
restored on load. Do this for msi vectors used by the virtio device.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

0aab0d3a 07/09/2009 03:07 pm Gerd Hoffmann

qdev: update pci device registration.

Makes pci_qdev_register take a PCIDeviceInfo struct instead of a bunch
of parameters. Also adds config_read and config_write callbacks to
PCIDeviceInfo, so drivers needing these can be converted to the qdev
device API too....

a08d4367 06/29/2009 10:18 pm Jan Kiszka

Revert "Introduce reset notifier order"

This reverts commit 8217606e6edb49591b4a6fd5a0d1229cebe470a9 (and
updates later added users of qemu_register_reset), we solved the
problem it originally addressed less invasively.

Signed-off-by: Jan Kiszka <>...

ff24bd58 06/24/2009 05:09 pm Michael S. Tsirkin

qemu/virtio: virtio save/load bindings

Implement bindings for virtio save/load. Use them in virtio pci.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

7055e687 06/24/2009 05:09 pm Michael S. Tsirkin

qemu/virtio: virtio support for many interrupt vectors

Extend virtio to support many interrupt vectors, and rearrange code in
preparation for multi-vector support (mostly move reset out to bindings,
because we will have to reset the vectors in transport-specific code)....

aba800a3 06/24/2009 05:09 pm Michael S. Tsirkin

qemu/virtio: MSI-X support in virtio PCI

This enables actual support for MSI-X in virtio PCI.
First user will be virtio-net.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

efeea6d0 06/22/2009 06:10 pm Mark McLoughlin

virtio: add support for indirect ring entries

Support a new feature flag for indirect ring entries. These are ring
entries which point to a table of buffer descriptors.

The idea here is to increase the ring capacity by allowing a larger
effective ring size whereby the ring size dictates the number of...

28c2c264 06/16/2009 11:18 pm Avi Kivity

Rename pci_register_io_region() to pci_register_bar()

This function is used to manage a PCI BAR, so make the more generic
pci_register_io_region() available to other uses.

Signed-off-by: Avi Kivity <>
Signed-off-by: Anthony Liguori <>

1ad2134f 05/19/2009 06:17 pm Paul Brook

Hardware convenience library

The only target dependency for most hardware is sizeof(target_phys_addr_t).
Build these files into a convenience library, and use that instead of
building for every target.

Remove and poison various target specific macros to avoid bogus target...

53c25cea 05/18/2009 08:26 pm Paul Brook

Separate virtio PCI code

Split the PCI host bindings from the VRing transport implementation.

Signed-off-by: Paul Brook <>