From: Brian King <brking@us.ibm.com>


Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/pci/access.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff -puN drivers/pci/access.c~pci-block-config-access-during-bist-update drivers/pci/access.c
--- devel/drivers/pci/access.c~pci-block-config-access-during-bist-update	2005-09-05 13:07:26.000000000 -0700
+++ devel-akpm/drivers/pci/access.c	2005-09-05 13:07:26.000000000 -0700
@@ -122,12 +122,11 @@ PCI_USER_WRITE_CONFIG(dword, u32)
  **/
 void pci_block_user_cfg_access(struct pci_dev *dev)
 {
-	unsigned long flags;
-
 	pci_save_state(dev);
-	spin_lock_irqsave(&pci_lock, flags);
 	dev->block_ucfg_access = 1;
-	spin_unlock_irqrestore(&pci_lock, flags);
+	mb();
+	while (spin_is_locked(&pci_lock))
+		cpu_relax();
 }
 EXPORT_SYMBOL_GPL(pci_block_user_cfg_access);
 
@@ -139,10 +138,6 @@ EXPORT_SYMBOL_GPL(pci_block_user_cfg_acc
  **/
 void pci_unblock_user_cfg_access(struct pci_dev *dev)
 {
-	unsigned long flags;
-
-	spin_lock_irqsave(&pci_lock, flags);
 	dev->block_ucfg_access = 0;
-	spin_unlock_irqrestore(&pci_lock, flags);
 }
 EXPORT_SYMBOL_GPL(pci_unblock_user_cfg_access);
_