Add a native LLVM Morello cross compiler and a native LLVM that will build it. Add class to be inherited by users of LLVM Morello compiler, this class is required as the inital commit does not provide a proper Yocto Morello toolchain.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- COPYING.MIT | 17 +++ classes/llvm-morello-native.bbclass | 49 +++++++ recipes-devtools/llvm/llvm-13.0.1-native.bb | 31 ++++ .../llvm/llvm-morello-native_13.0.bb | 13 ++ recipes-devtools/llvm/llvm-morello.inc | 136 ++++++++++++++++++ 5 files changed, 246 insertions(+) create mode 100644 COPYING.MIT create mode 100644 classes/llvm-morello-native.bbclass create mode 100644 recipes-devtools/llvm/llvm-13.0.1-native.bb create mode 100644 recipes-devtools/llvm/llvm-morello-native_13.0.bb create mode 100644 recipes-devtools/llvm/llvm-morello.inc
diff --git a/COPYING.MIT b/COPYING.MIT new file mode 100644 index 0000000..e14c371 --- /dev/null +++ b/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/classes/llvm-morello-native.bbclass b/classes/llvm-morello-native.bbclass new file mode 100644 index 0000000..b944052 --- /dev/null +++ b/classes/llvm-morello-native.bbclass @@ -0,0 +1,49 @@ +MORELLO_COMPILER = "llvm-morello-native" + +LLVM_VERSION = "13.0.0" + +LLVM_PATH = "${STAGING_DIR_NATIVE}/usr/bin" + +ELF_PATCHER = "${STAGING_BINDIR_NATIVE}/elf-patcher" + +INHIBIT_DEFAULT_DEPS = "1" + +DEPENDS += "virtual/llvm-morello-native" +DEPENDS:append:morello-linux-glibc:class-target = " virtual/musl-morello-libs-native virtual/elf-patcher-native" +DEPENDS:append:morello-linux-musl:class-target = " virtual/musl-morello-libs-native virtual/elf-patcher-native" + +# rough hack to deal with llvm-morello not being a proper toolchain in its own meta yet +DEPENDS:remove = "libgcc" + +do_configure[depends] += " ${@get_depends(d)}" + +LIBCPLUSPLUS = "-stdlib-libc++" + +export CC = "${LLVM_PATH}/clang" +export CXX = "${LLVM_PATH}/clang++" +export CPP = "${LLVM_PATH}/clang" +export CCLD = "${LLVM_PATH}/clang" +export RANLIB = "${LLVM_PATH}/llvm-ranlib" +export AR = "${LLVM_PATH}/llvm-ar" +export AS = "${LLVM_PATH}/llvm-as" +export NM = "${LLVM_PATH}/llvm-nm" +export OBJDUMP = "${LLVM_PATH}/llvm-objdump" +export OBJCOPY = "${LLVM_PATH}/llvm-objcopy" +export STRIP = "${LLVM_PATH}/llvm-strip" +export STRINGS = "${LLVM_PATH}/llvm-strings" +export READELF = "${LLVM_PATH}/llvm-readelf" +export LD = "${LLVM_PATH}/ld.lld" +export LTO = "-fuse-ld=lld" +export HOSTCC = "${LLVM_PATH}/clang" +export LLVM_CONFIG = "${LLVM_PATH}/llvm-config" + +def get_depends(d): + if d.getVar('DEPENDENCIES'): + return "llvm-morello-native:do_populate_sysroot" + else: + return "llvm-morello-native:do_populate_sysroot virtual/musl-morello:do_populate_sysroot" + +DEPENDENCIES:kernel = "1" +DEPENDENCIES:musl = "1" +DEPENDENCIES:musl-morello-native = "1" +DEPENDENCIES ?= "0" \ No newline at end of file diff --git a/recipes-devtools/llvm/llvm-13.0.1-native.bb b/recipes-devtools/llvm/llvm-13.0.1-native.bb new file mode 100644 index 0000000..37140ce --- /dev/null +++ b/recipes-devtools/llvm/llvm-13.0.1-native.bb @@ -0,0 +1,31 @@ +inherit native nopackages + +SUMMARY = "LLVM 13.01" +DESCRIPTION = "LLVM used purely for compiling llvm-morello" +HOMEPAGE = "http://llvm.org" +LICENSE = "Apache-2.0-with-LLVM-exception" +OUTPUTS_NAME = "llvm-13.0.1" + +PROVIDES = "virtual/${OUTPUTS_NAME}-native ${OUTPUTS_NAME}-native" + +SRC_URI = "https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+..." + +SRC_URI[md5sum] = "041e3a5c735d5f956668254b1ffd35d1" +LIC_FILES_CHKSUM = "file://include/llvm/Support/LICENSE.TXT;md5=986c03435151a0086b8aaac964939cdd" + +S = "${WORKDIR}/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04" +FILES:${PN} = "/${OUTPUTS_NAME}" + +SYSROOT_DIRS_NATIVE += "/${OUTPUTS_NAME}" + +do_install() { + install -d ${D}${libdir}/${OUTPUTS_NAME} + cp -rf ${S}/* ${D}${libdir}/${OUTPUTS_NAME} +} + +INSANE_SKIP_${PN} = "already-stripped libdir staticdev file-rdeps arch dev-so rpaths useless-rpaths" +INHIBIT_SYSROOT_STRIP = "1" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" +INHIBIT_DEFAULT_DEPS = "1" +EXCLUDE_FROM_SHLIBS = "1" \ No newline at end of file diff --git a/recipes-devtools/llvm/llvm-morello-native_13.0.bb b/recipes-devtools/llvm/llvm-morello-native_13.0.bb new file mode 100644 index 0000000..3b7653b --- /dev/null +++ b/recipes-devtools/llvm/llvm-morello-native_13.0.bb @@ -0,0 +1,13 @@ +inherit cmake pkgconfig python3native native +require llvm-morello.inc +DESCRIPTION = "The Morello LLVM Compiler Infrastructure native" + +PROVIDES = "virtual/${OUTPUTS_NAME}-native" +PN = "${OUTPUTS_NAME}-native" + +FILES:${PN} += "${prefix}" + +do_install:append() { + install -d ${D}${prefix} + cp -rvf ${LLVM_INSTALL_DIR}/* ${D}${prefix} +} \ No newline at end of file diff --git a/recipes-devtools/llvm/llvm-morello.inc b/recipes-devtools/llvm/llvm-morello.inc new file mode 100644 index 0000000..8291017 --- /dev/null +++ b/recipes-devtools/llvm/llvm-morello.inc @@ -0,0 +1,136 @@ + + +SUMMARY = "CHERI enabled Linux kernel" +HOMEPAGE = "http://llvm.org" +LICENSE = "Apache-2.0-with-LLVM-exception" +OUTPUTS_NAME = "llvm-morello" + +DEPENDS = "zlib-native ninja-native ${COMPILER}-native" + +SRC_URI = "git://git.morello-project.org/morello/llvm-project;protocol=https;branch=${SRCBRANCH}" +SRCREV = "cac045cbb70a9c8161f2f32fa5ef056242eb28f3" + +SRCBRANCH = "morello/release-1.5" +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe" + +S = "${WORKDIR}/git/llvm" +S_git = "${WORKDIR}/git" + +FILES:${PN} = "/${OUTPUTS_NAME}" +SYSROOT_DIRS_NATIVE += "/${OUTPUTS_NAME}" + +COMPILER = "llvm-13.0.1" + +LLVM_TARGETS_TO_BUILD = "X86;AArch64" +LLVM_PROJECTS = "libcxx;libcxxabi;compiler-rt;libunwind;llvm;clang;lld;lldb" +LLVM_BUILD_DIR = "${WORKDIR}/${OUTPUTS_NAME}-build" +LLVM_INSTALL_DIR = "${D}/${OUTPUTS_NAME}" + +NATIVE_LLVM_PATH = "${STAGING_LIBDIR_NATIVE}/${COMPILER}/bin" +LIB_PATH = "${STAGING_LIBDIR_NATIVE}/${COMPILER}/lib" +LIB_PATH_RT = "${STAGING_LIBDIR_NATIVE}/${COMPILER}/lib/clang/13.0.1/lib/linux" + +EXTRA_OECMAKE += "-Wno-dev -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL_DIR} \ + -DCMAKE_C_COMPILER='${NATIVE_LLVM_PATH}/clang' \ + -DCMAKE_CXX_COMPILER='${NATIVE_LLVM_PATH}/clang++' \ + -DCMAKE_ASM_COMPILER='${NATIVE_LLVM_PATH}/clang' \ + -DCMAKE_AR='${NATIVE_LLVM_PATH}/llvm-ar' \ + -DCMAKE_RANLIB='${NATIVE_LLVM_PATH}/llvm-ranlib' \ + -DCMAKE_NM='${NATIVE_LLVM_PATH}/llvm-nm' \ + -DCMAKE_OBJDUMP='${NATIVE_LLVM_PATH}/llvm-objdump' \ + -DCMAKE_OBJCOPY='${NATIVE_LLVM_PATH}/llvm-objcopy' \ + -DCMAKE_LINKER='${NATIVE_LLVM_PATH}/ld.lld' \ + -DCMAKE_C_FLAGS_RELEASE='${CFLAGS}' \ + -DCLANG_DEFAULT_LINKER='lld' \ + -DCMAKE_EXE_LINKER_FLAGS='-fuse-ld=lld' \ + -DCMAKE_SHARED_LINKER_FLAGS='-fuse-ld=lld' \ + -DCMAKE_SKIP_BUILD_RPATH=OFF \ + -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib:${LIB_PATH}' \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DLLVM_CCACHE_BUILD=FALSE \ + -DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EH=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_ENABLE_LLD=ON \ + -DLLVM_ENABLE_LIBCXX=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DCOMPILER_RT_BUILD_BUILTINS=ON \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_PROFILE=OFF \ + -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ + -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \ + -DLIBCXX_CXX_ABI='libcxxabi' \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS='${WORKDIR}/git/libcxxabi/include' \ + -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBUNWIND_ENABLE_THREADS=ON \ + -DCLANG_DEFAULT_RTLIB='compiler-rt' \ + -DCLANG_DEFAULT_CXX_STDLIB='libc++' \ + -DCLANG_DEFAULT_OBJCOPY='llvm-objcopy'\ + '-DLLVM_LIT_ARGS=--max-time 3600 --timeout 300 -s -vv' \ + -DLLVM_USE_SPLIT_DWARF=TRUE \ + -DLLVM_ENABLE_OCAMLDOC=FALSE \ + -DLLVM_ENABLE_BINDINGS=FALSE \ + -DLLVM_INCLUDE_EXAMPLES=FALSE \ + -DLLVM_INCLUDE_DOCS=FALSE \ + -DLLVM_INCLUDE_BENCHMARKS=FALSE \ + -DCLANG_ENABLE_STATIC_ANALYZER=FALSE \ + -DCLANG_ENABLE_ARCMT=FALSE \ + -DLLVM_ENABLE_Z3_SOLVER=FALSE \ + -DLLVM_TOOL_LLVM_MCA_BUILD=FALSE \ + -DLLVM_TOOL_LLVM_EXEGESIS_BUILD=FALSE \ + -DLLVM_TOOL_LLVM_RC_BUILD=FALSE \ + -DLLVM_OPTIMIZED_TABLEGEN=FALSE \ + -DLLVM_ENABLE_ZLIB=FORCE_ON \ + -DLLVM_ENABLE_LIBXML2=FALSE \ +" + +INSANE_SKIP_${PN} = "already-stripped" +INHIBIT_SYSROOT_STRIP = "1" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" +INHIBIT_DEFAULT_DEPS = "1" + +do_unpack[depends] += "${COMPILER}-native:do_populate_sysroot" + +do_configure() { + mkdir -p ${LLVM_BUILD_DIR} + cd ${LLVM_BUILD_DIR} + cmake -S ${S} -B ${LLVM_BUILD_DIR} ${EXTRA_OECMAKE} +} + +do_compile() { + export CC="${NATIVE_LLVM_PATH}/clang" + export NM="${NATIVE_LLVM_PATH}/llvm-nm" + export CXX="${NATIVE_LLVM_PATH}/clang++" + export LD="${NATIVE_LLVM_PATH}/ld.lld" + cd ${LLVM_BUILD_DIR} + cmake --build . --target all -- -j20 +} + +do_install() { + cd ${LLVM_BUILD_DIR} + cmake --build . --target install + install -d ${LLVM_SHARED_SOURCE} +} + +python do_symlink() { + s = d.getVar("S_git") + if s[-1] == '/': + # drop trailing slash, so that os.symlink(src, s) doesn't use s as directory name and fail + s=s[:-1] + src = d.getVar("LLVM_SHARED_SOURCE") + if s != src: + bb.utils.mkdirhier(src) + bb.utils.remove(src, recurse=True) + os.symlink(s, src) + else: + import shutil + shutil.move(s, src) + os.symlink(src, s) +} +addtask do_symlink after do_install before do_build \ No newline at end of file
The machines are split between bsp/linux musl-only/linux with glibc. This way the users will be able to build a purecap-musl-only environment in the future or a glibc environment with purecap being statically linked. The bsp is its own separate machine to deal with the fact that LLVM Morello is not a fully implemented toolchain (we might get build errors relating to gcc lib which needs libc, but libc is purecap only).
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- conf/bblayers.conf.sample | 16 +++ conf/layer.conf | 15 ++ conf/local.conf.sample | 176 ++++++++++++++++++++++++ conf/machine/include/morello-1.5.inc | 1 + conf/machine/include/morello-common.inc | 27 ++++ conf/machine/morello-bsp.conf | 1 + conf/machine/morello-linux-glibc.conf | 3 + conf/machine/morello-linux-musl.conf | 3 + 8 files changed, 242 insertions(+) create mode 100644 conf/bblayers.conf.sample create mode 100644 conf/layer.conf create mode 100644 conf/local.conf.sample create mode 100644 conf/machine/include/morello-1.5.inc create mode 100644 conf/machine/include/morello-common.inc create mode 100644 conf/machine/morello-bsp.conf create mode 100644 conf/machine/morello-linux-glibc.conf create mode 100644 conf/machine/morello-linux-musl.conf
diff --git a/conf/bblayers.conf.sample b/conf/bblayers.conf.sample new file mode 100644 index 0000000..d86dbed --- /dev/null +++ b/conf/bblayers.conf.sample @@ -0,0 +1,16 @@ +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "7" + +BBPATH = "${TOPDIR}" + +BBFILES ?= "" + +BBLAYERS = " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/meta-arm/meta-arm \ + ##OEROOT##/meta-arm/meta-arm-bsp \ + ##OEROOT##/meta-arm/meta-arm-toolchain \ + ##OEROOT##/meta-morello \ + " \ No newline at end of file diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..5cd622e --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,15 @@ +BBPATH := "${BBPATH}:${LAYERDIR}" + +BBFILES := "${BBFILES} \ + ${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "meta-morello" +BBFILE_PATTERN_meta-morello := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-morello = "5" + +LAYERDEPENDS_meta-morello = " \ + core \ + meta-arm \ +" +LAYERSERIES_COMPAT_meta-morello = "kirkstone" diff --git a/conf/local.conf.sample b/conf/local.conf.sample new file mode 100644 index 0000000..eb3c335 --- /dev/null +++ b/conf/local.conf.sample @@ -0,0 +1,176 @@ +MACHINE ?= "morello-bsp" + +BB_NUMBER_THREADS ?= "${@oe.utils.cpu_count()}" +PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count()}" + +PACKAGE_CLASSES ?= "package_rpm" + +# DISTRO ?= "poky-bleeding" + +# +# SDK target architecture +# +# This variable specifies the architecture to build SDK items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686, x86_64, aarch64 +#SDKMACHINE ?= "i686" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "src-pkgs" - add -src packages for all installed packages +# (adds source code for debugging) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +USER_CLASSES ?= "buildstats" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. It can also +# run tests against any SDK that are built. To enable this uncomment these lines. +# See classes/test{image,sdk}.bbclass for further details. +#IMAGE_CLASSES += "testimage testsdk" +#TESTIMAGE_AUTO:qemuall = "1" + +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard halt +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necessary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + HALT,${TMPDIR},100M,1K \ + HALT,${DL_DIR},100M,1K \ + HALT,${SSTATE_DIR},100M,1K \ + HALT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can be +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as https or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* https://someserver.tld/share/sstate/PATH%3Bdownloadfilename=PATH \ +#file://.* file:///some/local/dir/sstate/PATH" + +# +# Yocto Project SState Mirror +# +# The Yocto Project has prebuilt artefacts available for its releases, you can enable +# use of these by uncommenting the following lines. This will mean the build uses +# the network to check for artefacts at the start of builds, which does slow it down +# equally, it will also speed up the builds by not having to build things if they are +# present in the cache. It assumes you can download something faster than you can build it +# which will depend on your network. +# Note: For this to work you also need hash-equivalence passthrough to the matching server +# +#BB_HASHSERVE_UPSTREAM = "typhoon.yocto.io:8687" +#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH%3Bdownloadfilename=PATH" + +# +# Qemu configuration +# +# By default native qemu will build with a builtin VNC server where graphical output can be +# seen. The line below enables the SDL UI frontend too. +PACKAGECONFIG:append:pn-qemu-system-native = " sdl" +# By default libsdl2-native will be built, if you want to use your host's libSDL instead of +# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below. +#ASSUME_PROVIDED += "libsdl2-native" + +# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds +# a handy set of menus for controlling the emulator. +#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+" + +# +# Hash Equivalence +# +# Enable support for automatically running a local hash equivalence server and +# instruct bitbake to use a hash equivalence aware signature generator. Hash +# equivalence improves reuse of sstate by detecting when a given sstate +# artifact can be reused as equivalent, even if the current task hash doesn't +# match the one that generated the artifact. +# +# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format +# +#BB_HASHSERVE = "auto" +#BB_SIGNATURE_HANDLER = "OEEquivHash" + +# +# Memory Resident Bitbake +# +# Bitbake's server component can stay in memory after the UI for the current command +# has completed. This means subsequent commands can run faster since there is no need +# for bitbake to reload cache files and so on. Number is in seconds, after which the +# server will shut down. +# +#BB_SERVER_TIMEOUT = "60" + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "2" diff --git a/conf/machine/include/morello-1.5.inc b/conf/machine/include/morello-1.5.inc new file mode 100644 index 0000000..ba38033 --- /dev/null +++ b/conf/machine/include/morello-1.5.inc @@ -0,0 +1 @@ +MORELLO_RELEASE_VERSION = "1.5" \ No newline at end of file diff --git a/conf/machine/include/morello-common.inc b/conf/machine/include/morello-common.inc new file mode 100644 index 0000000..31601a4 --- /dev/null +++ b/conf/machine/include/morello-common.inc @@ -0,0 +1,27 @@ +require ${COREBASE}/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc +require conf/machine/include/morello-1.5.inc + +MACHINEOVERRIDES =. "morello" + +LLVM_SHARED_SOURCE ?= "${TMPDIR}/work-shared/${MACHINE}/llvm-morello-source" + +MUSL_INSTALL_DIR ??="" + +C64_ARCH_TRIPLE = "aarch64-linux-musl_purecap" +A64_ARCH_TRIPLE = "aarch64-linux-gnu" + +A64_LIB_TRIPLE = "aarch64-unknown-linux-gnu" +C64_LIB_TRIPLE = "aarch64-unknown-linux-musl_purecap" + +A64_ARCH_FLAGS = "-march=armv8" +C64_ARCH_FLAGS = "-march=morello+c64 -mabi=purecap" + +MORELLO_ARCH ?= "c64" +GLOBAL_ARCH_TRIPLE ?= "${C64_ARCH_TRIPLE}" +GLOBAL_LIB_TRIPLE ?= "${C64_LIB_TRIPLE}" +GLOBAL_ARCH_FLAGS ?= "${C64_ARCH_FLAGS}" + +TMPDIR_BSP = "tmp-bsp" +TMPDIR_LINUX = "tmp-linux" + +APP_DIR ?= "pure-cap-apps" \ No newline at end of file diff --git a/conf/machine/morello-bsp.conf b/conf/machine/morello-bsp.conf new file mode 100644 index 0000000..e5c8799 --- /dev/null +++ b/conf/machine/morello-bsp.conf @@ -0,0 +1 @@ +require conf/machine/include/morello-common.inc diff --git a/conf/machine/morello-linux-glibc.conf b/conf/machine/morello-linux-glibc.conf new file mode 100644 index 0000000..6ed824d --- /dev/null +++ b/conf/machine/morello-linux-glibc.conf @@ -0,0 +1,3 @@ +require conf/machine/include/morello-common.inc + +MACHINEOVERRIDES =. "morello-linux-glibc:" diff --git a/conf/machine/morello-linux-musl.conf b/conf/machine/morello-linux-musl.conf new file mode 100644 index 0000000..e22493d --- /dev/null +++ b/conf/machine/morello-linux-musl.conf @@ -0,0 +1,3 @@ +require conf/machine/include/morello-common.inc + +MACHINEOVERRIDES =. "morello-linux-musl:"
Append the scp firmware recipe.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- conf/machine/morello-bsp.conf | 5 ++ .../scp-firmware/scp-firmware_2.10.%.bbappend | 80 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend
diff --git a/conf/machine/morello-bsp.conf b/conf/machine/morello-bsp.conf index e5c8799..ee40190 100644 --- a/conf/machine/morello-bsp.conf +++ b/conf/machine/morello-bsp.conf @@ -1 +1,6 @@ require conf/machine/include/morello-common.inc + +PREFERRED_VERSION_scp-firmware ?= "2.10%" + + +TMPDIR = "${TOPDIR}/${TMPDIR_BSP}" \ No newline at end of file diff --git a/recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend b/recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend new file mode 100644 index 0000000..2c01711 --- /dev/null +++ b/recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend @@ -0,0 +1,80 @@ +inherit cmake nopackages + +COMPATIBLE_MACHINE = "morello" +OUTPUTS_NAME = "scp-firmware" +SECTION = "firmware" + +DEPENDS += "virtual/board-firmware" + +PROVIDES += "virtual/${OUTPUTS_NAME}" + +SRC_URI = "gitsm://git.morello-project.org/morello/scp-firmware.git;protocol=https;branch=${SRCBRANCH}" +SRCREV = "${AUTOREV}" +PV = "2.10.0+git${SRCPV}" + +SRCBRANCH = "morello/master" + +SCP_PLATFORM = "morello" +SCP_LOG_LEVEL = "INFO" + +SENSOR = "${RECIPE_SYSROOT}/board-firmware/LIB/sensor.a" +B = "${WORKDIR}/build/morello" +S = "${WORKDIR}/git" +FILES:${PN} = "/${OUTPUTS_NAME}" +SYSROOT_DIRS += "/${OUTPUTS_NAME}" + +FW_TARGETS = "scp mcp" +FW_INSTALL = "ramfw_soc romfw" + +INHIBIT_DEFAULT_DEPS = "1" + +unset do_configure[noexec] +unset do_compile[cleandirs] +do_deploy[noexec] = "1" + +do_configure() { + + cd ${S} + + for FW in ${FW_TARGETS}; do + for TYPE in ${FW_INSTALL}; do + + local target="${FW}_${TYPE}" + + local extra_cmake="\ + -DSCP_ENABLE_DEBUGGER='0' \ + -DSCP_FIRMWARE_SOURCE_DIR:PATH='${SCP_PLATFORM}/${target}' \ + -DSCP_TOOLCHAIN:STRING='GNU' \ + -DDISABLE_CPPCHECK='1' \ + -DCMAKE_BUILD_TYPE=Release \ + " + + if [ "${target}" = "scp_ramfw_soc" ]; then + extra_cmake="${extra_cmake} -DSCP_MORELLO_SENSOR_LIB_PATH='${SENSOR}'" + fi + + local builddir="${B}/${target}" + cmake -S ${S} -B ${builddir} ${extra_cmake} + done + done +} + +do_compile() { + cd ${S} + for FW in ${FW_TARGETS}; do + for TYPE in ${FW_INSTALL}; do + local target="${FW}_${TYPE}" + cmake --build "${B}/${target}" + done + done +} + +do_install() { + install -d ${D}/firmware + for FW in ${FW_TARGETS}; do + for TYPE in ${FW_INSTALL}; do + local target="${FW}_${TYPE}" + cp -rf "${B}/${target}/bin/"*.bin "${D}/firmware/${target}.bin" + done + done +} \ No newline at end of file
Append trusted-firmware-a recipe.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- conf/machine/morello-bsp.conf | 2 +- .../trusted-firmware-a_2.%.bbappend | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.%.bbappend
diff --git a/conf/machine/morello-bsp.conf b/conf/machine/morello-bsp.conf index ee40190..9998fff 100644 --- a/conf/machine/morello-bsp.conf +++ b/conf/machine/morello-bsp.conf @@ -1,6 +1,6 @@ require conf/machine/include/morello-common.inc
PREFERRED_VERSION_scp-firmware ?= "2.10%" - +PREFERRED_VERSION_trusted-firmware-a ?= "2.7%"
TMPDIR = "${TOPDIR}/${TMPDIR_BSP}" \ No newline at end of file diff --git a/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.%.bbappend b/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.%.bbappend new file mode 100644 index 0000000..e7ecd4a --- /dev/null +++ b/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.%.bbappend @@ -0,0 +1,83 @@ +inherit deploy nopackages llvm-morello-native + +COMPATIBLE_MACHINE = "morello" +SUMMARY = "TF-A to be compiled with LLVM Morello" +OUTPUTS_NAME = "trusted-firmware-a" +SECTION = "firmware" + +PROVIDES += "virtual/${OUTPUTS_NAME}" + +SRC_URI = "gitsm://git.morello-project.org/morello/trusted-firmware-a;protocol=https;branch=${SRCBRANCH}" +SRCREV = "${AUTOREV}" +PV = "2.7+git${SRCPV}" + +SRCBRANCH = "morello/master" +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde" + +TFA_MBEDTLS = "1" +TFA_MBEDTLS_DIR = "mbedtls" +TFA_MBEDTLS_BRANCH = "mbedtls-2.28" +SRC_URI_MBEDTLS = "git://github.com/ARMmbed/mbedtls;protocol=https;destsuffix=git/mbedtls;branch=${TFA_MBEDTLS_BRANCH}" +SRCREV_mbedtls = "8b3f26a5ac38d4fdccbc5c5366229f3e01dafcc0" +LIC_FILES_CHKSUM_MBEDTLS = "file://mbedtls/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +B = "${WORKDIR}/build" +S = "${WORKDIR}/git" + +TFA_PLATFORM = "morello" +TFA_UBOOT = "0" +TFA_BUILD_TARGET = "bl1 bl2 bl31 dtbs" +TFA_DEBUG = "0" + +ARM_TF_ARCH = "aarch64" + +EXTRA_OEMAKE += "\ + CREATE_KEYS=1 \ + GENERATE_COT=1 \ + ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem \ + TRUSTED_BOARD_BOOT=1 \ + ARM_ROTPK_LOCATION=devel_rsa \ + TARGET_PLATFORM=soc \ + ENABLE_MORELLO_CAP=1 \ + ARCH='${ARM_TF_ARCH}' \ + " + +unset do_compile[cleandirs] + +do_compile:prepend() { + make -C ${S}/tools/fiptool + make -C ${S}/tools/cert_create +} + +do_install() { + + install -d -m 755 ${D}/firmware + for atfbin in ${TFA_INSTALL_TARGET}; do + processed="0" + if [ -f ${BUILD_DIR}/$atfbin.bin ]; then + echo "Install $atfbin.bin" + install -m 0644 ${BUILD_DIR}/$atfbin.bin ${D}/firmware/tf-$atfbin.bin + processed="1" + fi + if [ "$processed" = "0" ]; then + if ["$atfbin" != "dtbs" ]; then + bberror "Unsupported TFA_INSTALL_TARGET target $atfbin" + exit 1 + fi + fi + done + + install -m 0644 "${BUILD_DIR}/fdts/morello-soc.dtb" "${D}/firmware/morello-soc.dtb" + install -m 0644 "${BUILD_DIR}/fdts/morello_fw_config.dtb" "${D}/firmware/morello_fw_config.dtb" + install -m 0644 "${BUILD_DIR}/fdts/morello_tb_fw_config.dtb" "${D}/firmware/morello_tb_fw_config.dtb" + install -m 0644 "${BUILD_DIR}/fdts/morello_nt_fw_config.dtb" "${D}/firmware/morello_nt_fw_config.dtb" + install -m 0644 ${S}/plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem "${D}/firmware/"arm_rotprivk_rsa.pem + install -m 0744 ${S}/tools/fiptool/fiptool "${D}/firmware/"fiptool + install -m 0744 ${S}/tools/cert_create/cert_create "${D}/firmware/"cert_create +} + +do_deploy() { + install -d ${DEPLOYDIR}/${OUTPUTS_NAME} + cp -rf ${D}/firmware/morello-soc.dtb ${DEPLOYDIR}/${OUTPUTS_NAME}/morello-soc.dtb +} +addtask deploy after do_install before do_build \ No newline at end of file
Append the UEFI recipe. Patch was necessary for brotli, taken from [1]
[1] https://github.com/google/brotli/commit/0a3944c8c99b8d10cc4325f721b7c273d2b4...
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-bsp/uefi/edk2-firmware_%.bbappend | 53 +++++++++++++++++++ ...Basetools-remove-brotli-build-errors.patch | 45 ++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 recipes-bsp/uefi/edk2-firmware_%.bbappend create mode 100644 recipes-bsp/uefi/files/0001-Basetools-remove-brotli-build-errors.patch
diff --git a/recipes-bsp/uefi/edk2-firmware_%.bbappend b/recipes-bsp/uefi/edk2-firmware_%.bbappend new file mode 100644 index 0000000..e661f8a --- /dev/null +++ b/recipes-bsp/uefi/edk2-firmware_%.bbappend @@ -0,0 +1,53 @@ +inherit nopackages python3native llvm-morello-native + +COMPATIBLE_MACHINE = "morello" +SUMMARY = "EDK2 to be compiled with LLVM Morello" +OUTPUTS_NAME = "uefi" +SECTION = "firmware" + +PROVIDES += "virtual/${OUTPUTS_NAME}" +DEPENDS += "acpica-native python3-native" + +FILESEXTRAPATHS:prepend := "${THISDIR}:" + +SRC_URI = "\ + ${EDK2_SRC_URI};name=edk2;destsuffix=edk2 \ + ${EDK2_PLATFORMS_SRC_URI};name=edk2-platforms;destsuffix=edk2/edk2-platforms \ + ${EDK2_NON_OSI_SRC_URI};name=edk2-non-osi;destsuffix=edk2-non-osi \ + file://files/0001-Basetools-remove-brotli-build-errors.patch \ + " + +EDK2_SRC_URI = "gitsm://git.morello-project.org/morello/edk2;branch=morello/master;protocol=https" +EDK2_PLATFORMS_SRC_URI = "gitsm://git.morello-project.org/morello/edk2-platforms;branch=morello/master;protocol=https" +EDK2_NON_OSI_SRC_URI = "git://github.com/tianocore/edk2-non-osi;branch=master;protocol=https" +SRCREV_edk2-non-osi = "0320db977fb27e63424b0953a3020bb81c89e8f0" +SRCREV_edk2 = "${AUTOREV}" +SRCREV_edk2-platforms = "${AUTOREV}" +PV = "git${SRCPV}" + +B = "${WORKDIR}/build" +S = "${WORKDIR}/edk2" +FILES:${PN} = "/${OUTPUTS_NAME}" +SYSROOT_DIRS += "/${OUTPUTS_NAME}" + +EDK2_BUILD_RELEASE = "0" +EDK2_PLATFORM = "morellosoc" +EDK2_PLATFORM_DSC = "edk2-platforms/Platform/ARM/Morello/MorelloPlatformSoc.dsc" +EDK2_BIN_NAME = "BL33_AP_UEFI.fd" +EDK2_ARCH = "AARCH64" +EDK2_BUILD_FLAGS += "-D ENABLE_MORELLO_CAP=1" +EDK_COMPILER = "CLANG35" + +export CLANG35_AARCH64_PREFIX = "${TARGET_PREFIX}" +export CLANG35_BIN = "${LLVM_PATH}/" +export CLANG35_AARCH64_PREFIX = "${LLVM_PATH}/llvm-" +export PACKAGES_PATH = "${S}:${S}/edk2-platforms:${WORKDIR}/edk2-non-osi" +export CC_PATH = "${LLVM_PATH}/clang" +export LLVM_PATH_35 = "${LLVM_PATH}" + +do_deploy[noexec] = "1" + +do_install() { + install -d ${D}/firmware + install ${B}/Build/${EDK2_PLATFORM}/${EDK2_BUILD_MODE}_${EDK_COMPILER}/FV/${EDK2_BIN_NAME} ${D}/firmware/uefi.bin +} \ No newline at end of file diff --git a/recipes-bsp/uefi/files/0001-Basetools-remove-brotli-build-errors.patch b/recipes-bsp/uefi/files/0001-Basetools-remove-brotli-build-errors.patch new file mode 100644 index 0000000..53d16ad --- /dev/null +++ b/recipes-bsp/uefi/files/0001-Basetools-remove-brotli-build-errors.patch @@ -0,0 +1,45 @@ +From 27dd7265403d8e8fed99a854b9c3e1db7d79525f Mon Sep 17 00:00:00 2001 +From: Jeremy Maitin-Shepard jbms@google.com +Date: Tue, 14 Sep 2021 12:27:45 -0700 +Subject: [PATCH 09/22] Fix -Werror=vla-parameter errors with GCC 11.2.0 + +--- + BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c | 6 ++++-- + BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c | 5 +++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c b/c/dec/decode.c +index 114c505..4c89a73 100644 +--- a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c ++++ b/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c +@@ -2030,8 +2030,10 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( + } + + BrotliDecoderResult BrotliDecoderDecompress( +- size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, +- uint8_t* decoded_buffer) { ++ size_t encoded_size, ++ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)], ++ size_t* decoded_size, ++ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]) { + BrotliDecoderState s; + BrotliDecoderResult result; + size_t total_out = 0; +diff --git a/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c b/c/enc/encode.c +index 68548ef..dc3704e 100644 +--- a/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c ++++ b/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c +@@ -1470,8 +1470,9 @@ static size_t MakeUncompressedStream( + + BROTLI_BOOL BrotliEncoderCompress( + int quality, int lgwin, BrotliEncoderMode mode, size_t input_size, +- const uint8_t* input_buffer, size_t* encoded_size, +- uint8_t* encoded_buffer) { ++ const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)], ++ size_t* encoded_size, ++ uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]) { + BrotliEncoderState* s; + size_t out_size = *encoded_size; + const uint8_t* input_start = input_buffer; +-- +2.34.1 \ No newline at end of file
Append the grub recipes. Note that due to the fact that grub requires lib gcc it should be built using the bsp machine, otherwise we will get build errors. The actual outputs are part of the Linux image that is built using the glibc/musl machines. For now this is resolved using well defined tmp dirs in the machine configs.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-bsp/grub/files/grub-config.cfg | 26 ++++++++++++++++++++++++++ recipes-bsp/grub/grub-efi_2.%.bbappend | 22 ++++++++++++++++++++++ recipes-bsp/grub/grub_2.%.bbappend | 10 ++++++++++ 3 files changed, 58 insertions(+) create mode 100644 recipes-bsp/grub/files/grub-config.cfg create mode 100644 recipes-bsp/grub/grub-efi_2.%.bbappend create mode 100644 recipes-bsp/grub/grub_2.%.bbappend
diff --git a/recipes-bsp/grub/files/grub-config.cfg b/recipes-bsp/grub/files/grub-config.cfg new file mode 100644 index 0000000..09fa290 --- /dev/null +++ b/recipes-bsp/grub/files/grub-config.cfg @@ -0,0 +1,26 @@ +set debug="loader,mm" +set term="vt100" +set default="1" +set timeout="5" + +menuentry 'BusyBox Morello Platform (Device Tree)' { + devicetree /morello.dtb + linux /Image \ + acpi=off \ + console=ttyAMA0,115200 \ + debug \ + earlycon=pl011,0x2A400000 \ + ip=dhcp \ + + initrd /initramfs +} + +menuentry 'BusyBox Morello Platform (ACPI)' { + linux /Image \ + acpi=force \ + debug \ + earlycon=pl011,0x2A400000 \ + ip=dhcp \ + + initrd /initramfs +} \ No newline at end of file diff --git a/recipes-bsp/grub/grub-efi_2.%.bbappend b/recipes-bsp/grub/grub-efi_2.%.bbappend new file mode 100644 index 0000000..c03b87c --- /dev/null +++ b/recipes-bsp/grub/grub-efi_2.%.bbappend @@ -0,0 +1,22 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello" +OUTPUTS_NAME = "grub-efi" + +PROVIDES += "virtual/${OUTPUTS_NAME}" + +FILESEXTRAPATHS:prepend := "${THISDIR}:" + +GRUB_BUILDIN = " boot chain configfile ext2 fat gzio help linux loadenv \ + lsefi normal ntfs ntfscomp part_gpt part_msdos progress read search \ + search_fs_file search_fs_uuid search_label terminal terminfo \ + " + +SRC_URI += "file://files/grub-config.cfg" + +do_deploy() { + install -d ${DEPLOYDIR}/${OUTPUTS_NAME} + install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} "${DEPLOYDIR}/${OUTPUTS_NAME}/" + install -m 644 ${WORKDIR}/files/grub-config.cfg "${DEPLOYDIR}/${OUTPUTS_NAME}/grub-config.cfg" +} +addtask deploy after do_install before do_build \ No newline at end of file diff --git a/recipes-bsp/grub/grub_2.%.bbappend b/recipes-bsp/grub/grub_2.%.bbappend new file mode 100644 index 0000000..a2f232d --- /dev/null +++ b/recipes-bsp/grub/grub_2.%.bbappend @@ -0,0 +1,10 @@ + + +EXTRA_OECONF+="\ + --disable-efiemu \ + --disable-werror \ + --enable-dependency-tracking \ + --disable-grub-mkfont \ + --disable-grub-themes \ + --disable-grub-mount \ + " \ No newline at end of file
This two-step recipe takes the board firmware repo and overwrites its contents with the outputs obtained from the firmware recipes. SD card image is then created using mtools.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- conf/machine/morello-bsp.conf | 1 + .../board-firmware/board-firmware-image.bb | 82 +++++++++++++++++++ .../board-firmware/board-firmware_1.4.bb | 29 +++++++ 3 files changed, 112 insertions(+) create mode 100644 recipes-bsp/board-firmware/board-firmware-image.bb create mode 100644 recipes-bsp/board-firmware/board-firmware_1.4.bb
diff --git a/conf/machine/morello-bsp.conf b/conf/machine/morello-bsp.conf index 9998fff..a83698e 100644 --- a/conf/machine/morello-bsp.conf +++ b/conf/machine/morello-bsp.conf @@ -2,5 +2,6 @@ require conf/machine/include/morello-common.inc
PREFERRED_VERSION_scp-firmware ?= "2.10%" PREFERRED_VERSION_trusted-firmware-a ?= "2.7%" +PREFERRED_VERSION_board-firmware = "1.4"
TMPDIR = "${TOPDIR}/${TMPDIR_BSP}" \ No newline at end of file diff --git a/recipes-bsp/board-firmware/board-firmware-image.bb b/recipes-bsp/board-firmware/board-firmware-image.bb new file mode 100644 index 0000000..7fd6709 --- /dev/null +++ b/recipes-bsp/board-firmware/board-firmware-image.bb @@ -0,0 +1,82 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello" +SUMMARY = "SDK Card Firmware Image " +DESCRIPTION = "Image containing all the firmwares and motherboard configuration files" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +OUTPUTS_NAME = "board-firmware-sd-image" +SECTION = "firmware" + +BB_DONT_CACHE = "1" + +DEPENDS += "virtual/board-firmware virtual/scp-firmware virtual/trusted-firmware-a virtual/uefi virtual/grub-efi mtools-native" +PROVIDES = "virtual/board-firmware-image" + +MCP_BLOB_ID = "54464222-a4cf-4bf8-b1b6-cee7dade539e" + +FIP_OPTIONS = "\ + --tb-fw '${FIRMWARE_PATH}/tf-bl2.bin' \ + --soc-fw '${FIRMWARE_PATH}/tf-bl31.bin' \ + --nt-fw '${FIRMWARE_PATH}/uefi.bin' \ + --fw-config '${FIRMWARE_PATH}/morello_fw_config.dtb' \ + --tb-fw-config '${FIRMWARE_PATH}/morello_tb_fw_config.dtb' \ + --nt-fw-config '${FIRMWARE_PATH}/morello_nt_fw_config.dtb' \ + --trusted-key-cert '${FIRMWARE_PATH}/tfa_certs/trusted_key.crt' \ + --soc-fw-key-cert '${FIRMWARE_PATH}/tfa_certs/bl31_key.crt' \ + --nt-fw-key-cert '${FIRMWARE_PATH}/tfa_certs/bl33_key.crt' \ + --soc-fw-cert '${FIRMWARE_PATH}/tfa_certs/bl31.crt' \ + --nt-fw-cert '${FIRMWARE_PATH}/tfa_certs/bl33.crt' \ + --tb-fw-cert '${FIRMWARE_PATH}/tfa_certs/bl2.crt' \ + " + +FIRMWARE_PATH = "${RECIPE_SYSROOT}/firmware" +SYSROOT_SOFTWARE_PATH = "${RECIPE_SYSROOT}/board-firmware/SOFTWARE" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install[depends] += "virtual/board-firmware:do_populate_sysroot" +do_install[depends] += "virtual/scp-firmware:do_populate_sysroot" +do_install[depends] += "virtual/uefi:do_populate_sysroot" +do_install[depends] += "virtual/trusted-firmware-a:do_populate_sysroot" + +do_install:prepend() { + + ${FIRMWARE_PATH}/fiptool create \ + --scp-fw "${FIRMWARE_PATH}/scp_ramfw_soc.bin" \ + "${FIRMWARE_PATH}/scp_fw.bin" + + ${FIRMWARE_PATH}/fiptool create \ + --blob uuid="${MCP_BLOB_ID}",file="${FIRMWARE_PATH}/mcp_ramfw_soc.bin" \ + "${FIRMWARE_PATH}/mcp_fw.bin" + + mkdir -p "${FIRMWARE_PATH}/tfa_certs" + ${FIRMWARE_PATH}/cert_create ${FIP_OPTIONS} -n --tfw-nvctr 0 --ntfw-nvctr 0 \ + --rot-key ${FIRMWARE_PATH}/arm_rotprivk_rsa.pem + + ${FIRMWARE_PATH}/fiptool update ${FIP_OPTIONS} "${FIRMWARE_PATH}/fip.bin" +} + +do_install() { + + cp -rf ${FIRMWARE_PATH}/fip.bin ${SYSROOT_SOFTWARE_PATH}/fip.bin + cp -rf ${FIRMWARE_PATH}/scp_fw.bin ${SYSROOT_SOFTWARE_PATH}/scp_fw.bin + cp -rf ${FIRMWARE_PATH}/mcp_fw.bin ${SYSROOT_SOFTWARE_PATH}/mcp_fw.bin + + install -d ${D}/board-firmware/SOFTWARE + install -m 644 ${SYSROOT_SOFTWARE_PATH}/fip.bin ${D}/board-firmware/SOFTWARE/fip.bin + install -m 644 ${SYSROOT_SOFTWARE_PATH}/scp_fw.bin ${D}/board-firmware/SOFTWARE/scp_fw.bin + install -m 644 ${SYSROOT_SOFTWARE_PATH}/mcp_fw.bin ${D}/board-firmware/SOFTWARE/mcp_fw.bin + + dd if=/dev/zero of=${OUTPUTS_NAME}.img bs=512K count=100 + mformat -i ${OUTPUTS_NAME}.img :: + mcopy -i ${OUTPUTS_NAME}.img -s -Q -p -m ${RECIPE_SYSROOT}/board-firmware/* :: + + install -d ${D}/firmware/board-firmware-image + install -m 644 ${OUTPUTS_NAME}.img ${D}/firmware/board-firmware-image/${OUTPUTS_NAME}.img +} + +do_deploy() { + cp -rf ${D}/firmware/board-firmware-image/${OUTPUTS_NAME}.img ${DEPLOYDIR}/${OUTPUTS_NAME}.img +} +addtask deploy after do_install \ No newline at end of file diff --git a/recipes-bsp/board-firmware/board-firmware_1.4.bb b/recipes-bsp/board-firmware/board-firmware_1.4.bb new file mode 100644 index 0000000..80719a4 --- /dev/null +++ b/recipes-bsp/board-firmware/board-firmware_1.4.bb @@ -0,0 +1,29 @@ +inherit nopackages + +COMPATIBLE_MACHINE = "morello" +SUMMARY = "$DESCRIPTION" +DESCRIPTION = "The SD card image from ARM that contains non compile-able binaries." +HOMEPAGE = "https://git.morello-project.org/morello/board-firmware" +LICENSE = "STMicroelectronics&BSD-3 & BDS-2" +OUTPUTS_NAME = "board-firmware" +SECTION = "firmware" + +PROVIDES += "virtual/${OUTPUTS_NAME}" + +SRC_URI = "git://git.morello-project.org/morello/board-firmware;protocol=https;branch=${SRCBRANCH}" +SRCREV = "20e3e673f13e854109a069dd719f49e06336142d" + +SRCBRANCH = "morello/release-1.4" +LIC_FILES_CHKSUM = "file://LICENSES/MB/STM.TXT;md5=47185091e44d729bf62ed5c99d7eb9d9 \ + file://LICENSES/LIB/sensor.txt;md5=7ba201f1f1e4959d3505d9c59c6cfdfa \ + " + +S = "${WORKDIR}/git" +FILES:${PN} += "/${OUTPUTS_NAME}" +FILES:${PN}-staticdev += "/${OUTPUTS_NAME}/LIB/sensor.a" +SYSROOT_DIRS += "/${OUTPUTS_NAME}" + +do_install() { + install -d "${D}/${OUTPUTS_NAME}" + cp -rf ${S}/* "${D}/${OUTPUTS_NAME}/" +} \ No newline at end of file
Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself).
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++ recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc
diff --git a/recipes-kernel/linux/linux-morello-1.5.bb b/recipes-kernel/linux/linux-morello-1.5.bb new file mode 100644 index 0000000..ea3e0ca --- /dev/null +++ b/recipes-kernel/linux/linux-morello-1.5.bb @@ -0,0 +1,9 @@ +require linux-morello.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +SRCBRANCH = "morello/master" +SRCTAG = "morello-release-1.5.0" + +LINUX_VERSION = "5.18" +LINUX_VERSION_EXTENSION= "-yocto-purecap" \ No newline at end of file diff --git a/recipes-kernel/linux/linux-morello-1.5/defconfig b/recipes-kernel/linux/linux-morello-1.5/defconfig new file mode 100644 index 0000000..51a92f1 --- /dev/null +++ b/recipes-kernel/linux/linux-morello-1.5/defconfig @@ -0,0 +1,3795 @@ +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_DEFAULT_INIT="" +CONFIG_ARCH_NO_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_IRQ_MSI_IOMMU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +# CONFIG_BPF_JIT is not set +CONFIG_BPF_UNPRIV_DEFAULT_OFF=y +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + +CONFIG_PREEMPT_BUILD=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +# CONFIG_PREEMPT_DYNAMIC is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +# CONFIG_PRINTK_INDEX is not set +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=5 +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# CONFIG_BOOT_CONFIG is not set +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_PROFILING=y +# end of General setup + +CONFIG_ARM64=y +CONFIG_CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_CONT_PTE_SHIFT=4 +CONFIG_ARM64_CONT_PMD_SHIFT=4 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=33 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SMP=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_PROC_KCORE_TEXT=y + +# +# Platform selection +# +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_APPLE is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM4908 is not set +# CONFIG_ARCH_BCM_IPROC is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_BITMAIN is not set +# CONFIG_ARCH_BRCMSTB is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_SPARX5 is not set +# CONFIG_ARCH_K3 is not set +# CONFIG_ARCH_LAYERSCAPE is not set +# CONFIG_ARCH_LG1K is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEEMBAY is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALTEK is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_S32 is not set +# CONFIG_ARCH_SEATTLE is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set +# CONFIG_ARCH_SYNQUACER is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_SPRD is not set +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_THUNDER2 is not set +# CONFIG_ARCH_UNIPHIER is not set +CONFIG_ARCH_VEXPRESS=y +# CONFIG_ARCH_VISCONTI is not set +# CONFIG_ARCH_XGENE is not set +# CONFIG_ARCH_ZYNQMP is not set +# end of Platform selection + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_1508412=y +CONFIG_ARM64_ERRATUM_2051678=y +CONFIG_ARM64_ERRATUM_2077057=y +CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y +CONFIG_ARM64_ERRATUM_2054223=y +CONFIG_ARM64_ERRATUM_2067961=y +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23144=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +# end of ARM errata workarounds via the alternatives framework + +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_16K_PAGES is not set +# CONFIG_ARM64_64K_PAGES is not set +# CONFIG_ARM64_VA_BITS_39 is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_ARM64_VA_BITS=48 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_PA_BITS=48 +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_SCHED_MC=y +# CONFIG_SCHED_CLUSTER is not set +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=256 +CONFIG_HOTPLUG_CPU=y +CONFIG_NUMA=y +CONFIG_NODES_SHIFT=4 +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +CONFIG_TRANS_TABLE=y +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_ARM64_SW_TTBR0_PAN is not set +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_COMPAT=y +CONFIG_COMPAT64=y + +# +# ARMv8.1 architectural features +# +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +# end of ARMv8.1 architectural features + +# +# ARMv8.2 architectural features +# +# CONFIG_ARM64_PMEM is not set +CONFIG_ARM64_RAS_EXTN=y +CONFIG_ARM64_CNP=y +# end of ARMv8.2 architectural features + +# +# ARMv8.3 architectural features +# +CONFIG_ARM64_PTR_AUTH=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +# end of ARMv8.3 architectural features + +# +# ARMv8.4 architectural features +# +CONFIG_ARM64_AMU_EXTN=y +# end of ARMv8.4 architectural features + +# +# ARMv8.5 architectural features +# +CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_ARM64_E0PD=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARM64_AS_HAS_MTE=y +# end of ARMv8.5 architectural features + +# +# ARMv8.7 architectural features +# +CONFIG_ARM64_EPAN=y +# end of ARMv8.7 architectural features + +CONFIG_ARM64_SVE=y +CONFIG_CC_HAS_MORELLO=y +CONFIG_ARM64_MORELLO=y +CONFIG_ARM64_MODULE_PLTS=y +# CONFIG_ARM64_PSEUDO_NMI is not set +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# end of Kernel Features + +# +# Boot options +# +# CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set +CONFIG_CMDLINE="" +CONFIG_EFI_STUB=y +CONFIG_EFI=y +CONFIG_DMI=y +# end of Boot options + +CONFIG_SYSVIPC_COMPAT=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +CONFIG_ENERGY_MODEL=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y +CONFIG_DT_IDLE_GENPD=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y +# end of ARM CPU Idle Drivers +# end of CPU Idle + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +# CONFIG_CPUFREQ_DT is not set +# CONFIG_ACPI_CPPC_CPUFREQ is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_CCA_REQUIRED=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_FAN=y +# CONFIG_ACPI_TAD is not set +# CONFIG_ACPI_DOCK is not set +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_MCFG=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_THERMAL=y +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HED=y +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_BGRT is not set +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_ACPI_NUMA=y +# CONFIG_ACPI_HMAT is not set +CONFIG_HAVE_ACPI_APEI=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_SEA=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_EINJ=y +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +# CONFIG_ACPI_CONFIGFS is not set +# CONFIG_ACPI_PFRUT is not set +CONFIG_ACPI_IORT=y +CONFIG_ACPI_GTDT=y +CONFIG_ACPI_PPTT=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set +# CONFIG_ARM64_CRYPTO is not set + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +# CONFIG_KPROBES is not set +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_KEEPINITRD=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y +# CONFIG_SHADOW_CALL_STACK is not set +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +# CONFIG_LTO_CLANG_FULL is not set +# CONFIG_LTO_CLANG_THIN is not set +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_COMPILER_H=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_RELR=y +CONFIG_RELR=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_HAS_USER_PTR_H=y +CONFIG_ARCH_HAS_CHERI_CAPABILITIES=y +CONFIG_CHERI_PURECAP_UABI=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_DEV_BSG_COMMON=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y +CONFIG_ARCH_HAVE_ELF_PROT=y +CONFIG_ARCH_USE_GNU_PROPERTY=y +CONFIG_ELFCORE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_COMPACTION=y +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +# CONFIG_HWPOISON_INJECT is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=19 +# CONFIG_ZPOOL is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_READ_ONLY_THP_FOR_FS is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_SECRETMEM=y +CONFIG_ANON_VMA_NAME=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_AF_UNIX_OOB=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +# CONFIG_XDP_SOCKETS is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +CONFIG_INET_TUNNEL=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +CONFIG_NF_CONNTRACK=y +# CONFIG_NF_LOG_SYSLOG is not set +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_SECMARK is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_LABELS is not set +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +# CONFIG_NF_CONNTRACK_AMANDA is not set +# CONFIG_NF_CONNTRACK_FTP is not set +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_MASQUERADE=y +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y +CONFIG_NETFILTER_XTABLES_COMPAT=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +# CONFIG_NETFILTER_XT_CONNMARK is not set + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +CONFIG_NETFILTER_XT_NAT=y +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +CONFIG_NETFILTER_XT_MATCH_IPVS=y +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +CONFIG_NETFILTER_XT_MATCH_MARK=y +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# end of Core Netfilter Configuration + +# CONFIG_IP_SET is not set +CONFIG_IP_VS=y +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +# CONFIG_IP_VS_PROTO_TCP is not set +# CONFIG_IP_VS_PROTO_UDP is not set +# CONFIG_IP_VS_PROTO_ESP is not set +# CONFIG_IP_VS_PROTO_AH is not set +# CONFIG_IP_VS_PROTO_SCTP is not set + +# +# IPVS scheduler +# +# CONFIG_IP_VS_RR is not set +# CONFIG_IP_VS_WRR is not set +# CONFIG_IP_VS_LC is not set +# CONFIG_IP_VS_WLC is not set +# CONFIG_IP_VS_FO is not set +# CONFIG_IP_VS_OVF is not set +# CONFIG_IP_VS_LBLC is not set +# CONFIG_IP_VS_LBLCR is not set +# CONFIG_IP_VS_DH is not set +# CONFIG_IP_VS_SH is not set +# CONFIG_IP_VS_MH is not set +# CONFIG_IP_VS_SED is not set +# CONFIG_IP_VS_NQ is not set +# CONFIG_IP_VS_TWOS is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_NFCT is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +# CONFIG_NF_REJECT_IPV4 is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_FILTER=y +# CONFIG_IP_NF_TARGET_REJECT is not set +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set +# CONFIG_IP_NF_MANGLE is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_SECURITY is not set +# CONFIG_IP_NF_ARPTABLES is not set +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=y +# CONFIG_NF_CONNTRACK_BRIDGE is not set +# CONFIG_BRIDGE_NF_EBTABLES is not set +# CONFIG_BPFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_DNS_RESOLVER is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_MCTP is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_RFKILL is not set +CONFIG_NET_9P=y +CONFIG_NET_9P_FD=y +CONFIG_NET_9P_VIRTIO=y +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set +CONFIG_FAILOVER=y +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_ECAM=y +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +CONFIG_PCI_LABEL=y +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y +# CONFIG_PCIE_XILINX is not set +# CONFIG_PCI_XGENE is not set +# CONFIG_PCIE_ALTERA is not set +# CONFIG_PCI_HOST_THUNDER_PEM is not set +# CONFIG_PCI_HOST_THUNDER_ECAM is not set +# CONFIG_PCIE_MICROCHIP_HOST is not set +# CONFIG_PCIE_HISI_ERR is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCI_HISI is not set +# CONFIG_PCIE_KIRIN is not set +# CONFIG_PCI_MESON is not set +# CONFIG_PCIE_AL is not set +# end of DesignWare PCI Core Support + +# +# Mobiveil PCIe Core Support +# +# end of Mobiveil PCIe Core Support + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# CONFIG_PCI_J721E_HOST is not set +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_CXL_BUS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="rtl8168g-2.fw " +CONFIG_EXTRA_FIRMWARE_DIR="/home/pawel/Code/ArmMorello/linux/linux_firmware/rtl_nic" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_MMIO=y +CONFIG_GENERIC_ARCH_TOPOLOGY=y +CONFIG_GENERIC_ARCH_NUMA=y +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +CONFIG_VEXPRESS_CONFIG=y +# CONFIG_MHI_BUS is not set +# end of Bus devices + +# CONFIG_CONNECTOR is not set + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# CONFIG_ARM_SCMI_PROTOCOL is not set +# end of ARM System Control and Management Interface Protocol + +# CONFIG_ARM_SDE_INTERFACE is not set +CONFIG_DMIID=y +# CONFIG_DMI_SYSFS is not set +# CONFIG_ISCSI_IBFT is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_SYSFB=y +# CONFIG_SYSFB_SIMPLEFB is not set +# CONFIG_ARM_FFA_TRANSPORT is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=y +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_GENERIC_STUB=y +CONFIG_EFI_ARMSTUB_DTB_LOADER=y +# CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is not set +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +CONFIG_EFI_CAPSULE_LOADER=y +# CONFIG_EFI_TEST is not set +# CONFIG_RESET_ATTACK_MITIGATION is not set +# CONFIG_EFI_DISABLE_PCI_DMA is not set +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_ARM=y +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y +CONFIG_ARM_SMCCC_SOC_ID=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +# CONFIG_MTD is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_OF_NUMA=y +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +CONFIG_VIRTIO_BLK=y +# CONFIG_BLK_DEV_RBD is not set + +# +# NVME Support +# +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_TARGET is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_SRAM is not set +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_OPEN_DICE is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_93CX6 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + +# +# Altera FPGA firmware download module (requires I2C) +# +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_BCM_VK is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# CONFIG_HABANA_AI is not set +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_BSG=y +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_HISI_SAS is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPI3MR is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_VIRTIO is not set +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_PATA_TIMINGS=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_ATA_ACPI=y +# CONFIG_SATA_ZPODD is not set +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_UNSTRIPED is not set +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_EBS is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_INIT is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_DM_AUDIT is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=y +CONFIG_VIRTIO_NET=y +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set +CONFIG_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_AMD_XGBE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ASIX=y +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2X is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +# CONFIG_CAVIUM_PTP is not set +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_FUNGIBLE=y +# CONFIG_FUN_ETH is not set +CONFIG_NET_VENDOR_GOOGLE=y +# CONFIG_GVE is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HISI_FEMAC is not set +# CONFIG_HIP04_ETH is not set +# CONFIG_HNS_DSAF is not set +# CONFIG_HNS_ENET is not set +# CONFIG_HNS3 is not set +CONFIG_NET_VENDOR_HUAWEI=y +# CONFIG_HINIC is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_LITEX=y +# CONFIG_LITEX_LITEETH is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_OCTEONTX2_AF is not set +# CONFIG_OCTEONTX2_PF is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +# CONFIG_MLXBF_GIGE is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_LAN743X is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_NE2K_PCI is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=y +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_FIXED_PHY=y + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_MOTORCOMM_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=y +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_FWNODE_MDIO=y +CONFIG_OF_MDIO=y +CONFIG_ACPI_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +# CONFIG_PCS_XPCS is not set +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_IPHETH is not set +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K_PCI is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_WLAN_VENDOR_MICROCHIP=y +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_WAN is not set + +# +# Wireless WAN +# +# CONFIG_WWAN is not set +# end of Wireless WAN + +# CONFIG_VMXNET3 is not set +# CONFIG_FUJITSU_ES is not set +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_BCM is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SIFIVE is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +# CONFIG_HVC_DCC is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_VIRTIO=y +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y +CONFIG_HW_RANDOM_CN10K=y +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +# CONFIG_TCG_TPM is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XILLYUSB is not set +# CONFIG_RANDOM_TRUST_CPU is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set +# end of Character devices + +# +# I2C support +# +# CONFIG_I2C is not set +# end of I2C support + +# CONFIG_I3C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PTP_1588_CLOCK_KVM=y +# end of PTP clock support + +# CONFIG_PINCTRL is not set +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIO_ACPI=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_AMDPT is not set +# CONFIG_GPIO_CADENCE is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HISI is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_SAMA5D2_PIOBU is not set +# CONFIG_GPIO_SIFIVE is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers + +# +# MFD GPIO expanders +# +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# USB GPIO expanders +# +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_VIRTIO is not set +# CONFIG_GPIO_SIM is not set +# end of Virtual GPIO drivers + +# CONFIG_W1 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_VEXPRESS is not set +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +# CONFIG_SYSCON_REBOOT_MODE is not set +# CONFIG_NVMEM_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_BATTERY_GOLDFISH is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MR75203 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_SY7636A is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_VEXPRESS is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ACPI_POWER is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +# CONFIG_THERMAL_WRITABLE_TRIPS is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_CPU_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_SM501 is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +CONFIG_MFD_VEXPRESS_SYSREG=y +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_SY7636A is not set +# CONFIG_REGULATOR_VCTRL is not set +# CONFIG_REGULATOR_VEXPRESS is not set +# CONFIG_RC_CORE is not set + +# +# CEC support +# +# CONFIG_MEDIA_CEC_SUPPORT is not set +# end of CEC support + +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_DRM is not set + +# +# ARM devices +# +# end of ARM devices + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# end of Backlight & LCD device support + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +# end of Console display driver support +# end of Graphics support + +# CONFIG_SOUND is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CREATIVE_SB0540 is not set +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_XIAOMI is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LETSKETCH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_RAZER is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SIGMAMICRO is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set +# end of USB HID support +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 +# CONFIG_USB_MON is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PCI_RENESAS is not set +# CONFIG_USB_XHCI_PLATFORM is not set +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_CDNS_SUPPORT is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_APPLE_MFI_FASTCHARGE is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ULPI is not set +# end of USB Physical Layer drivers + +# CONFIG_USB_GADGET is not set +# CONFIG_TYPEC is not set +# CONFIG_USB_ROLE_SWITCH is not set +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_STM32_SDMMC=y +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_CQHCI is not set +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_INPUT is not set +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_HYPERV is not set +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_SURFACE_PLATFORMS=y +# CONFIG_SURFACE_GPE is not set +# CONFIG_SURFACE_HOTPLUG is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Clock driver for ARM Reference designs +# +# CONFIG_CLK_ICST is not set +# CONFIG_CLK_SP810 is not set +CONFIG_CLK_VEXPRESS_OSC=y +# end of Clock driver for ARM Reference designs + +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set +# CONFIG_COMMON_CLK_XGENE is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +# CONFIG_XILINX_VCU is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_ACPI=y +CONFIG_TIMER_PROBE=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_ARM64_ERRATUM_858921=y +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_IOMMU_DMA=y +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_SMMU_V3=y +# CONFIG_ARM_SMMU_V3_SVA is not set +# CONFIG_VIRTIO_IOMMU is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# CONFIG_QUICC_ENGINE is not set +# CONFIG_FSL_RCPM is not set +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_AL_FIC is not set +CONFIG_PARTITION_PERCPU=y +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_XGENE is not set +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_CADENCE_TORRENT is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_CADENCE_DPHY_RX is not set +# CONFIG_PHY_CADENCE_SALVO is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_LAN966X_SERDES is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_ARM_CMN is not set +CONFIG_ARM_PMU=y +CONFIG_ARM_PMU_ACPI=y +# CONFIG_ARM_SMMU_V3_PMU is not set +# CONFIG_ARM_DSU_PMU is not set +# CONFIG_ARM_SPE_PMU is not set +# CONFIG_ARM_DMC620_PMU is not set +# CONFIG_HISI_PMU is not set +# CONFIG_HISI_PCIE_PMU is not set +# end of Performance monitor support + +CONFIG_RAS=y +# CONFIG_USB4 is not set + +# +# Android +# +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +# CONFIG_ANDROID_BINDERFS is not set +CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" +# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +# CONFIG_DAX is not set +# CONFIG_NVMEM is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_PECI is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +CONFIG_QUOTACTL=y +CONFIG_AUTOFS4_FS=y +CONFIG_AUTOFS_FS=y +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=y +# CONFIG_NETFS_STATS is not set +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +# CONFIG_TMPFS_INODE64 is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +# CONFIG_EFIVAR_FS is not set +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_RAM is not set +# CONFIG_PSTORE_BLK is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=y +# CONFIG_9P_FS_POSIX_ACL is not set +# CONFIG_9P_FS_SECURITY is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set +# CONFIG_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +# CONFIG_SECURITYFS is not set +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_PATH is not set +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0 +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_SELINUX=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +# CONFIG_INIT_STACK_NONE is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +CONFIG_INIT_STACK_ALL_ZERO=y +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_ACOMP2=y +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_ECHAINIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CFB is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_ESSIV is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_XXHASH is not set +# CONFIG_CRYPTO_BLAKE2B is not set +# CONFIG_CRYPTO_BLAKE2S is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_JITTERENTROPY is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set +# CONFIG_CRYPTO_DEV_VIRTIO is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_HISI_SEC is not set +# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set +# CONFIG_CRYPTO_DEV_HISI_ZIP is not set +# CONFIG_CRYPTO_DEV_HISI_HPRE is not set +# CONFIG_CRYPTO_DEV_HISI_TRNG is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +# +# Certificates for signature checking +# +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_LINEAR_RANGES=y +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +# CONFIG_INDIRECT_PIO is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +# end of Crypto library routines + +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC64_ROCKSOFT is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +# CONFIG_XZ_DEC_MICROLZMA is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_SWIOTLB=y +# CONFIG_DMA_RESTRICTED_POOL is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DIRECT_REMAP=y +# CONFIG_DMA_CMA is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +# CONFIG_IRQ_POLL is not set +CONFIG_LIBFDT=y +CONFIG_UCS2_STRING=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_FONT_SUPPORT=y +CONFIG_FONT_8x16=y +CONFIG_FONT_AUTOSELECT=y +CONFIG_SG_POOL=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# end of Library routines + +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_NONE is not set +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_COMPRESSED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_DEBUG_INFO_BTF is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_HEADERS_INSTALL is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHED_INFO=y +# CONFIG_SCHEDSTATS is not set +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_PREEMPT is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_RCU_TRACE=y +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACE_CLOCK=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_SAMPLES is not set +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# arm64 Debugging +# +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_DEBUG_EFI is not set +# CONFIG_ARM64_RELOC_TEST is not set +# CONFIG_CORESIGHT is not set +# end of arm64 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_LKDTM is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_DIV64 is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_REED_SOLOMON_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_STRING_SELFTEST is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_SCANF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_SIPHASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_BLACKHOLE_DEV is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/recipes-kernel/linux/linux-morello.inc b/recipes-kernel/linux/linux-morello.inc new file mode 100644 index 0000000..fcf4f83 --- /dev/null +++ b/recipes-kernel/linux/linux-morello.inc @@ -0,0 +1,38 @@ +inherit llvm-morello-native +require recipes-kernel/linux/linux-yocto.inc +COMPATIBLE_MACHINE = "morello-linux" +SUMMARY = "Morello Linux kernel fork" +DESCRIPTION = "Arm's fork of CHERI LLVM toolchain that understands capabilities" +OUTPUTS_NAME = "morello-linux" +SECTION = "kernel" + +FILESEXTRAPATHS:prepend := "${THISDIR}:${THISDIR}/${PN}:" + +DEPENDS += "rsync-native" +PROVIDES += "virtual/${OUTPUTS_NAME}" + +SRC_URI = " \ + git://git.morello-project.org/morello/kernel/linux;protocol=https;tag=${SRCTAG};branch=${SRCBRANCH} \ + file://defconfig \ + " + +PV = "${LINUX_VERSION}+git${SRCPV}" +S = "${WORKDIR}/git" + +BUILD_CC = "${LLVM_PATH}/clang" +BUILD_CPP = "${LLVM_PATH}/clang" +BUILD_CXX = "${LLVM_PATH}/clang++" +BUILD_LD = "${LLVM_PATH}/ld.lld" + +KERNEL_CC = "${LLVM_PATH}/clang" +KERNEL_LD = "${LLVM_PATH}/ld.lld" + +KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" +KERNEL_IMAGETYPE = "Image" + +do_kernel_configcheck[noexec] = "1" +do_kernel_configme[depends] += "llvm-morello-native:do_populate_sysroot" + +do_install:append() { + oe_runmake headers_install ARCH=arm64 INSTALL_HDR_PATH=${STAGING_KERNEL_BUILDDIR}/kernel-headers +} \ No newline at end of file
On 20/12/2022 16:29, Pawel Zalewski wrote:
|Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself). Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++|
Out of curiosity, is there something in particular that is missing from morello_transitional_pcuabi_defconfig so that you had to create your own defconfig?
Kevin
|recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc |
Good question, so the defconfig in question is in fact a truncated .config generated from morello_transitional_pcuabi_defconfig.
This was done as Yocto would not produce the correct .config file out of morello_transitional_pcuabi_defconfig, with everything cheri-related being ignored. I do not have issues outside of Yocto with morello_transitional_pcuabi_defconfig at all, so it is purely Yocto related and I have not looked into this further.
Regardless, I have realised that this defconfig is wrong as it expects a hardcoded path to the rtl_nic driver, will fix this in v2.
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:12, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
|Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself). Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++|
Out of curiosity, is there something in particular that is missing from morello_transitional_pcuabi_defconfig so that you had to create your own defconfig?
Kevin
|recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc |
On 04/01/2023 11:29, Pawel Zalewski wrote:
Good question, so the defconfig in question is in fact a truncated .config generated from morello_transitional_pcuabi_defconfig.
This was done as Yocto would not produce the correct .config file out of morello_transitional_pcuabi_defconfig, with everything cheri-related being ignored.
Right, I encountered the same issue a while back when I naively did a `make morello_transitional_pcuabi_defconfig` in a Morello-unaware environment. This happens because you need to have your tools in place even to generate the .config, as CONFIG_ARM64_MORELLO depends on CONFIG_CC_HAS_MORELLO, which itself depends on CC knowing about Morello. If possible your best option is to amend your PATH and set LLVM=1 so that the right tools get picked up by make (both to generate .config and build), you do not need to override every tool manually if you do that. Not sure if Yocto supports this approach though.
Kevin
I do not have issues outside of Yocto with morello_transitional_pcuabi_defconfig at all, so it is purely Yocto related and I have not looked into this further.
Regardless, I have realised that this defconfig is wrong as it expects a hardcoded path to the rtl_nic driver, will fix this in v2.
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:12, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
|Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself). Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++|
Out of curiosity, is there something in particular that is missing from morello_transitional_pcuabi_defconfig so that you had to create your own defconfig?
Kevin
|recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc |
I have checked my logs and actually it was not only the cheri-specific entries being ignored, features related to the architecture (armv8 erratas, PM, ACPI etc.) and other common qualities were affected as well (networking, filesystems etc.).
Upon revisiting today, this turned out to be a bug due to the ARCH variable not being set. We can use plain morello_transitional_pcuabi_defconfig in V2.
On Wed, 4 Jan 2023 at 12:30, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 04/01/2023 11:29, Pawel Zalewski wrote:
Good question, so the defconfig in question is in fact a truncated .config generated from morello_transitional_pcuabi_defconfig.
This was done as Yocto would not produce the correct .config file out of morello_transitional_pcuabi_defconfig, with everything cheri-related being ignored.
Right, I encountered the same issue a while back when I naively did a `make morello_transitional_pcuabi_defconfig` in a Morello-unaware environment. This happens because you need to have your tools in place even to generate the .config, as CONFIG_ARM64_MORELLO depends on CONFIG_CC_HAS_MORELLO, which itself depends on CC knowing about Morello. If possible your best option is to amend your PATH and set LLVM=1 so that the right tools get picked up by make (both to generate .config and build), you do not need to override every tool manually if you do that. Not sure if Yocto supports this approach though.
Kevin
I do not have issues outside of Yocto with morello_transitional_pcuabi_defconfig at all, so it is purely Yocto related and I have not looked into this further.
Regardless, I have realised that this defconfig is wrong as it expects a hardcoded path to the rtl_nic driver, will fix this in v2.
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:12, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
|Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself). Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++|
Out of curiosity, is there something in particular that is missing from morello_transitional_pcuabi_defconfig so that you had to create your own defconfig?
Kevin
|recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc |
On 05/01/2023 10:56, Pawel Zalewski wrote:
I have checked my logs and actually it was not only the cheri-specific entries being ignored, features related to the architecture (armv8 erratas, PM, ACPI etc.) and other common qualities were affected as well (networking, filesystems etc.).
Upon revisiting today, this turned out to be a bug due to the ARCH variable not being set. We can use plain morello_transitional_pcuabi_defconfig in V2.
Right that would explain it indeed, nice to hear!
Kevin
On Wed, 4 Jan 2023 at 12:30, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 04/01/2023 11:29, Pawel Zalewski wrote:
Good question, so the defconfig in question is in fact a truncated .config generated from morello_transitional_pcuabi_defconfig.
This was done as Yocto would not produce the correct .config file out of morello_transitional_pcuabi_defconfig, with everything cheri-related being ignored.
Right, I encountered the same issue a while back when I naively did a `make morello_transitional_pcuabi_defconfig` in a Morello-unaware environment. This happens because you need to have your tools in place even to generate the .config, as CONFIG_ARM64_MORELLO depends on CONFIG_CC_HAS_MORELLO, which itself depends on CC knowing about Morello. If possible your best option is to amend your PATH and set LLVM=1 so that the right tools get picked up by make (both to generate .config and build), you do not need to override every tool manually if you do that. Not sure if Yocto supports this approach though.
Kevin
I do not have issues outside of Yocto with morello_transitional_pcuabi_defconfig at all, so it is purely Yocto related and I have not looked into this further.
Regardless, I have realised that this defconfig is wrong as it expects a hardcoded path to the rtl_nic driver, will fix this in v2.
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:12, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
|Add recipes for the Linux kernel. The recipe has a common include so that future versions can re-use the code (the recipe is not versioned itself). Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-kernel/linux/linux-morello-1.5.bb | 9 + .../linux/linux-morello-1.5/defconfig | 3795 +++++++++++++++++|
Out of curiosity, is there something in particular that is missing from morello_transitional_pcuabi_defconfig so that you had to create your own defconfig?
Kevin
|recipes-kernel/linux/linux-morello.inc | 38 + 3 files changed, 3842 insertions(+) create mode 100644 recipes-kernel/linux/linux-morello-1.5.bb create mode 100644 recipes-kernel/linux/linux-morello-1.5/defconfig create mode 100644 recipes-kernel/linux/linux-morello.inc |
linux-morello-distros mailing list -- linux-morello-distros@op-lists.linaro.org To unsubscribe send an email to linux-morello-distros-leave@op-lists.linaro.org
The morello musl libc appends the musl_git.bb recipe. The installation path and PROVIDES depend on the machine. The native libraries that go into clang resource folder are also covered. The build order is: musl-morello-native, musl-morello-libs-native, and musl-morello-target.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-core/musl/files/compiler_rt.cmake | 5 ++ recipes-core/musl/musl-morello-1.5.inc | 4 + recipes-core/musl/musl-morello-a64-so.inc | 5 ++ recipes-core/musl/musl-morello-a64.inc | 7 ++ recipes-core/musl/musl-morello-c64-so.inc | 5 ++ recipes-core/musl/musl-morello-c64.inc | 7 ++ recipes-core/musl/musl-morello-common.inc | 65 ++++++++++++++++ recipes-core/musl/musl-morello-libs-native.bb | 74 +++++++++++++++++++ recipes-core/musl/musl-morello-native.bb | 36 +++++++++ recipes-core/musl/musl-morello-target.inc | 52 +++++++++++++ recipes-core/musl/musl_%.bbappend | 17 +++++ recipes-core/musl/override-glibc.inc | 3 + recipes-core/musl/override-musl.inc | 1 + 13 files changed, 281 insertions(+) create mode 100644 recipes-core/musl/files/compiler_rt.cmake create mode 100644 recipes-core/musl/musl-morello-1.5.inc create mode 100644 recipes-core/musl/musl-morello-a64-so.inc create mode 100644 recipes-core/musl/musl-morello-a64.inc create mode 100644 recipes-core/musl/musl-morello-c64-so.inc create mode 100644 recipes-core/musl/musl-morello-c64.inc create mode 100644 recipes-core/musl/musl-morello-common.inc create mode 100644 recipes-core/musl/musl-morello-libs-native.bb create mode 100644 recipes-core/musl/musl-morello-native.bb create mode 100644 recipes-core/musl/musl-morello-target.inc create mode 100644 recipes-core/musl/musl_%.bbappend create mode 100644 recipes-core/musl/override-glibc.inc create mode 100644 recipes-core/musl/override-musl.inc
diff --git a/recipes-core/musl/files/compiler_rt.cmake b/recipes-core/musl/files/compiler_rt.cmake new file mode 100644 index 0000000..24ea9e7 --- /dev/null +++ b/recipes-core/musl/files/compiler_rt.cmake @@ -0,0 +1,5 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +set(CMAKE_C_COMPILER_WORKS 1 CACHE INTERNAL "") +set(CMAKE_CXX_COMPILER_WORKS 1 CACHE INTERNAL "") \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-1.5.inc b/recipes-core/musl/musl-morello-1.5.inc new file mode 100644 index 0000000..750120d --- /dev/null +++ b/recipes-core/musl/musl-morello-1.5.inc @@ -0,0 +1,4 @@ +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=b03f1cc25363d094011f8f4fd8bcfb68" + +SRCBRANCH = "morello/master" +SRCTAG = "morello-release-1.5.0" \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-a64-so.inc b/recipes-core/musl/musl-morello-a64-so.inc new file mode 100644 index 0000000..9e93839 --- /dev/null +++ b/recipes-core/musl/musl-morello-a64-so.inc @@ -0,0 +1,5 @@ +PROVIDES += "virtual/${OUTPUTS_NAME}-a64 virtual/crypt-a64" + +do_install:append() { + ln -rs ${TARGET_INSTALL_DIR}${libdir}/libc.so ${TARGET_INSTALL_DIR}${bindir}/ldd +} \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-a64.inc b/recipes-core/musl/musl-morello-a64.inc new file mode 100644 index 0000000..7aa18a3 --- /dev/null +++ b/recipes-core/musl/musl-morello-a64.inc @@ -0,0 +1,7 @@ +require musl-morello-common.inc + +EXTRA_CONFIGUREOPTS = "--disable-morello" + +ARCH_TRIPLE = "${A64_ARCH_TRIPLE}" +LIB_TRIPLE = "${A64_LIB_TRIPLE}" +ARCH_FLAGS = "-march=armv8" \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-c64-so.inc b/recipes-core/musl/musl-morello-c64-so.inc new file mode 100644 index 0000000..cd3b901 --- /dev/null +++ b/recipes-core/musl/musl-morello-c64-so.inc @@ -0,0 +1,5 @@ +PROVIDES += "virtual/${OUTPUTS_NAME}-c64 virtual/crypt-c64" + +do_install:append() { + ln -rs ${TARGET_INSTALL_DIR}${libdir}/libc.so ${TARGET_INSTALL_DIR}${bindir}/ldd +} \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-c64.inc b/recipes-core/musl/musl-morello-c64.inc new file mode 100644 index 0000000..761b9d2 --- /dev/null +++ b/recipes-core/musl/musl-morello-c64.inc @@ -0,0 +1,7 @@ +require musl-morello-common.inc + +EXTRA_CONFIGUREOPTS = "--enable-morello" + +ARCH_TRIPLE = "${C64_ARCH_TRIPLE}" +LIB_TRIPLE = "${C64_LIB_TRIPLE}" +ARCH_FLAGS = "-march=morello+c64 -mabi=purecap" \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-common.inc b/recipes-core/musl/musl-morello-common.inc new file mode 100644 index 0000000..f296e08 --- /dev/null +++ b/recipes-core/musl/musl-morello-common.inc @@ -0,0 +1,65 @@ +require musl-morello-${MORELLO_RELEASE_VERSION}.inc + +DESCRIPTION = "CHERI enabled musl libc" +OUTPUTS_NAME = "libc" +LICENSE = "MIT" + +FILESEXTRAPATHS:prepend := "${THISDIR}:" + +SUMMARY = "CHERI enabled musl libc" +SRC_URI = " \ + git://git.morello-project.org/morello/musl-libc;protocol=https;tag=${SRCTAG};branch=${SRCBRANCH} \ + file://files/compiler_rt.cmake \ +" + +SRCREV ="" + +PV = "git${SRCPV}" +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" + +TARGET_INSTALL_DIR = "${D}${MUSL_INSTALL_DIR}" + +INHIBIT_SYSROOT_STRIP = "1" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +CONFIGUREOPTS = " \ + --prefix=${prefix} \ + --exec-prefix=${exec_prefix} \ + --bindir=${bindir} \ + --libdir=${libdir} \ + --includedir=${includedir} \ + --syslibdir=${nonarch_base_libdir} \ + --target=${ARCH_TRIPLE} \ + --disable-libshim \ +" + +COMPILERRT_CMAKE = "-Wno-dev \ + -DCMAKE_TOOLCHAIN_FILE=compiler_rt.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_CONFIG_PATH='${LLVM_CONFIG}' \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DCMAKE_SKIP_BUILD_RPATH=OFF \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DLLVM_TARGETS_TO_BUILD='AArch64' \ + -DLLVM_ENABLE_ASSERTIONS=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCOMPILER_RT_BUILD_BUILTINS=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_PROFILE=OFF \ +" +do_configure() { + export CFLAGS="" + local config="${CONFIGUREOPTS}" + echo "Install dir ${TARGET_INSTALL_DIR} with ${TCLIBC} MACHINE_INC ${MACHINE_INC}" + config="${config} --target=${ARCH_TRIPLE} ${EXTRA_CONFIGUREOPTS} --disable-shared" + ${S}/configure ${config} +} + +do_compile() { + export CFLAGS="" + oe_runmake +} \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-libs-native.bb b/recipes-core/musl/musl-morello-libs-native.bb new file mode 100644 index 0000000..6318aa9 --- /dev/null +++ b/recipes-core/musl/musl-morello-libs-native.bb @@ -0,0 +1,74 @@ +inherit cmake llvm-morello-native native +require musl-morello-${MORELLO_ARCH}.inc + +DESCRIPTION = "Libraries that go into the clang resource folder, \ + search path for that folder is relative to clang directory itself." + +DEPENDS += "musl-morello-native" +PROVIDES = "virtual/musl-morello-libs-native" + +B_COMPILERRT = "${WORKDIR}/build_compiler_rt" +S_CRT = "${LLVM_SHARED_SOURCE}/compiler-rt/lib/crt" +S_COMPILER_RT = "${LLVM_SHARED_SOURCE}/compiler-rt" + +do_install[depends] += "llvm-morello-native:do_symlink" + +FILES:${PN} += "$(${CC} -print-resource-dir)/lib/${LIB_TRIPLE}" +INSANE_SKIP:${PN} += "$(${CC} -print-resource-dir)/lib/${LIB_TRIPLE}" + +BUILD_CC = "${LLVM_PATH}/clang" +BUILD_CXX = "${LLVM_PATH}/clang++" +BUILD_CPP = "${LLVM_PATH}/clang" +BUILD_CCLD = "${LLVM_PATH}/clang" +BUILD_RANLIB = "${LLVM_PATH}/llvm-ranlib" +BUILD_AR = "${LLVM_PATH}/llvm-ar" +BUILD_AS = "${LLVM_PATH}/llvm-as" +BUILD_NM = "${LLVM_PATH}/llvm-nm" +BUILD_OBJDUMP = "${LLVM_PATH}/llvm-objdump" +BUILD_OBJCOPY = "${LLVM_PATH}/llvm-objcopy" +BUILD_STRIP = "${LLVM_PATH}/llvm-strip" +BUILD_STRINGS = "${LLVM_PATH}/llvm-strings" +BUILD_READELF = "${LLVM_PATH}/llvm-readelf" +BUILD_LD = "${LLVM_PATH}/ld.lld" +BUILD_LTO = "-fuse-ld=lld" +BUILD_HOSTCC = "${LLVM_PATH}/clang" + + +do_install() { + + export CFLAGS="" + + local resourcedir=$(${CC} -print-resource-dir) + local destdir="${resourcedir}/lib/${LIB_TRIPLE}" + local builddir="${B_COMPILERRT}/${ARCH_TRIPLE}" + local sysroot="${STAGING_LIBDIR_NATIVE}/musl-morello-native/${ARCH_TRIPLE}" + local target="${LIB_TRIPLE}" + + install -d ${destdir} + mkdir -p ${builddir} + + local ccflags="--target=${target} ${ARCH_FLAGS} -nostdinc -isystem ${sysroot}/include" + ${CC} ${ccflags} -c ${S_CRT}/crtbegin.c -o ${destdir}/clang_rt.crtbegin.o + ${CC} ${ccflags} -c ${S_CRT}/crtend.c -o ${destdir}/clang_rt.crtend.o + + cp -f ${WORKDIR}/files/compiler_rt.cmake ${builddir}/compiler_rt.cmake + + local config="${COMPILERRT_CMAKE}" + config="${config} -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=${LIB_TRIPLE} \ + -DCMAKE_INSTALL_RPATH=$ORIGIN/../lib \ + -DCMAKE_TOOLCHAIN_FILE='${builddir}/compiler_rt.cmake' \ + " + cmake -S ${S_COMPILER_RT} -B ${builddir} ${config} -DCMAKE_C_FLAGS="-nostdinc -isystem ${sysroot}/include" -DCMAKE_C_COMPILER_TARGET="${LIB_TRIPLE} ${ARCH_FLAGS}" + + cd ${builddir} + make ${PARALLEL_MAKE} clang_rt.builtins-aarch64 + + install ${builddir}/lib/linux/libclang_rt.builtins-aarch64.a ${destdir}/libclang_rt.builtins.a + + install -d ${D}${libdir}/clang/${LLVM_VERSION}/lib/${LIB_TRIPLE} + local install_dir=${D}${libdir}/clang/${LLVM_VERSION}/lib/${LIB_TRIPLE} + + install ${destdir}/clang_rt.crtbegin.o ${install_dir}/clang_rt.crtbegin.o + install ${destdir}/clang_rt.crtend.o ${install_dir}/clang_rt.crtend.o + install ${destdir}/libclang_rt.builtins.a ${install_dir}/libclang_rt.builtins.a +} \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-native.bb b/recipes-core/musl/musl-morello-native.bb new file mode 100644 index 0000000..e7e6792 --- /dev/null +++ b/recipes-core/musl/musl-morello-native.bb @@ -0,0 +1,36 @@ +inherit llvm-morello-native native +require musl-morello-${MORELLO_ARCH}.inc + +DESCRIPTION = " That is right, we have a native libc sysroot that is needed as an intermediate step \ +to provide crt and compiler-rt that will be used by the cross compiler, this recipe exist to avoid having \ +a native recipe dependant on a target recipe... which is actually the case, but there you go. Note that the \ +libc sysroot is NOT actually native, it is just a trick." + +PROVIDES = "virtual/musl-morello-native" + +BUILD_CC = "${LLVM_PATH}/clang" +BUILD_CXX = "${LLVM_PATH}/clang++" +BUILD_CPP = "${LLVM_PATH}/clang" +BUILD_CCLD = "${LLVM_PATH}/clang" +BUILD_RANLIB = "${LLVM_PATH}/llvm-ranlib" +BUILD_AR = "${LLVM_PATH}/llvm-ar" +BUILD_AS = "${LLVM_PATH}/llvm-as" +BUILD_NM = "${LLVM_PATH}/llvm-nm" +BUILD_OBJDUMP = "${LLVM_PATH}/llvm-objdump" +BUILD_OBJCOPY = "${LLVM_PATH}/llvm-objcopy" +BUILD_STRIP = "${LLVM_PATH}/llvm-strip" +BUILD_STRINGS = "${LLVM_PATH}/llvm-strings" +BUILD_READELF = "${LLVM_PATH}/llvm-readelf" +BUILD_LD = "${LLVM_PATH}/ld.lld" +BUILD_LTO = "-fuse-ld=lld" +BUILD_HOSTCC = "${LLVM_PATH}/clang" + +FILES:${PN} += "${libdir}/${PN}/${ARCH_TRIPLE}" +INSTALL_DIR = "${D}/${ARCH_TRIPLE}" + +do_install() { + export CFLAGS="" + make install DESTDIR="${INSTALL_DIR}" + install -d ${D}${libdir}/${PN}/${ARCH_TRIPLE} + cp -rf ${INSTALL_DIR}${prefix}/* ${D}${libdir}/${PN}/${ARCH_TRIPLE} +} \ No newline at end of file diff --git a/recipes-core/musl/musl-morello-target.inc b/recipes-core/musl/musl-morello-target.inc new file mode 100644 index 0000000..7fc99a6 --- /dev/null +++ b/recipes-core/musl/musl-morello-target.inc @@ -0,0 +1,52 @@ +inherit llvm-morello-native + +COMPATIBLE_MACHINE = "morello" +SECTION = "libs" + +DEPENDS:append = " virtual/musl-morello-libs-native" + +MUSL_LDSO_ARCH = "aarch64" + +FILES:${PN} = "${MUSL_INSTALL_DIR}" +FILES:${PN} += "${MUSL_INSTALL_DIR}${datadir} ${MUSL_INSTALL_DIR}${sysconfdir}" +FILES:${PN} += "${MUSL_INSTALL_DIR}${includedir} ${MUSL_INSTALL_DIR}${includedir}/sys \ + ${MUSL_INSTALL_DIR}${includedir}/arpa ${MUSL_INSTALL_DIR}${includedir}/bits \ + ${MUSL_INSTALL_DIR}${includedir}/net ${MUSL_INSTALL_DIR}${includedir}/netinet \ + ${MUSL_INSTALL_DIR}${includedir}/netpacket ${MUSL_INSTALL_DIR}${includedir}/arpa \ + ${MUSL_INSTALL_DIR}${includedir}/scsi ${MUSL_INSTALL_DIR}${includedir}/sys" + +SYSROOT_DIRS += "${MUSL_INSTALL_DIR}/musl" +SYSROOT_DIRS:morello-linux-glibc += "${MUSL_INSTALL_DIR}" + +do_package[noexec] = "1" +do_package_write_rpm[noexec] = "1" +do_packagedata[noexec] = "1" + +do_install() { + + echo "Installing into ${TARGET_INSTALL_DIR}" + + export CFLAGS="" + + install -d ${TARGET_INSTALL_DIR}${includedir} ${TARGET_INSTALL_DIR}${includedir}/sys ${TARGET_INSTALL_DIR}${includedir}/arpa \ + ${TARGET_INSTALL_DIR}${includedir}/bits ${TARGET_INSTALL_DIR}${includedir}/net ${TARGET_INSTALL_DIR}${includedir}/netinet \ + ${TARGET_INSTALL_DIR}${includedir}/netpacket ${TARGET_INSTALL_DIR}${includedir}/arpa ${TARGET_INSTALL_DIR}${includedir}/scsi \ + ${TARGET_INSTALL_DIR}${includedir}/sys + + local destdir="${TARGET_INSTALL_DIR}" + + local config="${CONFIGUREOPTS}" + config="${config} --target=${ARCH_TRIPLE} ${EXTRA_CONFIGUREOPTS}" + + ${S}/configure ${CONFIGUREOPTS} + oe_runmake + oe_runmake install DESTDIR="${destdir}" + + install -d ${destdir}${bindir} ${TARGET_INSTALL_DIR}${sysconfdir} + + echo "${TARGET_INSTALL_DIR}${base_libdir}" > ${TARGET_INSTALL_DIR}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path + echo "${TARGET_INSTALL_DIR}${libdir}" >> ${TARGET_INSTALL_DIR}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path + + install -d ${TARGET_INSTALL_DIR}/musl + install ${TARGET_INSTALL_DIR}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path ${TARGET_INSTALL_DIR}/musl/ld-musl-${MUSL_LDSO_ARCH}.path +} \ No newline at end of file diff --git a/recipes-core/musl/musl_%.bbappend b/recipes-core/musl/musl_%.bbappend new file mode 100644 index 0000000..cfe23e8 --- /dev/null +++ b/recipes-core/musl/musl_%.bbappend @@ -0,0 +1,17 @@ +require musl-morello-${MORELLO_ARCH}.inc musl-morello-${MORELLO_ARCH}-so.inc musl-morello-target.inc + +MACHINE_INC ?= "" +MACHINE_INC:morello-linux-glibc = "override-glibc.inc" +MACHINE_INC:morello-linux-musl = "override-musl.inc" + +require ${MACHINE_INC} + +DEPENDS:remove = "virtual/${TARGET_PREFIX}binutils \ + virtual/${TARGET_PREFIX}gcc \ + libgcc-initial \ + linux-libc-headers \ + bsd-headers \ + libssp-nonshared \ + " + +RDEPENDS:${PN}-dev:remove = "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" \ No newline at end of file diff --git a/recipes-core/musl/override-glibc.inc b/recipes-core/musl/override-glibc.inc new file mode 100644 index 0000000..25ddb15 --- /dev/null +++ b/recipes-core/musl/override-glibc.inc @@ -0,0 +1,3 @@ +PROVIDES:append = " virtual/musl-morello" +PROVIDES:remove = "virtual/libc virtual/libiconv virtual/libintl virtual/crypt" +RPROVIDES:${PN}-dev:remove = "libc-dev virtual-libc-dev" \ No newline at end of file diff --git a/recipes-core/musl/override-musl.inc b/recipes-core/musl/override-musl.inc new file mode 100644 index 0000000..0d44bca --- /dev/null +++ b/recipes-core/musl/override-musl.inc @@ -0,0 +1 @@ +PROVIDES:append = " virtual/musl-morello" \ No newline at end of file
Add recipe for the Morello busybox which is statically linked with musl libc. Packaging is disabled due to Morello LLVM not being a fully implemented toolchain.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-core/busybox/busybox-morello-1.5.bb | 7 +++ recipes-core/busybox/busybox-morello.inc | 56 +++++++++++++++++++ ...-relative-path-to-the-LLVM-toolchain.patch | 49 ++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 recipes-core/busybox/busybox-morello-1.5.bb create mode 100644 recipes-core/busybox/busybox-morello.inc create mode 100644 recipes-core/busybox/files/0001-Adding-relative-path-to-the-LLVM-toolchain.patch
diff --git a/recipes-core/busybox/busybox-morello-1.5.bb b/recipes-core/busybox/busybox-morello-1.5.bb new file mode 100644 index 0000000..46411b6 --- /dev/null +++ b/recipes-core/busybox/busybox-morello-1.5.bb @@ -0,0 +1,7 @@ +require busybox-morello.inc + +LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb \ + file://archival/libarchive/bz/LICENSE;md5=28e3301eae987e8cfe19988e98383dae" + +SRCBRANCH = "morello/master" +SRCTAG = "morello-release-1.5.0" \ No newline at end of file diff --git a/recipes-core/busybox/busybox-morello.inc b/recipes-core/busybox/busybox-morello.inc new file mode 100644 index 0000000..6e5a2a1 --- /dev/null +++ b/recipes-core/busybox/busybox-morello.inc @@ -0,0 +1,56 @@ +inherit llvm-morello-native + +COMPATIBLE_MACHINE = "morello-linux" +SUMMARY = "CHERI enabled busybox" +LICENSE = "GPL-2.0-only" +SECTION = "base" + +FILESEXTRAPATHS:prepend := "${THISDIR}:${THISDIR}/${PN}:" + +DEPENDS += "virtual/kernel virtual/musl-morello" +PROVIDES += "virtual/morello-busybox" + +SRC_URI = " \ + git://git.morello-project.org/morello/morello-busybox;protocol=https;tag=${SRCTAG};branch=${SRCBRANCH} \ + file://files/0001-Adding-relative-path-to-the-LLVM-toolchain.patch \ + " + +PV = "git${SRCPV}" +S = "${WORKDIR}/git" + +do_package[noexec] = "1" +do_package_write_rpm[noexec] = "1" +do_packagedata[noexec] = "1" + +do_compile[depends] = "virtual/kernel:do_install" + +EXTRA_OEMAKE = "\ + ELF_PATCH='${ELF_PATCHER}' \ + MUSL_HOME='${STAGING_DIR_TARGET}${MUSL_INSTALL_DIR}${prefix}' \ + KHEADERS='${STAGING_KERNEL_BUILDDIR}/kernel-headers/include/' \ + " + +# lack of packaging hacks +FILES:${PN} += "${bindir}/busybox" +SYSROOT_DIRS += "/busybox" + +INHIBIT_SYSROOT_STRIP = "1" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +do_configure() { + export CFLAGS="" + oe_runmake ${EXTRA_OEMAKE} LLVM_PATH=${LLVM_PATH} morello_busybox_defconfig +} + +do_compile() { + export CFLAGS="" + local resourcedir=$(${CC} -print-resource-dir) + EXTRA_OEMAKE="${EXTRA_OEMAKE} CLANG_RESOURCE_DIR='${resourcedir}'" + oe_runmake ${EXTRA_OEMAKE} LLVM_PATH=${LLVM_PATH} +} + +do_install() { + install -d ${D}/busybox + install -m 0755 ${S}/busybox ${D}/busybox/busybox +} \ No newline at end of file diff --git a/recipes-core/busybox/files/0001-Adding-relative-path-to-the-LLVM-toolchain.patch b/recipes-core/busybox/files/0001-Adding-relative-path-to-the-LLVM-toolchain.patch new file mode 100644 index 0000000..168efd3 --- /dev/null +++ b/recipes-core/busybox/files/0001-Adding-relative-path-to-the-LLVM-toolchain.patch @@ -0,0 +1,49 @@ +From 42b18c5a3d0f2ed93c9fe4ae3d2b3821d97d72f0 Mon Sep 17 00:00:00 2001 +From: Pawel Zalewski pzalewski@thegoodpenguin.co.uk +Date: Thu, 1 Dec 2022 11:04:12 +0000 +Subject: [PATCH] Add relative path to the LLVM toolchain + +--- + Makefile | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Makefile b/Makefile +index f9d916f98..5e433677e 100644 +--- a/Makefile ++++ b/Makefile +@@ -145,7 +145,7 @@ MORELLO_FLAGS := -Wno-cheri-inefficient -march=morello+c64 + ELF_PATCH := morello_elf + MUSL_HOME := ../../musl-bin + KHEADERS := ../morello-linux-headers/usr/include/ +-CLANG_RESOURCE_DIR := $(shell clang -print-resource-dir) ++CLANG_RESOURCE_DIR := $(shell ${LLVM_PATH}/clang -print-resource-dir) + + export srctree objtree VPATH TOPDIR + +@@ -296,16 +296,16 @@ MAKEFLAGS += -rR + + # Make variables (CC, etc...) + +-AS = llvm-as +-CC_ = clang ++AS = ${LLVM_PATH}/llvm-as ++CC_ = ${LLVM_PATH}/clang + CC = $(CC_) --target=${MORELLO_TARGET} --sysroot ${MUSL_HOME} ${MORELLO_FLAGS} + LD = $(CC) -fuse-ld=lld -rtlib=compiler-rt + CPP = $(CC) -E +-AR = llvm-ar +-NM = llvm-nm +-STRIP = llvm-strip +-OBJCOPY = llvm-objcopy +-OBJDUMP = llvm-objdump ++AR = ${LLVM_PATH}/llvm-ar ++NM = ${LLVM_PATH}/llvm-nm ++STRIP = ${LLVM_PATH}/llvm-strip ++OBJCOPY = ${LLVM_PATH}/llvm-objcopy ++OBJDUMP = ${LLVM_PATH}/llvm-objdump + PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config + AWK = awk + GENKSYMS = scripts/genksyms/genksyms +-- +2.34.1 +
Add recipe for libarchcap.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- recipes-core/libarchcap/libarchcap.bb | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 recipes-core/libarchcap/libarchcap.bb
diff --git a/recipes-core/libarchcap/libarchcap.bb b/recipes-core/libarchcap/libarchcap.bb new file mode 100644 index 0000000..dbba851 --- /dev/null +++ b/recipes-core/libarchcap/libarchcap.bb @@ -0,0 +1,30 @@ +inherit llvm-morello-native + +SUMMARY = "Libarchcap" +DESCRIPTION = "Libarchcap" +HOMEPAGE = "http://llvm.org" +LICENSE = "ARM-Limited" +OUTPUTS_NAME = "libarchcap" + +PROVIDES = "virtual/${OUTPUTS_NAME}" + +SRC_URI = " \ + git://git.morello-project.org/morello/android/platform/external/libarchcap;protocol=https;branch=${SRCBRANCH} \ + " + + +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=dc35e02a115ff61453fb21eb8ec7da7f" +SRCBRANCH = "morello/mainline" +SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}" + +S = "${WORKDIR}/git" +FILES:${PN} = "${includedir}/${OUTPUTS_NAME}" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +do_install(){ + install -d ${D}${includedir}/${OUTPUTS_NAME} + install -m 0744 ${S}/include/* ${D}${includedir}/${OUTPUTS_NAME} +} \ No newline at end of file
On 20/12/2022 16:29, Pawel Zalewski wrote:
Add recipe for libarchcap.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk
recipes-core/libarchcap/libarchcap.bb | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 recipes-core/libarchcap/libarchcap.bb
diff --git a/recipes-core/libarchcap/libarchcap.bb b/recipes-core/libarchcap/libarchcap.bb new file mode 100644 index 0000000..dbba851 --- /dev/null +++ b/recipes-core/libarchcap/libarchcap.bb @@ -0,0 +1,30 @@ +inherit llvm-morello-native
+SUMMARY = "Libarchcap" +DESCRIPTION = "Libarchcap" +HOMEPAGE = "http://llvm.org" +LICENSE = "ARM-Limited" +OUTPUTS_NAME = "libarchcap"
+PROVIDES = "virtual/${OUTPUTS_NAME}"
+SRC_URI = " \
- git://git.morello-project.org/morello/android/platform/external/libarchcap;protocol=https;branch=${SRCBRANCH} \
- "
libarchcap is deprecated. In your defence, this was not exactly obvious; there is now a notice at the top of [1].
Long story short, libarchcap was written as part of the Android/Morello development as a higher-level abstraction for capability-related operations, and was intended to become standardised in some way, but that did not work out and a decision was made to stop using it. Its use has been progressively eliminated from the Android codebase (see for instance [2]) and it is now completely unused on the latest release.
I see you are making use of libarchcap in patch 13, fortunately it should be straightforward to use the standard header <cheriintrin.h> [3] directly instead. Section 7 of the CHERI C/C++ programming guide [4] gives an overview of what this header provides.
I've added Ruben and Oli in Cc as they are directly working on Android/Morello and know best about libarchcap.
Kevin
[1] https://git.morello-project.org/morello/android/platform/external/libarchcap... [2] https://git.morello-project.org/morello/android/platform/external/libshim/-/... [3] https://git.morello-project.org/morello/llvm-project/-/blob/morello/master/c... [4] https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-947.pdf
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=dc35e02a115ff61453fb21eb8ec7da7f" +SRCBRANCH = "morello/mainline" +SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}"
+S = "${WORKDIR}/git" +FILES:${PN} = "${includedir}/${OUTPUTS_NAME}"
+do_configure[noexec] = "1" +do_compile[noexec] = "1"
+do_install(){
- install -d ${D}${includedir}/${OUTPUTS_NAME}
- install -m 0744 ${S}/include/* ${D}${includedir}/${OUTPUTS_NAME}
+} \ No newline at end of file
libarchcap is deprecated. In your defence, this was not exactly obvious; there is now a notice at the top of [1].
Thanks for the info, I was not aware of that as the last time I visited this was probably in July.
Long story short, libarchcap was written as part of the Android/Morello...
The user of libarchap is indeed an application ported back from the old Android stack.
I see you are making use of libarchcap in patch 13, fortunately it
should be straightforward to use the standard header <cheriintrin.h> [3] directly instead. Section 7 of the CHERI C/C++ programming guide [4] gives an overview of what this header provides.
Libarchcap shall be removed in V2 and I will follow your advice of using the API directly.
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:20, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
Add recipe for libarchcap.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk
recipes-core/libarchcap/libarchcap.bb | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 recipes-core/libarchcap/libarchcap.bb
diff --git a/recipes-core/libarchcap/libarchcap.bb
b/recipes-core/libarchcap/libarchcap.bb
new file mode 100644 index 0000000..dbba851 --- /dev/null +++ b/recipes-core/libarchcap/libarchcap.bb @@ -0,0 +1,30 @@ +inherit llvm-morello-native
+SUMMARY = "Libarchcap" +DESCRIPTION = "Libarchcap" +HOMEPAGE = "http://llvm.org" +LICENSE = "ARM-Limited" +OUTPUTS_NAME = "libarchcap"
+PROVIDES = "virtual/${OUTPUTS_NAME}"
+SRC_URI = " \
- git://
git.morello-project.org/morello/android/platform/external/libarchcap;protocol=https;branch=${SRCBRANCH} http://git.morello-project.org/morello/android/platform/external/libarchcap;protocol=https;branch=$%7BSRCBRANCH%7D \
- "
libarchcap is deprecated. In your defence, this was not exactly obvious; there is now a notice at the top of [1].
Long story short, libarchcap was written as part of the Android/Morello development as a higher-level abstraction for capability-related operations, and was intended to become standardised in some way, but that did not work out and a decision was made to stop using it. Its use has been progressively eliminated from the Android codebase (see for instance [2]) and it is now completely unused on the latest release.
I see you are making use of libarchcap in patch 13, fortunately it should be straightforward to use the standard header <cheriintrin.h> [3] directly instead. Section 7 of the CHERI C/C++ programming guide [4] gives an overview of what this header provides.
I've added Ruben and Oli in Cc as they are directly working on Android/Morello and know best about libarchcap.
Kevin
[1]
https://git.morello-project.org/morello/android/platform/external/libarchcap... [2]
https://git.morello-project.org/morello/android/platform/external/libshim/-/... [3]
https://git.morello-project.org/morello/llvm-project/-/blob/morello/master/c... [4] https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-947.pdf
+LIC_FILES_CHKSUM =
"file://LICENSE.txt;md5=dc35e02a115ff61453fb21eb8ec7da7f"
+SRCBRANCH = "morello/mainline" +SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}"
+S = "${WORKDIR}/git" +FILES:${PN} = "${includedir}/${OUTPUTS_NAME}"
+do_configure[noexec] = "1" +do_compile[noexec] = "1"
+do_install(){
- install -d ${D}${includedir}/${OUTPUTS_NAME}
- install -m 0744 ${S}/include/* ${D}${includedir}/${OUTPUTS_NAME}
+} \ No newline at end of file
Add native recipe for the elf patcher.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- .../elf-patcher/elf-patcher-1.5-native.bb | 4 +++ .../elf-patcher/elf-patcher-native.inc | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb create mode 100644 recipes-devtools/elf-patcher/elf-patcher-native.inc
diff --git a/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb new file mode 100644 index 0000000..80a9a52 --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb @@ -0,0 +1,4 @@ +require elf-patcher-native.inc + +LIC_FILES_CHKSUM = "file://LICENSE;md5=30c1e44ff81caee33ce2f777440df394" +SRCBRANCH = "morello/release-1.5" diff --git a/recipes-devtools/elf-patcher/elf-patcher-native.inc b/recipes-devtools/elf-patcher/elf-patcher-native.inc new file mode 100644 index 0000000..871be9c --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-native.inc @@ -0,0 +1,34 @@ +inherit llvm-morello-native native + +SUMMARY = "Elf-patcher" +DESCRIPTION = "Tool for paching up elf e_flag with EF_AARCH64_CHERI_PURECAP" +HOMEPAGE = "http://llvm.org" +LICENSE = "BSD-3-Clause" +OUTPUTS_NAME = "elf-patcher" + +PROVIDES = "virtual/${OUTPUTS_NAME}-native" + +SRC_URI = " \ + git://git.morello-project.org/morello/morello-aarch64;protocol=https;branch=${SRCBRANCH} \ + " +DEPENDS:remove = " virtual/elf-patcher-native virtual/musl-morello-libs-native" + +SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}" + +S = "${WORKDIR}/git" +S-elf-patcher = "${WORKDIR}/git/morello/tools" + +FILES:${PN} = "${bindir}/${OUTPUTS_NAME}" + +do_configure[noexec] = "1" + +do_compile(){ + mkdir -p ${B}/${OUTPUTS_NAME} + ${CC} -o ${B}/${OUTPUTS_NAME}/${OUTPUTS_NAME} ${S-elf-patcher}/morello_elf.c +} + +do_install(){ + install -d ${D}${bindir} + install -m 0744 ${S}/${OUTPUTS_NAME}/${OUTPUTS_NAME} ${D}${bindir}/${OUTPUTS_NAME} +} \ No newline at end of file
On 20/12/2022 16:29, Pawel Zalewski wrote:
Add native recipe for the elf patcher.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk
.../elf-patcher/elf-patcher-1.5-native.bb | 4 +++ .../elf-patcher/elf-patcher-native.inc | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb create mode 100644 recipes-devtools/elf-patcher/elf-patcher-native.inc
diff --git a/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb new file mode 100644 index 0000000..80a9a52 --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb @@ -0,0 +1,4 @@ +require elf-patcher-native.inc
+LIC_FILES_CHKSUM = "file://LICENSE;md5=30c1e44ff81caee33ce2f777440df394" +SRCBRANCH = "morello/release-1.5" diff --git a/recipes-devtools/elf-patcher/elf-patcher-native.inc b/recipes-devtools/elf-patcher/elf-patcher-native.inc new file mode 100644 index 0000000..871be9c --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-native.inc @@ -0,0 +1,34 @@ +inherit llvm-morello-native native
+SUMMARY = "Elf-patcher" +DESCRIPTION = "Tool for paching up elf e_flag with EF_AARCH64_CHERI_PURECAP"
You shouldn't need this any more. This tool was written at a time when the released toolchain did not know about the new ELF flag yet, and we needed something to fill the gap. The LLVM release you are using does add this flag itself as appropriate (i.e. when building purecap binaries).
Kevin
+HOMEPAGE = "http://llvm.org" +LICENSE = "BSD-3-Clause" +OUTPUTS_NAME = "elf-patcher"
+PROVIDES = "virtual/${OUTPUTS_NAME}-native"
+SRC_URI = " \
- git://git.morello-project.org/morello/morello-aarch64;protocol=https;branch=${SRCBRANCH} \
- "
+DEPENDS:remove = " virtual/elf-patcher-native virtual/musl-morello-libs-native"
+SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}"
+S = "${WORKDIR}/git" +S-elf-patcher = "${WORKDIR}/git/morello/tools"
+FILES:${PN} = "${bindir}/${OUTPUTS_NAME}"
+do_configure[noexec] = "1"
+do_compile(){
- mkdir -p ${B}/${OUTPUTS_NAME}
- ${CC} -o ${B}/${OUTPUTS_NAME}/${OUTPUTS_NAME} ${S-elf-patcher}/morello_elf.c
+}
+do_install(){
- install -d ${D}${bindir}
- install -m 0744 ${S}/${OUTPUTS_NAME}/${OUTPUTS_NAME} ${D}${bindir}/${OUTPUTS_NAME}
+} \ No newline at end of file
You shouldn't need this any more. This tool was written at a time when the released toolchain did not know about the new ELF flag yet, and we needed something to fill the gap. The LLVM release you are using does add this flag itself as appropriate (i.e. when building purecap binaries).
You are right, I have just checked this with readelf, again thank you for updating me. I shall remove the patcher in V2.
I think that the busybox 1.5 makefile is still using the patcher as well: https://git.morello-project.org/morello/morello-busybox/-/blob/morello-relea...
Kind regards, Pawel
On Wed, 4 Jan 2023 at 10:21, Kevin Brodsky kevin.brodsky@arm.com wrote:
On 20/12/2022 16:29, Pawel Zalewski wrote:
Add native recipe for the elf patcher.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk
.../elf-patcher/elf-patcher-1.5-native.bb | 4 +++ .../elf-patcher/elf-patcher-native.inc | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 recipes-devtools/elf-patcher/
elf-patcher-1.5-native.bb
create mode 100644 recipes-devtools/elf-patcher/elf-patcher-native.inc
diff --git a/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb
b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb
new file mode 100644 index 0000000..80a9a52 --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-1.5-native.bb @@ -0,0 +1,4 @@ +require elf-patcher-native.inc
+LIC_FILES_CHKSUM =
"file://LICENSE;md5=30c1e44ff81caee33ce2f777440df394"
+SRCBRANCH = "morello/release-1.5" diff --git a/recipes-devtools/elf-patcher/elf-patcher-native.inc
b/recipes-devtools/elf-patcher/elf-patcher-native.inc
new file mode 100644 index 0000000..871be9c --- /dev/null +++ b/recipes-devtools/elf-patcher/elf-patcher-native.inc @@ -0,0 +1,34 @@ +inherit llvm-morello-native native
+SUMMARY = "Elf-patcher" +DESCRIPTION = "Tool for paching up elf e_flag with
EF_AARCH64_CHERI_PURECAP"
You shouldn't need this any more. This tool was written at a time when the released toolchain did not know about the new ELF flag yet, and we needed something to fill the gap. The LLVM release you are using does add this flag itself as appropriate (i.e. when building purecap binaries).
Kevin
+HOMEPAGE = "http://llvm.org" +LICENSE = "BSD-3-Clause" +OUTPUTS_NAME = "elf-patcher"
+PROVIDES = "virtual/${OUTPUTS_NAME}-native"
+SRC_URI = " \
- git://
git.morello-project.org/morello/morello-aarch64;protocol=https;branch=${SRCBRANCH} http://git.morello-project.org/morello/morello-aarch64;protocol=https;branch=$%7BSRCBRANCH%7D \
- "
+DEPENDS:remove = " virtual/elf-patcher-native
virtual/musl-morello-libs-native"
+SRCREV = "${AUTOREV}" +PV = "${PN}+git${SRCPV}"
+S = "${WORKDIR}/git" +S-elf-patcher = "${WORKDIR}/git/morello/tools"
+FILES:${PN} = "${bindir}/${OUTPUTS_NAME}"
+do_configure[noexec] = "1"
+do_compile(){
- mkdir -p ${B}/${OUTPUTS_NAME}
- ${CC} -o ${B}/${OUTPUTS_NAME}/${OUTPUTS_NAME}
${S-elf-patcher}/morello_elf.c
+}
+do_install(){
- install -d ${D}${bindir}
- install -m 0744 ${S}/${OUTPUTS_NAME}/${OUTPUTS_NAME}
${D}${bindir}/${OUTPUTS_NAME}
+} \ No newline at end of file
On 04/01/2023 12:02, Pawel Zalewski wrote:
You shouldn't need this any more. This tool was written at a time when the released toolchain did not know about the new ELF flag yet, and we needed something to fill the gap. The LLVM release you are using does add this flag itself as appropriate (i.e. when building purecap binaries).
You are right, I have just checked this with readelf, again thank you for updating me. I shall remove the patcher in V2.
I think that the busybox 1.5 makefile is still using the patcher as well: https://git.morello-project.org/morello/morello-busybox/-/blob/morello-relea...
That's correct, I think it was kept for backwards-compatibility with older toolchains. The patcher is a no-op if the flag is already there so it doesn't hurt either, but for new stacks like this one we can do without it.
Kevin
Add recipe for a purecap application and a class it must inherit from.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- classes/pure-cap-application.bbclass | 40 +++ .../applications/files/Makefile | 37 +++ .../applications/files/pure-cap-app.c | 280 ++++++++++++++++++ .../applications/pure-cap-app.bb | 23 ++ 4 files changed, 380 insertions(+) create mode 100644 classes/pure-cap-application.bbclass create mode 100644 recipes-morello-apps/applications/files/Makefile create mode 100644 recipes-morello-apps/applications/files/pure-cap-app.c create mode 100644 recipes-morello-apps/applications/pure-cap-app.bb
diff --git a/classes/pure-cap-application.bbclass b/classes/pure-cap-application.bbclass new file mode 100644 index 0000000..f87d905 --- /dev/null +++ b/classes/pure-cap-application.bbclass @@ -0,0 +1,40 @@ +OUTPUTS_NAME ?= "pure-cap-app-default-name" + +FILESEXTRAPATHS:prepend := "${THISDIR}:${THISDIR}/${PN}:" + +DEPENDS += "virtual/musl-morello virtual/libarchcap" + +do_package[noexec] = "1" +do_package_write_rpm[noexec] = "1" +do_packagedata[noexec] = "1" + +MUSL_HOME = "${STAGING_DIR_TARGET}${MUSL_INSTALL_DIR}" + +INHIBIT_SYSROOT_STRIP = "1" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +S = "${WORKDIR}/src" + +EXTRA_OEMAKE = "\ + LLVM_PATH='${LLVM_PATH}' \ + NAME='${OUTPUTS_NAME}' \ + OUT='${S}' \ + ELF_PATCHER='${ELF_PATCHER}' \ + LIBARCHCAP='${STAGING_DIR_TARGET}${prefix}/include/libarchcap' \ + SYSROOT_LIB='${MUSL_HOME}${libdir}' \ + SYSROOT_INC='${MUSL_HOME}${includedir}' \ + " + +do_compile() { + cd ${S} + echo "Resource dir ${resourcedir}" + echo "Musl home ${MUSL_HOME}" + oe_runmake ${EXTRA_OEMAKE} +} + +do_install() { + install -d ${D}/${APP_DIR} ${D}${bindir} + install ${S}/${OUTPUTS_NAME} ${D}/${APP_DIR}/${OUTPUTS_NAME} + install ${S}/${OUTPUTS_NAME} ${D}${bindir} +} \ No newline at end of file diff --git a/recipes-morello-apps/applications/files/Makefile b/recipes-morello-apps/applications/files/Makefile new file mode 100644 index 0000000..955ed17 --- /dev/null +++ b/recipes-morello-apps/applications/files/Makefile @@ -0,0 +1,37 @@ +NAME=$(OUTPUTS_NAME) +CC=$(LLVM_PATH)/clang + +TARGET=aarch64-linux-musl_purecap +ARCH=-march=morello+c64 -mabi=purecap +CLANG_RESOURCE_DIR=$(shell ${CC} -print-resource-dir) +CLANG_LIB=$(CLANG_RESOURCE_DIR)/lib/aarch64-unknown-linux-musl_purecap +COMPILER_INC=$(CLANG_RESOURCE_DIR)/include +OUT=$(S) + +CFLAGS=-Wno-gnu-alignof-expression \ + -Werror \ + -Wno-macro-redefined \ + -Werror=cheri \ + -Werror=cheri-inefficient \ + -Werror=cheri-pedantic \ + -Werror=cheri-pointer-conversion \ + -Werror=cheri-unimplemented-features + +all: + $(CC) -c -g -O0 -isystem $(SYSROOT_INC) -I$(COMPILER_INC) -I$(LIBARCHCAP) \ + $(ARCH) $(NAME).c -o $(OUT)/$(NAME).c.o \ + --target=$(TARGET) + $(CC) --target=$(TARGET) $(ARCH) -fuse-ld=lld \ + $(SYSROOT_LIB)/crt1.o \ + $(SYSROOT_LIB)/crti.o \ + $(CLANG_LIB)/clang_rt.crtbegin.o \ + $(OUT)/$(NAME).c.o \ + $(CLANG_LIB)/libclang_rt.builtins.a \ + $(CLANG_LIB)/clang_rt.crtend.o \ + $(SYSROOT_LIB)/crtn.o \ + -nostdlib -L$(SYSROOT_LIB) -lc -o $(OUT)/$(NAME) -static + ${ELF_PATCHER} $(OUT)/$(NAME) + +clean: + rm -f $(OUT)/$(NAME).c.o + rm -f $(OUT)/$(NAME) \ No newline at end of file diff --git a/recipes-morello-apps/applications/files/pure-cap-app.c b/recipes-morello-apps/applications/files/pure-cap-app.c new file mode 100644 index 0000000..0a28614 --- /dev/null +++ b/recipes-morello-apps/applications/files/pure-cap-app.c @@ -0,0 +1,280 @@ +/** + * @author Pawel Zalewski Copyright (C) 2022 <The Good Penguin> + * @email pzalewski@thegoodpenguin.co.uk + * @create date 2022-07-11 16:13:49 + * @desc Simple Morello demonstration program aimed at Linux fs. + * + */ + +#include <stdio.h> +#include <stdbool.h> +#include <signal.h> +#include <string.h> +#include <stdlib.h> +#include <stdalign.h> + +#include <getopt.h> +#include <memory.h> + +#include <archcap.h> + +static void usage(void); +static void subPointersToPointersTest(void); +static void subPointersToPointersTest2(void); +static void outOfBoundAccess(void); +static void functionPointersTest(void); +static void atomicAccess(void); + +static void sigactionSegfault(int signal, siginfo_t *si, void *args); +static void sigactionIllegal(int signal, siginfo_t *si, void *args); +static void sigactionAlingment(int signal, siginfo_t *si, void *args); + +static void printPointer(void *pointer); + +typedef void (*functionPointer)(void); + +static const char shortOptions[] = "habcde"; + +static const struct option longOptions[] = { + {"help", 0, NULL, 'h'}, + {"subPointersToPointersTest", 0, NULL, 'a'}, + {"subPointersToPointersTest2", 0, NULL, 'b'}, + {"outOfBoundAccess", 0, NULL, 'c'}, + {"functionPointersTest", 0, NULL, 'd'}, + {"atomicAccess", 0, NULL, 'e'}, + {NULL, 0, NULL, 0}, +}; + +static void sigactionAlingment(int signal, siginfo_t *si, void *args) +{ + printf("Signal [%d] caught an alligment fault at address %p with code %d args: %p \n", signal, si->si_addr, si->si_code, args); + exit(0); +} + +static void sigactionSegfault(int signal, siginfo_t *si, void *args) +{ + printf("Signal [%d] caught a segfault at address %p with code %d args: %p \n", signal, si->si_addr, si->si_code, args); + exit(0); +} + +static void sigactionIllegal(int signal, siginfo_t *si, void *args) +{ + printf("Signal [%d] caught an illegal access at address %p with code %d args: %p \n", signal, si->si_addr, si->si_code, args); + exit(0); +} + +int main(int argc, char **argv) +{ + + struct sigaction sa; + + memset(&sa, 0, sizeof(struct sigaction)); + sigemptyset(&sa.sa_mask); + + sa.sa_sigaction = sigactionSegfault; + sa.sa_flags = SA_SIGINFO; + sigaction(SIGSEGV, &sa, NULL); + + memset(&sa, 0, sizeof(struct sigaction)); + sa.sa_sigaction = sigactionIllegal; + sa.sa_flags = SA_SIGINFO; + sigaction(SIGILL, &sa, NULL); + + memset(&sa, 0, sizeof(struct sigaction)); + sa.sa_sigaction = sigactionAlingment; + sa.sa_flags = SA_SIGINFO; + sigaction(SIGBUS, &sa, NULL); + + size_t sizeInt = sizeof(int64_t); + size_t sizePointer = sizeof(uint8_t *); + + printf("The size of int64 is %lu-byte/%lu-bit and pointers are %lu-byte/%lu-bit \r\n", sizeInt, sizeInt << 3, sizePointer, sizePointer << 3); + + int optionidx = 0; + int opt; + + while ((opt = getopt_long(argc, argv, shortOptions, longOptions, &optionidx)) != EOF) + { + switch (opt) + { + case 'h': + usage(); + return 0; + + case 'a': + subPointersToPointersTest(); + break; + + case 'b': + subPointersToPointersTest2(); + break; + + case 'c': + outOfBoundAccess(); + break; + + case 'd': + functionPointersTest(); + break; + + case 'e': + atomicAccess(); + break; + + default: + printf("Got: %c\r\n", opt); + usage(); + exit(1); + } + } + + return 0; +} + +/** + * @brief Prints the pointer meta-data + * + * @param pPointer teh pointer + */ +static void printPointer(void *pointer) +{ + size_t addr = cheri_address_get(pointer); + size_t base = cheri_base_get(pointer); + size_t offset = cheri_offset_get(pointer); + size_t len = cheri_length_get(pointer); + size_t perm = cheri_perms_get(pointer); + bool tag = cheri_tag_get(pointer); + + printf("Capability size %lx align %lx addr %lX base %lX offset %lX length %lu permissions %lX tag %d \r\n", sizeof(pointer), alignof(pointer), addr, base, offset, len, perm, tag); + printf("Is sealed %d, load %d, store %d, execute %d, system %d, seal %d\r\n", archcap_c_is_sealed(pointer), archcap_perms_has_load(pointer), archcap_perms_has_store(pointer), archcap_perms_has_execute(pointer), archcap_perms_has_system(pointer), archcap_perms_has_seal(pointer)); +} + +/** + * @brief This function tests how meta-data behaves in sub-sequent pointers. + * + */ + +static void subPointersToPointersTest(void) +{ + uint8_t array[21] = {42}; + + uint8_t *pArray10 = &array[10]; + uint8_t *pArray15 = pArray10 + 5; + + printPointer(array); + printPointer(pArray10); + printPointer(pArray15); +} + +/** + * @brief This function tests changing bounds of pointers. + * + */ +static void subPointersToPointersTest2(void) +{ + uint8_t array[21] = {42}; + + uint8_t *pArray10 = &array[10]; + uint8_t *pArray10Bounded = cheri_bounds_set(pArray10, 4); + + printPointer(array); + printPointer(pArray10); + printPointer(pArray10Bounded); + + uint8_t *pArray10UnBounded = cheri_bounds_set(pArray10Bounded, 5); + + printPointer(pArray10UnBounded); + + pArray10Bounded--; + + printf("Some value is %d \r\n", *pArray10Bounded); + printf("Some value is %d \r\n", *pArray10UnBounded); +} + +/** + * @brief This function checks if we can access OOB value. + * + */ + +int someValue = 0x8000; + +static void outOfBoundAccess(void) +{ + + int *pAddress = &someValue; + printPointer(pAddress); + + pAddress++; + printPointer(pAddress); + + printf("Some value is %d \r\n", *pAddress); +} + +/** + * @brief This function checks how function pointers behave. + * + */ + +static void functionPointersTest(void) +{ + + functionPointer fp = &outOfBoundAccess; + + printPointer(fp); + + int *pData = (int *)fp; + + printPointer(pData); + + archcap_perms_t perm = archcap_c_perms_get(fp) | ARCHCAP_PERM_STORE; + functionPointer fpE = archcap_c_perms_set(fp, perm); + + printPointer(fpE); + + fpE(); + + int *pAddress = &someValue; + functionPointer fpAddr = (functionPointer)pAddress; + + printPointer(pAddress); +} + +/** + * @brief This function checks if we can atomically apply capability to a data field. + * + */ +static void atomicAccess(void) +{ + uint8_t array[21] = {42}; + + uint8_t *pWriter = archcap_c_perms_set(&array[0], 0b010000000001000001); + uint8_t *pReader = archcap_c_perms_set(&array[0], 0b100000000001000001); + + printPointer(pWriter); + printPointer(pReader); + + pWriter[0] = 1; + + uint8_t value = pReader[0]; + + pReader[0] = 1; + + printf("Value is %u array is %u \r\n", value, array[0]); +} + +/** + * @brief Teh usage + * + */ +static void usage(void) +{ + printf( + "Usage: MorelloExample [OPTION]\n" + "\n" + "-h, --help help\n" + "-a subPointersToPointersTest\n" + "-b subPointersToPointersTest2\n" + "-c outOfBoundAccess \n" + "-d functionPointersTest \n" + "-e atomicAccess\n"); +} \ No newline at end of file diff --git a/recipes-morello-apps/applications/pure-cap-app.bb b/recipes-morello-apps/applications/pure-cap-app.bb new file mode 100644 index 0000000..f1b314a --- /dev/null +++ b/recipes-morello-apps/applications/pure-cap-app.bb @@ -0,0 +1,23 @@ +inherit pure-cap-application llvm-morello-native + +COMPATIBLE_MACHINE = "morello-linux" +SUMMARY = "Simple capability application" +DESCRIPTION = "Application used in the series of blogs found @ https://www.thegoodpenguin.co.uk/blog/tag/morello/" +OUTPUTS_NAME = "pure-cap-app" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +PROVIDES = "${OUTPUTS_NAME}" + +FILES:${PN} += "/${APP_DIR} ${bindir}" +SYSROOT_DIRS +="/${APP_DIR}" + +SRC_URI = " \ + file://files/pure-cap-app.c \ + file://files/Makefile \ + " + +do_configure () { + install -d ${S} + install ${WORKDIR}/files/* ${S} +} \ No newline at end of file
Add recipe for gen-init-cpio native.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- .../gen-init-cpio/gen-init-cpio-native.bb | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes-devtools/gen-init-cpio/gen-init-cpio-native.bb
diff --git a/recipes-devtools/gen-init-cpio/gen-init-cpio-native.bb b/recipes-devtools/gen-init-cpio/gen-init-cpio-native.bb new file mode 100644 index 0000000..5041b9d --- /dev/null +++ b/recipes-devtools/gen-init-cpio/gen-init-cpio-native.bb @@ -0,0 +1,34 @@ +inherit llvm-morello-native native + +SUMMARY = "Gen init cpio" +DESCRIPTION = "Gen init cpio" +HOMEPAGE = "http://llvm.org" +LICENSE = "GPL-2.0-only" + +OUTPUTS_NAME = "gen-init-cpio" +PROVIDES = "${OUTPUTS_NAME}-native" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +SRC_URI = " \ + git://git.morello-project.org/morello/kernel/linux;protocol=https;tag=${SRCTAG};branch=${SRCBRANCH} \ + " + +SRCBRANCH = "morello/master" +SRCTAG = "morello-release-1.5.0" + +S = "${WORKDIR}/git/usr" + +FILES:${PN} = "${bindir}/${OUTPUTS_NAME}" + +do_configure[noexec] = "1" + +do_compile(){ + mkdir -p ${B}/${OUTPUTS_NAME} + oe_runmake gen_init_cpio +} + +do_install(){ + install -d ${D}${bindir} + install -m 0744 ${S}/gen_init_cpio ${D}${bindir}/gen_init_cpio +} \ No newline at end of file
Add recipes that will output a Linux image and a initramfs that contains the Morello busybox and the purecap app. The glibc version can take an arbitrary Yocto image as the rootfs. The Yocto rootfs is not tested yet but can be easily done by adding an extra grub menu option.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- conf/machine/morello-linux-glibc.conf | 17 ++++ conf/machine/morello-linux-musl.conf | 13 +++ .../images/morello-initramfs-glibc.bb | 60 ++++++++++++ .../images/morello-initramfs-musl.bb | 59 +++++++++++ .../images/morello-linux-glibc/files/init.sh | 33 +++++++ .../files/initramfs.list.template | 18 ++++ .../images/morello-linux-image-glibc.bb | 93 ++++++++++++++++++ .../images/morello-linux-image-musl.bb | 98 +++++++++++++++++++ .../images/morello-linux-musl/files/init.sh | 33 +++++++ .../files/initramfs.list.template | 18 ++++ 10 files changed, 442 insertions(+) create mode 100644 recipes-morello/images/morello-initramfs-glibc.bb create mode 100644 recipes-morello/images/morello-initramfs-musl.bb create mode 100644 recipes-morello/images/morello-linux-glibc/files/init.sh create mode 100644 recipes-morello/images/morello-linux-glibc/files/initramfs.list.template create mode 100644 recipes-morello/images/morello-linux-image-glibc.bb create mode 100644 recipes-morello/images/morello-linux-image-musl.bb create mode 100644 recipes-morello/images/morello-linux-musl/files/init.sh create mode 100644 recipes-morello/images/morello-linux-musl/files/initramfs.list.template
diff --git a/conf/machine/morello-linux-glibc.conf b/conf/machine/morello-linux-glibc.conf index 6ed824d..decfc7e 100644 --- a/conf/machine/morello-linux-glibc.conf +++ b/conf/machine/morello-linux-glibc.conf @@ -1,3 +1,20 @@ require conf/machine/include/morello-common.inc
MACHINEOVERRIDES =. "morello-linux-glibc:" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-morello-${MORELLO_RELEASE_VERSION}" +PREFFERED_PROVIDER_morello-linux-image ?= "morello-linux-image-glibc" +PREFFERED_PROVIDER_morello-initramfs ?= "morello-initramfs-glibc" + +BSP_GRUB_DIR ?= "${TOPDIR}/${TMPDIR_BSP}-glibc/deploy/images/morello-bsp/grub-efi" +BSP_DTB_DIR ?= "${TOPDIR}/${TMPDIR_BSP}-glibc/deploy/images/morello-bsp/trusted-firmware-a" + +TMPDIR = "${TOPDIR}/${TMPDIR_LINUX}" + +MUSL_INSTALL_DIR ?= "/${GLOBAL_ARCH_TRIPLE}" + +IMAGE_BASENAME = "rootfs" +IMAGE_FSTYPES:append = " ext4" + +# The rootfs image that will go on a bootable drive +MORELLO_ROOTFS_IMAGE = "core-image-minimal" \ No newline at end of file diff --git a/conf/machine/morello-linux-musl.conf b/conf/machine/morello-linux-musl.conf index e22493d..bac2d40 100644 --- a/conf/machine/morello-linux-musl.conf +++ b/conf/machine/morello-linux-musl.conf @@ -1,3 +1,16 @@ require conf/machine/include/morello-common.inc
MACHINEOVERRIDES =. "morello-linux-musl:" + +TARGET_OS ?= "linux-musl" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-morello-${MORELLO_RELEASE_VERSION}" +PREFFERED_PROVIDER_morello-linux-image ?= "morello-linux-image-musl" +PREFFERED_PROVIDER_morello-initramfs ?= "morello-initramfs-musl" + +TCLIBC = "musl" + +BSP_GRUB_DIR ?= "${TOPDIR}/${TMPDIR_BSP}-glibc/deploy/images/morello-bsp/grub-efi" +BSP_DTB_DIR ?= "${TOPDIR}/${TMPDIR_BSP}-glibc/deploy/images/morello-bsp/trusted-firmware-a" + +TMPDIR = "${TOPDIR}/${TMPDIR_LINUX}" \ No newline at end of file diff --git a/recipes-morello/images/morello-initramfs-glibc.bb b/recipes-morello/images/morello-initramfs-glibc.bb new file mode 100644 index 0000000..2547de6 --- /dev/null +++ b/recipes-morello/images/morello-initramfs-glibc.bb @@ -0,0 +1,60 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello-linux-glibc" +SUMMARY = "Initramfs for busybox" +DESCRIPTION = "Initramfs for busybox, bypassing the Yocto way" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +OUTPUTS_NAME = "morello-initramfs" + +DEPENDS += "virtual/morello-busybox gen-init-cpio-native pure-cap-app" +PROVIDES = "${OUTPUTS_NAME}" + +BB_DONT_CACHE = "1" +INHIBIT_DEFAULT_DEPS = "1" + +FILESEXTRAPATHS:prepend := "${THISDIR}:" + +SRC_URI = "file://files/init.sh \ + file://files/initramfs.list.template \ + " +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_deploy[depends] = "virtual/morello-busybox:do_populate_sysroot" + + +do_install() { + + local sysroot_prefix="recipe-sysroot" + + sed -e "s@%FILES%@/files@" \ + "${WORKDIR}/files/initramfs.list.template" > "${WORKDIR}/files/initramfs.list.tmp1" + + sed -e "s@%BUSYBOX%@/${sysroot_prefix}/busybox@" \ + "${WORKDIR}/files/initramfs.list.tmp1" > "${WORKDIR}/files/initramfs.list.tmp2" + + sed -e "s@%PREFIX%@/${sysroot_prefix}${prefix}@" \ + "${WORKDIR}/files/initramfs.list.tmp2" > "${WORKDIR}/files/initramfs.list.tmp1" + + sed -e "s@%APP_DIR%@/${APP_DIR}@" \ + "${WORKDIR}/files/initramfs.list.tmp1" > "${WORKDIR}/files/initramfs.list.tmp2" + + sed -e "s@%MUSL%@/${sysroot_prefix}/musl@" \ + "${WORKDIR}/files/initramfs.list.tmp2" > "${WORKDIR}/files/initramfs.list" + + install -d ${D}/${OUTPUTS_NAME} + + rm -f ${D}/${OUTPUTS_NAME}/initramfs + + { + env -C ${WORKDIR} ${STAGING_BINDIR_NATIVE}/gen_init_cpio "${WORKDIR}/files/initramfs.list" + env -C "${STAGING_DIR_TARGET}/${APP_DIR}/" find . -print0 | env -C "${STAGING_DIR_TARGET}/${APP_DIR}/" cpio --null --owner +0:+0 --create --format=newc + } > ${D}/${OUTPUTS_NAME}/initramfs + +} + +do_deploy() { + install -d ${DEPLOYDIR}/${OUTPUTS_NAME} + install ${D}/${OUTPUTS_NAME}/initramfs ${DEPLOYDIR}/${OUTPUTS_NAME}/initramfs +} +addtask deploy after do_install \ No newline at end of file diff --git a/recipes-morello/images/morello-initramfs-musl.bb b/recipes-morello/images/morello-initramfs-musl.bb new file mode 100644 index 0000000..585540d --- /dev/null +++ b/recipes-morello/images/morello-initramfs-musl.bb @@ -0,0 +1,59 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello-linux-musl" +SUMMARY = "Initramfs for busybox" +DESCRIPTION = "Initramfs for busybox, bypassing the Yocto way" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +OUTPUTS_NAME = "morello-initramfs" + +DEPENDS += "virtual/morello-busybox gen-init-cpio-native pure-cap-app" +PROVIDES = "${OUTPUTS_NAME}" + +BB_DONT_CACHE = "1" +INHIBIT_DEFAULT_DEPS = "1" + +FILESEXTRAPATHS:prepend := "${THISDIR}:" + +SRC_URI = "file://files/init.sh \ + file://files/initramfs.list.template \ + " +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_deploy[depends] = "virtual/morello-busybox:do_populate_sysroot" + + +do_install() { + + local sysroot_prefix="recipe-sysroot" + + sed -e "s@%FILES%@/files@" \ + "${WORKDIR}/files/initramfs.list.template" > "${WORKDIR}/files/initramfs.list.tmp1" + + sed -e "s@%BUSYBOX%@/${sysroot_prefix}/busybox@" \ + "${WORKDIR}/files/initramfs.list.tmp1" > "${WORKDIR}/files/initramfs.list.tmp2" + + sed -e "s@%PREFIX%@/${sysroot_prefix}${prefix}@" \ + "${WORKDIR}/files/initramfs.list.tmp2" > "${WORKDIR}/files/initramfs.list.tmp1" + + sed -e "s@%APP_DIR%@/${APP_DIR}@" \ + "${WORKDIR}/files/initramfs.list.tmp1" > "${WORKDIR}/files/initramfs.list.tmp2" + + sed -e "s@%MUSL%@/${sysroot_prefix}/musl@" \ + "${WORKDIR}/files/initramfs.list.tmp2" > "${WORKDIR}/files/initramfs.list" + + install -d ${D}/${OUTPUTS_NAME} + + rm -f ${D}/${OUTPUTS_NAME}/initramfs + + { + env -C ${WORKDIR} ${STAGING_BINDIR_NATIVE}/gen_init_cpio "${WORKDIR}/files/initramfs.list" + env -C "${STAGING_DIR_TARGET}/" find . -not -path "./sysroot-providers*" -print0 | env -C "${STAGING_DIR_TARGET}/" cpio --null --owner +0:+0 --create --format=newc + } > ${D}/${OUTPUTS_NAME}/initramfs +} + +do_deploy() { + install -d ${DEPLOYDIR}/${OUTPUTS_NAME} + install ${D}/${OUTPUTS_NAME}/initramfs ${DEPLOYDIR}/${OUTPUTS_NAME}/initramfs +} +addtask deploy after do_install \ No newline at end of file diff --git a/recipes-morello/images/morello-linux-glibc/files/init.sh b/recipes-morello/images/morello-linux-glibc/files/init.sh new file mode 100644 index 0000000..65a6d39 --- /dev/null +++ b/recipes-morello/images/morello-linux-glibc/files/init.sh @@ -0,0 +1,33 @@ +#!/bin/busybox sh + +# Copyright (c) 2021 Arm Limited. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause + +mount() { + /bin/busybox mount "$@" +} + +grep() { + /bin/busybox grep "$@" +} + +echo "Running init script" + +mount -t proc proc /proc +grep -qE $'\t'"devtmpfs$" /proc/filesystems && mount -t devtmpfs dev /dev +mount -t sysfs sysfs /sys + +echo "Installing busybox" + +/bin/busybox --install -s + +! grep -qE $'\t'"devtmpfs$" /proc/filesystems && mdev -s + +ulimit -c unlimited + +echo "/bin/sh as PID 1!" +echo "init.sh" +exec setsid cttyhack sh +echo setsid ctty hack failed so "exec /bin/sh" fallback will be used +exec /bin/sh \ No newline at end of file diff --git a/recipes-morello/images/morello-linux-glibc/files/initramfs.list.template b/recipes-morello/images/morello-linux-glibc/files/initramfs.list.template new file mode 100644 index 0000000..3da25be --- /dev/null +++ b/recipes-morello/images/morello-linux-glibc/files/initramfs.list.template @@ -0,0 +1,18 @@ +dir /bin 755 0 0 +dir /include 755 0 0 +dir /lib 755 0 0 +dir /share 755 0 0 +dir /dev 755 0 0 +dir /proc 755 0 0 +dir /sbin 755 0 0 +dir /sys 755 0 0 +dir /newroot 755 0 0 +dir /usr 755 0 0 +dir /usr/lib 755 0 0 +dir /usr/bin 755 0 0 +dir /etc 755 0 0 + +dir /%APP_DIR% 755 0 0 + +file /bin/busybox .%BUSYBOX%/busybox 755 0 0 +file /init .%FILES%/init.sh 755 0 0 \ No newline at end of file diff --git a/recipes-morello/images/morello-linux-image-glibc.bb b/recipes-morello/images/morello-linux-image-glibc.bb new file mode 100644 index 0000000..c72700b --- /dev/null +++ b/recipes-morello/images/morello-linux-image-glibc.bb @@ -0,0 +1,93 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello-linux-glibc" +SUMMARY = "Bootable Morello Linux Image" +DESCRIPTION = "Image that goes on a bootable device, can be DD'ed onto a USB stick" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +OUTPUTS_NAME = "morello-linux-image" + +INHIBIT_DEFAULT_DEPS = "1" + +DEPENDS += "virtual/kernel morello-initramfs mtools-native e2fsprogs-native coreutils-native bc-native util-linux-native" +PROVIDES = "${OUTPUTS_NAME}" + +IMAGE_SIZE = "100" + +# Yocto does not like function derived vars expanded in other functions, it does not like passing by argument from non-constant +# variables either...so I am just cheerfully hardcoding this as I have more important things to do in life +IMAGE_SECTORS = "204800" + +LBA = "512" +PART_START_ALIGNMENT = "2048" + +ESP_IMAGE = "${OUTPUTS_NAME}-esp" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install[depends] += "${MORELLO_ROOTFS_IMAGE}:do_image_complete" + +def get_next_part_start (d): + next_image_start = int(d.getVar('IMAGE_SECTORS')) + int(d.getVar('PART_START_ALIGNMENT')) + int(d.getVar('PART_START_ALIGNMENT')) - 1 + next_image_start = next_image_start & ~(int(d.getVar('PART_START_ALIGNMENT')) -1) + return next_image_start + +add_to_image() { + mcopy -i ${1} -m -D overwrite ${2} ::${3} +} + +mult() { + local ret=$(echo "${1} * ${2}" | bc) + echo ${ret} +} + +create_gpt() { + + local esp_type="C12A7328-F81F-11D2-BA4B-00A0C93EC93B" + local linux_type="0FC63DAF-8483-4772-8E79-3D69D8477DE4" + + local part_start_esp=${PART_START_ALIGNMENT} + local part_start_linux="${@get_next_part_start(d)}" + + { + echo "label: gpt" + echo "start=${part_start_esp}, size=${IMAGE_SECTORS}, name=ESP, type=${esp_type}" + echo "start=${part_start_linux}, size=${IMAGE_SECTORS}, name=root, type=${linux_type}" + } | sfdisk -q "${1}" + + dd if="${2}" of="${1}" seek=$(mult ${part_start_esp} ${LBA}) bs=8M conv=notrunc,sparse oflag=seek_bytes status=progress + dd if="${3}" of="${1}" seek=$(mult ${part_start_linux} ${LBA}) bs=8M conv=notrunc,sparse oflag=seek_bytes status=progress +} + +do_install() { + + local part0="${BSP_GRUB_DIR}/grub-efi-bootaa64.efi" + local part1="${BSP_GRUB_DIR}/grub-config.cfg" + local part2="${BSP_DTB_DIR}/morello-soc.dtb" + local part3="${DEPLOY_DIR}/images/morello-linux-glibc/Image" + local part4="${DEPLOY_DIR}/images/morello-linux-glibc/morello-initramfs/initramfs" + + # create the ESP + dd if=/dev/zero of=${ESP_IMAGE}.img bs=1024K count=${IMAGE_SIZE} + mformat -i ${ESP_IMAGE}.img -v ESP :: + + mmd -i ${ESP_IMAGE}.img ::/EFI + mmd -i ${ESP_IMAGE}.img ::/EFI/BOOT + + add_to_image ${ESP_IMAGE}.img ${part0} /EFI/BOOT/BOOTAA64.EFI + add_to_image ${ESP_IMAGE}.img ${part1} /EFI/BOOT/grub.cfg + add_to_image ${ESP_IMAGE}.img ${part2} /morello.dtb + add_to_image ${ESP_IMAGE}.img ${part3} /Image + add_to_image ${ESP_IMAGE}.img ${part4} /initramfs + + : > ${OUTPUTS_NAME}.img + truncate --size="$(mult ${IMAGE_SIZE} 3)M" ${OUTPUTS_NAME}.img + + create_gpt ${OUTPUTS_NAME}.img ${ESP_IMAGE}.img ${DEPLOY_DIR}/images/morello-linux-glibc/rootfs-morello-linux-glibc.ext4 + install ${OUTPUTS_NAME}.img ${D}/${OUTPUTS_NAME}.img +} + +do_deploy() { + install ${D}/${OUTPUTS_NAME}.img ${DEPLOYDIR}/${OUTPUTS_NAME}-${MORELLO_ARCH}-${TCLIBC}.img +} +addtask deploy after do_install \ No newline at end of file diff --git a/recipes-morello/images/morello-linux-image-musl.bb b/recipes-morello/images/morello-linux-image-musl.bb new file mode 100644 index 0000000..e1d9b94 --- /dev/null +++ b/recipes-morello/images/morello-linux-image-musl.bb @@ -0,0 +1,98 @@ +inherit deploy nopackages + +COMPATIBLE_MACHINE = "morello-linux-musl" +SUMMARY = "Bootable Morello Linux Image" +DESCRIPTION = "Image that goes on a bootable device, can be DD'ed onto a USB stick" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +OUTPUTS_NAME = "morello-linux-image" + +BB_DONT_CACHE = "1" +INHIBIT_DEFAULT_DEPS = "1" + +DEPENDS += "virtual/kernel morello-initramfs mtools-native e2fsprogs-native coreutils-native bc-native util-linux-native" +PROVIDES = "${OUTPUTS_NAME}" + +IMAGE_SIZE = "100" + +# Yocto does not like function derived vars expanded in other functions, it does not like passing by argument from non-constant +# variables either...so I am just cheerfully hardcoding this as I have more important things to do in life +IMAGE_SECTORS = "204800" + +LBA = "512" +PART_START_ALIGNMENT = "2048" + +ESP_IMAGE = "${OUTPUTS_NAME}-esp" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +def get_next_part_start (d): + next_image_start = int(d.getVar('IMAGE_SECTORS')) + int(d.getVar('PART_START_ALIGNMENT')) + int(d.getVar('PART_START_ALIGNMENT')) - 1 + next_image_start = next_image_start & ~(int(d.getVar('PART_START_ALIGNMENT')) -1) + return next_image_start + +add_to_image() { + mcopy -i ${1} -m -D overwrite ${2} ::${3} +} + +mult() { + local ret=$(echo "${1} * ${2}" | bc) + echo ${ret} +} + +create_gpt() { + + local esp_type="C12A7328-F81F-11D2-BA4B-00A0C93EC93B" + local linux_type="0FC63DAF-8483-4772-8E79-3D69D8477DE4" + + local part_start_esp=${PART_START_ALIGNMENT} + local part_start_linux="${@get_next_part_start(d)}" + + { + echo "label: gpt" + echo "start=${part_start_esp}, size=${IMAGE_SECTORS}, name=ESP, type=${esp_type}" + echo "start=${part_start_linux}, size=${IMAGE_SECTORS}, name=root, type=${linux_type}" + } | sfdisk -q "${1}" + + dd if="${2}" of="${1}" seek=$(mult ${part_start_esp} ${LBA}) bs=8M conv=notrunc,sparse oflag=seek_bytes status=progress + dd if="${3}" of="${1}" seek=$(mult ${part_start_linux} ${LBA}) bs=8M conv=notrunc,sparse oflag=seek_bytes status=progress +} + +do_install() { + + local part0="${BSP_GRUB_DIR}/grub-efi-bootaa64.efi" + local part1="${BSP_GRUB_DIR}/grub-config.cfg" + local part2="${BSP_DTB_DIR}/morello-soc.dtb" + local part3="${DEPLOY_DIR}/images/morello-linux-musl/Image" + local part4="${DEPLOY_DIR}/images/morello-linux-musl/morello-initramfs/initramfs" + + # create empty ext4 rootfs + : > ${D}/root.img + truncate --size="${IMAGE_SIZE}M" ${D}/root.img + mkfs.ext4 ${D}/root.img + + # create the ESP + dd if=/dev/zero of=${ESP_IMAGE}.img bs=1024K count=${IMAGE_SIZE} + mformat -i ${ESP_IMAGE}.img -v ESP :: + + mmd -i ${ESP_IMAGE}.img ::/EFI + mmd -i ${ESP_IMAGE}.img ::/EFI/BOOT + + add_to_image ${ESP_IMAGE}.img ${part0} /EFI/BOOT/BOOTAA64.EFI + add_to_image ${ESP_IMAGE}.img ${part1} /EFI/BOOT/grub.cfg + add_to_image ${ESP_IMAGE}.img ${part2} /morello.dtb + add_to_image ${ESP_IMAGE}.img ${part3} /Image + add_to_image ${ESP_IMAGE}.img ${part4} /initramfs + + : > ${OUTPUTS_NAME}.img + truncate --size="$(mult ${IMAGE_SIZE} 3)M" ${OUTPUTS_NAME}.img + + create_gpt ${OUTPUTS_NAME}.img ${ESP_IMAGE}.img /home/pawel/Code/ArmMorello/linux/output/root.img + install ${OUTPUTS_NAME}.img ${D}/${OUTPUTS_NAME}.img +} + +do_deploy() { + install ${D}/${OUTPUTS_NAME}.img ${DEPLOYDIR}/${OUTPUTS_NAME}-${MORELLO_ARCH}-${TCLIBC}.img +} +addtask deploy after do_install \ No newline at end of file diff --git a/recipes-morello/images/morello-linux-musl/files/init.sh b/recipes-morello/images/morello-linux-musl/files/init.sh new file mode 100644 index 0000000..7c1aa8d --- /dev/null +++ b/recipes-morello/images/morello-linux-musl/files/init.sh @@ -0,0 +1,33 @@ +#!/bin/busybox sh + +# Copyright (c) 2021 Arm Limited. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause + +mount() { + /bin/busybox mount "$@" +} + +grep() { + /bin/busybox grep "$@" +} + +echo "Running init script" + +mount -t proc proc /proc +grep -qE $'\t'"devtmpfs$" /proc/filesystems && mount -t devtmpfs dev /dev +mount -t sysfs sysfs /sys + +echo "Installing busybox" + +/bin/busybox --install -s + +! grep -qE $'\t'"devtmpfs$" /proc/filesystems && mdev -s + +ulimit -c unlimited + +echo "/bin/sh as PID 1!" +echo "init.sh" +exec setsid cttyhack sh +echo setsid ctty hack failed so "exec /bin/sh" fallback will be used +exec /bin/sh diff --git a/recipes-morello/images/morello-linux-musl/files/initramfs.list.template b/recipes-morello/images/morello-linux-musl/files/initramfs.list.template new file mode 100644 index 0000000..3da25be --- /dev/null +++ b/recipes-morello/images/morello-linux-musl/files/initramfs.list.template @@ -0,0 +1,18 @@ +dir /bin 755 0 0 +dir /include 755 0 0 +dir /lib 755 0 0 +dir /share 755 0 0 +dir /dev 755 0 0 +dir /proc 755 0 0 +dir /sbin 755 0 0 +dir /sys 755 0 0 +dir /newroot 755 0 0 +dir /usr 755 0 0 +dir /usr/lib 755 0 0 +dir /usr/bin 755 0 0 +dir /etc 755 0 0 + +dir /%APP_DIR% 755 0 0 + +file /bin/busybox .%BUSYBOX%/busybox 755 0 0 +file /init .%FILES%/init.sh 755 0 0 \ No newline at end of file
Add scripts for all 3 machines and a common base.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- kas/base.yml | 31 +++++++++++++++++++++++++++++++ kas/morello-bsp.yml | 7 +++++++ kas/morello-linux-glibc.yml | 7 +++++++ kas/morello-linux-musl.yml | 7 +++++++ 4 files changed, 52 insertions(+) create mode 100644 kas/base.yml create mode 100644 kas/morello-bsp.yml create mode 100644 kas/morello-linux-glibc.yml create mode 100644 kas/morello-linux-musl.yml
diff --git a/kas/base.yml b/kas/base.yml new file mode 100644 index 0000000..a9eac79 --- /dev/null +++ b/kas/base.yml @@ -0,0 +1,31 @@ +header: + version: 11 +distro: "" +repos: + poky: + url: "https://git.yoctoproject.org/git/poky" + refspec: kirkstone + layers: + meta: + meta-poky: + meta-yocto-bsp: excluded + meta-arm: + path: poky/meta-arm + url: "https://git.yoctoproject.org/git/meta-arm" + refspec: kirkstone + layers: + meta-arm: + meta-arm-bsp: + meta-arm-toolchain: + meta-morello: + path: poky/meta-morello + url: "https://github.com/The-Good-Penguin/meta-morello" + refspec: kirkstone +bblayers_conf_header: + custom-local-conf: | + LCONF_VERSION = "7" + + YOCTOROOT := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}" +local_conf_header: + base: | + CONF_VERSION = "2" \ No newline at end of file diff --git a/kas/morello-bsp.yml b/kas/morello-bsp.yml new file mode 100644 index 0000000..da5a612 --- /dev/null +++ b/kas/morello-bsp.yml @@ -0,0 +1,7 @@ +header: + version: 11 + includes: + - base.yml +machine: morello-bsp +target: + - board-firmware-image \ No newline at end of file diff --git a/kas/morello-linux-glibc.yml b/kas/morello-linux-glibc.yml new file mode 100644 index 0000000..752cc8f --- /dev/null +++ b/kas/morello-linux-glibc.yml @@ -0,0 +1,7 @@ +header: + version: 11 + includes: + - base.yml +machine: morello-linux-glibc +target: + - morello-linux-image \ No newline at end of file diff --git a/kas/morello-linux-musl.yml b/kas/morello-linux-musl.yml new file mode 100644 index 0000000..78ff56f --- /dev/null +++ b/kas/morello-linux-musl.yml @@ -0,0 +1,7 @@ +header: + version: 11 + includes: + - base.yml +machine: morello-linux-musl +target: + - morello-linux-image \ No newline at end of file
Add README.md with references and instructions of usage.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 README.md
diff --git a/README.md b/README.md new file mode 100644 index 0000000..292b836 --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +meta-morello +============== + +Meta-morello provides the layer required to build the firmware that lives on the SD card and a Morello enabled +Linux kernel for the Morello System Development Platform. + +Use the provided kas scripts to get all of the dependencies. +Read on how to get and use kas here [1] + +Booting the hardware +-------------------- + +For information on how to boot the hardware and how the hardware is booting see [2] and [3]. + +Machines +-------- + +The machines have been split into: +- morello-bsp for the SD card +- morello-linux-musl for the Linux image with musl being the only libc +- morello-linux-glibc for the Linux image with an arbitrary Yocto image as the rootfs (not switching to it though, not tested) + +Building images +-------------------- +$ cd poky +$ TEMPLATECONF=meta-morello/conf . oe-init-build-env build +$ MACHINE=morello-bsp bitbake board-firmware-image + +then: + +$ TEMPLATECONF=meta-morello/conf . oe-init-build-env build +$ MACHINE=morello-linux-musl bitbake morello-linux-image + +or (mutually exclusive) + +$ TEMPLATECONF=meta-morello/conf . oe-init-build-env build +$ MACHINE=morello-linux-glibc bitbake morello-linux-image + +Alternatively one can use the kas scrips: + +kas build ./kas/morello-bsp.yml +kas build ./kas/morello-linux-glibc.yml + +Images +------ + +The outputs can be found under build/temp/deploy/images: +- board-firmware-sd-image.img goes on the SD card via DD +- morello-linux-image-...img goes on a drive (USB or other) via DD +- you do need to build the board-firmware-image to be able to build the morello-linux-image + +Linux and musl-libc +------------------- + +The linux kernel and musl-libc are locked in sync so that the release tags from upstream always match. + +Known limitations +----------------- + +- the current state of this layer is meant to be just a starting point and foundation for further development, the main aim was to have working Linux images ASAP for the community, do not expect elegant Yocto solutions yet +- Yocto packaging is disabled for the Morello apps due to not fully implemented toolchain (llvm-morello is an overrride bootstrap of the env variables), one of the packaging classes will drop an error as it expects a target_prefix-objcopy being available for example (in theory only applies to linux-morello-musl machine, have not tested if one can package Morello apps onto standard Yocto rootfs images) +- it follows that the final image is assembled manually +- the rtl_nic driver is missing + +Adding new recipes +------------------ + +Follow the coding style found in other layers, the aim here is to keep them consistent where possible +and very easy to read. Follow the order found in the "headers" of each recipe and in general. + +.bb recipes that come from Morello gitlab and are Morello "edits"" of upstream inherit the name Morello in the recipe: package-name-morello +.bbappends do not need to do this even if they come from Morello gitlab as they would only change SRC_URI + +Whether to append or start a new recipe is up to the designer, whatever is the easiest. + +Mailing list +------------ + +https://op-lists.linaro.org/mailman3/lists/linux-morello-distros.op-lists.li... + +References +---------- + +[1] https://kas.readthedocs.io/en/latest/ \ +[2] https://developer.arm.com/documentation/den0132/0100/Setting-up-the-Morello-... \ +[3] https://developer.arm.com/documentation/102278/0001/?lang=en
On 20/12/2022 16:29, Pawel Zalewski wrote:
|diff --git a/recipes-devtools/llvm/llvm-morello.inc b/recipes-devtools/llvm/llvm-morello.inc new file mode 100644 index 0000000..8291017 --- /dev/null +++ b/recipes-devtools/llvm/llvm-morello.inc @@ -0,0 +1,136 @@ + + +SUMMARY = "CHERI enabled Linux kernel"|
Looks like this line got swapped with the DESCRIPTION line in patch 8 :)
Kevin
linux-morello-distros@op-lists.linaro.org