* [PATCH v7 0/4] VT-d minor fixes
@ 2024-07-09 14:26 CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 1/4] intel_iommu: fix FRCD construction macro CLEMENT MATHIEU--DRIF
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-09 14:26 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com,
CLEMENT MATHIEU--DRIF
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Various fixes for VT-d
This series contains fixes that will be necessary
when adding in-guest (fully emulated) SVM support.
v7
intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
- Edit commit message
v6
intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
- Add 'Fixes' tag
v5
intel_iommu: fix FRCD construction macro:
- Remove empty line after 'Fixes'
intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
- Edit commit message after comment from Yi
intel_iommu: make types match:
- Edit commit message (s/"make types match"/"make type match"/)
v4
- Move declarations of VTD_FRCD_PV and VTD_FRCD_PP
- intel_iommu: make types match:
- edit commit message to explain that we are not fixing a bug
- intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
- edit commit message
v3
FRCD construction macro :
- Longer sha1 for the 'Fixes' tag
- Add '.' at the end of the sentence
Make types match :
- Split into 2 patches (one for the fix and one for type matching)
Remove patch for wait descriptor handling (will be in the PRI series)
v2
Make commit author consistent
Clément Mathieu--Drif (4):
intel_iommu: fix FRCD construction macro
intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations
intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
intel_iommu: make type match
hw/i386/intel_iommu.c | 2 +-
hw/i386/intel_iommu_internal.h | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v7 1/4] intel_iommu: fix FRCD construction macro
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
@ 2024-07-09 14:26 ` CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 2/4] intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations CLEMENT MATHIEU--DRIF
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-09 14:26 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com,
CLEMENT MATHIEU--DRIF, Minwoo Im
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
The constant must be unsigned, otherwise the two's complement
overrides the other fields when a PASID is present.
Fixes: 1b2b12376c8a ("intel-iommu: PASID support")
Signed-off-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Minwoo Im <minwoo.im@samsung.com>
---
hw/i386/intel_iommu_internal.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
index f8cf99bddf..cbc4030031 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -267,7 +267,7 @@
/* For the low 64-bit of 128-bit */
#define VTD_FRCD_FI(val) ((val) & ~0xfffULL)
#define VTD_FRCD_PV(val) (((val) & 0xffffULL) << 40)
-#define VTD_FRCD_PP(val) (((val) & 0x1) << 31)
+#define VTD_FRCD_PP(val) (((val) & 0x1ULL) << 31)
#define VTD_FRCD_IR_IDX(val) (((val) & 0xffffULL) << 48)
/* DMA Remapping Fault Conditions */
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v7 2/4] intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 1/4] intel_iommu: fix FRCD construction macro CLEMENT MATHIEU--DRIF
@ 2024-07-09 14:26 ` CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 4/4] intel_iommu: make type match CLEMENT MATHIEU--DRIF
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-09 14:26 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com,
CLEMENT MATHIEU--DRIF, Minwoo Im
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
These 2 macros are for high 64-bit of the FRCD registers.
Declarations have to be moved accordingly.
Signed-off-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Reviewed-by: Minwoo Im <minwoo.im@samsung.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
---
hw/i386/intel_iommu_internal.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
index cbc4030031..faea23e8d6 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -264,10 +264,10 @@
#define VTD_FRCD_FR(val) (((val) & 0xffULL) << 32)
#define VTD_FRCD_SID_MASK 0xffffULL
#define VTD_FRCD_SID(val) ((val) & VTD_FRCD_SID_MASK)
-/* For the low 64-bit of 128-bit */
-#define VTD_FRCD_FI(val) ((val) & ~0xfffULL)
#define VTD_FRCD_PV(val) (((val) & 0xffffULL) << 40)
#define VTD_FRCD_PP(val) (((val) & 0x1ULL) << 31)
+/* For the low 64-bit of 128-bit */
+#define VTD_FRCD_FI(val) ((val) & ~0xfffULL)
#define VTD_FRCD_IR_IDX(val) (((val) & 0xffffULL) << 48)
/* DMA Remapping Fault Conditions */
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v7 4/4] intel_iommu: make type match
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 1/4] intel_iommu: fix FRCD construction macro CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 2/4] intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations CLEMENT MATHIEU--DRIF
@ 2024-07-09 14:26 ` CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 3/4] intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo CLEMENT MATHIEU--DRIF
2024-07-15 8:48 ` [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
4 siblings, 0 replies; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-09 14:26 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com,
CLEMENT MATHIEU--DRIF
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
The 'level' field in vtd_iotlb_key is an unsigned integer.
We don't need to store level as an int in vtd_lookup_iotlb.
This is not an issue by itself, but using unsigned here seems cleaner.
Signed-off-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
---
hw/i386/intel_iommu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 37c21a0aec..be0cb39b5c 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -358,7 +358,7 @@ static VTDIOTLBEntry *vtd_lookup_iotlb(IntelIOMMUState *s, uint16_t source_id,
{
struct vtd_iotlb_key key;
VTDIOTLBEntry *entry;
- int level;
+ unsigned level;
for (level = VTD_SL_PT_LEVEL; level < VTD_SL_PML4_LEVEL; level++) {
key.gfn = vtd_get_iotlb_gfn(addr, level);
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v7 3/4] intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
` (2 preceding siblings ...)
2024-07-09 14:26 ` [PATCH v7 4/4] intel_iommu: make type match CLEMENT MATHIEU--DRIF
@ 2024-07-09 14:26 ` CLEMENT MATHIEU--DRIF
2024-07-15 8:48 ` [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
4 siblings, 0 replies; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-09 14:26 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com,
CLEMENT MATHIEU--DRIF, Minwoo Im
From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Per the below code, it can overflow as am can be larger than 8 according
to the CH 6.5.2.3 IOTLB Invalidate. Use uint64_t to avoid overflows.
Fixes: b5a280c00840 ("intel-iommu: add IOTLB using hash table")
Signed-off-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
Reviewed-by: Minwoo Im <minwoo.im@samsung.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
---
hw/i386/intel_iommu_internal.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
index faea23e8d6..5f32c36943 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -436,7 +436,7 @@ struct VTDIOTLBPageInvInfo {
uint16_t domain_id;
uint32_t pasid;
uint64_t addr;
- uint8_t mask;
+ uint64_t mask;
};
typedef struct VTDIOTLBPageInvInfo VTDIOTLBPageInvInfo;
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v7 0/4] VT-d minor fixes
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
` (3 preceding siblings ...)
2024-07-09 14:26 ` [PATCH v7 3/4] intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo CLEMENT MATHIEU--DRIF
@ 2024-07-15 8:48 ` CLEMENT MATHIEU--DRIF
2024-07-15 8:51 ` Michael S. Tsirkin
4 siblings, 1 reply; 7+ messages in thread
From: CLEMENT MATHIEU--DRIF @ 2024-07-15 8:48 UTC (permalink / raw)
To: qemu-devel@nongnu.org
Cc: jasowang@redhat.com, zhenzhong.duan@intel.com,
kevin.tian@intel.com, yi.l.liu@intel.com,
joao.m.martins@oracle.com, peterx@redhat.com, mst@redhat.com
Hi Michael, Yi and Jason
Thanks for your feedback on the previous versions.
If you agree with the series, do you think we can move forward?
Thanks!
>cmd
On 09/07/2024 16:26, CLEMENT MATHIEU--DRIF wrote:
> From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
>
> Various fixes for VT-d
>
> This series contains fixes that will be necessary
> when adding in-guest (fully emulated) SVM support.
>
> v7
> intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> - Edit commit message
>
> v6
> intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> - Add 'Fixes' tag
>
> v5
> intel_iommu: fix FRCD construction macro:
> - Remove empty line after 'Fixes'
>
> intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> - Edit commit message after comment from Yi
>
> intel_iommu: make types match:
> - Edit commit message (s/"make types match"/"make type match"/)
>
> v4
> - Move declarations of VTD_FRCD_PV and VTD_FRCD_PP
> - intel_iommu: make types match:
> - edit commit message to explain that we are not fixing a bug
> - intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
> - edit commit message
>
> v3
> FRCD construction macro :
> - Longer sha1 for the 'Fixes' tag
> - Add '.' at the end of the sentence
>
> Make types match :
> - Split into 2 patches (one for the fix and one for type matching)
>
> Remove patch for wait descriptor handling (will be in the PRI series)
>
> v2
> Make commit author consistent
>
>
>
> Clément Mathieu--Drif (4):
> intel_iommu: fix FRCD construction macro
> intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations
> intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
> intel_iommu: make type match
>
> hw/i386/intel_iommu.c | 2 +-
> hw/i386/intel_iommu_internal.h | 6 +++---
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 0/4] VT-d minor fixes
2024-07-15 8:48 ` [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
@ 2024-07-15 8:51 ` Michael S. Tsirkin
0 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2024-07-15 8:51 UTC (permalink / raw)
To: CLEMENT MATHIEU--DRIF
Cc: qemu-devel@nongnu.org, jasowang@redhat.com,
zhenzhong.duan@intel.com, kevin.tian@intel.com,
yi.l.liu@intel.com, joao.m.martins@oracle.com, peterx@redhat.com
On Mon, Jul 15, 2024 at 08:48:52AM +0000, CLEMENT MATHIEU--DRIF wrote:
> Hi Michael, Yi and Jason
>
> Thanks for your feedback on the previous versions.
> If you agree with the series, do you think we can move forward?
Yes, tagged, thanks!
> Thanks!
> >cmd
>
> On 09/07/2024 16:26, CLEMENT MATHIEU--DRIF wrote:
> > From: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com>
> >
> > Various fixes for VT-d
> >
> > This series contains fixes that will be necessary
> > when adding in-guest (fully emulated) SVM support.
> >
> > v7
> > intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> > - Edit commit message
> >
> > v6
> > intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> > - Add 'Fixes' tag
> >
> > v5
> > intel_iommu: fix FRCD construction macro:
> > - Remove empty line after 'Fixes'
> >
> > intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo:
> > - Edit commit message after comment from Yi
> >
> > intel_iommu: make types match:
> > - Edit commit message (s/"make types match"/"make type match"/)
> >
> > v4
> > - Move declarations of VTD_FRCD_PV and VTD_FRCD_PP
> > - intel_iommu: make types match:
> > - edit commit message to explain that we are not fixing a bug
> > - intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
> > - edit commit message
> >
> > v3
> > FRCD construction macro :
> > - Longer sha1 for the 'Fixes' tag
> > - Add '.' at the end of the sentence
> >
> > Make types match :
> > - Split into 2 patches (one for the fix and one for type matching)
> >
> > Remove patch for wait descriptor handling (will be in the PRI series)
> >
> > v2
> > Make commit author consistent
> >
> >
> >
> > Clément Mathieu--Drif (4):
> > intel_iommu: fix FRCD construction macro
> > intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations
> > intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo
> > intel_iommu: make type match
> >
> > hw/i386/intel_iommu.c | 2 +-
> > hw/i386/intel_iommu_internal.h | 6 +++---
> > 2 files changed, 4 insertions(+), 4 deletions(-)
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-07-15 8:52 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-09 14:26 [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 1/4] intel_iommu: fix FRCD construction macro CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 2/4] intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 4/4] intel_iommu: make type match CLEMENT MATHIEU--DRIF
2024-07-09 14:26 ` [PATCH v7 3/4] intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo CLEMENT MATHIEU--DRIF
2024-07-15 8:48 ` [PATCH v7 0/4] VT-d minor fixes CLEMENT MATHIEU--DRIF
2024-07-15 8:51 ` Michael S. Tsirkin
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).