From c84cadebddc6acd0663b745a7f19c179f192b800 Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Tue, 1 Sep 2020 10:38:19 -0700 Subject: [PATCH 01/11] Fix #182 by making Linux to be rebuilt when image build (#206) Sysroot changes were not picked up by CMake because add_custom_command does not run the dependent target. We change it to depend on an actual file, instead of target "sysroot" --- CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae4fae1e4..b9d9ba4bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,11 +189,9 @@ if(initramfs) execute_process(COMMAND id -g OUTPUT_VARIABLE gid) string(STRIP ${gid} gid) add_custom_command(OUTPUT ${initramfs_sysroot} COMMAND mkdir -p ${initramfs_sysroot}) - add_custom_target("sysroot" DEPENDS "buildroot" ${initramfs_sysroot} ${overlay_dir} + add_custom_command(OUTPUT ${linux_vmlinux_stripped} ${linux_vmlinux} DEPENDS ${initramfs_sysroot} ${linux_srcdir} "linux-symvers" "buildroot" ${buildroot_wrkdir}/images/rootfs.tar COMMAND tar -xpf ${buildroot_wrkdir}/images/rootfs.tar -C ${initramfs_sysroot} --exclude ./dev --exclude ./usr/share/locale COMMAND echo "::sysinit:/bin/mount -t devtmpfs devtmpfs /dev" >> ${initramfs_sysroot}/etc/inittab - ) - add_custom_command(OUTPUT ${linux_vmlinux_stripped} ${linux_vmlinux} DEPENDS "sysroot" ${linux_srcdir} "linux-symvers" COMMAND $(MAKE) -C ${linux_srcdir} O=${linux_wrkdir} CONFIG_INITRAMFS_SOURCE="${confdir}/initramfs.txt ${initramfs_sysroot}" CONFIG_INITRAMFS_ROOT_UID=${uid} CONFIG_INITRAMFS_ROOT_GID=${gid} @@ -281,7 +279,7 @@ add_custom_target("tests" DEPENDS examples ${overlay_root} ## COMPONENT: image ############################################################################### -add_custom_target("image-deps" DEPENDS "tests" "driver" +add_custom_target("image-deps" DEPENDS "tests" "driver" ${overlay_root} COMMAND find ${driver_wrkdir} -name "*.ko" -exec cp {} ${overlay_root} \\\\; ) add_custom_target("image" DEPENDS "buildroot" "sm" From ba90c921a19208fac0e020a06eaaca8e64edfbe5 Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Wed, 2 Sep 2020 14:07:31 -0700 Subject: [PATCH 02/11] Git shallow clone does not work in fast-setup.sh (#207) --- fast-setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fast-setup.sh b/fast-setup.sh index 885311a6b..4cfb10dcc 100755 --- a/fast-setup.sh +++ b/fast-setup.sh @@ -43,13 +43,13 @@ echo "Updating and cloning submodules, this may take a long time" git config submodule.riscv-gnu-toolchain.update none # shallow clone submodules ahead of time (Git must be > 2.11) -if [ ! -d linux ]; then +if [ ! -e linux/.git ]; then git clone --shallow-since=2019-09-14 https://github.com/torvalds/linux.git linux fi -if [ ! -d buildroot ]; then +if [ ! -e buildroot/.git ]; then git clone --shallow-since=2019-08-29 https://github.com/buildroot/buildroot.git buildroot fi -if [ ! -d qemu ]; then +if [ ! -e qemu/.git ]; then git clone --shallow-since=2018-08-14 https://github.com/qemu/qemu.git qemu fi From b6bcb7177fefdc7502c83661de8ebe527df56ce2 Mon Sep 17 00:00:00 2001 From: Alex Thomas Date: Fri, 16 Oct 2020 09:44:22 -0700 Subject: [PATCH 03/11] Add RV32 support (#213) * Add RV32 Linux/Buildroot * Modify bootrom * Add RV32-related scripts (source32.sh, rv32-setup.sh) * Bump SDK to be able to compile with RV32 * Bump driver * Bump riscv-pk * Bump QEMU * Create document (Running-Keystone-on-RV32.rst) Co-authored-by: Dayeol Lee --- .prebuilt_tools_shasums | 1 + CMakeLists.txt | 8 ++- bootrom/Makefile | 9 ++- bootrom/bootloader.S | 22 +++++--- conf/linux32-defconfig | 3 +- conf/qemu_riscv32_virt_defconfig | 2 +- .../Running-Keystone-on-RV32.rst | 54 ++++++++++++++++++ linux-keystone-driver | 2 +- patches/linux/linux32.patch | 56 +++++++++---------- qemu | 2 +- riscv-pk | 2 +- rv32-setup.sh | 31 ++++++++++ sdk | 2 +- source32.sh | 3 + 14 files changed, 149 insertions(+), 48 deletions(-) create mode 100644 docs/source/Getting-Started/Running-Keystone-on-RV32.rst create mode 100755 rv32-setup.sh create mode 100644 source32.sh diff --git a/.prebuilt_tools_shasums b/.prebuilt_tools_shasums index 4af4791ed..b27343436 100644 --- a/.prebuilt_tools_shasums +++ b/.prebuilt_tools_shasums @@ -1,2 +1,3 @@ 05211edea5a47ebaf906ef4bed2c9609a93e8c6ad5e45f8c87678eabbfd424e7 1.0.tar.gz bdc9e3ec47ac461ecc7865609fda6b820439c36130e9da9275af010d9f4fe4bc 2.0.tar.gz +e73fa1191ce97be2531401d4628384c321c45ca5e4c83756e8415f2cc31a0b18 rv32gc.tar.gz diff --git a/CMakeLists.txt b/CMakeLists.txt index b9d9ba4bf..ecaf49308 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,9 +155,11 @@ add_custom_command(DEPENDS ${buildroot_config} OUTPUT ${buildroot_wrkdir}/.confi ############################################################################### add_custom_command(OUTPUT ${bootrom_wrkdir} COMMAND mkdir -p ${bootrom_wrkdir}) -add_custom_target("bootrom" ALL - COMMAND $(MAKE) -C ${bootrom_srcdir} O=${bootrom_wrkdir} - DEPENDS ${bootrom_wrkdir} ${bootrom_srcdir} +add_custom_target("bootrom-sync" DEPENDS ${bootrom_srcdir} ${bootrom_wrkdir} + COMMAND rsync -r ${bootrom_srcdir}/ ${bootrom_wrkdir}) +add_custom_target("bootrom" ALL DEPENDS ${bootrom_wrkdir} ${bootrom_srcdir} "bootrom-sync" + COMMAND $(MAKE) -C ${bootrom_wrkdir} O=${bootrom_wrkdir} march=${ISA} mabi=${ABI} CC=riscv${BITS}-unknown-elf-gcc + OBJCOPY=riscv${BITS}-unknown-elf-objcopy COMMENT "Building bootrom" ) diff --git a/bootrom/Makefile b/bootrom/Makefile index b5a020816..9850b4a7a 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -1,7 +1,10 @@ -CC = riscv64-unknown-elf-gcc -OBJCOPY= riscv64-unknown-elf-objcopy +march ?= rv64imafdc +mabi ?= lp64 +CC ?= riscv64-unknown-elf-gcc +OBJCOPY ?= riscv64-unknown-elf-objcopy + CFLAGS = \ - -march=rv64imafdc -mcmodel=medany -mabi=lp64 \ + -march=$(march) -mcmodel=medany -mabi=$(mabi) \ -nostdlib -nostartfiles -fno-common -std=gnu11 \ -static \ -fPIC \ diff --git a/bootrom/bootloader.S b/bootrom/bootloader.S index 037f95b29..62db0af93 100644 --- a/bootrom/bootloader.S +++ b/bootrom/bootloader.S @@ -4,17 +4,25 @@ #define DTB 0 #define INIT 8 +#if __riscv_xlen == 64 +# define STORE sd +# define LOAD ld +#else +# define STORE sw +# define LOAD lw +#endif + reset: li sp, STACK_TOP addi sp, sp, -16 - sd x0, INIT(sp) + STORE x0, INIT(sp) csrr t0, mhartid bnez t0, loop - + # sd a1, DTB(sp) - + /* secure boot */ call bootloader @@ -22,17 +30,17 @@ reset: li t1, STACK_BOTTOM clean_loop: beq t1, sp, clean_done - sd x0, (t1) + STORE x0, (t1) addi t1, t1, 8 j clean_loop clean_done: li t0, 1 - sd t0, INIT(sp) + STORE t0, INIT(sp) fence boot: call clear_all_but_sp - + # boot payload csrr a0, mhartid la a1, _dtb @@ -41,7 +49,7 @@ boot: jr t0 loop: - ld t1, INIT(sp) + LOAD t1, INIT(sp) beqz t1, loop j boot diff --git a/conf/linux32-defconfig b/conf/linux32-defconfig index 9de3b6cad..9b5fcbc1c 100644 --- a/conf/linux32-defconfig +++ b/conf/linux32-defconfig @@ -19,7 +19,7 @@ CONFIG_MODULES=y CONFIG_CMA=y CONFIG_CMA_AREAS=7 CONFIG_DMA_CMA=y -CONFIG_CMA_SIZE_MBYTES=1024 +CONFIG_CMA_SIZE_MBYTES=512 CONFIG_CMA_SIZE_SEL_MBYTES=y CONFIG_CMA_ALIGNMENT-9 CONFIG_MODULE_UNLOAD=y @@ -39,6 +39,7 @@ CONFIG_PCIEPORTBUS=y CONFIG_PCI_HOST_GENERIC=y CONFIG_PCIE_XILINX=y CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y CONFIG_BLK_DEV_LOOP=y CONFIG_VIRTIO_BLK=y CONFIG_BLK_DEV_SD=y diff --git a/conf/qemu_riscv32_virt_defconfig b/conf/qemu_riscv32_virt_defconfig index ada5fb7d9..4bd98aa16 100644 --- a/conf/qemu_riscv32_virt_defconfig +++ b/conf/qemu_riscv32_virt_defconfig @@ -32,7 +32,7 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_ROOTFS_OVERLAY="" # Linux headers same as kernel, a 5.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y # Kernel # BR2_LINUX_KERNEL=y diff --git a/docs/source/Getting-Started/Running-Keystone-on-RV32.rst b/docs/source/Getting-Started/Running-Keystone-on-RV32.rst new file mode 100644 index 000000000..2dcc94e6d --- /dev/null +++ b/docs/source/Getting-Started/Running-Keystone-on-RV32.rst @@ -0,0 +1,54 @@ +.. + +Running Keystone in RV32 +-------------------------------------- + +Currently we support running Keystone using all three priviledges, which are Machine, Supervisor, and User mode (M/S/U). Currently, we are working on a Machine and User mode \ +implementation on Keystone to better support embedded systems. + +Setup RV32 Environment +############################# + +First, run the ``rv32-setup.sh`` script (located at the top-level directory) to install the RV32 toolchain (which uses the GC extensions). + +:: + + ./rv32-setup.sh + +This script will unzip and install the RV32 toolchain and store it in ``./riscv32``. The script will also set the ``$RISCV`` environment variable to point to the ``riscv32`` \ +directory. We strongly recommend adding the following to your ``.bashrc``. + +:: + + export RISCV=$(pwd)/riscv32 + export PATH=$RISCV/bin:$PATH + +Build SDK in RV32 +############################# + +We will now have to build the SDK in RV32. Go to your SDK directory and create a build directory. Remember to set your SDK path + +:: + + mkdir + cd + export KEYSTONE_SDK_DIR= + cmake .. -DRISCV32=y + make + make install + +This will build the SDK in RV32. + +Build Keystone in RV32 +############################# + +Similar to the SDK, we may now build the entire Keystone framework in RV32. First, create a build directory and specify the RV32 flag. + +:: + + mkdir + cd + cmake .. -DRISCV32=y + make + +This will begin building Keystone in RV32. diff --git a/linux-keystone-driver b/linux-keystone-driver index 8b1c27ec6..a0ba65016 160000 --- a/linux-keystone-driver +++ b/linux-keystone-driver @@ -1 +1 @@ -Subproject commit 8b1c27ec60eb89a1b2f656e7d51fe6004ae429f3 +Subproject commit a0ba65016e0c52e068f637d78c2571540acc75be diff --git a/patches/linux/linux32.patch b/patches/linux/linux32.patch index 82dd02133..c16bbfa26 100644 --- a/patches/linux/linux32.patch +++ b/patches/linux/linux32.patch @@ -1,38 +1,39 @@ diff --git arch/riscv/Kconfig arch/riscv/Kconfig -index eb56c82d8a..43dd2680c6 100644 +index 59a4727ecd..b9154739b3 100644 --- arch/riscv/Kconfig +++ arch/riscv/Kconfig -@@ -11,6 +11,7 @@ - +@@ -12,6 +12,7 @@ config 32BIT + config RISCV - def_bool y -+ select ARCH_32BIT_OFF_T if !64BIT - # even on 32-bit, physical (and DMA) addresses are > 32-bits - select PHYS_ADDR_T_64BIT - select OF + def_bool y ++ select ARCH_32BIT_OFF_T if !64BIT + # even on 32-bit, physical (and DMA) addresses are > 32-bits + select PHYS_ADDR_T_64BIT + select OF diff --git arch/riscv/include/uapi/asm/unistd.h arch/riscv/include/uapi/asm/unistd.h -index 0e2eeeb1fd..486a288b45 100644 +index 13ce76cc5a..95217ebb63 100644 --- arch/riscv/include/uapi/asm/unistd.h +++ arch/riscv/include/uapi/asm/unistd.h -@@ -17,8 +17,11 @@ - +@@ -17,9 +17,12 @@ + #ifdef __LP64__ #define __ARCH_WANT_NEW_STAT -#define __ARCH_WANT_SET_GET_RLIMIT + #define __ARCH_WANT_SYS_CLONE3 #endif /* __LP64__ */ +#define __ARCH_WANT_SET_GET_RLIMIT +#ifndef __LP64__ +#define __ARCH_WANT_TIME32_SYSCALLS +#endif - + #include - + diff --git arch/riscv/kernel/vdso/Makefile arch/riscv/kernel/vdso/Makefile -index fec62b24df..eed1c137f6 100644 +index 49a5852fd0..725dfe8c93 100644 --- arch/riscv/kernel/vdso/Makefile +++ arch/riscv/kernel/vdso/Makefile -@@ -2,11 +2,9 @@ - +@@ -3,11 +3,9 @@ + # Symbols present in the vdso vdso-syms = rt_sigreturn -ifdef CONFIG_64BIT @@ -42,25 +43,22 @@ index fec62b24df..eed1c137f6 100644 -endif vdso-syms += getcpu vdso-syms += flush_icache - + diff --git arch/riscv/mm/init.c arch/riscv/mm/init.c -index 573463d..be1f2c4 100644 +index 42bf939693..49d7da7d86 100644 --- arch/riscv/mm/init.c +++ arch/riscv/mm/init.c -@@ -19,6 +19,8 @@ - #include - #include - +@@ -11,6 +11,7 @@ + #include + #include + #include +#include -+ - #include "../kernel/head.h" - unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] -@@ -457,6 +459,7 @@ void __init paging_init(void) - sparse_init(); + #include + #include +@@ -444,4 +445,5 @@ void __init paging_init(void) + setup_vm_final(); setup_zero_page(); zone_sizes_init(); + dma_contiguous_reserve(memblock_end_of_DRAM()); } - - #ifdef CONFIG_SPARSEMEM_VMEMMAP diff --git a/qemu b/qemu index 9e06029ae..146aa0f10 160000 --- a/qemu +++ b/qemu @@ -1 +1 @@ -Subproject commit 9e06029aea3b2eca1d5261352e695edc1e7d7b8b +Subproject commit 146aa0f104bb3bf88e43c4082a0bfc4bbda4fbd8 diff --git a/riscv-pk b/riscv-pk index b970b10a5..f855a56f9 160000 --- a/riscv-pk +++ b/riscv-pk @@ -1 +1 @@ -Subproject commit b970b10a506e3c821cf82969add6194b2f1580c0 +Subproject commit f855a56f919142a0fa9987be79a3c1ad09384e66 diff --git a/rv32-setup.sh b/rv32-setup.sh new file mode 100755 index 000000000..5f1d553c5 --- /dev/null +++ b/rv32-setup.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e + +echo "Starting RV32 Instllation..." + +if ( $(command -v riscv32-unknown-linux-gnu-gcc > /dev/null) && + $(command -v riscv32-unknown-elf-gcc > /dev/null) ) +then + echo "RISCV32 tools are already installed" +else + echo "Downloading Prebuilt RISC-V 32 Toolchain... " + + export RISCV32=$(pwd)/riscv32 + export PATH=$PATH:$RISCV32/bin + wget https://keystone-enclave.eecs.berkeley.edu/files/rv32gc.tar.gz + + # Check tool integrity + echo "Verifying prebuilt toolchain integrity..." + sha256sum -c .prebuilt_tools_shasums --status --ignore-missing + if [[ $? != 0 ]] + then + echo "Toolchain binary download incomplete or corrupted. You can build the toolchain locally or try again." + exit 1 + fi + + tar -xzvf rv32gc.tar.gz + mv riscv32gc riscv32 + rm rv32gc.tar.gz + echo "Toolchain has been installed in $RISCV32" +fi diff --git a/sdk b/sdk index 67b4fa230..ac1a4f7e3 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 67b4fa2303939f540477dc02864ca033acbcca62 +Subproject commit ac1a4f7e3a0227090879207bb8d309ad72e2554d diff --git a/source32.sh b/source32.sh new file mode 100644 index 000000000..4c7162a81 --- /dev/null +++ b/source32.sh @@ -0,0 +1,3 @@ +export RISCV=$(pwd)/riscv32 +export PATH=$RISCV/bin:$PATH +export KEYSTONE_SDK_DIR=$(pwd)/sdk/build From e448fa323ae28ec09acea85a3e544aa8f70f2bee Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Mon, 19 Oct 2020 13:57:52 -0700 Subject: [PATCH 04/11] Integrate with FireMarshal (w/ Chipyard) (#208) Keystone software stack has been integrated with FireMarshal which is a software management tool for FireSim in Chipyard (https://chipyard.readthedocs.io/) Now Keystone can be built with FireMarshal using the following workload config: https://github.com/keystone-enclave/firemarshal-keystone * Add target "patch" for applying patches without building * Bump Linux 5.6 * Bump Linux driver (includes compatibility fixes for 5.6) * Removed defconfig for FireSim because it's now in firemarshal-keystone workload config * Update Documentation for FireSim --- CMakeLists.txt | 5 +- conf/linux64-firesim-defconfig | 3183 ----------------- .../Running-Keystone-with-FireSim.rst | 178 +- linux | 2 +- linux-keystone-driver | 2 +- 5 files changed, 86 insertions(+), 3284 deletions(-) delete mode 100644 conf/linux64-firesim-defconfig diff --git a/CMakeLists.txt b/CMakeLists.txt index ecaf49308..a08050c8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -183,7 +183,6 @@ else() add_patch("linux" "linux${BITS}.patch" ${linux_srcdir} linux_patches) endif() - if(initramfs) # linux-initramfs execute_process(COMMAND id -u OUTPUT_VARIABLE uid) @@ -290,6 +289,10 @@ add_custom_target("image" DEPENDS "buildroot" "sm" ) add_dependencies("buildroot" "image-deps") +############################################################################### +## PATCH +############################################################################### +add_custom_target("patch" DEPENDS ${qemu_patches} ${linux_patches} ${sm_patches}) ############################################################################### ## QEMU scripts diff --git a/conf/linux64-firesim-defconfig b/conf/linux64-firesim-defconfig deleted file mode 100644 index 73c0111a5..000000000 --- a/conf/linux64-firesim-defconfig +++ /dev/null @@ -1,3183 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# Linux/riscv 5.3.0 Kernel Configuration -# - -# -# Compiler: riscv64-unknown-linux-gnu-gcc (GCC) 7.2.0 -# -CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=70200 -CONFIG_CLANG_VERSION=0 -CONFIG_CC_CAN_LINK=y -CONFIG_CC_HAS_ASM_GOTO=y -CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y -CONFIG_IRQ_WORK=y -CONFIG_THREAD_INFO_IN_TASK=y - -# -# General setup -# -CONFIG_INIT_ENV_ARG_LIMIT=32 -# CONFIG_COMPILE_TEST is not set -# CONFIG_HEADER_TEST is not set -CONFIG_LOCALVERSION="" -CONFIG_LOCALVERSION_AUTO=y -CONFIG_BUILD_SALT="" -CONFIG_DEFAULT_HOSTNAME="ucbvax" -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -CONFIG_POSIX_MQUEUE=y -CONFIG_POSIX_MQUEUE_SYSCTL=y -CONFIG_CROSS_MEMORY_ATTACH=y -# CONFIG_USELIB is not set -# CONFIG_AUDIT is not set -CONFIG_HAVE_ARCH_AUDITSYSCALL=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_IRQ_DOMAIN=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_SPARSE_IRQ=y -# CONFIG_GENERIC_IRQ_DEBUGFS is not set -# end of IRQ subsystem - -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -CONFIG_GENERIC_CLOCKEVENTS=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 is not set -CONFIG_HIGH_RES_TIMERS=y -# end of Timers subsystem - -CONFIG_PREEMPT_NONE=y -# CONFIG_PREEMPT_VOLUNTARY is not set -# CONFIG_PREEMPT is not set - -# -# CPU/Task time and stats accounting -# -CONFIG_TICK_CPU_ACCOUNTING=y -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_PSI is not set -# end of CPU/Task time and stats accounting - -CONFIG_CPU_ISOLATION=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y -CONFIG_TREE_SRCU=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_GENERIC_SCHED_CLOCK=y - -# -# Scheduler features -# -# end of Scheduler features - -CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_CGROUPS=y -# CONFIG_MEMCG is not set -# CONFIG_BLK_CGROUP is not set -CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -# CONFIG_RT_GROUP_SCHED is not set -# CONFIG_CGROUP_PIDS is not set -# CONFIG_CGROUP_RDMA is not set -# CONFIG_CGROUP_FREEZER is not set -# CONFIG_CPUSETS is not set -# CONFIG_CGROUP_DEVICE is not set -# CONFIG_CGROUP_CPUACCT is not set -# CONFIG_CGROUP_PERF is not set -CONFIG_CGROUP_BPF=y -# CONFIG_CGROUP_DEBUG is not set -CONFIG_SOCK_CGROUP_DATA=y -CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_IPC_NS=y -CONFIG_USER_NS=y -CONFIG_PID_NS=y -CONFIG_NET_NS=y -CONFIG_CHECKPOINT_RESTORE=y -# CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SYSFS_DEPRECATED is not set -# CONFIG_RELAY is not set -# CONFIG_INITRAMFS_FORCE 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_INITRAMFS_COMPRESSION_NONE is not set -# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set -# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set -# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set -# CONFIG_INITRAMFS_COMPRESSION_XZ is not set -# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set -CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_SYSCTL=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_BPF=y -CONFIG_EXPERT=y -CONFIG_MULTIUSER=y -# CONFIG_SGETMASK_SYSCALL is not set -CONFIG_SYSFS_SYSCALL=y -# CONFIG_SYSCTL_SYSCALL is not set -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_HAVE_FUTEX_CMPXCHG=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 is not set -CONFIG_KALLSYMS_BASE_RELATIVE=y -CONFIG_BPF_SYSCALL=y -# CONFIG_USERFAULTFD is not set -# CONFIG_EMBEDDED is not set -CONFIG_HAVE_PERF_EVENTS=y -# CONFIG_PC104 is not set - -# -# 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=y -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -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 is not set -# end of General setup - -CONFIG_64BIT=y -CONFIG_RISCV=y -CONFIG_MMU=y -CONFIG_ZONE_DMA32=y -CONFIG_PAGE_OFFSET=0xffffffe000000000 -CONFIG_ARCH_WANT_GENERAL_HUGETLB=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_CSUM=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_PGTABLE_LEVELS=3 - -# -# SoC selection -# -CONFIG_SOC_SIFIVE=y -# end of SoC selection - -# -# Platform type -# -# CONFIG_ARCH_RV32I is not set -CONFIG_ARCH_RV64I=y -# CONFIG_CMODEL_MEDLOW is not set -CONFIG_CMODEL_MEDANY=y -CONFIG_MODULE_SECTIONS=y -# CONFIG_MAXPHYSMEM_2GB is not set -CONFIG_MAXPHYSMEM_128GB=y -CONFIG_SMP=y -CONFIG_NR_CPUS=8 -CONFIG_TUNE_GENERIC=y -# CONFIG_RISCV_ISA_C is not set - -# -# supported PMU type -# -CONFIG_RISCV_BASE_PMU=y -# end of supported PMU type - -CONFIG_FPU=y -# end of Platform type - -# -# Kernel features -# -# 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 -# end of Kernel features - -# -# Boot options -# -CONFIG_CMDLINE="console=hvc0 earlycon=sbi cma=1024M@0-4G" -# CONFIG_CMDLINE_FALLBACK is not set -# CONFIG_CMDLINE_EXTEND is not set -CONFIG_CMDLINE_FORCE=y -# end of Boot options - -# -# Power management options -# -CONFIG_PM=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_CLK=y -# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set -# end of Power management options - -# -# General architecture-dependent options -# -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_HAVE_CLK=y -CONFIG_CC_HAS_STACKPROTECTOR_NONE=y -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_64BIT_TIME=y -# CONFIG_REFCOUNT_FULL is not set -# CONFIG_LOCK_EVENT_COUNTS is not set - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -# end of GCOV-based kernel profiling - -CONFIG_PLUGIN_HOSTCC="g++" -# 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 is not set -# CONFIG_TRIM_UNUSED_KSYMS is not set -CONFIG_MODULES_TREE_LOOKUP=y -CONFIG_BLOCK=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BLK_DEV_BSG=y -# CONFIG_BLK_DEV_BSGLIB is not set -# CONFIG_BLK_DEV_INTEGRITY is not set -# CONFIG_BLK_DEV_ZONED is not set -# CONFIG_BLK_CMDLINE_PARSER is not set -# CONFIG_BLK_WBT is not set -CONFIG_BLK_DEBUG_FS=y -# CONFIG_BLK_SED_OPAL is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_AIX_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -# CONFIG_CMDLINE_PARTITION is not set -# end of Partition Types - -CONFIG_BLK_MQ_PCI=y -CONFIG_BLK_MQ_VIRTIO=y -CONFIG_BLK_PM=y - -# -# IO Schedulers -# -CONFIG_MQ_IOSCHED_DEADLINE=y -CONFIG_MQ_IOSCHED_KYBER=y -# CONFIG_IOSCHED_BFQ is not set -# end of IO Schedulers - -CONFIG_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_INLINE_READ_UNLOCK=y -CONFIG_INLINE_READ_UNLOCK_IRQ=y -CONFIG_INLINE_WRITE_UNLOCK=y -CONFIG_INLINE_WRITE_UNLOCK_IRQ=y -CONFIG_ARCH_HAS_MMIOWB=y -CONFIG_MMIOWB=y - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_BINFMT_SCRIPT=y -CONFIG_ARCH_HAS_BINFMT_FLAT=y -# CONFIG_BINFMT_FLAT is not set -# CONFIG_BINFMT_MISC is not set -CONFIG_COREDUMP=y -# end of Executable file formats - -# -# Memory Management options -# -CONFIG_FLATMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_MEMORY_BALLOON=y -CONFIG_BALLOON_COMPACTION=y -CONFIG_COMPACTION=y -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -# CONFIG_CLEANCACHE is not set -# CONFIG_FRONTSWAP is not set -CONFIG_CMA=y -CONFIG_CMA_AREAS=7 -CONFIG_DMA_CMA=y -CONFIG_CMA_SIZE_MBYTES=1024 -CONFIG_CMA_SIZE_SEL_MBYTES=y -CONFIG_CMA_ALIGNMENT=9 -# CONFIG_ZPOOL is not set -# CONFIG_ZBUD is not set -# CONFIG_ZSMALLOC is not set -# CONFIG_IDLE_PAGE_TRACKING is not set -# CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set -CONFIG_ARCH_HAS_PTE_SPECIAL=y -# end of Memory Management options - -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_DIAG is not set -CONFIG_UNIX=y -CONFIG_UNIX_SCM=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=y -CONFIG_IP_ADVANCED_ROUTER=y -# CONFIG_IP_FIB_TRIE_STATS is not set -# CONFIG_IP_MULTIPLE_TABLES is not set -# CONFIG_IP_ROUTE_MULTIPATH is not set -# CONFIG_IP_ROUTE_VERBOSE is not set -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE_DEMUX is not set -CONFIG_NET_IP_TUNNEL=y -# CONFIG_IP_MROUTE is not set -# 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_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_NETWORK_SECMARK is not set -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set -# CONFIG_NETFILTER 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_BRIDGE is not set -CONFIG_HAVE_NET_DSA=y -# CONFIG_NET_DSA is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# 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=y -# CONFIG_BATMAN_ADV is not set -# CONFIG_OPENVSWITCH is not set -# CONFIG_VSOCKETS is not set -CONFIG_NETLINK_DIAG=y -# 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_NET_NCSI is not set -CONFIG_RPS=y -CONFIG_RFS_ACCEL=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_JIT is not set -# 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_WIRELESS=y -# CONFIG_CFG80211 is not set - -# -# CFG80211 needs to be enabled for MAC80211 -# -CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set -# CONFIG_RFKILL is not set -# CONFIG_NET_9P 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_FAILOVER=y -CONFIG_HAVE_EBPF_JIT=y - -# -# Device Drivers -# -CONFIG_HAVE_PCI=y -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEBUG is not set -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_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -# CONFIG_PCIE_BW is not set -CONFIG_PCI_MSI=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_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_HOST is not set -# end of Cadence PCIe controllers support - -# CONFIG_PCI_FTPCI100 is not set -CONFIG_PCI_HOST_COMMON=y -CONFIG_PCI_HOST_GENERIC=y -CONFIG_PCIE_XILINX=y - -# -# DesignWare PCI Core Support -# -# end of DesignWare PCI Core 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_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_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y - -# -# Firmware loader -# -CONFIG_FW_LOADER=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER is not set -# CONFIG_FW_LOADER_COMPRESS is not set -# 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_DEVICES=y -CONFIG_DMA_SHARED_BUFFER=y -# CONFIG_DMA_FENCE_TRACE is not set -# end of Generic Driver Options - -# -# Bus devices -# -# CONFIG_SIMPLE_PM_BUS is not set -# end of Bus devices - -# CONFIG_CONNECTOR is not set -# 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_NET=y -CONFIG_OF_MDIO=y -CONFIG_OF_RESERVED_MEM=y -# CONFIG_OF_OVERLAY is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_CDROM=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_BLK_DEV_UMEM is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_DRBD is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_SKD 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_VIRTIO_BLK_SCSI=y -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_BLK_DEV_RSXX is not set - -# -# NVME Support -# -# CONFIG_BLK_DEV_NVME is not set -# CONFIG_NVME_FC is not set -# end of NVME Support - -# -# Misc devices -# -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO is not set -# CONFIG_APDS9802ALS is not set -# CONFIG_ISL29003 is not set -# CONFIG_ISL29020 is not set -# CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set -# CONFIG_SRAM is not set -# CONFIG_PCI_ENDPOINT_TEST is not set -# CONFIG_XILINX_SDFEC is not set -# CONFIG_PVPANIC is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_AT25 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_EEPROM_93XX46 is not set -# CONFIG_EEPROM_IDT_89HPESX is not set -# CONFIG_EEPROM_EE1004 is not set -# end of EEPROM support - -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# end of Texas Instruments shared transport line discipline - -# CONFIG_SENSORS_LIS3_SPI is not set -# CONFIG_SENSORS_LIS3_I2C is not set -# CONFIG_ALTERA_STAPL is not set - -# -# Intel MIC & related support -# - -# -# Intel MIC Bus Driver -# - -# -# SCIF Bus Driver -# - -# -# VOP Bus Driver -# -# CONFIG_VOP_BUS is not set - -# -# Intel MIC Host Driver -# - -# -# Intel MIC Card Driver -# - -# -# SCIF Driver -# - -# -# Intel MIC Coprocessor State Management (COSM) Drivers -# - -# -# VOP Driver -# -# end of Intel MIC & related support - -# CONFIG_GENWQE is not set -# CONFIG_ECHO 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 -# end of Misc devices - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -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=y -# CONFIG_BLK_DEV_SR_VENDOR is not set -# CONFIG_CHR_DEV_SG is not set -# 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_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_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_GDTH 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_ATA=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# -CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 -CONFIG_SATA_AHCI_PLATFORM=y -# 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_ATA_GENERIC is not set -# CONFIG_PATA_LEGACY is not set -# CONFIG_MD 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_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY 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_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 is not set -CONFIG_VIRTIO_NET=y -# CONFIG_NLMON is not set -# CONFIG_ARCNET is not set - -# -# CAIF transport drivers -# - -# -# Distributed Switch Architecture drivers -# -# end of Distributed Switch Architecture drivers - -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_NET_VENDOR_AQUANTIA=y -CONFIG_NET_VENDOR_ARC=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_AURORA=y -# CONFIG_AURORA_NB8800 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_BROCADE=y -# CONFIG_BNA is not set -CONFIG_NET_VENDOR_CADENCE=y -CONFIG_MACB=y -CONFIG_MACB_USE_HWSTAMP=y -# CONFIG_MACB_PCI 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_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_EZCHIP=y -# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set -CONFIG_NET_VENDOR_GOOGLE=y -# CONFIG_GVE is not set -CONFIG_NET_VENDOR_HP=y -# CONFIG_HP100 is not set -CONFIG_NET_VENDOR_HUAWEI=y -CONFIG_NET_VENDOR_I825XX=y -CONFIG_NET_VENDOR_INTEL=y -# CONFIG_E100 is not set -# CONFIG_E1000 is not set -CONFIG_E1000E=y -# 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_MARVELL=y -# CONFIG_MVMDIO is not set -# CONFIG_SKGE is not set -# CONFIG_SKY2 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_NET_VENDOR_MICREL=y -# CONFIG_KS8851 is not set -# CONFIG_KS8851_MLL is not set -# CONFIG_KSZ884X_PCI is not set -CONFIG_NET_VENDOR_MICROCHIP=y -# CONFIG_ENC28J60 is not set -# CONFIG_ENCX24J600 is not set -# CONFIG_LAN743X is not set -CONFIG_NET_VENDOR_MICROSEMI=y -CONFIG_NET_VENDOR_MYRI=y -# CONFIG_MYRI10GE is not set -# CONFIG_FEALNX 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_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET 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_QLOGIC=y -# CONFIG_QLA3XXX is not set -# CONFIG_QLCNIC is not set -# CONFIG_QLGE is not set -# CONFIG_NETXEN_NIC is not set -# CONFIG_QED is not set -CONFIG_NET_VENDOR_QUALCOMM=y -# CONFIG_QCA7000_SPI is not set -# 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_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set -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_SMSC=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_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_FDDI is not set -# CONFIG_HIPPI is not set -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_BUS=y -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set -# CONFIG_MDIO_HISI_FEMAC is not set -# CONFIG_MDIO_MSCC_MIIM is not set -# CONFIG_MDIO_OCTEON is not set -# CONFIG_MDIO_THUNDER is not set -CONFIG_PHYLIB=y -CONFIG_SWPHY=y - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -# CONFIG_AX88796B_PHY is not set -# CONFIG_AT803X_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_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_FIXED_PHY=y -# CONFIG_ICPLUS_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_MARVELL_PHY is not set -# CONFIG_MARVELL_10G_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=y -# CONFIG_NATIONAL_PHY is not set -# CONFIG_NXP_TJA11XX_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_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set -# CONFIG_MICREL_KS8995MA is not set -# 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_WIRELESS_WDS is not set -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_PRISM54 is not set -CONFIG_WLAN_VENDOR_MARVELL=y -CONFIG_WLAN_VENDOR_MEDIATEK=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 - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set -# CONFIG_VMXNET3 is not set -# CONFIG_NETDEVSIM is not set -CONFIG_NET_FAILOVER=y -# CONFIG_ISDN is not set -# CONFIG_NVM is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_FF_MEMLESS is not set -# CONFIG_INPUT_POLLDEV is not set -# CONFIG_INPUT_SPARSEKMAP is not set -# CONFIG_INPUT_MATRIXKMAP is not set - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# 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_ADP5588 is not set -# CONFIG_KEYBOARD_ADP5589 is not set -CONFIG_KEYBOARD_ATKBD=y -# CONFIG_KEYBOARD_QT1050 is not set -# CONFIG_KEYBOARD_QT1070 is not set -# CONFIG_KEYBOARD_QT2160 is not set -# CONFIG_KEYBOARD_DLINK_DIR685 is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_TCA6416 is not set -# CONFIG_KEYBOARD_TCA8418 is not set -# CONFIG_KEYBOARD_LM8333 is not set -# CONFIG_KEYBOARD_MAX7359 is not set -# CONFIG_KEYBOARD_MCS is not set -# CONFIG_KEYBOARD_MPR121 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_CAP11XX 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_SYNAPTICS_SMBUS=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_PS2_SMBUS=y -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set -# CONFIG_MOUSE_CYAPA is not set -# CONFIG_MOUSE_ELAN_I2C is not set -# CONFIG_MOUSE_VSXXXAA is not set -# CONFIG_MOUSE_SYNAPTICS_I2C 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=y -# 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_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_HW_CONSOLE=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=256 -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -# CONFIG_TRACE_SINK is not set -# CONFIG_NULL_TTY is not set -CONFIG_LDISC_AUTOLOAD=y -CONFIG_DEVMEM=y -CONFIG_DEVKMEM=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -# CONFIG_SERIAL_8250_FINTEK is not set -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_EXAR=y -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_ASPEED_VUART is not set -# CONFIG_SERIAL_8250_DW is not set -# CONFIG_SERIAL_8250_RT288X is not set -# CONFIG_SERIAL_8250_MOXA is not set -CONFIG_SERIAL_OF_PLATFORM=y - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_EARLYCON_RISCV_SBI=y -# CONFIG_SERIAL_MAX3100 is not set -# CONFIG_SERIAL_MAX310X 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=y -CONFIG_SERIAL_SIFIVE_CONSOLE=y -# CONFIG_SERIAL_SCCNXP is not set -# CONFIG_SERIAL_SC16IS7XX 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_CONEXANT_DIGICOLOR is not set -# end of Serial drivers - -# CONFIG_SERIAL_DEV_BUS is not set -# CONFIG_TTY_PRINTK is not set -CONFIG_HVC_DRIVER=y -CONFIG_HVC_RISCV_SBI=y -# 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_VIRTIO=y -# CONFIG_APPLICOM is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_TCG_TPM is not set -CONFIG_DEVPORT=y -# CONFIG_XILLYBUS is not set -# end of Character devices - -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y -# CONFIG_I2C_CHARDEV is not set -# CONFIG_I2C_MUX is not set -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_ALGOBIT=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_NVIDIA_GPU is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_DESIGNWARE_PLATFORM is not set -# CONFIG_I2C_DESIGNWARE_PCI is not set -# CONFIG_I2C_EMEV2 is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_PCA_PLATFORM is not set -# CONFIG_I2C_RK3X is not set -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_XILINX is not set - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_DIOLAN_U2C is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_ROBOTFUZZ_OSIF is not set -# CONFIG_I2C_TAOS_EVM is not set -# CONFIG_I2C_TINY_USB is not set - -# -# Other I2C/SMBus bus drivers -# -# end of I2C Hardware Bus support - -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_SLAVE is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# end of I2C support - -# CONFIG_I3C is not set -CONFIG_SPI=y -# CONFIG_SPI_DEBUG is not set -CONFIG_SPI_MASTER=y -# CONFIG_SPI_MEM is not set - -# -# SPI Master Controller Drivers -# -# CONFIG_SPI_ALTERA is not set -# CONFIG_SPI_AXI_SPI_ENGINE is not set -# CONFIG_SPI_BITBANG is not set -# CONFIG_SPI_CADENCE is not set -# CONFIG_SPI_DESIGNWARE is not set -# CONFIG_SPI_NXP_FLEXSPI is not set -# CONFIG_SPI_FSL_SPI is not set -# CONFIG_SPI_PXA2XX is not set -# CONFIG_SPI_ROCKCHIP is not set -# CONFIG_SPI_SC18IS602 is not set -CONFIG_SPI_SIFIVE=y -# CONFIG_SPI_MXIC is not set -# CONFIG_SPI_XCOMM is not set -# CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set - -# -# SPI Protocol Masters -# -# CONFIG_SPI_SPIDEV is not set -# CONFIG_SPI_LOOPBACK_TEST is not set -# CONFIG_SPI_TLE62X0 is not set -# CONFIG_SPI_SLAVE is not set -# CONFIG_SPMI is not set -# CONFIG_HSI is not set -# CONFIG_PPS is not set - -# -# PTP clock support -# -# CONFIG_PTP_1588_CLOCK is not set - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -# end of PTP clock support - -# CONFIG_PINCTRL is not set -# CONFIG_GPIOLIB is not set -# CONFIG_W1 is not set -# CONFIG_POWER_AVS is not set -# CONFIG_POWER_RESET 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_CHARGER_ADP5061 is not set -# CONFIG_BATTERY_DS2780 is not set -# CONFIG_BATTERY_DS2781 is not set -# CONFIG_BATTERY_DS2782 is not set -# CONFIG_BATTERY_SBS is not set -# CONFIG_CHARGER_SBS is not set -# CONFIG_BATTERY_BQ27XXX is not set -# CONFIG_BATTERY_MAX17040 is not set -# CONFIG_BATTERY_MAX17042 is not set -# CONFIG_CHARGER_MAX8903 is not set -# CONFIG_CHARGER_LP8727 is not set -# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -# CONFIG_CHARGER_BQ2415X is not set -# CONFIG_CHARGER_SMB347 is not set -# CONFIG_BATTERY_GAUGE_LTC2941 is not set -CONFIG_HWMON=y -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_AD7314 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7310 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_ASPEED is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX1111 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31722 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6642 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_ADCXX is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM70 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NTC_THERMISTOR is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_SMM665 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS1015 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_ADS7871 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -# CONFIG_SENSORS_INA2XX is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -CONFIG_THERMAL=y -# 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=y -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_DEFAULT_GOV_POWER_ALLOCATOR 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=y -# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set -# CONFIG_THERMAL_EMULATION is not set -# CONFIG_THERMAL_MMIO is not set -# CONFIG_QORIQ_THERMAL 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_ACT8945A is not set -# CONFIG_MFD_AS3711 is not set -# CONFIG_MFD_AS3722 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_ATMEL_FLEXCOM is not set -# CONFIG_MFD_ATMEL_HLCDC is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_BD9571MWV is not set -# CONFIG_MFD_AXP20X_I2C is not set -# CONFIG_MFD_MADERA is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_MFD_DA9052_SPI is not set -# CONFIG_MFD_DA9052_I2C is not set -# CONFIG_MFD_DA9055 is not set -# CONFIG_MFD_DA9062 is not set -# CONFIG_MFD_DA9063 is not set -# CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set -# CONFIG_MFD_MC13XXX_SPI is not set -# CONFIG_MFD_MC13XXX_I2C 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_88PM800 is not set -# CONFIG_MFD_88PM805 is not set -# CONFIG_MFD_88PM860X is not set -# CONFIG_MFD_MAX14577 is not set -# CONFIG_MFD_MAX77620 is not set -# CONFIG_MFD_MAX77650 is not set -# CONFIG_MFD_MAX77686 is not set -# CONFIG_MFD_MAX77693 is not set -# CONFIG_MFD_MAX77843 is not set -# CONFIG_MFD_MAX8907 is not set -# CONFIG_MFD_MAX8925 is not set -# CONFIG_MFD_MAX8997 is not set -# CONFIG_MFD_MAX8998 is not set -# CONFIG_MFD_MT6397 is not set -# CONFIG_MFD_MENF21BMC is not set -# CONFIG_EZX_PCAP is not set -# CONFIG_MFD_CPCAP is not set -# CONFIG_MFD_VIPERBOARD is not set -# CONFIG_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RC5T583 is not set -# CONFIG_MFD_RK808 is not set -# CONFIG_MFD_RN5T618 is not set -# CONFIG_MFD_SEC_CORE is not set -# CONFIG_MFD_SI476X_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_MFD_SKY81452 is not set -# CONFIG_MFD_SMSC is not set -# CONFIG_ABX500_CORE is not set -# CONFIG_MFD_STMPE is not set -# CONFIG_MFD_SYSCON is not set -# CONFIG_MFD_TI_AM335X_TSCADC is not set -# CONFIG_MFD_LP3943 is not set -# CONFIG_MFD_LP8788 is not set -# CONFIG_MFD_TI_LMU is not set -# CONFIG_MFD_PALMAS is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS6507X is not set -# CONFIG_MFD_TPS65086 is not set -# CONFIG_MFD_TPS65090 is not set -# CONFIG_MFD_TPS65217 is not set -# CONFIG_MFD_TI_LP873X is not set -# CONFIG_MFD_TI_LP87565 is not set -# CONFIG_MFD_TPS65218 is not set -# CONFIG_MFD_TPS6586X is not set -# CONFIG_MFD_TPS65912_I2C is not set -# CONFIG_MFD_TPS65912_SPI is not set -# CONFIG_MFD_TPS80031 is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_TWL6040_CORE is not set -# CONFIG_MFD_WL1273_CORE is not set -# CONFIG_MFD_LM3533 is not set -# CONFIG_MFD_TC3589X is not set -# CONFIG_MFD_TQMX86 is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_MFD_LOCHNAGAR is not set -# CONFIG_MFD_ARIZONA_I2C is not set -# CONFIG_MFD_ARIZONA_SPI is not set -# CONFIG_MFD_WM8400 is not set -# CONFIG_MFD_WM831X_I2C is not set -# CONFIG_MFD_WM831X_SPI is not set -# CONFIG_MFD_WM8350_I2C is not set -# CONFIG_MFD_WM8994 is not set -# CONFIG_MFD_ROHM_BD718XX is not set -# CONFIG_MFD_ROHM_BD70528 is not set -# CONFIG_MFD_STPMIC1 is not set -# CONFIG_MFD_STMFX is not set -# end of Multifunction device drivers - -# CONFIG_REGULATOR is not set -# CONFIG_RC_CORE is not set -# CONFIG_MEDIA_SUPPORT is not set - -# -# Graphics support -# -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 -CONFIG_DRM=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DEBUG_MM is not set -# CONFIG_DRM_DEBUG_SELFTEST is not set -CONFIG_DRM_KMS_HELPER=y -CONFIG_DRM_KMS_FB_HELPER=y -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=100 -# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set -# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set -# CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=y - -# -# I2C encoder or helper chips -# -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set -# CONFIG_DRM_I2C_NXP_TDA998X is not set -# CONFIG_DRM_I2C_NXP_TDA9950 is not set -# end of I2C encoder or helper chips - -# -# ARM devices -# -# CONFIG_DRM_KOMEDA is not set -# end of ARM devices - -CONFIG_DRM_RADEON=y -# CONFIG_DRM_RADEON_USERPTR is not set -# CONFIG_DRM_AMDGPU is not set - -# -# ACP (Audio CoProcessor) Configuration -# -# end of ACP (Audio CoProcessor) Configuration - -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_DRM_VGEM is not set -# CONFIG_DRM_VKMS is not set -# CONFIG_DRM_UDL is not set -# CONFIG_DRM_AST is not set -# CONFIG_DRM_MGAG200 is not set -# CONFIG_DRM_CIRRUS_QEMU is not set -# CONFIG_DRM_RCAR_DW_HDMI is not set -# CONFIG_DRM_RCAR_LVDS is not set -# CONFIG_DRM_QXL is not set -# CONFIG_DRM_BOCHS is not set -# CONFIG_DRM_VIRTIO_GPU is not set -CONFIG_DRM_PANEL=y - -# -# Display Panels -# -# CONFIG_DRM_PANEL_LVDS is not set -# CONFIG_DRM_PANEL_SIMPLE is not set -# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -# CONFIG_DRM_PANEL_LG_LG4573 is not set -# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set -# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -# end of Display Panels - -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_PANEL_BRIDGE=y - -# -# Display Interface Bridges -# -# CONFIG_DRM_ANALOGIX_ANX78XX is not set -# CONFIG_DRM_CDNS_DSI is not set -# CONFIG_DRM_DUMB_VGA_DAC is not set -# CONFIG_DRM_LVDS_ENCODER is not set -# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -# CONFIG_DRM_NXP_PTN3460 is not set -# CONFIG_DRM_PARADE_PS8622 is not set -# CONFIG_DRM_SIL_SII8620 is not set -# CONFIG_DRM_SII902X is not set -# CONFIG_DRM_SII9234 is not set -# CONFIG_DRM_THINE_THC63LVD1024 is not set -# CONFIG_DRM_TOSHIBA_TC358764 is not set -# CONFIG_DRM_TOSHIBA_TC358767 is not set -# CONFIG_DRM_TI_TFP410 is not set -# CONFIG_DRM_TI_SN65DSI86 is not set -# CONFIG_DRM_I2C_ADV7511 is not set -# end of Display Interface Bridges - -# CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_HISI_HIBMC is not set -# CONFIG_DRM_MXSFB is not set -# CONFIG_DRM_TINYDRM is not set -# CONFIG_DRM_LEGACY is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y - -# -# Frame buffer Devices -# -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y -CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_FOREIGN_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_OPENCORES is not set -# CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set -# CONFIG_FB_IBM_GXT4500 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_SM712 is not set -# end of Frame buffer Devices - -# -# Backlight & LCD device support -# -CONFIG_LCD_CLASS_DEVICE=m -# CONFIG_LCD_LTV350QV is not set -# CONFIG_LCD_ILI922X is not set -# CONFIG_LCD_ILI9320 is not set -# CONFIG_LCD_TDO24M is not set -# CONFIG_LCD_VGG2432A4 is not set -# CONFIG_LCD_PLATFORM is not set -# CONFIG_LCD_AMS369FG06 is not set -# CONFIG_LCD_LMS501KF03 is not set -# CONFIG_LCD_HX8357 is not set -# CONFIG_LCD_OTM3225A is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y -# CONFIG_BACKLIGHT_PM8941_WLED is not set -# CONFIG_BACKLIGHT_ADP8860 is not set -# CONFIG_BACKLIGHT_ADP8870 is not set -# CONFIG_BACKLIGHT_LM3639 is not set -# CONFIG_BACKLIGHT_LV5207LP is not set -# CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_BACKLIGHT_ARCXCNN is not set -# end of Backlight & LCD device support - -CONFIG_HDMI=y - -# -# Console display driver support -# -CONFIG_VGA_CONSOLE=y -# CONFIG_VGACON_SOFT_SCROLLBACK is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -# end of Console display driver support - -# CONFIG_LOGO is not set -# 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 is not set -# CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLE is not set -# CONFIG_HID_APPLEIR is not set -# CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set -# CONFIG_HID_BETOP_FF is not set -# CONFIG_HID_CHERRY is not set -# CONFIG_HID_CHICONY is not set -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_MACALLY is not set -# CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CYPRESS is not set -# 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 is not set -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set -# CONFIG_HID_HOLTEK 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_GYRATION is not set -# CONFIG_HID_ICADE is not set -# CONFIG_HID_ITE is not set -# CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set -# CONFIG_HID_KENSINGTON is not set -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LOGITECH is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MALTRON is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_REDRAGON is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set -# 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_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_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 - -# -# I2C HID support -# -# CONFIG_I2C_HID is not set -# end of I2C HID support -# end of HID support - -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_COMMON=y -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_DYNAMIC_MINORS is not set -# CONFIG_USB_OTG is not set -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set -CONFIG_USB_AUTOSUSPEND_DELAY=2 -# CONFIG_USB_MON is not set -# CONFIG_USB_WUSB_CBAF 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_PLATFORM=y -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y -# CONFIG_USB_EHCI_FSL is not set -CONFIG_USB_EHCI_HCD_PLATFORM=y -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -# CONFIG_USB_FOTG210_HCD is not set -# CONFIG_USB_MAX3421_HCD is not set -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PCI=y -CONFIG_USB_OHCI_HCD_PLATFORM=y -# 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=y - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USBIP_CORE is not set -# CONFIG_USB_MUSB_HDRC is not set -# CONFIG_USB_DWC3 is not set -# CONFIG_USB_DWC2 is not set -# CONFIG_USB_CHIPIDEA 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_RIO500 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_USB_SISUSBVGA 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_HUB_USB251XB is not set -# CONFIG_USB_HSIC_USB3503 is not set -# CONFIG_USB_HSIC_USB4604 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_ISP1301 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_USB_ULPI_BUS is not set -# CONFIG_UWB is not set -CONFIG_MMC=y -CONFIG_PWRSEQ_EMMC=y -CONFIG_PWRSEQ_SIMPLE=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_BLOCK_MINORS=8 -# 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_SDHCI is not set -# CONFIG_MMC_TIFM_SD is not set -CONFIG_MMC_SPI=y -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC 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_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=y -# CONFIG_SW_SYNC is not set -# CONFIG_UDMABUF is not set -# end of DMABUF options - -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_VIRT_DRIVERS is not set -CONFIG_VIRTIO=y -CONFIG_VIRTIO_MENU=y -CONFIG_VIRTIO_PCI=y -CONFIG_VIRTIO_PCI_LEGACY=y -CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_INPUT=y -CONFIG_VIRTIO_MMIO=y -CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y - -# -# Microsoft Hyper-V guest support -# -# end of Microsoft Hyper-V guest support - -# CONFIG_STAGING is not set -CONFIG_CLKDEV_LOOKUP=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_COMMON_CLK=y - -# -# Common Clock Framework -# -# CONFIG_CLK_HSDK is not set -# CONFIG_COMMON_CLK_MAX9485 is not set -# CONFIG_COMMON_CLK_SI5341 is not set -# CONFIG_COMMON_CLK_SI5351 is not set -# CONFIG_COMMON_CLK_SI514 is not set -# CONFIG_COMMON_CLK_SI544 is not set -# CONFIG_COMMON_CLK_SI570 is not set -# CONFIG_COMMON_CLK_CDCE706 is not set -# CONFIG_COMMON_CLK_CDCE925 is not set -# CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_COMMON_CLK_VC5 is not set -# CONFIG_COMMON_CLK_FIXED_MMIO is not set -CONFIG_CLK_ANALOGBITS_WRPLL_CLN28HPC=y -CONFIG_CLK_SIFIVE=y -CONFIG_CLK_SIFIVE_FU540_PRCI=y -# end of Common Clock Framework - -# CONFIG_HWSPINLOCK is not set - -# -# Clock Source drivers -# -CONFIG_TIMER_OF=y -CONFIG_TIMER_PROBE=y -CONFIG_RISCV_TIMER=y -# end of Clock Source drivers - -CONFIG_MAILBOX=y -# CONFIG_PLATFORM_MHU is not set -# CONFIG_ALTERA_MBOX is not set -# CONFIG_MAILBOX_TEST is not set -CONFIG_IOMMU_SUPPORT=y - -# -# Generic IOMMU Pagetable Support -# -# end of Generic IOMMU Pagetable Support - -# CONFIG_IOMMU_DEBUGFS is not set - -# -# Remoteproc drivers -# -# CONFIG_REMOTEPROC is not set -# end of Remoteproc drivers - -# -# Rpmsg drivers -# -# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -# 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 - -# -# Aspeed SoC drivers -# -# end of Aspeed SoC drivers - -# -# Broadcom SoC drivers -# -# end of Broadcom SoC drivers - -# -# NXP/Freescale QorIQ SoC drivers -# -# end of NXP/Freescale QorIQ SoC drivers - -# -# i.MX SoC drivers -# -# end of i.MX SoC drivers - -# -# Qualcomm SoC drivers -# -# end of Qualcomm SoC drivers - -# CONFIG_SOC_TI is not set - -# -# Xilinx SoC drivers -# -# CONFIG_XILINX_VCU is not set -# 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 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_AL_FIC is not set -# end of IRQ chip support - -CONFIG_SIFIVE_PLIC=y -# CONFIG_IPACK_BUS is not set -# CONFIG_RESET_CONTROLLER is not set - -# -# PHY Subsystem -# -# CONFIG_GENERIC_PHY is not set -# CONFIG_BCM_KONA_USB2_PHY is not set -# CONFIG_PHY_CADENCE_DP is not set -# CONFIG_PHY_CADENCE_DPHY is not set -# CONFIG_PHY_FSL_IMX8MQ_USB is not set -# CONFIG_PHY_MIXEL_MIPI_DPHY is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# end of PHY Subsystem - -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set - -# -# Performance monitor support -# -# end of Performance monitor support - -CONFIG_RAS=y - -# -# Android -# -# CONFIG_ANDROID 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_SIOX is not set -# CONFIG_SLIMBUS is not set -# CONFIG_INTERCONNECT is not set -# CONFIG_COUNTER is not set -# end of Device Drivers - -# -# File systems -# -# CONFIG_VALIDATE_FS_PARSER is not set -CONFIG_FS_IOMAP=y -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -# CONFIG_EXT3_FS is not set -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -# CONFIG_EXT4_FS_SECURITY is not set -# 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_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -# CONFIG_EXPORTFS_BLOCK_OPS is not set -CONFIG_FILE_LOCKING=y -CONFIG_MANDATORY_FILE_LOCKING=y -# CONFIG_FS_ENCRYPTION is not set -CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set -CONFIG_AUTOFS4_FS=y -CONFIG_AUTOFS_FS=y -# CONFIG_FUSE_FS is not set -# CONFIG_OVERLAY_FS is not set - -# -# Caches -# -# 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/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_FAT_DEFAULT_UTF8 is not set -# CONFIG_NTFS_FS is not set -# end of DOS/FAT/NT Filesystems - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_PROC_KCORE is not set -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_PROC_CHILDREN=y -CONFIG_KERNFS=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TMPFS_XATTR=y -# CONFIG_HUGETLBFS is not set -CONFIG_MEMFD_CREATE=y -CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -# CONFIG_CONFIGFS_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 is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V2=y -CONFIG_NFS_V3=y -# CONFIG_NFS_V3_ACL is not set -CONFIG_NFS_V4=y -# CONFIG_NFS_SWAP is not set -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_PNFS_FILE_LAYOUT=y -CONFIG_PNFS_FLEXFILE_LAYOUT=m -CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" -# CONFIG_NFS_V4_1_MIGRATION is not set -CONFIG_ROOT_NFS=y -# CONFIG_NFS_USE_LEGACY_DNS is not set -CONFIG_NFS_USE_KERNEL_DNS=y -# CONFIG_NFSD is not set -CONFIG_GRACE_PERIOD=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y -CONFIG_SUNRPC_BACKCHANNEL=y -# CONFIG_SUNRPC_DEBUG is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -# CONFIG_NLS_CODEPAGE_437 is not set -# 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 is not set -# 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_UNICODE is not set -# end of File systems - -# -# Security options -# -CONFIG_KEYS=y -# CONFIG_KEYS_REQUEST_CACHE is not set -# CONFIG_PERSISTENT_KEYRINGS is not set -# CONFIG_BIG_KEYS 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 is not set -# CONFIG_SECURITYFS is not set -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y -# CONFIG_HARDENED_USERCOPY is not set -# CONFIG_STATIC_USERMODEHELPER is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_LSM="yama,loadpin,safesetid,integrity" - -# -# Kernel hardening options -# - -# -# Memory initialization -# -CONFIG_INIT_STACK_NONE=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_AEAD=y -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_AKCIPHER2=y -CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -# CONFIG_CRYPTO_USER is not set -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_NULL=y -CONFIG_CRYPTO_NULL2=y -# CONFIG_CRYPTO_PCRYPT is not set -# CONFIG_CRYPTO_CRYPTD is not set -# CONFIG_CRYPTO_AUTHENC is not set -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_ENGINE=y - -# -# Public-key cryptography -# -# CONFIG_CRYPTO_RSA is not set -# CONFIG_CRYPTO_DH is not set -# CONFIG_CRYPTO_ECDH is not set -# CONFIG_CRYPTO_ECRDSA 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_AEGIS128L is not set -# CONFIG_CRYPTO_AEGIS256 is not set -# CONFIG_CRYPTO_MORUS640 is not set -# CONFIG_CRYPTO_MORUS1280 is not set -# CONFIG_CRYPTO_SEQIV is not set -CONFIG_CRYPTO_ECHAINIV=y - -# -# 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 - -# -# Hash modes -# -# CONFIG_CRYPTO_CMAC is not set -CONFIG_CRYPTO_HMAC=y -# 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_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_RMD128 is not set -# CONFIG_CRYPTO_RMD160 is not set -# CONFIG_CRYPTO_RMD256 is not set -# CONFIG_CRYPTO_RMD320 is not set -# CONFIG_CRYPTO_SHA1 is not set -CONFIG_CRYPTO_SHA256=y -# 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_TGR192 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_ANUBIS is not set -# CONFIG_CRYPTO_ARC4 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_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set -# CONFIG_CRYPTO_CHACHA20 is not set -# CONFIG_CRYPTO_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_SM4 is not set -# CONFIG_CRYPTO_TEA is not set -# CONFIG_CRYPTO_TWOFISH is not set - -# -# Compression -# -# CONFIG_CRYPTO_DEFLATE is not set -# 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=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_JITTERENTROPY=y -CONFIG_CRYPTO_USER_API=y -CONFIG_CRYPTO_USER_API_HASH=y -# 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_ATMEL_ECC is not set -# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set -# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -CONFIG_CRYPTO_DEV_VIRTIO=y -# CONFIG_CRYPTO_DEV_CCREE 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 - -# -# Library routines -# -# CONFIG_PACKING is not set -CONFIG_BITREVERSE=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_NET_UTILS=y -# CONFIG_CORDIC is not set -CONFIG_RATIONAL=y -CONFIG_GENERIC_PCI_IOMAP=y -# CONFIG_CRC_CCITT is not set -CONFIG_CRC16=y -# CONFIG_CRC_T10DIF is not set -CONFIG_CRC_ITU_T=y -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=y -# CONFIG_LIBCRC32C is not set -# CONFIG_CRC8 is not set -# CONFIG_RANDOM32_SELFTEST is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_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_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_GENERIC_ALLOCATOR=y -CONFIG_INTERVAL_TREE=y -CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAS_DMA=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_DMA_DECLARE_COHERENT=y -CONFIG_SWIOTLB=y -# CONFIG_DMA_API_DEBUG 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_DIMLIB=y -CONFIG_LIBFDT=y -CONFIG_OID_REGISTRY=y -CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_SG_POOL=y -CONFIG_SBITMAP=y -# CONFIG_STRING_SELFTEST is not set -# end of Library routines - -# -# Kernel hacking -# - -# -# printk and dmesg options -# -CONFIG_PRINTK_TIME=y -# CONFIG_PRINTK_CALLER 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 -# end of printk and dmesg options - -# -# Compile-time checks and compiler options -# -CONFIG_DEBUG_INFO=y -# CONFIG_DEBUG_INFO_REDUCED is not set -# CONFIG_DEBUG_INFO_SPLIT is not set -# CONFIG_DEBUG_INFO_DWARF4 is not set -# CONFIG_DEBUG_INFO_BTF is not set -# CONFIG_GDB_SCRIPTS is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_READABLE_ASM is not set -# CONFIG_UNUSED_SYMBOLS is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_INSTALL is not set -# CONFIG_OPTIMIZE_INLINING is not set -CONFIG_DEBUG_SECTION_MISMATCH=y -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 - -# CONFIG_MAGIC_SYSRQ is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_MISC=y - -# -# 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_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_SLUB_STATS is not set -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_CC_HAS_KASAN_GENERIC=y -CONFIG_KASAN_STACK=1 -# end of Memory Debugging - -CONFIG_CC_HAS_SANCOV_TRACE_PC=y -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Lockups and Hangs -# -# CONFIG_SOFTLOCKUP_DETECTOR is not set -# CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_WQ_WATCHDOG is not set -# end of Debug Lockups and Hangs - -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 -CONFIG_SCHED_DEBUG=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_SCHED_STACK_END_CHECK is not set -# CONFIG_DEBUG_TIMEKEEPING is not set - -# -# Lock Debugging (spinlocks, mutexes, etc...) -# -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_RWSEMS 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 -# end of Lock Debugging (spinlocks, mutexes, etc...) - -CONFIG_STACKTRACE=y -# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_DEBUG_BUGVERBOSE=y -# 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_DEBUG_CREDENTIALS is not set - -# -# RCU Debugging -# -# CONFIG_RCU_PERF_TEST is not set -# CONFIG_RCU_TORTURE_TEST is not set -CONFIG_RCU_CPU_STALL_TIMEOUT=21 -# CONFIG_RCU_TRACE is not set -# CONFIG_RCU_EQS_DEBUG is not set -# end of RCU Debugging - -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_NOTIFIER_ERROR_INJECTION is not set -# CONFIG_FAULT_INJECTION 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_TRACING_SUPPORT=y -CONFIG_FTRACE=y -# CONFIG_FUNCTION_TRACER is not set -# CONFIG_PREEMPTIRQ_EVENTS is not set -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_HWLAT_TRACER is not set -# CONFIG_ENABLE_DEFAULT_TRACERS is not set -# CONFIG_FTRACE_SYSCALLS is not set -# CONFIG_TRACER_SNAPSHOT is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_STACK_TRACER is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_TRACEPOINT_BENCHMARK is not set -# CONFIG_PREEMPTIRQ_DELAY_TEST is not set -CONFIG_RUNTIME_TESTING_MENU=y -# CONFIG_LKDTM is not set -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_TEST_SORT is not set -# CONFIG_BACKTRACE_SELF_TEST 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_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_BITMAP is not set -# CONFIG_TEST_BITFIELD is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_XARRAY is not set -# CONFIG_TEST_OVERFLOW is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set -# CONFIG_TEST_IDA is not set -# CONFIG_TEST_LKM 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_STACKINIT is not set -# CONFIG_TEST_MEMINIT is not set -# CONFIG_MEMTEST is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set -# CONFIG_SAMPLES is not set -# CONFIG_UBSAN is not set -CONFIG_UBSAN_ALIGNMENT=y -# end of Kernel hacking diff --git a/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst b/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst index 04dd84bad..fc468713b 100644 --- a/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst +++ b/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst @@ -1,133 +1,110 @@ -Testing Keystone with FireSim -====================================== +Testing Keystone with FireSim (w/ Chipyard Framework) +===================================================== -`FireSim `_ is an FPGA-based cycle-accurate simulator for RISC-V processors. -Using FireSim, you can test Keystone on open-source processors like `RocketChip `_ +`FireSim `_ is an FPGA-based cycle-accurate simulator for +RISC-V processors. Using FireSim, you can test Keystone on open-source +processors like `RocketChip `_ or `BOOM `_. +FireSim has been integrated into `Chipyard +`_, which is a framework for +hardware desigining. We recommend you to follow the `tutorial +`_ +to familiarize yourself with Chipyard and FireSim. + Who needs it? ----------------------- -If you want to run your enclave application with Keystone, -but you don't own any RISC-V processor, FireSim is the way to go. -FireSim allows you to simulate the processors with reasonably high speed. -You can actually boot Linux on the simulated processor and run real workloads. -You can test functionality or measure the performance of Keystone enclaves. -If you want to improve your enclave system by modifying hardware, -you can freely modify the processor hardware, and deploy it to Amazon AWS FPGAs using FireSim. +If you want to run your enclave application with Keystone, but you don't own any +RISC-V processor, FireSim is the way to go. FireSim allows you to simulate the +processors with reasonably high speed. You can actually boot Linux on the +simulated processor and run real workloads. You can test functionality or +measure the performance of Keystone enclaves. If you want to improve your +enclave system by modifying hardware, you can freely modify the processor +hardware, and deploy it to Amazon AWS FPGAs using FireSim. -Setting Up FireSim Manager Instance +Setting Up Chipyard ------------------------------------- -Before we start, you have to create a FireSim manager instance. -See `FireSim Documentation `_ to setup a manager instance. -Be sure to use 1.4.0 or later version of FireSim. - -Building Keystone ----------------------------------------- - -You can generate necessary files for FireSim with CMake. +Follow `this documentation +`_ +to setup the Chipyard repo. Then, follow `this +`_ +to setup FireSim. -First, clone the Keystone repository in the **manager instance**. +We are going to use the latest version of `FireMarshal +`_. Thus, +go to the FireMarshal directory and checkout the dev branch. The latest +FireMarshal version we tested is 1.10.0. :: - - git clone https://github.com/keystone-enclave/keystone -Follow :doc:`QEMU-Setup-Repository` to setup the repository. + cd + cd software/firemarshal + git checkout dev .. note:: - FireSim's default manager instance is CentOS 7, where the default CMake package is version 2. - In order to use CMake version 3, you need to install it by running ``sudo yum install cmake3``. - Use ``cmake3`` instead of ``cmake``. -After you setup the repository, you can run the following commands to build Keystone. + RISC-V toolchain must be in your ``PATH`` all time. Don't forget to update + your environment variables by ``source env.sh``. -:: - - mkdir - cd - cmake .. -Dfiresim=y - make - make image +Download Keystone Workload +---------------------------------------- -CMake with the flag ``-Dfiresim=y`` will automatically generate Makefiles to build -FireSim-compatible Linux and SM. -This includes some patches for DTB compatibility. -Also, the build will forcibly use initramfs for a simpler deployment. +We already wrote `the scripts and workload configuration for Keystone +`_ that works with the +latest FireMarshal. Clone the workload repo into any directory you want. -Once you have built the image, you will see ``riscv-pk.build/bbl`` and -``buildroot.build/images/rootfs.ext2`` under your -build directory. +:: -You can also boot QEMU machine with the image using ``./scripts/run-qemu.sh``. + git clone https://github.com/keystone-enclave/firemarshal-keystone -Changing FireSim Workload Config ----------------------------------------- +The repo includes ``keystone.json`` which you should be using for building +Keystone software stack using FireMarshal. -FireSim allows users to change their workload very easily through config files in the manager -instance. -In the FireSim's root directory, you'll see ``deploy/config_runtime.ini`` which looks as follows: +Build Keystone Software Stack using FireMarshal +------------------------------------------------ + +Now, we're ready to build the software stack of Keystone. +Go to FireMarshal directory, and build the workload. :: - # firesim/deploy/config_runtime.ini - # ... some other configs ... - - [workload] - workloadname=linux-uniform.json - terminateoncompletion=no + cd + cd software/firemarshal + ./marshal -v build + +You should replace ```` with the absolute path to the +``keystone.json`` in the workload directory. -``linux-uniform.json`` is a file under ``deploy/workloads/``, and defines the boot binary, rootfs and -so on: +You can launch QEMU to run the tests. :: - - # firesim/deploy/workloads/linux-uniform.json - { - "benchmark_name" : "linux-uniform", - "common_bootbinary" : "br-base-bin", - "common_rootfs" : "br-base.img", - "common_outputs" : ["/etc/os-release"], - "common_simulation_outputs" : ["uartlog", "memory_stats.csv"] - } + ./marshal -v launch -Now, change ``linux-uniform.json`` to ``keystone.json`` : +Finally, install the workload in FireSim. :: - - # firesim/deploy/config_runtime.ini - # ... some other configs ... - - [workload] - workloadname=keystone.json - terminateoncompletion=no + ./marshal -v install -Simply, create ``keystone.json``, and make ``common_bootbinary`` point to the ``bbl`` file generated -by ``make image``. Replace ```` with the path that you built -Keystone in the -previous part. +``keystone`` workload should be installed in ``/sims/firesim/deploy/workloads``. -:: - - # firesim/deploy/workloads/keystone.json - { - "benchmark_name" : "my-keystone" - "common_bootbinary" : "/riscv-pk.build/bbl", - "common_rootfs" : "/buildroot.build/images/rootfs.ext2" - "common_simulation_outputs" : ["uartlog", "memory_stats.csv"] - } - -Although ``common_rootfs`` is not required (``bbl`` already contains the rootfs in -Linux with initramfs), FireSim does not allow it to be an empty field, thus we put the disk image we -already built. - -Launching Simulation +Launching Simulation (FireSim) ------------------------------ +Open ``config_runtime.ini`` in ``/sims/firesim/deploy`` and edit +``[workload]`` section as follows + +:: + + [workload] + workloadname=keystone.json + # ... + Use FireSim commands to launch the simulation. Go to the top-level FireSim directory and run: @@ -144,9 +121,11 @@ Launch runfarm and test! firesim infrasetup firesim boot -You can login to the f1 instance via ``ssh`` and attach to the simulated node using ``screen`` command. +You can login to the f1 instance via ``ssh`` and attach to the simulated node +using ``screen`` command. -See `FireSim Single Node Simulation `_ +See `FireSim Single Node Simulation +`_ for more details. :: @@ -163,10 +142,13 @@ for more details. Running Keystone Enclaves ----------------------------- -:: - - # [On the simulated node] - insmod keystone-driver.ko +.. warning:: + + We don't support the emulated secure boot in FireSim, so the attestation key + of security monitor will be all zeroes. Thus, the attestation will not work + unless you change your bootrom. See `this issue + `_. + Run ``./tests.ke`` to run all enclaves sequentially. diff --git a/linux b/linux index 4d856f72c..7111951b8 160000 --- a/linux +++ b/linux @@ -1 +1 @@ -Subproject commit 4d856f72c10ecb060868ed10ff1b1453943fc6c8 +Subproject commit 7111951b8d4973bda27ff663f2cf18b663d15b48 diff --git a/linux-keystone-driver b/linux-keystone-driver index a0ba65016..2e52082d0 160000 --- a/linux-keystone-driver +++ b/linux-keystone-driver @@ -1 +1 @@ -Subproject commit a0ba65016e0c52e068f637d78c2571540acc75be +Subproject commit 2e52082d08f8c212570c479e1a7f9fe32c2f4ae8 From 7e3e3488119e12fee40d96f9c97a7938009843b6 Mon Sep 17 00:00:00 2001 From: Catherine Lu Date: Tue, 2 Feb 2021 07:04:53 +0000 Subject: [PATCH 05/11] Update debug instructions and hello world tutorial docs --- docs/source/Getting-Started/How-to-Debug.md | 17 +++++++++++++---- .../Tutorials/Build-Enclave-App-Hello-World.rst | 6 +++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/source/Getting-Started/How-to-Debug.md b/docs/source/Getting-Started/How-to-Debug.md index 44c5fe52b..8f648db5a 100644 --- a/docs/source/Getting-Started/How-to-Debug.md +++ b/docs/source/Getting-Started/How-to-Debug.md @@ -5,6 +5,13 @@ We use QEMU+GDB to debug the security monitor or the kernel. QEMU is an effective way to debug them. +First compile with debugging symbols + +```bash +# in your +cmake -DCMAKE_BUILD_TYPE=Debug .. +``` + From your `build` directory where you ran `make`, use: ```bash @@ -14,19 +21,21 @@ From your `build` directory where you ran `make`, use: All cores will immediately hang at the first instruction (i.e., bootrom), waiting for `gdb` to be attached. Now, run a riscv `gdb` in another terminal. You can feed it with the -bbl binary or the kernel image to add debug information. (You may -want to compile them with the debugging flag `-g`) +bbl binary or the kernel image to add debug information. + For example, if you want to debug with the `bbl` symbols ```bash -riscv64-unknown-linux-gnu-gdb ./hifive-work/riscv-pk/bbl +# in your +riscv64-unknown-linux-gnu-gdb ./riscv-pk.build/bbl ``` If you want to debug with the kernel's debug information ```bash -riscv64-unknown-linux-gnu-gdb ./riscv-linux/vmlinux +# in your +riscv64-unknown-linux-gnu-gdb ./linux.build/vmlinux ``` Then, attach to QEMU on the port printed by the starting qemu script: diff --git a/docs/source/Getting-Started/Tutorials/Build-Enclave-App-Hello-World.rst b/docs/source/Getting-Started/Tutorials/Build-Enclave-App-Hello-World.rst index fff93f77e..ea6ba7e67 100644 --- a/docs/source/Getting-Started/Tutorials/Build-Enclave-App-Hello-World.rst +++ b/docs/source/Getting-Started/Tutorials/Build-Enclave-App-Hello-World.rst @@ -130,14 +130,14 @@ Next, copy the package into the buildroot overlay directory. :: # in the build directory - cp examples/hello/hello.ke ./overlay + cp examples/hello ./overlay/root -Running ``make image`` in the top-level directory (``keystone``) will generate the buildroot disk +Running ``make image`` in your build directory will generate the buildroot disk image containing the copied package. :: - # go to top-level keystone directory + # in your make image Deploying Enclave From b4b6cc5b1877ccf577eb913f27066d07b0bd0739 Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Tue, 9 Feb 2021 20:38:10 -0800 Subject: [PATCH 06/11] Moving to OpenSBI, deprecate BBL (riscv-pk), and more (#220) * Moving to OpenSBI, deprecate BBL (riscv-pk) * Bump latest riscv-gnu-toolchain (2021.01) * Bump buildroot (2020.11) * Remove all newly-introduced compiler errors * Test and fix RV32 (ilp32d/rv32gc) dtb was not aligned, which results in system hang at boot. align dtb in both bootrom and QEMU. * Better scripting for RV32 (always use fast-setup.sh) * Buildroot configs for the new toolchain (glibc) * Linux config mcmodel to medany (to be consistent) * CI changes for the latest toolchain * CI changes for RV32 test * Remove unused patches * Switch CI from Travis to CircleCI (Travis is no longer free for OSS) Issues resolved: - https://github.com/keystone-enclave/keystone/issues/212 - https://github.com/keystone-enclave/keystone/issues/195 - https://github.com/keystone-enclave/keystone/issues/127 - https://github.com/keystone-enclave/keystone/issues/147 - https://github.com/keystone-enclave/keystone/issues/148 - https://github.com/keystone-enclave/keystone-sdk/issues/48 - https://github.com/keystone-enclave/keystone-runtime/issues/46 --- .circleci/config.yml | 75 ++++++++++++++++++ .gitmodules | 6 +- .prebuilt_tools_shasums | 7 +- .travis.yml | 41 +++++----- CMakeLists.txt | 64 +++++----------- bootrom/bootloader.lds | 1 + buildroot | 2 +- conf/linux32-defconfig | 2 +- conf/linux64-defconfig | 20 +++++ conf/linux64-sifive-defconfig | 33 +++++++- conf/qemu_riscv32_virt_defconfig | 3 +- conf/qemu_riscv64_virt_defconfig | 4 +- fast-setup.sh | 76 ++++++++++++------- linux | 2 +- linux-keystone-driver | 2 +- patches/linux/linux32.patch | 51 ++++--------- patches/qemu/qemu-pmp-bug.patch | 38 ---------- patches/qemu/qemu-secure-boot.patch | 48 ++++++------ patches/riscv-pk/riscv-pk.firesim.patch | 53 ------------- patches/riscv-pk/riscv-pk.sifive.patch | 21 ----- .../opensbi-firmware-secure-boot.patch | 44 +++++++++++ qemu | 2 +- riscv-gnu-toolchain | 2 +- riscv-pk | 1 - rv32-setup.sh | 31 -------- sdk | 2 +- setup.sh | 33 -------- sm | 1 + source.sh | 3 - source32.sh | 3 - 30 files changed, 323 insertions(+), 348 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 patches/qemu/qemu-pmp-bug.patch delete mode 100644 patches/riscv-pk/riscv-pk.firesim.patch delete mode 100644 patches/riscv-pk/riscv-pk.sifive.patch create mode 100644 patches/sm/opensbi/opensbi-firmware-secure-boot.patch delete mode 160000 riscv-pk delete mode 100755 rv32-setup.sh delete mode 100755 setup.sh create mode 160000 sm delete mode 100644 source.sh delete mode 100644 source32.sh diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..1be5e944c --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,75 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference +version: 2.1 + +# prebuilt docker images with toolchain +executors: + setup-rv64gc: + docker: + - image: keystoneenclaveorg/keystone:init-rv64gc + setup-rv32gc: + docker: + - image: keystoneenclaveorg/keystone:init-rv32gc + + +commands: + update-riscv-toolchain-path: + steps: + - run: echo 'export PATH=/keystone/riscv64/bin:/keystone/riscv32/bin:$PATH' >> $BASH_ENV + +jobs: + build-and-test-rv64-qemu: + executor: setup-rv64gc + working_directory: /keystone + steps: + - checkout + - update-riscv-toolchain-path + - run: + name: "Build rv64 and run tests" + command: | + ./fast-setup.sh + source ./source.sh + mkdir build64 + cd build64 + cmake /keystone + make -j$(nproc) + make run-tests + no_output_timeout: 120m + build-rv64-fu540: + executor: setup-rv64gc + working_directory: /keystone + steps: + - checkout + - update-riscv-toolchain-path + - run: + name: "Build rv64 sifive FU540" + command: | + ./fast-setup.sh + source ./source.sh + mkdir build64-fu540 + cd build64-fu540 + cmake /keystone -DLINUX_SIFIVE=y -DSM_PLATFORM=sifive/fu540 + make -j$(nproc) + build-and-test-rv32-qemu: + executor: setup-rv32gc + working_directory: /keystone + steps: + - checkout + - update-riscv-toolchain-path + - run: + name: "Build rv32 and run tests" + command: | + BITS=32 ./fast-setup.sh + source ./source.sh + mkdir build32 + cd build32 + cmake /keystone -DRISCV32=y + make -j$(nproc) + make run-tests + no_output_timeout: 120m + +workflows: + build-and-test: + jobs: + - build-and-test-rv64-qemu + - build-rv64-fu540 + - build-and-test-rv32-qemu diff --git a/.gitmodules b/.gitmodules index 638b81f7e..ae74f08cc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "riscv-gnu-toolchain"] path = riscv-gnu-toolchain url = https://github.com/riscv/riscv-gnu-toolchain -[submodule "riscv-pk"] - path = riscv-pk - url = https://github.com/keystone-enclave/riscv-pk [submodule "sdk"] path = sdk url = https://github.com/keystone-enclave/keystone-sdk @@ -19,3 +16,6 @@ [submodule "qemu"] path = qemu url = https://github.com/qemu/qemu +[submodule "sm"] + path = sm + url = https://github.com/keystone-enclave/sm diff --git a/.prebuilt_tools_shasums b/.prebuilt_tools_shasums index b27343436..5930eba7f 100644 --- a/.prebuilt_tools_shasums +++ b/.prebuilt_tools_shasums @@ -1,3 +1,4 @@ -05211edea5a47ebaf906ef4bed2c9609a93e8c6ad5e45f8c87678eabbfd424e7 1.0.tar.gz -bdc9e3ec47ac461ecc7865609fda6b820439c36130e9da9275af010d9f4fe4bc 2.0.tar.gz -e73fa1191ce97be2531401d4628384c321c45ca5e4c83756e8415f2cc31a0b18 rv32gc.tar.gz +ad8c0e3357579ae8b9c6f8adb76aae5ac9155134304e11e429b81111283a4718 riscv-toolchain-ilp32d-rv32gc-2021.01.xenial.7z +ed41a452ba736d40de73b847777ad9cedd54e528f5d8930c44a6eb937e4d36d9 riscv-toolchain-lp64d-rv64gc-2021.01.xenial.7z +7e232c2030cc8ab8dab169a4e9dac1cc75c41ea1da8cbe1a70ba416a6d6b971f riscv-toolchain-ilp32d-rv32gc-2021.01.bionic.7z +2c37fa700f5ecf7ab8c1e5aeddd018fc15e0c187721b769a1d1318ed58228685 riscv-toolchain-lp64d-rv64gc-2021.01.bionic.7z diff --git a/.travis.yml b/.travis.yml index a4cd67c70..2e1e89954 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,19 @@ language: minimal -dist: xenial +dist: bionic cache: apt: true timeout: 1000 #In seconds directories: - # - $TRAVIS_BUILD_DIR/firesim-riscv-tools-prebuilt - - $TRAVIS_BUILD_DIR/riscv - - $TRAVIS_BUILD_DIR/linux - - $TRAVIS_BUILD_DIR/qemu + - $TRAVIS_BUILD_DIR/riscv64 + - $TRAVIS_BUILD_DIR/linux/.git + - $TRAVIS_BUILD_DIR/qemu/.git git: submodules: false depth: 1 env: - - RISCV=$TRAVIS_BUILD_DIR/riscv PATH=$PATH:$RISCV/bin + - RISCV=$TRAVIS_BUILD_DIR/riscv64 PATH=$PATH:$RISCV/bin addons: apt: @@ -54,6 +53,7 @@ addons: - libssl-dev - makeself - unzip + - p7zip-full branches: only: @@ -62,15 +62,13 @@ branches: before_install: + - if [ -d "linux/.git" ]; then ls; else git clone --shallow-since=2020-04-01 https://github.com/torvalds/linux linux; fi + - if [ -d "qemu/.git" ]; then ls; else git clone --shallow-since=2020-04-01 https://github.com/qemu/qemu qemu; fi - git submodule init -- linux - git submodule init -- qemu - - if [ -d "linux/.git" ]; then ls; else git clone --shallow-since=2018-05-01 https://github.com/torvalds/linux linux; fi - - if [ -d "qemu/.git" ]; then ls; else git clone --shallow-since=2018-05-01 https://github.com/qemu/qemu qemu; fi - git submodule update --depth=1 -- linux - git submodule update --depth=1 -- qemu - ./fast-setup.sh - - cp -r linux/.git linux-git - - cp -r qemu/.git qemu-git jobs: include: @@ -78,8 +76,8 @@ jobs: script: true after_failure: - ls -al - - cat firesim-riscv-tools-prebuilt-*/riscv-tools-install.log - - stage: build everything & test + - git submodule status + - stage: build rv64 & test script: - source ./source.sh - mkdir build @@ -88,8 +86,6 @@ jobs: - travis_wait 120 make -j3 - travis_wait 10 make run-tests - cd .. - - cd qemu; git clean -fxd > /dev/null;git reset --hard > /dev/null;rm -rf .git;mv ../qemu-git .git;cd .. - - cd linux;git clean -fxd > /dev/null;git reset --hard > /dev/null;rm -rf .git;mv ../linux-git .git;cd .. after_failure: - cat screenlog.0 - cat output.log @@ -98,8 +94,19 @@ jobs: - source ./source.sh - mkdir build - cd build - - cmake -DLINUX_SIFIVE=y -DSM_PLATFORM=fu540 ../ + - cmake -DLINUX_SIFIVE=y -DSM_PLATFORM=sifive/fu540 ../ - travis_wait 120 make -j3 - cd .. - - cd qemu; git clean -fxd > /dev/null;git reset --hard > /dev/null;rm -rf .git;mv ../qemu-git .git;cd .. - - cd linux;git clean -fxd > /dev/null;git reset --hard > /dev/null;rm -rf .git;mv ../linux-git .git;cd .. + - stage: build rv32 & test + script: + - BITS=32 ./fast-setup.sh + - source source.sh + - stage: build rv32 & test + script: + - BITS=32 ./fast-setup.sh + - source source.sh + - mkdir build32 + - cmake ../ -DRISCV32=y + - travis_wait 120 make -j3 + - travis_wait 10 make run-tests + - cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index a08050c8f..7c80a7e13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,6 @@ project(keystone C) include(ProcessorCount) set(CMAKE_VERBOSE_MAKEFILE ON) - ############################################################################### ## MACROS ############################################################################### @@ -38,7 +37,7 @@ endif() set(USE_RUST_SM FALSE CACHE BOOL "Use Rust version of the security monitor.") set(SM_CONFIGURE_ARGS --enable-opt=2 CACHE STRING "Security Monitor configure script arguments") -set(SM_PLATFORM "default" CACHE STRING "Board name for SM hardware-specific functions") +set(SM_PLATFORM "generic" CACHE STRING "Board name for SM hardware-specific functions") set(platform ${SM_PLATFORM}) message(STATUS "platform=${platform}") @@ -71,8 +70,8 @@ set(bootrom_srcdir ${CMAKE_SOURCE_DIR}/bootrom) set(bootrom_wrkdir ${CMAKE_BINARY_DIR}/bootrom.build) set(qemu_wrkdir ${CMAKE_SOURCE_DIR}/qemu) set(qemu_srcdir ${CMAKE_SOURCE_DIR}/qemu) -set(sm_srcdir ${CMAKE_SOURCE_DIR}/riscv-pk) -mkdir(sm_wrkdir ${CMAKE_BINARY_DIR}/riscv-pk.build) +set(sm_srcdir ${CMAKE_SOURCE_DIR}/sm) +mkdir(sm_wrkdir ${CMAKE_BINARY_DIR}/sm.build) set(buildroot_srcdir ${CMAKE_SOURCE_DIR}/buildroot) set(buildroot_wrkdir ${CMAKE_BINARY_DIR}/buildroot.build) set(buildroot_config ${confdir}/qemu_riscv${BITS}_virt_defconfig) @@ -98,11 +97,12 @@ endif() set(linux_srcdir ${CMAKE_SOURCE_DIR}/linux) mkdir(linux_wrkdir ${CMAKE_BINARY_DIR}/linux.build) set(linux_symvers ${linux_wrkdir}/Modules.symvers) -set(linux_vmlinux ${linux_wrkdir}/vmlinux) -set(linux_vmlinux_stripped ${linux_wrkdir}/vmlinux-stripped) +set(linux_image ${linux_wrkdir}/arch/riscv/boot/Image) set(driver_srcdir ${CMAKE_SOURCE_DIR}/linux-keystone-driver) set(driver_wrkdir ${CMAKE_BINARY_DIR}/linux-keystone-driver.build) -set(final_image ${CMAKE_BINARY_DIR}/bbl.bin) +set(fw_elf ${sm_wrkdir}/platform/${platform}/firmware/fw_payload.elf) +set(fw_bin ${sm_wrkdir}/platform/${platform}/firmware/fw_payload.bin) +set(final_image ${CMAKE_BINARY_DIR}/firmware.bin) set(initramfs_sysroot ${CMAKE_BINARY_DIR}/initramfs-sysroot) @@ -111,7 +111,6 @@ set(initramfs_sysroot ${CMAKE_BINARY_DIR}/initramfs-sysroot) ############################################################################### set(qemu_system ${qemu_wrkdir}/riscv${BITS}-softmmu/qemu-system-riscv${BITS}) -add_patch("qemu" "qemu-pmp-bug.patch" ${qemu_srcdir} qemu_patches) add_patch("qemu" "qemu-secure-boot.patch" ${qemu_srcdir} qemu_patches) add_custom_target("qemu" ALL DEPENDS ${qemu_system}) @@ -190,21 +189,19 @@ if(initramfs) execute_process(COMMAND id -g OUTPUT_VARIABLE gid) string(STRIP ${gid} gid) add_custom_command(OUTPUT ${initramfs_sysroot} COMMAND mkdir -p ${initramfs_sysroot}) - add_custom_command(OUTPUT ${linux_vmlinux_stripped} ${linux_vmlinux} DEPENDS ${initramfs_sysroot} ${linux_srcdir} "linux-symvers" "buildroot" ${buildroot_wrkdir}/images/rootfs.tar + add_custom_command(OUTPUT ${linux_image} DEPENDS ${initramfs_sysroot} ${linux_srcdir} "linux-symvers" "buildroot" ${buildroot_wrkdir}/images/rootfs.tar COMMAND tar -xpf ${buildroot_wrkdir}/images/rootfs.tar -C ${initramfs_sysroot} --exclude ./dev --exclude ./usr/share/locale COMMAND echo "::sysinit:/bin/mount -t devtmpfs devtmpfs /dev" >> ${initramfs_sysroot}/etc/inittab COMMAND $(MAKE) -C ${linux_srcdir} O=${linux_wrkdir} CONFIG_INITRAMFS_SOURCE="${confdir}/initramfs.txt ${initramfs_sysroot}" CONFIG_INITRAMFS_ROOT_UID=${uid} CONFIG_INITRAMFS_ROOT_GID=${gid} CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y - CROSS_COMPILE=${cross_compile} ARCH=riscv vmlinux - COMMAND ${cross_compile}strip -o ${linux_vmlinux_stripped} ${linux_vmlinux} + CROSS_COMPILE=${cross_compile} ARCH=riscv COMMENT "Building linux (initramfs)" ) else() - add_custom_command(OUTPUT ${linux_vmlinux_stripped} ${linux_vmlinux} DEPENDS ${linux_srcdir} "linux-symvers" - COMMAND $(MAKE) -C ${linux_srcdir} O=${linux_wrkdir} CROSS_COMPILE=${cross_compile} ARCH=riscv vmlinux - COMMAND ${cross_compile}strip -o ${linux_vmlinux_stripped} ${linux_vmlinux} + add_custom_command(OUTPUT ${linux_image} DEPENDS ${linux_srcdir} "linux-symvers" + COMMAND $(MAKE) -C ${linux_srcdir} O=${linux_wrkdir} CROSS_COMPILE=${cross_compile} ARCH=riscv COMMENT "Building linux" ) endif() @@ -214,7 +211,7 @@ add_custom_command(OUTPUT ${linux_symvers} DEPENDS ${linux_srcdir} "linux-config COMMENT "Building linux symvers" ) add_custom_target("linux-symvers" DEPENDS ${linux_symvers}) -add_custom_target("linux" ALL DEPENDS ${linux_vmlinux_stripped} ${linux_vmlinux}) +add_custom_target("linux" ALL DEPENDS ${linux_image}) ############################################################################### @@ -232,38 +229,17 @@ add_custom_target("driver" ALL DEPENDS ${driver_srcdir} ${linux_srcdir} "linux-s ############################################################################### -## COMPONENT: bbl + sm +## COMPONENT: security monitor (sm) ############################################################################### -if (${USE_RUST_SM}) - set(enabled_sm --enable-sm_rs) -else() - set(enabled_sm --enable-sm) -endif() - -if(firesim) - add_patch("riscv-pk" "riscv-pk.firesim.patch" ${sm_srcdir} sm_patches) -elseif(sifive) - add_patch("riscv-pk" "riscv-pk.sifive.patch" ${sm_srcdir} sm_patches) -endif() - -add_custom_command(OUTPUT ${sm_wrkdir}/Makefile WORKING_DIRECTORY ${sm_wrkdir} - DEPENDS ${sm_wrkdir_exists} - COMMAND ${sm_srcdir}/configure --host=riscv${BITS}-unknown-linux-gnu --with-payload=${linux_vmlinux_stripped} - --enable-logo --with-logo=${confdir}/sifive_logo.txt ${enabled_sm} ${SM_CONFIGURE_ARGS} --with-target-platform=${platform} - COMMENT "Configuring sm" -) -add_custom_target("sm" ALL DEPENDS ${sm_wrkdir}/Makefile "linux" ${sm_patches} WORKING_DIRECTORY ${sm_wrkdir} - COMMAND env CFLAGS='${CFLAGS} -mabi=${ABI} -march=${ISA}' $(MAKE) -C ${sm_wrkdir} +add_patch("sm/opensbi" "opensbi-firmware-secure-boot.patch" ${sm_srcdir}/opensbi sm_patches) +add_custom_target("sm" ALL DEPENDS "linux" ${sm_wrkdir_exists} ${sm_patches} WORKING_DIRECTORY ${sm_wrkdir} + COMMAND $(MAKE) -C ${sm_srcdir}/opensbi O=${sm_wrkdir} PLATFORM_DIR=${sm_srcdir}/plat/${platform} + CROSS_COMPILE=riscv${BITS}-unknown-elf- FW_PAYLOAD_PATH=${linux_image} FW_PAYLOAD=y PLATFORM_RISCV_XLEN=${BITS} + PLATFORM_RISCV_ISA=${ISA} PLATFORM_RISCV_ABI=${ABI} COMMENT "Building sm" ) -if(firesim) - add_patch("riscv-pk" "riscv-pk.firesim.patch" ${sm_srcdir} "sm") -elseif(sifive) - add_patch("riscv-pk" "riscv-pk.sifive.patch" ${sm_srcdir} "sm") -endif() - ############################################################################### ## COMPONENT: tests ############################################################################### @@ -284,9 +260,9 @@ add_custom_target("image-deps" DEPENDS "tests" "driver" ${overlay_root} COMMAND find ${driver_wrkdir} -name "*.ko" -exec cp {} ${overlay_root} \\\\; ) add_custom_target("image" DEPENDS "buildroot" "sm" - COMMAND ${cross_compile}objcopy -S -O binary --change-addresses -0x80000000 ${sm_wrkdir}/bbl ${final_image} COMMENT "Generating image" ) + add_dependencies("buildroot" "image-deps") ############################################################################### @@ -326,7 +302,7 @@ add_custom_command(OUTPUT ${scripts}/run-qemu.sh DEPENDS ${scripts} -nographic \ -machine virt \ -bios ${bootrom_wrkdir}/bootrom.bin \ - -kernel ${sm_wrkdir}/bbl \ + -kernel ${fw_elf} \ ${extra_qemu_options} \ -netdev user,id=net0,net=192.168.100.1/24,dhcpstart=192.168.100.128,hostfwd=tcp::\$\{HOST_PORT\}-:22 \ -device virtio-net-device,netdev=net0 \ diff --git a/bootrom/bootloader.lds b/bootrom/bootloader.lds index 846f4b5b6..ff3df29bb 100644 --- a/bootrom/bootloader.lds +++ b/bootrom/bootloader.lds @@ -12,6 +12,7 @@ SECTIONS *(.reset) *(*) } + . = ALIGN(4); PROVIDE( _dtb = . ); } diff --git a/buildroot b/buildroot index 1fcdfbfb8..9624a001f 160000 --- a/buildroot +++ b/buildroot @@ -1 +1 @@ -Subproject commit 1fcdfbfb8a28b81283575efc3faa92ce4a0d4e56 +Subproject commit 9624a001f9d4314f8bcc9219df717d4c41fb5373 diff --git a/conf/linux32-defconfig b/conf/linux32-defconfig index 9b5fcbc1c..6b2d29bd1 100644 --- a/conf/linux32-defconfig +++ b/conf/linux32-defconfig @@ -1,5 +1,5 @@ CONFIG_ARCH_RV32I=y -CONFIG_CMODEL_MEDLOW=y +CONFIG_CMODEL_MEDANY=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_IKCONFIG=y diff --git a/conf/linux64-defconfig b/conf/linux64-defconfig index a51553e55..c205076a4 100644 --- a/conf/linux64-defconfig +++ b/conf/linux64-defconfig @@ -3126,3 +3126,23 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_UBSAN is not set CONFIG_UBSAN_ALIGNMENT=y # end of Kernel hacking +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_PAGEALLOC=y +CONFIG_DEBUG_VM=y +CONFIG_DEBUG_VM_PGFLAGS=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_PER_CPU_MAPS=y +CONFIG_DEBUG_TIMEKEEPING=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_RWSEMS=y +CONFIG_DEBUG_ATOMIC_SLEEP=y +CONFIG_STACKTRACE=y +CONFIG_DEBUG_LIST=y +CONFIG_DEBUG_PLIST=y +CONFIG_DEBUG_SG=y +CONFIG_RCU_EQS_DEBUG=y +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +CONFIG_DEBUG_INFO=y +# diff --git a/conf/linux64-sifive-defconfig b/conf/linux64-sifive-defconfig index 6c740efa6..d9631b281 100644 --- a/conf/linux64-sifive-defconfig +++ b/conf/linux64-sifive-defconfig @@ -15,6 +15,7 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_EXPERT=y CONFIG_BPF_SYSCALL=y CONFIG_SOC_SIFIVE=y +CONFIG_SOC_VIRT=y CONFIG_SMP=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y @@ -57,11 +58,13 @@ CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_EARLYCON_RISCV_SBI=y CONFIG_HVC_RISCV_SBI=y +CONFIG_VIRTIO_CONSOLE=y CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_VIRTIO=y CONFIG_SPI=y CONFIG_SPI_SIFIVE=y # CONFIG_PTP_1588_CLOCK is not set +CONFIG_POWER_RESET=y CONFIG_DRM=y CONFIG_DRM_RADEON=y CONFIG_DRM_VIRTIO_GPU=y @@ -77,6 +80,10 @@ CONFIG_USB_STORAGE=y CONFIG_USB_UAS=y CONFIG_MMC=y CONFIG_MMC_SPI=y +CONFIG_RTC_CLASS=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y CONFIG_VIRTIO_MMIO=y CONFIG_RPMSG_CHAR=y CONFIG_RPMSG_VIRTIO=y @@ -96,7 +103,31 @@ CONFIG_9P_FS=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_CRYPTO_DEV_VIRTIO=y CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_PAGEALLOC=y +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_DEBUG_VM=y +CONFIG_DEBUG_VM_PGFLAGS=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_PER_CPU_MAPS=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_WQ_WATCHDOG=y +CONFIG_DEBUG_TIMEKEEPING=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_RWSEMS=y +CONFIG_DEBUG_ATOMIC_SLEEP=y +CONFIG_STACKTRACE=y +CONFIG_DEBUG_LIST=y +CONFIG_DEBUG_PLIST=y +CONFIG_DEBUG_SG=y # CONFIG_RCU_TRACE is not set +CONFIG_RCU_EQS_DEBUG=y +CONFIG_DEBUG_BLOCK_EXT_DEVT=y +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_MEMTEST=y CONFIG_CMA=y CONFIG_CMA_AREAS=7 CONFIG_DMA_CMA=y @@ -104,4 +135,4 @@ CONFIG_CMA_SIZE_MBYTES=1024 CONFIG_CMA_SIZE_SEL_MBYTES=y CONFIG_CMA_ALIGNMENT=9 CONFIG_CMDLINE="console=hvc earlycon=sbi cma=1024M@0-4G" -# CONFIG_DEBUG_INFO=y + diff --git a/conf/qemu_riscv32_virt_defconfig b/conf/qemu_riscv32_virt_defconfig index 4bd98aa16..fd55150cb 100644 --- a/conf/qemu_riscv32_virt_defconfig +++ b/conf/qemu_riscv32_virt_defconfig @@ -8,8 +8,9 @@ BR2_RISCV_ABI_ILP32D=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-unknown-linux-gnu" -BR2_TOOLCHAIN_EXTERNAL_GCC_8=y +BR2_TOOLCHAIN_EXTERNAL_GCC_10=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y diff --git a/conf/qemu_riscv64_virt_defconfig b/conf/qemu_riscv64_virt_defconfig index 5478a5e52..b656d41af 100644 --- a/conf/qemu_riscv64_virt_defconfig +++ b/conf/qemu_riscv64_virt_defconfig @@ -8,8 +8,8 @@ BR2_GCC_TARGET_ABI="lp64d" BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)" BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-unknown-linux-gnu" -BR2_TOOLCHAIN_EXTERNAL_GCC_7=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_GCC_10=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/fast-setup.sh b/fast-setup.sh index 4cfb10dcc..f75bf1924 100755 --- a/fast-setup.sh +++ b/fast-setup.sh @@ -2,41 +2,58 @@ set -e +if [ -z "$BITS" ]; then + BITS=64 +fi + +echo "Fast Setup (RV$BITS)"; + +DIST=xenial + +if [[ $(ldconfig -p | grep "libmpfr.so.6") ]]; then + DIST=bionic +fi + +if [ "$BITS" = "64" ]; then + TOOLCHAIN_7Z_FILE=riscv-toolchain-lp64d-rv64gc-2021.01.$DIST.7z +else + TOOLCHAIN_7Z_FILE=riscv-toolchain-ilp32d-rv32gc-2021.01.$DIST.7z + SDK_FLAGS="-DRISCV32=y" +fi + echo "Starting..." -if ( $(command -v riscv64-unknown-linux-gnu-gcc > /dev/null) && - $(command -v riscv64-unknown-elf-gcc > /dev/null) ) +if ( $(command -v riscv$BITS-unknown-linux-gnu-gcc > /dev/null) && + $(command -v riscv$BITS-unknown-elf-gcc > /dev/null) ) then echo "RISCV tools are already installed" else echo "Downloading Prebuilt RISC-V Toolchain... " - # The 1.0 version expected libmpfr.so.4, modern Ubuntu has .6 - TOOL_VER=1.0 - if [[ $(ldconfig -p | grep "libmpfr.so.6") ]]; then - echo "Downloading tools v2.0 (support for libmpfr.so.6)" - TOOL_VER=2.0 + export RISCV=$(pwd)/riscv$BITS + export PATH=$PATH:$RISCV/bin + + if [ -f $TOOLCHAIN_7Z_FILE ]; then + rm $TOOLCHAIN_7Z_FILE; fi - export RISCV=$(pwd)/riscv - export PATH=$PATH:$RISCV/bin - wget https://keystone-enclave.eecs.berkeley.edu/files/${TOOL_VER}.tar.gz + wget https://keystone-enclave.eecs.berkeley.edu/files/$TOOLCHAIN_7Z_FILE # Check tool integrity echo "Verifying prebuilt toolchain integrity..." + sha256sum -c .prebuilt_tools_shasums --status --ignore-missing - if [[ $? != 0 ]] - then - echo "Toolchain binary download incomplete or corrupted. You can build the toolchain locally or try again." - exit 1 + + if [[ $? != 0 ]]; then + echo "Toolchain binary download incomplete or corrupted. You can build the toolchain locally or try again." + exit 1 fi - tar -xzvf ${TOOL_VER}.tar.gz - cd firesim-riscv-tools-prebuilt-${TOOL_VER} - ./installrelease.sh > riscv-tools-install.log - mv distrib riscv - cp -R riscv ../ - cd .. + echo "Extracting Toolchain" + 7za x -y $TOOLCHAIN_7Z_FILE -o./riscv$BITS + echo "Toolchain has been installed in $RISCV" + + rm $TOOLCHAIN_7Z_FILE fi echo "Updating and cloning submodules, this may take a long time" @@ -44,13 +61,13 @@ git config submodule.riscv-gnu-toolchain.update none # shallow clone submodules ahead of time (Git must be > 2.11) if [ ! -e linux/.git ]; then - git clone --shallow-since=2019-09-14 https://github.com/torvalds/linux.git linux + git clone --shallow-since=2020-05-15 https://github.com/torvalds/linux.git linux fi if [ ! -e buildroot/.git ]; then - git clone --shallow-since=2019-08-29 https://github.com/buildroot/buildroot.git buildroot + git clone --shallow-since=2020-04-15 https://github.com/buildroot/buildroot.git buildroot fi if [ ! -e qemu/.git ]; then - git clone --shallow-since=2018-08-14 https://github.com/qemu/qemu.git qemu + git clone --shallow-since=2020-11-15 https://github.com/qemu/qemu.git qemu fi git submodule sync --recursive @@ -60,17 +77,24 @@ git submodule update --init --recursive if [ -z $KEYSTONE_SDK_DIR ] then echo "KEYSTONE_SDK_DIR is not set. Installing from $(pwd)/sdk" - export KEYSTONE_SDK_DIR=$(pwd)/sdk/build + export KEYSTONE_SDK_DIR=$(pwd)/sdk/build$BITS cd sdk mkdir -p build cd build - cmake .. + cmake .. $SDK_FLAGS make make install cd ../.. fi # update source.sh -sed "s|KEYSTONE_SDK_DIR=.*|KEYSTONE_SDK_DIR=$KEYSTONE_SDK_DIR|" -i source.sh +echo "export RISCV=$(pwd)/riscv${BITS}" > ./source.sh +echo "export PATH=$RISCV/bin:\$PATH" >> ./source.sh +echo "export KEYSTONE_SDK_DIR=$KEYSTONE_SDK_DIR" >> ./source.sh echo "RISC-V toolchain and Keystone SDK have been fully setup" +echo "" +echo " * Notice: run the following command to update enviroment variables *" +echo "" +echo " source ./source.sh" +echo "" diff --git a/linux b/linux index 7111951b8..3d77e6a88 160000 --- a/linux +++ b/linux @@ -1 +1 @@ -Subproject commit 7111951b8d4973bda27ff663f2cf18b663d15b48 +Subproject commit 3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162 diff --git a/linux-keystone-driver b/linux-keystone-driver index 2e52082d0..0dd63b054 160000 --- a/linux-keystone-driver +++ b/linux-keystone-driver @@ -1 +1 @@ -Subproject commit 2e52082d08f8c212570c479e1a7f9fe32c2f4ae8 +Subproject commit 0dd63b0546e077b837b3444278457e0fcbe84af4 diff --git a/patches/linux/linux32.patch b/patches/linux/linux32.patch index c16bbfa26..ab065f649 100644 --- a/patches/linux/linux32.patch +++ b/patches/linux/linux32.patch @@ -1,15 +1,3 @@ -diff --git arch/riscv/Kconfig arch/riscv/Kconfig -index 59a4727ecd..b9154739b3 100644 ---- arch/riscv/Kconfig -+++ arch/riscv/Kconfig -@@ -12,6 +12,7 @@ config 32BIT - - config RISCV - def_bool y -+ select ARCH_32BIT_OFF_T if !64BIT - # even on 32-bit, physical (and DMA) addresses are > 32-bits - select PHYS_ADDR_T_64BIT - select OF diff --git arch/riscv/include/uapi/asm/unistd.h arch/riscv/include/uapi/asm/unistd.h index 13ce76cc5a..95217ebb63 100644 --- arch/riscv/include/uapi/asm/unistd.h @@ -28,37 +16,24 @@ index 13ce76cc5a..95217ebb63 100644 #include -diff --git arch/riscv/kernel/vdso/Makefile arch/riscv/kernel/vdso/Makefile -index 49a5852fd0..725dfe8c93 100644 ---- arch/riscv/kernel/vdso/Makefile -+++ arch/riscv/kernel/vdso/Makefile -@@ -3,11 +3,9 @@ - - # Symbols present in the vdso - vdso-syms = rt_sigreturn --ifdef CONFIG_64BIT - vdso-syms += gettimeofday - vdso-syms += clock_gettime - vdso-syms += clock_getres --endif - vdso-syms += getcpu - vdso-syms += flush_icache - diff --git arch/riscv/mm/init.c arch/riscv/mm/init.c -index 42bf939693..49d7da7d86 100644 +index 736de6c873..ad9ebf2e9a 100644 --- arch/riscv/mm/init.c +++ arch/riscv/mm/init.c -@@ -11,6 +11,7 @@ - #include - #include - #include -+#include +@@ -22,6 +22,8 @@ - #include - #include -@@ -444,4 +445,5 @@ void __init paging_init(void) - setup_vm_final(); + #include "../kernel/head.h" + ++#include ++ + unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] + __page_aligned_bss; + EXPORT_SYMBOL(empty_zero_page); +@@ -524,6 +526,7 @@ void __init paging_init(void) + sparse_init(); setup_zero_page(); zone_sizes_init(); + dma_contiguous_reserve(memblock_end_of_DRAM()); } + + #ifdef CONFIG_SPARSEMEM_VMEMMAP diff --git a/patches/qemu/qemu-pmp-bug.patch b/patches/qemu/qemu-pmp-bug.patch deleted file mode 100644 index d13a93ecc..000000000 --- a/patches/qemu/qemu-pmp-bug.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git target/riscv/pmp.c target/riscv/pmp.c -index 958c7502a0..7a9fd415ba 100644 ---- target/riscv/pmp.c -+++ target/riscv/pmp.c -@@ -232,6 +232,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr, - { - int i = 0; - int ret = -1; -+ int pmp_size = 0; - target_ulong s = 0; - target_ulong e = 0; - pmp_priv_t allowed_privs = 0; -@@ -241,11 +242,21 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr, - return true; - } - -+ /* -+ * if size is unknown (0), assume that all bytes -+ * from addr to the end of the page will be accessed. -+ */ -+ if (size == 0) { -+ pmp_size = -(addr | TARGET_PAGE_MASK); -+ } else { -+ pmp_size = size; -+ } -+ - /* 1.10 draft priv spec states there is an implicit order - from low to high */ - for (i = 0; i < MAX_RISCV_PMPS; i++) { - s = pmp_is_in_range(env, i, addr); -- e = pmp_is_in_range(env, i, addr + size - 1); -+ e = pmp_is_in_range(env, i, addr + pmp_size - 1); - - /* partially inside */ - if ((s + e) == 1) { --- -2.23.0 - diff --git a/patches/qemu/qemu-secure-boot.patch b/patches/qemu/qemu-secure-boot.patch index cdc9de0e4..5b3508ebe 100644 --- a/patches/qemu/qemu-secure-boot.patch +++ b/patches/qemu/qemu-secure-boot.patch @@ -1,31 +1,31 @@ diff --git hw/riscv/virt.c hw/riscv/virt.c -index 25faf3b417..47bff37d27 100644 +index 85ec9e22aa..ed8442c68f 100644 --- hw/riscv/virt.c +++ hw/riscv/virt.c -@@ -55,7 +55,7 @@ static const struct MemmapEntry { +@@ -56,7 +56,7 @@ static const struct MemmapEntry { hwaddr size; } virt_memmap[] = { [VIRT_DEBUG] = { 0x0, 0x100 }, - [VIRT_MROM] = { 0x1000, 0x11000 }, + [VIRT_MROM] = { 0x1000, 0x40000 }, [VIRT_TEST] = { 0x100000, 0x1000 }, + [VIRT_RTC] = { 0x101000, 0x1000 }, [VIRT_CLINT] = { 0x2000000, 0x10000 }, - [VIRT_PLIC] = { 0xc000000, 0x4000000 }, -@@ -405,8 +405,8 @@ static void riscv_virt_board_init(MachineState *machine) +@@ -506,8 +506,8 @@ static void riscv_virt_board_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[VIRT_MROM].base, mask_rom); - + - riscv_find_and_load_firmware(machine, BIOS_FILENAME, - memmap[VIRT_DRAM].base); + //riscv_find_and_load_firmware(machine, BIOS_FILENAME, + // memmap[VIRT_DRAM].base); - + if (machine->kernel_filename) { - uint64_t kernel_entry = riscv_load_kernel(machine->kernel_filename); -@@ -423,6 +423,50 @@ static void riscv_virt_board_init(MachineState *machine) - } + uint64_t kernel_entry = riscv_load_kernel(machine->kernel_filename, +@@ -533,6 +533,52 @@ static void riscv_virt_board_init(MachineState *machine) + start_addr = virt_memmap[VIRT_FLASH].base; } - + + if (machine->firmware) { + qemu_log("overriding secure boot ROM (file: %s)\n",machine->firmware); + /* reset_vector */ @@ -54,18 +54,20 @@ index 25faf3b417..47bff37d27 100644 + memmap[VIRT_MROM].base, &address_space_memory); + + /* copy in the device tree */ -+ /* copy in the device tree */ -+ if (fdt_pack(s->fdt) || fdt_totalsize(s->fdt) > ++ if (fdt_pack(s->fdt) || fdt_totalsize(s->fdt) > + memmap[VIRT_MROM].size - bootloader_size) { + error_report("not enough space to store device-tree"); + exit(1); + } + qemu_fdt_dumpdtb(s->fdt, fdt_totalsize(s->fdt)); ++ long fdt_location = memmap[VIRT_MROM].base + bootloader_size; ++ // align fdt location with word ++ fdt_location = ((fdt_location + 0x4 - 1) & ~(0x4 - 1)); + rom_add_blob_fixed_as("mrom.fdt", s->fdt, fdt_totalsize(s->fdt), -+ memmap[VIRT_MROM].base + bootloader_size, ++ fdt_location, + &address_space_memory); -+ -+ qemu_log("fdt dumped at %ld\n", memmap[VIRT_MROM].base + bootloader_size); ++ ++ qemu_log("fdt dumped at %ld\n", fdt_location); + + free(bootloader_bytes); + } else { @@ -73,20 +75,20 @@ index 25faf3b417..47bff37d27 100644 /* reset vector */ uint32_t reset_vec[8] = { 0x00000297, /* 1: auipc t0, %pcrel_hi(dtb) */ -@@ -446,6 +490,7 @@ static void riscv_virt_board_init(MachineState *machine) - } +@@ -557,6 +603,7 @@ static void riscv_virt_board_init(MachineState *machine) rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), memmap[VIRT_MROM].base, &address_space_memory); -+ - + ++ /* copy in the device tree */ if (fdt_pack(s->fdt) || fdt_totalsize(s->fdt) > -@@ -457,6 +502,8 @@ static void riscv_virt_board_init(MachineState *machine) - rom_add_blob_fixed_as("mrom.fdt", s->fdt, fdt_totalsize(s->fdt), + memmap[VIRT_MROM].size - sizeof(reset_vec)) { +@@ -568,6 +615,8 @@ static void riscv_virt_board_init(MachineState *machine) memmap[VIRT_MROM].base + sizeof(reset_vec), &address_space_memory); -+ + + } - ++ /* create PLIC hart topology configuration string */ plic_hart_config_len = (strlen(VIRT_PLIC_HART_CONFIG) + 1) * smp_cpus; + plic_hart_config = g_malloc0(plic_hart_config_len); diff --git a/patches/riscv-pk/riscv-pk.firesim.patch b/patches/riscv-pk/riscv-pk.firesim.patch deleted file mode 100644 index b704ebeeb..000000000 --- a/patches/riscv-pk/riscv-pk.firesim.patch +++ /dev/null @@ -1,53 +0,0 @@ -diff --git machine/htif.c machine/htif.c -index 44ec2dd..1f0e193 100644 ---- machine/htif.c -+++ machine/htif.c -@@ -125,14 +125,15 @@ static void htif_done(const struct fdt_scan_node *node, void *extra) - - void query_htif(uintptr_t fdt) - { -- struct fdt_cb cb; -- struct htif_scan scan; -+ htif = 1; -+ //struct fdt_cb cb; -+ //struct htif_scan scan; - -- memset(&cb, 0, sizeof(cb)); -- cb.open = htif_open; -- cb.prop = htif_prop; -- cb.done = htif_done; -- cb.extra = &scan; -+ //memset(&cb, 0, sizeof(cb)); -+ //cb.open = htif_open; -+ //cb.prop = htif_prop; -+ //cb.done = htif_done; -+ //cb.extra = &scan; - -- fdt_scan(fdt, &cb); -+ //fdt_scan(fdt, &cb); - } -diff --git machine/uart.c machine/uart.c -index 0645500..4494368 100644 ---- machine/uart.c -+++ machine/uart.c -@@ -57,6 +57,7 @@ static void uart_done(const struct fdt_scan_node *node, void *extra) - - // Enable Rx/Tx channels - uart = (void*)(uintptr_t)scan->reg; -+ uart[UART_REG_DIV] = 868; - uart[UART_REG_TXCTRL] = UART_TXEN; - uart[UART_REG_RXCTRL] = UART_RXEN; - } -diff --git machine/uart.h machine/uart.h -index 51e951f..d969356 100644 ---- machine/uart.h -+++ machine/uart.h -@@ -9,7 +9,7 @@ extern volatile uint32_t* uart; - #define UART_REG_RXFIFO 1 - #define UART_REG_TXCTRL 2 - #define UART_REG_RXCTRL 3 --#define UART_REG_DIV 4 -+#define UART_REG_DIV 6 - - #define UART_TXEN 0x1 - #define UART_RXEN 0x1 diff --git a/patches/riscv-pk/riscv-pk.sifive.patch b/patches/riscv-pk/riscv-pk.sifive.patch deleted file mode 100644 index 28605a103..000000000 --- a/patches/riscv-pk/riscv-pk.sifive.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git bbl/bbl.c bbl/bbl.c -index 1b96a9d..98fcf50 100644 ---- bbl/bbl.c -+++ bbl/bbl.c -@@ -14,7 +14,7 @@ static uintptr_t dtb_output() - { - extern char _payload_end; - uintptr_t end = (uintptr_t) &_payload_end; -- return (end + MEGAPAGE_SIZE - 1) / MEGAPAGE_SIZE * MEGAPAGE_SIZE; -+ return (((end + MEGAPAGE_SIZE - 1) / MEGAPAGE_SIZE) + 16) * MEGAPAGE_SIZE; - } - - static void filter_dtb(uintptr_t source) -@@ -22,6 +22,7 @@ static void filter_dtb(uintptr_t source) - uintptr_t dest = dtb_output(); - uint32_t size = fdt_size(source); - memcpy((void*)dest, (void*)source, size); -+ printm("Relocated DTB from %lx to %lx\n", source, dest); - - // Remove information from the chained FDT - filter_harts(dest, &disabled_hart_mask); diff --git a/patches/sm/opensbi/opensbi-firmware-secure-boot.patch b/patches/sm/opensbi/opensbi-firmware-secure-boot.patch new file mode 100644 index 000000000..8035d90b8 --- /dev/null +++ b/patches/sm/opensbi/opensbi-firmware-secure-boot.patch @@ -0,0 +1,44 @@ +diff --git firmware/fw_base.ldS firmware/fw_base.ldS +index 0ac75f2..9aa9c1a 100644 +--- firmware/fw_base.ldS ++++ firmware/fw_base.ldS +@@ -79,3 +79,39 @@ + . = ALIGN(0x1000); /* Need this to create proper sections */ + + PROVIDE(_fw_end = .); ++ ++ * # Sanctum params */ ++ /* ================ */ ++ . = 0x801ff000; /* the last page before the payload */ ++ ++ /* ## manufacturer_keys : */ ++ ++ /* 32 Bytes : manufacturer public key */ ++ PROVIDE( sanctum_m_public_key = . ); ++ . += 0x20; ++ ++ /* 32 Bytes : device public key */ ++ PROVIDE( sanctum_dev_public_key = . ); ++ . += 0x20; ++ ++ /* 64 Bytes : device secret key */ ++ PROVIDE( sanctum_dev_secret_key = . ); ++ . += 0x40; ++ ++ /* ## security_monitor_keys : */ ++ ++ /* 64 Bytes : security monitor hash */ ++ PROVIDE( sanctum_sm_hash = . ); ++ . += 0x40; ++ ++ /* 32 Bytes : security monitor public key */ ++ PROVIDE( sanctum_sm_public_key = . ); ++ . += 0x20; ++ ++ /* 64 Bytes : security monitor secret key */ ++ PROVIDE( sanctum_sm_secret_key = . ); ++ . += 0x40; ++ ++ /* 64 Bytes : security monitor's signature by device */ ++ PROVIDE( sanctum_sm_signature = . ); ++ . += 0x40; diff --git a/qemu b/qemu index 146aa0f10..fdd76fecd 160000 --- a/qemu +++ b/qemu @@ -1 +1 @@ -Subproject commit 146aa0f104bb3bf88e43c4082a0bfc4bbda4fbd8 +Subproject commit fdd76fecdde1ad444ff4deb7f1c4f7e4a1ef97d6 diff --git a/riscv-gnu-toolchain b/riscv-gnu-toolchain index 1b80cbe97..407cdc0ce 160000 --- a/riscv-gnu-toolchain +++ b/riscv-gnu-toolchain @@ -1 +1 @@ -Subproject commit 1b80cbe97d2c29212398d3b74ddc54718ad32e23 +Subproject commit 407cdc0ceb0f6d760342ac6cf1b890378f5a81bd diff --git a/riscv-pk b/riscv-pk deleted file mode 160000 index f855a56f9..000000000 --- a/riscv-pk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f855a56f919142a0fa9987be79a3c1ad09384e66 diff --git a/rv32-setup.sh b/rv32-setup.sh deleted file mode 100755 index 5f1d553c5..000000000 --- a/rv32-setup.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -set -e - -echo "Starting RV32 Instllation..." - -if ( $(command -v riscv32-unknown-linux-gnu-gcc > /dev/null) && - $(command -v riscv32-unknown-elf-gcc > /dev/null) ) -then - echo "RISCV32 tools are already installed" -else - echo "Downloading Prebuilt RISC-V 32 Toolchain... " - - export RISCV32=$(pwd)/riscv32 - export PATH=$PATH:$RISCV32/bin - wget https://keystone-enclave.eecs.berkeley.edu/files/rv32gc.tar.gz - - # Check tool integrity - echo "Verifying prebuilt toolchain integrity..." - sha256sum -c .prebuilt_tools_shasums --status --ignore-missing - if [[ $? != 0 ]] - then - echo "Toolchain binary download incomplete or corrupted. You can build the toolchain locally or try again." - exit 1 - fi - - tar -xzvf rv32gc.tar.gz - mv riscv32gc riscv32 - rm rv32gc.tar.gz - echo "Toolchain has been installed in $RISCV32" -fi diff --git a/sdk b/sdk index ac1a4f7e3..702fa3ce5 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit ac1a4f7e3a0227090879207bb8d309ad72e2554d +Subproject commit 702fa3ce50853965cf235c91dd048c909330758a diff --git a/setup.sh b/setup.sh deleted file mode 100755 index c1be7fd10..000000000 --- a/setup.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e - -git submodule sync --recursive -git submodule update --init --recursive - -mkdir riscv -export RISCV=$(pwd)/riscv -export PATH=$PATH:$RISCV/bin -cd riscv-gnu-toolchain -./configure --prefix=$RISCV -make && make linux -cd .. - -# build SDK if not present -if [ -z $KEYSTONE_SDK_DIR ] -then - echo "KEYSTONE_SDK_DIR is not set. Installing from $(pwd)/sdk" - export KEYSTONE_SDK_DIR=$(pwd)/sdk/build - cd sdk - mkdir -p build - cd build - cmake .. - make - make install - cd ../.. -fi - -# update source.sh -sed "s|KEYSTONE_SDK_DIR=.*|KEYSTONE_SDK_DIR=$KEYSTONE_SDK_DIR|" -i source.sh - -echo "RISC-V toolchain and Keystone SDK have been fully setup" diff --git a/sm b/sm new file mode 160000 index 000000000..5e42d3a93 --- /dev/null +++ b/sm @@ -0,0 +1 @@ +Subproject commit 5e42d3a9322a5a588a6f7531a5ae4fc66b04d1da diff --git a/source.sh b/source.sh deleted file mode 100644 index 4bb8f3a76..000000000 --- a/source.sh +++ /dev/null @@ -1,3 +0,0 @@ -export RISCV=$(pwd)/riscv -export PATH=$RISCV/bin:$PATH -export KEYSTONE_SDK_DIR=$(pwd)/sdk/build diff --git a/source32.sh b/source32.sh deleted file mode 100644 index 4c7162a81..000000000 --- a/source32.sh +++ /dev/null @@ -1,3 +0,0 @@ -export RISCV=$(pwd)/riscv32 -export PATH=$RISCV/bin:$PATH -export KEYSTONE_SDK_DIR=$(pwd)/sdk/build From 58f6b28b6ca0849bc96b40792b93b7ca7fb4a2bc Mon Sep 17 00:00:00 2001 From: Catherine Lu Date: Thu, 11 Feb 2021 09:02:40 +0000 Subject: [PATCH 07/11] Update debug docs for OpenSBI --- docs/source/Getting-Started/How-to-Debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/Getting-Started/How-to-Debug.md b/docs/source/Getting-Started/How-to-Debug.md index 8f648db5a..a0c1223f5 100644 --- a/docs/source/Getting-Started/How-to-Debug.md +++ b/docs/source/Getting-Started/How-to-Debug.md @@ -28,7 +28,7 @@ For example, if you want to debug with the `bbl` symbols ```bash # in your -riscv64-unknown-linux-gnu-gdb ./riscv-pk.build/bbl +riscv64-unknown-linux-gnu-gdb ./sm.build/platform/generic/firmware/fw_payload.elf ``` If you want to debug with the kernel's debug information From 1705815528d3a174b6162e31a94339e8a452758a Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Thu, 18 Feb 2021 20:42:52 +0000 Subject: [PATCH 08/11] Document Update for OpenSBI port --- .../Security-Monitor-Platform-Build.rst | 46 -------------- .../How-Keystone-Works/Keystone-Basics.rst | 7 +-- .../How-Keystone-Works/RISC-V-Background.rst | 9 +-- .../Getting-Started/Install-Dependencies.rst | 6 +- .../Getting-Started/QEMU-Compile-Sources.rst | 42 ++++--------- .../Getting-Started/QEMU-Setup-Repository.rst | 61 +++---------------- .../Running-Keystone-with-QEMU.rst | 4 +- docs/source/Getting-Started/index.rst | 40 ++++++------ docs/source/Security-Monitor/index.rst | 11 +--- docs/source/conf.py | 10 +-- 10 files changed, 60 insertions(+), 176 deletions(-) delete mode 100644 docs/source/Building-Components/Security-Monitor-Platform-Build.rst diff --git a/docs/source/Building-Components/Security-Monitor-Platform-Build.rst b/docs/source/Building-Components/Security-Monitor-Platform-Build.rst deleted file mode 100644 index 87f028a9b..000000000 --- a/docs/source/Building-Components/Security-Monitor-Platform-Build.rst +++ /dev/null @@ -1,46 +0,0 @@ -Building the Keystone Security Monitor -=========================================== - -The security monitor (SM) is the core component of Keystone. - -The SM is implemented on top of Berkeley Bootloader (bbl). -You can find the latest SM at ``_ (upstream bbl: -``_). -Most of the Keystone SM source code lives in ``sm`` directory. - -:: - - git clone https://github.com/keystone-enclave/riscv-pk - cd riscv-pk - -If you have followed :doc:`Quick Start <../Getting-Started/Running-Keystone-with-QEMU>`, the build directory is -already created at ``hifive-work/riscv-pk``. -Otherwise, create a build directory. - -:: - - mkdir build - cd build - -Configure and build ``bbl``. The SM can be built by additional flags ``--enable-sm`` and -``--with-target-platform`` at configuration. - -:: - - ../configure \ - --enable-sm \ - --with-target-platform=default \ - --host=riscv64-unknown-linux-gnu \ - --with-payload= - - make - -The Keystone Security Monitor also has an experimental port to the `Rust programming language `_. If you would like to try this version of the SM, specify ``--enable-sm_rs`` instead of using ``--enable-sm``. - -You may also wish to compile the SM with optimizations enabled. To do this, use the configure flag ``--enable-opt=2``. - -Running ``make`` witll generate the boot image ``bbl`` in the build directory. Use it to boot the machine. - -Now, we will customize the SM for a FU540 chip on HiFive Unleashed board. -Currently, we only have one experimental platform configuration for FU540. -If you wish to add your platform as a target, please submit a proposal to `GitHub `_. diff --git a/docs/source/Getting-Started/How-Keystone-Works/Keystone-Basics.rst b/docs/source/Getting-Started/How-Keystone-Works/Keystone-Basics.rst index 8c8ced8db..c5f033e36 100644 --- a/docs/source/Getting-Started/How-Keystone-Works/Keystone-Basics.rst +++ b/docs/source/Getting-Started/How-Keystone-Works/Keystone-Basics.rst @@ -34,7 +34,7 @@ Keystone Workflow .. figure:: /_static/images/keystone_workflow.png Keystone is a framework wherein both *platform provider* and *enclave developer* customize elements of the system to their needs. -This involves two separate workflows: one for each of the platform provider and the enclave developer. +This involves two separate workflows: one for each of the platform provider and the enclave developer. Provisioning the Security Monitor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -43,12 +43,9 @@ A **platform provider** the party who provides a machine which can run Keystone enclaves. In the *provisioning* stage, the platform provider compiles the security monitor and deploys it to the machine. -The platform provider +The platform provider configures(❶), builds(❷), and then deploys(❸) the security monitor with target hardware. -See :doc:`/Building-Components/Security-Monitor-Platform-Build` to learn how to build and -deploy the security monitor. - Developing the Enclave ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/source/Getting-Started/How-Keystone-Works/RISC-V-Background.rst b/docs/source/Getting-Started/How-Keystone-Works/RISC-V-Background.rst index 323f8a590..091b68e78 100644 --- a/docs/source/Getting-Started/How-Keystone-Works/RISC-V-Background.rst +++ b/docs/source/Getting-Started/How-Keystone-Works/RISC-V-Background.rst @@ -8,7 +8,7 @@ RISC-V presents us with a number of benefits besides just being open-source: * RISC-V has added security-oriented primitives (notably Physical Memory Protection) that enable efficient isolation. -* RISC-V is an evolving and community driven ISA. Keystone can explore the design space of useful +* RISC-V is an evolving and community driven ISA. Keystone can explore the design space of useful security features, and feed good ideas back into the standards themselves. * RISC-V has a constantly expanding world of open-source cores and products. This gives Keystone a @@ -30,10 +30,11 @@ ISA Compatibility Currently, Keystone is compatible with a specific subset of RISC-V ISA as follows: * Keystone requires all of three privilege modes (M/S/U) to support dynamic user-level isolation in Linux machines. -* Keystone only supports RV64 (64-bit) with Sv39 addressing mode which translates 39-bit virtual addresses into 50-bit physical addresses based on a 3-level page table. - -We're actively working on extending compatibility of Keystone by supporting static isolation in M/U-only systems as well as RV32. +* rv64gc-lp64d (Sv39 virutal addressing mode) +* rv32gc-ilp32d (Sv32 virtual addressing mode) +Recently, Keystone enclaves in M/U-only machines are prototyped in FreeRTOS. +We are planning to upstream the version in the near future. RISC-V Privilieged ISA ----------------------------------- diff --git a/docs/source/Getting-Started/Install-Dependencies.rst b/docs/source/Getting-Started/Install-Dependencies.rst index 559318306..659e6d860 100644 --- a/docs/source/Getting-Started/Install-Dependencies.rst +++ b/docs/source/Getting-Started/Install-Dependencies.rst @@ -14,16 +14,16 @@ Ubuntu gperf libgmp-dev libmpc-dev libmpfr-dev libtool texinfo tmux \ patchutils zlib1g-dev wget bzip2 patch vim-common lbzip2 python \ pkg-config libglib2.0-dev libpixman-1-dev libssl-dev screen \ - device-tree-compiler expect makeself unzip cpio rsync cmake + device-tree-compiler expect makeself unzip cpio rsync cmake p7zip-full .. note:: You need Git version >= 2.11.0 to use ``./fast-setup.sh``, because the script uses ``--shallow-clone`` for faster submodule initializtion. -In order to use the Rust version of the security monitor, you will also need to install `rustup `_ and `llvm-9 `_ (available in Ubuntu repositories in versions 18.04 and above). Then, run the following commands: +In order to use the Rust version of the security monitor (only available for 0.X versions), you will also need to install `rustup `_ and `llvm-9 `_ (available in Ubuntu repositories in versions 18.04 and above). Then, run the following commands: :: - + rustup toolchain install nightly rustup +nightly component add rust-src rustup +nightly target add riscv64gc-unknown-none-elf diff --git a/docs/source/Getting-Started/QEMU-Compile-Sources.rst b/docs/source/Getting-Started/QEMU-Compile-Sources.rst index 2d714d980..99f7f35fe 100644 --- a/docs/source/Getting-Started/QEMU-Compile-Sources.rst +++ b/docs/source/Getting-Started/QEMU-Compile-Sources.rst @@ -1,7 +1,7 @@ Compile Sources ----------------------------- -Build All Components (RV64) +Build All Components ############################################################## We use `CMake `_ as a build system. It lets you generate the Makefile for a @@ -16,6 +16,14 @@ given configuration. cmake .. make +Here are some useful CMake flags you can add: + +* ``-Dinitramfs=y``: This will compile the Linux kernel with buildroot image as the initramfs. +* ``-DRISCV32=y``: This will conrigure the build with RV32. You should have ran ``BITS=32 ./fast-setup.sh``. +* ``-DLINUX_SIFIVE=y``: This is a temporary flag for HiFive Unleashed board. +* ``-DSM_PLATFORM=``: The security monitor will be compiled with platform sources in ``sm/plat/``. The default value is "generic". +* ``-DUSE_RUST_SM=y``: Use the Rust port of the security monitor. Curently not supported in v1.0. + In order to build the driver and the tests, and have the final images for QEMU, you need to run :: @@ -23,25 +31,11 @@ In order to build the driver and the tests, and have the final images for QEMU, # in your make image -This updates all components except QEMU and the boot ROM. - -If you want to use ``initramfs``, use the following flag when running ``cmake`` - -:: - - cmake .. -Dinitramfs=y - -If you want to use the Rust port of the Security Monitor, run ``cmake`` with ``-DUSE_RUST_SM=y``. - -Please refer to the following sections if you want to learn how to build each individual component. -Otherwise, skip to :ref:`LaunchQEMU`. - -Most of the components will be built out-of-tree; in ``/.build`` -directory. - If you run into any issues, check our ``CMakeLists.txt`` and as it will always have the up-to-date build recipes. +Please refer to the following sections if you want to learn how to build each individual component. +Otherwise, skip to :ref:`LaunchQEMU`. Build Buildroot ############################################################## @@ -85,7 +79,7 @@ The patch is located at ``patches/linux/`` # in your make linux -Build Berkeley Bootloader (BBL) with Keystone Security Monitor +Build OpenSBI Firmware with Keystone Security Monitor ############################################################## The following command will build the M-mode security monitor. @@ -95,18 +89,6 @@ The following command will build the M-mode security monitor. # in your make sm -Optionally, you can specify the target platform when you run ``cmake``. - -:: - - # in your - cmake .. -DSM_PLATFORM=fu540 - make sm - -The default platform is "default", which does not have any platform-specific features. -See ``riscv-pk/sm/platform/`` for available platforms. -See :doc:`../Building-Components/Security-Monitor-Platform-Build` for details. - Build Root-of-Trust Boot ROM ############################################################## diff --git a/docs/source/Getting-Started/QEMU-Setup-Repository.rst b/docs/source/Getting-Started/QEMU-Setup-Repository.rst index a6f3ff488..57c796154 100644 --- a/docs/source/Getting-Started/QEMU-Setup-Repository.rst +++ b/docs/source/Getting-Started/QEMU-Setup-Repository.rst @@ -13,19 +13,22 @@ Quick Setup You can quickly setup everything by running ``./fast-setup.sh``. This script requires Git >= 2.11.0. +If you want to use a different version of toolchain (e.g., compiled the toolchain from source), +make sure that your toolchain binaries are in your PATH before running this command. + :: ./fast-setup.sh This will download pre-compiled RISC-V tools and extract it to -``riscv`` directory and setup submodules. +``riscv64`` directory and setup submodules. -If you want to compile RISC-V tools from source code, run -``./setup.sh`` instead. This may be necessary on some platforms due to -library issues. +.. note:: + If you want RV32 setup, you should do ``BITS=32 ./fast-setup.sh`` instead. The toolchain will be + installed in ``riscv32`` directory. Also, the SDK will be compiled and installed using RV32 toolchain. The script also installs Keystone SDK if ``KEYSTONE_SDK_DIR`` environment variable is not set. -The default install directory of Keystone SDK is ``$(pwd)/sdk/build``. +The default install directory of Keystone SDK is ``$(pwd)/sdk/build64`` (``$(pwd)/sdk/build32`` for RV32). If you want to change the install directory, please follow `SDK's README `_ before running ``fast-setup.sh``. @@ -49,51 +52,3 @@ For example, if you're using bash, then try: cat source.sh >> $HOME/.bashrc -.. _QEMUSetupManual: - -Manual Setup -######################## - -If you used ``./fast-setup.sh`` or ``./setup.sh``, you may skip this section. -This section explains the manual way of setting up the repository. - -First, sync and update all the submodules. -You may need these commands whenever you checkout to a different branch (e.g., ``dev``, ``master``, -etc). - -:: - - git submodule sync --recursive - git submodule update --init --recursive - -For additional inormation, see `git submodules `_. - -Install the RISC-V GNU toolchain for cross compilation. -See `riscv-gnu-toolchain `_ for details. - -:: - - cd riscv-gnu-toolchain - ./configure --prefix=$(pwd)/../riscv - make; make linux - -Install the Keystone SDK by following -`SDK's README `_. - -:: - - cd build - export KEYSTONE_SDK_DIR= - cmake .. - make - make install - -To keep environment variables, add following lines to your ``.bashrc``. - -:: - - export RISCV=/riscv - export PATH=$PATH:$RISCV/bin - export KEYSTONE_SDK_DIR= - -You can also manually run ``source source.sh`` to set the environment variables. diff --git a/docs/source/Getting-Started/Running-Keystone-with-QEMU.rst b/docs/source/Getting-Started/Running-Keystone-with-QEMU.rst index c0d77b76f..f386d558a 100644 --- a/docs/source/Getting-Started/Running-Keystone-with-QEMU.rst +++ b/docs/source/Getting-Started/Running-Keystone-with-QEMU.rst @@ -5,8 +5,6 @@ Testing Keystone with QEMU The latest QEMU supports RISC-V ISA. Keystone was tested in a QEMU fork in RISC-V (`GitHub `_). -The upstream QEMU is not currently supported due to several remaining issues (Ex: `See GitHub issue `_). -Fixes will be upstreamed in the future. If you just want to quickly test Keystone with QEMU, you can start with Docker, which will take <10 minutes. @@ -14,6 +12,7 @@ Setting the environment by yourself (without Docker) will take 1-2 hours. Start With Docker ----------------------- + The fastest way to try Keystone is through our `Docker `_ image (Ubuntu 18.04). The image contains all of our source code, as well as a compiled kernel, QEMU, example binaries, SDK, and GNU tools. @@ -51,7 +50,6 @@ In the interactive mode, you can run tests with the following commands: cd build make run-tests - Start Without Docker ----------------------- diff --git a/docs/source/Getting-Started/index.rst b/docs/source/Getting-Started/index.rst index b5804970a..5af1db9ee 100644 --- a/docs/source/Getting-Started/index.rst +++ b/docs/source/Getting-Started/index.rst @@ -59,22 +59,24 @@ gitmodules or directories. This is a brief overview of them. :: - + keystone/ - |-- bootrom/ - | # Keystone bootROM for QEMU virt board, including trusted boot chain. - |-- buildroot/ - | # Linux buildroot. Builds a minimal working Linux image for our test platforms. - |-- docs/ - | # Contains read-the-docs formatted and hosted documentation, such as this article. - |-- riscv-gnu-toolchain/ - | # Unmodified toolchain for building riscv targets. Required to build all other components. - |-- linux-keystone-driver/ - | # A loadable kernel module for Keystone enclave. - |-- riscv-linux/ - | # Linux kernel with RISC-V patches. We use 4.15 with patches for the loadable module support. - |-- riscv-pk/ - | # Berkeley Bootloader (bbl) firmware + Keystone security monitor - |-- riscv-qemu/ - | # QEMU with RISC-V patches - +-- sdk/ - # Tools, libraries, and example apps for building enclaves on Keystone + + keystone/ + |-- patches/ + | # required patches for submodules + |-- bootrom/ + | # Keystone bootROM for QEMU virt board, including trusted boot chain. + |-- buildroot/ + | # Linux buildroot. Builds a minimal working Linux image for our test platforms. + |-- docs/ + | # Contains read-the-docs formatted and hosted documentation, such as this article. + |-- riscv-gnu-toolchain/ + | # Unmodified toolchain for building riscv targets. Required to build all other components. + |-- linux-keystone-driver/ + | # A loadable kernel module for Keystone enclave. + |-- linux/ + | # Linux kernel + |-- sm/ + | # OpenSBI firmware + Keystone security monitor + |-- qemu/ + | # QEMU + +-- sdk/ + # Tools, libraries, and example apps for building enclaves on Keystone diff --git a/docs/source/Security-Monitor/index.rst b/docs/source/Security-Monitor/index.rst index 139a25f52..415fd652b 100644 --- a/docs/source/Security-Monitor/index.rst +++ b/docs/source/Security-Monitor/index.rst @@ -12,17 +12,12 @@ The SM provides the following functionality: 4. System PMP Synchronization 5. Side-Channel Defenses -.. attention:: - - Version 0.1 only implements 1, 2, and 3, supporting single-threaded enclave. - The security monitor must be verified by the *root of trust* in hardware before being trusted. After the root of trust measures the SM it generates a keypair for remote attestation, signs the public key, and then continues booting. See `Chain of Trust <#>`_ for details. The OS and enclaves may call SM functions using the supervisor binary interface (SBI), -which is implemented in RISC-V environment calls (i.e., ``ecall`` instruction). -See `SBI Documentation <#>`_ for details. +For detailed specification, see `SBI Documentation `_. Specific platforms ------------------ @@ -161,7 +156,7 @@ You can re-configure and re-build the ``bbl`` in the build directory: --enable-sm \ --with-target-platform= \ --host=riscv64-unknown-linux-gnu \ - --with-payload= + --with-payload= make @@ -176,7 +171,7 @@ The platform directory ``sm/platform`` contains all current platform specific su Currently that is: ``default`` and ``fu540`` directories. - + System PMP Synchronization ------------------------------------- diff --git a/docs/source/conf.py b/docs/source/conf.py index f8d099695..b866f1dce 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,13 +24,13 @@ # -- Project information ----------------------------------------------------- project = u'Keystone Enclave' -copyright = u'2018, Dayeol Lee, and David Kohlbrenner' -author = u'Dayeol Lee, and David Kohlbrenner' +copyright = u'2021, Keystone Enclave' +author = u'Keystone Team' # The short X.Y version -version = u'0.3' +version = u'1.0' # The full version, including alpha/beta/rc tags -release = u'0.3.0' +release = u'1.0.0' # -- General configuration --------------------------------------------------- @@ -134,7 +134,7 @@ # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'KeystoneEnclave.tex', u'Keystone Enclave Documentation', - u'Dayeol Lee, David Kohlbrenner, Dawn Song, Krste Asanovic', 'manual'), + u'Keystone Team', 'manual'), ] From 89a1e5a0ee79cfeeacc61d4eaf4186e89a04fde7 Mon Sep 17 00:00:00 2001 From: Catherine Lu Date: Fri, 26 Feb 2021 22:25:15 +0000 Subject: [PATCH 09/11] Update documentation for setting FireSim configs and more clear instructions for setting up Keystone with FireSim --- .../Running-Keystone-with-FireSim.rst | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst b/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst index fc468713b..6f1af0819 100644 --- a/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst +++ b/docs/source/Getting-Started/Running-Keystone-with-FireSim.rst @@ -26,11 +26,14 @@ hardware, and deploy it to Amazon AWS FPGAs using FireSim. Setting Up Chipyard ------------------------------------- -Follow `this documentation -`_ -to setup the Chipyard repo. Then, follow `this +Follow the `FireSim setup documentation `_ -to setup FireSim. +and the `Chipyard documentation +`__ +to set up Chipyard using Firesim. You will first need to set up a FireSim Manager +instance on Amazon EC2, onto which you will install the Chipyard repo. Finally, Firesim +will be initalized as a library in Chipyard, so you do not need to set it separately +within the Manager instance. We are going to use the latest version of `FireMarshal `_. Thus, @@ -78,11 +81,12 @@ Go to FireMarshal directory, and build the workload. You should replace ```` with the absolute path to the ``keystone.json`` in the workload directory. -You can launch QEMU to run the tests. +You can launch QEMU to run the tests. :: ./marshal -v launch + # Login via [root/firesim] Finally, install the workload in FireSim. @@ -96,8 +100,9 @@ repo>/sims/firesim/deploy/workloads``. Launching Simulation (FireSim) ------------------------------ +We will need to edit some of the FireSim configs. Open ``config_runtime.ini`` in ``/sims/firesim/deploy`` and edit -``[workload]`` section as follows +the following sections :: @@ -105,6 +110,29 @@ Open ``config_runtime.ini`` in ``/sims/firesim/deploy`` and edit workloadname=keystone.json # ... +:: + + [runfarm] + runfarmtag=mainrunfarm + + f1_16xlarges=0 + m4_16xlarges=0 + f1_4xlarges=0 + f1_2xlarges=1 + # ... + + [targetconfig] + topology=no_net_config + no_net_num_nodes=1 + # ... + + defaulthwconfig=firesim-rocket-quadcore-no-nic-l2-llc4mb-ddr3 + +See the `FireSim Manager Configuration Files +`_ +for an explanation of other possible configuration options. + + Use FireSim commands to launch the simulation. Go to the top-level FireSim directory and run: From 5b097b9d1e8bade3da643ba97ec54e00c9fa80d9 Mon Sep 17 00:00:00 2001 From: Catherine Lu Date: Fri, 26 Feb 2021 22:20:48 +0000 Subject: [PATCH 10/11] Remove linux64-firesim-defconfig from CMakeLists to use default config --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c80a7e13..fd5a8da96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,8 +79,6 @@ set(overlay_dir ${CMAKE_BINARY_DIR}/overlay) set(overlay_root ${overlay_dir}/root) if(firesim) - message(STATUS "FireSim configs and patches. Forcing initramfs=y") - set(linux_defconfig ${confdir}/linux64-firesim-defconfig) message(STATUS "Using Linux defconfig: ${linux_defconfig}") set(initramfs true) elseif(sifive) From 53047eaa3bbe6265b8bd454040ce8e957822b2a9 Mon Sep 17 00:00:00 2001 From: Dayeol Lee Date: Sun, 28 Feb 2021 11:41:55 -0800 Subject: [PATCH 11/11] Release v1.0.0 (#228) --- .travis.yml | 112 ------------------------------------------ linux-keystone-driver | 2 +- sdk | 2 +- sm | 2 +- 4 files changed, 3 insertions(+), 115 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2e1e89954..000000000 --- a/.travis.yml +++ /dev/null @@ -1,112 +0,0 @@ -language: minimal -dist: bionic -cache: - apt: true - timeout: 1000 #In seconds - directories: - - $TRAVIS_BUILD_DIR/riscv64 - - $TRAVIS_BUILD_DIR/linux/.git - - $TRAVIS_BUILD_DIR/qemu/.git - -git: - submodules: false - depth: 1 - -env: - - RISCV=$TRAVIS_BUILD_DIR/riscv64 PATH=$PATH:$RISCV/bin - -addons: - apt: - packages: - - expect - - autoconf - - automake - - autotools-dev - - bc - - bison - - build-essential - - curl - - expat - - libexpat-dev - - flex - - gawk - - gcc - - git - - gperf - - libgmp-dev - - libmpc-dev - - libmpfr-dev - - libtool - - texinfo - - tmux - - patchutils - - zlib1g-dev - - wget - - bzip2 - - patch - - vim-common - - lbzip2 - - python - - pkg-config - - libglib2.0-dev - - libpixman-1-dev - - libssl-dev - - makeself - - unzip - - p7zip-full - -branches: - only: - - dev - - master - - -before_install: - - if [ -d "linux/.git" ]; then ls; else git clone --shallow-since=2020-04-01 https://github.com/torvalds/linux linux; fi - - if [ -d "qemu/.git" ]; then ls; else git clone --shallow-since=2020-04-01 https://github.com/qemu/qemu qemu; fi - - git submodule init -- linux - - git submodule init -- qemu - - git submodule update --depth=1 -- linux - - git submodule update --depth=1 -- qemu - - ./fast-setup.sh - -jobs: - include: - - stage: cache warmup - script: true - after_failure: - - ls -al - - git submodule status - - stage: build rv64 & test - script: - - source ./source.sh - - mkdir build - - cd build - - cmake ../ - - travis_wait 120 make -j3 - - travis_wait 10 make run-tests - - cd .. - after_failure: - - cat screenlog.0 - - cat output.log - - stage: build (sifive) - script: - - source ./source.sh - - mkdir build - - cd build - - cmake -DLINUX_SIFIVE=y -DSM_PLATFORM=sifive/fu540 ../ - - travis_wait 120 make -j3 - - cd .. - - stage: build rv32 & test - script: - - BITS=32 ./fast-setup.sh - - source source.sh - - stage: build rv32 & test - script: - - BITS=32 ./fast-setup.sh - - source source.sh - - mkdir build32 - - cmake ../ -DRISCV32=y - - travis_wait 120 make -j3 - - travis_wait 10 make run-tests - - cd .. diff --git a/linux-keystone-driver b/linux-keystone-driver index 0dd63b054..0a1597bc6 160000 --- a/linux-keystone-driver +++ b/linux-keystone-driver @@ -1 +1 @@ -Subproject commit 0dd63b0546e077b837b3444278457e0fcbe84af4 +Subproject commit 0a1597bc6215f00b8c39ff44565df541d74ac782 diff --git a/sdk b/sdk index 702fa3ce5..24a5ed369 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 702fa3ce50853965cf235c91dd048c909330758a +Subproject commit 24a5ed369ac0606aac486382a0855a459d9362ed diff --git a/sm b/sm index 5e42d3a93..843d3509b 160000 --- a/sm +++ b/sm @@ -1 +1 @@ -Subproject commit 5e42d3a9322a5a588a6f7531a5ae4fc66b04d1da +Subproject commit 843d3509b8a514d43729d779a0cf6bdb1d0c94e0