diff options
author | Daniel Haid <d.haid@gogi.tv> | 2011-06-08 06:04:45 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-06-08 06:14:28 -0400 |
commit | 62fff811d73095bd95579d72f558f03c78f7914a (patch) | |
tree | 0ee6defc1f155701dc6240fe979dd1c8a3d59460 | |
parent | 428c6e3630b343d5b3034af914015d10c94bb90e (diff) |
drm/radeon/kms: 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
Acked-by: Alex Deucher <alexdeucher@gmail.com>
cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index d77ede3e67ce..e680501c78ea 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c | |||
@@ -754,6 +754,7 @@ int radeon_device_init(struct radeon_device *rdev, | |||
754 | dma_bits = rdev->need_dma32 ? 32 : 40; | 754 | dma_bits = rdev->need_dma32 ? 32 : 40; |
755 | r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits)); | 755 | r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits)); |
756 | if (r) { | 756 | if (r) { |
757 | rdev->need_dma32 = true; | ||
757 | printk(KERN_WARNING "radeon: No suitable DMA available.\n"); | 758 | printk(KERN_WARNING "radeon: No suitable DMA available.\n"); |
758 | } | 759 | } |
759 | 760 | ||