Message ID | 20190520082216.26273-11-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fbcon notifier begone! | expand |
Hi Am 20.05.19 um 10:21 schrieb Daniel Vetter: ... > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > index fc3d34a8ea5b..ae2db31eeba7 100644 > --- a/drivers/video/fbdev/core/fbmem.c > +++ b/drivers/video/fbdev/core/fbmem.c > @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, > static int do_register_framebuffer(struct fb_info *fb_info) > { > int i, ret; > - struct fb_event event; > struct fb_videomode mode; > > if (fb_check_foreignness(fb_info)) > @@ -1723,7 +1722,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) > fb_add_videomode(&mode, &fb_info->modelist); > registered_fb[i] = fb_info; > > - event.info = fb_info; > if (!lockless_register_fb) > console_lock(); > else > @@ -1732,9 +1730,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) > ret = -ENODEV; > goto unlock_console; > } > - ret = 0; > > - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); > + ret = fbcon_fb_registered(fb_info); What about backlight drivers? [1] Apparently these also use the notifiers. [2] From my understanding, backlight drivers would stop working with this change. Best regards Thomas [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40 > unlock_fb_info(fb_info); > unlock_console: > if (!lockless_register_fb) > @@ -1771,7 +1768,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); > > static int do_unregister_framebuffer(struct fb_info *fb_info) > { > - struct fb_event event; > int ret; > > ret = unbind_console(fb_info); > @@ -1789,9 +1785,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) > registered_fb[fb_info->node] = NULL; > num_registered_fb--; > fb_cleanup_device(fb_info); > - event.info = fb_info; > console_lock(); > - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); > + fbcon_fb_unregistered(fb_info); > console_unlock(); > > /* this may free fb info */ > diff --git a/include/linux/fb.h b/include/linux/fb.h > index f52ef0ad6781..701abaf79c87 100644 > --- a/include/linux/fb.h > +++ b/include/linux/fb.h > @@ -136,10 +136,6 @@ struct fb_cursor_user { > #define FB_EVENT_RESUME 0x03 > /* An entry from the modelist was removed */ > #define FB_EVENT_MODE_DELETE 0x04 > -/* A driver registered itself */ > -#define FB_EVENT_FB_REGISTERED 0x05 > -/* A driver unregistered itself */ > -#define FB_EVENT_FB_UNREGISTERED 0x06 > /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ > #define FB_EVENT_GET_CONSOLE_MAP 0x07 > /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ > diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h > index f68a7db14165..94a71e9e1257 100644 > --- a/include/linux/fbcon.h > +++ b/include/linux/fbcon.h > @@ -4,9 +4,13 @@ > #ifdef CONFIG_FRAMEBUFFER_CONSOLE > void __init fb_console_init(void); > void __exit fb_console_exit(void); > +int fbcon_fb_registered(struct fb_info *info); > +void fbcon_fb_unregistered(struct fb_info *info); > #else > static inline void fb_console_init(void) {} > static inline void fb_console_exit(void) {} > +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } > +static inline void fbcon_fb_unregistered(struct fb_info *info) {} > #endif > > #endif /* _LINUX_FBCON_H */ >
Hi Am 20.05.19 um 10:33 schrieb Thomas Zimmermann: > Hi > > Am 20.05.19 um 10:21 schrieb Daniel Vetter: > ... >> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c >> index fc3d34a8ea5b..ae2db31eeba7 100644 >> --- a/drivers/video/fbdev/core/fbmem.c >> +++ b/drivers/video/fbdev/core/fbmem.c >> @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, >> static int do_register_framebuffer(struct fb_info *fb_info) >> { >> int i, ret; >> - struct fb_event event; >> struct fb_videomode mode; >> >> if (fb_check_foreignness(fb_info)) >> @@ -1723,7 +1722,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) >> fb_add_videomode(&mode, &fb_info->modelist); >> registered_fb[i] = fb_info; >> >> - event.info = fb_info; >> if (!lockless_register_fb) >> console_lock(); >> else >> @@ -1732,9 +1730,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) >> ret = -ENODEV; >> goto unlock_console; >> } >> - ret = 0; >> >> - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); >> + ret = fbcon_fb_registered(fb_info); > > What about backlight drivers? [1] Apparently these also use the > notifiers. [2] From my understanding, backlight drivers would stop > working with this change. I just saw that backlight drivers only care about blanking and unblanking. Never mind then. Best regards Thomas > > Best regards > Thomas > > [1] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight > [2] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40 > >> unlock_fb_info(fb_info); >> unlock_console: >> if (!lockless_register_fb) >> @@ -1771,7 +1768,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); >> >> static int do_unregister_framebuffer(struct fb_info *fb_info) >> { >> - struct fb_event event; >> int ret; >> >> ret = unbind_console(fb_info); >> @@ -1789,9 +1785,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) >> registered_fb[fb_info->node] = NULL; >> num_registered_fb--; >> fb_cleanup_device(fb_info); >> - event.info = fb_info; >> console_lock(); >> - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); >> + fbcon_fb_unregistered(fb_info); >> console_unlock(); >> >> /* this may free fb info */ >> diff --git a/include/linux/fb.h b/include/linux/fb.h >> index f52ef0ad6781..701abaf79c87 100644 >> --- a/include/linux/fb.h >> +++ b/include/linux/fb.h >> @@ -136,10 +136,6 @@ struct fb_cursor_user { >> #define FB_EVENT_RESUME 0x03 >> /* An entry from the modelist was removed */ >> #define FB_EVENT_MODE_DELETE 0x04 >> -/* A driver registered itself */ >> -#define FB_EVENT_FB_REGISTERED 0x05 >> -/* A driver unregistered itself */ >> -#define FB_EVENT_FB_UNREGISTERED 0x06 >> /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ >> #define FB_EVENT_GET_CONSOLE_MAP 0x07 >> /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ >> diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h >> index f68a7db14165..94a71e9e1257 100644 >> --- a/include/linux/fbcon.h >> +++ b/include/linux/fbcon.h >> @@ -4,9 +4,13 @@ >> #ifdef CONFIG_FRAMEBUFFER_CONSOLE >> void __init fb_console_init(void); >> void __exit fb_console_exit(void); >> +int fbcon_fb_registered(struct fb_info *info); >> +void fbcon_fb_unregistered(struct fb_info *info); >> #else >> static inline void fb_console_init(void) {} >> static inline void fb_console_exit(void) {} >> +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } >> +static inline void fbcon_fb_unregistered(struct fb_info *info) {} >> #endif >> >> #endif /* _LINUX_FBCON_H */ >> >
Hi Daniel. While browsing this nice patch series I stumbled upon a detail. On Mon, May 20, 2019 at 10:21:53AM +0200, Daniel Vetter wrote: > With > > commit 6104c37094e729f3d4ce65797002112735d49cd1 > Author: Daniel Vetter <daniel.vetter@ffwll.ch> > Date: Tue Aug 1 17:32:07 2017 +0200 > > fbcon: Make fbcon a built-time depency for fbdev > > we have a static dependency between fbcon and fbdev, and we can > replace the indirection through the notifier chain with a function > call. > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Hans de Goede <hdegoede@redhat.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: "Noralf Trønnes" <noralf@tronnes.org> > Cc: Yisheng Xie <ysxie@foxmail.com> > Cc: Peter Rosin <peda@axentia.se> > Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Mikulas Patocka <mpatocka@redhat.com> > Cc: linux-fbdev@vger.kernel.org > --- > diff --git a/include/linux/fb.h b/include/linux/fb.h > index f52ef0ad6781..701abaf79c87 100644 > --- a/include/linux/fb.h > +++ b/include/linux/fb.h > @@ -136,10 +136,6 @@ struct fb_cursor_user { > #define FB_EVENT_RESUME 0x03 > /* An entry from the modelist was removed */ > #define FB_EVENT_MODE_DELETE 0x04 > -/* A driver registered itself */ > -#define FB_EVENT_FB_REGISTERED 0x05 > -/* A driver unregistered itself */ > -#define FB_EVENT_FB_UNREGISTERED 0x06 > /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ > #define FB_EVENT_GET_CONSOLE_MAP 0x07 > /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ This breaks build of arch/arm/mach-pxa/am200epd.c thats uses FB_EVENT_FB_*REGISTERED: if (event == FB_EVENT_FB_REGISTERED) return am200_share_video_mem(info); else if (event == FB_EVENT_FB_UNREGISTERED) return am200_unshare_video_mem(info); Found while grepping for "FB_EVENT" so this is not a build error I triggered. Sam
On Mon, May 20, 2019 at 7:08 PM Sam Ravnborg <sam@ravnborg.org> wrote: > > Hi Daniel. > > While browsing this nice patch series I stumbled upon a detail. > > On Mon, May 20, 2019 at 10:21:53AM +0200, Daniel Vetter wrote: > > With > > > > commit 6104c37094e729f3d4ce65797002112735d49cd1 > > Author: Daniel Vetter <daniel.vetter@ffwll.ch> > > Date: Tue Aug 1 17:32:07 2017 +0200 > > > > fbcon: Make fbcon a built-time depency for fbdev > > > > we have a static dependency between fbcon and fbdev, and we can > > replace the indirection through the notifier chain with a function > > call. > > > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > > Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: Hans de Goede <hdegoede@redhat.com> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Cc: "Noralf Trønnes" <noralf@tronnes.org> > > Cc: Yisheng Xie <ysxie@foxmail.com> > > Cc: Peter Rosin <peda@axentia.se> > > Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl> > > Cc: Thomas Zimmermann <tzimmermann@suse.de> > > Cc: Mikulas Patocka <mpatocka@redhat.com> > > Cc: linux-fbdev@vger.kernel.org > > --- > > diff --git a/include/linux/fb.h b/include/linux/fb.h > > index f52ef0ad6781..701abaf79c87 100644 > > --- a/include/linux/fb.h > > +++ b/include/linux/fb.h > > @@ -136,10 +136,6 @@ struct fb_cursor_user { > > #define FB_EVENT_RESUME 0x03 > > /* An entry from the modelist was removed */ > > #define FB_EVENT_MODE_DELETE 0x04 > > -/* A driver registered itself */ > > -#define FB_EVENT_FB_REGISTERED 0x05 > > -/* A driver unregistered itself */ > > -#define FB_EVENT_FB_UNREGISTERED 0x06 > > /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ > > #define FB_EVENT_GET_CONSOLE_MAP 0x07 > > /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ > > This breaks build of arch/arm/mach-pxa/am200epd.c thats uses > FB_EVENT_FB_*REGISTERED: > > > if (event == FB_EVENT_FB_REGISTERED) > return am200_share_video_mem(info); > else if (event == FB_EVENT_FB_UNREGISTERED) > return am200_unshare_video_mem(info); > > > Found while grepping for "FB_EVENT" so this is not a build > error I triggered. Oh this is glorious :-/ Thanks a lot for spotting this, I guess I need to hack around on metronomefb a bit ... -Daniel
On Mon, May 20, 2019 at 10:37:53AM +0200, Thomas Zimmermann wrote: > Hi > > Am 20.05.19 um 10:33 schrieb Thomas Zimmermann: > > Hi > > > > Am 20.05.19 um 10:21 schrieb Daniel Vetter: > > ... > >> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > >> index fc3d34a8ea5b..ae2db31eeba7 100644 > >> --- a/drivers/video/fbdev/core/fbmem.c > >> +++ b/drivers/video/fbdev/core/fbmem.c > >> @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, > >> static int do_register_framebuffer(struct fb_info *fb_info) > >> { > >> int i, ret; > >> - struct fb_event event; > >> struct fb_videomode mode; > >> > >> if (fb_check_foreignness(fb_info)) > >> @@ -1723,7 +1722,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) > >> fb_add_videomode(&mode, &fb_info->modelist); > >> registered_fb[i] = fb_info; > >> > >> - event.info = fb_info; > >> if (!lockless_register_fb) > >> console_lock(); > >> else > >> @@ -1732,9 +1730,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) > >> ret = -ENODEV; > >> goto unlock_console; > >> } > >> - ret = 0; > >> > >> - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); > >> + ret = fbcon_fb_registered(fb_info); > > > > What about backlight drivers? [1] Apparently these also use the > > notifiers. [2] From my understanding, backlight drivers would stop > > working with this change. > > I just saw that backlight drivers only care about blanking and > unblanking. Never mind then. I did screw this up for one event for the mode changes. But should be fixed in the next series. I also added a patch to simplify the backlight/lcd notifier, since it doesn't need to filter events anymore after this series - the only events left are the ones backlight cares about. Cheers, Daniel > > Best regards > Thomas > > > > > Best regards > > Thomas > > > > [1] > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight > > [2] > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/video/backlight/backlight.c#n40 > > > >> unlock_fb_info(fb_info); > >> unlock_console: > >> if (!lockless_register_fb) > >> @@ -1771,7 +1768,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); > >> > >> static int do_unregister_framebuffer(struct fb_info *fb_info) > >> { > >> - struct fb_event event; > >> int ret; > >> > >> ret = unbind_console(fb_info); > >> @@ -1789,9 +1785,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) > >> registered_fb[fb_info->node] = NULL; > >> num_registered_fb--; > >> fb_cleanup_device(fb_info); > >> - event.info = fb_info; > >> console_lock(); > >> - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); > >> + fbcon_fb_unregistered(fb_info); > >> console_unlock(); > >> > >> /* this may free fb info */ > >> diff --git a/include/linux/fb.h b/include/linux/fb.h > >> index f52ef0ad6781..701abaf79c87 100644 > >> --- a/include/linux/fb.h > >> +++ b/include/linux/fb.h > >> @@ -136,10 +136,6 @@ struct fb_cursor_user { > >> #define FB_EVENT_RESUME 0x03 > >> /* An entry from the modelist was removed */ > >> #define FB_EVENT_MODE_DELETE 0x04 > >> -/* A driver registered itself */ > >> -#define FB_EVENT_FB_REGISTERED 0x05 > >> -/* A driver unregistered itself */ > >> -#define FB_EVENT_FB_UNREGISTERED 0x06 > >> /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ > >> #define FB_EVENT_GET_CONSOLE_MAP 0x07 > >> /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ > >> diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h > >> index f68a7db14165..94a71e9e1257 100644 > >> --- a/include/linux/fbcon.h > >> +++ b/include/linux/fbcon.h > >> @@ -4,9 +4,13 @@ > >> #ifdef CONFIG_FRAMEBUFFER_CONSOLE > >> void __init fb_console_init(void); > >> void __exit fb_console_exit(void); > >> +int fbcon_fb_registered(struct fb_info *info); > >> +void fbcon_fb_unregistered(struct fb_info *info); > >> #else > >> static inline void fb_console_init(void) {} > >> static inline void fb_console_exit(void) {} > >> +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } > >> +static inline void fbcon_fb_unregistered(struct fb_info *info) {} > >> #endif > >> > >> #endif /* _LINUX_FBCON_H */ > >> > > > > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany > GF: Felix Imendörffer, Mary Higgins, Sri Rasiah > HRB 21284 (AG Nürnberg) >
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index a1be589b692f..95af6bd783e8 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3115,14 +3115,14 @@ static int fbcon_fb_unbind(int idx) } /* called with console_lock held */ -static int fbcon_fb_unregistered(struct fb_info *info) +void fbcon_fb_unregistered(struct fb_info *info) { int i, idx; WARN_CONSOLE_UNLOCKED(); if (deferred_takeover) - return 0; + return; idx = info->node; for (i = first_fb_vc; i <= last_fb_vc; i++) { @@ -3151,8 +3151,6 @@ static int fbcon_fb_unregistered(struct fb_info *info) if (!num_registered_fb) do_unregister_con_driver(&fb_con); - - return 0; } /* called with console_lock held */ @@ -3211,7 +3209,7 @@ static inline void fbcon_select_primary(struct fb_info *info) #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */ /* called with console_lock held */ -static int fbcon_fb_registered(struct fb_info *info) +int fbcon_fb_registered(struct fb_info *info) { int ret = 0, i, idx; @@ -3355,12 +3353,6 @@ static int fbcon_event_notify(struct notifier_block *self, idx = info->node; ret = fbcon_fb_unbind(idx); break; - case FB_EVENT_FB_REGISTERED: - ret = fbcon_fb_registered(info); - break; - case FB_EVENT_FB_UNREGISTERED: - ret = fbcon_fb_unregistered(info); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index fc3d34a8ea5b..ae2db31eeba7 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1660,7 +1660,6 @@ MODULE_PARM_DESC(lockless_register_fb, static int do_register_framebuffer(struct fb_info *fb_info) { int i, ret; - struct fb_event event; struct fb_videomode mode; if (fb_check_foreignness(fb_info)) @@ -1723,7 +1722,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info; - event.info = fb_info; if (!lockless_register_fb) console_lock(); else @@ -1732,9 +1730,8 @@ static int do_register_framebuffer(struct fb_info *fb_info) ret = -ENODEV; goto unlock_console; } - ret = 0; - fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + ret = fbcon_fb_registered(fb_info); unlock_fb_info(fb_info); unlock_console: if (!lockless_register_fb) @@ -1771,7 +1768,6 @@ static int __unlink_framebuffer(struct fb_info *fb_info); static int do_unregister_framebuffer(struct fb_info *fb_info) { - struct fb_event event; int ret; ret = unbind_console(fb_info); @@ -1789,9 +1785,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info) registered_fb[fb_info->node] = NULL; num_registered_fb--; fb_cleanup_device(fb_info); - event.info = fb_info; console_lock(); - fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + fbcon_fb_unregistered(fb_info); console_unlock(); /* this may free fb info */ diff --git a/include/linux/fb.h b/include/linux/fb.h index f52ef0ad6781..701abaf79c87 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -136,10 +136,6 @@ struct fb_cursor_user { #define FB_EVENT_RESUME 0x03 /* An entry from the modelist was removed */ #define FB_EVENT_MODE_DELETE 0x04 -/* A driver registered itself */ -#define FB_EVENT_FB_REGISTERED 0x05 -/* A driver unregistered itself */ -#define FB_EVENT_FB_UNREGISTERED 0x06 /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ #define FB_EVENT_GET_CONSOLE_MAP 0x07 /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index f68a7db14165..94a71e9e1257 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -4,9 +4,13 @@ #ifdef CONFIG_FRAMEBUFFER_CONSOLE void __init fb_console_init(void); void __exit fb_console_exit(void); +int fbcon_fb_registered(struct fb_info *info); +void fbcon_fb_unregistered(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} +static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } +static inline void fbcon_fb_unregistered(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */
With commit 6104c37094e729f3d4ce65797002112735d49cd1 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Tue Aug 1 17:32:07 2017 +0200 fbcon: Make fbcon a built-time depency for fbdev we have a static dependency between fbcon and fbdev, and we can replace the indirection through the notifier chain with a function call. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "Noralf Trønnes" <noralf@tronnes.org> Cc: Yisheng Xie <ysxie@foxmail.com> Cc: Peter Rosin <peda@axentia.se> Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Mikulas Patocka <mpatocka@redhat.com> Cc: linux-fbdev@vger.kernel.org --- drivers/video/fbdev/core/fbcon.c | 14 +++----------- drivers/video/fbdev/core/fbmem.c | 9 ++------- include/linux/fb.h | 4 ---- include/linux/fbcon.h | 4 ++++ 4 files changed, 9 insertions(+), 22 deletions(-)