[PATCH v3 21/22] i386/intel-iommu: Move dma_translation to x86-iommu

Alejandro Jimenez posted 22 patches 1 week, 1 day ago
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Jason Wang <jasowang@redhat.com>, Yi Liu <yi.l.liu@intel.com>, "Clément Mathieu--Drif" <clement.mathieu--drif@eviden.com>, Peter Xu <peterx@redhat.com>, David Hildenbrand <david@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
[PATCH v3 21/22] i386/intel-iommu: Move dma_translation to x86-iommu
Posted by Alejandro Jimenez 1 week, 1 day ago
From: Joao Martins <joao.m.martins@oracle.com>

To be later reused by AMD, now that it shares similar property.

Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
---
 hw/i386/intel_iommu.c       | 5 ++---
 hw/i386/x86-iommu.c         | 1 +
 include/hw/i386/x86-iommu.h | 1 +
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 83c5e444131a3..2b848d094cfb7 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -2701,7 +2701,7 @@ static void vtd_handle_gcmd_write(IntelIOMMUState *s)
     uint32_t changed = status ^ val;
 
     trace_vtd_reg_write_gcmd(status, val);
-    if ((changed & VTD_GCMD_TE) && s->dma_translation) {
+    if ((changed & VTD_GCMD_TE) && x86_iommu->dma_translation) {
         /* Translation enable/disable */
         vtd_handle_gcmd_te(s, val & VTD_GCMD_TE);
     }
@@ -3835,7 +3835,6 @@ static const Property vtd_properties[] = {
     DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),
     DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
     DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true),
-    DEFINE_PROP_BOOL("dma-translation", IntelIOMMUState, dma_translation, true),
     DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false),
     DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true),
 };
@@ -4553,7 +4552,7 @@ static void vtd_cap_init(IntelIOMMUState *s)
     if (s->dma_drain) {
         s->cap |= VTD_CAP_DRAIN;
     }
-    if (s->dma_translation) {
+    if (x86_iommu->dma_translation) {
             if (s->aw_bits >= VTD_HOST_AW_39BIT) {
                     s->cap |= VTD_CAP_SAGAW_39bit;
             }
diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c
index d34a6849f4ae9..c127a44bb4bc8 100644
--- a/hw/i386/x86-iommu.c
+++ b/hw/i386/x86-iommu.c
@@ -130,6 +130,7 @@ static const Property x86_iommu_properties[] = {
                             intr_supported, ON_OFF_AUTO_AUTO),
     DEFINE_PROP_BOOL("device-iotlb", X86IOMMUState, dt_supported, false),
     DEFINE_PROP_BOOL("pt", X86IOMMUState, pt_supported, true),
+    DEFINE_PROP_BOOL("dma-translation", X86IOMMUState, dma_translation, true),
 };
 
 static void x86_iommu_class_init(ObjectClass *klass, const void *data)
diff --git a/include/hw/i386/x86-iommu.h b/include/hw/i386/x86-iommu.h
index bfd21649d0838..e89f55a5c215c 100644
--- a/include/hw/i386/x86-iommu.h
+++ b/include/hw/i386/x86-iommu.h
@@ -64,6 +64,7 @@ struct X86IOMMUState {
     OnOffAuto intr_supported;   /* Whether vIOMMU supports IR */
     bool dt_supported;          /* Whether vIOMMU supports DT */
     bool pt_supported;          /* Whether vIOMMU supports pass-through */
+    bool dma_translation;       /* Whether vIOMMU supports DMA translation */
     QLIST_HEAD(, IEC_Notifier) iec_notifiers; /* IEC notify list */
 };
 
-- 
2.43.5
Re: [PATCH v3 21/22] i386/intel-iommu: Move dma_translation to x86-iommu
Posted by CLEMENT MATHIEU--DRIF 6 days, 9 hours ago
On Fri, 2025-09-19 at 21:35 +0000, Alejandro Jimenez wrote:
> From: Joao Martins <[joao.m.martins@oracle.com](mailto:joao.m.martins@oracle.com)>
> 
> To be later reused by AMD, now that it shares similar property.
> 
> Signed-off-by: Joao Martins <[joao.m.martins@oracle.com](mailto:joao.m.martins@oracle.com)>  
> Signed-off-by: Alejandro Jimenez <[alejandro.j.jimenez@oracle.com](mailto:alejandro.j.jimenez@oracle.com)>  

Hi Alejandro,

Most commits messages for the Intel IOMMU are formatted like "intel_iommu: XYZ".  
We should probably stick to that.

Otherwise, the change looks good to me.

Thanks  
cmd

> ---  
>  hw/i386/intel_iommu.c       | 5 ++---  
>  hw/i386/x86-iommu.c         | 1 +  
>  include/hw/i386/x86-iommu.h | 1 +  
>  3 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c  
> index 83c5e444131a3..2b848d094cfb7 100644  
> --- a/hw/i386/intel_iommu.c  
> +++ b/hw/i386/intel_iommu.c  
> @@ -2701,7 +2701,7 @@ static void vtd_handle_gcmd_write(IntelIOMMUState *s)  
>      uint32_t changed = status ^ val;  
>    
>      trace_vtd_reg_write_gcmd(status, val);  
> -    if ((changed & VTD_GCMD_TE) && s->dma_translation) {  
> +    if ((changed & VTD_GCMD_TE) && x86_iommu->dma_translation) {  
>          /* Translation enable/disable */  
>          vtd_handle_gcmd_te(s, val & VTD_GCMD_TE);  
>      }  
> @@ -3835,7 +3835,6 @@ static const Property vtd_properties[] = {  
>      DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, false),  
>      DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),  
>      DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true),  
> -    DEFINE_PROP_BOOL("dma-translation", IntelIOMMUState, dma_translation, true),  
>      DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false),  
>      DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true),  
>  };  
> @@ -4553,7 +4552,7 @@ static void vtd_cap_init(IntelIOMMUState *s)  
>      if (s->dma_drain) {  
>          s->cap |= VTD_CAP_DRAIN;  
>      }  
> -    if (s->dma_translation) {  
> +    if (x86_iommu->dma_translation) {  
>              if (s->aw_bits >= VTD_HOST_AW_39BIT) {  
>                      s->cap |= VTD_CAP_SAGAW_39bit;  
>              }  
> diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c  
> index d34a6849f4ae9..c127a44bb4bc8 100644  
> --- a/hw/i386/x86-iommu.c  
> +++ b/hw/i386/x86-iommu.c  
> @@ -130,6 +130,7 @@ static const Property x86_iommu_properties[] = {  
>                              intr_supported, ON_OFF_AUTO_AUTO),  
>      DEFINE_PROP_BOOL("device-iotlb", X86IOMMUState, dt_supported, false),  
>      DEFINE_PROP_BOOL("pt", X86IOMMUState, pt_supported, true),  
> +    DEFINE_PROP_BOOL("dma-translation", X86IOMMUState, dma_translation, true),  
>  };  
>    
>  static void x86_iommu_class_init(ObjectClass *klass, const void *data)  
> diff --git a/include/hw/i386/x86-iommu.h b/include/hw/i386/x86-iommu.h  
> index bfd21649d0838..e89f55a5c215c 100644  
> --- a/include/hw/i386/x86-iommu.h  
> +++ b/include/hw/i386/x86-iommu.h  
> @@ -64,6 +64,7 @@ struct X86IOMMUState {  
>      OnOffAuto intr_supported;   /* Whether vIOMMU supports IR */  
>      bool dt_supported;          /* Whether vIOMMU supports DT */  
>      bool pt_supported;          /* Whether vIOMMU supports pass-through */  
> +    bool dma_translation;       /* Whether vIOMMU supports DMA translation */  
>      QLIST_HEAD(, IEC_Notifier) iec_notifiers; /* IEC notify list */  
>  };  
>