* [PATCH] drm/tinydrm: Fix for v.4.11 @ 2017-03-25 13:56 Noralf Trønnes 2017-03-25 13:56 ` [PATCH] drm/tinydrm: Fix drm_driver.fops.owner Noralf Trønnes 0 siblings, 1 reply; 5+ messages in thread From: Noralf Trønnes @ 2017-03-25 13:56 UTC (permalink / raw) To: dri-devel; +Cc: daniel.vetter I guess this should be fixed before stable. Later the DEFINE_DRM_GEM_CMA_FOPS macro can be used. Noralf. Noralf Trønnes (1): drm/tinydrm: Fix drm_driver.fops.owner 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(-) -- 2.10.2 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] drm/tinydrm: Fix drm_driver.fops.owner 2017-03-25 13:56 [PATCH] drm/tinydrm: Fix for v.4.11 Noralf Trønnes @ 2017-03-25 13:56 ` Noralf Trønnes 2017-03-25 21:32 ` Daniel Vetter 0 siblings, 1 reply; 5+ messages in thread From: Noralf Trønnes @ 2017-03-25 13:56 UTC (permalink / raw) To: dri-devel; +Cc: daniel.vetter 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@intel.com> Signed-off-by: Noralf Trønnes <noralf@tronnes.org> --- 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, +}; + 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/tinydrm: Fix drm_driver.fops.owner 2017-03-25 13:56 ` [PATCH] drm/tinydrm: Fix drm_driver.fops.owner Noralf Trønnes @ 2017-03-25 21:32 ` Daniel Vetter 2017-03-26 0:56 ` Noralf Trønnes 0 siblings, 1 reply; 5+ messages in thread From: Daniel Vetter @ 2017-03-25 21:32 UTC (permalink / raw) To: Noralf Trønnes; +Cc: daniel.vetter, dri-devel 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@intel.com> > Signed-off-by: Noralf Trønnes <noralf@tronnes.org> 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? 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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/tinydrm: Fix drm_driver.fops.owner 2017-03-25 21:32 ` Daniel Vetter @ 2017-03-26 0:56 ` Noralf Trønnes 2017-03-27 6:46 ` Daniel Vetter 0 siblings, 1 reply; 5+ messages in thread From: Noralf Trønnes @ 2017-03-26 0:56 UTC (permalink / raw) To: Daniel Vetter; +Cc: daniel.vetter, dri-devel 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@intel.com> >> Signed-off-by: Noralf Trønnes <noralf@tronnes.org> > 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@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/tinydrm: Fix drm_driver.fops.owner 2017-03-26 0:56 ` Noralf Trønnes @ 2017-03-27 6:46 ` Daniel Vetter 0 siblings, 0 replies; 5+ messages in thread From: Daniel Vetter @ 2017-03-27 6:46 UTC (permalink / raw) To: Noralf Trønnes; +Cc: daniel.vetter, dri-devel On Sun, Mar 26, 2017 at 01:56:55AM +0100, Noralf Trønnes wrote: > > 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@intel.com> > > > Signed-off-by: Noralf Trønnes <noralf@tronnes.org> > > 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. As a rule of thumb, -fixes has the same rules as stable backports. And one of the guidelines there is that it must be a fix for a real problem, i.e. something a users could conceivably hit. Entirely theoretic race condiditions, bugs in module unload code and similar things you'll never get a bug report for don't qualify. -Daniel > > 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@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-03-27 6:46 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-03-25 13:56 [PATCH] drm/tinydrm: Fix for v.4.11 Noralf Trønnes 2017-03-25 13:56 ` [PATCH] drm/tinydrm: Fix drm_driver.fops.owner Noralf Trønnes 2017-03-25 21:32 ` Daniel Vetter 2017-03-26 0:56 ` Noralf Trønnes 2017-03-27 6:46 ` Daniel Vetter
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.