On Mon, 27 Nov 2023 at 22:52, Rob Clark <robdcl...@gmail.com> wrote: > > On Tue, Nov 21, 2023 at 5:14 AM Dmitry Baryshkov > <dmitry.barysh...@linaro.org> wrote: > > > > On Tue, 21 Nov 2023 at 04:26, Rob Clark <robdcl...@gmail.com> wrote: > > > > > > On Wed, Nov 15, 2023 at 11:33 AM Dmitry Baryshkov > > > <dmitry.barysh...@linaro.org> wrote: > > > > > > > > On Wed, 15 Nov 2023 at 20:46, Dipam Turkar <dipamt1...@gmail.com> wrote: > > > > > > > > > > They are not outdated, my bad. I went through the locks' code and saw > > > > > that they have been updated. But they are probably not necessary here > > > > > as most of the drivers do not use any form of locking in their > > > > > implementations. The generic implementations > > > > > drm_gem_dumb_map_offset() and drm_gem_ttm_dumb_map_offset() do not > > > > > have any locking mechanisms either. > > > > > > > > Excuse me, but this doesn't sound right to me. There are different > > > > drivers with different implementations. So either we'd need a good > > > > explanation of why it is not necessary, or this patch is NAKed. > > > > > > Digging a bit thru history, it looks like commit 0de23977cfeb > > > ("drm/gem: convert to new unified vma manager") made external locking > > > unnecessary, since the vma mgr already had it's own internal locking. > > > > So, should we drop our own locking system? > > specifically for _just_ vma_offset_manager/vma_node, we could. But I > think that only amounts to mmap_offset().
I see. I'll try digging into the mentioned commit. In the meantime, this looks like an R-B from you, doesn't it? > > BR, > -R > > > > > > > BR, > > > -R > > > > > > > > > > > > > Thanks and regards > > > > > Dipam Turkar > > > > > > > > > > On Wed, Nov 15, 2023 at 8:37 PM Dmitry Baryshkov > > > > > <dmitry.barysh...@linaro.org> wrote: > > > > >> > > > > >> On Wed, 15 Nov 2023 at 16:30, Dipam Turkar <dipamt1...@gmail.com> > > > > >> wrote: > > > > >> > > > > > >> > Make msm use drm_gem_create_map_offset() instead of its custom > > > > >> > implementation for associating GEM object with a fake offset. > > > > >> > Since, > > > > >> > we already have this generic implementation, we don't need the > > > > >> > custom > > > > >> > implementation and it is better to standardize the code for GEM > > > > >> > based > > > > >> > drivers. This also removes the outdated locking leftovers. > > > > >> > > > > >> Why are they outdated? > > > > >> > > > > >> > > > > > >> > Signed-off-by: Dipam Turkar <dipamt1...@gmail.com> > > > > >> > --- > > > > >> > drivers/gpu/drm/msm/msm_drv.c | 2 +- > > > > >> > drivers/gpu/drm/msm/msm_gem.c | 21 --------------------- > > > > >> > drivers/gpu/drm/msm/msm_gem.h | 2 -- > > > > >> > 3 files changed, 1 insertion(+), 24 deletions(-) > > > > >> > > > > > >> > Changes in v2: > > > > >> > Modify commit message to include the absence of internal locking > > > > >> > leftovers > > > > >> > around allocating a fake offset in msm_gem_mmap_offset() in the > > > > >> > generic > > > > >> > implementation drm_gem_create_map_offset(). > > > > >> > > > > > >> > diff --git a/drivers/gpu/drm/msm/msm_drv.c > > > > >> > b/drivers/gpu/drm/msm/msm_drv.c > > > > >> > index a428951ee539..86a15992c717 100644 > > > > >> > --- a/drivers/gpu/drm/msm/msm_drv.c > > > > >> > +++ b/drivers/gpu/drm/msm/msm_drv.c > > > > >> > @@ -1085,7 +1085,7 @@ static const struct drm_driver msm_driver = { > > > > >> > .open = msm_open, > > > > >> > .postclose = msm_postclose, > > > > >> > .dumb_create = msm_gem_dumb_create, > > > > >> > - .dumb_map_offset = msm_gem_dumb_map_offset, > > > > >> > + .dumb_map_offset = drm_gem_dumb_map_offset, > > > > >> > .gem_prime_import_sg_table = msm_gem_prime_import_sg_table, > > > > >> > #ifdef CONFIG_DEBUG_FS > > > > >> > .debugfs_init = msm_debugfs_init, > > > > >> > diff --git a/drivers/gpu/drm/msm/msm_gem.c > > > > >> > b/drivers/gpu/drm/msm/msm_gem.c > > > > >> > index db1e748daa75..489694ef79cb 100644 > > > > >> > --- a/drivers/gpu/drm/msm/msm_gem.c > > > > >> > +++ b/drivers/gpu/drm/msm/msm_gem.c > > > > >> > @@ -671,27 +671,6 @@ int msm_gem_dumb_create(struct drm_file > > > > >> > *file, struct drm_device *dev, > > > > >> > MSM_BO_SCANOUT | MSM_BO_WC, &args->handle, > > > > >> > "dumb"); > > > > >> > } > > > > >> > > > > > >> > -int msm_gem_dumb_map_offset(struct drm_file *file, struct > > > > >> > drm_device *dev, > > > > >> > - uint32_t handle, uint64_t *offset) > > > > >> > -{ > > > > >> > - struct drm_gem_object *obj; > > > > >> > - int ret = 0; > > > > >> > - > > > > >> > - /* GEM does all our handle to object mapping */ > > > > >> > - obj = drm_gem_object_lookup(file, handle); > > > > >> > - if (obj == NULL) { > > > > >> > - ret = -ENOENT; > > > > >> > - goto fail; > > > > >> > - } > > > > >> > - > > > > >> > - *offset = msm_gem_mmap_offset(obj); > > > > >> > - > > > > >> > - drm_gem_object_put(obj); > > > > >> > - > > > > >> > -fail: > > > > >> > - return ret; > > > > >> > -} > > > > >> > - > > > > >> > static void *get_vaddr(struct drm_gem_object *obj, unsigned madv) > > > > >> > { > > > > >> > struct msm_gem_object *msm_obj = to_msm_bo(obj); > > > > >> > diff --git a/drivers/gpu/drm/msm/msm_gem.h > > > > >> > b/drivers/gpu/drm/msm/msm_gem.h > > > > >> > index 8ddef5443140..dc74a0ef865d 100644 > > > > >> > --- a/drivers/gpu/drm/msm/msm_gem.h > > > > >> > +++ b/drivers/gpu/drm/msm/msm_gem.h > > > > >> > @@ -139,8 +139,6 @@ struct page **msm_gem_pin_pages(struct > > > > >> > drm_gem_object *obj); > > > > >> > void msm_gem_unpin_pages(struct drm_gem_object *obj); > > > > >> > int msm_gem_dumb_create(struct drm_file *file, struct drm_device > > > > >> > *dev, > > > > >> > struct drm_mode_create_dumb *args); > > > > >> > -int msm_gem_dumb_map_offset(struct drm_file *file, struct > > > > >> > drm_device *dev, > > > > >> > - uint32_t handle, uint64_t *offset); > > > > >> > void *msm_gem_get_vaddr_locked(struct drm_gem_object *obj); > > > > >> > void *msm_gem_get_vaddr(struct drm_gem_object *obj); > > > > >> > void *msm_gem_get_vaddr_active(struct drm_gem_object *obj); > > > > >> > -- > > > > >> > 2.34.1 > > > > >> > > > > > >> > > > > >> > > > > >> -- > > > > >> With best wishes > > > > >> Dmitry > > > > > > > > > > > > > > > > -- > > > > With best wishes > > > > Dmitry > > > > > > > > -- > > With best wishes > > Dmitry -- With best wishes Dmitry