History

Revert "iommu/vt-d: Fix possible recursive locking in intel_iommu_init()"

This reverts commit 9cd4f1434479f1ac25c440c421fbf52069079914. Some issues were reported on the original commit. Some thunderbolt devices don't work anymore due to the following DMA fault. DMAR: DRHD: handling fault status reg 2 DMAR: [INTR-REMAP] Request device [09:00.0] fault index 0x8080 [fault reason 0x25] Blocked a compatibility format interrupt request Bring it back for now to avoid functional regression.

Lu Baolu committed 4 years ago

Commit 7ebb5f81 parent 521a5473 files · +26 −12Browse files

Showing the changes to include (1 of 3 files). Show all

Unified · Split

include/linux/dmar.h+1−3
@@ -65,7 +65,6 @@ struct dmar_pci_notify_info { · 64 unmodified lines
65 65
66extern struct rw_semaphore dmar_global_lock;66extern struct rw_semaphore dmar_global_lock;
67extern struct list_head dmar_drhd_units;67extern struct list_head dmar_drhd_units;
68extern int intel_iommu_enabled;
69 68
70#define for_each_drhd_unit(drhd) \69#define for_each_drhd_unit(drhd) \
71 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \70 list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
@@ -89,8 +88,7 @@ extern int intel_iommu_enabled; · 17 unmodified lines
89static inline bool dmar_rcu_check(void)88static inline bool dmar_rcu_check(void)
90{89{
91 return rwsem_is_locked(&dmar_global_lock) ||90 return rwsem_is_locked(&dmar_global_lock) ||
92 system_state == SYSTEM_BOOTING ||91 system_state == SYSTEM_BOOTING;
93 (IS_ENABLED(CONFIG_INTEL_IOMMU) && !intel_iommu_enabled);
94}92}
95 93
96#define dmar_rcu_dereference(p) rcu_dereference_check((p), dmar_rcu_check())94#define dmar_rcu_dereference(p) rcu_dereference_check((p), dmar_rcu_check())