amdgpu: use the high VA range if possible v2

Retire the low range on Vega10 this frees up everything below 0xffff800000000000 for HMM.

v2: keep the 32bit range working.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
main
Christian König 2017-11-07 15:31:45 +01:00
parent 0a3c01f4ad
commit 07ea20d5be
1 changed files with 14 additions and 4 deletions

View File

@ -264,13 +264,23 @@ int amdgpu_device_initialize(int fd,
goto cleanup; goto cleanup;
} }
start = dev->dev_info.virtual_address_offset; if (dev->dev_info.high_va_offset && dev->dev_info.high_va_max) {
max = MIN2(dev->dev_info.virtual_address_max, 0x100000000ULL); start = dev->dev_info.high_va_offset;
max = dev->dev_info.high_va_max;
} else {
start = dev->dev_info.virtual_address_offset;
max = dev->dev_info.virtual_address_max;
}
max = MIN2(max, (start & ~0xffffffff) + 0x100000000ULL);
amdgpu_vamgr_init(&dev->vamgr_32, start, max, amdgpu_vamgr_init(&dev->vamgr_32, start, max,
dev->dev_info.virtual_address_alignment); dev->dev_info.virtual_address_alignment);
start = MAX2(dev->dev_info.virtual_address_offset, 0x100000000ULL); start = max;
max = MAX2(dev->dev_info.virtual_address_max, 0x100000000ULL); if (dev->dev_info.high_va_offset && dev->dev_info.high_va_max)
max = dev->dev_info.high_va_max;
else
max = dev->dev_info.virtual_address_max;
amdgpu_vamgr_init(&dev->vamgr, start, max, amdgpu_vamgr_init(&dev->vamgr, start, max,
dev->dev_info.virtual_address_alignment); dev->dev_info.virtual_address_alignment);