Message ID | 20200813083644.31711-19-tzimmermann@suse.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Convert all remaining drivers to GEM object functions | expand |
Hi, On 8/13/20 11:36 AM, Thomas Zimmermann wrote: > GEM object functions deprecate several similar callback interfaces in > struct drm_driver. This patch replaces the per-driver callbacks with > per-instance callbacks in xen. The only exception is gem_prime_mmap, > which is non-trivial to convert. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/xen/xen_drm_front.c | 12 +----------- > drivers/gpu/drm/xen/xen_drm_front.h | 2 ++ > drivers/gpu/drm/xen/xen_drm_front_gem.c | 15 +++++++++++++++ > 3 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c > index 3e660fb111b3..bd9af1875af1 100644 > --- a/drivers/gpu/drm/xen/xen_drm_front.c > +++ b/drivers/gpu/drm/xen/xen_drm_front.c > @@ -433,7 +433,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp, > return ret; > } > > -static void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) > +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) Can we please have naming consistent and name it as xen_drm_front_drv_free_object_unlocked or any other name if this seems to be too long, but starting with xen_drm_front_ as the rest of exported functions? With this, Acked-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Thank you, Oleksandr > { > struct xen_drm_front_drm_info *drm_info = obj->dev->dev_private; > int idx; > @@ -481,22 +481,12 @@ static const struct file_operations xen_drm_dev_fops = { > .mmap = xen_drm_front_gem_mmap, > }; > > -static const struct vm_operations_struct xen_drm_drv_vm_ops = { > - .open = drm_gem_vm_open, > - .close = drm_gem_vm_close, > -}; > - > static struct drm_driver xen_drm_driver = { > .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, > .release = xen_drm_drv_release, > - .gem_vm_ops = &xen_drm_drv_vm_ops, > - .gem_free_object_unlocked = xen_drm_drv_free_object_unlocked, > .prime_handle_to_fd = drm_gem_prime_handle_to_fd, > .prime_fd_to_handle = drm_gem_prime_fd_to_handle, > .gem_prime_import_sg_table = xen_drm_front_gem_import_sg_table, > - .gem_prime_get_sg_table = xen_drm_front_gem_get_sg_table, > - .gem_prime_vmap = xen_drm_front_gem_prime_vmap, > - .gem_prime_vunmap = xen_drm_front_gem_prime_vunmap, > .gem_prime_mmap = xen_drm_front_gem_prime_mmap, > .dumb_create = xen_drm_drv_dumb_create, > .fops = &xen_drm_dev_fops, > diff --git a/drivers/gpu/drm/xen/xen_drm_front.h b/drivers/gpu/drm/xen/xen_drm_front.h > index f92c258350ca..93e60c1db550 100644 > --- a/drivers/gpu/drm/xen/xen_drm_front.h > +++ b/drivers/gpu/drm/xen/xen_drm_front.h > @@ -160,4 +160,6 @@ int xen_drm_front_page_flip(struct xen_drm_front_info *front_info, > void xen_drm_front_on_frame_done(struct xen_drm_front_info *front_info, > int conn_idx, u64 fb_cookie); > > +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj); > + > #endif /* __XEN_DRM_FRONT_H_ */ > diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c > index f0b85e094111..7b315c08bcfc 100644 > --- a/drivers/gpu/drm/xen/xen_drm_front_gem.c > +++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c > @@ -56,6 +56,19 @@ static void gem_free_pages_array(struct xen_gem_object *xen_obj) > xen_obj->pages = NULL; > } > > +static const struct vm_operations_struct xen_drm_drv_vm_ops = { > + .open = drm_gem_vm_open, > + .close = drm_gem_vm_close, > +}; > + > +static const struct drm_gem_object_funcs xen_drm_front_gem_object_funcs = { > + .free = xen_drm_drv_free_object_unlocked, > + .get_sg_table = xen_drm_front_gem_get_sg_table, > + .vmap = xen_drm_front_gem_prime_vmap, > + .vunmap = xen_drm_front_gem_prime_vunmap, > + .vm_ops = &xen_drm_drv_vm_ops, > +}; > + > static struct xen_gem_object *gem_create_obj(struct drm_device *dev, > size_t size) > { > @@ -66,6 +79,8 @@ static struct xen_gem_object *gem_create_obj(struct drm_device *dev, > if (!xen_obj) > return ERR_PTR(-ENOMEM); > > + xen_obj->base.funcs = &xen_drm_front_gem_object_funcs; > + > ret = drm_gem_object_init(dev, &xen_obj->base, size); > if (ret < 0) { > kfree(xen_obj);
Hi Am 13.08.20 um 13:19 schrieb Oleksandr Andrushchenko: > Hi, > > On 8/13/20 11:36 AM, Thomas Zimmermann wrote: >> GEM object functions deprecate several similar callback interfaces in >> struct drm_driver. This patch replaces the per-driver callbacks with >> per-instance callbacks in xen. The only exception is gem_prime_mmap, >> which is non-trivial to convert. >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- >> drivers/gpu/drm/xen/xen_drm_front.c | 12 +----------- >> drivers/gpu/drm/xen/xen_drm_front.h | 2 ++ >> drivers/gpu/drm/xen/xen_drm_front_gem.c | 15 +++++++++++++++ >> 3 files changed, 18 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c >> index 3e660fb111b3..bd9af1875af1 100644 >> --- a/drivers/gpu/drm/xen/xen_drm_front.c >> +++ b/drivers/gpu/drm/xen/xen_drm_front.c >> @@ -433,7 +433,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp, >> return ret; >> } >> >> -static void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) >> +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) > > Can we please have naming consistent and name it as > > xen_drm_front_drv_free_object_unlocked or any other name if this seems to be too long, > > but starting with xen_drm_front_ as the rest of exported functions? There already is a function with that name in drm_xen_front_gem.c. I'll move the callback function next to the object-function structure and rename it slightly. Best regards Thomas > > With this, > > Acked-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> > > Thank you, > > Oleksandr > >> { >> struct xen_drm_front_drm_info *drm_info = obj->dev->dev_private; >> int idx; >> @@ -481,22 +481,12 @@ static const struct file_operations xen_drm_dev_fops = { >> .mmap = xen_drm_front_gem_mmap, >> }; >> >> -static const struct vm_operations_struct xen_drm_drv_vm_ops = { >> - .open = drm_gem_vm_open, >> - .close = drm_gem_vm_close, >> -}; >> - >> static struct drm_driver xen_drm_driver = { >> .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, >> .release = xen_drm_drv_release, >> - .gem_vm_ops = &xen_drm_drv_vm_ops, >> - .gem_free_object_unlocked = xen_drm_drv_free_object_unlocked, >> .prime_handle_to_fd = drm_gem_prime_handle_to_fd, >> .prime_fd_to_handle = drm_gem_prime_fd_to_handle, >> .gem_prime_import_sg_table = xen_drm_front_gem_import_sg_table, >> - .gem_prime_get_sg_table = xen_drm_front_gem_get_sg_table, >> - .gem_prime_vmap = xen_drm_front_gem_prime_vmap, >> - .gem_prime_vunmap = xen_drm_front_gem_prime_vunmap, >> .gem_prime_mmap = xen_drm_front_gem_prime_mmap, >> .dumb_create = xen_drm_drv_dumb_create, >> .fops = &xen_drm_dev_fops, >> diff --git a/drivers/gpu/drm/xen/xen_drm_front.h b/drivers/gpu/drm/xen/xen_drm_front.h >> index f92c258350ca..93e60c1db550 100644 >> --- a/drivers/gpu/drm/xen/xen_drm_front.h >> +++ b/drivers/gpu/drm/xen/xen_drm_front.h >> @@ -160,4 +160,6 @@ int xen_drm_front_page_flip(struct xen_drm_front_info *front_info, >> void xen_drm_front_on_frame_done(struct xen_drm_front_info *front_info, >> int conn_idx, u64 fb_cookie); >> >> +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj); >> + >> #endif /* __XEN_DRM_FRONT_H_ */ >> diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c >> index f0b85e094111..7b315c08bcfc 100644 >> --- a/drivers/gpu/drm/xen/xen_drm_front_gem.c >> +++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c >> @@ -56,6 +56,19 @@ static void gem_free_pages_array(struct xen_gem_object *xen_obj) >> xen_obj->pages = NULL; >> } >> >> +static const struct vm_operations_struct xen_drm_drv_vm_ops = { >> + .open = drm_gem_vm_open, >> + .close = drm_gem_vm_close, >> +}; >> + >> +static const struct drm_gem_object_funcs xen_drm_front_gem_object_funcs = { >> + .free = xen_drm_drv_free_object_unlocked, >> + .get_sg_table = xen_drm_front_gem_get_sg_table, >> + .vmap = xen_drm_front_gem_prime_vmap, >> + .vunmap = xen_drm_front_gem_prime_vunmap, >> + .vm_ops = &xen_drm_drv_vm_ops, >> +}; >> + >> static struct xen_gem_object *gem_create_obj(struct drm_device *dev, >> size_t size) >> { >> @@ -66,6 +79,8 @@ static struct xen_gem_object *gem_create_obj(struct drm_device *dev, >> if (!xen_obj) >> return ERR_PTR(-ENOMEM); >> >> + xen_obj->base.funcs = &xen_drm_front_gem_object_funcs; >> + >> ret = drm_gem_object_init(dev, &xen_obj->base, size); >> if (ret < 0) { >> kfree(xen_obj);
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c index 3e660fb111b3..bd9af1875af1 100644 --- a/drivers/gpu/drm/xen/xen_drm_front.c +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -433,7 +433,7 @@ static int xen_drm_drv_dumb_create(struct drm_file *filp, return ret; } -static void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj) { struct xen_drm_front_drm_info *drm_info = obj->dev->dev_private; int idx; @@ -481,22 +481,12 @@ static const struct file_operations xen_drm_dev_fops = { .mmap = xen_drm_front_gem_mmap, }; -static const struct vm_operations_struct xen_drm_drv_vm_ops = { - .open = drm_gem_vm_open, - .close = drm_gem_vm_close, -}; - static struct drm_driver xen_drm_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .release = xen_drm_drv_release, - .gem_vm_ops = &xen_drm_drv_vm_ops, - .gem_free_object_unlocked = xen_drm_drv_free_object_unlocked, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_prime_import_sg_table = xen_drm_front_gem_import_sg_table, - .gem_prime_get_sg_table = xen_drm_front_gem_get_sg_table, - .gem_prime_vmap = xen_drm_front_gem_prime_vmap, - .gem_prime_vunmap = xen_drm_front_gem_prime_vunmap, .gem_prime_mmap = xen_drm_front_gem_prime_mmap, .dumb_create = xen_drm_drv_dumb_create, .fops = &xen_drm_dev_fops, diff --git a/drivers/gpu/drm/xen/xen_drm_front.h b/drivers/gpu/drm/xen/xen_drm_front.h index f92c258350ca..93e60c1db550 100644 --- a/drivers/gpu/drm/xen/xen_drm_front.h +++ b/drivers/gpu/drm/xen/xen_drm_front.h @@ -160,4 +160,6 @@ int xen_drm_front_page_flip(struct xen_drm_front_info *front_info, void xen_drm_front_on_frame_done(struct xen_drm_front_info *front_info, int conn_idx, u64 fb_cookie); +void xen_drm_drv_free_object_unlocked(struct drm_gem_object *obj); + #endif /* __XEN_DRM_FRONT_H_ */ diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c index f0b85e094111..7b315c08bcfc 100644 --- a/drivers/gpu/drm/xen/xen_drm_front_gem.c +++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c @@ -56,6 +56,19 @@ static void gem_free_pages_array(struct xen_gem_object *xen_obj) xen_obj->pages = NULL; } +static const struct vm_operations_struct xen_drm_drv_vm_ops = { + .open = drm_gem_vm_open, + .close = drm_gem_vm_close, +}; + +static const struct drm_gem_object_funcs xen_drm_front_gem_object_funcs = { + .free = xen_drm_drv_free_object_unlocked, + .get_sg_table = xen_drm_front_gem_get_sg_table, + .vmap = xen_drm_front_gem_prime_vmap, + .vunmap = xen_drm_front_gem_prime_vunmap, + .vm_ops = &xen_drm_drv_vm_ops, +}; + static struct xen_gem_object *gem_create_obj(struct drm_device *dev, size_t size) { @@ -66,6 +79,8 @@ static struct xen_gem_object *gem_create_obj(struct drm_device *dev, if (!xen_obj) return ERR_PTR(-ENOMEM); + xen_obj->base.funcs = &xen_drm_front_gem_object_funcs; + ret = drm_gem_object_init(dev, &xen_obj->base, size); if (ret < 0) { kfree(xen_obj);
GEM object functions deprecate several similar callback interfaces in struct drm_driver. This patch replaces the per-driver callbacks with per-instance callbacks in xen. The only exception is gem_prime_mmap, which is non-trivial to convert. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/xen/xen_drm_front.c | 12 +----------- drivers/gpu/drm/xen/xen_drm_front.h | 2 ++ drivers/gpu/drm/xen/xen_drm_front_gem.c | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 11 deletions(-)