Re: Oops in a driver while using SLUB as a SLAB allocator

From: Russell King
Date: Fri Jun 22 2007 - 03:01:42 EST


On Fri, Jun 22, 2007 at 05:26:33AM +0100, Hugh Dickins wrote:
> On Thu, 21 Jun 2007, Christoph Lameter wrote:
> > On Thu, 21 Jun 2007, Hugh Dickins wrote:
> >
> > > > The oops seems to occur after a page unmapping using dma_unmap_page() followed
> > > > by a flush_dcache_page() (in at91mci_post_dma_read()).
> >
> > Was the page allocated using slab calls?
>
> You've found yes (in the ARM case).
>
> > Well one may be better off allocating pages using the page allocator
> > instead of the slab allocator. I removed these things from i386 but I did
> > not check ARM.
>
> They may or may not be: I think that's a matter to discuss with rmk.

The coherent case on ARM is broken in more ways, not only because
it uses kmalloc, but it also takes no notice of the DMA mask.

However, AT91 isn't a coherent ARM architecture, so arch_is_coherent()
should be false. Therefore, we should never be allocating pages for
DMA from SLAB/SLUB for AT91 platforms.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/