All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/5] VT-d Device-TLB flush issue
@ 2016-03-02 14:31 Quan Xu
  2016-03-02 14:31 ` [PATCH v6 1/5] IOMMU/MMU: Adjust top level functions for VT-d Device-TLB flush error Quan Xu
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: Quan Xu @ 2016-03-02 14:31 UTC (permalink / raw)
  To: jbeulich, kevin.tian
  Cc: feng.wu, ian.campbell, george.dunlap, andrew.cooper3,
	dario.faggioli, tim, xen-devel, stefano.stabellini,
	Aravind.Gopalakrishnan, jun.nakajima, jinsong.liu, Quan Xu, keir,
	suravee.suthikulpanit

This patches fix current timeout concern and also allow limited ATS support:

1. Check VT-d Device-TLB flush error.
   This patch set checks all kinds of error and all the way up the call trees of VT-d Device-TLB flush.

2. Make the pcidevs_lock a recursive one.

3. Reduce spin timeout to 1ms, which can be boot-time changed with 'vtd_qi_timeout'.
   For example:
           multiboot /boot/xen.gz ats=1 vtd_qi_timeout=100

4. Fix vt-d Device-TLB flush timeout issue.
   If Device-TLB flush is timeout, we'll hide the target ATS device and crash the domain owning this ATS device.
   If impacted domain is hardware domain, just throw out a warning.
   The hidden device will be disallowed to be further assigned to  any domain.

----

 * DMAR_OPERATION_TIMEOUT should be also chopped down to a low number of milliseconds.
   As Kevin Tian mentioned in 'Revisit VT-d asynchronous flush issue', We also confirmed with hardware team
   that 1ms is large enough for IOMMU internal flush. So I can change DMAR_OPERATION_TIMEOUT from 1000 ms to 1 ms.

   IOMMU_WAIT_OP() is only for VT-d registers read/write, and there is also a panic. We need a further discussion
   whether or how to remove this panic in next patch set.

 * The coming patch set will fix IOTLB/Context/IETC flush timeout.

--Changes in v6:

#patch 1/2
   * Make a reasonable attempt at splitting things, adjusting top level functions first and then
     working your way down to leaf ones.
   * Remove some pointless initializers.
   * Log error and don't return error value for hardware_domain init and crashed system shutdown.
   * when to populate iommu page table for domu, try to tear down the iommu page table for iommu
     iotlb flush error.
   * when the flush_iotlb_qi() return value is positive, All we need is
     -call iommu_flush_write_buffer() only when rc > 0
     -return zero from this function when rc is positive, or rc = 0 after call iommu_flush_write_buffer().
   * Fix v4 unaddressed issue:
     http://lists.xenproject.org/archives/html/xen-devel/2016-01/msg01555.html


#patch 3
   * A new patch, make the pcidevs_lock a recursive one (Remove v4 pcidevs_lock related patches).

#patch 4
   * Add an entry in docs/misc/xen-command-line.markdown _alphabetically_.
   * Add a __must_check annotation on the function queue_invalidate_wait().

#patch 5
   * Add Stray blanks inside the parentheses.
   * Don't iterate over pdev-s without holding that lock, and hold pcidevs_lock for pdev-s list.
   * Print SBDF in canonical ssss:bb:dd.f form.
   * Handle 'ret'/'rc' variables in the same function, and remove the pointless rc.

Quan Xu (5):
  IOMMU/MMU: Adjust top level functions for VT-d Device-TLB flush error
  IOMMU/MMU: Adjust low level functions for VT-d Device-TLB flush error
  IOMMU: Make the pcidevs_lock a recursive one
  VT-d: Reduce spin timeout to 1ms, which can be boot-time changed
  VT-d: Fix vt-d Device-TLB flush timeout issue

 docs/misc/xen-command-line.markdown           |   7 ++
 xen/arch/x86/acpi/power.c                     |  14 ++-
 xen/arch/x86/domctl.c                         |   8 +-
 xen/arch/x86/hvm/vmsi.c                       |   4 +-
 xen/arch/x86/irq.c                            |   8 +-
 xen/arch/x86/mm.c                             |  13 ++-
 xen/arch/x86/mm/p2m-ept.c                     |  12 ++-
 xen/arch/x86/mm/p2m-pt.c                      |  12 ++-
 xen/arch/x86/msi.c                            |  16 +--
 xen/arch/x86/pci.c                            |   4 +-
 xen/arch/x86/physdev.c                        |  16 +--
 xen/common/grant_table.c                      |   5 +-
 xen/common/memory.c                           |   5 +-
 xen/common/sysctl.c                           |   4 +-
 xen/drivers/passthrough/amd/iommu_init.c      |  21 ++--
 xen/drivers/passthrough/amd/iommu_map.c       |   2 +-
 xen/drivers/passthrough/amd/pci_amd_iommu.c   |   6 +-
 xen/drivers/passthrough/arm/smmu.c            |  10 +-
 xen/drivers/passthrough/iommu.c               |  25 +++--
 xen/drivers/passthrough/pci.c                 |  99 ++++++++++---------
 xen/drivers/passthrough/vtd/extern.h          |   4 +-
 xen/drivers/passthrough/vtd/iommu.c           | 134 +++++++++++++++++---------
 xen/drivers/passthrough/vtd/qinval.c          |  80 +++++++++++++--
 xen/drivers/passthrough/vtd/quirks.c          |  26 +++--
 xen/drivers/passthrough/vtd/x86/ats.c         |  12 +++
 xen/drivers/passthrough/vtd/x86/vtd.c         |   7 +-
 xen/drivers/passthrough/x86/iommu.c           |   6 +-
 xen/drivers/video/vga.c                       |   4 +-
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h |   2 +-
 xen/include/asm-x86/iommu.h                   |   2 +-
 xen/include/xen/iommu.h                       |  12 +--
 xen/include/xen/pci.h                         |   5 +-
 32 files changed, 399 insertions(+), 186 deletions(-)

-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

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

end of thread, other threads:[~2016-03-07 11:55 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-02 14:31 [PATCH v6 0/5] VT-d Device-TLB flush issue Quan Xu
2016-03-02 14:31 ` [PATCH v6 1/5] IOMMU/MMU: Adjust top level functions for VT-d Device-TLB flush error Quan Xu
2016-03-02 14:31 ` [PATCH v6 2/5] IOMMU/MMU: Adjust low " Quan Xu
2016-03-02 14:31 ` [PATCH v6 3/5] IOMMU: Make the pcidevs_lock a recursive one Quan Xu
2016-03-03 23:59   ` Dario Faggioli
2016-03-04  2:45     ` Xu, Quan
2016-03-04  9:29       ` Jan Beulich
2016-03-04 11:54         ` Xu, Quan
2016-03-04 13:59           ` Dario Faggioli
2016-03-04 14:09             ` Jan Beulich
2016-03-07  7:05             ` Xu, Quan
2016-03-07 11:14               ` Jan Beulich
2016-03-07 11:23                 ` Xu, Quan
2016-03-07 11:36                   ` Jan Beulich
2016-03-07 11:42                     ` Xu, Quan
2016-03-07 11:49                       ` Jan Beulich
2016-03-07 11:55                         ` Xu, Quan
2016-03-02 14:31 ` [PATCH v6 4/5] VT-d: Reduce spin timeout to 1ms, which can be boot-time changed Quan Xu
2016-03-04  0:11   ` Dario Faggioli
2016-03-04  9:32     ` Jan Beulich
2016-03-02 14:31 ` [PATCH v6 5/5] VT-d: Fix vt-d Device-TLB flush timeout issue Quan Xu

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.