This patch set makes the pcidevs_lock a recursive one. It is a prereq patch set for Patch:'VT-d Device-TLB flush issue', as the pcidevs_lock may be recursively held for hiding the ATS device, when IOMMU Device-TLB flush timed out.
In detail: 1. Fix a bug found in AMD IOMMU initialization. Doing what we do serves as a fix for a bug found in AMD IOMMU initialization. The current code is using spin_lock{_irqsave(), _irqrestore()} to protect pci_get_dev() in the set_iommu_interrupt_handler(). However, this can only be called during AMD IOMMU initialization, with interrupt enabled, so at least it is not necessary to disable interrupts, or save/restore interrupt flag. In order to fix this, we can use just plain spin{_lock(),_unlock()}, instead of spin_lock{_irqsave(),_irqrestore()}. 2. Make the pcidevs_lock a recursive one. CC: Keir Fraser <k...@xen.org> CC: Jan Beulich <jbeul...@suse.com> CC: Andrew Cooper <andrew.coop...@citrix.com> CC: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> CC: Aravind Gopalakrishnan <aravind.gopalakrish...@amd.com> CC: Feng Wu <feng...@intel.com> CC: Kevin Tian <kevin.t...@intel.com> CC: Dario Faggioli <dario.faggi...@citrix.com> Quan Xu (2): IOMMU/spinlock: Fix a bug found in AMD IOMMU initialization. IOMMU/spinlock: Make the pcidevs_lock a recursive one xen/arch/x86/domctl.c | 8 +-- xen/arch/x86/hvm/vmsi.c | 4 +- xen/arch/x86/irq.c | 8 +-- xen/arch/x86/msi.c | 16 ++--- xen/arch/x86/pci.c | 4 +- xen/arch/x86/physdev.c | 16 ++--- xen/common/sysctl.c | 4 +- xen/drivers/passthrough/amd/iommu_init.c | 9 ++- xen/drivers/passthrough/amd/iommu_map.c | 2 +- xen/drivers/passthrough/amd/pci_amd_iommu.c | 4 +- xen/drivers/passthrough/pci.c | 96 +++++++++++++++++------------ xen/drivers/passthrough/vtd/iommu.c | 14 ++--- xen/drivers/video/vga.c | 4 +- xen/include/xen/pci.h | 5 +- 14 files changed, 108 insertions(+), 86 deletions(-) -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel