]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kvm tools: allow arch to specify default virtio transport
authorWill Deacon <will.deacon@arm.com>
Mon, 12 Nov 2012 11:57:26 +0000 (11:57 +0000)
committerPekka Enberg <penberg@kernel.org>
Tue, 13 Nov 2012 07:30:12 +0000 (09:30 +0200)
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>
tools/kvm/powerpc/include/kvm/kvm-arch.h
tools/kvm/virtio/9p.c
tools/kvm/virtio/balloon.c
tools/kvm/virtio/blk.c
tools/kvm/virtio/console.c
tools/kvm/virtio/rng.c
tools/kvm/virtio/scsi.c
tools/kvm/x86/include/kvm/kvm-arch.h

index dd8a3070477058786d343774f5c42995044deb70..d93e1429e0ba231a62ff9a9321a0db99f839e494 100644 (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 {
index a372c22b2fa59b301eabf504b13ca897027ee9d2..4665876a8770cd5959a58cc329029af248279cb1 100644 (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;
index e08f628a47878ed2d8e3eaaa530fa5596fceb45f..3965b24d71f8b7a491290293da42ef9a75d23e75 100644 (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");
index 356a2406ba6d770d9b7d78d4dbc9a679a1c715c4..ec57e9624d3d39b92a02afb84598b0ddb4adcae7 100644 (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);
 
index ea5d974eca6c7754b2577724a5d0818296c05890..74b6ffd1147d739180e6dd876264fba979a30968 100644 (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");
 
index e1e4fc0ed03e5dfbb3e74d5547c5efa1eee740da..1a09fdf9e55c3671a7310e654afead3d94800f8c 100644 (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;
 
index 881898b43d64971fb02a11e1dba9a727aeea72e7..7ba76d0cd4d0881b4bff58a2079fbc46ea487355 100644 (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);
 
index 30086f4ccf238b390cb0cc84038a196be493d9b8..2aaedcc88247ef0f8ce89e17ca81e08bf1929bef 100644 (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;