diff mbox

drm: nouveau: fix build when LEDS_CLASS=m

Message ID 029a1ec5-48ac-a3ce-3106-430e0f2584bb@infradead.org (mailing list archive)
State New, archived
Headers show

Commit Message

Randy Dunlap Jan. 2, 2017, 12:20 a.m. UTC
From: Randy Dunlap <rdunlap@infradead.org>

Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
CONFIG_DRM_NOUVEAU=y.
If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
kconfig value as LEDS_CLASS.

drivers/built-in.o: In function `nouveau_do_suspend':
nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
drivers/built-in.o: In function `nouveau_do_resume':
nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
drivers/built-in.o: In function `nouveau_drm_unload':
nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
drivers/built-in.o: In function `nouveau_drm_load':
nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'

BTW, this line in Kbuild:
nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: Martin Peres <martin.peres@free.fr>
Cc: Ben Skeggs <bskeggs@redhat.com>
---
 drivers/gpu/drm/nouveau/Kconfig |    1 +
 1 file changed, 1 insertion(+)

Comments

Daniel Vetter Jan. 4, 2017, 8:45 a.m. UTC | #1
On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
> From: Randy Dunlap <rdunlap@infradead.org>
> 
> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
> CONFIG_DRM_NOUVEAU=y.
> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
> kconfig value as LEDS_CLASS.
> 
> drivers/built-in.o: In function `nouveau_do_suspend':
> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
> drivers/built-in.o: In function `nouveau_do_resume':
> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
> drivers/built-in.o: In function `nouveau_drm_unload':
> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
> drivers/built-in.o: In function `nouveau_drm_load':
> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
> 
> BTW, this line in Kbuild:
> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
> 
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Reported-by: kbuild test robot <fengguang.wu@intel.com>
> Cc: Martin Peres <martin.peres@free.fr>
> Cc: Ben Skeggs <bskeggs@redhat.com>

Thrown into drm-misc, thanks.
-Daniel

> ---
>  drivers/gpu/drm/nouveau/Kconfig |    1 +
>  1 file changed, 1 insertion(+)
> 
> --- lnx-410-rc2.orig/drivers/gpu/drm/nouveau/Kconfig
> +++ lnx-410-rc2/drivers/gpu/drm/nouveau/Kconfig
> @@ -1,6 +1,7 @@
>  config DRM_NOUVEAU
>  	tristate "Nouveau (NVIDIA) cards"
>  	depends on DRM && PCI
> +	depends on LEDS_CLASS || LEDS_CLASS=n
>          select FW_LOADER
>  	select DRM_KMS_HELPER
>  	select DRM_TTM
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Ilia Mirkin Jan. 4, 2017, 2:25 p.m. UTC | #2
On Wed, Jan 4, 2017 at 3:45 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>> From: Randy Dunlap <rdunlap@infradead.org>
>>
>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>> CONFIG_DRM_NOUVEAU=y.
>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>> kconfig value as LEDS_CLASS.
>>
>> drivers/built-in.o: In function `nouveau_do_suspend':
>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>> drivers/built-in.o: In function `nouveau_do_resume':
>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>> drivers/built-in.o: In function `nouveau_drm_unload':
>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>> drivers/built-in.o: In function `nouveau_drm_load':
>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>
>> BTW, this line in Kbuild:
>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Cc: Martin Peres <martin.peres@free.fr>
>> Cc: Ben Skeggs <bskeggs@redhat.com>
>
> Thrown into drm-misc, thanks.
> -Daniel

Wasn't there already a different solution from Martin for this, using
IS_REACHABLE, instead of adding a dependency in Kconfig?

>
>> ---
>>  drivers/gpu/drm/nouveau/Kconfig |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> --- lnx-410-rc2.orig/drivers/gpu/drm/nouveau/Kconfig
>> +++ lnx-410-rc2/drivers/gpu/drm/nouveau/Kconfig
>> @@ -1,6 +1,7 @@
>>  config DRM_NOUVEAU
>>       tristate "Nouveau (NVIDIA) cards"
>>       depends on DRM && PCI
>> +     depends on LEDS_CLASS || LEDS_CLASS=n
>>          select FW_LOADER
>>       select DRM_KMS_HELPER
>>       select DRM_TTM
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Jani Nikula Jan. 4, 2017, 7:29 p.m. UTC | #3
On Wed, 04 Jan 2017, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>> From: Randy Dunlap <rdunlap@infradead.org>
>> 
>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>> CONFIG_DRM_NOUVEAU=y.
>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>> kconfig value as LEDS_CLASS.
>> 
>> drivers/built-in.o: In function `nouveau_do_suspend':
>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>> drivers/built-in.o: In function `nouveau_do_resume':
>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>> drivers/built-in.o: In function `nouveau_drm_unload':
>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>> drivers/built-in.o: In function `nouveau_drm_load':
>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>> 
>> BTW, this line in Kbuild:
>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>> 
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Cc: Martin Peres <martin.peres@free.fr>
>> Cc: Ben Skeggs <bskeggs@redhat.com>
>
> Thrown into drm-misc, thanks.

