mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
powerpc: Convert confirm_error_lock to raw_spinlock
confirm_error_lock needs to be a real spinlock in RT. Convert it to raw_spinlock. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
a9e8bf21cd
commit
3d37262828
@ -100,7 +100,7 @@ int eeh_subsystem_enabled;
|
|||||||
EXPORT_SYMBOL(eeh_subsystem_enabled);
|
EXPORT_SYMBOL(eeh_subsystem_enabled);
|
||||||
|
|
||||||
/* Lock to avoid races due to multiple reports of an error */
|
/* Lock to avoid races due to multiple reports of an error */
|
||||||
static DEFINE_SPINLOCK(confirm_error_lock);
|
static DEFINE_RAW_SPINLOCK(confirm_error_lock);
|
||||||
|
|
||||||
/* Buffer for reporting slot-error-detail rtas calls. Its here
|
/* Buffer for reporting slot-error-detail rtas calls. Its here
|
||||||
* in BSS, and not dynamically alloced, so that it ends up in
|
* in BSS, and not dynamically alloced, so that it ends up in
|
||||||
@ -436,7 +436,7 @@ static void __eeh_clear_slot(struct device_node *parent, int mode_flag)
|
|||||||
void eeh_clear_slot (struct device_node *dn, int mode_flag)
|
void eeh_clear_slot (struct device_node *dn, int mode_flag)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
spin_lock_irqsave(&confirm_error_lock, flags);
|
raw_spin_lock_irqsave(&confirm_error_lock, flags);
|
||||||
|
|
||||||
dn = find_device_pe (dn);
|
dn = find_device_pe (dn);
|
||||||
|
|
||||||
@ -447,7 +447,7 @@ void eeh_clear_slot (struct device_node *dn, int mode_flag)
|
|||||||
PCI_DN(dn)->eeh_mode &= ~mode_flag;
|
PCI_DN(dn)->eeh_mode &= ~mode_flag;
|
||||||
PCI_DN(dn)->eeh_check_count = 0;
|
PCI_DN(dn)->eeh_check_count = 0;
|
||||||
__eeh_clear_slot(dn, mode_flag);
|
__eeh_clear_slot(dn, mode_flag);
|
||||||
spin_unlock_irqrestore(&confirm_error_lock, flags);
|
raw_spin_unlock_irqrestore(&confirm_error_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -506,7 +506,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev)
|
|||||||
* in one slot might report errors simultaneously, and we
|
* in one slot might report errors simultaneously, and we
|
||||||
* only want one error recovery routine running.
|
* only want one error recovery routine running.
|
||||||
*/
|
*/
|
||||||
spin_lock_irqsave(&confirm_error_lock, flags);
|
raw_spin_lock_irqsave(&confirm_error_lock, flags);
|
||||||
rc = 1;
|
rc = 1;
|
||||||
if (pdn->eeh_mode & EEH_MODE_ISOLATED) {
|
if (pdn->eeh_mode & EEH_MODE_ISOLATED) {
|
||||||
pdn->eeh_check_count ++;
|
pdn->eeh_check_count ++;
|
||||||
@ -575,7 +575,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev)
|
|||||||
* with other functions on this device, and functions under
|
* with other functions on this device, and functions under
|
||||||
* bridges. */
|
* bridges. */
|
||||||
eeh_mark_slot (dn, EEH_MODE_ISOLATED);
|
eeh_mark_slot (dn, EEH_MODE_ISOLATED);
|
||||||
spin_unlock_irqrestore(&confirm_error_lock, flags);
|
raw_spin_unlock_irqrestore(&confirm_error_lock, flags);
|
||||||
|
|
||||||
eeh_send_failure_event (dn, dev);
|
eeh_send_failure_event (dn, dev);
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
dn_unlock:
|
dn_unlock:
|
||||||
spin_unlock_irqrestore(&confirm_error_lock, flags);
|
raw_spin_unlock_irqrestore(&confirm_error_lock, flags);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1064,7 +1064,7 @@ void __init eeh_init(void)
|
|||||||
struct device_node *phb, *np;
|
struct device_node *phb, *np;
|
||||||
struct eeh_early_enable_info info;
|
struct eeh_early_enable_info info;
|
||||||
|
|
||||||
spin_lock_init(&confirm_error_lock);
|
raw_spin_lock_init(&confirm_error_lock);
|
||||||
spin_lock_init(&slot_errbuf_lock);
|
spin_lock_init(&slot_errbuf_lock);
|
||||||
|
|
||||||
np = of_find_node_by_path("/rtas");
|
np = of_find_node_by_path("/rtas");
|
||||||
|
Loading…
Reference in New Issue
Block a user