dma_spin_lock needs to be a real spinlock on preempt-rt. Convert it to a raw_spinlock. No change for !RT kernels. Signed-off-by: Thomas Gleixner --- arch/arm/include/asm/dma.h | 6 +++--- arch/arm/kernel/dma.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) Index: linux-2.6-tip/arch/arm/include/asm/dma.h =================================================================== --- linux-2.6-tip.orig/arch/arm/include/asm/dma.h +++ linux-2.6-tip/arch/arm/include/asm/dma.h @@ -31,18 +31,18 @@ #define DMA_MODE_CASCADE 0xc0 #define DMA_AUTOINIT 0x10 -extern spinlock_t dma_spin_lock; +extern raw_spinlock_t dma_spin_lock; static inline unsigned long claim_dma_lock(void) { unsigned long flags; - spin_lock_irqsave(&dma_spin_lock, flags); + raw_spin_lock_irqsave(&dma_spin_lock, flags); return flags; } static inline void release_dma_lock(unsigned long flags) { - spin_unlock_irqrestore(&dma_spin_lock, flags); + raw_spin_unlock_irqrestore(&dma_spin_lock, flags); } /* Clear the 'DMA Pointer Flip Flop'. Index: linux-2.6-tip/arch/arm/kernel/dma.c =================================================================== --- linux-2.6-tip.orig/arch/arm/kernel/dma.c +++ linux-2.6-tip/arch/arm/kernel/dma.c @@ -21,7 +21,7 @@ #include -DEFINE_SPINLOCK(dma_spin_lock); +DEFINE_RAW_SPINLOCK(dma_spin_lock); EXPORT_SYMBOL(dma_spin_lock); static dma_t *dma_chan[MAX_DMA_CHANNELS];