All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
@ 2026-08-02 16:05 Clément MATHIEU--DRIF
  2026-08-02 16:47 ` Michael S. Tsirkin
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Clément MATHIEU--DRIF @ 2026-08-02 16:05 UTC (permalink / raw)
  To: qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, yi.l.liu@intel.com,
	baolu.lu@linux.intel.com, Clément MATHIEU--DRIF

SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
current implementation as it is already in line with the expected
behaviour.

Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
---
 hw/i386/intel_iommu.c          | 3 ++-
 hw/i386/intel_iommu_internal.h | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 8245452d89..9f21622a4f 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
     }
 
     if (s->svm) {
-        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
+        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
+                   VTD_ECAP_SMPWCS;
     }
 
     vtd_reset_caches(s);
diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
index 924e91cb8a..df7a0efa6e 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -202,6 +202,7 @@
 #define VTD_ECAP_SMTS               (1ULL << 43)
 #define VTD_ECAP_SSTS               (1ULL << 46)
 #define VTD_ECAP_FSTS               (1ULL << 47)
+#define VTD_ECAP_SMPWCS             (1ULL << 48)
 
 /* CAP_REG */
 /* (offset >> 4) << 24 */
-- 
2.54.0


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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 16:05 [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled Clément MATHIEU--DRIF
@ 2026-08-02 16:47 ` Michael S. Tsirkin
  2026-08-04  8:51   ` Yi Liu
  2026-08-02 18:53 ` Michael S. Tsirkin
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Michael S. Tsirkin @ 2026-08-02 16:47 UTC (permalink / raw)
  To: Clément MATHIEU--DRIF
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, yi.l.liu@intel.com,
	baolu.lu@linux.intel.com

On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
> SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
> current implementation as it is already in line with the expected
> behaviour.
> 
> Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
> ---
>  hw/i386/intel_iommu.c          | 3 ++-
>  hw/i386/intel_iommu_internal.h | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index 8245452d89..9f21622a4f 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>      }
>  
>      if (s->svm) {
> -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> +                   VTD_ECAP_SMPWCS;
>      }
>  
>      vtd_reset_caches(s);
> diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> index 924e91cb8a..df7a0efa6e 100644
> --- a/hw/i386/intel_iommu_internal.h
> +++ b/hw/i386/intel_iommu_internal.h
> @@ -202,6 +202,7 @@
>  #define VTD_ECAP_SMTS               (1ULL << 43)
>  #define VTD_ECAP_SSTS               (1ULL << 46)
>  #define VTD_ECAP_FSTS               (1ULL << 47)
> +#define VTD_ECAP_SMPWCS             (1ULL << 48)
>  
>  /* CAP_REG */
>  /* (offset >> 4) << 24 */

Any cross version migration concerns with this one?


