Message ID | 1457939786-52431-1-git-send-email-quan.xu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> 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>
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
>>> 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 --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 { \
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(-)