From: Krzysztof Kozlowski Date: Wed, 29 Apr 2026 18:50:26 +0000 (+0200) Subject: arm64: defconfig: Switch Ethernet drivers to modules X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d521c4ca039fd1c00b0a40b5f683df75c56329ed;p=thirdparty%2Fkernel%2Flinux.git arm64: defconfig: Switch Ethernet drivers to modules Development of Linux kernel progressed over last 10 years and it is easy to generate now initramfs for building own kernel, e.g. with Yocto or mkosi. Therefore for a few years of reviews on mailing lists, all new options enabled in arm64 defconfig were with assumption of having initramfs which can load bare minimum of modules to mount filesystem from network or disk. Basically network driver as built-in is not anymore essential to boot the system, so switch almost all Ethernet drivers to modules to save on kernel image size. Similarly 9P network filesystem for QEMU, especially that testing kernel unuder QEMU does not have any size or build process constraints and can use initramfs with -initrd argument. Note that having network drivers does not break NFS root, because whatever loading method, e.g. TFTP, which brought the kernel image can bring also the initramfs with network adapters (and I have been using such method for years for my Samsung boards). Notable exceptions / diff explanations: 1. Mark I2C as built-in, used by CONFIG_IGB as a module. 2. CONFIG_BCM4908_ENET and CONFIG_BCMASP appear in the diff, because they were default=y (via ARCH_BCMBCA or ARCH_BCM_IPROC). 3. CONFIG_HNS3_HCLGE and CONFIG_HNS3_ENET are removed, because they are default=m. Moving code to modules has positive impact on kernel image size, thus boot time of all users not using above drivers and ability to flash fixed-size boot partitions. Old Image size: 41.2 MiB (Image.gz: 14.8 MiB) New Image size: 39.1 MiB (Image.gz: 13.8 MiB) bloat-o-meter of vmlinux: add/remove: 3/6972 grow/shrink: 6/45 up/down: 66659/-2333659 (-2267000) Signed-off-by: Krzysztof Kozlowski Reviewed-by: Linus Walleij Reviewed-by: Alexandre Belloni Link: https://lore.kernel.org/r/20260429-defconfig-v2-5-e4ed4186028b@oss.qualcomm.com Signed-off-by: Arnd Bergmann --- diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 3fe097a53c5ba..13dc2b3ea30d2 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -199,8 +199,8 @@ CONFIG_MAC80211=m CONFIG_MAC80211_LEDS=y CONFIG_RFKILL=m CONFIG_RFKILL_GPIO=m -CONFIG_NET_9P=y -CONFIG_NET_9P_VIRTIO=y +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m CONFIG_NFC=m CONFIG_NFC_NCI=m CONFIG_NFC_NXP_NCI=m @@ -356,17 +356,20 @@ CONFIG_NET_DSA_MSCC_FELIX=m # CONFIG_NET_VENDOR_ALACRITECH is not set # CONFIG_NET_VENDOR_ALLWINNER is not set CONFIG_ENA_ETHERNET=m -CONFIG_AMD_XGBE=y +CONFIG_AMD_XGBE=m CONFIG_NET_XGENE=y # CONFIG_NET_VENDOR_AQUANTIA is not set # CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ASIX is not set CONFIG_ATL1C=m +CONFIG_BCM4908_ENET=m CONFIG_BCMGENET=m CONFIG_BNX2X=m +CONFIG_BGMAC_PLATFORM=m CONFIG_SYSTEMPORT=m -CONFIG_MACB=y -CONFIG_THUNDER_NIC_PF=y +CONFIG_BCMASP=m +CONFIG_MACB=m +CONFIG_THUNDER_NIC_PF=m # CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CISCO is not set # CONFIG_NET_VENDOR_CORTINA is not set @@ -376,33 +379,31 @@ CONFIG_THUNDER_NIC_PF=y # CONFIG_NET_VENDOR_EMULEX is not set # CONFIG_NET_VENDOR_ENGLEDER is not set # CONFIG_NET_VENDOR_EZCHIP is not set -CONFIG_FEC=y -CONFIG_FSL_FMAN=y -CONFIG_FSL_DPAA_ETH=y -CONFIG_FSL_DPAA2_ETH=y -CONFIG_FSL_ENETC=y +CONFIG_FEC=m +CONFIG_FSL_FMAN=m +CONFIG_FSL_DPAA_ETH=m +CONFIG_FSL_DPAA2_ETH=m +CONFIG_FSL_ENETC=m CONFIG_NXP_ENETC4=m -CONFIG_FSL_ENETC_VF=y +CONFIG_FSL_ENETC_VF=m CONFIG_FSL_ENETC_QOS=y CONFIG_NXP_NETC_BLK_CTRL=m # CONFIG_NET_VENDOR_FUNGIBLE is not set # CONFIG_NET_VENDOR_GOOGLE is not set -CONFIG_HIX5HD2_GMAC=y -CONFIG_HNS_DSAF=y -CONFIG_HNS_ENET=y -CONFIG_HNS3=y -CONFIG_HNS3_HCLGE=y -CONFIG_HNS3_ENET=y +CONFIG_HIX5HD2_GMAC=m +CONFIG_HNS_DSAF=m +CONFIG_HNS_ENET=m +CONFIG_HNS3=m # CONFIG_NET_VENDOR_HUAWEI is not set -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGBVF=y +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_IGBVF=m # CONFIG_NET_VENDOR_ADI is not set # CONFIG_NET_VENDOR_LITEX is not set -CONFIG_MVNETA=y -CONFIG_MVPP2=y -CONFIG_SKY2=y +CONFIG_MVNETA=m +CONFIG_MVPP2=m +CONFIG_SKY2=m CONFIG_NET_VENDOR_MEDIATEK=y CONFIG_NET_MEDIATEK_STAR_EMAC=m CONFIG_MLX4_EN=m @@ -426,27 +427,27 @@ CONFIG_QCOM_EMAC=m CONFIG_RMNET=m # CONFIG_NET_VENDOR_RDC is not set CONFIG_R8169=m -CONFIG_SH_ETH=y -CONFIG_RAVB=y -CONFIG_RENESAS_ETHER_SWITCH=y -CONFIG_RTSN=y +CONFIG_SH_ETH=m +CONFIG_RAVB=m +CONFIG_RENESAS_ETHER_SWITCH=m +CONFIG_RTSN=m # CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SEEQ is not set # CONFIG_NET_VENDOR_SILAN is not set # CONFIG_NET_VENDOR_SIS is not set # CONFIG_NET_VENDOR_SOLARFLARE is not set -CONFIG_SMC91X=y -CONFIG_SMSC911X=y -CONFIG_SNI_AVE=y -CONFIG_SNI_NETSEC=y +CONFIG_SMC91X=m +CONFIG_SMSC911X=m +CONFIG_SNI_AVE=m +CONFIG_SNI_NETSEC=m CONFIG_STMMAC_ETH=m CONFIG_DWMAC_MEDIATEK=m CONFIG_DWMAC_TEGRA=m # CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SYNOPSYS is not set # CONFIG_NET_VENDOR_TEHUTI is not set -CONFIG_TI_K3_AM65_CPSW_NUSS=y +CONFIG_TI_K3_AM65_CPSW_NUSS=m CONFIG_TI_ICSSG_PRUETH=m # CONFIG_NET_VENDOR_VERTEXCOM is not set # CONFIG_NET_VENDOR_VIA is not set @@ -479,7 +480,7 @@ CONFIG_CAN_M_CAN_PLATFORM=m CONFIG_CAN_RCAR=m CONFIG_CAN_RCAR_CANFD=m CONFIG_CAN_MCP251XFD=m -CONFIG_MDIO_GPIO=y +CONFIG_MDIO_GPIO=m CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y CONFIG_MDIO_BUS_MUX_MMIOREG=y CONFIG_USB_PEGASUS=m @@ -601,6 +602,7 @@ CONFIG_TCG_TIS_SPI=m CONFIG_TCG_TIS_SPI_CR50=y CONFIG_TCG_TIS_I2C_CR50=m CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_I2C=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=y CONFIG_I2C_MUX_PCA954x=y @@ -1954,7 +1956,7 @@ CONFIG_NFS_V4=y CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_ROOT_NFS=y -CONFIG_9P_FS=y +CONFIG_9P_FS=m CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ISO8859_1=y CONFIG_SECURITY=y