kvm tools: allow arch to specify default virtio transport

Some architectures may provide only a restricted PCI implementation and
therefore prefer MMIO as the transport for virtio devices.

This patch allows the arch backend to specify the default virtio
transport. Some devices (e.g. net) allow the transport to be overriden
by the user and are left alone by this change.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Will Deacon
2012-11-12 11:57:26 +00:00
parent 7aba29c1f8
commit ae06ce7165
8 changed files with 16 additions and 6 deletions
+2
View File
@@ -40,6 +40,8 @@
#define KVM_PCI_MMIO_AREA 0x1000000
#define KVM_VIRTIO_MMIO_AREA 0x2000000
#define VIRTIO_DEFAULT_TRANS VIRTIO_PCI
struct spapr_phb;
struct kvm_arch {
+2 -1
View File
@@ -1390,7 +1390,8 @@ int virtio_9p__init(struct kvm *kvm)
list_for_each_entry(p9dev, &devs, list) {
virtio_init(kvm, p9dev, &p9dev->vdev, &p9_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_9P, VIRTIO_ID_9P, PCI_CLASS_9P);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_9P,
VIRTIO_ID_9P, PCI_CLASS_9P);
}
return 0;
+2 -1
View File
@@ -254,7 +254,8 @@ int virtio_bln__init(struct kvm *kvm)
memset(&bdev.config, 0, sizeof(struct virtio_balloon_config));
virtio_init(kvm, &bdev, &bdev.vdev, &bln_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_BLN, VIRTIO_ID_BALLOON, PCI_CLASS_BLN);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_BLN,
VIRTIO_ID_BALLOON, PCI_CLASS_BLN);
if (compat_id == -1)
compat_id = virtio_compat_add_message("virtio-balloon", "CONFIG_VIRTIO_BALLOON");
+2 -1
View File
@@ -259,7 +259,8 @@ static int virtio_blk__init_one(struct kvm *kvm, struct disk_image *disk)
};
virtio_init(kvm, bdev, &bdev->vdev, &blk_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_BLK, VIRTIO_ID_BLOCK, PCI_CLASS_BLK);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_BLK,
VIRTIO_ID_BLOCK, PCI_CLASS_BLK);
list_add_tail(&bdev->list, &bdevs);
+2 -1
View File
@@ -195,7 +195,8 @@ int virtio_console__init(struct kvm *kvm)
return 0;
virtio_init(kvm, &cdev, &cdev.vdev, &con_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_CONSOLE, VIRTIO_ID_CONSOLE, PCI_CLASS_CONSOLE);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_CONSOLE,
VIRTIO_ID_CONSOLE, PCI_CLASS_CONSOLE);
if (compat_id == -1)
compat_id = virtio_compat_add_message("virtio-console", "CONFIG_VIRTIO_CONSOLE");
+2 -1
View File
@@ -168,7 +168,8 @@ int virtio_rng__init(struct kvm *kvm)
}
r = virtio_init(kvm, rdev, &rdev->vdev, &rng_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_RNG, VIRTIO_ID_RNG, PCI_CLASS_RNG);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_RNG,
VIRTIO_ID_RNG, PCI_CLASS_RNG);
if (r < 0)
goto cleanup;
+2 -1
View File
@@ -251,7 +251,8 @@ static int virtio_scsi_init_one(struct kvm *kvm, struct disk_image *disk)
sdev->target.vhost_tpgt = strtol(disk->tpgt, NULL, 0);
virtio_init(kvm, sdev, &sdev->vdev, &scsi_dev_virtio_ops,
VIRTIO_PCI, PCI_DEVICE_ID_VIRTIO_SCSI, VIRTIO_ID_SCSI, PCI_CLASS_BLK);
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_SCSI,
VIRTIO_ID_SCSI, PCI_CLASS_BLK);
list_add_tail(&sdev->list, &sdevs);
+2
View File
@@ -23,6 +23,8 @@
#define KVM_PCI_MMIO_AREA (KVM_MMIO_START + 0x1000000)
#define KVM_VIRTIO_MMIO_AREA (KVM_MMIO_START + 0x2000000)
#define VIRTIO_DEFAULT_TRANS VIRTIO_PCI
struct kvm_arch {
u16 boot_selector;
u16 boot_ip;