> -- 
> 2.54.0



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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 16:05 [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled Clément MATHIEU--DRIF
  2026-08-02 16:47 ` Michael S. Tsirkin
@ 2026-08-02 18:53 ` Michael S. Tsirkin
  2026-08-03  5:40   ` Clément MATHIEU--DRIF
  2026-08-03  7:26 ` Duan, Zhenzhong
  2026-08-04  8:48 ` Yi Liu
  3 siblings, 1 reply; 12+ messages in thread
From: Michael S. Tsirkin @ 2026-08-02 18:53 UTC (permalink / raw)
  To: Clément MATHIEU--DRIF
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, yi.l.liu@intel.com,
	baolu.lu@linux.intel.com

On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
> SVM in Linux requires SMPWC as of 780dfed68862.

And what is 780dfed68862?

> This is free in the
> current implementation as it is already in line with the expected
> behaviour.
> 
> Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
> ---
>  hw/i386/intel_iommu.c          | 3 ++-
>  hw/i386/intel_iommu_internal.h | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index 8245452d89..9f21622a4f 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>      }
>  
>      if (s->svm) {
> -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> +                   VTD_ECAP_SMPWCS;
>      }
>  
>      vtd_reset_caches(s);
> diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> index 924e91cb8a..df7a0efa6e 100644
> --- a/hw/i386/intel_iommu_internal.h
> +++ b/hw/i386/intel_iommu_internal.h
> @@ -202,6 +202,7 @@
>  #define VTD_ECAP_SMTS               (1ULL << 43)
>  #define VTD_ECAP_SSTS               (1ULL << 46)
>  #define VTD_ECAP_FSTS               (1ULL << 47)
> +#define VTD_ECAP_SMPWCS             (1ULL << 48)
>  
>  /* CAP_REG */
>  /* (offset >> 4) << 24 */
> -- 
> 2.54.0



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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 18:53 ` Michael S. Tsirkin
@ 2026-08-03  5:40   ` Clément MATHIEU--DRIF
  2026-08-03  6:05     ` Michael S. Tsirkin
  0 siblings, 1 reply; 12+ messages in thread
From: Clément MATHIEU--DRIF @ 2026-08-03  5:40 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, yi.l.liu@intel.com,
	baolu.lu@linux.intel.com



On Sun, 2026-08-02 at 14:53 -0400, Michael S. Tsirkin wrote:
> Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
> 
> 
> On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
> 
> > SVM in Linux requires SMPWC as of 780dfed68862.
> 
> 
> And what is 780dfed68862?

A commit in the linux tree, is there a dedicated tag for that?

Maybe "Link: link_to_github"?

> 
> 
> > This is free in the
> > current implementation as it is already in line with the expected
> > behaviour.
> > 
> > Signed-off-by: Clement Mathieu--Drif <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > ---
> >  hw/i386/intel_iommu.c          | 3 ++-
> >  hw/i386/intel_iommu_internal.h | 1 +
> >  2 files changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > index 8245452d89..9f21622a4f 100644
> > --- a/hw/i386/intel_iommu.c
> > +++ b/hw/i386/intel_iommu.c
> > @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
> >      }
> > 
> >      if (s->svm) {
> > -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> > +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> > +                   VTD_ECAP_SMPWCS;
> >      }
> > 
> >      vtd_reset_caches(s);
> > diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> > index 924e91cb8a..df7a0efa6e 100644
> > --- a/hw/i386/intel_iommu_internal.h
> > +++ b/hw/i386/intel_iommu_internal.h
> > @@ -202,6 +202,7 @@
> >  #define VTD_ECAP_SMTS               (1ULL << 43)
> >  #define VTD_ECAP_SSTS               (1ULL << 46)
> >  #define VTD_ECAP_FSTS               (1ULL << 47)
> > +#define VTD_ECAP_SMPWCS             (1ULL << 48)
> > 
> >  /* CAP_REG */
> >  /* (offset >> 4) << 24 */
> > --
> > 2.54.0
> 
> 

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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-03  5:40   ` Clément MATHIEU--DRIF
@ 2026-08-03  6:05     ` Michael S. Tsirkin
  0 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2026-08-03  6:05 UTC (permalink / raw)
  To: Clément MATHIEU--DRIF
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, yi.l.liu@intel.com,
	baolu.lu@linux.intel.com

On Mon, Aug 03, 2026 at 05:40:06AM +0000, Clément MATHIEU--DRIF wrote:
> 
> 
> On Sun, 2026-08-02 at 14:53 -0400, Michael S. Tsirkin wrote:
> > Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
> > 
> > 
> > On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
> > 
> > > SVM in Linux requires SMPWC as of 780dfed68862.
> > 
> > 
> > And what is 780dfed68862?
> 
> A commit in the linux tree, is there a dedicated tag for that?
> 
> Maybe "Link: link_to_github"?

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=780dfed68862


