MIPS: Octeon: Replace spinlock with raw_spinlocks in dma-octeon.c.
Signed-off-by: David Daney <ddaney@caviumnetworks.com> Cc: linux-mips@linux-mips.org Patchwork: http://patchwork.linux-mips.org/patch/973/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
399614226c
commit
541247f4d2
|
@ -41,7 +41,7 @@ struct bar1_index_state {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#ifdef CONFIG_PCI
|
||||||
static DEFINE_SPINLOCK(bar1_lock);
|
static DEFINE_RAW_SPINLOCK(bar1_lock);
|
||||||
static struct bar1_index_state bar1_state[32];
|
static struct bar1_index_state bar1_state[32];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ dma_addr_t octeon_map_dma_mem(struct device *dev, void *ptr, size_t size)
|
||||||
start_index = 31;
|
start_index = 31;
|
||||||
|
|
||||||
/* Only one processor can access the Bar register at once */
|
/* Only one processor can access the Bar register at once */
|
||||||
spin_lock_irqsave(&bar1_lock, flags);
|
raw_spin_lock_irqsave(&bar1_lock, flags);
|
||||||
|
|
||||||
/* Look through Bar1 for existing mapping that will work */
|
/* Look through Bar1 for existing mapping that will work */
|
||||||
for (index = start_index; index >= 0; index--) {
|
for (index = start_index; index >= 0; index--) {
|
||||||
|
@ -250,7 +250,7 @@ dma_addr_t octeon_map_dma_mem(struct device *dev, void *ptr, size_t size)
|
||||||
(unsigned long long) physical);
|
(unsigned long long) physical);
|
||||||
|
|
||||||
done_unlock:
|
done_unlock:
|
||||||
spin_unlock_irqrestore(&bar1_lock, flags);
|
raw_spin_unlock_irqrestore(&bar1_lock, flags);
|
||||||
done:
|
done:
|
||||||
pr_debug("dma_map_single 0x%llx->0x%llx\n", physical, result);
|
pr_debug("dma_map_single 0x%llx->0x%llx\n", physical, result);
|
||||||
return result;
|
return result;
|
||||||
|
@ -324,14 +324,14 @@ void octeon_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr)
|
||||||
"Attempt to unmap an invalid address (0x%llx)\n",
|
"Attempt to unmap an invalid address (0x%llx)\n",
|
||||||
dma_addr);
|
dma_addr);
|
||||||
|
|
||||||
spin_lock_irqsave(&bar1_lock, flags);
|
raw_spin_lock_irqsave(&bar1_lock, flags);
|
||||||
bar1_state[index].ref_count--;
|
bar1_state[index].ref_count--;
|
||||||
if (bar1_state[index].ref_count == 0)
|
if (bar1_state[index].ref_count == 0)
|
||||||
octeon_npi_write32(CVMX_NPI_PCI_BAR1_INDEXX(index), 0);
|
octeon_npi_write32(CVMX_NPI_PCI_BAR1_INDEXX(index), 0);
|
||||||
else if (unlikely(bar1_state[index].ref_count < 0))
|
else if (unlikely(bar1_state[index].ref_count < 0))
|
||||||
panic("dma_unmap_single: Bar1[%u] reference count < 0\n",
|
panic("dma_unmap_single: Bar1[%u] reference count < 0\n",
|
||||||
(int) index);
|
(int) index);
|
||||||
spin_unlock_irqrestore(&bar1_lock, flags);
|
raw_spin_unlock_irqrestore(&bar1_lock, flags);
|
||||||
done:
|
done:
|
||||||
pr_debug("dma_unmap_single 0x%llx\n", dma_addr);
|
pr_debug("dma_unmap_single 0x%llx\n", dma_addr);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue