Den 25.03.2017 22.32, skrev Daniel Vetter:
On Sat, Mar 25, 2017 at 02:56:20PM +0100, Noralf Trønnes wrote:drm_driver.fops can't be shared since the owner then becomes tinydrm.ko. Move the fops declaration to the driver. Reported-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx>Since it only "breaks" unloading (and only if you force-unload without knowing what you're doing, which is explicitly a developer feature with a big warning) I think perfectly ok to push this in only for 4.12.--- drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 15 --------------- drivers/gpu/drm/tinydrm/mi0283qt.c | 13 +++++++++++++ include/drm/tinydrm/tinydrm.h | 4 +--- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c index 6a257dd..fd25c7e5 100644 --- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c @@ -122,21 +122,6 @@ void tinydrm_gem_cma_free_object(struct drm_gem_object *gem_obj) } EXPORT_SYMBOL_GPL(tinydrm_gem_cma_free_object);-const struct file_operations tinydrm_fops = {- .owner = THIS_MODULE, - .open = drm_open, - .release = drm_release, - .unlocked_ioctl = drm_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = drm_compat_ioctl, -#endif - .poll = drm_poll, - .read = drm_read, - .llseek = no_llseek, - .mmap = drm_gem_cma_mmap, -}; -EXPORT_SYMBOL(tinydrm_fops); - static struct drm_framebuffer * tinydrm_fb_create(struct drm_device *drm, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) diff --git a/drivers/gpu/drm/tinydrm/mi0283qt.c b/drivers/gpu/drm/tinydrm/mi0283qt.c index b29fe86..fdca37a 100644 --- a/drivers/gpu/drm/tinydrm/mi0283qt.c +++ b/drivers/gpu/drm/tinydrm/mi0283qt.c @@ -132,9 +132,22 @@ static const struct drm_display_mode mi0283qt_mode = { TINYDRM_MODE(320, 240, 58, 43), };+static const struct file_operations mi0283qt_fops = {+ .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, + .compat_ioctl = drm_compat_ioctl, + .poll = drm_poll, + .read = drm_read, + .llseek = no_llseek, + .mmap = drm_gem_cma_mmap, +};And then you could use the shiny new DECLARE_DRM_GEM_CMA_FOPS here! Can you pls respin on top of drm-misc-next?
Sure, I thought I neeeded to fix this in 4.11 first. Noralf.
Thanks, Daniel+ static struct drm_driver mi0283qt_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_ATOMIC, + .fops = &mi0283qt_fops, TINYDRM_GEM_DRIVER_OPS, .lastclose = tinydrm_lastclose, .debugfs_init = mipi_dbi_debugfs_init, diff --git a/include/drm/tinydrm/tinydrm.h b/include/drm/tinydrm/tinydrm.h index cf9ca20..00b800d 100644 --- a/include/drm/tinydrm/tinydrm.h +++ b/include/drm/tinydrm/tinydrm.h @@ -58,8 +58,7 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe) .gem_prime_mmap = drm_gem_cma_prime_mmap, \ .dumb_create = drm_gem_cma_dumb_create, \ .dumb_map_offset = drm_gem_cma_dumb_map_offset, \ - .dumb_destroy = drm_gem_dumb_destroy, \ - .fops = &tinydrm_fops + .dumb_destroy = drm_gem_dumb_destroy/*** TINYDRM_MODE - tinydrm display mode @@ -84,7 +83,6 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe) .type = DRM_MODE_TYPE_DRIVER, \ .clock = 1 /* pass validation */-extern const struct file_operations tinydrm_fops;void tinydrm_lastclose(struct drm_device *drm); void tinydrm_gem_cma_free_object(struct drm_gem_object *gem_obj); struct drm_gem_object * -- 2.10.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel