From: Alex Deucher Date: Wed, 5 Oct 2011 14:02:57 +0000 (-0400) Subject: drm/radeon/kms: set DMA mask properly on newer PCI asics X-Git-Tag: v3.2-rc1~135^2~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=005a83f1412f4405694d08e95836bbdd88ea0109;p=profile%2Fivi%2Fkernel-x86-ivi.git drm/radeon/kms: set DMA mask properly on newer PCI asics If a card wasn't PCIE, we always set the DMA mask to 32 bits. This is only applies to the old rage128/r1xx gart block on early radeon asics (~r1xx-r4xx). Newer PCI and IGP cards can handle 40 bits just fine. Signed-off-by: Alex Deucher Cc: Chen Jie Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 31b1f4b..cc695d05 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -750,14 +750,15 @@ int radeon_device_init(struct radeon_device *rdev, /* set DMA mask + need_dma32 flags. * PCIE - can handle 40-bits. - * IGP - can handle 40-bits (in theory) + * IGP - can handle 40-bits * AGP - generally dma32 is safest - * PCI - only dma32 + * PCI - dma32 for legacy pci gart, 40 bits on newer asics */ rdev->need_dma32 = false; if (rdev->flags & RADEON_IS_AGP) rdev->need_dma32 = true; - if (rdev->flags & RADEON_IS_PCI) + if ((rdev->flags & RADEON_IS_PCI) && + (rdev->family < CHIP_RS400)) rdev->need_dma32 = true; dma_bits = rdev->need_dma32 ? 32 : 40;