Messages in this thread | | | Date | Fri, 05 Sep 2008 08:56:52 +0200 | From | Takashi Iwai <> | Subject | Re: warning on device removal |
| |
At Thu, 4 Sep 2008 14:36:48 +0200, Oliver Neukum wrote: > > Am Donnerstag 04 September 2008 14:20:22 schrieb Dmitry Baryshkov: > > Hi, > > > > I've got the following trace on one of my arm boards when removing > > the usb masstorage device: > > > > ------------[ cut here ]------------ > > WARNING: at /home/lumag/tosa-tree/arch/arm/mm/consistent.c:368 dma_free_coherent+0x34/0x248() > > Modules linked in: > > [<c0028fe4>] (dump_stack+0x0/0x14) from [<c003c810>] (warn_on_slowpath+0x4c/0x84) > > [<c003c7c4>] (warn_on_slowpath+0x0/0x84) from [<c0029e54>] (dma_free_coherent+0x34/0x248) > > Looks like a principal problem we have with that architecture. > Is arm incapable of supporting buffer freeing in hard irq context > or do we use the wrong API?
According to DMA-API.txt, dma_free_coherent() must be called with IRQ enabled:
> void > dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, > dma_addr_t dma_handle) ... > Note that unlike their sibling allocation calls, these routines > may only be called with IRQs enabled.
Takashi
| |