Re: [PATCH] tentative fix for radeon on systems >4GB without hardware iommu

From: Alex Deucher
Date: Fri Jun 03 2011 - 16:45:09 EST


On Fri, Jun 3, 2011 at 1:31 PM, Daniel Haid <d.haid@xxxxxxx> wrote:
> 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

This looks like the correct fix. rdev->need_dma32 is used when we init
ttm for memory management later.

Alex

Acked-by: Alex Deucher <alexdeucher@xxxxxxxxx>

>
> --- 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");
>        }
>
>
--
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/