On Mon, Dec 12, 2011 at 12:37:43PM -0500, Konrad Rzeszutek Wilk wrote:
Any ideas ?
The only way to do that would be to modify the 'struct dma_page' vaddr and dma variables from what they had in __ttm_dma_alloc_page. But I am not seeing any willfull modifications. We do pass in to dma_free_coherent the _same_ values!
Hm, it might be worth adding in the 'struct dma_page' a 'virt_to_phys' value (which is what the DMA debug API uses to check), and see we get inconsitent values _before_ we call the DMA debug API. This is rather to double check the DMA API debug API. I am going to try something like this (not compile tested at all):
This one is compile tested :-)
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c index 6678abc..659b0ee 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c @@ -32,7 +32,7 @@
- Tracks whether the page is UC, WB or cached (and reverts to WB
- when freed).
*/
And I think if you cherry-pick git commit 91ec37cc1015220965e39bf342fb846810d19e79
Author: Thomas Jarosch thomas.jarosch@intra2net.com Date: Thu Nov 17 20:31:02 2011 +0100
Fix comparison using wrong pointer variable in dma debug code
which fixes the DMA debug API code, the error you are getting will go away.