Messages in this thread Patch in this message |  | | | Date | Fri, 03 Jun 2011 18:31:42 +0100 | | From | Daniel Haid <> | | Subject | [PATCH] tentative fix for radeon on systems >4GB without hardware iommu |
| |
On my x86_64 system with >4GB of ram and swiotlb instead of a hardware iommu (because I have a VIA chipset), the call to pci_set_dma_mask (see below) with 40bits returns an error.
But it seems that the radeon driver is designed to have need_dma32 = true exactly if pci_set_dma_mask is called with 32 bits and false if it is called with 40 bits.
I have read somewhere that the default are 32 bits. So if the call fails I suppose that need_dma32 should be set to true.
And indeed the patch fixes the problem I have had before and which I had described here: http://choon.net/forum/read.php?21,106131,115940
--- linux-2.6.39-gentoo/drivers/gpu/drm/radeon/radeon_device.c.old 2011-06-03 19:11:33.208891994 +0200 +++ linux-2.6.39-gentoo/drivers/gpu/drm/radeon/radeon_device.c 2011-06-03 19:21:10.240337986 +0200 @@ -752,6 +752,7 @@ int radeon_device_init(struct radeon_dev dma_bits = rdev->need_dma32 ? 32 : 40; r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits)); if (r) { + rdev->need_dma32 = true; printk(KERN_WARNING "radeon: No suitable DMA available.\n"); }
|  |