mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
8b4169f1c9
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
)
144 lines
4.5 KiB
Plaintext
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.
|