> > 
> > 
> > > This is free in the
> > > current implementation as it is already in line with the expected
> > > behaviour.
> > > 
> > > Signed-off-by: Clement Mathieu--Drif <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > > ---
> > >  hw/i386/intel_iommu.c          | 3 ++-
> > >  hw/i386/intel_iommu_internal.h | 1 +
> > >  2 files changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > > index 8245452d89..9f21622a4f 100644
> > > --- a/hw/i386/intel_iommu.c
> > > +++ b/hw/i386/intel_iommu.c
> > > @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
> > >      }
> > > 
> > >      if (s->svm) {
> > > -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> > > +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> > > +                   VTD_ECAP_SMPWCS;
> > >      }
> > > 
> > >      vtd_reset_caches(s);
> > > diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> > > index 924e91cb8a..df7a0efa6e 100644
> > > --- a/hw/i386/intel_iommu_internal.h
> > > +++ b/hw/i386/intel_iommu_internal.h
> > > @@ -202,6 +202,7 @@
> > >  #define VTD_ECAP_SMTS               (1ULL << 43)
> > >  #define VTD_ECAP_SSTS               (1ULL << 46)
> > >  #define VTD_ECAP_FSTS               (1ULL << 47)
> > > +#define VTD_ECAP_SMPWCS             (1ULL << 48)
> > > 
> > >  /* CAP_REG */
> > >  /* (offset >> 4) << 24 */
> > > --
> > > 2.54.0
> > 
> > 



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

