Enabled CONFIG silently ignored if dependencies are missing
For the purpose of enabling a configuration option for a requested device driver in redhat/centos-stream/src/kernel/centos-stream-9!3854 (closed), I added some new config files to the kernel repo:
diff --git a/redhat/configs/rhel/generic/CONFIG_BT_HCIUART_QCA b/redhat/configs/rhel/generic/CONFIG_BT_HCIUART_QCA
new file mode 100644
index 000000000000..59d4f58cb0e7
--- /dev/null
+++ b/redhat/configs/rhel/generic/CONFIG_BT_HCIUART_QCA
@@ -0,0 +1 @@
+CONFIG_BT_HCIUART_QCA=y
diff --git a/redhat/configs/rhel/generic/CONFIG_BT_QCA b/redhat/configs/rhel/generic/CONFIG_BT_QCA
new file mode 100644
index 000000000000..8eff84da60dc
--- /dev/null
+++ b/redhat/configs/rhel/generic/CONFIG_BT_QCA
@@ -0,0 +1 @@
+CONFIG_BT_QCA=m
But the CKI CI tests would not build those drivers at all. It took me a while to realise that there were configuration dependencies missing:
config BT_HCIUART_QCA
bool "Qualcomm Atheros protocol support"
depends on BT_HCIUART
depends on BT_HCIUART_SERDEV
select BT_HCIUART_H4
select BT_QCA
help
The Qualcomm Atheros protocol supports HCI In-Band Sleep feature
over serial port interface(H4) between controller and host.
This protocol is required for UART clock control for QCA Bluetooth
devices.
Say Y here to compile support for QCA protocol.
Manually finding and enabling the configuration option in make menuconfig
showed the missing configuration option:
+CONFIG_BT_HCIUART_SERDEV=y
I would expect process_configs.sh
/make dist-configs
to warn about enabled (m
or y
) CONFIG options that don't actually end up being enabled in the builds because a dependency was never enabled, or a new dependency appeared that silently disabled the configuration option.