提交 646a8499 编写于 作者: G Gavin Shan 提交者: Benjamin Herrenschmidt

powerpc/eeh: Introduce global mutex

The patch introduces global mutex for EEH so that the core data
structures can be protected by that. Also, 2 inline functions
are exported for that: eeh_lock() and eeh_unlock().
Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
上级 968f968f
...@@ -146,6 +146,17 @@ struct eeh_ops { ...@@ -146,6 +146,17 @@ struct eeh_ops {
extern struct eeh_ops *eeh_ops; extern struct eeh_ops *eeh_ops;
extern int eeh_subsystem_enabled; extern int eeh_subsystem_enabled;
extern struct mutex eeh_mutex;
static inline void eeh_lock(void)
{
mutex_lock(&eeh_mutex);
}
static inline void eeh_unlock(void)
{
mutex_unlock(&eeh_mutex);
}
/* /*
* Max number of EEH freezes allowed before we consider the device * Max number of EEH freezes allowed before we consider the device
...@@ -206,6 +217,10 @@ static inline void eeh_add_device_tree_early(struct device_node *dn) { } ...@@ -206,6 +217,10 @@ static inline void eeh_add_device_tree_early(struct device_node *dn) { }
static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } static inline void eeh_add_device_tree_late(struct pci_bus *bus) { }
static inline void eeh_remove_bus_device(struct pci_dev *dev) { } static inline void eeh_remove_bus_device(struct pci_dev *dev) { }
static inline void eeh_lock(void) { }
static inline void eeh_unlock(void) { }
#define EEH_POSSIBLE_ERROR(val, type) (0) #define EEH_POSSIBLE_ERROR(val, type) (0)
#define EEH_IO_ERROR_VALUE(size) (-1UL) #define EEH_IO_ERROR_VALUE(size) (-1UL)
#endif /* CONFIG_EEH */ #endif /* CONFIG_EEH */
......
...@@ -92,6 +92,9 @@ struct eeh_ops *eeh_ops = NULL; ...@@ -92,6 +92,9 @@ struct eeh_ops *eeh_ops = NULL;
int eeh_subsystem_enabled; int eeh_subsystem_enabled;
EXPORT_SYMBOL(eeh_subsystem_enabled); EXPORT_SYMBOL(eeh_subsystem_enabled);
/* Global EEH mutex */
DEFINE_MUTEX(eeh_mutex);
/* Lock to avoid races due to multiple reports of an error */ /* Lock to avoid races due to multiple reports of an error */
static DEFINE_RAW_SPINLOCK(confirm_error_lock); static DEFINE_RAW_SPINLOCK(confirm_error_lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册