Message ID | 20220131210552.482606-22-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | some fbcon patches, mostly locking | expand |
Hi Daniel, I love your patch! Yet something to improve: [auto build test ERROR on tegra-drm/drm/tegra/for-next] [also build test ERROR on drm/drm-next linus/master v5.17-rc2 next-20220131] [cannot apply to airlied/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Daniel-Vetter/some-fbcon-patches-mostly-locking/20220201-050907 base: git://anongit.freedesktop.org/tegra/linux.git drm/tegra/for-next config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220201/202202011603.vczWPod7-lkp@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/245da5ab93b17c0cf1521713d5bde655a72efb65 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Daniel-Vetter/some-fbcon-patches-mostly-locking/20220201-050907 git checkout 245da5ab93b17c0cf1521713d5bde655a72efb65 # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/staging/olpc_dcon/olpc_dcon.c: In function 'dcon_probe': >> drivers/staging/olpc_dcon/olpc_dcon.c:605:6: error: 'num_registered_fb' undeclared (first use in this function); did you mean 'WB_registered'? 605 | if (num_registered_fb < 1) { | ^~~~~~~~~~~~~~~~~ | WB_registered drivers/staging/olpc_dcon/olpc_dcon.c:605:6: note: each undeclared identifier is reported only once for each function it appears in >> drivers/staging/olpc_dcon/olpc_dcon.c:610:17: error: 'registered_fb' undeclared (first use in this function) 610 | dcon->fbinfo = registered_fb[0]; | ^~~~~~~~~~~~~ vim +605 drivers/staging/olpc_dcon/olpc_dcon.c 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 584 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 585 static int dcon_probe(struct i2c_client *client, const struct i2c_device_id *id) 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 586 { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 587 struct dcon_priv *dcon; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 588 int rc, i, j; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 589 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 590 if (!pdata) 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 591 return -ENXIO; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 592 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 593 dcon = kzalloc(sizeof(*dcon), GFP_KERNEL); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 594 if (!dcon) 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 595 return -ENOMEM; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 596 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 597 dcon->client = client; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 598 init_waitqueue_head(&dcon->waitq); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 599 INIT_WORK(&dcon->switch_source, dcon_source_switch); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 600 dcon->reboot_nb.notifier_call = dcon_reboot_notify; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 601 dcon->reboot_nb.priority = -1; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 602 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 603 i2c_set_clientdata(client, dcon); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 604 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 @605 if (num_registered_fb < 1) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 606 dev_err(&client->dev, "DCON driver requires a registered fb\n"); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 607 rc = -EIO; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 608 goto einit; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 609 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 @610 dcon->fbinfo = registered_fb[0]; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 611 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 612 rc = dcon_hw_init(dcon, 1); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 613 if (rc) 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 614 goto einit; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 615 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 616 /* Add the DCON device */ 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 617 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 618 dcon_device = platform_device_alloc("dcon", -1); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 619 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 620 if (!dcon_device) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 621 pr_err("Unable to create the DCON device\n"); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 622 rc = -ENOMEM; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 623 goto eirq; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 624 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 625 rc = platform_device_add(dcon_device); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 626 platform_set_drvdata(dcon_device, dcon); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 627 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 628 if (rc) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 629 pr_err("Unable to add the DCON device\n"); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 630 goto edev; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 631 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 632 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 633 for (i = 0; i < ARRAY_SIZE(dcon_device_files); i++) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 634 rc = device_create_file(&dcon_device->dev, 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 635 &dcon_device_files[i]); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 636 if (rc) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 637 dev_err(&dcon_device->dev, "Cannot create sysfs file\n"); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 638 goto ecreate; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 639 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 640 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 641 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 642 dcon->bl_val = dcon_read(dcon, DCON_REG_BRIGHT) & 0x0F; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 643 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 644 /* Add the backlight device for the DCON */ 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 645 dcon_bl_props.brightness = dcon->bl_val; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 646 dcon->bl_dev = backlight_device_register("dcon-bl", &dcon_device->dev, 848d9eabcaebf21 Zebulon McCorkle 2017-11-21 647 dcon, &dcon_bl_ops, 848d9eabcaebf21 Zebulon McCorkle 2017-11-21 648 &dcon_bl_props); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 649 if (IS_ERR(dcon->bl_dev)) { 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 650 dev_err(&client->dev, "cannot register backlight dev (%ld)\n", 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 651 PTR_ERR(dcon->bl_dev)); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 652 dcon->bl_dev = NULL; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 653 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 654 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 655 register_reboot_notifier(&dcon->reboot_nb); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 656 atomic_notifier_chain_register(&panic_notifier_list, &dcon_panic_nb); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 657 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 658 return 0; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 659 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 660 ecreate: 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 661 for (j = 0; j < i; j++) 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 662 device_remove_file(&dcon_device->dev, &dcon_device_files[j]); 4996b4610767064 Jing Xiangfeng 2020-11-20 663 platform_device_del(dcon_device); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 664 edev: 4996b4610767064 Jing Xiangfeng 2020-11-20 665 platform_device_put(dcon_device); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 666 dcon_device = NULL; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 667 eirq: 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 668 free_irq(DCON_IRQ, dcon); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 669 einit: 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 670 kfree(dcon); 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 671 return rc; 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 672 } 53c43c5ca13328a Greg Kroah-Hartman 2016-04-04 673 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Daniel, Thanks for your patch! On Tue, Feb 1, 2022 at 9:50 PM Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > Well except when the olpc dcon fbdev driver is enabled, that thing > digs around in there in rather unfixable ways. Can't the actual frame buffer driver (which one?) used on olpc export a pointer to its fb_info? > --- a/drivers/video/fbdev/core/fbmem.c > +++ b/drivers/video/fbdev/core/fbmem.c > @@ -48,10 +48,14 @@ > static DEFINE_MUTEX(registration_lock); > > struct fb_info *registered_fb[FB_MAX] __read_mostly; > -EXPORT_SYMBOL(registered_fb); > - > int num_registered_fb __read_mostly; > +#if IS_ENABLED(CONFIG_OLPC_DCON) CONFIG_FB_OLPC_DCON (everywhere), cfr. the build failure reported by the robot. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Fri, Feb 04, 2022 at 09:30:56AM +0100, Geert Uytterhoeven wrote: > Hi Daniel, > > Thanks for your patch! > > On Tue, Feb 1, 2022 at 9:50 PM Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > > Well except when the olpc dcon fbdev driver is enabled, that thing > > digs around in there in rather unfixable ways. > > Can't the actual frame buffer driver (which one?) used on olpc export > a pointer to its fb_info? Yeah that might be the right thing to do, I'll add that as a stagin TODO in the next iteration. > > > --- a/drivers/video/fbdev/core/fbmem.c > > +++ b/drivers/video/fbdev/core/fbmem.c > > @@ -48,10 +48,14 @@ > > static DEFINE_MUTEX(registration_lock); > > > > struct fb_info *registered_fb[FB_MAX] __read_mostly; > > -EXPORT_SYMBOL(registered_fb); > > - > > int num_registered_fb __read_mostly; > > +#if IS_ENABLED(CONFIG_OLPC_DCON) > > CONFIG_FB_OLPC_DCON (everywhere), cfr. the build failure reported > by the robot. Yeah realized that too and fixed it locally. Cheers, Daniel > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds
Hi Daniel, On Mon, Jan 31, 2022 at 10:05:52PM +0100, Daniel Vetter wrote: > Well except when the olpc dcon fbdev driver is enabled, that thing > digs around in there in rather unfixable ways. > > Cc oldc_dcon maintainers as fyi. > > Cc: Jens Frederich <jfrederich@gmail.com> > Cc: Jon Nettleton <jon.nettleton@gmail.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: linux-staging@lists.linux.dev > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Daniel Vetter <daniel@ffwll.ch> > Cc: Helge Deller <deller@gmx.de> > Cc: Matthew Wilcox <willy@infradead.org> > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> > Cc: Zhen Lei <thunder.leizhen@huawei.com> > Cc: Alex Deucher <alexander.deucher@amd.com> > Cc: Xiyu Yang <xiyuyang19@fudan.edu.cn> > Cc: linux-fbdev@vger.kernel.org > Cc: Zheyu Ma <zheyuma97@gmail.com> > Cc: Guenter Roeck <linux@roeck-us.net> with the build thingy fixed: Acked-by: Sam Ravnborg <sam@ravnborg.org> I do wonder if there is a more clean way to trigger a blank in the main fbdev driver from the olpc driver. The current hack is not nice and it would be good to see it gone. Sam > --- > drivers/video/fbdev/core/fbmem.c | 8 ++++++-- > include/linux/fb.h | 7 +++---- > 2 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > index 904ef1250677..dad6572942fa 100644 > --- a/drivers/video/fbdev/core/fbmem.c > +++ b/drivers/video/fbdev/core/fbmem.c > @@ -48,10 +48,14 @@ > static DEFINE_MUTEX(registration_lock); > > struct fb_info *registered_fb[FB_MAX] __read_mostly; > -EXPORT_SYMBOL(registered_fb); > - > int num_registered_fb __read_mostly; > +#if IS_ENABLED(CONFIG_OLPC_DCON) > +EXPORT_SYMBOL(registered_fb); > EXPORT_SYMBOL(num_registered_fb); > +#endif > +#define for_each_registered_fb(i) \ > + for (i = 0; i < FB_MAX; i++) \ > + if (!registered_fb[i]) {} else > > bool fb_center_logo __read_mostly; > > diff --git a/include/linux/fb.h b/include/linux/fb.h > index a8a00d2ba1f3..e236817502c2 100644 > --- a/include/linux/fb.h > +++ b/include/linux/fb.h > @@ -622,16 +622,15 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var, > extern int fb_get_options(const char *name, char **option); > extern int fb_new_modelist(struct fb_info *info); > > +#if IS_ENABLED(CONFIG_OLPC_DCON) > extern struct fb_info *registered_fb[FB_MAX]; > + > extern int num_registered_fb; > +#endif > extern bool fb_center_logo; > extern int fb_logo_count; > extern struct class *fb_class; > > -#define for_each_registered_fb(i) \ > - for (i = 0; i < FB_MAX; i++) \ > - if (!registered_fb[i]) {} else > - > static inline void lock_fb_info(struct fb_info *info) > { > mutex_lock(&info->lock); > -- > 2.33.0
On Tue, Feb 08, 2022 at 08:00:38PM +0100, Sam Ravnborg wrote: > Hi Daniel, > > On Mon, Jan 31, 2022 at 10:05:52PM +0100, Daniel Vetter wrote: > > Well except when the olpc dcon fbdev driver is enabled, that thing > > digs around in there in rather unfixable ways. > > > > Cc oldc_dcon maintainers as fyi. > > > > Cc: Jens Frederich <jfrederich@gmail.com> > > Cc: Jon Nettleton <jon.nettleton@gmail.com> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Cc: linux-staging@lists.linux.dev > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > > Cc: Daniel Vetter <daniel@ffwll.ch> > > Cc: Helge Deller <deller@gmx.de> > > Cc: Matthew Wilcox <willy@infradead.org> > > Cc: Sam Ravnborg <sam@ravnborg.org> > > Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> > > Cc: Zhen Lei <thunder.leizhen@huawei.com> > > Cc: Alex Deucher <alexander.deucher@amd.com> > > Cc: Xiyu Yang <xiyuyang19@fudan.edu.cn> > > Cc: linux-fbdev@vger.kernel.org > > Cc: Zheyu Ma <zheyuma97@gmail.com> > > Cc: Guenter Roeck <linux@roeck-us.net> > > with the build thingy fixed: > Acked-by: Sam Ravnborg <sam@ravnborg.org> > > I do wonder if there is a more clean way to trigger a blank > in the main fbdev driver from the olpc driver. > > The current hack is not nice and it would be good to see it gone. Yeah this is just badly engineered. In drm we'd do this with the self refresh helpers, which pretty much give you this exact functionality, but in the helpers, while not randomly breaking actual visible behaviour of the display driver. Well ok the illusion is not perfect, since if the display is suspended the next page flip will take a tad longer. But that's it. I'll also add this to the TODO. -Daniel > > Sam > > > --- > > drivers/video/fbdev/core/fbmem.c | 8 ++++++-- > > include/linux/fb.h | 7 +++---- > > 2 files changed, 9 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c > > index 904ef1250677..dad6572942fa 100644 > > --- a/drivers/video/fbdev/core/fbmem.c > > +++ b/drivers/video/fbdev/core/fbmem.c > > @@ -48,10 +48,14 @@ > > static DEFINE_MUTEX(registration_lock); > > > > struct fb_info *registered_fb[FB_MAX] __read_mostly; > > -EXPORT_SYMBOL(registered_fb); > > - > > int num_registered_fb __read_mostly; > > +#if IS_ENABLED(CONFIG_OLPC_DCON) > > +EXPORT_SYMBOL(registered_fb); > > EXPORT_SYMBOL(num_registered_fb); > > +#endif > > +#define for_each_registered_fb(i) \ > > + for (i = 0; i < FB_MAX; i++) \ > > + if (!registered_fb[i]) {} else > > > > bool fb_center_logo __read_mostly; > > > > diff --git a/include/linux/fb.h b/include/linux/fb.h > > index a8a00d2ba1f3..e236817502c2 100644 > > --- a/include/linux/fb.h > > +++ b/include/linux/fb.h > > @@ -622,16 +622,15 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var, > > extern int fb_get_options(const char *name, char **option); > > extern int fb_new_modelist(struct fb_info *info); > > > > +#if IS_ENABLED(CONFIG_OLPC_DCON) > > extern struct fb_info *registered_fb[FB_MAX]; > > + > > extern int num_registered_fb; > > +#endif > > extern bool fb_center_logo; > > extern int fb_logo_count; > > extern struct class *fb_class; > > > > -#define for_each_registered_fb(i) \ > > - for (i = 0; i < FB_MAX; i++) \ > > - if (!registered_fb[i]) {} else > > - > > static inline void lock_fb_info(struct fb_info *info) > > { > > mutex_lock(&info->lock); > > -- > > 2.33.0
On Tue, Feb 08, 2022 at 03:04:51PM +0100, Daniel Vetter wrote: > On Fri, Feb 04, 2022 at 09:30:56AM +0100, Geert Uytterhoeven wrote: > > Hi Daniel, > > > > Thanks for your patch! > > > > On Tue, Feb 1, 2022 at 9:50 PM Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > > > Well except when the olpc dcon fbdev driver is enabled, that thing > > > digs around in there in rather unfixable ways. > > > > Can't the actual frame buffer driver (which one?) used on olpc export > > a pointer to its fb_info? > > Yeah that might be the right thing to do, I'll add that as a stagin TODO > in the next iteration. Well I tried to do that and noticed I've done that already in 2019: commit af1440368837f19ac7d5dec05d929d91308f5a90 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Tue May 28 11:03:03 2019 +0200 staging/olpc_dcon: Add drm conversion to TODO TODO already explains how this should be done correctly in drm. Well maybe we should add that stitching the drivers together should be done with component.c or something like that. -Daniel > > > > > > --- a/drivers/video/fbdev/core/fbmem.c > > > +++ b/drivers/video/fbdev/core/fbmem.c > > > @@ -48,10 +48,14 @@ > > > static DEFINE_MUTEX(registration_lock); > > > > > > struct fb_info *registered_fb[FB_MAX] __read_mostly; > > > -EXPORT_SYMBOL(registered_fb); > > > - > > > int num_registered_fb __read_mostly; > > > +#if IS_ENABLED(CONFIG_OLPC_DCON) > > > > CONFIG_FB_OLPC_DCON (everywhere), cfr. the build failure reported > > by the robot. > > Yeah realized that too and fixed it locally. > > Cheers, Daniel > > > > > Gr{oetje,eeting}s, > > > > Geert > > > > -- > > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > > > In personal conversations with technical people, I call myself a hacker. But > > when I'm talking to journalists I just say "programmer" or something like that. > > -- Linus Torvalds > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 904ef1250677..dad6572942fa 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -48,10 +48,14 @@ static DEFINE_MUTEX(registration_lock); struct fb_info *registered_fb[FB_MAX] __read_mostly; -EXPORT_SYMBOL(registered_fb); - int num_registered_fb __read_mostly; +#if IS_ENABLED(CONFIG_OLPC_DCON) +EXPORT_SYMBOL(registered_fb); EXPORT_SYMBOL(num_registered_fb); +#endif +#define for_each_registered_fb(i) \ + for (i = 0; i < FB_MAX; i++) \ + if (!registered_fb[i]) {} else bool fb_center_logo __read_mostly; diff --git a/include/linux/fb.h b/include/linux/fb.h index a8a00d2ba1f3..e236817502c2 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -622,16 +622,15 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var, extern int fb_get_options(const char *name, char **option); extern int fb_new_modelist(struct fb_info *info); +#if IS_ENABLED(CONFIG_OLPC_DCON) extern struct fb_info *registered_fb[FB_MAX]; + extern int num_registered_fb; +#endif extern bool fb_center_logo; extern int fb_logo_count; extern struct class *fb_class; -#define for_each_registered_fb(i) \ - for (i = 0; i < FB_MAX; i++) \ - if (!registered_fb[i]) {} else - static inline void lock_fb_info(struct fb_info *info) { mutex_lock(&info->lock);
Well except when the olpc dcon fbdev driver is enabled, that thing digs around in there in rather unfixable ways. Cc oldc_dcon maintainers as fyi. Cc: Jens Frederich <jfrederich@gmail.com> Cc: Jon Nettleton <jon.nettleton@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: linux-staging@lists.linux.dev Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Helge Deller <deller@gmx.de> Cc: Matthew Wilcox <willy@infradead.org> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Cc: Zhen Lei <thunder.leizhen@huawei.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Xiyu Yang <xiyuyang19@fudan.edu.cn> Cc: linux-fbdev@vger.kernel.org Cc: Zheyu Ma <zheyuma97@gmail.com> Cc: Guenter Roeck <linux@roeck-us.net> --- drivers/video/fbdev/core/fbmem.c | 8 ++++++-- include/linux/fb.h | 7 +++---- 2 files changed, 9 insertions(+), 6 deletions(-)