kvm tools: ARM: allow default virtio transport to be passed on cmdline

This patch changes VIRTIO_DEFAULT_TRANS to take a struct kvm parameter,
allowing architectures to choose the default transport dynamically.

For ARM, this is driven by an arch-specific cmdline option.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Will Deacon
2014-02-04 16:54:05 +00:00
parent 6606883c7d
commit d97dadecbd
10 changed files with 18 additions and 13 deletions
+2 -1
View File
@@ -32,7 +32,8 @@
#define KVM_IRQ_OFFSET GIC_SPI_IRQ_BASE
#define VIRTIO_DEFAULT_TRANS VIRTIO_MMIO
#define VIRTIO_DEFAULT_TRANS(kvm) \
((kvm)->cfg.arch.virtio_trans_pci ? VIRTIO_PCI : VIRTIO_MMIO)
static inline bool arm_addr_in_ioport_region(u64 phys_addr)
{
+8 -4
View File
@@ -4,9 +4,10 @@
#include "kvm/parse-options.h"
struct kvm_config_arch {
const char *dump_dtb_filename;
unsigned int force_cntfrq;
bool aarch32_guest;
const char *dump_dtb_filename;
unsigned int force_cntfrq;
bool virtio_trans_pci;
bool aarch32_guest;
};
#define OPT_ARCH_RUN(pfx, cfg) \
@@ -17,6 +18,9 @@ struct kvm_config_arch {
OPT_UINTEGER('\0', "override-bad-firmware-cntfrq", &(cfg)->force_cntfrq,\
"Specify Generic Timer frequency in guest DT to " \
"work around buggy secure firmware *Firmware should be " \
"updated to program CNTFRQ correctly*"),
"updated to program CNTFRQ correctly*"), \
OPT_BOOLEAN('\0', "force-pci", &(cfg)->virtio_trans_pci, \
"Force virtio devices to use PCI as their default " \
"transport"),
#endif /* ARM_COMMON__KVM_CONFIG_ARCH_H */
+1 -1
View File
@@ -44,7 +44,7 @@
#define KVM_IRQ_OFFSET 16
#define VIRTIO_DEFAULT_TRANS VIRTIO_PCI
#define VIRTIO_DEFAULT_TRANS(kvm) VIRTIO_PCI
struct spapr_phb;
+1 -1
View File
@@ -1392,7 +1392,7 @@ 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_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_9P,
VIRTIO_DEFAULT_TRANS(kvm), PCI_DEVICE_ID_VIRTIO_9P,
VIRTIO_ID_9P, PCI_CLASS_9P);
}
+1 -1
View File
@@ -262,7 +262,7 @@ 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_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_BLN,
VIRTIO_DEFAULT_TRANS(kvm), PCI_DEVICE_ID_VIRTIO_BLN,
VIRTIO_ID_BALLOON, PCI_CLASS_BLN);
if (compat_id == -1)
+1 -1
View File
@@ -260,7 +260,7 @@ static int virtio_blk__init_one(struct kvm *kvm, struct disk_image *disk)
};
virtio_init(kvm, bdev, &bdev->vdev, &blk_dev_virtio_ops,
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_BLK,
VIRTIO_DEFAULT_TRANS(kvm), PCI_DEVICE_ID_VIRTIO_BLK,
VIRTIO_ID_BLOCK, PCI_CLASS_BLK);
list_add_tail(&bdev->list, &bdevs);
+1 -1
View File
@@ -210,7 +210,7 @@ int virtio_console__init(struct kvm *kvm)
pthread_cond_init(&cdev.poll_cond, NULL);
virtio_init(kvm, &cdev, &cdev.vdev, &con_dev_virtio_ops,
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_CONSOLE,
VIRTIO_DEFAULT_TRANS(kvm), 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");
+1 -1
View File
@@ -171,7 +171,7 @@ int virtio_rng__init(struct kvm *kvm)
}
r = virtio_init(kvm, rdev, &rdev->vdev, &rng_dev_virtio_ops,
VIRTIO_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_RNG,
VIRTIO_DEFAULT_TRANS(kvm), PCI_DEVICE_ID_VIRTIO_RNG,
VIRTIO_ID_RNG, PCI_CLASS_RNG);
if (r < 0)
goto cleanup;
+1 -1
View File
@@ -252,7 +252,7 @@ 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_DEFAULT_TRANS, PCI_DEVICE_ID_VIRTIO_SCSI,
VIRTIO_DEFAULT_TRANS(kvm), PCI_DEVICE_ID_VIRTIO_SCSI,
VIRTIO_ID_SCSI, PCI_CLASS_BLK);
list_add_tail(&sdev->list, &sdevs);
+1 -1
View File
@@ -27,7 +27,7 @@
#define KVM_IRQ_OFFSET 5
#define VIRTIO_DEFAULT_TRANS VIRTIO_PCI
#define VIRTIO_DEFAULT_TRANS(kvm) VIRTIO_PCI
struct kvm_arch {
u16 boot_selector;