summaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/falcon_io.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-03-28 23:05:50 +0100
committerIngo Molnar <mingo@elte.hu>2009-03-28 23:05:50 +0100
commitb0d44c0dbbd52effb731b1c0af9afd56215c48de (patch)
tree3237c0087d91a5390aed05689b9f610ba16fa116 /drivers/net/sfc/falcon_io.h
parentdma-debug: make memory range checks more consistent (diff)
parentMerge branch 'percpu-cpumask-x86-for-linus-2' of git://git.kernel.org/pub/scm... (diff)
downloadlinux-b0d44c0dbbd52effb731b1c0af9afd56215c48de.tar.xz
linux-b0d44c0dbbd52effb731b1c0af9afd56215c48de.zip
Merge branch 'linus' into core/iommu
Conflicts: arch/x86/Kconfig
Diffstat (limited to 'drivers/net/sfc/falcon_io.h')
-rw-r--r--drivers/net/sfc/falcon_io.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/sfc/falcon_io.h b/drivers/net/sfc/falcon_io.h
index c16da3149fa9..8883092dae97 100644
--- a/drivers/net/sfc/falcon_io.h
+++ b/drivers/net/sfc/falcon_io.h
@@ -238,18 +238,21 @@ static inline void falcon_writel_page(struct efx_nic *efx, efx_dword_t *value,
/* Write dword to Falcon page-mapped register with an extra lock.
*
* As for falcon_writel_page(), but for a register that suffers from
- * SFC bug 3181. Take out a lock so the BIU collector cannot be
- * confused. */
+ * SFC bug 3181. If writing to page 0, take out a lock so the BIU
+ * collector cannot be confused.
+ */
static inline void falcon_writel_page_locked(struct efx_nic *efx,
efx_dword_t *value,
unsigned int reg,
unsigned int page)
{
- unsigned long flags;
+ unsigned long flags = 0;
- spin_lock_irqsave(&efx->biu_lock, flags);
+ if (page == 0)
+ spin_lock_irqsave(&efx->biu_lock, flags);
falcon_writel(efx, value, FALCON_PAGED_REG(page, reg));
- spin_unlock_irqrestore(&efx->biu_lock, flags);
+ if (page == 0)
+ spin_unlock_irqrestore(&efx->biu_lock, flags);
}
#endif /* EFX_FALCON_IO_H */