| From 62fff811d73095bd95579d72f558f03c78f7914a Mon Sep 17 00:00:00 2001 |
| From: Daniel Haid <d.haid@gogi.tv> |
| Date: Wed, 8 Jun 2011 20:04:45 +1000 |
| Subject: drm/radeon/kms: fix for radeon on systems >4GB without |
| hardware iommu |
| |
| From: Daniel Haid <d.haid@gogi.tv> |
| |
| commit 62fff811d73095bd95579d72f558f03c78f7914a upstream. |
| |
| 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> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/gpu/drm/radeon/radeon_device.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/gpu/drm/radeon/radeon_device.c |
| +++ b/drivers/gpu/drm/radeon/radeon_device.c |
| @@ -682,6 +682,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"); |
| } |
| |