Randy, this results in the following recursive dependency using the
attached config.

BR,
Jani.


drivers/usb/Kconfig:39:error: recursive dependency detected!
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/Kconfig:39:	symbol USB is selected by MOUSE_APPLETOUCH
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/input/mouse/Kconfig:187:	symbol MOUSE_APPLETOUCH depends on INPUT
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/input/Kconfig:8:	symbol INPUT is selected by VT
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/tty/Kconfig:12:	symbol VT is selected by FB_STI
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/video/fbdev/Kconfig:678:	symbol FB_STI depends on FB
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/video/fbdev/Kconfig:5:	symbol FB is selected by DRM_KMS_FB_HELPER
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/Kconfig:72:	symbol DRM_KMS_FB_HELPER is selected by DRM_KMS_CMA_HELPER
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/Kconfig:128:	symbol DRM_KMS_CMA_HELPER is selected by DRM_HDLCD
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/arm/Kconfig:6:	symbol DRM_HDLCD depends on COMMON_CLK
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/clk/Kconfig:9:	symbol COMMON_CLK is selected by X86_INTEL_QUARK
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
arch/x86/Kconfig:554:	symbol X86_INTEL_QUARK depends on X86_PLATFORM_DEVICES
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/platform/x86/Kconfig:5:	symbol X86_PLATFORM_DEVICES is selected by DRM_NOUVEAU
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/nouveau/Kconfig:1:	symbol DRM_NOUVEAU depends on LEDS_CLASS
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/leds/Kconfig:16:	symbol LEDS_CLASS is selected by ATH9K_HTC
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/net/wireless/ath/ath9k/Kconfig:158:	symbol ATH9K_HTC depends on USB
warning: (DRM_NOUVEAU && DRM_I915 && DRM_GMA500) selects ACPI_VIDEO which has unmet direct dependencies (ACPI && X86 && BACKLIGHT_CLASS_DEVICE && INPUT)



> -Daniel
>
>> ---
>>  drivers/gpu/drm/nouveau/Kconfig |    1 +
>>  1 file changed, 1 insertion(+)
>> 
>> --- lnx-410-rc2.orig/drivers/gpu/drm/nouveau/Kconfig
>> +++ lnx-410-rc2/drivers/gpu/drm/nouveau/Kconfig
>> @@ -1,6 +1,7 @@
>>  config DRM_NOUVEAU
>>  	tristate "Nouveau (NVIDIA) cards"
>>  	depends on DRM && PCI
>> +	depends on LEDS_CLASS || LEDS_CLASS=n
>>          select FW_LOADER
>>  	select DRM_KMS_HELPER
>>  	select DRM_TTM
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Randy Dunlap Jan. 4, 2017, 10:24 p.m. UTC | #4
On 01/04/17 11:29, Jani Nikula wrote:
> On Wed, 04 Jan 2017, Daniel Vetter <daniel@ffwll.ch> wrote:
>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>
>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>> CONFIG_DRM_NOUVEAU=y.
>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>> kconfig value as LEDS_CLASS.
>>>
>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>> drivers/built-in.o: In function `nouveau_do_resume':
>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>> drivers/built-in.o: In function `nouveau_drm_load':
>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>
>>> BTW, this line in Kbuild:
>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>
>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>> Cc: Martin Peres <martin.peres@free.fr>
>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>
>> Thrown into drm-misc, thanks.
> 
> Randy, this results in the following recursive dependency using the
> attached config.
> 

Hi,
Please drop the patch for now.  If there is an alternative patch,
that's good.  Otherwise I'll look for a solution.

Thanks.

