diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-02-17 21:23:07 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-18 22:52:31 -0500 |
commit | 3d3726282850761938078cd2013435eeeb2d0375 (patch) | |
tree | 4d92cd971950cf86b66903d92415debf2757d142 /arch/powerpc | |
parent | a9e8bf21cd0f5a5a8ebe63fa356a8f100b8a0955 (diff) |
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>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c index 3304f32fc7b8..7df7fbb7cacb 100644 --- a/arch/powerpc/platforms/pseries/eeh.c +++ b/arch/powerpc/platforms/pseries/eeh.c | |||
@@ -100,7 +100,7 @@ int eeh_subsystem_enabled; | |||
100 | EXPORT_SYMBOL(eeh_subsystem_enabled); | 100 | EXPORT_SYMBOL(eeh_subsystem_enabled); |
101 | 101 | ||
102 | /* Lock to avoid races due to multiple reports of an error */ | 102 | /* Lock to avoid races due to multiple reports of an error */ |
103 | static DEFINE_SPINLOCK(confirm_error_lock); | 103 | static DEFINE_RAW_SPINLOCK(confirm_error_lock); |
104 | 104 | ||
105 | /* Buffer for reporting slot-error-detail rtas calls. Its here | 105 | /* Buffer for reporting slot-error-detail rtas calls. Its here |
106 | * in BSS, and not dynamically alloced, so that it ends up in | 106 | * 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) | |||
436 | void eeh_clear_slot (struct device_node *dn, int mode_flag) | 436 | void eeh_clear_slot (struct device_node *dn, int mode_flag) |
437 | { | 437 | { |
438 | unsigned long flags; | 438 | unsigned long flags; |
439 | spin_lock_irqsave(&confirm_error_lock, flags); | 439 | raw_spin_lock_irqsave(&confirm_error_lock, flags); |
440 | 440 | ||
441 | dn = find_device_pe (dn); | 441 | dn = find_device_pe (dn); |
442 | 442 | ||
@@ -447,7 +447,7 @@ void eeh_clear_slot (struct device_node *dn, int mode_flag) | |||
447 | PCI_DN(dn)->eeh_mode &= ~mode_flag; | 447 | PCI_DN(dn)->eeh_mode &= ~mode_flag; |
448 | PCI_DN(dn)->eeh_check_count = 0; | 448 | PCI_DN(dn)->eeh_check_count = 0; |
449 | __eeh_clear_slot(dn, mode_flag); | 449 | __eeh_clear_slot(dn, mode_flag); |
450 | spin_unlock_irqrestore(&confirm_error_lock, flags); | 450 | raw_spin_unlock_irqrestore(&confirm_error_lock, flags); |
451 | } | 451 | } |
452 | 452 | ||
453 | /** | 453 | /** |
@@ -506,7 +506,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev) | |||
506 | * in one slot might report errors simultaneously, and we | 506 | * in one slot might report errors simultaneously, and we |
507 | * only want one error recovery routine running. | 507 | * only want one error recovery routine running. |
508 | */ | 508 | */ |
509 | spin_lock_irqsave(&confirm_error_lock, flags); | 509 | raw_spin_lock_irqsave(&confirm_error_lock, flags); |
510 | rc = 1; | 510 | rc = 1; |
511 | if (pdn->eeh_mode & EEH_MODE_ISOLATED) { | 511 | if (pdn->eeh_mode & EEH_MODE_ISOLATED) { |
512 | pdn->eeh_check_count ++; | 512 | pdn->eeh_check_count ++; |
@@ -575,7 +575,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev) | |||
575 | * with other functions on this device, and functions under | 575 | * with other functions on this device, and functions under |
576 | * bridges. */ | 576 | * bridges. */ |
577 | eeh_mark_slot (dn, EEH_MODE_ISOLATED); | 577 | eeh_mark_slot (dn, EEH_MODE_ISOLATED); |
578 | spin_unlock_irqrestore(&confirm_error_lock, flags); | 578 | raw_spin_unlock_irqrestore(&confirm_error_lock, flags); |
579 | 579 | ||
580 | eeh_send_failure_event (dn, dev); | 580 | eeh_send_failure_event (dn, dev); |
581 | 581 | ||
@@ -586,7 +586,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev) | |||
586 | return 1; | 586 | return 1; |
587 | 587 | ||
588 | dn_unlock: | 588 | dn_unlock: |
589 | spin_unlock_irqrestore(&confirm_error_lock, flags); | 589 | raw_spin_unlock_irqrestore(&confirm_error_lock, flags); |
590 | return rc; | 590 | return rc; |
591 | } | 591 | } |
592 | 592 | ||
@@ -1064,7 +1064,7 @@ void __init eeh_init(void) | |||
1064 | struct device_node *phb, *np; | 1064 | struct device_node *phb, *np; |
1065 | struct eeh_early_enable_info info; | 1065 | struct eeh_early_enable_info info; |
1066 | 1066 | ||
1067 | spin_lock_init(&confirm_error_lock); | 1067 | raw_spin_lock_init(&confirm_error_lock); |
1068 | spin_lock_init(&slot_errbuf_lock); | 1068 | spin_lock_init(&slot_errbuf_lock); |
1069 | 1069 | ||
1070 | np = of_find_node_by_path("/rtas"); | 1070 | np = of_find_node_by_path("/rtas"); |