[PATCH] drm/radeon: always set GEM function pointer
Hans de Goede
hdegoede at redhat.com
Tue Oct 8 11:21:32 UTC 2024
Hi,
On 7-Oct-24 8:36 PM, Alex Deucher wrote:
> Add a few people.
Thank you.
> This should fix the radeon ttm gem conversion.
>
> On Mon, Oct 7, 2024 at 2:33 PM Christian König
> <ckoenig.leichtzumerken at gmail.com> wrote:
>>
>> Make sure to always set the GEM function pointer even for in kernel
>> allocations. This fixes a NULL pointer deref caused by switching to GEM
>> references.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> Fixes: fd69ef05029f ("drm/radeon: use GEM references instead of TTMs")
I can confirm that this fixes gdm not showing with 6.12-rc1
(after the "drm/radeon: add late_register for connector" fix):
Tested-by: Hans de Goede <hdegoede at redhat.com>
Regards,
Hans
>> ---
>> drivers/gpu/drm/radeon/radeon_gem.c | 3 ---
>> drivers/gpu/drm/radeon/radeon_object.c | 1 +
>> 2 files changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
>> index 9735f4968b86..bf2d4b16dc2a 100644
>> --- a/drivers/gpu/drm/radeon/radeon_gem.c
>> +++ b/drivers/gpu/drm/radeon/radeon_gem.c
>> @@ -44,8 +44,6 @@ struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj);
>> int radeon_gem_prime_pin(struct drm_gem_object *obj);
>> void radeon_gem_prime_unpin(struct drm_gem_object *obj);
>>
>> -const struct drm_gem_object_funcs radeon_gem_object_funcs;
>> -
>> static vm_fault_t radeon_gem_fault(struct vm_fault *vmf)
>> {
>> struct ttm_buffer_object *bo = vmf->vma->vm_private_data;
>> @@ -132,7 +130,6 @@ int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size,
>> return r;
>> }
>> *obj = &robj->tbo.base;
>> - (*obj)->funcs = &radeon_gem_object_funcs;
>> robj->pid = task_pid_nr(current);
>>
>> mutex_lock(&rdev->gem.mutex);
>> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
>> index d0e4b43d155c..7672404fdb29 100644
>> --- a/drivers/gpu/drm/radeon/radeon_object.c
>> +++ b/drivers/gpu/drm/radeon/radeon_object.c
>> @@ -151,6 +151,7 @@ int radeon_bo_create(struct radeon_device *rdev,
>> if (bo == NULL)
>> return -ENOMEM;
>> drm_gem_private_object_init(rdev_to_drm(rdev), &bo->tbo.base, size);
>> + bo->tbo.base.funcs = &radeon_gem_object_funcs;
>> bo->rdev = rdev;
>> bo->surface_reg = -1;
>> INIT_LIST_HEAD(&bo->list);
>> --
>> 2.34.1
>>
>
More information about the amd-gfx
mailing list