On 4/27/21 1:03 AM, Jani Nikula wrote:
On Mon, 26 Apr 2021, Randy Dunlap rdunlap@infradead.org wrote:
When CONFIG_DRM_I915=y, CONFIG_ACPI is not set, and CONFIG_BACKLIGHT_CLASS_DEVICE=m, not due to I915 config, there are build errors trying to reference backlight_device_{un}register().
Changing the use of IS_ENABLED() to IS_REACHABLE() in intel_panel.[ch] fixes this.
I feel like a broken record...
Thanks! :)
I'll leave it b0rken as well.
CONFIG_DRM_I915=y and CONFIG_BACKLIGHT_CLASS_DEVICE=m is an invalid configuration. The patch at hand just silently hides the problem, leaving you without backlight.
i915 should *depend* on backlight, not select it. It would express the dependency without chances for invalid configuration.
However, i915 alone can't depend on backlight, all users of backlight should depend on backlight, not select it. Otherwise, you end up with other configuration problems, circular dependencies and whatnot. Everyone should change. See also (*) why select is not a good idea here.
I've sent patches to this effect before, got rejected, and the same thing gets repeated ad infinitum.
Accepting this patch would stop the inflow of these reports and similar patches, but it does not fix the root cause. It just sweeps the problem under the rug.
BR, Jani.
(*) Documentation/kbuild/kconfig-language.rst:
select should be used with care. select will force a symbol to a value without visiting the dependencies. By abusing select you are able to select a symbol FOO even if FOO depends on BAR that is not set. In general use select only for non-visible symbols (no prompts anywhere) and for symbols with no dependencies. That will limit the usefulness but on the other hand avoid the illegal configurations all over.
Yes, I'm well aware of that.
ta.