|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] VT-d: qinval indexes are only up to 19 bits wide
commit 1b5d913fa0b3e4b9a8bba10c1db83082193bcc7a
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Apr 13 10:16:06 2021 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Apr 13 10:16:06 2021 +0200
VT-d: qinval indexes are only up to 19 bits wide
There's no need for 64-bit accesses to these registers (outside of
initial setup and dumping).
Also remove some stray blanks.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
---
xen/drivers/passthrough/vtd/qinval.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/xen/drivers/passthrough/vtd/qinval.c
b/xen/drivers/passthrough/vtd/qinval.c
index 6100e778f3..c0ea19d4bd 100644
--- a/xen/drivers/passthrough/vtd/qinval.c
+++ b/xen/drivers/passthrough/vtd/qinval.c
@@ -42,14 +42,13 @@ static void print_qi_regs(const struct vtd_iommu *iommu)
static unsigned int qinval_next_index(struct vtd_iommu *iommu)
{
- u64 tail;
+ unsigned int tail = dmar_readl(iommu->reg, DMAR_IQT_REG);
- tail = dmar_readq(iommu->reg, DMAR_IQT_REG);
tail >>= QINVAL_INDEX_SHIFT;
/* (tail+1 == head) indicates a full queue, wait for HW */
- while ( ( tail + 1 ) % QINVAL_ENTRY_NR ==
- ( dmar_readq(iommu->reg, DMAR_IQH_REG) >> QINVAL_INDEX_SHIFT ) )
+ while ( (tail + 1) % QINVAL_ENTRY_NR ==
+ (dmar_readl(iommu->reg, DMAR_IQH_REG) >> QINVAL_INDEX_SHIFT) )
cpu_relax();
return tail;
@@ -57,12 +56,12 @@ static unsigned int qinval_next_index(struct vtd_iommu
*iommu)
static void qinval_update_qtail(struct vtd_iommu *iommu, unsigned int index)
{
- u64 val;
+ unsigned int val;
/* Need hold register lock when update tail */
ASSERT( spin_is_locked(&iommu->register_lock) );
val = (index + 1) % QINVAL_ENTRY_NR;
- dmar_writeq(iommu->reg, DMAR_IQT_REG, (val << QINVAL_INDEX_SHIFT));
+ dmar_writel(iommu->reg, DMAR_IQT_REG, val << QINVAL_INDEX_SHIFT);
}
static int __must_check queue_invalidate_context_sync(struct vtd_iommu *iommu,
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |