On Tue, Apr 5, 2016 at 11:48 AM, Bogdan Purcareata < [email protected]> wrote:
> Patch contains a more detailed description. Basically allows adding > virtio-mmio > block device to QEMU guests. Tested on ARM64. > > Please apply on jethro branch. > We don't want to create functionality on old branches that isn't also on master. Is there any reason why this wouldn't be applicable to master as well ? Bruce > > Signed-off-by: Bogdan Purcareata <[email protected]> > --- > ...io-mmio-disks-in-qemuAssignDevicePCISlots.patch | 81 > ++++++++++++++++++++++ > recipes-extended/libvirt/libvirt_1.2.19.bb | 1 + > 2 files changed, 82 insertions(+) > create mode 100644 > recipes-extended/libvirt/libvirt/Ignore-virtio-mmio-disks-in-qemuAssignDevicePCISlots.patch > > diff --git > a/recipes-extended/libvirt/libvirt/Ignore-virtio-mmio-disks-in-qemuAssignDevicePCISlots.patch > b/recipes-extended/libvirt/libvirt/Ignore-virtio-mmio-disks-in-qemuAssignDevicePCISlots.patch > new file mode 100644 > index 0000000..f0b7ab5 > --- /dev/null > +++ > b/recipes-extended/libvirt/libvirt/Ignore-virtio-mmio-disks-in-qemuAssignDevicePCISlots.patch > @@ -0,0 +1,81 @@ > +From d526e37bad2515cf91caa0e4ff3edaf41e45b5c2 Mon Sep 17 00:00:00 2001 > +From: Pavel Fedin <[email protected]> > +Date: Wed, 9 Sep 2015 15:02:53 +0300 > +Subject: [PATCH] Ignore virtio-mmio disks in qemuAssignDevicePCISlots() > + > +Fixes the following error when attempting to add a disk with bus='virtio' > +to a machine which actually supports virtio-mmio (caught with ARM virt): > + > +virtio disk cannot have an address of type 'virtio-mmio' > + > +The problem has been likely introduced by > +e8d55172544c1fafe31a9e09346bdebca4f0d6f9. Before that > +qemuAssignDevicePCISlots() was never called for ARM "virt" machine. > + > +Upstream-status: Accepted > +[ > https://libvirt.org/git/?p=libvirt.git;a=commit;h=d526e37bad2515cf91caa0e4ff3edaf41e45b5c2 > ] > + > +Signed-off-by: Pavel Fedin <[email protected]> > +--- > + src/qemu/qemu_command.c | 11 +++++++++-- > + src/qemu/qemu_command.h | 1 + > + 2 files changed, 10 insertions(+), 2 deletions(-) > + > +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > +index b56670c..25f57f2 100644 > +--- a/src/qemu/qemu_command.c > ++++ b/src/qemu/qemu_command.c > +@@ -2261,7 +2261,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, > + virDomainPCIAddressReserveNextSlot(addrs, &info, flags) > < 0) > + goto cleanup; > + > +- if (qemuAssignDevicePCISlots(def, addrs) < 0) > ++ if (qemuAssignDevicePCISlots(def, qemuCaps, addrs) < 0) > + goto cleanup; > + > + for (i = 1; i < addrs->nbuses; i++) { > +@@ -2294,7 +2294,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, > + if (qemuValidateDevicePCISlotsChipsets(def, qemuCaps, addrs) > < 0) > + goto cleanup; > + > +- if (qemuAssignDevicePCISlots(def, addrs) < 0) > ++ if (qemuAssignDevicePCISlots(def, qemuCaps, addrs) < 0) > + goto cleanup; > + > + for (i = 0; i < def->ncontrollers; i++) { > +@@ -2426,6 +2426,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, > + */ > + int > + qemuAssignDevicePCISlots(virDomainDefPtr def, > ++ virQEMUCapsPtr qemuCaps, > + virDomainPCIAddressSetPtr addrs) > + { > + size_t i, j; > +@@ -2618,6 +2619,12 @@ qemuAssignDevicePCISlots(virDomainDefPtr def, > + VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) > + continue; > + > ++ /* Also ignore virtio-mmio disks if our machine allows them */ > ++ if (def->disks[i]->info.type == > ++ VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO && > ++ virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MMIO)) > ++ continue; > ++ > + if (def->disks[i]->info.type != > VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("virtio disk cannot have an address of type > '%s'"), > +diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h > +index 767d31f..4aa7f2d 100644 > +--- a/src/qemu/qemu_command.h > ++++ b/src/qemu/qemu_command.h > +@@ -284,6 +284,7 @@ virDomainPCIAddressSetPtr > qemuDomainPCIAddressSetCreate(virDomainDefPtr def, > + bool dryRun); > + > + int qemuAssignDevicePCISlots(virDomainDefPtr def, > ++ virQEMUCapsPtr qemuCaps, > + virDomainPCIAddressSetPtr addrs); > + > + int qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr > qemuCaps); > +-- > +1.9.1 > + > diff --git a/recipes-extended/libvirt/libvirt_1.2.19.bb > b/recipes-extended/libvirt/libvirt_1.2.19.bb > index df53d59..774eea4 100644 > --- a/recipes-extended/libvirt/libvirt_1.2.19.bb > +++ b/recipes-extended/libvirt/libvirt_1.2.19.bb > @@ -33,6 +33,7 @@ SRC_URI = " > http://libvirt.org/sources/libvirt-${PV}.tar.gz;name=libvirt \ > file://libvirt-use-pkg-config-to-locate-libcap.patch \ > file://0001-to-fix-build-error.patch \ > file://Revert-build-add-prefix-to-SYSTEMD_UNIT_DIR.patch \ > + > file://Ignore-virtio-mmio-disks-in-qemuAssignDevicePCISlots.patch \ > " > > SRC_URI[libvirt.md5sum] = "bc3ab1ba5b6fabd2e4516c70ddd4d97c" > -- > 1.9.1 > > -- > _______________________________________________ > meta-virtualization mailing list > [email protected] > https://lists.yoctoproject.org/listinfo/meta-virtualization > -- "Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end"
-- _______________________________________________ meta-virtualization mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-virtualization