* RE: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 16:05 [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled Clément MATHIEU--DRIF
  2026-08-02 16:47 ` Michael S. Tsirkin
  2026-08-02 18:53 ` Michael S. Tsirkin
@ 2026-08-03  7:26 ` Duan, Zhenzhong
  2026-08-04  8:39   ` Yi Liu
  2026-08-04  8:48 ` Yi Liu
  3 siblings, 1 reply; 12+ messages in thread
From: Duan, Zhenzhong @ 2026-08-03  7:26 UTC (permalink / raw)
  To: Clément MATHIEU--DRIF, qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, Tian, Kevin, Liu, Yi L,
	baolu.lu@linux.intel.com

Hi Clement,

>-----Original Message-----
>From: Clément MATHIEU--DRIF <clement.mathieu--drif@bull.com>
>Subject: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
>
>SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
>current implementation as it is already in line with the expected
>behaviour.

Not an issue in this patch, what about 'C: Page-walk Coherency' ecap bit,
I think we can enable it too? Maybe in another patch?

>
>Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
>---
> hw/i386/intel_iommu.c          | 3 ++-
> hw/i386/intel_iommu_internal.h | 1 +
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
>diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>index 8245452d89..9f21622a4f 100644
>--- a/hw/i386/intel_iommu.c
>+++ b/hw/i386/intel_iommu.c
>@@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>     }
>
>     if (s->svm) {
>-        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
>+        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
>+                   VTD_ECAP_SMPWCS;

I think we need a check for passthrough device to expose SMPWCS, something like below pseudo code:

@@ -37,6 +37,12 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
         return false;
     }

+    if (VTD_ECAP_GET_SMPWCS(s->ecap) && !VTD_ECAP_GET_SMPWCS(vtd->cap_reg)) {
+        error_setg(errp,
+                   " Scalable-Mode Page-walk Coherency is unsupported by host IOMMU");
+        return false;
+    }
+
     if (s->fs1gp && !(vtd->cap_reg & VTD_CAP_FS1GP)) {
         error_setg(errp,
                    "First stage 1GB large page is unsupported by host IOMMU");

>     }
>
>     vtd_reset_caches(s);
>diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
>index 924e91cb8a..df7a0efa6e 100644
>--- a/hw/i386/intel_iommu_internal.h
>+++ b/hw/i386/intel_iommu_internal.h
>@@ -202,6 +202,7 @@
> #define VTD_ECAP_SMTS               (1ULL << 43)
> #define VTD_ECAP_SSTS               (1ULL << 46)
> #define VTD_ECAP_FSTS               (1ULL << 47)
>+#define VTD_ECAP_SMPWCS             (1ULL << 48)
>
> /* CAP_REG */
> /* (offset >> 4) << 24 */
>--
>2.54.0


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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-03  7:26 ` Duan, Zhenzhong
@ 2026-08-04  8:39   ` Yi Liu
  2026-08-04 11:12     ` Clément MATHIEU--DRIF
  0 siblings, 1 reply; 12+ messages in thread
From: Yi Liu @ 2026-08-04  8:39 UTC (permalink / raw)
  To: Duan, Zhenzhong, Clément MATHIEU--DRIF,
	qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, Tian, Kevin, baolu.lu@linux.intel.com

On 8/3/26 15:26, Duan, Zhenzhong wrote:
> Hi Clement,
> 
>> -----Original Message-----
>> From: Clément MATHIEU--DRIF <clement.mathieu--drif@bull.com>
>> Subject: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
>>
>> SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
>> current implementation as it is already in line with the expected
>> behaviour.
> 
> Not an issue in this patch, what about 'C: Page-walk Coherency' ecap bit,
> I think we can enable it too? Maybe in another patch?
> 
>>
>> Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
>> ---
>> hw/i386/intel_iommu.c          | 3 ++-
>> hw/i386/intel_iommu_internal.h | 1 +
>> 2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> index 8245452d89..9f21622a4f 100644
>> --- a/hw/i386/intel_iommu.c
>> +++ b/hw/i386/intel_iommu.c
>> @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>>      }
>>
>>      if (s->svm) {
>> -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
>> +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
>> +                   VTD_ECAP_SMPWCS;
> 
> I think we need a check for passthrough device to expose SMPWCS, something like below pseudo code:

thumb up. yes.  It's strange guest reports SMPWCS while host does not.

> @@ -37,6 +37,12 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
>           return false;
>       }
> 
> +    if (VTD_ECAP_GET_SMPWCS(s->ecap) && !VTD_ECAP_GET_SMPWCS(vtd->cap_reg)) {
> +        error_setg(errp,
> +                   " Scalable-Mode Page-walk Coherency is unsupported by host IOMMU");
> +        return false;
> +    }
> +
>       if (s->fs1gp && !(vtd->cap_reg & VTD_CAP_FS1GP)) {
>           error_setg(errp,
>                      "First stage 1GB large page is unsupported by host IOMMU");
> 
>>      }
>>
>>      vtd_reset_caches(s);
>> diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
>> index 924e91cb8a..df7a0efa6e 100644
>> --- a/hw/i386/intel_iommu_internal.h
>> +++ b/hw/i386/intel_iommu_internal.h
>> @@ -202,6 +202,7 @@
>> #define VTD_ECAP_SMTS               (1ULL << 43)
>> #define VTD_ECAP_SSTS               (1ULL << 46)
>> #define VTD_ECAP_FSTS               (1ULL << 47)
>> +#define VTD_ECAP_SMPWCS             (1ULL << 48)
>>
>> /* CAP_REG */
>> /* (offset >> 4) << 24 */
>> --
>> 2.54.0



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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 16:05 [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled Clément MATHIEU--DRIF
                   ` (2 preceding siblings ...)
  2026-08-03  7:26 ` Duan, Zhenzhong
@ 2026-08-04  8:48 ` Yi Liu
  2026-08-04 11:11   ` Clément MATHIEU--DRIF
  3 siblings, 1 reply; 12+ messages in thread
From: Yi Liu @ 2026-08-04  8:48 UTC (permalink / raw)
  To: Clément MATHIEU--DRIF, qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, baolu.lu@linux.intel.com

On 8/3/26 00:05, Clément MATHIEU--DRIF wrote:
> SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
> current implementation as it is already in line with the expected
> behaviour.
> 
> Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
> ---
>   hw/i386/intel_iommu.c          | 3 ++-
>   hw/i386/intel_iommu_internal.h | 1 +
>   2 files changed, 3 insertions(+), 1 deletion(-)

Is it a fix tag needed?

> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index 8245452d89..9f21622a4f 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>       }
>   
>       if (s->svm) {
> -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> +                   VTD_ECAP_SMPWCS;
>       }
>   
>       vtd_reset_caches(s);
> diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> index 924e91cb8a..df7a0efa6e 100644
> --- a/hw/i386/intel_iommu_internal.h
> +++ b/hw/i386/intel_iommu_internal.h
> @@ -202,6 +202,7 @@
>   #define VTD_ECAP_SMTS               (1ULL << 43)
>   #define VTD_ECAP_SSTS               (1ULL << 46)
>   #define VTD_ECAP_FSTS               (1ULL << 47)
> +#define VTD_ECAP_SMPWCS             (1ULL << 48)
>   
>   /* CAP_REG */
>   /* (offset >> 4) << 24 */



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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-02 16:47 ` Michael S. Tsirkin
@ 2026-08-04  8:51   ` Yi Liu
  2026-08-04 11:09     ` Clément MATHIEU--DRIF
  0 siblings, 1 reply; 12+ messages in thread
From: Yi Liu @ 2026-08-04  8:51 UTC (permalink / raw)
  To: Michael S. Tsirkin, Clément MATHIEU--DRIF
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, baolu.lu@linux.intel.com

On 8/3/26 00:47, Michael S. Tsirkin wrote:
> On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
>> SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
>> current implementation as it is already in line with the expected
>> behaviour.
>>
>> Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@bull.com>
>> ---
>>   hw/i386/intel_iommu.c          | 3 ++-
>>   hw/i386/intel_iommu_internal.h | 1 +
>>   2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> index 8245452d89..9f21622a4f 100644
>> --- a/hw/i386/intel_iommu.c
>> +++ b/hw/i386/intel_iommu.c
>> @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
>>       }
>>   
>>       if (s->svm) {
>> -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
>> +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
>> +                   VTD_ECAP_SMPWCS;
>>       }
>>   
>>       vtd_reset_caches(s);
>> diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
>> index 924e91cb8a..df7a0efa6e 100644
>> --- a/hw/i386/intel_iommu_internal.h
>> +++ b/hw/i386/intel_iommu_internal.h
>> @@ -202,6 +202,7 @@
>>   #define VTD_ECAP_SMTS               (1ULL << 43)
>>   #define VTD_ECAP_SSTS               (1ULL << 46)
>>   #define VTD_ECAP_FSTS               (1ULL << 47)
>> +#define VTD_ECAP_SMPWCS             (1ULL << 48)
>>   
>>   /* CAP_REG */
>>   /* (offset >> 4) << 24 */
> 
> Any cross version migration concerns with this one?

this bit is exposed when the svm flag is set. This flag was introduced
by the below commit and controlled by a 'svm' option. So looks like this
change is ok from the migration perspective?


952e1a6e90eb22a6deffa4e980277b135e9d077f

@@ -4186,6 +4188,7 @@ static const Property vtd_properties[] = {
      DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),
      DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, 
false),
      DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),
+    DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),
      DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true),
      DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false),
      DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true),



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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-04  8:51   ` Yi Liu
@ 2026-08-04 11:09     ` Clément MATHIEU--DRIF
  0 siblings, 0 replies; 12+ messages in thread
From: Clément MATHIEU--DRIF @ 2026-08-04 11:09 UTC (permalink / raw)
  To: Yi Liu, Michael S. Tsirkin
  Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, peterx@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, baolu.lu@linux.intel.com


On Tue, 2026-08-04 at 16:51 +0800, Yi Liu wrote:
> Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
> 
> 
> On 8/3/26 00:47, Michael S. Tsirkin wrote:
> 
> > On Sun, Aug 02, 2026 at 04:05:08PM +0000, Clément MATHIEU--DRIF wrote:
> > 
> > > SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
> > > current implementation as it is already in line with the expected
> > > behaviour.
> > > 
> > > Signed-off-by: Clement Mathieu--Drif <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > > ---
> > >   hw/i386/intel_iommu.c          | 3 ++-
> > >   hw/i386/intel_iommu_internal.h | 1 +
> > >   2 files changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > > index 8245452d89..9f21622a4f 100644
> > > --- a/hw/i386/intel_iommu.c
> > > +++ b/hw/i386/intel_iommu.c
> > > @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
> > >       }
> > > 
> > >       if (s->svm) {
> > > -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> > > +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> > > +                   VTD_ECAP_SMPWCS;
> > >       }
> > > 
> > >       vtd_reset_caches(s);
> > > diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> > > index 924e91cb8a..df7a0efa6e 100644
> > > --- a/hw/i386/intel_iommu_internal.h
> > > +++ b/hw/i386/intel_iommu_internal.h
> > > @@ -202,6 +202,7 @@
> > >   #define VTD_ECAP_SMTS               (1ULL << 43)
> > >   #define VTD_ECAP_SSTS               (1ULL << 46)
> > >   #define VTD_ECAP_FSTS               (1ULL << 47)
> > > +#define VTD_ECAP_SMPWCS             (1ULL << 48)
> > > 
> > >   /* CAP_REG */
> > >   /* (offset >> 4) << 24 */
> > 
> > 
> > Any cross version migration concerns with this one?
> 
> 
> this bit is exposed when the svm flag is set. This flag was introduced  
> by the below commit and controlled by a 'svm' option. So looks like this  
> change is ok from the migration perspective?

I came to the same conclusion.

Thanks

> 
> 
> 952e1a6e90eb22a6deffa4e980277b135e9d077f
> 
> @@ -4186,6 +4188,7 @@ static const Property vtd_properties[] = {  
>       DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE),  
>       DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control,  
> false),  
>       DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false),  
> +    DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false),  
>       DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true),  
>       DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false),  
>       DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true),
> 

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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-04  8:48 ` Yi Liu
@ 2026-08-04 11:11   ` Clément MATHIEU--DRIF
  0 siblings, 0 replies; 12+ messages in thread
From: Clément MATHIEU--DRIF @ 2026-08-04 11:11 UTC (permalink / raw)
  To: Yi Liu, qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, zhenzhong.duan@intel.com,
	kevin.tian@intel.com, baolu.lu@linux.intel.com


On Tue, 2026-08-04 at 16:48 +0800, Yi Liu wrote:
> Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
> 
> 
> On 8/3/26 00:05, Clément MATHIEU--DRIF wrote:
> 
> > SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
> > current implementation as it is already in line with the expected
> > behaviour.
> > 
> > Signed-off-by: Clement Mathieu--Drif <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > ---
> >   hw/i386/intel_iommu.c          | 3 ++-
> >   hw/i386/intel_iommu_internal.h | 1 +
> >   2 files changed, 3 insertions(+), 1 deletion(-)
> 
> 
> Is it a fix tag needed?

Not sure, but we can add one in order to be consistent with the kernel commit.

> 
> 
> > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > index 8245452d89..9f21622a4f 100644
> > --- a/hw/i386/intel_iommu.c
> > +++ b/hw/i386/intel_iommu.c
> > @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
> >       }
> > 
> >       if (s->svm) {
> > -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> > +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> > +                   VTD_ECAP_SMPWCS;
> >       }
> > 
> >       vtd_reset_caches(s);
> > diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> > index 924e91cb8a..df7a0efa6e 100644
> > --- a/hw/i386/intel_iommu_internal.h
> > +++ b/hw/i386/intel_iommu_internal.h
> > @@ -202,6 +202,7 @@
> >   #define VTD_ECAP_SMTS               (1ULL << 43)
> >   #define VTD_ECAP_SSTS               (1ULL << 46)
> >   #define VTD_ECAP_FSTS               (1ULL << 47)
> > +#define VTD_ECAP_SMPWCS             (1ULL << 48)
> > 
> >   /* CAP_REG */
> >   /* (offset >> 4) << 24 */
> 
> 

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

* Re: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
  2026-08-04  8:39   ` Yi Liu
