[libvirt] [PATCH 2/4] qemu: Add PCI support for RISC-V guests

Andrea Bolognani posted 4 patches 7 years ago
[libvirt] [PATCH 2/4] qemu: Add PCI support for RISC-V guests
Posted by Andrea Bolognani 7 years ago
virtio-mmio is still used by default, so if PCI is desired
it's necessary to explicitly opt-in by adding an appropriate

  <address type='pci' domain='0x0000' ... />

element to the corresponding device.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/qemu/qemu_capabilities.c   | 4 +++-
 src/qemu/qemu_domain.c         | 2 ++
 src/qemu/qemu_domain_address.c | 3 ++-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index f504db7d05..6fe8693170 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1741,8 +1741,10 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps,
     /* If ARM 'virt' supports PCI, it supports multibus.
      * No extra conditions here for simplicity.
      */
-    if (qemuDomainIsARMVirt(def))
+    if (qemuDomainIsARMVirt(def) ||
+        qemuDomainIsRISCVVirt(def)) {
         return true;
+    }
 
     return false;
 }
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 5bfe4fe14e..0b8e6fa011 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3380,6 +3380,8 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
     case VIR_ARCH_RISCV32:
     case VIR_ARCH_RISCV64:
         addDefaultUSB = false;
+        if (qemuDomainIsRISCVVirt(def))
+            addPCIeRoot = virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX);
         break;
 
     case VIR_ARCH_S390:
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
index c376f3f897..c35ecd8585 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -2369,7 +2369,8 @@ qemuDomainSupportsPCI(virDomainDefPtr def,
     if (STREQ(def->os.machine, "versatilepb"))
         return true;
 
-    if (qemuDomainIsARMVirt(def) &&
+    if ((qemuDomainIsARMVirt(def) ||
+         qemuDomainIsRISCVVirt(def)) &&
         virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX))
         return true;
 
-- 
2.20.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 2/4] qemu: Add PCI support for RISC-V guests
Posted by Ján Tomko 7 years ago
On Thu, Jan 31, 2019 at 03:34:19PM +0100, Andrea Bolognani wrote:
>virtio-mmio is still used by default, so if PCI is desired
>it's necessary to explicitly opt-in by adding an appropriate
>
>  <address type='pci' domain='0x0000' ... />
>
>element to the corresponding device.
>
>Signed-off-by: Andrea Bolognani <abologna@redhat.com>
>---
> src/qemu/qemu_capabilities.c   | 4 +++-
> src/qemu/qemu_domain.c         | 2 ++
> src/qemu/qemu_domain_address.c | 3 ++-
> 3 files changed, 7 insertions(+), 2 deletions(-)
>
>diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
>index f504db7d05..6fe8693170 100644
>--- a/src/qemu/qemu_capabilities.c
>+++ b/src/qemu/qemu_capabilities.c
>@@ -1741,8 +1741,10 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps,
>     /* If ARM 'virt' supports PCI, it supports multibus.
>      * No extra conditions here for simplicity.
>      */
>-    if (qemuDomainIsARMVirt(def))
>+    if (qemuDomainIsARMVirt(def) ||
>+        qemuDomainIsRISCVVirt(def)) {
>         return true;
>+    }

The comment above only mentions arm. Either decouple the conditions or
remove the comment. For simplicity.

>
>     return false;
> }

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 2/4] qemu: Add PCI support for RISC-V guests
Posted by Andrea Bolognani 7 years ago
On Thu, 2019-01-31 at 17:31 +0100, Ján Tomko wrote:
> On Thu, Jan 31, 2019 at 03:34:19PM +0100, Andrea Bolognani wrote:
> >     /* If ARM 'virt' supports PCI, it supports multibus.
> >      * No extra conditions here for simplicity.
> >      */
> > -    if (qemuDomainIsARMVirt(def))
> > +    if (qemuDomainIsARMVirt(def) ||
> > +        qemuDomainIsRISCVVirt(def)) {
> >         return true;
> > +    }
> 
> The comment above only mentions arm. Either decouple the conditions or
> remove the comment. For simplicity.

Good catch, I'll take care of it.

-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list