diff mbox

VT-d: Chop down the DMAR_OPERATION_TIMEOUT to a low number of milliseconds.

Message ID 1457939786-52431-1-git-send-email-quan.xu@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Quan Xu March 14, 2016, 7:16 a.m. UTC
We confirmed with VT-d hardware team that 1ms is large enough for IOMMU
internal flush. So We can change the DMAR_OPERATION_TIMEOUT from 1000 ms
to 1 ms.

Signed-off-by: Quan Xu <quan.xu@intel.com>

CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Feng Wu <feng.wu@intel.com>
CC: Kevin Tian <kevin.tian@intel.com>
---
 xen/drivers/passthrough/vtd/dmar.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Tian, Kevin March 15, 2016, 4:37 a.m. UTC | #1
> From: Xu, Quan
> Sent: Monday, March 14, 2016 3:16 PM
> 
> We confirmed with VT-d hardware team that 1ms is large enough for IOMMU
> internal flush. So We can change the DMAR_OPERATION_TIMEOUT from 1000 ms
> to 1 ms.
> 
> Signed-off-by: Quan Xu <quan.xu@intel.com>
> 

Acked-by: Kevin Tian <kevin.tian@intel.com>
Quan Xu March 15, 2016, 5:03 a.m. UTC | #2
On March 15, 2016 12:38pm, Tian, Kevin <kevin.tian@intel.com> wrote:
> > From: Xu, Quan
> > Sent: Monday, March 14, 2016 3:16 PM
> >
> > We confirmed with VT-d hardware team that 1ms is large enough for
> > IOMMU internal flush. So We can change the DMAR_OPERATION_TIMEOUT
> from
> > 1000 ms to 1 ms.
> >
> > Signed-off-by: Quan Xu <quan.xu@intel.com>
> >
> 
> Acked-by: Kevin Tian <kevin.tian@intel.com>

Kevin, thanks!!
Quan
Jan Beulich March 15, 2016, 9:14 a.m. UTC | #3
>>> On 14.03.16 at 08:16, <quan.xu@intel.com> wrote:
> We confirmed with VT-d hardware team that 1ms is large enough for IOMMU
> internal flush. So We can change the DMAR_OPERATION_TIMEOUT from 1000 ms
> to 1 ms.

First of all the description mentions just one of the two uses of
this constant. And then I'm hesitant to commit this as long as the
panic()-s are still there when that timeout expires - reducing the
timeout (the more this significantly) will raise the (theoretical)
chance of actually invoking one of them. Hence the proper order
in which I would like to see things happen is for this to be reduced
only after having
- eliminated the panic()-s
- decoupled the device IOTLB invalidation from this path (after
  all right now flush_iotlb_qi() uses invalidate_sync() for both,
  and hence the shortened timeout now pretty certainly is too
  short for the device IOTLB case)

Temporarily it may be sufficient to just eliminate the panic()-s,
provided the timeout value would then be made dependent on
ats_enabled.

Jan
diff mbox

Patch

diff --git a/xen/drivers/passthrough/vtd/dmar.h b/xen/drivers/passthrough/vtd/dmar.h
index 729b603..4b14368 100644
--- a/xen/drivers/passthrough/vtd/dmar.h
+++ b/xen/drivers/passthrough/vtd/dmar.h
@@ -106,7 +106,7 @@  struct acpi_atsr_unit *acpi_find_matched_atsr_unit(const struct pci_dev *);
 #define RMRR_TYPE 2
 #define ATSR_TYPE 3
 
-#define DMAR_OPERATION_TIMEOUT MILLISECS(1000)
+#define DMAR_OPERATION_TIMEOUT MILLISECS(1)
 
 #define IOMMU_WAIT_OP(iommu, offset, op, cond, sts) \
 do {                                                \