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 | |
| 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>
| -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"); |