> BR,
> Jani.
> 
> 
> drivers/usb/Kconfig:39:error: recursive dependency detected!
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/usb/Kconfig:39:	symbol USB is selected by MOUSE_APPLETOUCH
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/input/mouse/Kconfig:187:	symbol MOUSE_APPLETOUCH depends on INPUT
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/input/Kconfig:8:	symbol INPUT is selected by VT
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/tty/Kconfig:12:	symbol VT is selected by FB_STI
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/video/fbdev/Kconfig:678:	symbol FB_STI depends on FB
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/video/fbdev/Kconfig:5:	symbol FB is selected by DRM_KMS_FB_HELPER
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/gpu/drm/Kconfig:72:	symbol DRM_KMS_FB_HELPER is selected by DRM_KMS_CMA_HELPER
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/gpu/drm/Kconfig:128:	symbol DRM_KMS_CMA_HELPER is selected by DRM_HDLCD
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/gpu/drm/arm/Kconfig:6:	symbol DRM_HDLCD depends on COMMON_CLK
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/clk/Kconfig:9:	symbol COMMON_CLK is selected by X86_INTEL_QUARK
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> arch/x86/Kconfig:554:	symbol X86_INTEL_QUARK depends on X86_PLATFORM_DEVICES
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/platform/x86/Kconfig:5:	symbol X86_PLATFORM_DEVICES is selected by DRM_NOUVEAU
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/gpu/drm/nouveau/Kconfig:1:	symbol DRM_NOUVEAU depends on LEDS_CLASS
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/leds/Kconfig:16:	symbol LEDS_CLASS is selected by ATH9K_HTC
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/net/wireless/ath/ath9k/Kconfig:158:	symbol ATH9K_HTC depends on USB
> warning: (DRM_NOUVEAU && DRM_I915 && DRM_GMA500) selects ACPI_VIDEO which has unmet direct dependencies (ACPI && X86 && BACKLIGHT_CLASS_DEVICE && INPUT)
Randy Dunlap Jan. 5, 2017, 2:52 a.m. UTC | #5
On 01/04/17 06:25, Ilia Mirkin wrote:
> On Wed, Jan 4, 2017 at 3:45 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>
>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>> CONFIG_DRM_NOUVEAU=y.
>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>> kconfig value as LEDS_CLASS.
>>>
>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>> drivers/built-in.o: In function `nouveau_do_resume':
>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>> drivers/built-in.o: In function `nouveau_drm_load':
>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>
>>> BTW, this line in Kbuild:
>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>
>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>> Cc: Martin Peres <martin.peres@free.fr>
>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>
>> Thrown into drm-misc, thanks.
>> -Daniel
> 
> Wasn't there already a different solution from Martin for this, using
> IS_REACHABLE, instead of adding a dependency in Kconfig?

nouveau_led.h contains a few lines that are bounded by
#if IS_ENABLED(CONFIG_LEDS_CLASS)

but that's not sufficient.

Is there another patch?
Ilia Mirkin Jan. 5, 2017, 3:09 a.m. UTC | #6
On Wed, Jan 4, 2017 at 9:52 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 01/04/17 06:25, Ilia Mirkin wrote:
>> On Wed, Jan 4, 2017 at 3:45 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
>>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>>
>>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>>> CONFIG_DRM_NOUVEAU=y.
>>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>>> kconfig value as LEDS_CLASS.
>>>>
>>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>>> drivers/built-in.o: In function `nouveau_do_resume':
>>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>>> drivers/built-in.o: In function `nouveau_drm_load':
>>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>>
>>>> BTW, this line in Kbuild:
>>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>>
>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>>> Cc: Martin Peres <martin.peres@free.fr>
>>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>>
>>> Thrown into drm-misc, thanks.
>>> -Daniel
>>
>> Wasn't there already a different solution from Martin for this, using
>> IS_REACHABLE, instead of adding a dependency in Kconfig?
>
> nouveau_led.h contains a few lines that are bounded by
> #if IS_ENABLED(CONFIG_LEDS_CLASS)
>
> but that's not sufficient.
>
> Is there another patch?

https://lists.freedesktop.org/archives/nouveau/2016-December/026744.html

Not sure why it's not upstream yet. I guess Ben missed it?

  -ilia
