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

From: "Gerhard Pircher" <[email-masked]>
Date: Sun, 02 Mar 2008 23:30:12 +0100

-------- Original-Nachricht --------
> Datum: Mon, 03 Mar 2008 07:47:09 +1100
> Von: Benjamin Herrenschmidt <[email-masked]>
> An: Gerhard Pircher <[email-masked]>
> CC: [email-masked], [email-masked], [email-masked], [email-masked]
> Betreff: Re: [BUG/RFC/PATCH] drm: Fix for non-coherent DMA PowerPC

> That doesn't look possible, which is weird... looks like we are passing
> 0 to clean_dcache_range().
> 
> Interestingly enough, I can -see- possible issues with the ppc32 DMA API
> when trying to use HIGHMEM but that isn't the case here... 
> 
> Can you add printk's to ati_pcigart.c to print the arguments passed to
> 
> +               dma_sync_single_for_device(&dev->pdev->dev,
> +                                          bus_address,
> +                                          max_pages * sizeof(u32),
> +                                          PCI_DMA_TODEVICE);
> +
> 
> And also print the result of bus_to_virt(bus_address) ?
> 
> Ben.

Okay, I changed the code to this:

>DRM_DEBUG("dev = 0x%x, bus_address = 0x%x, bus_to_virt = 0x%lx, max_pages = 0x%x\n",
>	(unsigned int)&dev->pdev->dev, bus_address,
>	(unsigned long)virt_to_bus(bus_address), max_pages);
>
>if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) {
>	DRM_DEBUG("calling dma_sync_single_for_device()\n");
>	dma_sync_single_for_device(&dev->pdev->dev,
>		bus_address,
>		max_pages * sizeof(u32),
>		PCI_DMA_TODEVICE);
>}

It looks like dma_sync_single_for_device() is not called here (the debug
messages don't show up in kernel log). I also included the Xorg.0.log
file.

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