[BUG/RFC/PATCH] drm: Fix for non-coherent DMA PowerPC

Gerhard Pircher gerhard_pircher at gmx.net
Tue Mar 4 06:51:17 EST 2008


-------- Original-Nachricht --------
> Datum: Mon, 03 Mar 2008 09:56:09 +1100
> Von: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> An: Gerhard Pircher <gerhard_pircher at gmx.net>
> CC: linuxppc-dev at ozlabs.org, dri-devel at lists.sourceforge.net, linux-kernel at vger.kernel.org, airlied at linux.ie
> Betreff: Re: [BUG/RFC/PATCH] drm: Fix for non-coherent DMA PowerPC

> Bah, I think I found the problem:
> 
> +static inline void *drm_vmalloc_dma(unsigned long size)
> +{
> +#if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE)
> +       return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM,
> +                        PAGE_KERNEL | _PAGE_NO_CACHE);
> +#else
> +       return vmalloc_32(size);
> +#endif
> +}
> +
> 
> Remove the GFP_HIGHMEM from the above. It looks like our cache
> flushing isn't going to work for highmem, it would need some
> kmap's for that.
Yes, it looks like this was the problem. No kernel oops anymore.
The machine locks up anyway (which is a well known hardware problem).
It doesn't lock up with CPPIOMode=true, but probably only because the
initialization of DRI fails with "BAD cp_mode (f0000000)!".

Gerhard
-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger



More information about the Linuxppc-dev mailing list