Message ID | 20221123031605.16680-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | [-next] fbdev: offb: allow build when DRM_OFDRM=m | expand |
Am 23.11.22 um 04:16 schrieb Randy Dunlap: > Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. > When the latter symbol is =m, kconfig downgrades (limits) the 'select's > under FB_OF to modular (=m). This causes undefined symbol references: > > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): undefined reference to `cfb_fillrect' > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): undefined reference to `cfb_copyarea' > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): undefined reference to `cfb_imageblit' > > Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the > selected FB_CFB_* symbols will become =y instead of =m. > > In tristate logic (for DRM_OFDRM), this changes the dependency from > !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) > to (boolean) > DRM_OFDRM != y == y, allowing the 'select's to cause the > FB_CFB_* symbols to =y instead of =m. > > Fixes: c8a17756c425 ("drm/ofdrm: Add ofdrm for Open Firmware framebuffers") > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Suggested-by: Masahiro Yamada <masahiroy@kernel.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Michal Suchánek <msuchanek@suse.de> > Cc: linuxppc-dev@lists.ozlabs.org > Cc: Daniel Vetter <daniel@ffwll.ch> > Cc: Helge Deller <deller@gmx.de> > Cc: linux-fbdev@vger.kernel.org > Cc: dri-devel@lists.freedesktop.org Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/video/fbdev/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig > --- a/drivers/video/fbdev/Kconfig > +++ b/drivers/video/fbdev/Kconfig > @@ -455,7 +455,7 @@ config FB_ATARI > config FB_OF > bool "Open Firmware frame buffer device support" > depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) > - depends on !DRM_OFDRM > + depends on DRM_OFDRM != y > select APERTURE_HELPERS > select FB_CFB_FILLRECT > select FB_CFB_COPYAREA
On Wed, Nov 23, 2022 at 09:02:54AM +0100, Thomas Zimmermann wrote: > > Am 23.11.22 um 04:16 schrieb Randy Dunlap: > > Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. > > When the latter symbol is =m, kconfig downgrades (limits) the 'select's > > under FB_OF to modular (=m). This causes undefined symbol references: > > > > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): undefined reference to `cfb_fillrect' > > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): undefined reference to `cfb_copyarea' > > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): undefined reference to `cfb_imageblit' > > > > Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the > > selected FB_CFB_* symbols will become =y instead of =m. > > > > In tristate logic (for DRM_OFDRM), this changes the dependency from > > !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) > > to (boolean) > > DRM_OFDRM != y == y, allowing the 'select's to cause the > > FB_CFB_* symbols to =y instead of =m. > > > > Fixes: c8a17756c425 ("drm/ofdrm: Add ofdrm for Open Firmware framebuffers") > > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > > Suggested-by: Masahiro Yamada <masahiroy@kernel.org> > > Cc: Thomas Zimmermann <tzimmermann@suse.de> > > Cc: Michal Suchánek <msuchanek@suse.de> > > Cc: linuxppc-dev@lists.ozlabs.org > > Cc: Daniel Vetter <daniel@ffwll.ch> > > Cc: Helge Deller <deller@gmx.de> > > Cc: linux-fbdev@vger.kernel.org > > Cc: dri-devel@lists.freedesktop.org > > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Michal Suchánek <msuchanek@suse.de> > > > --- > > drivers/video/fbdev/Kconfig | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig > > --- a/drivers/video/fbdev/Kconfig > > +++ b/drivers/video/fbdev/Kconfig > > @@ -455,7 +455,7 @@ config FB_ATARI > > config FB_OF > > bool "Open Firmware frame buffer device support" > > depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) > > - depends on !DRM_OFDRM > > + depends on DRM_OFDRM != y > > select APERTURE_HELPERS > > select FB_CFB_FILLRECT > > select FB_CFB_COPYAREA > > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Maxfeldstr. 5, 90409 Nürnberg, Germany > (HRB 36809, AG Nürnberg) > Geschäftsführer: Ivo Totev
On Wed, Nov 23, 2022, at 04:16, Randy Dunlap wrote: > Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. > When the latter symbol is =m, kconfig downgrades (limits) the 'select's > under FB_OF to modular (=m). This causes undefined symbol references: > > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): > undefined reference to `cfb_fillrect' > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): > undefined reference to `cfb_copyarea' > powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): > undefined reference to `cfb_imageblit' > > Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the > selected FB_CFB_* symbols will become =y instead of =m. > > In tristate logic (for DRM_OFDRM), this changes the dependency from > !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) > to (boolean) > DRM_OFDRM != y == y, allowing the 'select's to cause the > FB_CFB_* symbols to =y instead of =m. > Is it actually a useful configuration to have OFDRM=m and FB_OF=y though? I would expect in that case that the OFDRM driver never binds to a device because it's already owned by FB_OF. > diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig > --- a/drivers/video/fbdev/Kconfig > +++ b/drivers/video/fbdev/Kconfig > @@ -455,7 +455,7 @@ config FB_ATARI > config FB_OF > bool "Open Firmware frame buffer device support" > depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) > - depends on !DRM_OFDRM > + depends on DRM_OFDRM != y > select APERTURE_HELPERS I would instead make this 'depends on DRM_OFDRM=n', which completely eliminates configs that have both driver enabled. A nicer change would be to make FB_OF a tristate symbol, which makes it possible to load one of the two modules if both are enabled =m, while only allowing one of them to be =y if the other is completely disabled. It looks like offb was originally written to be usable as a loadable module, but Kconfig has prevented this since at least the start of the git history. Arnd
Hi Arnd, On 11/23/22 01:08, Arnd Bergmann wrote: > On Wed, Nov 23, 2022, at 04:16, Randy Dunlap wrote: >> Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. >> When the latter symbol is =m, kconfig downgrades (limits) the 'select's >> under FB_OF to modular (=m). This causes undefined symbol references: >> >> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): >> undefined reference to `cfb_fillrect' >> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): >> undefined reference to `cfb_copyarea' >> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): >> undefined reference to `cfb_imageblit' >> >> Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the >> selected FB_CFB_* symbols will become =y instead of =m. >> >> In tristate logic (for DRM_OFDRM), this changes the dependency from >> !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) >> to (boolean) >> DRM_OFDRM != y == y, allowing the 'select's to cause the >> FB_CFB_* symbols to =y instead of =m. >> > > Is it actually a useful configuration to have OFDRM=m and > FB_OF=y though? I would expect in that case that the OFDRM > driver never binds to a device because it's already owned > by FB_OF. > >> diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig >> --- a/drivers/video/fbdev/Kconfig >> +++ b/drivers/video/fbdev/Kconfig >> @@ -455,7 +455,7 @@ config FB_ATARI >> config FB_OF >> bool "Open Firmware frame buffer device support" >> depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) >> - depends on !DRM_OFDRM >> + depends on DRM_OFDRM != y >> select APERTURE_HELPERS > > I would instead make this 'depends on DRM_OFDRM=n', which > completely eliminates configs that have both driver enabled. Yep, that works for me. Thanks. Thomas, Michal, are you OK with that change? > A nicer change would be to make FB_OF a tristate symbol, > which makes it possible to load one of the two modules if > both are enabled =m, while only allowing one of them to > be =y if the other is completely disabled. It looks like > offb was originally written to be usable as a loadable module, > but Kconfig has prevented this since at least the start of > the git history.
Hi Am 23.11.22 um 11:02 schrieb Randy Dunlap: > Hi Arnd, > > On 11/23/22 01:08, Arnd Bergmann wrote: >> On Wed, Nov 23, 2022, at 04:16, Randy Dunlap wrote: >>> Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. >>> When the latter symbol is =m, kconfig downgrades (limits) the 'select's >>> under FB_OF to modular (=m). This causes undefined symbol references: >>> >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): >>> undefined reference to `cfb_fillrect' >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): >>> undefined reference to `cfb_copyarea' >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): >>> undefined reference to `cfb_imageblit' >>> >>> Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the >>> selected FB_CFB_* symbols will become =y instead of =m. >>> >>> In tristate logic (for DRM_OFDRM), this changes the dependency from >>> !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) >>> to (boolean) >>> DRM_OFDRM != y == y, allowing the 'select's to cause the >>> FB_CFB_* symbols to =y instead of =m. >>> >> >> Is it actually a useful configuration to have OFDRM=m and >> FB_OF=y though? I would expect in that case that the OFDRM >> driver never binds to a device because it's already owned >> by FB_OF. >> >>> diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig >>> --- a/drivers/video/fbdev/Kconfig >>> +++ b/drivers/video/fbdev/Kconfig >>> @@ -455,7 +455,7 @@ config FB_ATARI >>> config FB_OF >>> bool "Open Firmware frame buffer device support" >>> depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) >>> - depends on !DRM_OFDRM >>> + depends on DRM_OFDRM != y >>> select APERTURE_HELPERS >> >> I would instead make this 'depends on DRM_OFDRM=n', which >> completely eliminates configs that have both driver enabled. > > Yep, that works for me. Thanks. > > Thomas, Michal, are you OK with that change? Yes. > >> A nicer change would be to make FB_OF a tristate symbol, >> which makes it possible to load one of the two modules if >> both are enabled =m, while only allowing one of them to >> be =y if the other is completely disabled. It looks like >> offb was originally written to be usable as a loadable module, >> but Kconfig has prevented this since at least the start of >> the git history. >
On 11/23/22 02:02, Randy Dunlap wrote: > Hi Arnd, > > On 11/23/22 01:08, Arnd Bergmann wrote: >> On Wed, Nov 23, 2022, at 04:16, Randy Dunlap wrote: >>> Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. >>> When the latter symbol is =m, kconfig downgrades (limits) the 'select's >>> under FB_OF to modular (=m). This causes undefined symbol references: >>> >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): >>> undefined reference to `cfb_fillrect' >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): >>> undefined reference to `cfb_copyarea' >>> powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): >>> undefined reference to `cfb_imageblit' >>> >>> Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the >>> selected FB_CFB_* symbols will become =y instead of =m. >>> >>> In tristate logic (for DRM_OFDRM), this changes the dependency from >>> !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) >>> to (boolean) >>> DRM_OFDRM != y == y, allowing the 'select's to cause the >>> FB_CFB_* symbols to =y instead of =m. >>> >> >> Is it actually a useful configuration to have OFDRM=m and >> FB_OF=y though? I would expect in that case that the OFDRM >> driver never binds to a device because it's already owned >> by FB_OF. >> >>> diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig >>> --- a/drivers/video/fbdev/Kconfig >>> +++ b/drivers/video/fbdev/Kconfig >>> @@ -455,7 +455,7 @@ config FB_ATARI >>> config FB_OF >>> bool "Open Firmware frame buffer device support" >>> depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) >>> - depends on !DRM_OFDRM >>> + depends on DRM_OFDRM != y >>> select APERTURE_HELPERS >> >> I would instead make this 'depends on DRM_OFDRM=n', which >> completely eliminates configs that have both driver enabled. > > Yep, that works for me. Thanks. > > Thomas, Michal, are you OK with that change? > >> A nicer change would be to make FB_OF a tristate symbol, >> which makes it possible to load one of the two modules if >> both are enabled =m, while only allowing one of them to >> be =y if the other is completely disabled. It looks like >> offb was originally written to be usable as a loadable module, >> but Kconfig has prevented this since at least the start of >> the git history. ISTM that a distro would prefer to have both DFM_OFDRM and FB_OF as tristate symbols that could both be built as loadable modules, as Arnd describes above. I'll look into that.
diff -- a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -455,7 +455,7 @@ config FB_ATARI config FB_OF bool "Open Firmware frame buffer device support" depends on (FB = y) && PPC && (!PPC_PSERIES || PCI) - depends on !DRM_OFDRM + depends on DRM_OFDRM != y select APERTURE_HELPERS select FB_CFB_FILLRECT select FB_CFB_COPYAREA
Fix build when CONFIG_FB_OF=y and CONFIG_DRM_OFDRM=m. When the latter symbol is =m, kconfig downgrades (limits) the 'select's under FB_OF to modular (=m). This causes undefined symbol references: powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): undefined reference to `cfb_fillrect' powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): undefined reference to `cfb_copyarea' powerpc64-linux-ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): undefined reference to `cfb_imageblit' Fix this by allowing FB_OF any time that DRM_OFDRM != y so that the selected FB_CFB_* symbols will become =y instead of =m. In tristate logic (for DRM_OFDRM), this changes the dependency from !DRM_OFDRM == 2 - 1 == 1 => modular only (or disabled) to (boolean) DRM_OFDRM != y == y, allowing the 'select's to cause the FB_CFB_* symbols to =y instead of =m. Fixes: c8a17756c425 ("drm/ofdrm: Add ofdrm for Open Firmware framebuffers") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Suggested-by: Masahiro Yamada <masahiroy@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Michal Suchánek <msuchanek@suse.de> Cc: linuxppc-dev@lists.ozlabs.org Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Helge Deller <deller@gmx.de> Cc: linux-fbdev@vger.kernel.org Cc: dri-devel@lists.freedesktop.org --- drivers/video/fbdev/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)