[libvirt] [PATCH v5 2/4] qemu: Add PCI-Express root to ARM virt machine

Martin Kletzander mkletzan at redhat.com
Thu Aug 6 17:46:58 UTC 2015


On Thu, Aug 06, 2015 at 06:37:41PM +0200, Martin Kletzander wrote:
>On Fri, Jul 17, 2015 at 02:27:45PM +0300, Pavel Fedin wrote:
>>Here we assume that if qemu supports generic PCI host controller,
>>it is a part of virt machine and can be used for adding PCI devices.
>>
>>In qemu this is actually a PCIe bus, so we also declare multibus
>>capability so that 0'th bus is specified to qemu correctly as 'pcie.0'
>>
>>Signed-off-by: Pavel Fedin <p.fedin at samsung.com>
>>---
>>src/qemu/qemu_capabilities.c |  8 ++++++++
>>src/qemu/qemu_domain.c       | 17 +++++++++++++----
>>2 files changed, 21 insertions(+), 4 deletions(-)
>>
>>diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
>>index d570fdd..f3486c7 100644
>>--- a/src/qemu/qemu_capabilities.c
>>+++ b/src/qemu/qemu_capabilities.c
>>@@ -2138,6 +2138,14 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps,
>>        return false;
>>    }
>>
>>+    if (ARCH_IS_ARM(def->os.arch)) {
>>+        /* If 'virt' supports PCI, it supports multibus.
>>+         * No extra conditions here for simplicity.
>>+         */
>
>So every ARM qemu with the "virt" machine type supports both PCI and
>multiqueue?  How about those "virt-*" for which you check below.  That
>might not be related, I'm just curious.
>
>>+        if (STREQ(def->os.machine, "virt"))
>>+            return true;
>>+    }
>>+
>>    return false;
>>}
>>
>>diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>>index 8b050a0..c7d14e4 100644
>>--- a/src/qemu/qemu_domain.c
>>+++ b/src/qemu/qemu_domain.c
>>@@ -981,7 +981,7 @@ virDomainXMLNamespace virQEMUDriverDomainXMLNamespace = {
>>static int
>>qemuDomainDefPostParse(virDomainDefPtr def,
>>                       virCapsPtr caps,
>>-                       void *opaque ATTRIBUTE_UNUSED)
>>+                       void *opaque)
>>{
>>    bool addDefaultUSB = true;
>>    bool addImplicitSATA = false;
>>@@ -1030,12 +1030,21 @@ qemuDomainDefPostParse(virDomainDefPtr def,
>>        break;
>>
>>    case VIR_ARCH_ARMV7L:
>>-       addDefaultUSB = false;
>>-       addDefaultMemballoon = false;
>>-       break;
>>    case VIR_ARCH_AARCH64:
>>       addDefaultUSB = false;
>>       addDefaultMemballoon = false;
>>+       if (STREQ(def->os.machine, "virt") ||
>>+           STRPREFIX(def->os.machine, "virt-")) {
>>+           virQEMUDriverPtr driver = opaque;
>>+
>>+           /* This condition is actually a (temporary) hack for test suite which
>>+            * does not create capabilities cache */
>
>Few questions here.  a) how "temporary" is this since you're not
>removing it in this series?  b) for what tests you need this hack and
>what part of the below is the hack?
>
>Moreover, you cannot use capabilities when defining an XML.  The
>emulator can change between the domain is defined and started, so you
>cannot know with what emulator this will be started.
>
>I see Michal (Cc'd) just pushed this, I probably just missed the mail

Of course I forgot, Cc'ing now.

>from him.  Anyway, I don't think this is how this should be handled.
>I know this is bit of a chicken-and-egg problem due to the fact that
>we generate addresses during definitions.  But I think we could figure
>something out instead of this hack.
>
>>+           if (driver->qemuCapsCache) {
>>+               virQEMUCapsPtr qemuCaps =
>>+                   virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator);
>>+               addPCIeRoot = virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX);
>>+           }
>>+       }
>>       break;
>>
>>    case VIR_ARCH_PPC64:
>>--
>>1.9.5.msysgit.0
>>
>>--
>>libvir-list mailing list
>>libvir-list at redhat.com
>>https://www.redhat.com/mailman/listinfo/libvir-list



>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150806/6d4393d1/attachment-0001.sig>


More information about the libvir-list mailing list