Message ID | 20210816064835.332785-1-liu.yun@linux.dev (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/fb: Fix randconfig builds | expand |
On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: > From: Jackie Liu <liuyun01@kylinos.cn> > > When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the > compilation will fail. we need make that dependency explicit. What's the failure mode? Using select here is a bad idea. BR, Jani. > > Reported-by: k2ci <kernel-bot@kylinos.cn> > Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> > --- > drivers/gpu/drm/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index 7ff89690a976..346a518b5119 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS > config DRM_FBDEV_EMULATION > bool "Enable legacy fbdev support for your modesetting driver" > depends on DRM > - depends on FB > + select FB > select DRM_KMS_HELPER > select FB_CFB_FILLRECT > select FB_CFB_COPYAREA
Hi Jani. My CI report an randconfigs build failed. there are: drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to `framebuffer_release' drm_fb_helper.c:(.text+0x1e85): undefined reference to `unregister_framebuffer' drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to `framebuffer_release' drm_fb_helper.c:(.text+0x1f96): undefined reference to `fb_deferred_io_cleanup' drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' The main reason is because DRM_FBDEV_EMULATION is built-in, and CONFIG_FB is compiled as a module. -- Jackie Liu 在 2021/8/16 下午3:01, Jani Nikula 写道: > On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >> From: Jackie Liu <liuyun01@kylinos.cn> >> >> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >> compilation will fail. we need make that dependency explicit. > > What's the failure mode? Using select here is a bad idea. > > BR, > Jani. > >> >> Reported-by: k2ci <kernel-bot@kylinos.cn> >> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >> --- >> drivers/gpu/drm/Kconfig | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >> index 7ff89690a976..346a518b5119 100644 >> --- a/drivers/gpu/drm/Kconfig >> +++ b/drivers/gpu/drm/Kconfig >> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >> config DRM_FBDEV_EMULATION >> bool "Enable legacy fbdev support for your modesetting driver" >> depends on DRM >> - depends on FB >> + select FB >> select DRM_KMS_HELPER >> select FB_CFB_FILLRECT >> select FB_CFB_COPYAREA >
After commit f611b1e7624c, we change select FB to depends on FB. How about this: diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 7ff89690a976..cd129d96e649 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS config DRM_FBDEV_EMULATION bool "Enable legacy fbdev support for your modesetting driver" depends on DRM - depends on FB + depends on FB && FB != m select DRM_KMS_HELPER select FB_CFB_FILLRECT select FB_CFB_COPYAREA -- Jackie Liu 在 2021/8/16 下午3:01, Jani Nikula 写道: > On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >> From: Jackie Liu <liuyun01@kylinos.cn> >> >> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >> compilation will fail. we need make that dependency explicit. > > What's the failure mode? Using select here is a bad idea. > > BR, > Jani. > >> >> Reported-by: k2ci <kernel-bot@kylinos.cn> >> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >> --- >> drivers/gpu/drm/Kconfig | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >> index 7ff89690a976..346a518b5119 100644 >> --- a/drivers/gpu/drm/Kconfig >> +++ b/drivers/gpu/drm/Kconfig >> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >> config DRM_FBDEV_EMULATION >> bool "Enable legacy fbdev support for your modesetting driver" >> depends on DRM >> - depends on FB >> + select FB >> select DRM_KMS_HELPER >> select FB_CFB_FILLRECT >> select FB_CFB_COPYAREA >
On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: > Hi Jani. > > My CI report an randconfigs build failed. there are: > > drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' > drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' > drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' > ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' > ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' > ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to > `framebuffer_release' > drm_fb_helper.c:(.text+0x1e85): undefined reference to > `unregister_framebuffer' > drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' > ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to > `framebuffer_release' > drm_fb_helper.c:(.text+0x1f96): undefined reference to > `fb_deferred_io_cleanup' > drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' > drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' > drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' > drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' > drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' > drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' > drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' > drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' > drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' > drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' > drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' > > The main reason is because DRM_FBDEV_EMULATION is built-in, and > CONFIG_FB is compiled as a module. DRM_FBDEV_EMULATION is not a module, it's just a config knob. drm_fb_helper.ko is the module, enabled via DRM_KMS_HELPER, and it has an implicit dependency on FB, and DRM_FBDEV_EMULATION selects DRM_KMS_HELPER. Select just breaks dependencies in all kinds of ways. This might help in config DRM_KMS_HELPER, and it might help the reader because it's factual: depends on FB if DRM_FBDEV_EMULATION BR, Jani. > > -- > Jackie Liu > > 在 2021/8/16 下午3:01, Jani Nikula 写道: >> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>> From: Jackie Liu <liuyun01@kylinos.cn> >>> >>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>> compilation will fail. we need make that dependency explicit. >> >> What's the failure mode? Using select here is a bad idea. >> >> BR, >> Jani. >> >>> >>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>> --- >>> drivers/gpu/drm/Kconfig | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>> index 7ff89690a976..346a518b5119 100644 >>> --- a/drivers/gpu/drm/Kconfig >>> +++ b/drivers/gpu/drm/Kconfig >>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>> config DRM_FBDEV_EMULATION >>> bool "Enable legacy fbdev support for your modesetting driver" >>> depends on DRM >>> - depends on FB >>> + select FB >>> select DRM_KMS_HELPER >>> select FB_CFB_FILLRECT >>> select FB_CFB_COPYAREA >>
On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: > After commit f611b1e7624c, we change select FB > to depends on FB. And obviously you should cite the commit in the original patch and Cc the author! BR, Jani. > > How about this: > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index 7ff89690a976..cd129d96e649 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS > config DRM_FBDEV_EMULATION > bool "Enable legacy fbdev support for your modesetting driver" > depends on DRM > - depends on FB > + depends on FB && FB != m > select DRM_KMS_HELPER > select FB_CFB_FILLRECT > select FB_CFB_COPYAREA > > -- > Jackie Liu > > 在 2021/8/16 下午3:01, Jani Nikula 写道: >> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>> From: Jackie Liu <liuyun01@kylinos.cn> >>> >>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>> compilation will fail. we need make that dependency explicit. >> >> What's the failure mode? Using select here is a bad idea. >> >> BR, >> Jani. >> >>> >>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>> --- >>> drivers/gpu/drm/Kconfig | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>> index 7ff89690a976..346a518b5119 100644 >>> --- a/drivers/gpu/drm/Kconfig >>> +++ b/drivers/gpu/drm/Kconfig >>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>> config DRM_FBDEV_EMULATION >>> bool "Enable legacy fbdev support for your modesetting driver" >>> depends on DRM >>> - depends on FB >>> + select FB >>> select DRM_KMS_HELPER >>> select FB_CFB_FILLRECT >>> select FB_CFB_COPYAREA >>
Hi, Jani. Thanks, send V2 version immediately, and cc author. -- Jackie Liu 在 2021/8/16 下午4:35, Jani Nikula 写道: > On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >> After commit f611b1e7624c, we change select FB >> to depends on FB. > > And obviously you should cite the commit in the original patch and Cc > the author! > > BR, > Jani. > >> >> How about this: >> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >> index 7ff89690a976..cd129d96e649 100644 >> --- a/drivers/gpu/drm/Kconfig >> +++ b/drivers/gpu/drm/Kconfig >> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >> config DRM_FBDEV_EMULATION >> bool "Enable legacy fbdev support for your modesetting driver" >> depends on DRM >> - depends on FB >> + depends on FB && FB != m >> select DRM_KMS_HELPER >> select FB_CFB_FILLRECT >> select FB_CFB_COPYAREA >> >> -- >> Jackie Liu >> >> 在 2021/8/16 下午3:01, Jani Nikula 写道: >>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>> From: Jackie Liu <liuyun01@kylinos.cn> >>>> >>>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>>> compilation will fail. we need make that dependency explicit. >>> >>> What's the failure mode? Using select here is a bad idea. >>> >>> BR, >>> Jani. >>> >>>> >>>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>>> --- >>>> drivers/gpu/drm/Kconfig | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>> index 7ff89690a976..346a518b5119 100644 >>>> --- a/drivers/gpu/drm/Kconfig >>>> +++ b/drivers/gpu/drm/Kconfig >>>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>>> config DRM_FBDEV_EMULATION >>>> bool "Enable legacy fbdev support for your modesetting driver" >>>> depends on DRM >>>> - depends on FB >>>> + select FB >>>> select DRM_KMS_HELPER >>>> select FB_CFB_FILLRECT >>>> select FB_CFB_COPYAREA >>> >
Hi Jani. Your suggestion is that? diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 7ff89690a976..ba179a539497 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -77,6 +77,7 @@ config DRM_DEBUG_SELFTEST config DRM_KMS_HELPER tristate depends on DRM + depends on FB if DRM_FBDEV_EMULATION help CRTC helpers for KMS drivers. But it has a syntax error. -- Thanks, BR, Jackie Liu 在 2021/8/16 下午4:33, Jani Nikula 写道: > On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >> Hi Jani. >> >> My CI report an randconfigs build failed. there are: >> >> drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' >> drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' >> drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' >> ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' >> ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' >> ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to >> `framebuffer_release' >> drm_fb_helper.c:(.text+0x1e85): undefined reference to >> `unregister_framebuffer' >> drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' >> ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to >> `framebuffer_release' >> drm_fb_helper.c:(.text+0x1f96): undefined reference to >> `fb_deferred_io_cleanup' >> drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' >> drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' >> drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' >> drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' >> drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' >> drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' >> drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' >> drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' >> drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' >> drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' >> drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' >> >> The main reason is because DRM_FBDEV_EMULATION is built-in, and >> CONFIG_FB is compiled as a module. > > DRM_FBDEV_EMULATION is not a module, it's just a config > knob. drm_fb_helper.ko is the module, enabled via DRM_KMS_HELPER, and it > has an implicit dependency on FB, and DRM_FBDEV_EMULATION selects > DRM_KMS_HELPER. Select just breaks dependencies in all kinds of ways. > > This might help in config DRM_KMS_HELPER, and it might help the reader > because it's factual: > > depends on FB if DRM_FBDEV_EMULATION > > > BR, > Jani. > > > > > >> >> -- >> Jackie Liu >> >> 在 2021/8/16 下午3:01, Jani Nikula 写道: >>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>> From: Jackie Liu <liuyun01@kylinos.cn> >>>> >>>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>>> compilation will fail. we need make that dependency explicit. >>> >>> What's the failure mode? Using select here is a bad idea. >>> >>> BR, >>> Jani. >>> >>>> >>>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>>> --- >>>> drivers/gpu/drm/Kconfig | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>> index 7ff89690a976..346a518b5119 100644 >>>> --- a/drivers/gpu/drm/Kconfig >>>> +++ b/drivers/gpu/drm/Kconfig >>>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>>> config DRM_FBDEV_EMULATION >>>> bool "Enable legacy fbdev support for your modesetting driver" >>>> depends on DRM >>>> - depends on FB >>>> + select FB >>>> select DRM_KMS_HELPER >>>> select FB_CFB_FILLRECT >>>> select FB_CFB_COPYAREA >>> >
On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: > Hi Jani. > > Your suggestion is that? > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index 7ff89690a976..ba179a539497 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -77,6 +77,7 @@ config DRM_DEBUG_SELFTEST > config DRM_KMS_HELPER > tristate > depends on DRM > + depends on FB if DRM_FBDEV_EMULATION > help > CRTC helpers for KMS drivers. > > > But it has a syntax error. Ah, try this then: depends on FB || FB=n > > -- > Thanks, BR, Jackie Liu > > 在 2021/8/16 下午4:33, Jani Nikula 写道: >> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>> Hi Jani. >>> >>> My CI report an randconfigs build failed. there are: >>> >>> drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' >>> drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' >>> drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' >>> ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' >>> ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' >>> ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to >>> `framebuffer_release' >>> drm_fb_helper.c:(.text+0x1e85): undefined reference to >>> `unregister_framebuffer' >>> drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' >>> ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to >>> `framebuffer_release' >>> drm_fb_helper.c:(.text+0x1f96): undefined reference to >>> `fb_deferred_io_cleanup' >>> drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' >>> drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' >>> drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' >>> drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' >>> drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' >>> drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' >>> drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' >>> drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' >>> drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' >>> drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' >>> drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' >>> >>> The main reason is because DRM_FBDEV_EMULATION is built-in, and >>> CONFIG_FB is compiled as a module. >> >> DRM_FBDEV_EMULATION is not a module, it's just a config >> knob. drm_fb_helper.ko is the module, enabled via DRM_KMS_HELPER, and it >> has an implicit dependency on FB, and DRM_FBDEV_EMULATION selects >> DRM_KMS_HELPER. Select just breaks dependencies in all kinds of ways. >> >> This might help in config DRM_KMS_HELPER, and it might help the reader >> because it's factual: >> >> depends on FB if DRM_FBDEV_EMULATION >> >> >> BR, >> Jani. >> >> >> >> >> >>> >>> -- >>> Jackie Liu >>> >>> 在 2021/8/16 下午3:01, Jani Nikula 写道: >>>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>>> From: Jackie Liu <liuyun01@kylinos.cn> >>>>> >>>>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>>>> compilation will fail. we need make that dependency explicit. >>>> >>>> What's the failure mode? Using select here is a bad idea. >>>> >>>> BR, >>>> Jani. >>>> >>>>> >>>>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>>>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>>>> --- >>>>> drivers/gpu/drm/Kconfig | 2 +- >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>>> index 7ff89690a976..346a518b5119 100644 >>>>> --- a/drivers/gpu/drm/Kconfig >>>>> +++ b/drivers/gpu/drm/Kconfig >>>>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>>>> config DRM_FBDEV_EMULATION >>>>> bool "Enable legacy fbdev support for your modesetting driver" >>>>> depends on DRM >>>>> - depends on FB >>>>> + select FB >>>>> select DRM_KMS_HELPER >>>>> select FB_CFB_FILLRECT >>>>> select FB_CFB_COPYAREA >>>> >>
On Mon, 16 Aug 2021, Jani Nikula <jani.nikula@linux.intel.com> wrote: > On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >> Hi Jani. >> >> Your suggestion is that? >> >> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >> index 7ff89690a976..ba179a539497 100644 >> --- a/drivers/gpu/drm/Kconfig >> +++ b/drivers/gpu/drm/Kconfig >> @@ -77,6 +77,7 @@ config DRM_DEBUG_SELFTEST >> config DRM_KMS_HELPER >> tristate >> depends on DRM >> + depends on FB if DRM_FBDEV_EMULATION >> help >> CRTC helpers for KMS drivers. >> >> >> But it has a syntax error. > > Ah, try this then: > > depends on FB || FB=n Or this monster: depends on FB || DRM_FBDEV_EMULATION=n > >> >> -- >> Thanks, BR, Jackie Liu >> >> 在 2021/8/16 下午4:33, Jani Nikula 写道: >>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>> Hi Jani. >>>> >>>> My CI report an randconfigs build failed. there are: >>>> >>>> drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' >>>> drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' >>>> drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' >>>> ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' >>>> ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' >>>> ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to >>>> `framebuffer_release' >>>> drm_fb_helper.c:(.text+0x1e85): undefined reference to >>>> `unregister_framebuffer' >>>> drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' >>>> ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to >>>> `framebuffer_release' >>>> drm_fb_helper.c:(.text+0x1f96): undefined reference to >>>> `fb_deferred_io_cleanup' >>>> drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' >>>> drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' >>>> drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' >>>> drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' >>>> drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' >>>> drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' >>>> drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' >>>> drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' >>>> drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' >>>> drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' >>>> drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' >>>> >>>> The main reason is because DRM_FBDEV_EMULATION is built-in, and >>>> CONFIG_FB is compiled as a module. >>> >>> DRM_FBDEV_EMULATION is not a module, it's just a config >>> knob. drm_fb_helper.ko is the module, enabled via DRM_KMS_HELPER, and it >>> has an implicit dependency on FB, and DRM_FBDEV_EMULATION selects >>> DRM_KMS_HELPER. Select just breaks dependencies in all kinds of ways. >>> >>> This might help in config DRM_KMS_HELPER, and it might help the reader >>> because it's factual: >>> >>> depends on FB if DRM_FBDEV_EMULATION >>> >>> >>> BR, >>> Jani. >>> >>> >>> >>> >>> >>>> >>>> -- >>>> Jackie Liu >>>> >>>> 在 2021/8/16 下午3:01, Jani Nikula 写道: >>>>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>>>> From: Jackie Liu <liuyun01@kylinos.cn> >>>>>> >>>>>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>>>>> compilation will fail. we need make that dependency explicit. >>>>> >>>>> What's the failure mode? Using select here is a bad idea. >>>>> >>>>> BR, >>>>> Jani. >>>>> >>>>>> >>>>>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>>>>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>>>>> --- >>>>>> drivers/gpu/drm/Kconfig | 2 +- >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>>>> index 7ff89690a976..346a518b5119 100644 >>>>>> --- a/drivers/gpu/drm/Kconfig >>>>>> +++ b/drivers/gpu/drm/Kconfig >>>>>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>>>>> config DRM_FBDEV_EMULATION >>>>>> bool "Enable legacy fbdev support for your modesetting driver" >>>>>> depends on DRM >>>>>> - depends on FB >>>>>> + select FB >>>>>> select DRM_KMS_HELPER >>>>>> select FB_CFB_FILLRECT >>>>>> select FB_CFB_COPYAREA >>>>> >>>
在 2021/8/16 下午4:56, Jani Nikula 写道: > On Mon, 16 Aug 2021, Jani Nikula <jani.nikula@linux.intel.com> wrote: >> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>> Hi Jani. >>> >>> Your suggestion is that? >>> >>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>> index 7ff89690a976..ba179a539497 100644 >>> --- a/drivers/gpu/drm/Kconfig >>> +++ b/drivers/gpu/drm/Kconfig >>> @@ -77,6 +77,7 @@ config DRM_DEBUG_SELFTEST >>> config DRM_KMS_HELPER >>> tristate >>> depends on DRM >>> + depends on FB if DRM_FBDEV_EMULATION >>> help >>> CRTC helpers for KMS drivers. >>> >>> >>> But it has a syntax error. >> >> Ah, try this then: >> >> depends on FB || FB=n > > Or this monster: > > depends on FB || DRM_FBDEV_EMULATION=n Hi Jani, depends on FB || DRM_FBDEV_EMULATION=n Will cause the following warnings. WARNING: unmet direct dependencies detected for DRM_KMS_HELPER Depends on [m]: HAS_IOMEM [=y] && DRM [=y] && (FB [=m] || !DRM_FBDEV_EMULATION [=y]) Selected by [y]: - DRM_DEBUG_SELFTEST [=y] && HAS_IOMEM [=y] && DRM [=y] && DEBUG_KERNEL [=y] - DRM_VKMS [=y] && HAS_IOMEM [=y] && DRM [=y] - TINYDRM_ILI9341 [=y] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] - TINYDRM_MI0283QT [=y] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] - TINYDRM_ST7586 [=y] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] - TINYDRM_ST7735R [=y] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] - DRM_ANALOGIX_ANX78XX [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_BRIDGE [=y] Selected by [m]: - DRM_FBDEV_EMULATION [=y] && HAS_IOMEM [=y] && DRM [=y] && FB [=m] - DRM_SIMPLEDRM [=m] && HAS_IOMEM [=y] && DRM [=y] - TINYDRM_HX8357D [=m] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] - TINYDRM_REPAPER [=m] && HAS_IOMEM [=y] && DRM [=y] && SPI [=y] configuration written to .config How about this? diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 7ff89690a976..797eeea9cbbe 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -98,8 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS config DRM_FBDEV_EMULATION bool "Enable legacy fbdev support for your modesetting driver" depends on DRM - depends on FB - select DRM_KMS_HELPER + depends on (FB=y && DRM_KMS_HELPER) || (FB=m && DRM_KMS_HELPER=m) select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT -- BR, Jackie Liu > > >> >>> >>> -- >>> Thanks, BR, Jackie Liu >>> >>> 在 2021/8/16 下午4:33, Jani Nikula 写道: >>>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>>> Hi Jani. >>>>> >>>>> My CI report an randconfigs build failed. there are: >>>>> >>>>> drm_fb_helper.c:(.text+0x302): undefined reference to `fb_set_suspend' >>>>> drm_fb_helper.c:(.text+0xaea): undefined reference to `register_framebuffer' >>>>> drm_fb_helper.c:(.text+0x1dcc): undefined reference to `framebuffer_alloc' >>>>> ld: drm_fb_helper.c:(.text+0x1dea): undefined reference to `fb_alloc_cmap' >>>>> ld: drm_fb_helper.c:(.text+0x1e2f): undefined reference to `fb_dealloc_cmap' >>>>> ld: drm_fb_helper.c:(.text+0x1e5b): undefined reference to >>>>> `framebuffer_release' >>>>> drm_fb_helper.c:(.text+0x1e85): undefined reference to >>>>> `unregister_framebuffer' >>>>> drm_fb_helper.c:(.text+0x1ee9): undefined reference to `fb_dealloc_cmap' >>>>> ld: drm_fb_helper.c:(.text+0x1ef0): undefined reference to >>>>> `framebuffer_release' >>>>> drm_fb_helper.c:(.text+0x1f96): undefined reference to >>>>> `fb_deferred_io_cleanup' >>>>> drm_fb_helper.c:(.text+0x203b): undefined reference to `fb_sys_read' >>>>> drm_fb_helper.c:(.text+0x2051): undefined reference to `fb_sys_write' >>>>> drm_fb_helper.c:(.text+0x208d): undefined reference to `sys_fillrect' >>>>> drm_fb_helper.c:(.text+0x20bb): undefined reference to `sys_copyarea' >>>>> drm_fb_helper.c:(.text+0x20e9): undefined reference to `sys_imageblit' >>>>> drm_fb_helper.c:(.text+0x2117): undefined reference to `cfb_fillrect' >>>>> drm_fb_helper.c:(.text+0x2172): undefined reference to `cfb_copyarea' >>>>> drm_fb_helper.c:(.text+0x21cd): undefined reference to `cfb_imageblit' >>>>> drm_fb_helper.c:(.text+0x2233): undefined reference to `fb_set_suspend' >>>>> drm_fb_helper.c:(.text+0x22b0): undefined reference to `fb_set_suspend' >>>>> drm_fb_helper.c:(.text+0x250f): undefined reference to `fb_deferred_io_init' >>>>> >>>>> The main reason is because DRM_FBDEV_EMULATION is built-in, and >>>>> CONFIG_FB is compiled as a module. >>>> >>>> DRM_FBDEV_EMULATION is not a module, it's just a config >>>> knob. drm_fb_helper.ko is the module, enabled via DRM_KMS_HELPER, and it >>>> has an implicit dependency on FB, and DRM_FBDEV_EMULATION selects >>>> DRM_KMS_HELPER. Select just breaks dependencies in all kinds of ways. >>>> >>>> This might help in config DRM_KMS_HELPER, and it might help the reader >>>> because it's factual: >>>> >>>> depends on FB if DRM_FBDEV_EMULATION >>>> >>>> >>>> BR, >>>> Jani. >>>> >>>> >>>> >>>> >>>> >>>>> >>>>> -- >>>>> Jackie Liu >>>>> >>>>> 在 2021/8/16 下午3:01, Jani Nikula 写道: >>>>>> On Mon, 16 Aug 2021, Jackie Liu <liu.yun@linux.dev> wrote: >>>>>>> From: Jackie Liu <liuyun01@kylinos.cn> >>>>>>> >>>>>>> When CONFIG_DRM_FBDEV_EMULATION is compiled to y and CONFIG_FB is m, the >>>>>>> compilation will fail. we need make that dependency explicit. >>>>>> >>>>>> What's the failure mode? Using select here is a bad idea. >>>>>> >>>>>> BR, >>>>>> Jani. >>>>>> >>>>>>> >>>>>>> Reported-by: k2ci <kernel-bot@kylinos.cn> >>>>>>> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> >>>>>>> --- >>>>>>> drivers/gpu/drm/Kconfig | 2 +- >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>>> >>>>>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>>>>> index 7ff89690a976..346a518b5119 100644 >>>>>>> --- a/drivers/gpu/drm/Kconfig >>>>>>> +++ b/drivers/gpu/drm/Kconfig >>>>>>> @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS >>>>>>> config DRM_FBDEV_EMULATION >>>>>>> bool "Enable legacy fbdev support for your modesetting driver" >>>>>>> depends on DRM >>>>>>> - depends on FB >>>>>>> + select FB >>>>>>> select DRM_KMS_HELPER >>>>>>> select FB_CFB_FILLRECT >>>>>>> select FB_CFB_COPYAREA >>>>>> >>>> >
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 7ff89690a976..346a518b5119 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -98,7 +98,7 @@ config DRM_DEBUG_DP_MST_TOPOLOGY_REFS config DRM_FBDEV_EMULATION bool "Enable legacy fbdev support for your modesetting driver" depends on DRM - depends on FB + select FB select DRM_KMS_HELPER select FB_CFB_FILLRECT select FB_CFB_COPYAREA