Messages in this thread Patch in this message | | | From | James Nelson <> | Subject | [RESEND] [PATCH 7/7] ppc: remove cli()/sti() in arch/ppc/syslib/qspan_pci.c | Date | Sat, 8 Jan 2005 11:04:42 -0600 |
| |
Replace save_flags()/resore_flags() with spin_lock_irqsave()/spin_unlock_irqrestore() and document reasons for locking.
Signed-off-by: James Nelson <james4765@gmail.com>
diff -urN --exclude='*~' linux-2.6.10-mm1-original/arch/ppc/syslib/qspan_pci.c linux-2.6.10-mm1/arch/ppc/syslib/qspan_pci.c --- linux-2.6.10-mm1-original/arch/ppc/syslib/qspan_pci.c 2004-12-24 16:34:26.000000000 -0500 +++ linux-2.6.10-mm1/arch/ppc/syslib/qspan_pci.c 2005-01-07 19:47:51.355219639 -0500 @@ -94,6 +94,8 @@ #define mk_config_type1(bus, dev, offset) \ mk_config_addr(bus, dev, offset) | 1; +static spinlock_t pcibios_lock = SPIN_LOCK_UNLOCKED; + int qspan_pcibios_read_config_byte(unsigned char bus, unsigned char dev_fn, unsigned char offset, unsigned char *val) { @@ -109,8 +111,8 @@ } #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -124,7 +126,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif offset ^= 0x03; @@ -148,8 +150,8 @@ } #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -164,7 +166,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif sp = ((ushort *)&temp) + ((offset >> 1) & 1); @@ -185,8 +187,8 @@ } #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -200,7 +202,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif return PCIBIOS_SUCCESSFUL; @@ -225,8 +227,8 @@ *cp = val; #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -240,7 +242,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif return PCIBIOS_SUCCESSFUL; @@ -265,8 +267,8 @@ *sp = val; #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -280,7 +282,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif return PCIBIOS_SUCCESSFUL; @@ -297,8 +299,8 @@ return PCIBIOS_DEVICE_NOT_FOUND; #ifdef CONFIG_RPXCLASSIC - save_flags(flags); - cli(); + /* disable interrupts */ + spin_lock_irqsave(&pcibios_lock, flags); *((uint *)RPX_CSR_ADDR) &= ~BCSR2_QSPACESEL; eieio(); #endif @@ -312,7 +314,7 @@ #ifdef CONFIG_RPXCLASSIC *((uint *)RPX_CSR_ADDR) |= BCSR2_QSPACESEL; eieio(); - restore_flags(flags); + spin_unlock_irqrestore(&pcibios_lock, flags); #endif return PCIBIOS_SUCCESSFUL; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |