summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-11-07 15:31:45 +0100
committerChristian König <christian.koenig@amd.com>2017-11-08 16:12:56 +0100
commit6c0ea4b0c5452bfc1e67b74ce723696ef3c80b25 (patch)
tree02a57346b76fc62aed571108fdcbc9ef570e3599
parent944f6665de36b6a6c36263f23b7b9d1730e544fa (diff)
amdgpu: use the high VA range if possible
This frees up the low range for HMM. Signed-off-by: Christian König <christian.koenig@amd.com>
-rw-r--r--amdgpu/amdgpu_device.c9
-rw-r--r--include/drm/amdgpu_drm.h4
2 files changed, 11 insertions, 2 deletions
diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c
index fa4ab0e7..e04424d3 100644
--- a/amdgpu/amdgpu_device.c
+++ b/amdgpu/amdgpu_device.c
@@ -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);
diff --git a/include/drm/amdgpu_drm.h b/include/drm/amdgpu_drm.h
index 919248fb..a023b476 100644
--- a/include/drm/amdgpu_drm.h
+++ b/include/drm/amdgpu_drm.h
@@ -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 {