linux-mips
[Top] [All Lists]

Re: atomic_add function on memory allocated with dma_alloc_coherent hang

To: Riisisulg <riisisulg@hot.ee>
Subject: Re: atomic_add function on memory allocated with dma_alloc_coherent hangs
From: Ralf Baechle <ralf@linux-mips.org>
Date: Tue, 17 Jan 2006 12:10:18 +0000
Cc: linux-mips@linux-mips.org
In-reply-to: <20060117094053.D0DFBAF060@mh3-4.hot.ee>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20060117094053.D0DFBAF060@mh3-4.hot.ee>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.1i
On Tue, Jan 17, 2006 at 11:40:53AM +0200, Riisisulg wrote:

> Hello. I'm using AMD Alchemy db1550 with au1550, it has 2.6.15 kernel
> patched with linux-2.6.14.5-mips-1.patch, i have compiled cross compiler
> for the platform (but not checked it for correctness)
> 
> since db1550 does not have USB2.0 but instead has two PCI slots, i
> installed NEC's PCI to USB 2.0 host controller board to it. I was able
> to load ehci-hcd driver with success but after the usb mass storage
> device was inserted the system hanged. 
> After debugging a while i found out that function atomic_add did not
> return. I run few tests where atomic add asm code was alerted and got
> confidence that sc instruction did not never succeed so the cycle was
> repeating forever.

The operation of ll/sc is undefined on uncached memory; non-coherent
MIPS systems - that is most embedded MIPS systems - will return non
cache-coherent memory for dma_alloc_coherent.  Yes, the naming sucks,
dma_alloc_{non}coherent do the opposite of what their name is.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>