diff mbox series

[7/7] virtio-iommu: Revert transient enablement of IOMMU MR in bypass mode

Message ID 20240626082727.1278530-8-eric.auger@redhat.com
State New
Headers show
Series VIRTIO-IOMMU/HostIOMMUDevice: Fixes and page size mask rework | expand

Commit Message

Eric Auger June 26, 2024, 8:26 a.m. UTC
In 94df5b2180d6 ("virtio-iommu: Fix 64kB host page size VFIO device
assignment"), in case of bypass mode, we transiently enabled the
IOMMU MR to allow the set_page_size_mask() to be called and pass
information about the page size mask constraint of cold plugged
VFIO devices. Now we do not use the IOMMU MR callback anymore, we
can just get rid of this hack.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
 hw/virtio/virtio-iommu.c | 12 ------------
 1 file changed, 12 deletions(-)

Comments

Cédric Le Goater June 26, 2024, 5:10 p.m. UTC | #1
On 6/26/24 10:26 AM, Eric Auger wrote:
> In 94df5b2180d6 ("virtio-iommu: Fix 64kB host page size VFIO device
> assignment"), in case of bypass mode, we transiently enabled the
> IOMMU MR to allow the set_page_size_mask() to be called and pass
> information about the page size mask constraint of cold plugged
> VFIO devices. Now we do not use the IOMMU MR callback anymore, we
> can just get rid of this hack.
> 
> Signed-off-by: Eric Auger <eric.auger@redhat.com>


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.


> ---
>   hw/virtio/virtio-iommu.c | 12 ------------
>   1 file changed, 12 deletions(-)
> 
> diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
> index b24e10de81..f87359b3e7 100644
> --- a/hw/virtio/virtio-iommu.c
> +++ b/hw/virtio/virtio-iommu.c
> @@ -1385,18 +1385,6 @@ static void virtio_iommu_freeze_granule(Notifier *notifier, void *data)
>       VirtIOIOMMU *s = container_of(notifier, VirtIOIOMMU, machine_done);
>       int granule;
>   
> -    if (likely(s->config.bypass)) {
> -        /*
> -         * Transient IOMMU MR enable to collect page_size_mask requirements
> -         * through memory_region_iommu_set_page_size_mask() called by
> -         * VFIO region_add() callback
> -         */
> -         s->config.bypass = false;
> -         virtio_iommu_switch_address_space_all(s);
> -         /* restore default */
> -         s->config.bypass = true;
> -         virtio_iommu_switch_address_space_all(s);
> -    }
>       s->granule_frozen = true;
>       granule = ctz64(s->config.page_size_mask);
>       trace_virtio_iommu_freeze_granule(BIT_ULL(granule));
diff mbox series

Patch

diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
index b24e10de81..f87359b3e7 100644
--- a/hw/virtio/virtio-iommu.c
+++ b/hw/virtio/virtio-iommu.c
@@ -1385,18 +1385,6 @@  static void virtio_iommu_freeze_granule(Notifier *notifier, void *data)
     VirtIOIOMMU *s = container_of(notifier, VirtIOIOMMU, machine_done);
     int granule;
 
-    if (likely(s->config.bypass)) {
-        /*
-         * Transient IOMMU MR enable to collect page_size_mask requirements
-         * through memory_region_iommu_set_page_size_mask() called by
-         * VFIO region_add() callback
-         */
-         s->config.bypass = false;
-         virtio_iommu_switch_address_space_all(s);
-         /* restore default */
-         s->config.bypass = true;
-         virtio_iommu_switch_address_space_all(s);
-    }
     s->granule_frozen = true;
     granule = ctz64(s->config.page_size_mask);
     trace_virtio_iommu_freeze_granule(BIT_ULL(granule));