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@xxxxxxxxx> 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@xxxxxxx> >> 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@xxxxxxxxxx> 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 >> >