qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] virtio-iommu-pci: Advertise the device as modern-only
@ 2020-09-08 19:33 Eric Auger
  2020-09-08 19:33 ` [PATCH v2 1/2] virtio-iommu: Check gtrees are non null before destroying them Eric Auger
  2020-09-08 19:33 ` [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1 Eric Auger
  0 siblings, 2 replies; 6+ messages in thread
From: Eric Auger @ 2020-09-08 19:33 UTC (permalink / raw)
  To: eric.auger.pro, eric.auger, qemu-devel, cohuck, mst, qemu-stable
  Cc: jean-philippe, thuth

Since commit 9b3a35ec82 ("virtio: verify that legacy support is not
accidentally on"), we are forced to use disable-legacy=on when
instantiating the virtio-iommu-pci device. This also revealed that
the unrealize() function is likely to call g_tree_destroy() on
NULL gtrees, which triggers assertions.

Best Regards

Eric

History:
v1 -> v2:
- Fix patch #1 commit message typos
- Add Connie's R-b on both patches

Eric Auger (2):
  virtio-iommu: Check gtrees are non null before destroying them
  virtio-iommu-pci: force virtio version 1

 hw/virtio/virtio-iommu-pci.c | 2 +-
 hw/virtio/virtio-iommu.c     | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

-- 
2.21.3



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] virtio-iommu: Check gtrees are non null before destroying them
  2020-09-08 19:33 [PATCH v2 0/2] virtio-iommu-pci: Advertise the device as modern-only Eric Auger
@ 2020-09-08 19:33 ` Eric Auger
  2020-09-08 19:33 ` [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1 Eric Auger
  1 sibling, 0 replies; 6+ messages in thread
From: Eric Auger @ 2020-09-08 19:33 UTC (permalink / raw)
  To: eric.auger.pro, eric.auger, qemu-devel, cohuck, mst, qemu-stable
  Cc: jean-philippe, thuth

If realize fails, domains and endpoints trees may be NULL. On
unrealize(), this produces assertions:

"GLib: g_tree_destroy: assertion 'tree != NULL' failed"

Check that the trees are non NULL before destroying them.

Cc: qemu-stable@nongnu.org
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>

---
v1 -> v2:
- fix the commit message
- Added Connie's R-b
---
 hw/virtio/virtio-iommu.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
index 5d56865e56..21ec63b108 100644
--- a/hw/virtio/virtio-iommu.c
+++ b/hw/virtio/virtio-iommu.c
@@ -801,8 +801,12 @@ static void virtio_iommu_device_unrealize(DeviceState *dev)
     VirtIOIOMMU *s = VIRTIO_IOMMU(dev);
 
     g_hash_table_destroy(s->as_by_busptr);
-    g_tree_destroy(s->domains);
-    g_tree_destroy(s->endpoints);
+    if (s->domains) {
+        g_tree_destroy(s->domains);
+    }
+    if (s->endpoints) {
+        g_tree_destroy(s->endpoints);
+    }
 
     virtio_delete_queue(s->req_vq);
     virtio_delete_queue(s->event_vq);
-- 
2.21.3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1
  2020-09-08 19:33 [PATCH v2 0/2] virtio-iommu-pci: Advertise the device as modern-only Eric Auger
  2020-09-08 19:33 ` [PATCH v2 1/2] virtio-iommu: Check gtrees are non null before destroying them Eric Auger
@ 2020-09-08 19:33 ` Eric Auger
  2020-09-18  9:29   ` Cornelia Huck
  1 sibling, 1 reply; 6+ messages in thread
From: Eric Auger @ 2020-09-08 19:33 UTC (permalink / raw)
  To: eric.auger.pro, eric.auger, qemu-devel, cohuck, mst, qemu-stable
  Cc: jean-philippe, thuth

Commit 9b3a35ec82 ("virtio: verify that legacy support is not
accidentally on") added a safety check that requires to set
'disable-legacy=on' on virtio-iommu-pci:

qemu-system-aarch64: -device virtio-iommu-pci: device is modern-only,
use disable-legacy=on

virtio-iommu was introduced after the release of VIRTIO 1.0
specifications, so it should be 'modern-only'.

This patch forces virtio version 1 and removes the 'transitional_name'
property removing the need to specify 'disable-legacy=on' on
virtio-iommu-pci device.

Cc: qemu-stable@nongnu.org
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>

---
v1 -> v2:
- Added Connie's R-b
---
 hw/virtio/virtio-iommu-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c
index ba62d60a0a..3b6f7a11c6 100644
--- a/hw/virtio/virtio-iommu-pci.c
+++ b/hw/virtio/virtio-iommu-pci.c
@@ -68,6 +68,7 @@ static void virtio_iommu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
     object_property_set_link(OBJECT(dev), "primary-bus",
                              OBJECT(pci_get_bus(&vpci_dev->pci_dev)),
                              &error_abort);
+    virtio_pci_force_virtio_1(vpci_dev);
     qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
 }
 
@@ -97,7 +98,6 @@ static void virtio_iommu_pci_instance_init(Object *obj)
 static const VirtioPCIDeviceTypeInfo virtio_iommu_pci_info = {
     .base_name             = TYPE_VIRTIO_IOMMU_PCI,
     .generic_name          = "virtio-iommu-pci",
-    .transitional_name     = "virtio-iommu-pci-transitional",
     .non_transitional_name = "virtio-iommu-pci-non-transitional",
     .instance_size = sizeof(VirtIOIOMMUPCI),
     .instance_init = virtio_iommu_pci_instance_init,
-- 
2.21.3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1
  2020-09-08 19:33 ` [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1 Eric Auger
@ 2020-09-18  9:29   ` Cornelia Huck
  2020-09-18 10:24     ` Auger Eric
  0 siblings, 1 reply; 6+ messages in thread
From: Cornelia Huck @ 2020-09-18  9:29 UTC (permalink / raw)
  To: Eric Auger
  Cc: jean-philippe, thuth, mst, qemu-stable, qemu-devel, eric.auger.pro

On Tue,  8 Sep 2020 21:33:09 +0200
Eric Auger <eric.auger@redhat.com> wrote:

> Commit 9b3a35ec82 ("virtio: verify that legacy support is not
> accidentally on") added a safety check that requires to set
> 'disable-legacy=on' on virtio-iommu-pci:
> 
> qemu-system-aarch64: -device virtio-iommu-pci: device is modern-only,
> use disable-legacy=on
> 
> virtio-iommu was introduced after the release of VIRTIO 1.0
> specifications, so it should be 'modern-only'.
> 
> This patch forces virtio version 1 and removes the 'transitional_name'
> property removing the need to specify 'disable-legacy=on' on
> virtio-iommu-pci device.

Not sure whether this patch has been queued already, and how much we
care about migration compatibility for virtio-iommu, but would it make
sense to force modern on 5.1+ compat machines only? (see
https://lore.kernel.org/qemu-devel/20200918074710.27810-1-sgarzare@redhat.com/)

> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
> 
> ---
> v1 -> v2:
> - Added Connie's R-b
> ---
>  hw/virtio/virtio-iommu-pci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c
> index ba62d60a0a..3b6f7a11c6 100644
> --- a/hw/virtio/virtio-iommu-pci.c
> +++ b/hw/virtio/virtio-iommu-pci.c
> @@ -68,6 +68,7 @@ static void virtio_iommu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
>      object_property_set_link(OBJECT(dev), "primary-bus",
>                               OBJECT(pci_get_bus(&vpci_dev->pci_dev)),
>                               &error_abort);
> +    virtio_pci_force_virtio_1(vpci_dev);
>      qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
>  }
>  
> @@ -97,7 +98,6 @@ static void virtio_iommu_pci_instance_init(Object *obj)
>  static const VirtioPCIDeviceTypeInfo virtio_iommu_pci_info = {
>      .base_name             = TYPE_VIRTIO_IOMMU_PCI,
>      .generic_name          = "virtio-iommu-pci",
> -    .transitional_name     = "virtio-iommu-pci-transitional",
>      .non_transitional_name = "virtio-iommu-pci-non-transitional",
>      .instance_size = sizeof(VirtIOIOMMUPCI),
>      .instance_init = virtio_iommu_pci_instance_init,



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1
  2020-09-18  9:29   ` Cornelia Huck
@ 2020-09-18 10:24     ` Auger Eric
  2020-09-18 12:58       ` Cornelia Huck
  0 siblings, 1 reply; 6+ messages in thread
From: Auger Eric @ 2020-09-18 10:24 UTC (permalink / raw)
  To: Cornelia Huck
  Cc: jean-philippe, thuth, mst, qemu-devel, qemu-stable, eric.auger.pro

Hi Connie,

On 9/18/20 11:29 AM, Cornelia Huck wrote:
> On Tue,  8 Sep 2020 21:33:09 +0200
> Eric Auger <eric.auger@redhat.com> wrote:
> 
>> Commit 9b3a35ec82 ("virtio: verify that legacy support is not
>> accidentally on") added a safety check that requires to set
>> 'disable-legacy=on' on virtio-iommu-pci:
>>
>> qemu-system-aarch64: -device virtio-iommu-pci: device is modern-only,
>> use disable-legacy=on
>>
>> virtio-iommu was introduced after the release of VIRTIO 1.0
>> specifications, so it should be 'modern-only'.
>>
>> This patch forces virtio version 1 and removes the 'transitional_name'
>> property removing the need to specify 'disable-legacy=on' on
>> virtio-iommu-pci device.
> 
> Not sure whether this patch has been queued already, and how much we
> care about migration compatibility for virtio-iommu, but would it make
> sense to force modern on 5.1+ compat machines only? (see
> https://lore.kernel.org/qemu-devel/20200918074710.27810-1-sgarzare@redhat.com/)

I don't think it was pulled yet.
> 
>>
>> Cc: qemu-stable@nongnu.org

The virtio-iommu-pci device only is usable on ARM in dt mode so I don't
think it has production users at the moment.

Thanks

Eric
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
>>
>> ---
>> v1 -> v2:
>> - Added Connie's R-b
>> ---
>>  hw/virtio/virtio-iommu-pci.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c
>> index ba62d60a0a..3b6f7a11c6 100644
>> --- a/hw/virtio/virtio-iommu-pci.c
>> +++ b/hw/virtio/virtio-iommu-pci.c
>> @@ -68,6 +68,7 @@ static void virtio_iommu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
>>      object_property_set_link(OBJECT(dev), "primary-bus",
>>                               OBJECT(pci_get_bus(&vpci_dev->pci_dev)),
>>                               &error_abort);
>> +    virtio_pci_force_virtio_1(vpci_dev);
>>      qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
>>  }
>>  
>> @@ -97,7 +98,6 @@ static void virtio_iommu_pci_instance_init(Object *obj)
>>  static const VirtioPCIDeviceTypeInfo virtio_iommu_pci_info = {
>>      .base_name             = TYPE_VIRTIO_IOMMU_PCI,
>>      .generic_name          = "virtio-iommu-pci",
>> -    .transitional_name     = "virtio-iommu-pci-transitional",
>>      .non_transitional_name = "virtio-iommu-pci-non-transitional",
>>      .instance_size = sizeof(VirtIOIOMMUPCI),
>>      .instance_init = virtio_iommu_pci_instance_init,
> 
> 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1
  2020-09-18 10:24     ` Auger Eric
@ 2020-09-18 12:58       ` Cornelia Huck
  0 siblings, 0 replies; 6+ messages in thread
From: Cornelia Huck @ 2020-09-18 12:58 UTC (permalink / raw)
  To: Auger Eric
  Cc: jean-philippe, thuth, mst, qemu-devel, qemu-stable, eric.auger.pro

On Fri, 18 Sep 2020 12:24:02 +0200
Auger Eric <eric.auger@redhat.com> wrote:

> Hi Connie,
> 
> On 9/18/20 11:29 AM, Cornelia Huck wrote:
> > On Tue,  8 Sep 2020 21:33:09 +0200
> > Eric Auger <eric.auger@redhat.com> wrote:
> >   
> >> Commit 9b3a35ec82 ("virtio: verify that legacy support is not
> >> accidentally on") added a safety check that requires to set
> >> 'disable-legacy=on' on virtio-iommu-pci:
> >>
> >> qemu-system-aarch64: -device virtio-iommu-pci: device is modern-only,
> >> use disable-legacy=on
> >>
> >> virtio-iommu was introduced after the release of VIRTIO 1.0
> >> specifications, so it should be 'modern-only'.
> >>
> >> This patch forces virtio version 1 and removes the 'transitional_name'
> >> property removing the need to specify 'disable-legacy=on' on
> >> virtio-iommu-pci device.  
> > 
> > Not sure whether this patch has been queued already, and how much we
> > care about migration compatibility for virtio-iommu, but would it make
> > sense to force modern on 5.1+ compat machines only? (see
> > https://lore.kernel.org/qemu-devel/20200918074710.27810-1-sgarzare@redhat.com/)  
> 
> I don't think it was pulled yet.
> >   
> >>
> >> Cc: qemu-stable@nongnu.org  
> 
> The virtio-iommu-pci device only is usable on ARM in dt mode so I don't
> think it has production users at the moment.

OK, then we can keep this patch here, I guess.



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-09-18 13:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-08 19:33 [PATCH v2 0/2] virtio-iommu-pci: Advertise the device as modern-only Eric Auger
2020-09-08 19:33 ` [PATCH v2 1/2] virtio-iommu: Check gtrees are non null before destroying them Eric Auger
2020-09-08 19:33 ` [PATCH v2 2/2] virtio-iommu-pci: force virtio version 1 Eric Auger
2020-09-18  9:29   ` Cornelia Huck
2020-09-18 10:24     ` Auger Eric
2020-09-18 12:58       ` Cornelia Huck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).