openwrt/config/Config-devel.in
Rafał Miłecki b54ef39e0b bcm53xx: use -falign-functions=32 for kernel compilation
Northstar SoCs have pretty small CPU caches and their performance is
heavily affected by cache hits & misses. It means that all kind of
random code changes can affect performance as they often reorganize
(change alignment & possibly reorder) kernel symbols.

It was discussed in ARM / net mailinglists:
1. ARM router NAT performance affected by random/unrelated commits [1] [2]
2. Optimizing kernel compilation / alignments for network performance [3] [4]

It seems that -falign-functions can be used as a partial workaround. It
doesn't solve all cases (e.g. documented watchdog one [5]) but it surely
helps with many of them.

A complete long term solution may be PGO (profile-guided optimization)
but it isn't available at this point.

[1] https://lkml.org/lkml/2019/5/21/349
[2] https://www.spinics.net/lists/linux-block/msg40624.html
[3] https://lore.kernel.org/linux-arm-kernel/066fc320-dc04-11a4-476e-b0d11f3b17e6@gmail.com/T/
[4] https://www.spinics.net/lists/netdev/msg816103.html
[5] http://lists.openwrt.org/pipermail/openwrt-devel/2022-July/038989.html

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit abc5b28db1)
2022-07-08 16:18:25 +02:00

144 lines
4.5 KiB
Plaintext

# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2006-2013 OpenWrt.org
menuconfig DEVEL
bool "Advanced configuration options (for developers)"
default n
config BROKEN
bool "Show broken platforms / packages / devices" if DEVEL
default n
config BINARY_FOLDER
string "Binary folder" if DEVEL
default ""
help
Store built firmware images and filesystem images in this directory.
If not set, uses './bin/$(BOARD)'
config DOWNLOAD_FOLDER
string "Download folder" if DEVEL
default ""
help
Store downloaded source bundles in this directory.
If not set then defaults to './dl', which is removed by operations such as
'git clean -xdf' or 'make distclean'.
This option is useful if you have a low bandwidth Internet connection, and by
setting a path outside the OpenWrt tree downloads will be saved.
config LOCALMIRROR
string "Local mirror for source packages" if DEVEL
default ""
config AUTOREBUILD
bool "Automatic rebuild of packages" if DEVEL
default y
help
Automatically rebuild packages when their files change.
config AUTOREMOVE
bool "Automatic removal of build directories" if DEVEL
default n
help
Automatically delete build directories after make target completed.
This allows you to symlink build_dir into a scratch location, e.g. a ramdisk,
which does not have enough space to keep a complete build_dir.
config BUILD_SUFFIX
string "Build suffix to append to the target BUILD_DIR variable" if DEVEL
default ""
help
Build suffix to append to the BUILD_DIR variable, i.e: './build_dir/{target-build-dir}_$(BUILD_SUFFIX)'.
This allows you to switch to a different .config whilst retaining all the build
objects generated by the first .config
config TARGET_ROOTFS_DIR
string "Override the default TARGET_ROOTFS_DIR variable" if DEVEL
default ""
help
Override the default TARGET_ROOTFS_DIR variable content $(BUILD_DIR) with
custom path. Use this option to re-define the location of the target
root filesystem directory.
config CCACHE
bool "Use ccache" if DEVEL
default n
help
Compiler cache; see https://ccache.samba.org/
config CCACHE_DIR
string "Set ccache directory" if CCACHE
default ""
help
Store ccache in this directory.
If not set, uses './.ccache'
config KERNEL_CFLAGS
string "Kernel extra CFLAGS" if DEVEL
default "-falign-functions=32" if TARGET_bcm53xx
default ""
config EXTERNAL_KERNEL_TREE
string "Use external kernel tree" if DEVEL
default ""
config KERNEL_GIT_CLONE_URI
string "Enter git repository to clone" if DEVEL
default ""
help
Enter the full git repository path i.e.:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
This will create a git clone of the kernel in your build directory.
config KERNEL_GIT_LOCAL_REPOSITORY
string "Enter path to local reference repository" if DEVEL
depends on (KERNEL_GIT_CLONE_URI != "")
default ""
help
Enter a full pathname to a local reference git repository.
In this instance, the --reference option of git clone will
be used thus creating a quick local clone of your repo.
config KERNEL_GIT_REF
string "Enter git ref at which to checkout" if DEVEL
depends on (KERNEL_GIT_CLONE_URI != "")
default ""
help
Enter the git ref at which to checkout the git repository
after it is cloned, and before making it a tar-ball.
It can be a git hash or a branch name.
If unused, the clone's repository HEAD will be checked-out.
config KERNEL_GIT_MIRROR_HASH
string "Enter hash of Git kernel tree source checkout tarball" if DEVEL
depends on (KERNEL_GIT_CLONE_URI != "")
default ""
config BUILD_LOG
bool "Enable log files during build process" if DEVEL
help
If enabled, log files will be written to the ./log directory.
config BUILD_LOG_DIR
string "Log folder" if DEVEL
default ""
help
Store build logs in this directory.
If not set, uses './logs'
config SRC_TREE_OVERRIDE
bool "Enable package source tree override" if DEVEL
help
If enabled, you can force a package to use a git tree as source
code instead of the normal tarball. Create a symlink 'git-src'
in the package directory, pointing to the .git tree that you want
to pull the source code from.
config EXTRA_OPTIMIZATION
string "Additional compiler options" if DEVEL
default "-fno-caller-saves -fno-plt" if !CONFIG_EXTERNAL_TOOLCHAIN && !arc
default "-fno-caller-saves"
help
Extra target-independent optimizations to use when building for the target.