Randy Dunlap Jan. 5, 2017, 3:17 a.m. UTC | #7
On 01/04/17 19:09, Ilia Mirkin wrote:
> On Wed, Jan 4, 2017 at 9:52 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
>> On 01/04/17 06:25, Ilia Mirkin wrote:
>>> On Wed, Jan 4, 2017 at 3:45 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
>>>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>>>
>>>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>>>> CONFIG_DRM_NOUVEAU=y.
>>>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>>>> kconfig value as LEDS_CLASS.
>>>>>
>>>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>>>> drivers/built-in.o: In function `nouveau_do_resume':
>>>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>>>> drivers/built-in.o: In function `nouveau_drm_load':
>>>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>>>
>>>>> BTW, this line in Kbuild:
>>>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>>>
>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>>>> Cc: Martin Peres <martin.peres@free.fr>
>>>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>>>
>>>> Thrown into drm-misc, thanks.
>>>> -Daniel
>>>
>>> Wasn't there already a different solution from Martin for this, using
>>> IS_REACHABLE, instead of adding a dependency in Kconfig?
>>
>> nouveau_led.h contains a few lines that are bounded by
>> #if IS_ENABLED(CONFIG_LEDS_CLASS)
>>
>> but that's not sufficient.
>>
>> Is there another patch?
> 
> https://lists.freedesktop.org/archives/nouveau/2016-December/026744.html
> 
> Not sure why it's not upstream yet. I guess Ben missed it?

Ok, if you all are OK with a slightly crippled driver.
Ilia Mirkin Jan. 5, 2017, 3:23 a.m. UTC | #8
On Wed, Jan 4, 2017 at 10:17 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 01/04/17 19:09, Ilia Mirkin wrote:
>> On Wed, Jan 4, 2017 at 9:52 PM, Randy Dunlap <rdunlap@infradead.org> wrote:
>>> On 01/04/17 06:25, Ilia Mirkin wrote:
>>>> On Wed, Jan 4, 2017 at 3:45 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
>>>>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>>>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>>>>
>>>>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>>>>> CONFIG_DRM_NOUVEAU=y.
>>>>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>>>>> kconfig value as LEDS_CLASS.
>>>>>>
>>>>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>>>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>>>>> drivers/built-in.o: In function `nouveau_do_resume':
>>>>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>>>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>>>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>>>>> drivers/built-in.o: In function `nouveau_drm_load':
>>>>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>>>>
>>>>>> BTW, this line in Kbuild:
>>>>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>>>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>>>>
>>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>>>>> Cc: Martin Peres <martin.peres@free.fr>
>>>>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>>>>
>>>>> Thrown into drm-misc, thanks.
>>>>> -Daniel
>>>>
>>>> Wasn't there already a different solution from Martin for this, using
>>>> IS_REACHABLE, instead of adding a dependency in Kconfig?
>>>
>>> nouveau_led.h contains a few lines that are bounded by
>>> #if IS_ENABLED(CONFIG_LEDS_CLASS)
>>>
>>> but that's not sufficient.
>>>
>>> Is there another patch?
>>
>> https://lists.freedesktop.org/archives/nouveau/2016-December/026744.html
>>
>> Not sure why it's not upstream yet. I guess Ben missed it?
>
> Ok, if you all are OK with a slightly crippled driver.

The LED functionality is to allow adjusting the light inside the case
of the high-end GTX TITAN boards. I think people will be fine with
that level of crippled for when they build nouveau in and the leds
class as a module.

  -ilia
Daniel Vetter Jan. 5, 2017, 8:01 a.m. UTC | #9
On Wed, Jan 04, 2017 at 02:24:51PM -0800, Randy Dunlap wrote:
> On 01/04/17 11:29, Jani Nikula wrote:
> > On Wed, 04 Jan 2017, Daniel Vetter <daniel@ffwll.ch> wrote:
> >> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
> >>> From: Randy Dunlap <rdunlap@infradead.org>
> >>>
> >>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
> >>> CONFIG_DRM_NOUVEAU=y.
> >>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
> >>> kconfig value as LEDS_CLASS.
> >>>
> >>> drivers/built-in.o: In function `nouveau_do_suspend':
> >>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
> >>> drivers/built-in.o: In function `nouveau_do_resume':
> >>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
> >>> drivers/built-in.o: In function `nouveau_drm_unload':
> >>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
> >>> drivers/built-in.o: In function `nouveau_drm_load':
> >>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
> >>>
> >>> BTW, this line in Kbuild:
> >>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
> >>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
> >>>
> >>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> >>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
> >>> Cc: Martin Peres <martin.peres@free.fr>
> >>> Cc: Ben Skeggs <bskeggs@redhat.com>
> >>
> >> Thrown into drm-misc, thanks.
> > 
> > Randy, this results in the following recursive dependency using the
> > attached config.
> > 
> 
> Hi,
> Please drop the patch for now.  If there is an alternative patch,
> that's good.  Otherwise I'll look for a solution.

