amdgpu: use the high VA range if possible
authorChristian König <christian.koenig@amd.com>
Tue, 7 Nov 2017 14:31:45 +0000 (15:31 +0100)
committerChristian König <christian.koenig@amd.com>
Wed, 8 Nov 2017 15:12:56 +0000 (16:12 +0100)
This frees up the low range for HMM.

Signed-off-by: Christian König <christian.koenig@amd.com>
amdgpu/amdgpu_device.c
include/drm/amdgpu_drm.h

index fa4ab0e..e04424d 100644 (file)
@@ -275,8 +275,13 @@ int amdgpu_device_initialize(int fd,
        amdgpu_vamgr_init(&dev->vamgr_32, start, max,
                          dev->dev_info.virtual_address_alignment);
 
-       start = MAX2(dev->dev_info.virtual_address_offset, 0x100000000ULL);
-       max = MAX2(dev->dev_info.virtual_address_max, 0x100000000ULL);
+       if (dev->dev_info.high_va_offset && dev->dev_info.high_va_max) {
+               start = dev->dev_info.high_va_offset;
+               max = dev->dev_info.high_va_max;
+       } else {
+               start = MAX2(dev->dev_info.virtual_address_offset, 0x100000000ULL);
+               max = MAX2(dev->dev_info.virtual_address_max, 0x100000000ULL);
+       }
        amdgpu_vamgr_init(&dev->vamgr, start, max,
                          dev->dev_info.virtual_address_alignment);
 
index 919248f..a023b47 100644 (file)
@@ -869,6 +869,10 @@ struct drm_amdgpu_info_device {
        __u32 _pad1;
        /* always on cu bitmap */
        __u32 cu_ao_bitmap[4][4];
+       /** Starting high virtual address for UMDs. */
+       __u64 high_va_offset;
+       /** The maximum high virtual address */
+       __u64 high_va_max;
 };
 
 struct drm_amdgpu_info_hw_ip {