Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ice: remove unnecessary CONFIG_ICE_GNSS

CONFIG_ICE_GNSS was added by commit c7ef8221ca7d ("ice: use GNSS subsystem
instead of TTY") as a way to allow the ice driver to optionally support
GNSS features without forcing a dependency on CONFIG_GNSS.

The original implementation of that commit at [1] used IS_REACHABLE. This
was rejected by Olek at [2] with the suggested implementation of
CONFIG_ICE_GNSS.

Eventually after merging, Linus reported a .config which had
CONFIG_ICE_GNSS = y when both GNSS = n and ICE = n. This confused him and
he felt that the config option was not useful, and commented about it at
[3].

CONFIG_ICE_GNSS is defined to y whenever GNSS = ICE. This results in it
being set in cases where both options are not enabled.

The goal of CONFIG_ICE_GNSS is to ensure that the GNSS support in the ice
driver is enabled when GNSS is enabled.

The complaint from Olek about the original IS_REACHABLE was due to the
required IS_REACHABLE checks throughout the ice driver code and the fact
that ice_gnss.c was compiled regardless of GNSS support.

This can be fixed in the Makefile by using ice-$(CONFIG_GNSS) += ice_gnss.o

In this case, if GNSS = m and ICE = y, we can result in some confusing
behavior where GNSS support is not enabled because its not built in. See
[4].

To disallow this, have CONFIG_ICE depend on GNSS || GNSS = n. This ensures
that we cannot enable CONFIG_ICE as builtin while GNSS is a module.

Drop CONFIG_ICE_GNSS, and replace the IS_ENABLED checks for it with
checks for GNSS. Update the Makefile to add the ice_gnss.o object based on
CONFIG_GNSS.

This works to ensure that GNSS support can optionally be enabled, doesn't
have an unnnecessary extra config option, and has Kbuild enforce the
dependency such that you can't accidentally enable GNSS as a module and ICE
as a builtin.

[1] https://lore.kernel.org/intel-wired-lan/20221019095603.44825-1-arkadiusz.kubalewski@intel.com/
[2] https://lore.kernel.org/intel-wired-lan/20221028165706.96849-1-alexandr.lobakin@intel.com/
[3] https://lore.kernel.org/all/CAHk-=wi_410KZqHwF-WL5U7QYxnpHHHNP-3xL=g_y89XnKc-uw@mail.gmail.com/
[4] https://lore.kernel.org/netdev/20230223161309.0e439c5f@kernel.org/

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Fixes: c7ef8221ca7d ("ice: use GNSS subsystem instead of TTY")
Cc: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Cc: Alexander Lobakin <alexandr.lobakin@intel.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Anthony Nguyen <anthony.l.nguyen@intel.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jacob Keller and committed by
David S. Miller
cf871006 37e1f3ac

+4 -6
+1 -3
drivers/net/ethernet/intel/Kconfig
··· 296 296 default n 297 297 depends on PCI_MSI 298 298 depends on PTP_1588_CLOCK_OPTIONAL 299 + depends on GNSS || GNSS = n 299 300 select AUXILIARY_BUS 300 301 select DIMLIB 301 302 select NET_DEVLINK ··· 337 336 with PCIe PTM support. The cross-timestamp is available through 338 337 the PTP clock driver precise cross-timestamp ioctl 339 338 (PTP_SYS_OFFSET_PRECISE). 340 - 341 - config ICE_GNSS 342 - def_bool GNSS = y || GNSS = ICE 343 339 344 340 config FM10K 345 341 tristate "Intel(R) FM10000 Ethernet Switch Host Interface Support"
+1 -1
drivers/net/ethernet/intel/ice/Makefile
··· 47 47 ice-$(CONFIG_RFS_ACCEL) += ice_arfs.o 48 48 ice-$(CONFIG_XDP_SOCKETS) += ice_xsk.o 49 49 ice-$(CONFIG_ICE_SWITCHDEV) += ice_eswitch.o 50 - ice-$(CONFIG_ICE_GNSS) += ice_gnss.o 50 + ice-$(CONFIG_GNSS) += ice_gnss.o
+2 -2
drivers/net/ethernet/intel/ice/ice_gnss.h
··· 45 45 struct list_head queue; 46 46 }; 47 47 48 - #if IS_ENABLED(CONFIG_ICE_GNSS) 48 + #if IS_ENABLED(CONFIG_GNSS) 49 49 void ice_gnss_init(struct ice_pf *pf); 50 50 void ice_gnss_exit(struct ice_pf *pf); 51 51 bool ice_gnss_is_gps_present(struct ice_hw *hw); ··· 56 56 { 57 57 return false; 58 58 } 59 - #endif /* IS_ENABLED(CONFIG_ICE_GNSS) */ 59 + #endif /* IS_ENABLED(CONFIG_GNSS) */ 60 60 #endif /* _ICE_GNSS_H_ */