@ 2026-08-04 11:12     ` Clément MATHIEU--DRIF
  0 siblings, 0 replies; 12+ messages in thread
From: Clément MATHIEU--DRIF @ 2026-08-04 11:12 UTC (permalink / raw)
  To: Yi Liu, Duan, Zhenzhong, qemu-devel@nongnu.org
  Cc: pbonzini@redhat.com, peterx@redhat.com, mst@redhat.com,
	jasowangio@gmail.com, Tian, Kevin, baolu.lu@linux.intel.com


On Tue, 2026-08-04 at 16:39 +0800, Yi Liu wrote:
> Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.
> 
> 
> On 8/3/26 15:26, Duan, Zhenzhong wrote:
> 
> > Hi Clement,
> > 
> > 
> > > -----Original Message-----
> > > From: Clément MATHIEU--DRIF <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > > Subject: [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled
> > > 
> > > SVM in Linux requires SMPWC as of 780dfed68862. This is free in the
> > > current implementation as it is already in line with the expected
> > > behaviour.
> > 
> > 
> > Not an issue in this patch, what about 'C: Page-walk Coherency' ecap bit,
> > I think we can enable it too? Maybe in another patch?
> > 
> > 
> > > 
> > > Signed-off-by: Clement Mathieu--Drif <[clement.mathieu--drif@bull.com](mailto:clement.mathieu--drif@bull.com)>
> > > ---
> > > hw/i386/intel_iommu.c          | 3 ++-
> > > hw/i386/intel_iommu_internal.h | 1 +
> > > 2 files changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> > > index 8245452d89..9f21622a4f 100644
> > > --- a/hw/i386/intel_iommu.c
> > > +++ b/hw/i386/intel_iommu.c
> > > @@ -5108,7 +5108,8 @@ static void vtd_init(IntelIOMMUState *s)
> > >      }
> > > 
> > >      if (s->svm) {
> > > -        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS;
> > > +        s->ecap |= VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS |
> > > +                   VTD_ECAP_SMPWCS;
> > 
> > 
> > I think we need a check for passthrough device to expose SMPWCS, something like below pseudo code:
> 
> 
> thumb up. yes.  It's strange guest reports SMPWCS while host does not.

Will do,

thanks

> 
> 
> > @@ -37,6 +37,12 @@ bool vtd_check_hiod_accel(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hiod,
> >           return false;
> >       }
> > 
> > +    if (VTD_ECAP_GET_SMPWCS(s->ecap) && !VTD_ECAP_GET_SMPWCS(vtd->cap_reg)) {
> > +        error_setg(errp,
> > +                   " Scalable-Mode Page-walk Coherency is unsupported by host IOMMU");
> > +        return false;
> > +    }
> > +
> >       if (s->fs1gp && !(vtd->cap_reg & VTD_CAP_FS1GP)) {
> >           error_setg(errp,
> >                      "First stage 1GB large page is unsupported by host IOMMU");
> > 
> > 
> > >      }
> > > 
> > >      vtd_reset_caches(s);
> > > diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
> > > index 924e91cb8a..df7a0efa6e 100644
> > > --- a/hw/i386/intel_iommu_internal.h
> > > +++ b/hw/i386/intel_iommu_internal.h
> > > @@ -202,6 +202,7 @@
> > > #define VTD_ECAP_SMTS               (1ULL << 43)
> > > #define VTD_ECAP_SSTS               (1ULL << 46)
> > > #define VTD_ECAP_FSTS               (1ULL << 47)
> > > +#define VTD_ECAP_SMPWCS             (1ULL << 48)
> > > 
> > > /* CAP_REG */
> > > /* (offset >> 4) << 24 */
> > > --
> > > 2.54.0
> >
> 
> 

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

end of thread, other threads:[~2026-08-04 11:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-02 16:05 [PATCH v1] intel_iommu: Expose SMPWC when SVM is enabled Clément MATHIEU--DRIF
2026-08-02 16:47 ` Michael S. Tsirkin
2026-08-04  8:51   ` Yi Liu
2026-08-04 11:09     ` Clément MATHIEU--DRIF
2026-08-02 18:53 ` Michael S. Tsirkin
2026-08-03  5:40   ` Clément MATHIEU--DRIF
2026-08-03  6:05     ` Michael S. Tsirkin
2026-08-03  7:26 ` Duan, Zhenzhong
2026-08-04  8:39   ` Yi Liu
2026-08-04 11:12     ` Clément MATHIEU--DRIF
2026-08-04  8:48 ` Yi Liu
2026-08-04 11:11   ` Clément MATHIEU--DRIF

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.