Re: build failure in linux-next: offb missing fb helpers

From: Thomas Zimmermann
Date: Sun Nov 20 2022 - 12:47:31 EST


Hi

Am 19.11.22 um 19:15 schrieb Randy Dunlap:
Hi,

On 11/19/22 07:37, Michal Suchánek wrote:
Hello,

On Sat, Nov 19, 2022 at 10:27:04PM +0900, Masahiro Yamada wrote:
On Sat, Nov 19, 2022 at 3:20 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:

Hi--

[adding Masahiro-san]


On 11/18/22 07:03, Michal Suchánek wrote:
Hello,

I am seeing these errors:

[ 3825s] AR built-in.a
[ 3827s] AR vmlinux.a
[ 3835s] LD vmlinux.o
[ 3835s] OBJCOPY modules.builtin.modinfo
[ 3835s] GEN modules.builtin
[ 3835s] GEN .vmlinux.objs
[ 3848s] MODPOST Module.symvers
[ 3848s] CC .vmlinux.export.o
[ 3849s] UPD include/generated/utsversion.h
[ 3849s] CC init/version-timestamp.o
[ 3849s] LD .tmp_vmlinux.btf
[ 3864s] ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x58): undefined
reference to `cfb_fillrect'
[ 3864s] ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x60): undefined
reference to `cfb_copyarea'
[ 3864s] ld: drivers/video/fbdev/offb.o:(.data.rel.ro+0x68): undefined
reference to `cfb_imageblit'

cfb_fillrect is provided by drivers/video/fbdev/core/cfbfillrect.c

It is compiled when CONFIG_FB_CFB_FILLRECT
drivers/video/fbdev/core/Makefile:obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o

drivers/video/fbdev/Makefile:obj-$(CONFIG_FB_OF) += offb.o
is compiled when CONFIG_FB_OF

It selects CONFIG_FB_CFB_FILLRECT
config FB_OF
bool "Open Firmware frame buffer device support"
depends on (FB = y) && PPC && (!PPC_PSERIES || PCI)
select APERTURE_HELPERS
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
select FB_MACMODES

The config has FB_OF built-in and FB_CFB_FILLRECT modular
config/ppc64le/vanilla:CONFIG_FB_CFB_FILLRECT=m
config/ppc64le/vanilla:CONFIG_FB_CFB_COPYAREA=m
config/ppc64le/vanilla:CONFIG_FB_CFB_IMAGEBLIT=m
config/ppc64le/vanilla:CONFIG_FB_OF=y

It only depends on FB which mut be built-in for FB_OF
config FB_CFB_FILLRECT
tristate
depends on FB

Is select in kconfig broken?

Attachnig the config in question.

The symbol info from xconfig says:

Symbol: FB_CFB_FILLRECT [=m]
Type : tristate
Defined at drivers/video/fbdev/Kconfig:69
Depends on: HAS_IOMEM [=y] && FB [=y]
Selected by [m]:
[deleted]
- FB_OF [=y] && HAS_IOMEM [=y] && FB [=y]=y && PPC [=y] && (!PPC_PSERIES [=y] || PCI [=y]) && !DRM_OFDRM [=m]

I don't see why the 'select' from (bool) FB_OF would leave FB_CFB_FILLRECT (and the others)
as =m instead of =y.

Hopefully Masahiro can shed some light on this.

--
~Randy


The reason is shown in your paste of help message:

"&& !DRM_OFDRM [=m]" downgrades it to "selected by m"

To aid this particular case, the following will select
FB_CFB_FILLRECT=y.



Thanks again for your help.



diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 66f36b69e8f3..2bcf8627819f 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -458,7 +458,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

Thanks for clarification.

This change fixess the config for me.


Thomas, is this change to DRM_OFDRM under FB_OF acceptable to you?

Sure, thanks for helping.

The only reason for adding this Kconfig rule is that it doesn't make much sense to have offb and ofdrm enabled at the same time. BTW we have a similar rule for simplefb/simpledrm, which never made any problems.

Best regards
Thomas



Or, perhaps "depends on DRM_OFDRM = n"
I do not know the intention of this dependency.

Recommendation is to use "depends on" instead of "select" though.



BTW, this is similar to what you asked before.

https://lore.kernel.org/linux-kbuild/e1a6228d-1341-6264-d97a-e2bd52a65c82@xxxxxxxxxxxxx/


I tried to fix it in the past, but the issue was not as shallow as I
had expected.
I did not get around to revisiting this topic.

https://patchwork.kernel.org/project/linux-kbuild/patch/1543216969-2227-1-git-send-email-yamada.masahiro@xxxxxxxxxxxxx/



--
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

Attachment: OpenPGP_signature
Description: OpenPGP digital signature