kernel: only optimized for size if small_flash
authorMathias Kresin <dev@kresin.me>
Mon, 9 Jul 2018 18:48:56 +0000 (20:48 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:20 +0000 (17:32 +0100)
Add a new config option to allow to select the default compile
optimization level for the kernel.

Select the optimization for size by default if the small_flash feature is
set. Otherwise "Optimize for performance" is set.

Add the small_flash feature flag to all (sub)targets which had the
optimization for size in their default kernel config.

Remove CC_OPTIMIZE_FOR_* symbols from all kernel configs to apply the new
setting.

Exceptions to the above are:

  - lantiq, where the optimization for size is only required for the
    xway_legacy subtarget but was set for the whole target
  - mediatek, ramips/mt7620 & ramips/mt76x8 where boards should have
    plenty of space and an optimization for size doesn't make much sense
  - rb532, which has 128MByte flash

Signed-off-by: Mathias Kresin <dev@kresin.me>
(backported from cf7154db07c0b8746be290c9e11dcab3c91d237e)

19 files changed:
config/Config-kernel.in
target/linux/apm821xx/config-4.14
target/linux/at91/config-4.9
target/linux/ath25/config-4.14
target/linux/generic/config-4.14
target/linux/generic/config-4.9
target/linux/lantiq/config-4.14
target/linux/layerscape/armv8_32b/config-4.9
target/linux/layerscape/armv8_64b/config-4.9
target/linux/mediatek/mt7622/config-4.14
target/linux/ramips/mt7620/config-4.14
target/linux/ramips/mt76x8/config-4.14
target/linux/ramips/rt288x/config-4.14
target/linux/ramips/rt288x/target.mk
target/linux/ramips/rt305x/config-4.14
target/linux/ramips/rt305x/target.mk
target/linux/ramips/rt3883/config-4.14
target/linux/ramips/rt3883/target.mk
target/linux/rb532/config-4.9

index d2d1909956f35b74d034e7197b9f02915a7707f3..58f7d6009442c8c41f99a6221e5f1a99765dc44b 100644 (file)
@@ -806,3 +806,25 @@ config KERNEL_DEVKMEM
          Say Y here if you want to support the /dev/kmem device. The
          /dev/kmem device is rarely used, but can be used for certain
          kind of kernel debugging operations.
+
+#
+# compile optimiziation setting
+#
+choice
+       prompt "Compiler optimization level"
+       default KERNEL_CC_OPTIMIZE_FOR_SIZE if SMALL_FLASH
+
+config KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE
+       bool "Optimize for performance"
+       help
+         This is the default optimization level for the kernel, building
+         with the "-O2" compiler flag for best performance and most
+         helpful compile-time warnings.
+
+config KERNEL_CC_OPTIMIZE_FOR_SIZE
+       bool "Optimize for size"
+       help
+         Enabling this option will pass "-Os" instead of "-O2" to
+         your compiler resulting in a smaller kernel.
+
+endchoice
index c756c8a4f903be3d64c8297b4bb63f43730af4c8..756806620dc8b7ba606f0dc7c8bcd63b157b0051 100644 (file)
@@ -47,9 +47,9 @@ CONFIG_BLK_MQ_PCI=y
 # CONFIG_BLUESTONE is not set
 CONFIG_BOOKE=y
 CONFIG_BOOKE_WDT=y
-# CONFIG_BOUNCE is not set
+CONFIG_BOUNCE=y
 CONFIG_BUCKMINSTER=y
-# CONFIG_CANYONLANDS is not set
+CONFIG_CANYONLANDS=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
 CONFIG_CMDLINE_BOOL=y
index 1e8bfd99bb718eaf60d47d0f9e0cc07901b4738e..45faf55155fc5202445a5947bfd4a7766283f03e 100644 (file)
@@ -58,8 +58,6 @@ CONFIG_BLK_DEV_SD=y
 # CONFIG_BPF_SYSCALL is not set
 # CONFIG_BRIDGE is not set
 CONFIG_CACHE_L2X0=y
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLKSRC_OF=y
 CONFIG_CLKSRC_PROBE=y
index 4d3f0c697e6702d6c468b3efc5b287cd93051b52..b97de277563aac77705a310f79ec24f73229e9e3 100644 (file)
@@ -23,7 +23,9 @@ CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
 CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_ATH25=y
+CONFIG_ARM_AMBA=y
 CONFIG_BLK_MQ_PCI=y
+CONFIG_BUILD_BIN2C=y
 CONFIG_CEVT_R4K=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CMDLINE="console=ttyS0,9600 rootfstype=squashfs,jffs2"
index 41c9774aa36089cece4c4f68829dd1223a6f3a51..b37eac41187653e49caf6a3926ad766b6bcd7836 100644 (file)
@@ -717,8 +717,6 @@ CONFIG_CARDBUS=y
 # CONFIG_CB710_CORE is not set
 # CONFIG_CC10001_ADC is not set
 # CONFIG_CCS811 is not set
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_CC_STACKPROTECTOR is not set
 CONFIG_CC_STACKPROTECTOR_NONE=y
 # CONFIG_CC_STACKPROTECTOR_REGULAR is not set
index 5e2b25f31e380b4f6aea114fe68f79ce99dc8d63..ea71560cad6566f716d120d4220d9f66785dd78d 100644 (file)
@@ -680,8 +680,6 @@ CONFIG_CARDBUS=y
 # CONFIG_CAVIUM_OCTEON_SOC is not set
 # CONFIG_CB710_CORE is not set
 # CONFIG_CC10001_ADC is not set
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_CC_STACKPROTECTOR is not set
 CONFIG_CC_STACKPROTECTOR_NONE=y
 # CONFIG_CC_STACKPROTECTOR_REGULAR is not set
index 12264413d28f9fb0c0601d9a933475169ce8f739..aec0efa408eadaa664acb1725ea61d618275a48a 100644 (file)
@@ -20,8 +20,6 @@ CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
 CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLONE_BACKWARDS=y
index 8187d1884f9a1cc7d441d9a760e9c16069ebf0ec..d41d5aefab8b05139902d6b0f6e0104c785bb186 100644 (file)
@@ -145,8 +145,6 @@ CONFIG_CAN_RAW=y
 # CONFIG_CAN_SJA1000 is not set
 # CONFIG_CAN_SOFTING is not set
 # CONFIG_CAN_TI_HECC is not set
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_CFS_BANDWIDTH is not set
 CONFIG_CGROUPS=y
 CONFIG_CGROUP_CPUACCT=y
index 89edbc89b0765857fda53044c5b8b13301133acd..bb75759ec7448b3ebb7a762ee6efb2a45a53a80c 100644 (file)
@@ -157,8 +157,6 @@ CONFIG_CAVIUM_ERRATUM_22375=y
 CONFIG_CAVIUM_ERRATUM_23144=y
 CONFIG_CAVIUM_ERRATUM_23154=y
 CONFIG_CAVIUM_ERRATUM_27456=y
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_CEPH_LIB=y
 # CONFIG_CEPH_LIB_PRETTYDEBUG is not set
 # CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
index 55377abfeec4f0d71191eca51a3e3df417749a75..86951e198af0886409661f3bbf262f0ad8302e20 100644 (file)
@@ -89,8 +89,6 @@ CONFIG_BT_HCIUART=y
 CONFIG_BT_HCIUART_SERDEV=y
 CONFIG_BT_HCIVHCI=y
 CONFIG_BUILD_BIN2C=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLKSRC_MMIO=y
 CONFIG_CLOCK_THERMAL=y
index d60696b225946313f02f82825176243dc8132d8d..89de071446c00f507c4f99f06a3606ff6f406ec4 100644 (file)
@@ -22,8 +22,6 @@ CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_AT803X_PHY=y
 CONFIG_BLK_MQ_PCI=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CEVT_SYSTICK_QUIRK=y
 CONFIG_CLKDEV_LOOKUP=y
index 614c366d1e88cf13475893fa58a09ab3822fda21..81e08489315d6ae6e0996970ceaacd66df5de44c 100644 (file)
@@ -22,8 +22,6 @@ CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_AT803X_PHY=y
 CONFIG_BLK_MQ_PCI=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CEVT_SYSTICK_QUIRK=y
 CONFIG_CLKDEV_LOOKUP=y
index a4b49790a3c211b34ec80664ca5c554423498ad1..de4dffe885cf13af9ae7457a8bbbb6dc45f960c5 100644 (file)
@@ -21,8 +21,6 @@ CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
 CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_BLK_MQ_PCI=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 # CONFIG_CEVT_SYSTICK_QUIRK is not set
 CONFIG_CLKDEV_LOOKUP=y
index 2ca5ecfbb3746fed8bbdea7465e338863a389b22..11b5a0b5201de8b116f0775bbf21abf3c6c39a0a 100644 (file)
@@ -4,6 +4,7 @@
 
 SUBTARGET:=rt288x
 BOARDNAME:=RT288x based boards
+FEATURES+=small_flash
 CPU_TYPE:=24kc
 
 DEFAULT_PACKAGES += kmod-rt2800-soc wpad-mini
index dadf88e0322fa4b1035d85634e93c94920fce2e3..346a8a8814f72f73b3a1a8f7e69ce8ea9009e89c 100644 (file)
@@ -12,8 +12,6 @@ CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CEVT_SYSTICK_QUIRK=y
 CONFIG_CLKDEV_LOOKUP=y
index 300639fa38efdfd50c8b9037c952ad7533dbf9f5..e36fa637b1db0c3054ce92a7fc67e1d50fd561da 100644 (file)
@@ -4,7 +4,7 @@
 
 SUBTARGET:=rt305x
 BOARDNAME:=RT3x5x/RT5350 based boards
-FEATURES+=usb ramdisk
+FEATURES+=usb ramdisk small_flash
 CPU_TYPE:=24kc
 
 DEFAULT_PACKAGES += kmod-rt2800-soc wpad-mini
index f663d49865081508389f533505b844d021f37d58..93d803e2edefb360236b78303c044e03b983e879 100644 (file)
@@ -22,8 +22,6 @@ CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
 CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_BLK_MQ_PCI=y
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 # CONFIG_CEVT_SYSTICK_QUIRK is not set
 CONFIG_CLKDEV_LOOKUP=y
index a2631d1ac7053870614a2869cd7e6dec73b21c32..2cc19858e49a9a63405e87c8916ddbaf65dbe252 100644 (file)
@@ -4,7 +4,7 @@
 
 SUBTARGET:=rt3883
 BOARDNAME:=RT3662/RT3883 based boards
-FEATURES+=usb pci
+FEATURES+=usb pci small_flash
 CPU_TYPE:=74kc
 
 DEFAULT_PACKAGES += kmod-rt2800-pci kmod-rt2800-soc wpad-mini
index 9290a1869af4183c3a83cb33e85febd5e9d65555..a02dc03bb3b17302cd59d4d3eb4917669362c690 100644 (file)
@@ -16,7 +16,6 @@ CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_ATA=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_SD=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CEVT_R4K=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CPU_GENERIC_DUMP_TLB=y