[PATCH 3/3] drm/amdgpu: expose the VA above the hole to userspace
Christian König
ckoenig.leichtzumerken at gmail.com
Sat Nov 18 14:20:30 UTC 2017
Am 17.11.2017 um 17:11 schrieb Alex Deucher:
> On Thu, Nov 16, 2017 at 5:22 AM, Christian König
> <ckoenig.leichtzumerken at gmail.com> wrote:
>> Let userspace know how much area we have above the 48bit VA hole on
>> Vega10.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
> Please add a patch to bump the driver version as well.
I could add one, but actually we don't need one cause the new fields are
simply zero initialized by userspace when requestion the device info.
I'm actually considering add a CC stable tag to at least the first
patch, cause when a client actually would try to use this it could
confuse the hardware badly.
Christian.
> With that,
> this series is:
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 12 ++++++++++--
>> include/uapi/drm/amdgpu_drm.h | 4 ++++
>> 2 files changed, 14 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> index e84a7f7f642e..9875d64ae7d5 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> @@ -550,6 +550,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>> }
>> case AMDGPU_INFO_DEV_INFO: {
>> struct drm_amdgpu_info_device dev_info = {};
>> + uint64_t vm_size;
>>
>> dev_info.device_id = dev->pdev->device;
>> dev_info.chip_rev = adev->rev_id;
>> @@ -577,10 +578,17 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>> dev_info.ids_flags |= AMDGPU_IDS_FLAGS_FUSION;
>> if (amdgpu_sriov_vf(adev))
>> dev_info.ids_flags |= AMDGPU_IDS_FLAGS_PREEMPTION;
>> +
>> + vm_size = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE;
>> dev_info.virtual_address_offset = AMDGPU_VA_RESERVED_SIZE;
>> dev_info.virtual_address_max =
>> - min(adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE,
>> - AMDGPU_VA_HOLE_START);
>> + min(vm_size, AMDGPU_VA_HOLE_START);
>> +
>> + vm_size -= AMDGPU_VA_RESERVED_SIZE;
>> + if (vm_size > AMDGPU_VA_HOLE_START) {
>> + dev_info.high_va_offset = AMDGPU_VA_HOLE_END;
>> + dev_info.high_va_max = AMDGPU_VA_HOLE_END | vm_size;
>> + }
>> dev_info.virtual_address_alignment = max((int)PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE);
>> dev_info.pte_fragment_size = (1 << adev->vm_manager.fragment_size) * AMDGPU_GPU_PAGE_SIZE;
>> dev_info.gart_page_size = AMDGPU_GPU_PAGE_SIZE;
>> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
>> index f7a4cf1b6ef6..1dc8089b480a 100644
>> --- a/include/uapi/drm/amdgpu_drm.h
>> +++ b/include/uapi/drm/amdgpu_drm.h
>> @@ -880,6 +880,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 {
>> --
>> 2.11.0
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list