Ok, pushed a revert. I guess I'll stop touching Kconfig stuff again for
the next few months ;-)
-Daniel
Randy Dunlap Jan. 5, 2017, 4:08 p.m. UTC | #10
On 01/05/17 00:01, Daniel Vetter wrote:
> On Wed, Jan 04, 2017 at 02:24:51PM -0800, Randy Dunlap wrote:
>> On 01/04/17 11:29, Jani Nikula wrote:
>>> On Wed, 04 Jan 2017, Daniel Vetter <daniel@ffwll.ch> wrote:
>>>> On Sun, Jan 01, 2017 at 04:20:53PM -0800, Randy Dunlap wrote:
>>>>> From: Randy Dunlap <rdunlap@infradead.org>
>>>>>
>>>>> Fix build errors in nouveau driver when CONFIG_LEDS_CLASS=m and
>>>>> CONFIG_DRM_NOUVEAU=y.
>>>>> If LEDS_CLASS is enabled, DRM_NOUVEAU is restricted to the same
>>>>> kconfig value as LEDS_CLASS.
>>>>>
>>>>> drivers/built-in.o: In function `nouveau_do_suspend':
>>>>> nouveau_drm.c:(.text+0x2030b1): undefined reference to `nouveau_led_suspend'
>>>>> drivers/built-in.o: In function `nouveau_do_resume':
>>>>> nouveau_drm.c:(.text+0x2034ca): undefined reference to `nouveau_led_resume'
>>>>> drivers/built-in.o: In function `nouveau_drm_unload':
>>>>> nouveau_drm.c:(.text+0x203a15): undefined reference to `nouveau_led_fini'
>>>>> drivers/built-in.o: In function `nouveau_drm_load':
>>>>> nouveau_drm.c:(.text+0x204423): undefined reference to `nouveau_led_init'
>>>>>
>>>>> BTW, this line in Kbuild:
>>>>> nouveau-$(CONFIG_LEDS_CLASS) += nouveau_led.o
>>>>> does nothing when CONFIG_LEDS_CLASS=m and CONFIG_DRM_NOUVEAU=y.
>>>>>
>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>>>>> Cc: Martin Peres <martin.peres@free.fr>
>>>>> Cc: Ben Skeggs <bskeggs@redhat.com>
>>>>
>>>> Thrown into drm-misc, thanks.
>>>
>>> Randy, this results in the following recursive dependency using the
>>> attached config.
>>>
>>
>> Hi,
>> Please drop the patch for now.  If there is an alternative patch,
>> that's good.  Otherwise I'll look for a solution.
> 
> Ok, pushed a revert. I guess I'll stop touching Kconfig stuff again for
> the next few months ;-)

:)

That particular circular/recursive dependency is ugly. I spent about
one hour trying/testing various fixes and don't have one.
Jani Nikula Jan. 9, 2017, 10:59 a.m. UTC | #11
On Thu, 05 Jan 2017, Randy Dunlap <rdunlap@infradead.org> wrote:
> That particular circular/recursive dependency is ugly. I spent about
> one hour trying/testing various fixes and don't have one.

I didn't really look at this one all that much, but when I face problems
with kconfig, it's almost invariably because of overuse of
select. Documentation/kbuild/kconfig-language.txt says, "In general use
select only for non-visible symbols (no prompts anywhere) and for
symbols with no dependencies." People violate this all the time because
it's convenient. If they depended, they'd have to enable all deps to
even see their config.

I wish kconfig would warn about incorrect use of select... though I
guess that would produce a wall of warnings. Additionally, it really
should be easier to find and enable unmet dependencies in
menuconfig. Someone(tm) has a lot of work to do...

BR,
Jani.
diff mbox

Patch

--- lnx-410-rc2.orig/drivers/gpu/drm/nouveau/Kconfig
+++ lnx-410-rc2/drivers/gpu/drm/nouveau/Kconfig
@@ -1,6 +1,7 @@ 
 config DRM_NOUVEAU
 	tristate "Nouveau (NVIDIA) cards"
 	depends on DRM && PCI
+	depends on LEDS_CLASS || LEDS_CLASS=n
         select FW_LOADER
 	select DRM_KMS_HELPER
 	select DRM_TTM