[PATCH] drm/amdgpu: Add a GEM_CREATE mask and bugfix

Christian König ckoenig.leichtzumerken at gmail.com
Mon Feb 17 15:08:28 UTC 2020


Am 17.02.20 um 15:44 schrieb Alex Deucher:
> On Fri, Feb 14, 2020 at 7:17 PM Luben Tuikov <luben.tuikov at amd.com> wrote:
>> Add a AMDGPU_GEM_CREATE_MASK and use it to check
>> for valid/invalid GEM create flags coming in from
>> userspace.
>>
>> Fix a bug in checking whether TMZ is supported at
>> GEM create time.
>>
>> Signed-off-by: Luben Tuikov <luben.tuikov at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 11 ++---------
>>   include/uapi/drm/amdgpu_drm.h           |  2 ++
>>   2 files changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> index b51a060c637d..74bb79e64fa3 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> @@ -221,21 +221,14 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
>>          int r;
>>
>>          /* reject invalid gem flags */
>> -       if (flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
>> -                     AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
>> -                     AMDGPU_GEM_CREATE_CPU_GTT_USWC |
>> -                     AMDGPU_GEM_CREATE_VRAM_CLEARED |
>> -                     AMDGPU_GEM_CREATE_VM_ALWAYS_VALID |
>> -                     AMDGPU_GEM_CREATE_EXPLICIT_SYNC |
>> -                     AMDGPU_GEM_CREATE_ENCRYPTED))
>> -
> I'd rather keep the list explicit so no one ends up forgetting to
> update the mask the next time new flags are added.

Additional to that this patch is bogus.

We intentionally filter out the flags here which userspace is allowed to 
specify in the GEM interface, but after this patch we would allow all 
flags to be specified.

Christian.



>
> Alex
>
>> +       if (flags & ~AMDGPU_GEM_CREATE_MASK)
>>                  return -EINVAL;
>>
>>          /* reject invalid gem domains */
>>          if (args->in.domains & ~AMDGPU_GEM_DOMAIN_MASK)
>>                  return -EINVAL;
>>
>> -       if (amdgpu_is_tmz(adev) && (flags & AMDGPU_GEM_CREATE_ENCRYPTED)) {
>> +       if (!amdgpu_is_tmz(adev) && flags & AMDGPU_GEM_CREATE_ENCRYPTED) {
>>                  DRM_ERROR("Cannot allocate secure buffer since TMZ is disabled\n");
>>                  return -EINVAL;
>>          }
>> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
>> index eaf94a421901..c8463cdf4448 100644
>> --- a/include/uapi/drm/amdgpu_drm.h
>> +++ b/include/uapi/drm/amdgpu_drm.h
>> @@ -141,6 +141,8 @@ extern "C" {
>>    */
>>   #define AMDGPU_GEM_CREATE_ENCRYPTED            (1 << 10)
>>
>> +#define AMDGPU_GEM_CREATE_MASK                  ((1 << 11)-1)
>> +
>>   struct drm_amdgpu_gem_create_in  {
>>          /** the requested memory size */
>>          __u64 bo_size;
>> --
>> 2.25.0.232.gd8437c57fa
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> 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