diff --git a/kernel/.gitignore b/kernel/.gitignore index 51bb4c7..3ada721 100644 --- a/kernel/.gitignore +++ b/kernel/.gitignore @@ -1,3 +1,4 @@ downloads/ -build/ +.work/ +linux-*/ ph_linux* diff --git a/kernel/Makefile b/kernel/Makefile index 54d6fb3..1767ddb 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,126 +1,82 @@ -LINUX_VERSION = 4.9.56 -MINIPLI_TAG = 20171013093040 - - -MINIPLI_VERSION = v$(LINUX_VERSION)-unofficial_grsec -MINIPLI_PATH = linux-unofficial_grsec/releases/download/$(MINIPLI_VERSION) -GRSEC_DIFF = $(MINIPLI_VERSION)-$(MINIPLI_TAG).diff -GRSEC_DOWNLOAD = https://github.com/minipli/$(MINIPLI_PATH)/$(GRSEC_DIFF) +LINUX_VERSION = 5.3 KERNEL_VERSION = linux-$(LINUX_VERSION) -KERNEL_DOWNLOAD = https://cdn.kernel.org/pub/linux/kernel/v4.x/$(KERNEL_VERSION) - - -WGET = wget -SHA256 = sha256sum -TAR = tar -PATCH = patch -LN = ln -CP = cp -MV = mv -RM = rm -RMDIR = rmdir -MKDIR = mkdir -TOUCH = touch -GPG = gpg -TOUCH = touch -UNXZ = unxz +KERNEL_DOWNLOAD = https://cdn.kernel.org/pub/linux/kernel/v5.x/$(KERNEL_VERSION) PWD = $(shell pwd) +NPROC = $(shell nproc) PATCH_FILES := $(shell find patches/ -name "00*.patch" | sort) -PATCH_SENTINEL = build/.patches_applied - -GRSEC_DL_PATH = downloads/$(GRSEC_DIFF) KERNEL_DL_PATH = downloads/$(KERNEL_VERSION).tar -KERNEL_BUILD_PATH = build/$(KERNEL_VERSION) -KERNEL_UNPACK_PATH = build/.unpack/$(KERNEL_VERSION) +KERNEL_BUILD_PATH = $(KERNEL_VERSION) KERNEL_BUILD_OUTPUT = $(KERNEL_BUILD_PATH)/vmlinux PH_LINUX = ph_linux PH_LINUX_VER = $(PH_LINUX)-$(LINUX_VERSION) -GPGTMP = verify-tmp/ -GPGOPTS = --homedir $(GPGTMP) --trust-model direct --no-autostart -GPG_IMPORT = $(GPG) $(GPGOPTS) --import -GPG_VERIFY = $(GPG) $(GPGOPTS) --verify - SHA256_FILE = v$(KERNEL_VERSION).sha256 -SHA256_SENTINEL = build/.sha256-verififed - $(shell mkdir -p downloads) -$(shell mkdir -p build) +$(shell mkdir -p .work) -.NOTPARALLEL: +SHA256_SENTINEL = .work/.sha256-verififed .PHONY: all gen-sha256 all: $(KERNEL_BUILD_OUTPUT) $(PH_LINUX_VER) -$(GRSEC_DL_PATH): - cd downloads; $(WGET) $(GRSEC_DOWNLOAD) - cd downloads; $(WGET) $(GRSEC_DOWNLOAD).sig - $(KERNEL_DL_PATH): - cd downloads; $(WGET) $(KERNEL_DOWNLOAD).tar.xz - cd downloads; $(UNXZ) $(KERNEL_VERSION).tar.xz - cd downloads; $(WGET) $(KERNEL_DOWNLOAD).tar.sign + cd downloads; wget $(KERNEL_DOWNLOAD).tar.xz + cd downloads; unxz $(KERNEL_VERSION).tar.xz + cd downloads; wget $(KERNEL_DOWNLOAD).tar.sign -$(KERNEL_BUILD_PATH): $(KERNEL_DL_PATH) $(GRSEC_DL_PATH) $(SHA256_SENTINEL) - $(RM) -rf build/.unpack - $(MKDIR) -p build/.unpack - $(TAR) -C build/.unpack -xvf downloads/$(KERNEL_VERSION).tar - $(PATCH) -p1 -d $(KERNEL_UNPACK_PATH) < $(GRSEC_DL_PATH) - $(CP) config $(KERNEL_UNPACK_PATH)/.config - $(MV) $(KERNEL_UNPACK_PATH) build/ - $(RM) -rf build/.unpack - -$(PATCH_SENTINEL): | $(KERNEL_BUILD_PATH) - for p in $(PATCH_FILES); do $(PATCH) -p1 -d build/$(KERNEL_VERSION) < "$$p"; done - $(TOUCH) $@ +$(KERNEL_BUILD_PATH): $(KERNEL_DL_PATH) $(SHA256_SENTINEL) + rm -rf .work/$(KERNEL_VERSION) + tar -C .work -xf downloads/$(KERNEL_VERSION).tar + for p in $(PATCH_FILES); do patch -p1 -d .work/$(KERNEL_VERSION) < "$$p"; done + cp config .work/$(KERNEL_VERSION)/.config + rm -rf ./$(KERNEL_VERSION) + mv .work/$(KERNEL_VERSION) . +#$(PATCH_SENTINEL): | $(KERNEL_BUILD_PATH) +# for p in $(PATCH_FILES); do patch -p1 -d $(KERNEL_VERSION) < "$$p"; done +# touch $@ $(PH_LINUX_VER): $(KERNEL_BUILD_OUTPUT) - $(RM) -f $(PH_LINUX) - $(CP) $(KERNEL_BUILD_OUTPUT) $(PH_LINUX_VER) - $(LN) -s $(PWD)/$(PH_LINUX_VER) $(PH_LINUX) + rm -f $(PH_LINUX) + cp $(KERNEL_BUILD_OUTPUT) $(PH_LINUX_VER) + strip $(PH_LINUX_VER) + ln -s $(PWD)/$(PH_LINUX_VER) $(PH_LINUX) - -$(KERNEL_BUILD_OUTPUT): $(PATCH_SENTINEL) - $(MAKE) -C build/$(KERNEL_VERSION) +$(KERNEL_BUILD_OUTPUT): $(KERNEL_BUILD_PATH) + cd $(KERNEL_VERSION); make -j$(NPROC) clean: - $(RM) -rf $(KERNEL_BUILD_PATH) $(SHA256_SENTINEL) $(PATCH_SENTINEL) $(PH_LINUX_VER) - -$(SHA256_SENTINEL): $(KERNEL_DL_PATH) $(GRSEC_DL_PATH) - $(SHA256) -c v$(LINUX_VERSION).sha256 - $(TOUCH) $@ + rm -rf $(KERNEL_BUILD_PATH) $(SHA256_SENTINEL) $(PH_LINUX_VER) $(PH_LINUX) .work +$(SHA256_SENTINEL): $(KERNEL_DL_PATH) + sha256sum -c v$(LINUX_VERSION).sha256 + touch $@ gen-sha256: $(SHA256_FILE) -$(GRSEC_DL_PATH).verify: $(GRSEC_DL_PATH) - rm -rf $(GPGTMP) - $(MKDIR) -m 0700 $(GPGTMP) - $(GPG_IMPORT) < keys/minipli.key - $(GPG_VERIFY) downloads/$(GRSEC_DIFF).sig $(GRSEC_DL_PATH) 2> .out - mv .out $(GRSEC_DL_PATH).verify - rm -rf $(GPGTMP) +GPGTMP = verify-tmp/ +GPGOPTS = --homedir $(GPGTMP) --trust-model direct --no-autostart +GPG_IMPORT = gpg $(GPGOPTS) --import +GPG_VERIFY = gpg $(GPGOPTS) --verify $(KERNEL_DL_PATH).verify: $(KERNEL_DL_PATH) rm -rf $(GPGTMP) - $(MKDIR) -m 0700 $(GPGTMP) + mkdir -m 0700 $(GPGTMP) $(GPG_IMPORT) < keys/torvalds.key $(GPG_IMPORT) < keys/gregkh.key $(GPG_VERIFY) downloads/$(KERNEL_VERSION).tar.sign $(KERNEL_DL_PATH) 2> .out mv .out $(KERNEL_DL_PATH).verify rm -rf $(GPGTMP) - -$(SHA256_FILE): $(KERNEL_DL_PATH).verify $(GRSEC_DL_PATH).verify - $(SHA256) $(KERNEL_DL_PATH) $(GRSEC_DL_PATH) > v$(LINUX_VERSION).sha256 +$(SHA256_FILE): $(KERNEL_DL_PATH).verify + sha256sum $(KERNEL_DL_PATH) > v$(LINUX_VERSION).sha256 diff --git a/kernel/config b/kernel/config index 0efd560..10ac16d 100644 --- a/kernel/config +++ b/kernel/config @@ -1,46 +1,17 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.9.56 Kernel Configuration +# Linux/x86 5.3.0 Kernel Configuration # -CONFIG_64BIT=y -CONFIG_X86_64=y -CONFIG_X86=y -CONFIG_INSTRUCTION_DECODER=y -CONFIG_OUTPUT_FORMAT="elf64-x86-64" -CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_MMU=y -CONFIG_ARCH_MMAP_RND_BITS_MIN=27 -CONFIG_ARCH_MMAP_RND_BITS_MAX=27 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ARCH_HAS_CPU_RELAX=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y -CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_WANT_GENERAL_HUGETLB=y -CONFIG_ZONE_DMA32=y -CONFIG_AUDIT_ARCH=y -CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y -CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y -CONFIG_X86_64_SMP=y -CONFIG_ARCH_SUPPORTS_UPROBES=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_DEBUG_RODATA=y -CONFIG_PGTABLE_LEVELS=4 -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# Compiler: gcc (Debian 9.2.1-7) 9.2.1 20190905 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90201 +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_BUILDTIME_EXTABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y @@ -49,10 +20,11 @@ CONFIG_THREAD_INFO_IN_TASK=y # General setup # CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_CROSS_COMPILE="" # CONFIG_COMPILE_TEST is not set +# CONFIG_HEADER_TEST is not set CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y @@ -72,25 +44,30 @@ CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y # CONFIG_CROSS_MEMORY_ATTACH is not set -# CONFIG_FHANDLE is not set +# CONFIG_USELIB is not set CONFIG_AUDIT=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y CONFIG_AUDITSYSCALL=y -CONFIG_AUDIT_WATCH=y -CONFIG_AUDIT_TREE=y # # IRQ subsystem # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y +# end of IRQ subsystem + CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y @@ -108,6 +85,11 @@ CONFIG_NO_HZ_IDLE=y # CONFIG_NO_HZ_FULL is not set # CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set # # CPU/Task time and stats accounting @@ -119,6 +101,10 @@ CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y # CONFIG_TASK_XACCT is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y # # RCU Subsystem @@ -126,27 +112,38 @@ CONFIG_TASK_DELAY_ACCT=y CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y -# CONFIG_TASKS_RCU is not set +CONFIG_TREE_SRCU=y CONFIG_RCU_STALL_COMMON=y -# CONFIG_RCU_EXPEDITE_BOOT is not set -# CONFIG_BUILD_BIN2C is not set +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + # CONFIG_IKCONFIG is not set +# CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_NMI_LOG_BUF_SHIFT=13 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_CGROUPS=y CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y # CONFIG_MEMCG_SWAP is not set +CONFIG_MEMCG_KMEM=y # CONFIG_BLK_CGROUP is not set CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # CONFIG_CFS_BANDWIDTH is not set # CONFIG_RT_GROUP_SCHED is not set # CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y @@ -161,6 +158,7 @@ CONFIG_IPC_NS=y # CONFIG_USER_NS is not set CONFIG_PID_NS=y CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set CONFIG_SCHED_AUTOGROUP=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y @@ -168,7 +166,6 @@ CONFIG_RELAY=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y -CONFIG_ANON_INODES=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_BPF=y @@ -177,10 +174,8 @@ CONFIG_MULTIUSER=y # CONFIG_SGETMASK_SYSCALL is not set # CONFIG_SYSFS_SYSCALL is not set # CONFIG_SYSCTL_SYSCALL is not set -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y -CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_FHANDLE is not set +CONFIG_POSIX_TIMERS=y CONFIG_PRINTK=y CONFIG_PRINTK_NMI=y CONFIG_BUG=y @@ -188,40 +183,243 @@ CONFIG_ELF_CORE=y # CONFIG_PCSPKR_PLATFORM is not set CONFIG_BASE_FULL=y CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y -# CONFIG_BPF_SYSCALL is not set CONFIG_SHMEM=y CONFIG_AIO=y +CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y -# CONFIG_PCI_QUIRKS is not set CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_BPF_SYSCALL is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ 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 is not set CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_MEMCG_SYSFS_ON is not set # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set +CONFIG_SLAB_MERGE_DEFAULT=y CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y CONFIG_SLUB_CPU_PARTIAL=y -# CONFIG_SYSTEM_DATA_VERIFICATION is not set # CONFIG_PROFILING is not set +# end of General setup + +CONFIG_64BIT=y +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ZONE_DMA32=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_X86_64_SMP=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y + +# +# Processor type and features +# +# CONFIG_ZONE_DMA is not set +CONFIG_SMP=y +CONFIG_X86_FEATURE_NAMES=y +# CONFIG_X86_X2APIC is not set +CONFIG_X86_MPPARSE=y +CONFIG_RETPOLINE=y +# CONFIG_X86_CPU_RESCTRL is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +# CONFIG_IOSF_MBI is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_KVM_GUEST=y +# CONFIG_PVH is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_JAILHOUSE_GUEST is not set +# CONFIG_ACRN_GUEST is not set +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +CONFIG_MCORE2=y +# CONFIG_MATOM is not set +# CONFIG_GENERIC_CPU is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_P6_NOP=y +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_PROCESSOR_SELECT=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +# CONFIG_CPU_SUP_HYGON is not set +# CONFIG_CPU_SUP_CENTAUR is not set +# CONFIG_CPU_SUP_ZHAOXIN is not set +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +# CONFIG_DMI is not set +# CONFIG_GART_IOMMU is not set +# CONFIG_CALGARY_IOMMU is not set +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=512 +CONFIG_NR_CPUS_DEFAULT=64 +CONFIG_NR_CPUS=512 +CONFIG_SCHED_SMT=y +# CONFIG_SCHED_MC is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set +# CONFIG_X86_MCE is not set + +# +# Performance monitoring +# +# CONFIG_PERF_EVENTS_INTEL_UNCORE is not set +# CONFIG_PERF_EVENTS_INTEL_RAPL is not set +# CONFIG_PERF_EVENTS_INTEL_CSTATE is not set +# CONFIG_PERF_EVENTS_AMD_POWER is not set +# end of Performance monitoring + +# CONFIG_X86_VSYSCALL_EMULATION is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_X86_5LEVEL is not set +CONFIG_X86_DIRECT_GBPAGES=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +# CONFIG_AMD_MEM_ENCRYPT is not set +# CONFIG_NUMA is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_X86_PMEM_LEGACY is not set +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_X86_RESERVE_LOW=64 +# CONFIG_MTRR is not set +CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y +CONFIG_X86_INTEL_UMIP=y +# CONFIG_X86_INTEL_MPX is not set +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +CONFIG_PHYSICAL_START=0x100000 +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +# CONFIG_LEGACY_VSYSCALL_EMULATE is not set +# CONFIG_LEGACY_VSYSCALL_XONLY is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_MODIFY_LDT_SYSCALL is not set +CONFIG_HAVE_LIVEPATCH=y +# end of Processor type and features + +CONFIG_ARCH_HAS_ADD_PAGES=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y + +# +# Power management and ACPI options +# +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +# CONFIG_PM is not set +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +CONFIG_PCI_DIRECT=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_ISA_BUS is not set +# CONFIG_ISA_DMA_API is not set +CONFIG_AMD_NB=y +# CONFIG_X86_SYSFB is not set +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +# CONFIG_IA32_EMULATION is not set +# CONFIG_X86_X32 is not set +# end of Binary Emulations + +# +# General architecture-dependent options +# +CONFIG_HOTPLUG_SMT=y CONFIG_HAVE_OPROFILE=y CONFIG_OPROFILE_NMI_TIMER=y CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set -# CONFIG_UPROBES is not set -# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_HAVE_IOREMAP_PROT=y @@ -229,60 +427,80 @@ CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_NMI=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y CONFIG_HAVE_USER_RETURN_NOTIFIER=y CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_HAVE_RCU_TABLE_FREE=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y -CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set -CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y -CONFIG_HAVE_CC_STACKPROTECTOR=y -CONFIG_CC_STACKPROTECTOR=y -# CONFIG_CC_STACKPROTECTOR_NONE is not set -CONFIG_CC_STACKPROTECTOR_REGULAR=y -# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_CC_HAS_STACKPROTECTOR_NONE=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PMD=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y CONFIG_MODULES_USE_ELF_RELA=y CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_HAVE_ARCH_MMAP_RND_BITS=y CONFIG_HAVE_EXIT_THREAD=y -CONFIG_ARCH_MMAP_RND_BITS=27 +CONFIG_ARCH_MMAP_RND_BITS=28 CONFIG_HAVE_COPY_THREAD_TLS=y CONFIG_HAVE_STACK_VALIDATION=y -# CONFIG_HAVE_ARCH_HASH is not set -# CONFIG_ISA_BUS_API is not set -# CONFIG_CPU_NO_EFFICIENT_FFS is not set +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_64BIT_TIME=y CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_ARCH_HAS_REFCOUNT=y +CONFIG_REFCOUNT_FULL=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y # # GCOV-based kernel profiling # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set -CONFIG_SLABINFO=y +# end of GCOV-based kernel profiling + +CONFIG_PLUGIN_HOSTCC="" +CONFIG_HAVE_GCC_PLUGINS=y +# end of General architecture-dependent options + CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 # CONFIG_MODULES is not set @@ -291,27 +509,47 @@ CONFIG_BLOCK=y # CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSGLIB is not set # CONFIG_BLK_DEV_INTEGRITY is not set -# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_CMDLINE_PARSER=y +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_SED_OPAL is not set # # Partition Types # -# CONFIG_PARTITION_ADVANCED is not set +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 # # IO Schedulers # -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" -CONFIG_PADATA=y +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +CONFIG_IOSCHED_BFQ=y +# end of IO Schedulers + CONFIG_INLINE_SPIN_UNLOCK_IRQ=y CONFIG_INLINE_READ_UNLOCK=y CONFIG_INLINE_READ_UNLOCK_IRQ=y @@ -325,110 +563,39 @@ CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y CONFIG_QUEUED_SPINLOCKS=y CONFIG_ARCH_USE_QUEUED_RWLOCKS=y CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y CONFIG_FREEZER=y # -# Processor type and features +# Executable file formats # -# CONFIG_ZONE_DMA is not set -CONFIG_SMP=y -CONFIG_X86_FEATURE_NAMES=y -CONFIG_X86_FAST_FEATURE_TESTS=y -# CONFIG_X86_X2APIC is not set -CONFIG_X86_MPPARSE=y -# CONFIG_GOLDFISH is not set -# CONFIG_X86_EXTENDED_PLATFORM is not set -CONFIG_IOSF_MBI=y -CONFIG_SCHED_OMIT_FRAME_POINTER=y -CONFIG_HYPERVISOR_GUEST=y -CONFIG_PARAVIRT=y -# CONFIG_PARAVIRT_DEBUG is not set -CONFIG_PARAVIRT_SPINLOCKS=y -# CONFIG_XEN is not set -CONFIG_KVM_GUEST=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -CONFIG_PARAVIRT_CLOCK=y -CONFIG_NO_BOOTMEM=y -# CONFIG_MK8 is not set -# CONFIG_MPSC is not set -CONFIG_MCORE2=y -# CONFIG_MATOM is not set -# CONFIG_GENERIC_CPU is not set -CONFIG_X86_INTERNODE_CACHE_SHIFT=6 -CONFIG_X86_L1_CACHE_SHIFT=6 -CONFIG_X86_ALIGNMENT_16=y -CONFIG_X86_INTEL_USERCOPY=y -CONFIG_X86_USE_PPRO_CHECKSUM=y -CONFIG_X86_P6_NOP=y -CONFIG_X86_TSC=y -CONFIG_X86_CMPXCHG64=y -CONFIG_X86_CMOV=y -CONFIG_X86_MINIMUM_CPU_FAMILY=64 -CONFIG_X86_DEBUGCTLMSR=y -# CONFIG_PROCESSOR_SELECT is not set -CONFIG_CPU_SUP_INTEL=y -CONFIG_CPU_SUP_AMD=y -CONFIG_CPU_SUP_CENTAUR=y -CONFIG_HPET_TIMER=y -CONFIG_HPET_EMULATE_RTC=y -# CONFIG_DMI is not set -# CONFIG_GART_IOMMU is not set -# CONFIG_CALGARY_IOMMU is not set -CONFIG_SWIOTLB=y -CONFIG_IOMMU_HELPER=y -# CONFIG_MAXSMP is not set -CONFIG_NR_CPUS=512 -# CONFIG_SCHED_SMT is not set -CONFIG_SCHED_MC=y -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y -# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set -# CONFIG_X86_MCE is not set +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats # -# Performance monitoring +# Memory Management options # -# CONFIG_PERF_EVENTS_INTEL_UNCORE is not set -# CONFIG_PERF_EVENTS_INTEL_RAPL is not set -# CONFIG_PERF_EVENTS_INTEL_CSTATE is not set -# CONFIG_PERF_EVENTS_AMD_POWER is not set -# CONFIG_VM86 is not set -# CONFIG_X86_VSYSCALL_EMULATION is not set -# CONFIG_I8K is not set -# CONFIG_MICROCODE is not set -# CONFIG_X86_MSR is not set -# CONFIG_X86_CPUID is not set -CONFIG_ARCH_PHYS_ADDR_T_64BIT=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_X86_DIRECT_GBPAGES=y -# CONFIG_NUMA is not set -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y CONFIG_SPARSEMEM_VMEMMAP=y -CONFIG_HAVE_MEMBLOCK=y CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_ARCH_DISCARD_MEMBLOCK=y -# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_FAST_GUP=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y CONFIG_MEMORY_BALLOON=y CONFIG_BALLOON_COMPACTION=y CONFIG_COMPACTION=y CONFIG_MIGRATION=y -CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_VIRT_TO_BUS=y # CONFIG_KSM is not set @@ -436,6 +603,8 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 CONFIG_TRANSPARENT_HUGEPAGE=y # CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_THP_SWAP=y CONFIG_TRANSPARENT_HUGE_PAGECACHE=y # CONFIG_CLEANCACHE is not set # CONFIG_FRONTSWAP is not set @@ -444,112 +613,17 @@ CONFIG_TRANSPARENT_HUGE_PAGECACHE=y # CONFIG_ZBUD is not set # CONFIG_ZSMALLOC is not set CONFIG_GENERIC_EARLY_IOREMAP=y -CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_PTE_DEVMAP=y +# CONFIG_HMM_MIRROR is not set CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_ARCH_HAS_PKEYS=y -# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set -CONFIG_X86_RESERVE_LOW=64 -CONFIG_MTRR=y -CONFIG_MTRR_SANITIZER=y -CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 -CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 -CONFIG_X86_PAT=y -CONFIG_ARCH_USES_PG_UNCACHED=y -CONFIG_ARCH_RANDOM=y -CONFIG_X86_SMAP=y -# CONFIG_X86_INTEL_MPX is not set -CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y -CONFIG_SECCOMP=y -# CONFIG_HZ_100 is not set -# CONFIG_HZ_250 is not set -# CONFIG_HZ_300 is not set -CONFIG_HZ_1000=y -CONFIG_HZ=1000 -CONFIG_SCHED_HRTICK=y -# CONFIG_KEXEC_FILE is not set -CONFIG_CRASH_DUMP=y -CONFIG_PHYSICAL_START=0x100000 -CONFIG_RELOCATABLE=y -CONFIG_PHYSICAL_ALIGN=0x1000000 -CONFIG_HOTPLUG_CPU=y -# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set -# CONFIG_DEBUG_HOTPLUG_CPU0 is not set -# CONFIG_LEGACY_VSYSCALL_EMULATE is not set -CONFIG_LEGACY_VSYSCALL_NONE=y -# CONFIG_CMDLINE_BOOL is not set -# CONFIG_MODIFY_LDT_SYSCALL is not set -# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set -CONFIG_HAVE_LIVEPATCH=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# end of Memory Management options -# -# Power management and ACPI options -# -# CONFIG_SUSPEND is not set -# CONFIG_PM is not set -# CONFIG_ACPI is not set -# CONFIG_SFI is not set - -# -# CPU Frequency scaling -# -# CONFIG_CPU_FREQ is not set - -# -# CPU Idle -# -# CONFIG_CPU_IDLE is not set -# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set - -# -# Memory power savings -# -# CONFIG_I7300_IDLE is not set - -# -# Bus options (PCI etc.) -# -CONFIG_PCI=y -CONFIG_PCI_DIRECT=y -CONFIG_PCI_DOMAINS=y -# CONFIG_PCI_CNB20LE_QUIRK is not set -# CONFIG_PCIEPORTBUS is not set -CONFIG_PCI_BUS_ADDR_T_64BIT=y -# CONFIG_PCI_MSI is not set -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set -# CONFIG_PCI_STUB is not set -# CONFIG_HT_IRQ is not set -# 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 host controller drivers -# -# CONFIG_ISA_BUS is not set -# CONFIG_ISA_DMA_API is not set -CONFIG_AMD_NB=y -# CONFIG_PCCARD is not set -# CONFIG_RAPIDIO is not set -# CONFIG_X86_SYSFB is not set - -# -# Executable file formats / Emulations -# -CONFIG_BINFMT_ELF=y -CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_BINFMT_SCRIPT=y -# CONFIG_HAVE_AOUT is not set -# CONFIG_BINFMT_MISC is not set -CONFIG_COREDUMP=y -# CONFIG_IA32_EMULATION is not set -# CONFIG_X86_X32 is not set -CONFIG_X86_DEV_DMA_OPS=y -CONFIG_PMC_ATOM=y CONFIG_NET=y # @@ -558,76 +632,40 @@ CONFIG_NET=y CONFIG_PACKET=y CONFIG_PACKET_DIAG=y CONFIG_UNIX=y +CONFIG_UNIX_SCM=y CONFIG_UNIX_DIAG=y -# CONFIG_XFRM_USER is not set -# CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE_DEMUX is not set -# CONFIG_NET_IP_TUNNEL is not set -CONFIG_SYN_COOKIES=y -# CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set # CONFIG_NET_FOU is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set -# CONFIG_INET_XFRM_TUNNEL is not set -# CONFIG_INET_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_BEET is not set CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_INET_UDP_DIAG=y +# 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 is not set -# CONFIG_NETLABEL is not set # CONFIG_NETWORK_SECMARK is not set -CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set -# CONFIG_NETFILTER 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_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_PHONET is not set -# CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set -# CONFIG_DCB is not set -# CONFIG_DNS_RESOLVER is not set -# CONFIG_BATMAN_ADV is not set -# CONFIG_OPENVSWITCH is not set CONFIG_VSOCKETS=y +CONFIG_VSOCKETS_DIAG=y CONFIG_VIRTIO_VSOCKETS=y CONFIG_VIRTIO_VSOCKETS_COMMON=y CONFIG_NETLINK_DIAG=y -# CONFIG_MPLS 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_SOCK_CGROUP_DATA is not set # CONFIG_CGROUP_NET_PRIO is not set # CONFIG_CGROUP_NET_CLASSID is not set CONFIG_NET_RX_BUSY_POLL=y @@ -638,31 +676,23 @@ CONFIG_NET_FLOW_LIMIT=y # Network testing # # CONFIG_NET_PKTGEN is not set -# CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -# CONFIG_AF_RXRPC is not set -# CONFIG_AF_KCM is not set -# CONFIG_STREAM_PARSER is not set -# CONFIG_WIRELESS is not set -# CONFIG_WIMAX is not set -# CONFIG_RFKILL is not set +# end of Network testing +# end of Networking options + CONFIG_NET_9P=y CONFIG_NET_9P_VIRTIO=y CONFIG_NET_9P_DEBUG=y -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set -# CONFIG_NFC is not set # CONFIG_LWTUNNEL is not set -# CONFIG_DST_CACHE is not set -# CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y +CONFIG_FAILOVER=y CONFIG_HAVE_EBPF_JIT=y # # Device Drivers # +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +# CONFIG_PCI_MSI is not set +CONFIG_PCI_LOCKLESS_CONFIG=y # # Generic Driver Options @@ -670,777 +700,128 @@ CONFIG_HAVE_EBPF_JIT=y # CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y # CONFIG_DEVTMPFS_MOUNT is not set -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y -# CONFIG_FIRMWARE_IN_KERNEL is not set -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set -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_SYS_HYPERVISOR is not set -# CONFIG_GENERIC_CPU_DEVICES is not set CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -# CONFIG_DMA_SHARED_BUFFER is not set +CONFIG_GENERIC_CPU_VULNERABILITIES=y +# end of Generic Driver Options -# -# Bus devices -# -CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y -# CONFIG_MTD is not set -# CONFIG_OF is not set -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -# CONFIG_PARPORT is not set -# CONFIG_BLK_DEV is not set -# CONFIG_BLK_DEV_NVME is not set -# CONFIG_NVME_TARGET is not set - -# -# Misc devices -# -# CONFIG_SENSORS_LIS3LV02D is not set -# CONFIG_AD525X_DPOT is not set -# CONFIG_DUMMY_IRQ is not set -# CONFIG_IBM_ASM 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_USB_SWITCH_FSA9480 is not set -# CONFIG_SRAM is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_SENSORS_LIS3_I2C is not set - -# -# Altera FPGA firmware download module -# -# CONFIG_ALTERA_STAPL is not set -# CONFIG_INTEL_MEI is not set -# CONFIG_INTEL_MEI_ME is not set -# CONFIG_INTEL_MEI_TXE is not set -# CONFIG_VMWARE_VMCI is not set - -# -# Intel MIC Bus Driver -# -# CONFIG_INTEL_MIC_BUS is not set - -# -# SCIF Bus Driver -# -# CONFIG_SCIF_BUS is not set - -# -# 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 -# -# CONFIG_GENWQE is not set -# CONFIG_ECHO is not set -# CONFIG_CXL_BASE is not set -# CONFIG_CXL_AFU_DRIVER_OPS is not set -CONFIG_HAVE_IDE=y -# CONFIG_IDE is not set - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -# CONFIG_SCSI is not set -# CONFIG_SCSI_DMA is not set -# CONFIG_SCSI_NETLINK is not set -# CONFIG_ATA is not set -# CONFIG_MD is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_VIRTIO_BLK=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=y +CONFIG_DM_CRYPT=y +CONFIG_DM_INIT=y +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=y CONFIG_NETDEVICES=y CONFIG_NET_CORE=y -# CONFIG_BONDING is not set -# CONFIG_DUMMY is not set -# CONFIG_EQUALIZER is not set -# CONFIG_NET_TEAM is not set -# CONFIG_MACVLAN is not set -# CONFIG_VXLAN is not set -# CONFIG_MACSEC is not set -CONFIG_NETCONSOLE=y -CONFIG_NETCONSOLE_DYNAMIC=y -CONFIG_NETPOLL=y -CONFIG_NET_POLL_CONTROLLER=y CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=y CONFIG_VIRTIO_NET=y -# CONFIG_NLMON is not set -# CONFIG_ARCNET is not set - -# -# CAIF transport drivers -# - -# -# Distributed Switch Architecture drivers -# -# CONFIG_ETHERNET is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PHYLIB is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Host-side USB support is needed for USB Network Adapter support -# -# CONFIG_WLAN is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set -# CONFIG_VMXNET3 is not set -# 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 is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE 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_ARCH_MIGHT_HAVE_PC_SERIO=y -CONFIG_SERIO_I8042=y -CONFIG_SERIO_SERPORT=y -# CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y -CONFIG_SERIO_RAW=y -# CONFIG_SERIO_ALTERA_PS2 is not set -# CONFIG_SERIO_PS2MULT is not set -# CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_USERIO is not set -# CONFIG_GAMEPORT is not set +CONFIG_NET_FAILOVER=y # # 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 is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -# CONFIG_TRACE_SINK is not set -CONFIG_DEVMEM=y - -# -# Serial drivers -# -CONFIG_SERIAL_EARLYCON=y -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -# CONFIG_SERIAL_8250_FINTEK is not set -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_PCI=y -CONFIG_SERIAL_8250_NR_UARTS=32 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -# CONFIG_SERIAL_8250_EXTENDED is not set -# CONFIG_SERIAL_8250_FSL is not set -# CONFIG_SERIAL_8250_DW is not set -# CONFIG_SERIAL_8250_RT288X is not set -# CONFIG_SERIAL_8250_LPSS is not set -# CONFIG_SERIAL_8250_MID is not set -# CONFIG_SERIAL_8250_MOXA is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_UARTLITE is not set -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set -# 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_ARC is not set -# CONFIG_SERIAL_RP2 is not set -# CONFIG_SERIAL_FSL_LPUART is not set -# CONFIG_TTY_PRINTK is not set +# CONFIG_LDISC_AUTOLOAD is not set CONFIG_HVC_DRIVER=y CONFIG_VIRTIO_CONSOLE=y -# CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -# CONFIG_HW_RANDOM_INTEL is not set -# CONFIG_HW_RANDOM_AMD is not set -# CONFIG_HW_RANDOM_VIA is not set CONFIG_HW_RANDOM_VIRTIO=y -# CONFIG_NVRAM is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set -# CONFIG_MWAVE is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_HANGCHECK_TIMER is not set -# CONFIG_TCG_TPM is not set -# CONFIG_TELCLOCK is not set -# CONFIG_XILLYBUS is not set +# end of Character devices -# -# I2C support -# -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -# CONFIG_I2C_COMPAT is not set -# CONFIG_I2C_CHARDEV is not set -# CONFIG_I2C_MUX is not set -# CONFIG_I2C_HELPER_AUTO is not set -# CONFIG_I2C_SMBUS is not set - -# -# I2C Algorithms -# -CONFIG_I2C_ALGOBIT=y -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_ALGOPCA is not set - -# -# 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_ISMT is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 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_OCORES is not set -# CONFIG_I2C_PCA_PLATFORM is not set -# CONFIG_I2C_PXA_PCI is not set -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_XILINX is not set - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_TAOS_EVM is not set - -# -# Other I2C/SMBus bus drivers -# -# 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 -# CONFIG_SPI is not set -# CONFIG_SPMI is not set -# CONFIG_HSI is not set - -# -# PPS support -# -CONFIG_PPS=y -# CONFIG_PPS_DEBUG is not set - -# -# PPS clients support -# -# CONFIG_PPS_CLIENT_KTIMER is not set -# CONFIG_PPS_CLIENT_LDISC is not set -# CONFIG_PPS_CLIENT_GPIO is not set - -# -# PPS generators support -# - -# -# PTP clock support -# -CONFIG_PTP_1588_CLOCK=y - -# -# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -# -# 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 is not set -# CONFIG_HWMON is not set -# CONFIG_THERMAL is not set -# CONFIG_WATCHDOG is not set -CONFIG_SSB_POSSIBLE=y - -# -# Sonics Silicon Backplane -# -# CONFIG_SSB is not set -CONFIG_BCMA_POSSIBLE=y - -# -# Broadcom specific AMBA -# -# CONFIG_BCMA is not set - -# -# Multifunction device drivers -# -CONFIG_MFD_CORE=y -# CONFIG_MFD_AS3711 is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_BCM590XX is not set -# CONFIG_MFD_AXP20X_I2C is not set -# CONFIG_MFD_CROS_EC is not set -# CONFIG_PMIC_DA903X 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_EXYNOS_LPASS is not set -# CONFIG_MFD_MC13XXX_I2C is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_LPC_ICH is not set -CONFIG_LPC_SCH=y -# CONFIG_MFD_INTEL_LPSS_PCI 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_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_MFD_RETU is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_RTSX_PCI is not set -# CONFIG_MFD_RT5033 is not set -# CONFIG_MFD_RC5T583 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_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_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_TPS65218 is not set -# CONFIG_MFD_TPS6586X is not set -# CONFIG_MFD_TPS65912_I2C 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_TMIO is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_MFD_ARIZONA_I2C is not set -# CONFIG_MFD_WM8400 is not set -# CONFIG_MFD_WM831X_I2C is not set -# CONFIG_MFD_WM8350_I2C is not set -# CONFIG_MFD_WM8994 is not set -# CONFIG_REGULATOR is not set -# CONFIG_MEDIA_SUPPORT is not set - -# -# Graphics support -# -# CONFIG_AGP is not set -# CONFIG_VGA_ARB is not set -# CONFIG_DRM is not set - -# -# ACP (Audio CoProcessor) Configuration -# - -# -# Frame buffer Devices -# -# CONFIG_FB is not set -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set -# CONFIG_VGASTATE is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_DUMMY_CONSOLE_COLUMNS=80 -CONFIG_DUMMY_CONSOLE_ROWS=25 -# CONFIG_SOUND is not set - -# -# HID support -# -# CONFIG_HID is not set - -# -# I2C HID support -# -# CONFIG_I2C_HID is not set - -# -# Intel ISH HID support -# -# CONFIG_INTEL_ISH_HID is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -# CONFIG_USB_SUPPORT is not set -# CONFIG_UWB is not set -# CONFIG_MMC 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_ATOMIC_SCRUB=y -CONFIG_EDAC_SUPPORT=y -# CONFIG_EDAC is not set +# CONFIG_RANDOM_TRUST_CPU is not set +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_PCI=y +CONFIG_SND_INTEL8X0=y +# CONFIG_SND_X86 is not set CONFIG_RTC_LIB=y CONFIG_RTC_MC146818_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -# CONFIG_RTC_SYSTOHC is not set -# CONFIG_RTC_DEBUG is not set - -# -# RTC interfaces -# -# CONFIG_RTC_INTF_SYSFS is not set -# CONFIG_RTC_INTF_PROC is not set -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_ABB5ZES3 is not set -# CONFIG_RTC_DRV_ABX80X is not set -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_MAX6900 is not set -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_ISL12022 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8523 is not set -# CONFIG_RTC_DRV_PCF85063 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8010 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set -# CONFIG_RTC_DRV_EM3027 is not set -# CONFIG_RTC_DRV_RV8803 is not set - -# -# SPI RTC drivers -# -CONFIG_RTC_I2C_AND_SPI=y - -# -# SPI and I2C RTC drivers -# -# CONFIG_RTC_DRV_DS3232 is not set -# CONFIG_RTC_DRV_PCF2127 is not set -# CONFIG_RTC_DRV_RV3029C2 is not set - -# -# Platform RTC drivers -# CONFIG_RTC_DRV_CMOS=y -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1685_FAMILY is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_DS2404 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set - -# -# on-CPU RTC drivers -# - -# -# HID Sensor RTC drivers -# -# CONFIG_DMADEVICES is not set - -# -# DMABUF options -# -# CONFIG_SYNC_FILE is not set -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_VIRT_DRIVERS is not set CONFIG_VIRTIO=y - -# -# Virtio drivers -# +CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_PCI=y # CONFIG_VIRTIO_PCI_LEGACY is not set +CONFIG_VIRTIO_PMEM=y CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_INPUT=y -# CONFIG_VIRTIO_MMIO is not set CONFIG_VIRTIO_WL=y - -# -# Microsoft Hyper-V guest support -# -# CONFIG_STAGING is not set -# CONFIG_X86_PLATFORM_DEVICES is not set -# CONFIG_CHROME_PLATFORMS is not set - -# -# Hardware Spinlock drivers -# +# CONFIG_VIRTIO_MMIO is not set # # Clock Source drivers # CONFIG_CLKEVT_I8253=y CONFIG_CLKBLD_I8253=y -# CONFIG_ATMEL_PIT is not set -# CONFIG_SH_TIMER_CMT is not set -# CONFIG_SH_TIMER_MTU2 is not set -# CONFIG_SH_TIMER_TMU is not set -# CONFIG_EM_TIMER_STI is not set -# CONFIG_MAILBOX is not set -# CONFIG_IOMMU_SUPPORT is not set +# end of Clock Source drivers -# -# Remoteproc drivers -# -# CONFIG_STE_MODEM_RPROC is not set - -# -# Rpmsg drivers -# - -# -# SOC (System On Chip) specific Drivers -# - -# -# Broadcom SoC drivers -# -# CONFIG_SUNXI_SRAM is not set -# CONFIG_SOC_TI is not set -# 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 -CONFIG_ARM_GIC_MAX_NR=1 -# CONFIG_IPACK_BUS is not set -# CONFIG_RESET_CONTROLLER is not set -# CONFIG_FMC is not set - -# -# PHY Subsystem -# -# CONFIG_GENERIC_PHY is not set -# CONFIG_PHY_PXA_28NM_HSIC is not set -# CONFIG_PHY_PXA_28NM_USB2 is not set -# CONFIG_BCM_KONA_USB2_PHY is not set -# CONFIG_POWERCAP is not set -# CONFIG_MCB is not set - -# -# Performance monitor support -# -# CONFIG_RAS is not set -# CONFIG_THUNDERBOLT is not set - -# -# Android -# -# CONFIG_ANDROID is not set +CONFIG_LIBNVDIMM=y +# CONFIG_BLK_DEV_PMEM is not set +# CONFIG_ND_BLK is not set +# CONFIG_BTT is not set +CONFIG_DAX=y # CONFIG_DEV_DAX is not set -# CONFIG_NVMEM is not set -# CONFIG_STM is not set -# CONFIG_INTEL_TH is not set - -# -# FPGA Configuration Support -# -# CONFIG_FPGA is not set - -# -# Firmware Drivers -# -# CONFIG_EDD is not set -# CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_DELL_RBU is not set -# CONFIG_DCDBAS is not set -# CONFIG_FW_CFG_SYSFS is not set -# CONFIG_GOOGLE_FIRMWARE is not set +# end of Device Drivers # # File systems # CONFIG_DCACHE_WORD_ACCESS=y -# CONFIG_EXT2_FS is not set +# 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 is not set +# CONFIG_EXT2_FS_SECURITY is not set # CONFIG_EXT3_FS is not set -# CONFIG_EXT4_FS is not set -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_F2FS_FS is not set -# CONFIG_FS_DAX is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_DAX=y CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y # CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y # CONFIG_MANDATORY_FILE_LOCKING is not set -# CONFIG_FS_ENCRYPTION is not set CONFIG_FSNOTIFY=y # CONFIG_DNOTIFY is not set CONFIG_INOTIFY_USER=y CONFIG_FANOTIFY=y # CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set -# CONFIG_QUOTA is not set -# CONFIG_QUOTACTL is not set # CONFIG_AUTOFS4_FS is not set +CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=y # CONFIG_CUSE is not set CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set # # Caches @@ -1450,28 +831,25 @@ CONFIG_FSCACHE=y # CONFIG_FSCACHE_HISTOGRAM is not set # CONFIG_FSCACHE_DEBUG is not set # CONFIG_FSCACHE_OBJECT_LIST is not set -# CONFIG_CACHEFILES is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set +# end of Caches # # DOS/FAT/NT Filesystems # # CONFIG_MSDOS_FS is not set # CONFIG_VFAT_FS 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_VMCORE is not set CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y # CONFIG_PROC_CHILDREN is not set +CONFIG_PROC_PID_ARCH_STATUS=y CONFIG_KERNFS=y CONFIG_SYSFS=y CONFIG_TMPFS=y @@ -1479,39 +857,12 @@ CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_CONFIGFS_FS=y -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_LOGFS 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 +# end of Pseudo filesystems + CONFIG_NETWORK_FILESYSTEMS=y -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set CONFIG_9P_FS=y # CONFIG_9P_FSCACHE is not set CONFIG_9P_FS_POSIX_ACL=y @@ -1519,410 +870,61 @@ CONFIG_9P_FS_POSIX_ACL=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=y -CONFIG_NLS_CODEPAGE_775=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_CODEPAGE_852=y -CONFIG_NLS_CODEPAGE_855=y -CONFIG_NLS_CODEPAGE_857=y -CONFIG_NLS_CODEPAGE_860=y -CONFIG_NLS_CODEPAGE_861=y -CONFIG_NLS_CODEPAGE_862=y -CONFIG_NLS_CODEPAGE_863=y -CONFIG_NLS_CODEPAGE_864=y -CONFIG_NLS_CODEPAGE_865=y -CONFIG_NLS_CODEPAGE_866=y -CONFIG_NLS_CODEPAGE_869=y -CONFIG_NLS_CODEPAGE_936=y -CONFIG_NLS_CODEPAGE_950=y -CONFIG_NLS_CODEPAGE_932=y -CONFIG_NLS_CODEPAGE_949=y -CONFIG_NLS_CODEPAGE_874=y -CONFIG_NLS_ISO8859_8=y -CONFIG_NLS_CODEPAGE_1250=y -CONFIG_NLS_CODEPAGE_1251=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_2=y -CONFIG_NLS_ISO8859_3=y -CONFIG_NLS_ISO8859_4=y -CONFIG_NLS_ISO8859_5=y -CONFIG_NLS_ISO8859_6=y -CONFIG_NLS_ISO8859_7=y -CONFIG_NLS_ISO8859_9=y -CONFIG_NLS_ISO8859_13=y -CONFIG_NLS_ISO8859_14=y -CONFIG_NLS_ISO8859_15=y -CONFIG_NLS_KOI8_R=y -CONFIG_NLS_KOI8_U=y -CONFIG_NLS_MAC_ROMAN=y -CONFIG_NLS_MAC_CELTIC=y -CONFIG_NLS_MAC_CENTEURO=y -CONFIG_NLS_MAC_CROATIAN=y -CONFIG_NLS_MAC_CYRILLIC=y -CONFIG_NLS_MAC_GAELIC=y -CONFIG_NLS_MAC_GREEK=y -CONFIG_NLS_MAC_ICELAND=y -CONFIG_NLS_MAC_INUIT=y -CONFIG_NLS_MAC_ROMANIAN=y -CONFIG_NLS_MAC_TURKISH=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 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=y -# CONFIG_DLM is not set - -# -# Kernel hacking -# -CONFIG_TRACE_IRQFLAGS_SUPPORT=y - -# -# printk and dmesg options -# -CONFIG_PRINTK_TIME=y -CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -# CONFIG_BOOT_PRINTK_DELAY is not set - -# -# 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_GDB_SCRIPTS is not set -CONFIG_ENABLE_WARN_DEPRECATED=y -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=2048 -CONFIG_STRIP_ASM_SYMS=y -# CONFIG_READABLE_ASM is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_SECTION_MISMATCH_WARN_ONLY=y -CONFIG_ARCH_WANT_FRAME_POINTERS=y -# CONFIG_FRAME_POINTER is not set -# CONFIG_STACK_VALIDATION is not set -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -# CONFIG_MAGIC_SYSRQ is not set -CONFIG_DEBUG_KERNEL=y - -# -# Memory Debugging -# -# CONFIG_PAGE_EXTENSION is not set -# CONFIG_DEBUG_PAGEALLOC 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_HAVE_DEBUG_KMEMLEAK=y -# CONFIG_DEBUG_STACK_USAGE is not set -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_VIRTUAL is not set -CONFIG_DEBUG_MEMORY_INIT=y -# CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_DEBUG_STACKOVERFLOW=y -# CONFIG_DEBUG_STACKOVERFLOW is not set -CONFIG_HAVE_ARCH_KMEMCHECK=y -# CONFIG_KMEMCHECK is not set -CONFIG_HAVE_ARCH_KASAN=y -# CONFIG_KASAN is not set -CONFIG_ARCH_HAS_KCOV=y -# CONFIG_DEBUG_SHIRQ is not set - -# -# Debug Lockups and Hangs -# -CONFIG_LOCKUP_DETECTOR=y -CONFIG_HARDLOCKUP_DETECTOR=y -# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -CONFIG_DETECT_HUNG_TASK=y -CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 -# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 -# CONFIG_WQ_WATCHDOG is not set -# CONFIG_PANIC_ON_OOPS is not set -CONFIG_PANIC_ON_OOPS_VALUE=0 -CONFIG_PANIC_TIMEOUT=0 -CONFIG_SCHED_DEBUG=y -CONFIG_SCHED_INFO=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_SCHED_STACK_END_CHECK is not set -# CONFIG_DEBUG_TIMEKEEPING is not set -CONFIG_TIMER_STATS=y - -# -# 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_ATOMIC_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_LOCK_TORTURE_TEST is not set -CONFIG_STACKTRACE=y -# CONFIG_DEBUG_KOBJECT is not set -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_LIST=y -# CONFIG_DEBUG_PI_LIST is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_DEBUG_CREDENTIALS is not set - -# -# RCU Debugging -# -# CONFIG_PROVE_RCU is not set -# CONFIG_SPARSE_RCU_POINTER is not set -# CONFIG_TORTURE_TEST is not set -# 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 -# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_USER_STACKTRACE_SUPPORT=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y -CONFIG_HAVE_FENTRY=y -CONFIG_HAVE_C_RECORDMCOUNT=y - -# -# Runtime Testing -# -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_RBTREE_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_KSTRTOX is not set -# CONFIG_TEST_PRINTF is not set -# CONFIG_TEST_BITMAP is not set -# CONFIG_TEST_UUID is not set -# CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set -# CONFIG_DMA_API_DEBUG is not set -# CONFIG_TEST_FIRMWARE is not set -# CONFIG_TEST_UDELAY is not set -# CONFIG_MEMTEST is not set -# CONFIG_SAMPLES is not set -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set -# CONFIG_UBSAN is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y -CONFIG_STRICT_DEVMEM=y -CONFIG_IO_STRICT_DEVMEM=y -# CONFIG_X86_VERBOSE_BOOTUP is not set -CONFIG_EARLY_PRINTK=y -# CONFIG_EARLY_PRINTK_DBGP is not set -# CONFIG_X86_PTDUMP_CORE is not set -CONFIG_DEBUG_RODATA_TEST=y -CONFIG_DOUBLEFAULT=y -# CONFIG_DEBUG_TLBFLUSH is not set -# CONFIG_IOMMU_STRESS is not set -CONFIG_HAVE_MMIOTRACE_SUPPORT=y -CONFIG_IO_DELAY_TYPE_0X80=0 -CONFIG_IO_DELAY_TYPE_0XED=1 -CONFIG_IO_DELAY_TYPE_UDELAY=2 -CONFIG_IO_DELAY_TYPE_NONE=3 -CONFIG_IO_DELAY_0X80=y -# CONFIG_IO_DELAY_0XED is not set -# CONFIG_IO_DELAY_UDELAY is not set -# CONFIG_IO_DELAY_NONE is not set -CONFIG_DEFAULT_IO_DELAY_TYPE=0 -# CONFIG_CPA_DEBUG is not set -CONFIG_OPTIMIZE_INLINING=y -# CONFIG_DEBUG_ENTRY is not set -# CONFIG_DEBUG_NMI_SELFTEST is not set -CONFIG_X86_DEBUG_FPU=y +# end of File systems # # Security options # - -# -# Grsecurity -# -CONFIG_PAX_PER_CPU_PGD=y -CONFIG_TASK_SIZE_MAX_SHIFT=42 -CONFIG_GRKERNSEC=y -# CONFIG_GRKERNSEC_CONFIG_AUTO is not set -CONFIG_GRKERNSEC_CONFIG_CUSTOM=y - -# -# Customize Configuration -# - -# -# PaX -# -CONFIG_PAX=y - -# -# PaX Control -# -# CONFIG_PAX_SOFTMODE is not set -# CONFIG_PAX_EI_PAX is not set -CONFIG_PAX_PT_PAX_FLAGS=y -CONFIG_PAX_XATTR_PAX_FLAGS=y -CONFIG_PAX_NO_ACL_FLAGS=y -# CONFIG_PAX_HAVE_ACL_FLAGS is not set -# CONFIG_PAX_HOOK_ACL_FLAGS is not set - -# -# Non-executable pages -# -CONFIG_PAX_NOEXEC=y -CONFIG_PAX_PAGEEXEC=y -CONFIG_PAX_EMUTRAMP=y -CONFIG_PAX_MPROTECT=y -CONFIG_PAX_MPROTECT_COMPAT=y -# CONFIG_PAX_ELFRELOCS is not set -CONFIG_PAX_KERNEXEC=y -CONFIG_PAX_KERNEXEC_PLUGIN=y -# CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_NONE is not set -CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_BTS=y - -# -# Address Space Layout Randomization -# -CONFIG_PAX_ASLR=y -CONFIG_PAX_RANDKSTACK=y -CONFIG_PAX_RANDUSTACK=y -CONFIG_PAX_RANDMMAP=y - -# -# Miscellaneous hardening features -# -# CONFIG_PAX_MEMORY_SANITIZE is not set -# CONFIG_PAX_MEMORY_STACKLEAK is not set -# CONFIG_PAX_MEMORY_STRUCTLEAK is not set -CONFIG_PAX_MEMORY_UDEREF=y -CONFIG_PAX_REFCOUNT=y -CONFIG_PAX_USERCOPY=y -CONFIG_PAX_CONSTIFY_PLUGIN=y -# CONFIG_PAX_USERCOPY_DEBUG is not set -CONFIG_PAX_SIZE_OVERFLOW=y -CONFIG_PAX_SIZE_OVERFLOW_EXTRA=y -# CONFIG_PAX_INITIFY is not set -CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y -CONFIG_PAX_LATENT_ENTROPY=y -CONFIG_PAX_RAP=y -# CONFIG_PAX_RAP_VERBOSE is not set - -# -# Memory Protections -# -CONFIG_GRKERNSEC_KMEM=y -CONFIG_GRKERNSEC_IO=y -CONFIG_GRKERNSEC_BPF_HARDEN=y -CONFIG_GRKERNSEC_PERF_HARDEN=y -CONFIG_GRKERNSEC_RAND_THREADSTACK=y -CONFIG_GRKERNSEC_PROC_MEMMAP=y -CONFIG_GRKERNSEC_KSTACKOVERFLOW=y -CONFIG_GRKERNSEC_BRUTE=y -CONFIG_GRKERNSEC_HIDESYM=y -CONFIG_GRKERNSEC_RANDSTRUCT=y -CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y -CONFIG_GRKERNSEC_KERN_LOCKOUT=y - -# -# Role Based Access Control Options -# -# CONFIG_GRKERNSEC_NO_RBAC is not set -# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set -CONFIG_GRKERNSEC_ACL_MAXTRIES=3 -CONFIG_GRKERNSEC_ACL_TIMEOUT=30 - -# -# Filesystem Protections -# -# CONFIG_GRKERNSEC_PROC is not set -CONFIG_GRKERNSEC_LINK=y -# CONFIG_GRKERNSEC_SYMLINKOWN is not set -CONFIG_GRKERNSEC_FIFO=y -CONFIG_GRKERNSEC_SYSFS_RESTRICT=y -CONFIG_GRKERNSEC_ROFS=y -CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y -CONFIG_GRKERNSEC_CHROOT=y -CONFIG_GRKERNSEC_CHROOT_MOUNT=y -CONFIG_GRKERNSEC_CHROOT_DOUBLE=y -CONFIG_GRKERNSEC_CHROOT_PIVOT=y -CONFIG_GRKERNSEC_CHROOT_CHDIR=y -CONFIG_GRKERNSEC_CHROOT_CHMOD=y -CONFIG_GRKERNSEC_CHROOT_FCHDIR=y -CONFIG_GRKERNSEC_CHROOT_MKNOD=y -CONFIG_GRKERNSEC_CHROOT_SHMAT=y -CONFIG_GRKERNSEC_CHROOT_UNIX=y -CONFIG_GRKERNSEC_CHROOT_FINDTASK=y -CONFIG_GRKERNSEC_CHROOT_NICE=y -CONFIG_GRKERNSEC_CHROOT_SYSCTL=y -CONFIG_GRKERNSEC_CHROOT_RENAME=y -CONFIG_GRKERNSEC_CHROOT_CAPS=y - -# -# Kernel Auditing -# -# CONFIG_GRKERNSEC_AUDIT_GROUP is not set -# CONFIG_GRKERNSEC_EXECLOG is not set -CONFIG_GRKERNSEC_RESLOG=y -# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set -# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set -# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set -# CONFIG_GRKERNSEC_AUDIT_MOUNT is not set -CONFIG_GRKERNSEC_SIGNAL=y -# CONFIG_GRKERNSEC_FORKFAIL is not set -CONFIG_GRKERNSEC_TIME=y -CONFIG_GRKERNSEC_PROC_IPADDR=y -CONFIG_GRKERNSEC_RWXMAP_LOG=y - -# -# Executable Protections -# -CONFIG_GRKERNSEC_DMESG=y -CONFIG_GRKERNSEC_HARDEN_PTRACE=y -CONFIG_GRKERNSEC_PTRACE_READEXEC=y -CONFIG_GRKERNSEC_SETXID=y -CONFIG_GRKERNSEC_HARDEN_IPC=y -CONFIG_GRKERNSEC_HARDEN_TTY=y -# CONFIG_GRKERNSEC_TPE is not set - -# -# Network Protections -# -CONFIG_GRKERNSEC_BLACKHOLE=y -CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y -# CONFIG_GRKERNSEC_SOCKET is not set - -# -# Physical Protections -# - -# -# Sysctl Support -# -CONFIG_GRKERNSEC_SYSCTL=y -# CONFIG_GRKERNSEC_SYSCTL_DISTRO is not set -CONFIG_GRKERNSEC_SYSCTL_ON=y - -# -# Logging Options -# -CONFIG_GRKERNSEC_FLOODTIME=10 -CONFIG_GRKERNSEC_FLOODBURST=6 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 @@ -1931,21 +933,43 @@ CONFIG_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y +CONFIG_PAGE_TABLE_ISOLATION=y CONFIG_SECURITY_PATH=y -CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_FALLBACK=y +# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +CONFIG_FORTIFY_SOURCE=y +# CONFIG_STATIC_USERMODEHELPER is not set # CONFIG_SECURITY_SELINUX is not set # CONFIG_SECURITY_SMACK is not set # CONFIG_SECURITY_TOMOYO is not set CONFIG_SECURITY_APPARMOR=y -CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set # CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set # CONFIG_INTEGRITY is not set CONFIG_DEFAULT_SECURITY_APPARMOR=y # CONFIG_DEFAULT_SECURITY_DAC is not set -CONFIG_DEFAULT_SECURITY="apparmor" +CONFIG_LSM="yama,loadpin,safesetid,integrity,apparmor,selinux,smack,tomoyo" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + CONFIG_CRYPTO=y # @@ -1959,124 +983,140 @@ 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_RSA is not set -# CONFIG_CRYPTO_DH is not set -# CONFIG_CRYPTO_ECDH is not set +CONFIG_CRYPTO_ACOMP2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set -CONFIG_CRYPTO_GF128MUL=y -CONFIG_CRYPTO_NULL=y +# CONFIG_CRYPTO_MANAGER_EXTRA_TESTS is not set +# CONFIG_CRYPTO_NULL is not set CONFIG_CRYPTO_NULL2=y -CONFIG_CRYPTO_PCRYPT=y -CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_PCRYPT is not set CONFIG_CRYPTO_CRYPTD=y -# CONFIG_CRYPTO_MCRYPTD is not set -CONFIG_CRYPTO_AUTHENC=y -CONFIG_CRYPTO_ABLK_HELPER=y +# CONFIG_CRYPTO_AUTHENC is not set +CONFIG_CRYPTO_SIMD=y CONFIG_CRYPTO_GLUE_HELPER_X86=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=y -CONFIG_CRYPTO_GCM=y +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set # CONFIG_CRYPTO_CHACHA20POLY1305 is not set -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=y +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_AEGIS128L is not set +# CONFIG_CRYPTO_AEGIS256 is not set +# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set +# CONFIG_CRYPTO_AEGIS128L_AESNI_SSE2 is not set +# CONFIG_CRYPTO_AEGIS256_AESNI_SSE2 is not set +# CONFIG_CRYPTO_MORUS640 is not set +# CONFIG_CRYPTO_MORUS640_SSE2 is not set +# CONFIG_CRYPTO_MORUS1280 is not set +# CONFIG_CRYPTO_MORUS1280_SSE2 is not set +# CONFIG_CRYPTO_MORUS1280_AVX2 is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_ECHAINIV is not set # # Block modes # CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CTR=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_LRW=y -CONFIG_CRYPTO_PCBC=y -CONFIG_CRYPTO_XTS=y +# 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_NHPOLY1305_SSE2 is not set +# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set +# CONFIG_CRYPTO_ADIANTUM is not set # # Hash modes # -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_XCBC=y -CONFIG_CRYPTO_VMAC=y +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set # # Digest # CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_CRC32C_INTEL=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_CRC32_PCLMUL=y +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_XXHASH is not set CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_CRCT10DIF_PCLMUL=y -CONFIG_CRYPTO_GHASH=y +# CONFIG_CRYPTO_GHASH is not set # CONFIG_CRYPTO_POLY1305 is not set # CONFIG_CRYPTO_POLY1305_X86_64 is not set -CONFIG_CRYPTO_MD4=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_MICHAEL_MIC=y -CONFIG_CRYPTO_RMD128=y -CONFIG_CRYPTO_RMD160=y -CONFIG_CRYPTO_RMD256=y -CONFIG_CRYPTO_RMD320=y +# 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=y -CONFIG_CRYPTO_SHA1_SSSE3=y +# CONFIG_CRYPTO_SHA1_SSSE3 is not set CONFIG_CRYPTO_SHA256_SSSE3=y -CONFIG_CRYPTO_SHA512_SSSE3=y -# CONFIG_CRYPTO_SHA1_MB is not set -# CONFIG_CRYPTO_SHA256_MB is not set -# CONFIG_CRYPTO_SHA512_MB is not set +# CONFIG_CRYPTO_SHA512_SSSE3 is not set CONFIG_CRYPTO_SHA256=y -CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_SHA3 is not set -CONFIG_CRYPTO_TGR192=y -CONFIG_CRYPTO_WP512=y -CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=y +# CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set # # Ciphers # CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set CONFIG_CRYPTO_AES_X86_64=y CONFIG_CRYPTO_AES_NI_INTEL=y -CONFIG_CRYPTO_ANUBIS=y -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_BLOWFISH=y -CONFIG_CRYPTO_BLOWFISH_COMMON=y -CONFIG_CRYPTO_BLOWFISH_X86_64=y -CONFIG_CRYPTO_CAMELLIA=y -CONFIG_CRYPTO_CAMELLIA_X86_64=y -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=y -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=y -CONFIG_CRYPTO_CAST_COMMON=y -CONFIG_CRYPTO_CAST5=y -CONFIG_CRYPTO_CAST5_AVX_X86_64=y -CONFIG_CRYPTO_CAST6=y -CONFIG_CRYPTO_CAST6_AVX_X86_64=y -CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set +# CONFIG_CRYPTO_DES is not set # CONFIG_CRYPTO_DES3_EDE_X86_64 is not set # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_KHAZAD is not set -CONFIG_CRYPTO_SALSA20=y -CONFIG_CRYPTO_SALSA20_X86_64=y -CONFIG_CRYPTO_CHACHA20=y -CONFIG_CRYPTO_CHACHA20_X86_64=y +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_CHACHA20_X86_64 is not set # CONFIG_CRYPTO_SEED is not set # CONFIG_CRYPTO_SERPENT is not set # CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set +# CONFIG_CRYPTO_SM4 is not set # CONFIG_CRYPTO_TEA is not set # CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_TWOFISH_X86_64 is not set @@ -2086,96 +1126,275 @@ CONFIG_CRYPTO_CHACHA20_X86_64=y # # Compression # -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set # CONFIG_CRYPTO_842 is not set -CONFIG_CRYPTO_LZ4=y -CONFIG_CRYPTO_LZ4HC=y +# 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=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR 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=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_JITTERENTROPY is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set # CONFIG_CRYPTO_USER_API_RNG is not set # CONFIG_CRYPTO_USER_API_AEAD is not set -# CONFIG_CRYPTO_HW is not set # CONFIG_ASYMMETRIC_KEY_TYPE is not set # # Certificates for signature checking # -CONFIG_HAVE_KVM=y -# CONFIG_VIRTUALIZATION is not set -# CONFIG_BINARY_PRINTF is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking # # Library routines # +# CONFIG_PACKING is not set CONFIG_BITREVERSE=y -# CONFIG_HAVE_ARCH_BITREVERSE is not set CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y CONFIG_GENERIC_FIND_FIRST_BIT=y +# CONFIG_CORDIC is not set CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y -CONFIG_GENERIC_IO=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -CONFIG_CRC_CCITT=y +# CONFIG_CRC_CCITT is not set CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC32_SELFTEST is not set CONFIG_CRC32_SLICEBY8=y # CONFIG_CRC32_SLICEBY4 is not set # CONFIG_CRC32_SARWATE is not set # CONFIG_CRC32_BIT is not set -CONFIG_CRC7=y -CONFIG_LIBCRC32C=y +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set # CONFIG_CRC8 is not set -# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set # CONFIG_RANDOM32_SELFTEST is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y -CONFIG_LZO_COMPRESS=y -CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_COMPRESS=y -CONFIG_LZ4HC_COMPRESS=y -CONFIG_LZ4_DECOMPRESS=y -CONFIG_XZ_DEC=y -CONFIG_XZ_DEC_X86=y -# CONFIG_XZ_DEC_POWERPC is not set -# CONFIG_XZ_DEC_IA64 is not set -# CONFIG_XZ_DEC_ARM is not set -# CONFIG_XZ_DEC_ARMTHUMB is not set -# CONFIG_XZ_DEC_SPARC is not set -CONFIG_XZ_DEC_BCJ=y -# CONFIG_XZ_DEC_TEST is not set -CONFIG_RADIX_TREE_MULTIORDER=y +# CONFIG_XZ_DEC is not set +CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_SWIOTLB=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_NLATTR=y -CONFIG_CORDIC=y -# CONFIG_DDR is not set -CONFIG_IRQ_POLL=y -# CONFIG_SG_SPLIT is not set -# CONFIG_SG_POOL is not set -CONFIG_ARCH_HAS_SG_CHAIN=y +# CONFIG_IRQ_POLL is not set +# CONFIG_DIMLIB is not set +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y CONFIG_ARCH_HAS_PMEM_API=y -CONFIG_ARCH_HAS_MMIO_FLUSH=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_STACKWALK=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 +# 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=y +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_INSTALL is not set +CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_FRAME_POINTER=y +CONFIG_STACK_VALIDATION=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_RODATA_TEST=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_CC_HAS_KASAN_GENERIC=y +# CONFIG_KASAN is not set +CONFIG_KASAN_STACK=1 +# end of Memory Debugging + +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# 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_SCHED_INFO=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_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# 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_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_UBSAN_ALIGNMENT=y +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +CONFIG_X86_PTDUMP_CORE=y +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_WX=y +CONFIG_DOUBLEFAULT=y +# CONFIG_DEBUG_TLBFLUSH is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +CONFIG_X86_DEBUG_FPU=y +# CONFIG_PUNIT_ATOM_DEBUG is not set +# CONFIG_UNWINDER_ORC is not set +CONFIG_UNWINDER_FRAME_POINTER=y +# CONFIG_UNWINDER_GUESS is not set +# end of Kernel hacking diff --git a/kernel/keys/minipli.key b/kernel/keys/minipli.key deleted file mode 100644 index 2ee0d1e..0000000 --- a/kernel/keys/minipli.key +++ /dev/null @@ -1,88 +0,0 @@ - ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: SKS 1.1.6 -Comment: Hostname: pgp.mit.edu - -mQINBE7f0lwBEAC8xd/vF0Tkh5hPrUy55U98Pi4bJf93PFCovSis+qiInCrQ+WE3Ni32ZYun -pjOE/QpNZBw/RmiFROZXBw+H/u2LwYNotLzjGcNxZ9jlOr/w/RXTU5pR1WBjYmyvLssy+YZ0 -lMXezfG2QjZIpiTJh9eEicl+QPIJFBNm13wZv+b54oG6xTPl4BX3ri01+OAuSTkro40qD2LG -gz8+SqQNKzApfOuk6FEzAsb2ySp+CNdmJVhRMGIQldeqYezkRDJB7u9bD+85bgmC+0f4y+4/ -1CShXtbpdF1Z+cX9RQ9bULetheYHAHycyFGKyaN/KLhptnjEsCQzebRFjy9ZAxZS2KnZXqre -1oUGQ3vl+3wr9X//hfuD7zJCUusc8ptLgRyHSHwat7OqTL38tA+InwkNvFVwQNP4UNwLIrqw -FoEQOhRFjY7ahW9+0Skqvt7XtZz3uzI32o+3XdYXfxfiiXJZylUuZv8ZqYXFNri6XuduXcma -A9Dhijaw2NNessuvdEGhE/cDJgQNezLIvZNpJHbWhdoBcvhc2Lybp5+hvx5VP2JMg2fzvyHi -DP9Ql898Z+oDpGBRMZq7jCxRzisRVCCDuZagbNG8ObSvE5SZDpxBvh5AuVBHw849BU1FIGRC -ykNDTB614fLqKQiescp1OtyG7rwu9926q2qpsQ8C+czDV+WpJQARAQABtCRNYXRoaWFzIEty -YXVzZSA8bWluaXBsaUBsZC1saW51eC5zbz6JAjgEEwECACIFAk7f0lwCGwMGCwkIBwMCBhUI -AgkKCwQWAgMBAh4BAheAAAoJEHWFOZmSQ1ukfLEQAIp9I5Ss/dnA2OgrBiY2LBgkJ/gMsA00 -jlMOF2Hh30OwS04n8uY6Q6zc4Uc/O1IVb968B0yqdT/HgpfalqYCk9fkTiyCmS39pdEKqVWl -DzN72IUaXTxnJ9HNHcsM/66Yxw34+yWdHSlKz/hysoCN/414lZrMWbHXFD/rdF8qP88BVC82 -ZCO0fLyqmnowLyDSliqk7Iq19WEKZeA5/3cDvAhWKmalT2MA7cbXbtCJW5EaW3Mw6aRjYyA7 -19FHkhk5DvsaJP4i9y+xFQI5j27g1W665tbiffbU9jpANnFw6C9kA9szg3dymS6AL00m3QY9 -FKm7UJs00AUD38vQhHHl2peF7RC8UpL+TTxxVwz7CNb3xMKrYUA62uM8aQYIC1gsr73//RVT -616HQh+T+LaXfy2+NuIeSV/PPKuwTcULeyZPC5o3ycM/VGpjb7dxUiT5NEMU5I+CQ4dwAHg8 -Mf7R4LBVP2Fd5sq/0UQ+yrv1npHl7OiVYr3YPPg4vOYjktSlGwcTyLVqzs8DcH3zaSaeb0OD -I2kN1uvt6PFrrhyi61RM0I+94uO2LAKZTNsylipoCf9cRO08dXf+kMaU9ICQSs2eduNTgfFB -Qo5DbC0wcmdBLUmTK7ekmgD30EiAFLMqHuD9O64tH3r0AyBH4mGbdoL5GEaVZoU+KUOvAlko -+4PuiEYEEBECAAYFAk//Fg0ACgkQZS2uZ5iBxS9ZgQCdHkiWHtc/9buaEIHqRFXAXXBR+k4A -oJlD1ggy4ugF4BMUpERiyuhhpGQytCRNYXRoaWFzIEtyYXVzZSA8bWluaXBsaUBtaW5pcGxp -Lm5ldD6JAjgEEwECACIFAk7f1YcCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHWF -OZmSQ1ukzGYQAJgucBJF1Dr0yeLbGW77YXq1ClvZ73U5CxjejVNxORMls8zMbAdXq9HCXmho -99T9PPG0Zs6BcIDzBNcx2VaoAyTSQWRppwBTAvLieAF+1VPYlZqOnAO5pLI+pS0ICsP1qKSp -dnq7SRZTMfLgMP0xWX9+hFm+r8CF/nrpcG07N39fcGnvehWey5CeeqgzndhTlEXbWgtcEDQR -jEyasqzb3Ag7dYDEqLcsHUOC+uyKotbK8WouYpjaf8sHoUTm9Lh8Nq/De7vqM5kDwMzNLIqQ -dconKIhiHyNFU4NoMM7+NSc/l0WeEEBKbvVjA1wq4mkBeZttKSwNndRYjjL85+7vQxMGzbVo -g7SzPJyEhycqrtKTEGMLx+hOOI+Ka4eVmuoIzi5E25R8Tb3hINw+T2IEwDyksR0he6WalcfZ -6Ac9C47ou6Ob7MPJsLOnfmoA/a8QIvGk6kbi8hsQLBS8DOVrez/hFyB4/q5wcJU6tTWm4lk9 -tk2Y14C4OyN3d8OZ1vYxnzsG2qaqgrPWkPlA/QE2PRNem0pfbFNRtuIef0Le8zRw0DjMcBzO -qKE+Y3MH7YMa+Ol6+/Zvgm0sFsheU9raoaJzuNny0tc1sAVcpNwl1oURvzy0P2U+dJNplrrQ -ZjP5u+Vc7LzL+PqBL6lHM7Q1BvuOXilT+zCiirsGW5W18w7iiEYEEBECAAYFAk//Fg0ACgkQ -ZS2uZ5iBxS9ZbQCgha9Jcf2Y7kq46I/4PHaCUlsxR7MAn3zspNTFYnN1PREsucJ825N3BQvA -tCZNYXRoaWFzIEtyYXVzZSA8bWluaXBsaUByMDB0d29ybGQubmV0PokCOAQTAQIAIgIbAwYL -CQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAk7f3n4ACgkQdYU5mZJDW6THdQ/9Hk4ErtabYVXU -awsqonSdsWRLhtCJUr3jg7b0S1W6a/MrLdDeIbQrNAwkq3BxHRPElMke2MfJgeQxRuTEQuxx -sYmghf+441BEk45y0Fn0RbSYmXgJfdQY1P9YJKGNBNd2kW4/23krWJgoKqFk4cMifr5YNymR -kUtOvvUS2ZtZF2KofOapVKbsUqk6fGXxRNfXcFPsT0br7/OUZlW+RyldOMma9PjKdFWdQ3mc -oIX8xh4YnkxmBx2Akz0AlK5KBg332thIfirPFJDiTYU/ovaNTMkk7mfKexrl7NaKsCg0QUcH -3H26vThh3hxVY+ovqhHNU9M7qn+ieNav5T49y51nlQXdPsogvomM8K3neENV9fUyKvxIufaN -bgWA5fuF6rP7s46eywLK56sL9qCVZ2FCSp60LxE2tnPy5EZU250UMWriWbal8TUPXoCquwlw -QT4jQSQ4xXSiZVG1iol9cgmkb9khznY4etQgVCy9smxT09ywc0oYENz+LAVd+Y4AeSkK06XG -N24oeIVcoM5U/O8V3W+8jOITtd3wr5YFWLOQVz2nW2nYfn7N1a68KixCvGCpxduVQLYXfYko -4LWlTz+dJU/0TdsPOb5BlWi68fQsDQn9ySzUdrhD3/16mLrUT1ouVCcA5bk4APErNe6z7x2W -8djc7KePdr9nTwkckL/7n6SIRgQQEQIABgUCT/8WDQAKCRBlLa5nmIHFL9dPAKCdOqTO8jJl -BSal2+hQKFMnSIJ+cgCfT7BUhV4YrxfG9rzZZ0apvCujzdC0J01hdGhpYXMgS3JhdXNlIDxt -aW5pcGxpQGdvb2dsZW1haWwuY29tPokCOwQTAQIAJQIbAwYLCQgHAwIGFQgCCQoLBBYCAwEC -HgECF4AFAk7f3oQCGQEACgkQdYU5mZJDW6QkNA//dWfeZ7qqFFrPd20TgPEMQFbxuZxs0GHU -VQbpBJ/M2agmL7sX6RD2Zere8POoU+l2d/GQp0Z2U2ztrWT9jDNYy2zjW9aw4A3eW3t31mjs -Sde4wESYwTp8+9zr+fsNbj6/vFJ/VFX+uB3AWE8zwyYnoWtcY0SAbVoYwZeKbnG67aupJUiz -Xcp9/FYDOZVZUcROrnG3Q+2sJGkAoZwBjueiCeHcFMsbqlKlM9qW/EQQh/pgoYkiAn5jtwEu -mRgF9itjpmX5PBUJBtaHVtXcANK5vCdSBqwNPIuULbGhfKto8XzMzAIZp2P21DasBBeUyu1Z -+LsTSwTNKzbIfvj8HgG9Phcsiq3mWBL6phfbVDFQBdDRTLM22B8JrcA6IsYtZUbwF2eugkUP -udoNSYts7KocOIO8/lrW6jCDnYrv9fhTrHkfA/qnOOvmzOBVAPaYDFKKd/mE8KXwgoP1N7kq -oh9jmuRkWg2bjregnnpi1ruEXmDjcXMYcJnpIjF7Z53Wxp2rpg+JYJz8HaSAQLjBC3x+brpr -mbFQMFbKkllOb57uqJC+WOiKp3WsceMRs5RZgrnS/q+m0EBskjrRipV0SXI/lNhELS2dcNe1 -+e0O+gxPhiI+L030O2BwfWpwfd3HRAGzL3YO3A12zIs7HtyW/BhuaJfRDLU5JslfeDpOpxR4 -Z0OIRgQQEQIABgUCT/8WDQAKCRBlLa5nmIHFL9HYAKCmz7Qfmu5orKFsR9GSDCYpvs14MgCe -Nm+BMfQCAXQ2sS1c3T5V8Y8H4XG5Ag0ETt/SXAEQANIPSLA0YqtAlHZMGe0IYUU40CAevIiz -j6sW14X2b2NsA8Eh0FkujG1zDEDr2Xzq307vqo+u4rYp8dJZlr2qiEKg1CQRoXvk30jbKr8w -QZ66EYkoRg2wzqBDitpVJbtLW5LeqaV96+aP4EO5IK/O+oUshqvHRG0QNPcYoL01mXX7E9F5 -maESiGM1KYwC+fiw7HUes64zT0Z/BJ+bH85ByTt9Z3/0JCYoeD3yy09V1nIj0i5tLWaSJTfj -9l0wJtZNOgQCBQ0wqj1+yzeMY84YkQw5i7HN6m/2iQwPpwt7ck9X7J+EbLSFyrGQCF4m56l7 -EIfO7vnz71cyUKuY1hhHCZgjx//8JqDS+2p7HwWsxciZkPz8/tVQAKn9dtP8ahmolW2AHCo3 -GmjGQ3HMHNtHRqtdjh6qCc27ScbkkSILSEoqG1zpRyB0cUV5QzwGdIIJHM+LcVC9v7lHjMD+ -tZJcv157A4GzZaOG1rP9FXdMwfeVkqMdu7cjI6hxa2h2K9uamDjKK9EqVcX7hYomz832HvTj -mceB2C5TwKJABY6EBbRH8DT4VFF7aYEtlzBJSN/O6QaxGL/aX5vxib2gGXTafZ2HFpaO4NYV -TkHx5mHLdI4eq4VJlOQjKMc+5yrV4idwg0IPgyAcVFifLjZJY7d/Gsciv3NGdpCaeJRxiHaM -j/S5ABEBAAGJAh8EGAECAAkFAk7f0lwCGwwACgkQdYU5mZJDW6T/XBAAgKaAmkC6WUTwlc5W -xIKCaqd1uCv86sGsPhxteOiHIn97ucELaAn3TdyQ3u0dY8TEdYEcww5MWWhQw6M0bYG/iW+k -9qbUusgcAj/PBqA+Iu55QoVpZrrX9PZCumhtaG2F6VWsz4U1ML1pxYeVC+X77iQep00yFlhG -NX9uFAqD8hp87QVpslgh2eWU8Ma9sG73avESJkE1jnw23rsSKY96Fy7sS50NdNfeMFEYBpXv -yO41J1/XVowfKxihD7Hs4Jz9iV2TQo3ASjtYcHDVRy3xRud3x0LgN5vDGO/FN6gbXXPM6HyT -lC4eKhz74oyoT7t6BsbvU2i50kmGYBx6PG8Xy+6Iu21/+imr6QuEwhSAuCRKHUYV2d/CrjvL -syxDpWFHEGwbqfCpOy15DV37Nlgtu3zUvc3T0TywCJjj4Q/fOHTm5Jjr0vvINdmP4qLhmikE -hZgk0QUs4pVYad5zFW4F9KDyMTtxiNk+NRlcNU4qurCPjvX9F7dX/3SPWNy5zQ9xPUtJdvXT -N/IoWduHiZO7ih4aS1bsaLr4YJ/n1NHwbH4vdI9s1heUezFHtoLEr3mBuiTxd/2F+1wtbb7C -mkmVzjYkhYrONRg6Pl3XGZrikOUa2Vy9u9w/M9AOpwbTR8j+raHIPZLNUwgZQDF47vggvj7y -tCiqjLBC3pzX+sNjnwQ= -=bPiP ------END PGP PUBLIC KEY BLOCK----- diff --git a/kernel/patches/0023-virtio-wayland.patch b/kernel/patches/0001-virtio-wl.patch similarity index 53% rename from kernel/patches/0023-virtio-wayland.patch rename to kernel/patches/0001-virtio-wl.patch index b5de698..b3fd36e 100644 --- a/kernel/patches/0023-virtio-wayland.patch +++ b/kernel/patches/0001-virtio-wl.patch @@ -1,25 +1,9 @@ -From ee3ae46ee497e111f6f4afbe3635f461e991c1e9 Mon Sep 17 00:00:00 2001 -From: Zach Reizner -Date: Mon, 14 Aug 2017 17:16:55 -0700 -Subject: [PATCH] virtwl: add virtwl driver - -TEST=emerge-tatl chromeos-kernel-4_4 -BUG=chromium:738638 - -Change-Id: I6e8e128a5548c915a9561938cbb066edc8c42747 -Reviewed-on: https://chromium-review.googlesource.com/567299 -Commit-Ready: Zach Reizner -Tested-by: Zach Reizner -Reviewed-by: Zach Reizner ---- - -diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig -index cab9f3f..968e737 100644 ---- a/drivers/virtio/Kconfig -+++ b/drivers/virtio/Kconfig -@@ -79,4 +79,12 @@ +diff -uprN linux-5.3/drivers/virtio/Kconfig linux-5.3-wl/drivers/virtio/Kconfig +--- linux-5.3/drivers/virtio/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-wl/drivers/virtio/Kconfig 2019-09-19 23:04:23.616276643 -0400 +@@ -74,6 +74,14 @@ config VIRTIO_INPUT - If unsure, say 'N'. + If unsure, say M. +config VIRTIO_WL + bool "Virtio Wayland driver" @@ -29,22 +13,21 @@ index cab9f3f..968e737 100644 + + If unsure, say 'N'. + - endmenu -diff --git a/drivers/virtio/Makefile b/drivers/virtio/Makefile -index 41e30e3..bd941ca 100644 ---- a/drivers/virtio/Makefile -+++ b/drivers/virtio/Makefile -@@ -5,3 +5,4 @@ + config VIRTIO_MMIO + tristate "Platform bus driver for memory mapped virtio devices" + depends on HAS_IOMEM && HAS_DMA +diff -uprN linux-5.3/drivers/virtio/Makefile linux-5.3-wl/drivers/virtio/Makefile +--- linux-5.3/drivers/virtio/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-wl/drivers/virtio/Makefile 2019-09-19 23:01:36.338268667 -0400 +@@ -6,3 +6,4 @@ virtio_pci-y := virtio_pci_modern.o virt virtio_pci-$(CONFIG_VIRTIO_PCI_LEGACY) += virtio_pci_legacy.o obj-$(CONFIG_VIRTIO_BALLOON) += virtio_balloon.o obj-$(CONFIG_VIRTIO_INPUT) += virtio_input.o +obj-$(CONFIG_VIRTIO_WL) += virtio_wl.o -diff --git a/drivers/virtio/virtio_wl.c b/drivers/virtio/virtio_wl.c -new file mode 100644 -index 0000000..6cec6ae ---- /dev/null -+++ b/drivers/virtio/virtio_wl.c -@@ -0,0 +1,1198 @@ +diff -uprN linux-5.3/drivers/virtio/virtio_wl.c linux-5.3-wl/drivers/virtio/virtio_wl.c +--- linux-5.3/drivers/virtio/virtio_wl.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-wl/drivers/virtio/virtio_wl.c 2019-09-19 23:08:03.337287120 -0400 +@@ -0,0 +1,1482 @@ +/* + * Wayland Virtio Driver + * Copyright (C) 2017 Google, Inc. @@ -62,32 +45,35 @@ index 0000000..6cec6ae + */ + +/* -+Virtio Wayland (virtio_wl or virtwl) is a virtual device that allows a guest -+virtual machine to use a wayland server on the host transparently (to the host). -+This is done by proxying the wayland protocol socket stream verbatim between the -+host and guest over 2 (recv and send) virtio queues. The guest can request new -+wayland server connections to give each guest wayland client a different server -+context. Each host connection's file descriptor is exposed to the guest as a -+virtual file descriptor (VFD). Additionally, the guest can request shared memory -+file descriptors which are also exposed as VFDs. These shared memory VFDs are -+directly writable by the guest via device memory injected by the host. Each VFD -+is sendable along a connection context VFD and will appear as ancillary data to -+the wayland server, just like a message from an ordinary wayland client. When -+the wayland server sends a shared memory file descriptor to the client (such as -+when sending a keymap), a VFD is allocated by the device automatically and its -+memory is injected into as device memory. -+ -+This driver is intended to be paired with the `virtwl_guest_proxy` program which -+is run in the guest system and acts like a wayland server. It accepts wayland -+client connections and converts their socket messages to ioctl messages exposed -+by this driver via the `/dev/wl` device file. While it would be possible to -+expose a unix stream socket from this driver, the user space helper is much -+cleaner to write. -+*/ ++ * Virtio Wayland (virtio_wl or virtwl) is a virtual device that allows a guest ++ * virtual machine to use a wayland server on the host transparently (to the ++ * host). This is done by proxying the wayland protocol socket stream verbatim ++ * between the host and guest over 2 (recv and send) virtio queues. The guest ++ * can request new wayland server connections to give each guest wayland client ++ * a different server context. Each host connection's file descriptor is exposed ++ * to the guest as a virtual file descriptor (VFD). Additionally, the guest can ++ * request shared memory file descriptors which are also exposed as VFDs. These ++ * shared memory VFDs are directly writable by the guest via device memory ++ * injected by the host. Each VFD is sendable along a connection context VFD and ++ * will appear as ancillary data to the wayland server, just like a message from ++ * an ordinary wayland client. When the wayland server sends a shared memory ++ * file descriptor to the client (such as when sending a keymap), a VFD is ++ * allocated by the device automatically and its memory is injected into as ++ * device memory. ++ * ++ * This driver is intended to be paired with the `virtwl_guest_proxy` program ++ * which is run in the guest system and acts like a wayland server. It accepts ++ * wayland client connections and converts their socket messages to ioctl ++ * messages exposed by this driver via the `/dev/wl` device file. While it would ++ * be possible to expose a unix stream socket from this driver, the user space ++ * helper is much cleaner to write. ++ */ + +#include +#include ++#include +#include ++#include +#include +#include +#include @@ -103,6 +89,13 @@ index 0000000..6cec6ae +#include +#include + ++#include ++#include ++ ++#ifdef CONFIG_DRM_VIRTIO_GPU ++#define SEND_VIRTGPU_RESOURCES ++#endif ++ +#define VFD_ILLEGAL_SIGN_BIT 0x80000000 +#define VFD_HOST_VFD_ID_BIT 0x40000000 + @@ -123,6 +116,7 @@ index 0000000..6cec6ae + uint32_t flags; + uint64_t pfn; + uint32_t size; ++ bool hungup; + + struct list_head in_queue; /* list of virtwl_vfd_qentry */ + wait_queue_head_t in_waitq; @@ -148,22 +142,29 @@ index 0000000..6cec6ae +static struct virtwl_vfd *virtwl_vfd_alloc(struct virtwl_info *vi); +static void virtwl_vfd_free(struct virtwl_vfd *vfd); + -+static struct file_operations virtwl_vfd_fops; ++static const struct file_operations virtwl_vfd_fops; + +static int virtwl_resp_err(unsigned int type) +{ + switch (type) { -+ case VIRTIO_WL_RESP_OK: -+ case VIRTIO_WL_RESP_VFD_NEW: -+ return 0; -+ case VIRTIO_WL_RESP_ERR: -+ return -ENODEV; /* Device is no longer reliable */ -+ case VIRTIO_WL_RESP_OUT_OF_MEMORY: -+ return -ENOMEM; -+ case VIRTIO_WL_RESP_INVALID_ID: -+ case VIRTIO_WL_RESP_INVALID_TYPE: -+ default: -+ return -EINVAL; ++ case VIRTIO_WL_RESP_OK: ++ case VIRTIO_WL_RESP_VFD_NEW: ++ case VIRTIO_WL_RESP_VFD_NEW_DMABUF: ++ return 0; ++ case VIRTIO_WL_RESP_ERR: ++ return -ENODEV; /* Device is no longer reliable */ ++ case VIRTIO_WL_RESP_OUT_OF_MEMORY: ++ return -ENOMEM; ++ case VIRTIO_WL_RESP_INVALID_ID: ++ return -ENOENT; ++ case VIRTIO_WL_RESP_INVALID_TYPE: ++ return -EINVAL; ++ case VIRTIO_WL_RESP_INVALID_FLAGS: ++ return -EPERM; ++ case VIRTIO_WL_RESP_INVALID_CMD: ++ return -ENOTTY; ++ default: ++ return -EPROTO; + } +} + @@ -171,11 +172,12 @@ index 0000000..6cec6ae +{ + int ret; + struct scatterlist sg[1]; ++ + sg_init_one(sg, buffer, PAGE_SIZE); + + ret = virtqueue_add_inbuf(vq, sg, 1, buffer, GFP_KERNEL); + if (ret) { -+ printk("virtwl: failed to give inbuf to host: %d\n", ret); ++ pr_warn("virtwl: failed to give inbuf to host: %d\n", ret); + return ret; + } + @@ -194,7 +196,7 @@ index 0000000..6cec6ae + + mutex_lock(vq_lock); + while ((ret = virtqueue_add_sgs(vq, sgs, 1, 1, finish_completion, -+ GFP_KERNEL)) == -ENOSPC) { ++ GFP_KERNEL)) == -ENOSPC) { + mutex_unlock(vq_lock); + if (nonblock) + return -EAGAIN; @@ -229,9 +231,8 @@ index 0000000..6cec6ae + return 0; + +clear_queue: -+ while ((buffer = virtqueue_detach_unused_buf(vq))) { ++ while ((buffer = virtqueue_detach_unused_buf(vq))) + kfree(buffer); -+ } + return ret; +} + @@ -246,7 +247,7 @@ index 0000000..6cec6ae + return true; /* return the inbuf to vq */ + + if (!(id & VFD_HOST_VFD_ID_BIT) || (id & VFD_ILLEGAL_SIGN_BIT)) { -+ printk("virtwl: received a vfd with invalid id: %u\n", id); ++ pr_warn("virtwl: received a vfd with invalid id: %u\n", id); + return true; /* return the inbuf to vq */ + } + @@ -260,7 +261,7 @@ index 0000000..6cec6ae + + if (ret <= 0) { + virtwl_vfd_free(vfd); -+ printk("virtwl: failed to place received vfd: %d\n", ret); ++ pr_warn("virtwl: failed to place received vfd: %d\n", ret); + return true; /* return the inbuf to vq */ + } + @@ -286,14 +287,14 @@ index 0000000..6cec6ae + mutex_unlock(&vi->vfds_lock); + + if (!vfd) { -+ printk("virtwl: recv for unknown vfd_id %u\n", recv->vfd_id); ++ pr_warn("virtwl: recv for unknown vfd_id %u\n", recv->vfd_id); + return true; /* return the inbuf to vq */ + } + + qentry = kzalloc(sizeof(*qentry), GFP_KERNEL); + if (!qentry) { + mutex_unlock(&vfd->lock); -+ printk("virtwl: failed to allocate qentry for vfd\n"); ++ pr_warn("virtwl: failed to allocate qentry for vfd\n"); + return true; /* return the inbuf to vq */ + } + @@ -301,12 +302,39 @@ index 0000000..6cec6ae + qentry->len = len; + + list_add_tail(&qentry->list, &vfd->in_queue); -+ wake_up_interruptible(&vfd->in_waitq); ++ wake_up_interruptible_all(&vfd->in_waitq); + mutex_unlock(&vfd->lock); + + return false; /* no return the inbuf to vq */ +} + ++static bool vq_handle_hup(struct virtwl_info *vi, ++ struct virtio_wl_ctrl_vfd *vfd_hup, ++ unsigned int len) ++{ ++ struct virtwl_vfd *vfd; ++ ++ mutex_lock(&vi->vfds_lock); ++ vfd = idr_find(&vi->vfds, vfd_hup->vfd_id); ++ if (vfd) ++ mutex_lock(&vfd->lock); ++ mutex_unlock(&vi->vfds_lock); ++ ++ if (!vfd) { ++ pr_warn("virtwl: hup for unknown vfd_id %u\n", vfd_hup->vfd_id); ++ return true; /* return the inbuf to vq */ ++ } ++ ++ if (vfd->hungup) ++ pr_warn("virtwl: hup for hungup vfd_id %u\n", vfd_hup->vfd_id); ++ ++ vfd->hungup = true; ++ wake_up_interruptible_all(&vfd->in_waitq); ++ mutex_unlock(&vfd->lock); ++ ++ return true; ++} ++ +static bool vq_dispatch_hdr(struct virtwl_info *vi, unsigned int len, + struct virtio_wl_ctrl_hdr *hdr) +{ @@ -325,8 +353,12 @@ index 0000000..6cec6ae + return_vq = vq_handle_recv(vi, + (struct virtio_wl_ctrl_vfd_recv *)hdr, len); + break; ++ case VIRTIO_WL_CMD_VFD_HUP: ++ return_vq = vq_handle_hup(vi, (struct virtio_wl_ctrl_vfd *)hdr, ++ len); ++ break; + default: -+ printk("virtwl: unhandled ctrl command: %u\n", hdr->type); ++ pr_warn("virtwl: unhandled ctrl command: %u\n", hdr->type); + break; + } + @@ -337,7 +369,7 @@ index 0000000..6cec6ae + ret = vq_return_inbuf_locked(vq, hdr); + mutex_unlock(vq_lock); + if (ret) { -+ printk("virtwl: failed to return inbuf to host: %d\n", ret); ++ pr_warn("virtwl: failed to return inbuf to host: %d\n", ret); + kfree(hdr); + } + @@ -357,6 +389,7 @@ index 0000000..6cec6ae + mutex_lock(vq_lock); + while ((buffer = virtqueue_get_buf(vq, &len)) != NULL) { + struct virtio_wl_ctrl_hdr *hdr = buffer; ++ + mutex_unlock(vq_lock); + kick_vq |= vq_dispatch_hdr(vi, len, hdr); + mutex_lock(vq_lock); @@ -385,24 +418,27 @@ index 0000000..6cec6ae + mutex_unlock(vq_lock); + + if (wake_waitq) -+ wake_up_interruptible(&vi->out_waitq); ++ wake_up_interruptible_all(&vi->out_waitq); +} + +static void vq_in_cb(struct virtqueue *vq) +{ + struct virtwl_info *vi = vq->vdev->priv; ++ + schedule_work(&vi->in_vq_work); +} + +static void vq_out_cb(struct virtqueue *vq) +{ + struct virtwl_info *vi = vq->vdev->priv; ++ + schedule_work(&vi->out_vq_work); +} + +static struct virtwl_vfd *virtwl_vfd_alloc(struct virtwl_info *vi) +{ + struct virtwl_vfd *vfd = kzalloc(sizeof(struct virtwl_vfd), GFP_KERNEL); ++ + if (!vfd) + return ERR_PTR(-ENOMEM); + @@ -415,14 +451,32 @@ index 0000000..6cec6ae + return vfd; +} + ++static int virtwl_vfd_file_flags(struct virtwl_vfd *vfd) ++{ ++ int flags = 0; ++ int rw_mask = VIRTIO_WL_VFD_WRITE | VIRTIO_WL_VFD_READ; ++ ++ if ((vfd->flags & rw_mask) == rw_mask) ++ flags |= O_RDWR; ++ else if (vfd->flags & VIRTIO_WL_VFD_WRITE) ++ flags |= O_WRONLY; ++ else if (vfd->flags & VIRTIO_WL_VFD_READ) ++ flags |= O_RDONLY; ++ if (vfd->pfn) ++ flags |= O_RDWR; ++ return flags; ++} ++ +/* Locks the vfd and unlinks its id from vi */ +static void virtwl_vfd_lock_unlink(struct virtwl_vfd *vfd) +{ + struct virtwl_info *vi = vfd->vi; ++ + /* this order is important to avoid deadlock */ + mutex_lock(&vi->vfds_lock); + mutex_lock(&vfd->lock); + idr_remove(&vi->vfds, vfd->id); ++ mutex_unlock(&vfd->lock); + mutex_unlock(&vi->vfds_lock); +} + @@ -445,15 +499,17 @@ index 0000000..6cec6ae + struct virtqueue *vq = vi->vqs[VIRTWL_VQ_IN]; + struct mutex *vq_lock = &vi->vq_locks[VIRTWL_VQ_IN]; + struct virtwl_vfd_qentry *qentry, *next; ++ + virtwl_vfd_lock_unlink(vfd); + + mutex_lock(vq_lock); -+ list_for_each_entry_safe(next, qentry, &vfd->in_queue, list) { ++ list_for_each_entry_safe(qentry, next, &vfd->in_queue, list) { + vq_return_inbuf_locked(vq, qentry->hdr); + list_del(&qentry->list); + kfree(qentry); + } + mutex_unlock(vq_lock); ++ virtqueue_kick(vq); + + virtwl_vfd_free(vfd); +} @@ -500,10 +556,7 @@ index 0000000..6cec6ae + sizeof(__le32) + qentry->data_offset; + u8 *buf = (u8 *)recv + recv_offset; + ssize_t to_read = (ssize_t)qentry->len - (ssize_t)recv_offset; -+ if (read_count >= len) -+ break; -+ if (to_read <= 0) -+ continue; ++ + if (qentry->hdr->type != VIRTIO_WL_CMD_VFD_RECV) + continue; + @@ -511,9 +564,7 @@ index 0000000..6cec6ae + to_read = len - read_count; + + if (copy_to_user(buffer + read_count, buf, to_read)) { -+ /* return error unless we have some data to return */ -+ if (read_count == 0) -+ read_count = -EFAULT; ++ read_count = -EFAULT; + break; + } + @@ -521,11 +572,15 @@ index 0000000..6cec6ae + + qentry->data_offset += to_read; + vfd_qentry_free_if_empty(vfd, qentry); ++ ++ if (read_count >= len) ++ break; + } + + return read_count; +} + ++/* must hold both vfd->lock and vi->vfds_lock */ +static size_t vfd_out_vfds_locked(struct virtwl_vfd *vfd, + struct virtwl_vfd **vfds, size_t count) +{ @@ -541,6 +596,7 @@ index 0000000..6cec6ae + sizeof(__le32); + __le32 *vfds_le = (__le32 *)((void *)recv + vfd_offset); + ssize_t vfds_to_read = recv->vfd_count - qentry->vfd_offset; ++ + if (read_count >= count) + break; + if (vfds_to_read <= 0) @@ -553,21 +609,12 @@ index 0000000..6cec6ae + + for (i = 0; i < vfds_to_read; i++) { + uint32_t vfd_id = le32_to_cpu(vfds_le[i]); -+ /* -+ This is an inversion of the typical locking order -+ (vi->vfds_lock before vfd->lock). The reason this is -+ safe from deadlocks is because the lock held as a -+ precondition of this function call is always for a -+ different vfd than the one received on this vfd's queue. -+ */ -+ mutex_lock(&vi->vfds_lock); + vfds[read_count] = idr_find(&vi->vfds, vfd_id); -+ mutex_unlock(&vi->vfds_lock); + if (vfds[read_count]) { + read_count++; + } else { -+ printk("virtwl: received a vfd with unrecognized id: %u\n", -+ vfd_id); ++ pr_warn("virtwl: received a vfd with unrecognized id: %u\n", ++ vfd_id); + } + qentry->vfd_offset++; + } @@ -595,15 +642,18 @@ index 0000000..6cec6ae + ctrl_close->hdr.type = VIRTIO_WL_CMD_VFD_CLOSE; + ctrl_close->vfd_id = vfd->id; + -+ sg_init_one(&in_sg, &ctrl_close->hdr, sizeof(struct virtio_wl_ctrl_vfd)); -+ sg_init_one(&out_sg, &ctrl_close->hdr, sizeof(struct virtio_wl_ctrl_hdr)); ++ sg_init_one(&out_sg, &ctrl_close->hdr, ++ sizeof(struct virtio_wl_ctrl_vfd)); ++ sg_init_one(&in_sg, &ctrl_close->hdr, ++ sizeof(struct virtio_wl_ctrl_hdr)); + + init_completion(&finish_completion); + ret = vq_queue_out(vi, &out_sg, &in_sg, &finish_completion, + false /* block */); + if (ret) { -+ printk("virtwl: failed to queue close vfd id %u: %d\n", vfd->id, -+ ret); ++ pr_warn("virtwl: failed to queue close vfd id %u: %d\n", ++ vfd->id, ++ ret); + goto free_ctrl_close; + } + @@ -620,21 +670,30 @@ index 0000000..6cec6ae + size_t *vfd_count) +{ + struct virtwl_vfd *vfd = filp->private_data; ++ struct virtwl_info *vi = vfd->vi; + ssize_t read_count = 0; + size_t vfd_read_count = 0; ++ bool force_to_wait = false; + ++ mutex_lock(&vi->vfds_lock); + mutex_lock(&vfd->lock); + + while (read_count == 0 && vfd_read_count == 0) { -+ while (list_empty(&vfd->in_queue)) { ++ while (force_to_wait || list_empty(&vfd->in_queue)) { ++ force_to_wait = false; ++ if (vfd->hungup) ++ goto out_unlock; ++ + mutex_unlock(&vfd->lock); ++ mutex_unlock(&vi->vfds_lock); + if (filp->f_flags & O_NONBLOCK) + return -EAGAIN; + + if (wait_event_interruptible(vfd->in_waitq, -+ !list_empty(&vfd->in_queue))) ++ !list_empty(&vfd->in_queue) || vfd->hungup)) + return -ERESTARTSYS; + ++ mutex_lock(&vi->vfds_lock); + mutex_lock(&vfd->lock); + } + @@ -644,15 +703,264 @@ index 0000000..6cec6ae + if (vfds && vfd_count && *vfd_count) + vfd_read_count = vfd_out_vfds_locked(vfd, vfds, + *vfd_count); ++ else if (read_count == 0 && !list_empty(&vfd->in_queue)) ++ /* ++ * Indicates a corner case where the in_queue has ONLY ++ * incoming VFDs but the caller has given us no space to ++ * store them. We force a wait for more activity on the ++ * in_queue to prevent busy waiting. ++ */ ++ force_to_wait = true; + } + -+ *vfd_count = vfd_read_count; -+ +out_unlock: + mutex_unlock(&vfd->lock); ++ mutex_unlock(&vi->vfds_lock); ++ if (vfd_count) ++ *vfd_count = vfd_read_count; + return read_count; +} + ++static int encode_vfd_ids(struct virtwl_vfd **vfds, size_t vfd_count, ++ __le32 *vfd_ids) ++{ ++ size_t i; ++ ++ for (i = 0; i < vfd_count; i++) { ++ if (vfds[i]) ++ vfd_ids[i] = cpu_to_le32(vfds[i]->id); ++ else ++ return -EBADFD; ++ } ++ return 0; ++} ++ ++#ifdef SEND_VIRTGPU_RESOURCES ++static int encode_vfd_ids_foreign(struct virtwl_vfd **vfds, ++ struct dma_buf **virtgpu_dma_bufs, ++ size_t vfd_count, ++ struct virtio_wl_ctrl_vfd_send_vfd *vfd_ids) ++{ ++ size_t i; ++ int ret; ++ ++ for (i = 0; i < vfd_count; i++) { ++ if (vfds[i]) { ++ vfd_ids[i].kind = VIRTIO_WL_CTRL_VFD_SEND_KIND_LOCAL; ++ vfd_ids[i].id = cpu_to_le32(vfds[i]->id); ++ } else if (virtgpu_dma_bufs[i]) { ++ ret = virtio_gpu_dma_buf_to_handle(virtgpu_dma_bufs[i], ++ false, ++ &vfd_ids[i].id); ++ if (ret) ++ return ret; ++ vfd_ids[i].kind = VIRTIO_WL_CTRL_VFD_SEND_KIND_VIRTGPU; ++ } else { ++ return -EBADFD; ++ } ++ } ++ return 0; ++} ++#endif ++ ++static int virtwl_vfd_send(struct file *filp, const char __user *buffer, ++ u32 len, int *vfd_fds) ++{ ++ struct virtwl_vfd *vfd = filp->private_data; ++ struct virtwl_info *vi = vfd->vi; ++ struct fd vfd_files[VIRTWL_SEND_MAX_ALLOCS] = { { 0 } }; ++ struct virtwl_vfd *vfds[VIRTWL_SEND_MAX_ALLOCS] = { 0 }; ++#ifdef SEND_VIRTGPU_RESOURCES ++ struct dma_buf *virtgpu_dma_bufs[VIRTWL_SEND_MAX_ALLOCS] = { 0 }; ++ bool foreign_id = false; ++#endif ++ size_t vfd_count = 0; ++ size_t vfd_ids_size; ++ size_t ctrl_send_size; ++ struct virtio_wl_ctrl_vfd_send *ctrl_send; ++ u8 *vfd_ids; ++ u8 *out_buffer; ++ struct completion finish_completion; ++ struct scatterlist out_sg; ++ struct scatterlist in_sg; ++ int ret; ++ int i; ++ ++ if (vfd_fds) { ++ for (i = 0; i < VIRTWL_SEND_MAX_ALLOCS; i++) { ++ struct fd vfd_file; ++ int fd = vfd_fds[i]; ++ ++ if (fd < 0) ++ break; ++ ++ vfd_file = fdget(vfd_fds[i]); ++ if (!vfd_file.file) { ++ ret = -EBADFD; ++ goto put_files; ++ } ++ ++ if (vfd_file.file->f_op == &virtwl_vfd_fops) { ++ vfd_files[i] = vfd_file; ++ ++ vfds[i] = vfd_file.file->private_data; ++ if (vfds[i] && vfds[i]->id) { ++ vfd_count++; ++ continue; ++ } ++ ++ ret = -EINVAL; ++ goto put_files; ++ } else { ++ struct dma_buf *dma_buf = ERR_PTR(-EINVAL); ++#ifdef SEND_VIRTGPU_RESOURCES ++ dma_buf = dma_buf_get(vfd_fds[i]); ++ if (!IS_ERR(dma_buf)) { ++ fdput(vfd_file); ++ virtgpu_dma_bufs[i] = dma_buf; ++ foreign_id = true; ++ vfd_count++; ++ continue; ++ } ++#endif ++ fdput(vfd_file); ++ ret = PTR_ERR(dma_buf); ++ goto put_files; ++ } ++ } ++ } ++ ++ /* Empty writes always succeed. */ ++ if (len == 0 && vfd_count == 0) ++ return 0; ++ ++ vfd_ids_size = vfd_count * sizeof(__le32); ++#ifdef SEND_VIRTGPU_RESOURCES ++ if (foreign_id) { ++ vfd_ids_size = vfd_count * ++ sizeof(struct virtio_wl_ctrl_vfd_send_vfd); ++ } ++#endif ++ ctrl_send_size = sizeof(*ctrl_send) + vfd_ids_size + len; ++ ctrl_send = kzalloc(ctrl_send_size, GFP_KERNEL); ++ if (!ctrl_send) { ++ ret = -ENOMEM; ++ goto put_files; ++ } ++ ++ vfd_ids = (u8 *)ctrl_send + sizeof(*ctrl_send); ++ out_buffer = (u8 *)ctrl_send + ctrl_send_size - len; ++ ++ ctrl_send->hdr.type = VIRTIO_WL_CMD_VFD_SEND; ++#ifdef SEND_VIRTGPU_RESOURCES ++ if (foreign_id) { ++ ctrl_send->hdr.type = VIRTIO_WL_CMD_VFD_SEND_FOREIGN_ID; ++ ret = encode_vfd_ids_foreign(vfds, virtgpu_dma_bufs, vfd_count, ++ (struct virtio_wl_ctrl_vfd_send_vfd *)vfd_ids); ++ } else { ++ ret = encode_vfd_ids(vfds, vfd_count, (__le32 *)vfd_ids); ++ } ++#else ++ ret = encode_vfd_ids(vfds, vfd_count, (__le32 *)vfd_ids); ++#endif ++ if (ret) ++ goto free_ctrl_send; ++ ctrl_send->vfd_id = vfd->id; ++ ctrl_send->vfd_count = vfd_count; ++ ++ if (copy_from_user(out_buffer, buffer, len)) { ++ ret = -EFAULT; ++ goto free_ctrl_send; ++ } ++ ++ init_completion(&finish_completion); ++ sg_init_one(&out_sg, ctrl_send, ctrl_send_size); ++ sg_init_one(&in_sg, ctrl_send, sizeof(struct virtio_wl_ctrl_hdr)); ++ ++ ret = vq_queue_out(vi, &out_sg, &in_sg, &finish_completion, ++ filp->f_flags & O_NONBLOCK); ++ if (ret) ++ goto free_ctrl_send; ++ ++ wait_for_completion(&finish_completion); ++ ++ ret = virtwl_resp_err(ctrl_send->hdr.type); ++ ++free_ctrl_send: ++ kfree(ctrl_send); ++put_files: ++ for (i = 0; i < VIRTWL_SEND_MAX_ALLOCS; i++) { ++ if (vfd_files[i].file) ++ fdput(vfd_files[i]); ++#ifdef SEND_VIRTGPU_RESOURCES ++ if (virtgpu_dma_bufs[i]) ++ dma_buf_put(virtgpu_dma_bufs[i]); ++#endif ++ } ++ return ret; ++} ++ ++static int virtwl_vfd_dmabuf_sync(struct file *filp, u32 flags) ++{ ++ struct virtio_wl_ctrl_vfd_dmabuf_sync *ctrl_dmabuf_sync; ++ struct virtwl_vfd *vfd = filp->private_data; ++ struct virtwl_info *vi = vfd->vi; ++ struct completion finish_completion; ++ struct scatterlist out_sg; ++ struct scatterlist in_sg; ++ int ret = 0; ++ ++ ctrl_dmabuf_sync = kzalloc(sizeof(*ctrl_dmabuf_sync), GFP_KERNEL); ++ if (!ctrl_dmabuf_sync) ++ return -ENOMEM; ++ ++ ctrl_dmabuf_sync->hdr.type = VIRTIO_WL_CMD_VFD_DMABUF_SYNC; ++ ctrl_dmabuf_sync->vfd_id = vfd->id; ++ ctrl_dmabuf_sync->flags = flags; ++ ++ sg_init_one(&in_sg, &ctrl_dmabuf_sync->hdr, ++ sizeof(struct virtio_wl_ctrl_vfd_dmabuf_sync)); ++ sg_init_one(&out_sg, &ctrl_dmabuf_sync->hdr, ++ sizeof(struct virtio_wl_ctrl_hdr)); ++ ++ init_completion(&finish_completion); ++ ret = vq_queue_out(vi, &out_sg, &in_sg, &finish_completion, ++ false /* block */); ++ if (ret) { ++ pr_warn("virtwl: failed to queue dmabuf sync vfd id %u: %d\n", ++ vfd->id, ++ ret); ++ goto free_ctrl_dmabuf_sync; ++ } ++ ++ wait_for_completion(&finish_completion); ++ ++free_ctrl_dmabuf_sync: ++ kfree(ctrl_dmabuf_sync); ++ return ret; ++} ++ ++static ssize_t virtwl_vfd_read(struct file *filp, char __user *buffer, ++ size_t size, loff_t *pos) ++{ ++ return virtwl_vfd_recv(filp, buffer, size, NULL, NULL); ++} ++ ++static ssize_t virtwl_vfd_write(struct file *filp, const char __user *buffer, ++ size_t size, loff_t *pos) ++{ ++ int ret = 0; ++ ++ if (size > U32_MAX) ++ size = U32_MAX; ++ ++ ret = virtwl_vfd_send(filp, buffer, size, NULL); ++ if (ret) ++ return ret; ++ ++ return size; ++} ++ +static int virtwl_vfd_mmap(struct file *filp, struct vm_area_struct *vma) +{ + struct virtwl_vfd *vfd = filp->private_data; @@ -661,12 +969,7 @@ index 0000000..6cec6ae + + mutex_lock(&vfd->lock); + -+ if (!(vfd->flags & VIRTIO_WL_VFD_MAP)) { -+ ret = -EACCES; -+ goto out_unlock; -+ } -+ -+ if ((vma->vm_flags & VM_WRITE) && !(vfd->flags & VIRTIO_WL_VFD_WRITE)) { ++ if (!vfd->pfn) { + ret = -EACCES; + goto out_unlock; + } @@ -705,6 +1008,8 @@ index 0000000..6cec6ae + poll_wait(filp, &vfd->in_waitq, wait); + if (!list_empty(&vfd->in_queue)) + mask |= POLLIN | POLLRDNORM; ++ if (vfd->hungup) ++ mask |= POLLHUP; + mutex_unlock(&vfd->lock); + + return mask; @@ -714,15 +1019,16 @@ index 0000000..6cec6ae +{ + struct virtwl_vfd *vfd = filp->private_data; + uint32_t vfd_id = vfd->id; ++ int ret; + + /* -+ * if release is called, filp must be out of references and we have the -+ * last reference ++ * If release is called, filp must be out of references and we have the ++ * last reference. + */ -+ int ret = do_vfd_close(vfd); ++ ret = do_vfd_close(vfd); + if (ret) -+ printk("virtwl: failed to release vfd id %u: %d\n", vfd_id, -+ ret); ++ pr_warn("virtwl: failed to release vfd id %u: %d\n", vfd_id, ++ ret); + return 0; +} + @@ -736,99 +1042,9 @@ index 0000000..6cec6ae + return 0; +} + -+static int do_send(struct virtwl_vfd *vfd, const char __user *buffer, u32 len, -+ int *vfd_fds, bool nonblock) -+{ -+ struct virtwl_info *vi = vfd->vi; -+ struct fd vfd_files[VIRTWL_SEND_MAX_ALLOCS] = { { 0 } }; -+ struct virtwl_vfd *vfds[VIRTWL_SEND_MAX_ALLOCS] = { 0 }; -+ size_t vfd_count = 0; -+ size_t post_send_size; -+ struct virtio_wl_ctrl_vfd_send *ctrl_send; -+ __le32 *vfd_ids; -+ u8 *out_buffer; -+ unsigned long remaining; -+ struct completion finish_completion; -+ struct scatterlist out_sg; -+ struct scatterlist in_sg; -+ int ret; -+ int i; -+ -+ if (vfd_fds) { -+ for (i = 0; i < VIRTWL_SEND_MAX_ALLOCS; i++) { -+ struct fd vfd_file; -+ int fd = vfd_fds[i]; -+ if (fd < 0) -+ break; -+ -+ vfd_file = fdget(vfd_fds[i]); -+ if (!vfd_file.file) { -+ ret = -EBADFD; -+ goto put_files; -+ } -+ vfd_files[i] = vfd_file; -+ -+ if (vfd_file.file->f_op != &virtwl_vfd_fops) { -+ ret = -EINVAL; -+ goto put_files; -+ } -+ -+ vfds[i] = vfd_file.file->private_data; -+ if (!vfds[i] || !vfds[i]->id) { -+ ret = -EINVAL; -+ goto put_files; -+ } -+ -+ vfd_count++; -+ } -+ } -+ -+ post_send_size = vfd_count * sizeof(__le32) + len; -+ ctrl_send = kzalloc(sizeof(*ctrl_send) + post_send_size, GFP_KERNEL); -+ if (!ctrl_send) { -+ ret = -ENOMEM; -+ goto put_files; -+ } -+ -+ vfd_ids = (__le32 *)((u8*)ctrl_send + sizeof(*ctrl_send)); -+ out_buffer = (u8*)vfd_ids + vfd_count * sizeof(__le32); -+ -+ ctrl_send->hdr.type = VIRTIO_WL_CMD_VFD_SEND; -+ ctrl_send->vfd_id = vfd->id; -+ ctrl_send->vfd_count = vfd_count; -+ for (i = 0; i < vfd_count; i++) { -+ vfd_ids[i] = cpu_to_le32(vfds[i]->id); -+ } -+ -+ remaining = copy_from_user(out_buffer, buffer, len); -+ if (remaining) -+ goto free_ctrl_send; -+ -+ init_completion(&finish_completion); -+ sg_init_one(&out_sg, ctrl_send, sizeof(*ctrl_send) + post_send_size); -+ sg_init_one(&in_sg, ctrl_send, sizeof(struct virtio_wl_ctrl_hdr)); -+ -+ ret = vq_queue_out(vi, &out_sg, &in_sg, &finish_completion, nonblock); -+ if (ret) -+ goto free_ctrl_send; -+ -+ wait_for_completion(&finish_completion); -+ -+ ret = virtwl_resp_err(ctrl_send->hdr.type); -+ -+free_ctrl_send: -+ kfree(ctrl_send); -+put_files: -+ for (i = 0; i < VIRTWL_SEND_MAX_ALLOCS; i++) { -+ if (!vfd_files[i].file) -+ continue; -+ fdput(vfd_files[i]); -+ } -+ return ret; -+} -+ -+static struct virtwl_vfd *do_new(struct virtwl_info *vi, uint32_t type, -+ uint32_t size, bool nonblock) ++static struct virtwl_vfd *do_new(struct virtwl_info *vi, ++ struct virtwl_ioctl_new *ioctl_new, ++ size_t ioctl_new_size, bool nonblock) +{ + struct virtio_wl_ctrl_vfd_new *ctrl_new; + struct virtwl_vfd *vfd; @@ -837,7 +1053,11 @@ index 0000000..6cec6ae + struct scatterlist in_sg; + int ret = 0; + -+ if (type != VIRTWL_IOCTL_NEW_CTX && type != VIRTWL_IOCTL_NEW_ALLOC) ++ if (ioctl_new->type != VIRTWL_IOCTL_NEW_CTX && ++ ioctl_new->type != VIRTWL_IOCTL_NEW_ALLOC && ++ ioctl_new->type != VIRTWL_IOCTL_NEW_PIPE_READ && ++ ioctl_new->type != VIRTWL_IOCTL_NEW_PIPE_WRITE && ++ ioctl_new->type != VIRTWL_IOCTL_NEW_DMABUF) + return ERR_PTR(-EINVAL); + + ctrl_new = kzalloc(sizeof(*ctrl_new), GFP_KERNEL); @@ -850,33 +1070,48 @@ index 0000000..6cec6ae + goto free_ctrl_new; + } + ++ mutex_lock(&vi->vfds_lock); + /* + * Take the lock before adding it to the vfds list where others might + * reference it. + */ + mutex_lock(&vfd->lock); -+ -+ mutex_lock(&vi->vfds_lock); + ret = idr_alloc(&vi->vfds, vfd, 1, VIRTWL_MAX_ALLOC, GFP_KERNEL); + mutex_unlock(&vi->vfds_lock); + if (ret <= 0) -+ goto free_vfd; ++ goto remove_vfd; + + vfd->id = ret; + ret = 0; + + ctrl_new->vfd_id = vfd->id; -+ switch (type) { ++ switch (ioctl_new->type) { + case VIRTWL_IOCTL_NEW_CTX: + ctrl_new->hdr.type = VIRTIO_WL_CMD_VFD_NEW_CTX; -+ ctrl_new->flags = VIRTIO_WL_VFD_CONTROL; -+ ctrl_new->size = 0; ++ ctrl_new->flags = VIRTIO_WL_VFD_WRITE | VIRTIO_WL_VFD_READ; + break; + case VIRTWL_IOCTL_NEW_ALLOC: + ctrl_new->hdr.type = VIRTIO_WL_CMD_VFD_NEW; -+ ctrl_new->flags = VIRTIO_WL_VFD_WRITE | VIRTIO_WL_VFD_MAP; -+ ctrl_new->size = size; ++ ctrl_new->size = PAGE_ALIGN(ioctl_new->size); + break; ++ case VIRTWL_IOCTL_NEW_PIPE_READ: ++ ctrl_new->hdr.type = VIRTIO_WL_CMD_VFD_NEW_PIPE; ++ ctrl_new->flags = VIRTIO_WL_VFD_READ; ++ break; ++ case VIRTWL_IOCTL_NEW_PIPE_WRITE: ++ ctrl_new->hdr.type = VIRTIO_WL_CMD_VFD_NEW_PIPE; ++ ctrl_new->flags = VIRTIO_WL_VFD_WRITE; ++ break; ++ case VIRTWL_IOCTL_NEW_DMABUF: ++ /* Make sure ioctl_new contains enough data for NEW_DMABUF. */ ++ if (ioctl_new_size == sizeof(*ioctl_new)) { ++ ctrl_new->hdr.type = VIRTIO_WL_CMD_VFD_NEW_DMABUF; ++ /* FIXME: convert from host byte order. */ ++ memcpy(&ctrl_new->dmabuf, &ioctl_new->dmabuf, ++ sizeof(ioctl_new->dmabuf)); ++ break; ++ } ++ /* fall-through */ + default: + ret = -EINVAL; + goto remove_vfd; @@ -902,65 +1137,68 @@ index 0000000..6cec6ae + + mutex_unlock(&vfd->lock); + ++ if (ioctl_new->type == VIRTWL_IOCTL_NEW_DMABUF) { ++ /* FIXME: convert to host byte order. */ ++ memcpy(&ioctl_new->dmabuf, &ctrl_new->dmabuf, ++ sizeof(ctrl_new->dmabuf)); ++ } ++ + kfree(ctrl_new); + return vfd; + +remove_vfd: -+ /* unlock the vfd to avoid deadlock when unlinking it */ ++ /* ++ * unlock the vfd to avoid deadlock when unlinking it ++ * or freeing a held lock ++ */ + mutex_unlock(&vfd->lock); -+ virtwl_vfd_lock_unlink(vfd); -+free_vfd: ++ /* this is safe since the id cannot change after the vfd is created */ ++ if (vfd->id) ++ virtwl_vfd_lock_unlink(vfd); + virtwl_vfd_free(vfd); +free_ctrl_new: + kfree(ctrl_new); + return ERR_PTR(ret); +} + -+static long virtwl_ioctl_send(struct file *filp, unsigned long arg) ++static long virtwl_ioctl_send(struct file *filp, void __user *ptr) +{ -+ struct virtwl_vfd *vfd = filp->private_data; -+ struct virtwl_ioctl_send ioctl_send; -+ void __user *user_data = (void __user *)arg + -+ sizeof(struct virtwl_ioctl_send); ++ struct virtwl_ioctl_txn ioctl_send; ++ void __user *user_data = ptr + sizeof(struct virtwl_ioctl_txn); + int ret; + -+ ret = copy_from_user(&ioctl_send, (void __user *)arg, -+ sizeof(struct virtwl_ioctl_send)); ++ ret = copy_from_user(&ioctl_send, ptr, sizeof(struct virtwl_ioctl_txn)); + if (ret) + return -EFAULT; + + /* Early check for user error; do_send still uses copy_from_user. */ -+ ret = !access_ok(VERIFY_READ, user_data, ioctl_send.len); ++ ret = !access_ok(user_data, ioctl_send.len); + if (ret) + return -EFAULT; + -+ return do_send(vfd, user_data, ioctl_send.len, ioctl_send.fds, -+ filp->f_flags & O_NONBLOCK); ++ return virtwl_vfd_send(filp, user_data, ioctl_send.len, ioctl_send.fds); +} + -+static long virtwl_ioctl_recv(struct file *filp, unsigned long arg) ++static long virtwl_ioctl_recv(struct file *filp, void __user *ptr) +{ -+ struct virtwl_ioctl_recv ioctl_recv; -+ void __user *user_data = (void __user *)arg + -+ sizeof(struct virtwl_ioctl_recv); -+ int __user *user_fds = (int __user *)arg; ++ struct virtwl_ioctl_txn ioctl_recv; ++ void __user *user_data = ptr + sizeof(struct virtwl_ioctl_txn); ++ int __user *user_fds = (int __user *)ptr; + size_t vfd_count = VIRTWL_SEND_MAX_ALLOCS; + struct virtwl_vfd *vfds[VIRTWL_SEND_MAX_ALLOCS] = { 0 }; + int fds[VIRTWL_SEND_MAX_ALLOCS]; + size_t i; + int ret = 0; + -+ + for (i = 0; i < VIRTWL_SEND_MAX_ALLOCS; i++) + fds[i] = -1; + -+ ret = copy_from_user(&ioctl_recv, (void __user *)arg, -+ sizeof(struct virtwl_ioctl_recv)); ++ ret = copy_from_user(&ioctl_recv, ptr, sizeof(struct virtwl_ioctl_txn)); + if (ret) + return -EFAULT; + + /* Early check for user error. */ -+ ret = !access_ok(VERIFY_WRITE, user_data, ioctl_recv.len); ++ ret = !access_ok(user_data, ioctl_recv.len); + if (ret) + return -EFAULT; + @@ -969,7 +1207,7 @@ index 0000000..6cec6ae + if (ret < 0) + return ret; + -+ ret = copy_to_user(&((struct virtwl_ioctl_recv __user *)arg)->len, &ret, ++ ret = copy_to_user(&((struct virtwl_ioctl_txn __user *)ptr)->len, &ret, + sizeof(ioctl_recv.len)); + if (ret) { + ret = -EFAULT; @@ -978,11 +1216,11 @@ index 0000000..6cec6ae + + for (i = 0; i < vfd_count; i++) { + ret = anon_inode_getfd("[virtwl_vfd]", &virtwl_vfd_fops, -+ vfds[i], O_CLOEXEC | O_RDWR); -+ if (ret < 0) { -+ do_vfd_close(vfds[i]); ++ vfds[i], virtwl_vfd_file_flags(vfds[i]) ++ | O_CLOEXEC); ++ if (ret < 0) + goto free_vfds; -+ } ++ + vfds[i] = NULL; + fds[i] = ret; + } @@ -1005,106 +1243,125 @@ index 0000000..6cec6ae + return ret; +} + ++static long virtwl_ioctl_dmabuf_sync(struct file *filp, void __user *ptr) ++{ ++ struct virtwl_ioctl_dmabuf_sync ioctl_dmabuf_sync; ++ int ret; ++ ++ ret = copy_from_user(&ioctl_dmabuf_sync, ptr, ++ sizeof(struct virtwl_ioctl_dmabuf_sync)); ++ if (ret) ++ return -EFAULT; ++ ++ if (ioctl_dmabuf_sync.flags & ~DMA_BUF_SYNC_VALID_FLAGS_MASK) ++ return -EINVAL; ++ ++ return virtwl_vfd_dmabuf_sync(filp, ioctl_dmabuf_sync.flags); ++} ++ +static long virtwl_vfd_ioctl(struct file *filp, unsigned int cmd, -+ unsigned long arg) ++ void __user *ptr) +{ + switch (cmd) { + case VIRTWL_IOCTL_SEND: -+ return virtwl_ioctl_send(filp, arg); ++ return virtwl_ioctl_send(filp, ptr); + case VIRTWL_IOCTL_RECV: -+ return virtwl_ioctl_recv(filp, arg); ++ return virtwl_ioctl_recv(filp, ptr); ++ case VIRTWL_IOCTL_DMABUF_SYNC: ++ return virtwl_ioctl_dmabuf_sync(filp, ptr); + default: + return -ENOTTY; + } +} + -+static long virtwl_ioctl_new(struct file *filp, unsigned long arg) ++static long virtwl_ioctl_new(struct file *filp, void __user *ptr, ++ size_t in_size) +{ + struct virtwl_info *vi = filp->private_data; + struct virtwl_vfd *vfd; -+ struct virtwl_ioctl_new ioctl_new; ++ struct virtwl_ioctl_new ioctl_new = {}; ++ size_t size = min(in_size, sizeof(ioctl_new)); + int ret; + -+ ret = copy_from_user(&ioctl_new, (void __user *)arg, -+ sizeof(struct virtwl_ioctl_new)); ++ /* Early check for user error. */ ++ ret = !access_ok( ptr, size); + if (ret) + return -EFAULT; + -+ ioctl_new.size = PAGE_ALIGN(ioctl_new.size); ++ ret = copy_from_user(&ioctl_new, ptr, size); ++ if (ret) ++ return -EFAULT; + -+ vfd = do_new(vi, ioctl_new.type, ioctl_new.size, -+ filp->f_flags & O_NONBLOCK); ++ vfd = do_new(vi, &ioctl_new, size, filp->f_flags & O_NONBLOCK); + if (IS_ERR(vfd)) + return PTR_ERR(vfd); + + ret = anon_inode_getfd("[virtwl_vfd]", &virtwl_vfd_fops, vfd, -+ O_CLOEXEC | O_RDWR); ++ virtwl_vfd_file_flags(vfd) | O_CLOEXEC); + if (ret < 0) { + do_vfd_close(vfd); + return ret; + } + + ioctl_new.fd = ret; -+ ret = copy_to_user((void __user *)arg, &ioctl_new, -+ sizeof(struct virtwl_ioctl_new)); ++ ret = copy_to_user(ptr, &ioctl_new, size); + if (ret) { + /* The release operation will handle freeing this alloc */ -+ sys_close(ioctl_new.fd); ++ ksys_close(ioctl_new.fd); + return -EFAULT; + } + + return 0; +} + -+static long virtwl_ioctl(struct file *filp, unsigned int cmd, -+ unsigned long arg) ++static long virtwl_ioctl_ptr(struct file *filp, unsigned int cmd, ++ void __user *ptr) +{ -+ int err = 0; -+ -+ if (_IOC_TYPE(cmd) != VIRTWL_IOCTL_BASE) -+ return -ENOTTY; -+ if (_IOC_NR(cmd) > VIRTWL_IOCTL_MAXNR) -+ return -ENOTTY; -+ -+ if (_IOC_DIR(cmd) & _IOC_READ) { -+ err = !access_ok(VERIFY_WRITE, (void __user *)arg, -+ _IOC_SIZE(cmd)); -+ } else if (_IOC_DIR(cmd) & _IOC_WRITE) { -+ err = !access_ok(VERIFY_READ, (void __user *)arg, -+ _IOC_SIZE(cmd)); -+ } -+ -+ if (err) -+ return -EFAULT; -+ + if (filp->f_op == &virtwl_vfd_fops) -+ return virtwl_vfd_ioctl(filp, cmd, arg); ++ return virtwl_vfd_ioctl(filp, cmd, ptr); + -+ switch (cmd) { -+ case VIRTWL_IOCTL_NEW: -+ return virtwl_ioctl_new(filp, arg); ++ switch (_IOC_NR(cmd)) { ++ case _IOC_NR(VIRTWL_IOCTL_NEW): ++ return virtwl_ioctl_new(filp, ptr, _IOC_SIZE(cmd)); + default: + return -ENOTTY; + } +} + ++static long virtwl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ++{ ++ return virtwl_ioctl_ptr(filp, cmd, (void __user *)arg); ++} ++ ++#ifdef CONFIG_COMPAT ++static long virtwl_ioctl_compat(struct file *filp, unsigned int cmd, ++ unsigned long arg) ++{ ++ return virtwl_ioctl_ptr(filp, cmd, compat_ptr(arg)); ++} ++#else ++#define virtwl_ioctl_compat NULL ++#endif ++ +static int virtwl_release(struct inode *inodep, struct file *filp) +{ + return 0; +} + -+static struct file_operations virtwl_fops = -+{ ++static const struct file_operations virtwl_fops = { + .open = virtwl_open, + .unlocked_ioctl = virtwl_ioctl, ++ .compat_ioctl = virtwl_ioctl_compat, + .release = virtwl_release, +}; + -+static struct file_operations virtwl_vfd_fops = -+{ ++static const struct file_operations virtwl_vfd_fops = { ++ .read = virtwl_vfd_read, ++ .write = virtwl_vfd_write, + .mmap = virtwl_vfd_mmap, + .poll = virtwl_vfd_poll, + .unlocked_ioctl = virtwl_ioctl, ++ .compat_ioctl = virtwl_ioctl_compat, + .release = virtwl_vfd_release, +}; + @@ -1114,28 +1371,26 @@ index 0000000..6cec6ae + int ret; + struct virtwl_info *vi = NULL; + vq_callback_t *vq_callbacks[] = { vq_in_cb, vq_out_cb }; -+ const char *vq_names[] = { "in", "out" }; ++ static const char * const vq_names[] = { "in", "out" }; + + vi = kzalloc(sizeof(struct virtwl_info), GFP_KERNEL); -+ if (!vi) { -+ printk("virtwl: failed to alloc virtwl_info struct\n"); ++ if (!vi) + return -ENOMEM; -+ } + + vdev->priv = vi; + + ret = alloc_chrdev_region(&vi->dev_num, 0, 1, "wl"); + if (ret) { + ret = -ENOMEM; -+ printk("virtwl: failed to allocate wl chrdev region: %d\n", -+ ret); ++ pr_warn("virtwl: failed to allocate wl chrdev region: %d\n", ++ ret); + goto free_vi; + } + + vi->class = class_create(THIS_MODULE, "wl"); + if (IS_ERR(vi->class)) { + ret = PTR_ERR(vi->class); -+ printk("virtwl: failed to create wl class: %d\n", ret); ++ pr_warn("virtwl: failed to create wl class: %d\n", ret); + goto unregister_region; + + } @@ -1143,26 +1398,26 @@ index 0000000..6cec6ae + vi->dev = device_create(vi->class, NULL, vi->dev_num, vi, "wl%d", 0); + if (IS_ERR(vi->dev)) { + ret = PTR_ERR(vi->dev); -+ printk("virtwl: failed to create wl0 device: %d\n", ret); ++ pr_warn("virtwl: failed to create wl0 device: %d\n", ret); + goto destroy_class; + } + + cdev_init(&vi->cdev, &virtwl_fops); + ret = cdev_add(&vi->cdev, vi->dev_num, 1); + if (ret) { -+ printk("virtwl: failed to add virtio wayland character device to system: %d\n", -+ ret); ++ pr_warn("virtwl: failed to add virtio wayland character device to system: %d\n", ++ ret); + goto destroy_device; + } + + for (i = 0; i < VIRTWL_QUEUE_COUNT; i++) + mutex_init(&vi->vq_locks[i]); + -+ ret = vdev->config->find_vqs(vdev, VIRTWL_QUEUE_COUNT, vi->vqs, -+ vq_callbacks, vq_names); ++ ret = virtio_find_vqs(vdev, VIRTWL_QUEUE_COUNT, vi->vqs, ++ vq_callbacks, vq_names, NULL); + if (ret) { -+ printk("virtwl: failed to find virtio wayland queues: %d\n", -+ ret); ++ pr_warn("virtwl: failed to find virtio wayland queues: %d\n", ++ ret); + goto del_cdev; + } + @@ -1176,7 +1431,7 @@ index 0000000..6cec6ae + /* lock is unneeded as we have unique ownership */ + ret = vq_fill_locked(vi->vqs[VIRTWL_VQ_IN]); + if (ret) { -+ printk("virtwl: failed to fill in virtqueue: %d", ret); ++ pr_warn("virtwl: failed to fill in virtqueue: %d", ret); + goto del_cdev; + } + @@ -1230,10 +1485,22 @@ index 0000000..6cec6ae + { 0 }, +}; + ++static unsigned int features_legacy[] = { ++ VIRTIO_WL_F_TRANS_FLAGS ++}; ++ ++static unsigned int features[] = { ++ VIRTIO_WL_F_TRANS_FLAGS ++}; ++ +static struct virtio_driver virtio_wl_driver = { + .driver.name = KBUILD_MODNAME, + .driver.owner = THIS_MODULE, + .id_table = id_table, ++ .feature_table = features, ++ .feature_table_size = ARRAY_SIZE(features), ++ .feature_table_legacy = features_legacy, ++ .feature_table_size_legacy = ARRAY_SIZE(features_legacy), + .probe = virtwl_probe, + .remove = virtwl_remove, + .scan = virtwl_scan, @@ -1243,45 +1510,58 @@ index 0000000..6cec6ae +MODULE_DEVICE_TABLE(virtio, id_table); +MODULE_DESCRIPTION("Virtio wayland driver"); +MODULE_LICENSE("GPL"); -diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild -index efa2a9c..6d1095b 100644 ---- a/include/uapi/linux/Kbuild -+++ b/include/uapi/linux/Kbuild -@@ -449,6 +449,8 @@ - header-y += virtio_scsi.h - header-y += virtio_types.h - header-y += virtio_vsock.h -+header-y += virtio_wl.h -+header-y += virtwl.h - header-y += vm_sockets.h - header-y += vt.h - header-y += vtpm_proxy.h -diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h -index 3228d58..68a2a8d 100644 ---- a/include/uapi/linux/virtio_ids.h -+++ b/include/uapi/linux/virtio_ids.h -@@ -42,5 +42,6 @@ - #define VIRTIO_ID_GPU 16 /* virtio GPU */ - #define VIRTIO_ID_INPUT 18 /* virtio input */ - #define VIRTIO_ID_VSOCK 19 /* virtio vsock transport */ +diff -uprN linux-5.3/include/drm/virtio_drm.h linux-5.3-wl/include/drm/virtio_drm.h +--- linux-5.3/include/drm/virtio_drm.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-wl/include/drm/virtio_drm.h 2019-09-19 23:01:36.339268667 -0400 +@@ -0,0 +1,24 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Virtio GPU interfaces for sharing data. ++ * ++ * Copyright (C) 2018 Google, Inc. ++ */ ++ ++#ifndef _VIRTIO_DRM_H ++#define _VIRTIO_DRM_H ++ ++/* ++ * The following methods are to share dma bufs with a host via the ++ * virtio Wayland (virtwl) device. ++ */ ++ ++/* ++ * Converts the given dma_buf to the virtio-gpu specific resource handle ++ * backing the dma_buf, waiting for creation to be confirmed by the host ++ * if necessary. ++ */ ++extern int virtio_gpu_dma_buf_to_handle(struct dma_buf *buf, bool no_wait, ++ uint32_t *handle); ++ ++#endif /* _VIRTIO_DRM_H */ +diff -uprN linux-5.3/include/uapi/linux/virtio_ids.h linux-5.3-wl/include/uapi/linux/virtio_ids.h +--- linux-5.3/include/uapi/linux/virtio_ids.h 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-wl/include/uapi/linux/virtio_ids.h 2019-09-19 23:02:44.442271914 -0400 +@@ -45,5 +45,6 @@ + #define VIRTIO_ID_CRYPTO 20 /* virtio crypto */ + #define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ + #define VIRTIO_ID_PMEM 27 /* virtio pmem */ +#define VIRTIO_ID_WL 30 /* virtio wayland */ #endif /* _LINUX_VIRTIO_IDS_H */ -diff --git a/include/uapi/linux/virtio_wl.h b/include/uapi/linux/virtio_wl.h -new file mode 100644 -index 0000000..b3cdadc ---- /dev/null -+++ b/include/uapi/linux/virtio_wl.h -@@ -0,0 +1,86 @@ +diff -uprN linux-5.3/include/uapi/linux/virtio_wl.h linux-5.3-wl/include/uapi/linux/virtio_wl.h +--- linux-5.3/include/uapi/linux/virtio_wl.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-wl/include/uapi/linux/virtio_wl.h 2019-09-19 23:01:36.340268667 -0400 +@@ -0,0 +1,135 @@ +#ifndef _LINUX_VIRTIO_WL_H +#define _LINUX_VIRTIO_WL_H -+/* This header is BSD licensed so anyone can use the definitions to implement -+ * compatible drivers/servers. */ ++/* ++ * This header is BSD licensed so anyone can use the definitions to implement ++ * compatible drivers/servers. ++ */ +#include +#include +#include + -+ +#define VIRTWL_IN_BUFFER_SIZE 4096 +#define VIRTWL_OUT_BUFFER_SIZE 4096 +#define VIRTWL_VQ_IN 0 @@ -1290,27 +1570,38 @@ index 0000000..b3cdadc +#define VIRTWL_MAX_ALLOC 0x800 +#define VIRTWL_PFN_SHIFT 12 + -+struct virtio_wl_config { ++/* Enables the transition to new flag semantics */ ++#define VIRTIO_WL_F_TRANS_FLAGS 1 + ++struct virtio_wl_config { +}; + +/* + * The structure of each of these is virtio_wl_ctrl_hdr or one of its subclasses -+ * where noted. */ ++ * where noted. ++ */ +enum virtio_wl_ctrl_type { + VIRTIO_WL_CMD_VFD_NEW = 0x100, /* virtio_wl_ctrl_vfd_new */ + VIRTIO_WL_CMD_VFD_CLOSE, /* virtio_wl_ctrl_vfd */ + VIRTIO_WL_CMD_VFD_SEND, /* virtio_wl_ctrl_vfd_send + data */ + VIRTIO_WL_CMD_VFD_RECV, /* virtio_wl_ctrl_vfd_recv + data */ -+ VIRTIO_WL_CMD_VFD_NEW_CTX, /* virtio_wl_ctrl_vfd */ ++ VIRTIO_WL_CMD_VFD_NEW_CTX, /* virtio_wl_ctrl_vfd_new */ ++ VIRTIO_WL_CMD_VFD_NEW_PIPE, /* virtio_wl_ctrl_vfd_new */ ++ VIRTIO_WL_CMD_VFD_HUP, /* virtio_wl_ctrl_vfd */ ++ VIRTIO_WL_CMD_VFD_NEW_DMABUF, /* virtio_wl_ctrl_vfd_new */ ++ VIRTIO_WL_CMD_VFD_DMABUF_SYNC, /* virtio_wl_ctrl_vfd_dmabuf_sync */ ++ VIRTIO_WL_CMD_VFD_SEND_FOREIGN_ID, /* virtio_wl_ctrl_vfd_send + data */ + + VIRTIO_WL_RESP_OK = 0x1000, + VIRTIO_WL_RESP_VFD_NEW = 0x1001, /* virtio_wl_ctrl_vfd_new */ ++ VIRTIO_WL_RESP_VFD_NEW_DMABUF = 0x1002, /* virtio_wl_ctrl_vfd_new */ + + VIRTIO_WL_RESP_ERR = 0x1100, + VIRTIO_WL_RESP_OUT_OF_MEMORY, + VIRTIO_WL_RESP_INVALID_ID, + VIRTIO_WL_RESP_INVALID_TYPE, ++ VIRTIO_WL_RESP_INVALID_FLAGS, ++ VIRTIO_WL_RESP_INVALID_CMD, +}; + +struct virtio_wl_ctrl_hdr { @@ -1319,9 +1610,8 @@ index 0000000..b3cdadc +}; + +enum virtio_wl_vfd_flags { -+ VIRTIO_WL_VFD_WRITE = 0x1, /* indicates if mapped area is writable */ -+ VIRTIO_WL_VFD_MAP = 0x2, /* indicates a fixed size and mapping into a pfn range */ -+ VIRTIO_WL_VFD_CONTROL = 0x4, /* indicates if send/recv can transmit VFDs */ ++ VIRTIO_WL_VFD_WRITE = 0x1, /* intended to be written by guest */ ++ VIRTIO_WL_VFD_READ = 0x2, /* intended to be read by guest */ +}; + +struct virtio_wl_ctrl_vfd { @@ -1340,14 +1630,46 @@ index 0000000..b3cdadc + struct virtio_wl_ctrl_hdr hdr; + __le32 vfd_id; /* MSB indicates device allocated vfd */ + __le32 flags; /* virtio_wl_vfd_flags */ -+ __le64 pfn; /* first guest physical page frame number if VIRTIO_WL_VFD_MAP */ -+ __le32 size; /* size in bytes if VIRTIO_WL_VFD_MAP */ ++ __le64 pfn; /* first guest physical page frame number if VFD_MAP */ ++ __le32 size; /* size in bytes if VIRTIO_WL_CMD_VFD_NEW* */ ++ /* buffer description if VIRTIO_WL_CMD_VFD_NEW_DMABUF */ ++ struct { ++ __le32 width; /* width in pixels */ ++ __le32 height; /* height in pixels */ ++ __le32 format; /* fourcc format */ ++ __le32 stride0; /* return stride0 */ ++ __le32 stride1; /* return stride1 */ ++ __le32 stride2; /* return stride2 */ ++ __le32 offset0; /* return offset0 */ ++ __le32 offset1; /* return offset1 */ ++ __le32 offset2; /* return offset2 */ ++ } dmabuf; ++}; ++ ++ ++enum virtio_wl_ctrl_vfd_send_kind { ++ /* The id after this one indicates an ordinary vfd_id. */ ++ VIRTIO_WL_CTRL_VFD_SEND_KIND_LOCAL, ++ /* The id after this one is a virtio-gpu resource id. */ ++ VIRTIO_WL_CTRL_VFD_SEND_KIND_VIRTGPU, ++}; ++ ++struct virtio_wl_ctrl_vfd_send_vfd { ++ __le32 kind; /* virtio_wl_ctrl_vfd_send_kind */ ++ __le32 id; +}; + +struct virtio_wl_ctrl_vfd_send { + struct virtio_wl_ctrl_hdr hdr; + __le32 vfd_id; + __le32 vfd_count; /* struct is followed by this many IDs */ ++ ++ /* ++ * If hdr.type == VIRTIO_WL_CMD_VFD_SEND_FOREIGN_ID, there is a ++ * vfd_count array of virtio_wl_ctrl_vfd_send_vfd. Otherwise, there is a ++ * vfd_count array of vfd_ids. ++ */ ++ + /* the remainder is raw data */ +}; + @@ -1358,55 +1680,78 @@ index 0000000..b3cdadc + /* the remainder is raw data */ +}; + ++struct virtio_wl_ctrl_vfd_dmabuf_sync { ++ struct virtio_wl_ctrl_hdr hdr; ++ __le32 vfd_id; ++ __le32 flags; ++}; ++ +#endif /* _LINUX_VIRTIO_WL_H */ -diff --git a/include/uapi/linux/virtwl.h b/include/uapi/linux/virtwl.h -new file mode 100644 -index 0000000..7a43ce2 ---- /dev/null -+++ b/include/uapi/linux/virtwl.h -@@ -0,0 +1,45 @@ +diff -uprN linux-5.3/include/uapi/linux/virtwl.h linux-5.3-wl/include/uapi/linux/virtwl.h +--- linux-5.3/include/uapi/linux/virtwl.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-wl/include/uapi/linux/virtwl.h 2019-09-19 23:01:36.340268667 -0400 +@@ -0,0 +1,64 @@ +#ifndef _LINUX_VIRTWL_H +#define _LINUX_VIRTWL_H + +#include ++#include + -+#define VIRTWL_SEND_MAX_ALLOCS 16 ++#define VIRTWL_SEND_MAX_ALLOCS 28 + +#define VIRTWL_IOCTL_BASE 'w' -+#define VIRTWL_IO(nr) _IO(VIRTWL_IOCTL_BASE,nr) -+#define VIRTWL_IOR(nr,type) _IOR(VIRTWL_IOCTL_BASE,nr,type) -+#define VIRTWL_IOW(nr,type) _IOW(VIRTWL_IOCTL_BASE,nr,type) -+#define VIRTWL_IOWR(nr,type) _IOWR(VIRTWL_IOCTL_BASE,nr,type) ++#define VIRTWL_IO(nr) _IO(VIRTWL_IOCTL_BASE, nr) ++#define VIRTWL_IOR(nr, type) _IOR(VIRTWL_IOCTL_BASE, nr, type) ++#define VIRTWL_IOW(nr, type) _IOW(VIRTWL_IOCTL_BASE, nr, type) ++#define VIRTWL_IOWR(nr, type) _IOWR(VIRTWL_IOCTL_BASE, nr, type) + +enum virtwl_ioctl_new_type { -+ VIRTWL_IOCTL_NEW_CTX, // struct virtwl_ioctl_new -+ VIRTWL_IOCTL_NEW_ALLOC, // struct virtwl_ioctl_new_alloc ++ VIRTWL_IOCTL_NEW_CTX, /* open a new wayland connection context */ ++ VIRTWL_IOCTL_NEW_ALLOC, /* create a new virtwl shm allocation */ ++ /* create a new virtwl pipe that is readable via the returned fd */ ++ VIRTWL_IOCTL_NEW_PIPE_READ, ++ /* create a new virtwl pipe that is writable via the returned fd */ ++ VIRTWL_IOCTL_NEW_PIPE_WRITE, ++ /* create a new virtwl dmabuf that is writable via the returned fd */ ++ VIRTWL_IOCTL_NEW_DMABUF, +}; + +struct virtwl_ioctl_new { -+ uint32_t type; // always 0 -+ int fd; // return fd -+ uint32_t flags; // always 0 -+ size_t size; // only for VIRTWL_IOCTL_NEW_ALLOC ++ __u32 type; /* VIRTWL_IOCTL_NEW_* */ ++ int fd; /* return fd */ ++ __u32 flags; /* currently always 0 */ ++ union { ++ /* size of allocation if type == VIRTWL_IOCTL_NEW_ALLOC */ ++ __u32 size; ++ /* buffer description if type == VIRTWL_IOCTL_NEW_DMABUF */ ++ struct { ++ __u32 width; /* width in pixels */ ++ __u32 height; /* height in pixels */ ++ __u32 format; /* fourcc format */ ++ __u32 stride0; /* return stride0 */ ++ __u32 stride1; /* return stride1 */ ++ __u32 stride2; /* return stride2 */ ++ __u32 offset0; /* return offset0 */ ++ __u32 offset1; /* return offset1 */ ++ __u32 offset2; /* return offset2 */ ++ } dmabuf; ++ }; +}; + -+struct virtwl_ioctl_send { ++struct virtwl_ioctl_txn { + int fds[VIRTWL_SEND_MAX_ALLOCS]; -+ uint32_t len; -+ uint8_t data[0]; ++ __u32 len; ++ __u8 data[0]; +}; + -+struct virtwl_ioctl_recv { -+ int fds[VIRTWL_SEND_MAX_ALLOCS]; -+ uint32_t len; -+ uint8_t data[0]; ++struct virtwl_ioctl_dmabuf_sync { ++ __u32 flags; /* synchronization flags (see dma-buf.h) */ +}; + +#define VIRTWL_IOCTL_NEW VIRTWL_IOWR(0x00, struct virtwl_ioctl_new) -+#define VIRTWL_IOCTL_SEND VIRTWL_IOR(0x01, struct virtwl_ioctl_send) -+#define VIRTWL_IOCTL_RECV VIRTWL_IOW(0x02, struct virtwl_ioctl_recv) -+#define VIRTWL_IOCTL_MAXNR 3 -+ ++#define VIRTWL_IOCTL_SEND VIRTWL_IOR(0x01, struct virtwl_ioctl_txn) ++#define VIRTWL_IOCTL_RECV VIRTWL_IOW(0x02, struct virtwl_ioctl_txn) ++#define VIRTWL_IOCTL_DMABUF_SYNC VIRTWL_IOR(0x03, \ ++ struct virtwl_ioctl_dmabuf_sync) + +#endif /* _LINUX_VIRTWL_H */ -+ diff --git a/kernel/patches/0002-bonsai-tree.patch b/kernel/patches/0002-bonsai-tree.patch new file mode 100644 index 0000000..4f31e73 --- /dev/null +++ b/kernel/patches/0002-bonsai-tree.patch @@ -0,0 +1,6612 @@ +diff -uprN linux-5.3/Makefile linux-5.3-bonsai/Makefile +--- linux-5.3/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/Makefile 2019-09-20 15:15:15.735623837 -0400 +@@ -266,6 +266,7 @@ old_version_h := include/linux/version.h + + clean-targets := %clean mrproper cleandocs + no-dot-config-targets := $(clean-targets) \ ++ bonsai bonsai-revert \ + cscope gtags TAGS tags help% %docs check% coccicheck \ + $(version_h) headers headers_% archheaders archscripts \ + %asm-generic kernelversion %src-pkg +@@ -1711,6 +1712,13 @@ namespacecheck: + export_report: + $(PERL) $(srctree)/scripts/export_report.pl + ++PHONY += bonsai bonsai-revert ++bonsai: ++ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/bonsai.sh --trim ++ ++bonsai-revert: ++ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/bonsai.sh --revert ++ + PHONY += checkstack kernelrelease kernelversion image_name + + # UML needs a little special treatment here. It wants to use the host +@@ -1817,6 +1825,7 @@ endif # need-sub-make + PHONY += FORCE + FORCE: + ++ + # Declare the contents of the PHONY variable as phony. We keep that + # information in a variable so we can use it in if_changed and friends. + .PHONY: $(PHONY) +diff -uprN linux-5.3/arch/x86/Kbuild linux-5.3-bonsai/arch/x86/Kbuild +--- linux-5.3/arch/x86/Kbuild 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/Kbuild 2019-09-20 15:15:10.765623600 -0400 +@@ -3,25 +3,7 @@ obj-y += entry/ + + obj-$(CONFIG_PERF_EVENTS) += events/ + +-obj-$(CONFIG_KVM) += kvm/ +- +-# Xen paravirtualization support +-obj-$(CONFIG_XEN) += xen/ +- +-obj-$(CONFIG_PVH) += platform/pvh/ +- +-# Hyper-V paravirtualization support +-obj-$(subst m,y,$(CONFIG_HYPERV)) += hyperv/ +- + obj-y += realmode/ + obj-y += kernel/ + obj-y += mm/ +- + obj-y += crypto/ +- +-obj-$(CONFIG_IA32_EMULATION) += ia32/ +- +-obj-y += platform/ +-obj-y += net/ +- +-obj-$(CONFIG_KEXEC_FILE) += purgatory/ +diff -uprN linux-5.3/arch/x86/Kconfig linux-5.3-bonsai/arch/x86/Kconfig +--- linux-5.3/arch/x86/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/Kconfig 2019-09-20 15:15:10.766623600 -0400 +@@ -788,8 +788,6 @@ config PARAVIRT_SPINLOCKS + config X86_HV_CALLBACK_VECTOR + def_bool n + +-source "arch/x86/xen/Kconfig" +- + config KVM_GUEST + bool "KVM Guest support (including kvmclock)" + depends on PARAVIRT +@@ -2455,9 +2453,6 @@ config ARCH_HIBERNATION_HEADER + + source "kernel/power/Kconfig" + +-source "drivers/acpi/Kconfig" +- +-source "drivers/sfi/Kconfig" + + config X86_APM_BOOT + def_bool y +@@ -2585,12 +2580,6 @@ config APM_ALLOW_INTS + + endif # APM + +-source "drivers/cpufreq/Kconfig" +- +-source "drivers/cpuidle/Kconfig" +- +-source "drivers/idle/Kconfig" +- + endmenu + + +@@ -2652,11 +2641,6 @@ config PCI_OLPC + def_bool y + depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY) + +-config PCI_XEN +- def_bool y +- depends on PCI && XEN +- select SWIOTLB_XEN +- + config MMCONF_FAM10H + def_bool y + depends on X86_64 && PCI_MMCONFIG && ACPI +@@ -2908,6 +2892,3 @@ config HAVE_ATOMIC_IOMAP + config X86_DEV_DMA_OPS + bool + +-source "drivers/firmware/Kconfig" +- +-source "arch/x86/kvm/Kconfig" +diff -uprN linux-5.3/arch/x86/Makefile linux-5.3-bonsai/arch/x86/Makefile +--- linux-5.3/arch/x86/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/Makefile 2019-09-20 15:15:10.767623600 -0400 +@@ -250,47 +250,40 @@ libs-y += arch/x86/lib/ + # See arch/x86/Kbuild for content of core part of the kernel + core-y += arch/x86/ + +-# drivers-y are linked after core-y +-drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/ + drivers-$(CONFIG_PCI) += arch/x86/pci/ + +-# must be linked after kernel/ +-drivers-$(CONFIG_OPROFILE) += arch/x86/oprofile/ +- +-# suspend and hibernation support +-drivers-$(CONFIG_PM) += arch/x86/power/ +- + drivers-$(CONFIG_FB) += arch/x86/video/ + + #### + # boot loader support. Several targets are kept for legacy purposes + +-boot := arch/x86/boot +- +-BOOT_TARGETS = bzlilo bzdisk fdimage fdimage144 fdimage288 isoimage +- +-PHONY += bzImage $(BOOT_TARGETS) ++#boot := arch/x86/boot ++# ++#BOOT_TARGETS = bzlilo bzdisk fdimage fdimage144 fdimage288 isoimage ++# ++#PHONY += bzImage $(BOOT_TARGETS) + + # Default kernel to build +-all: bzImage ++#all: bzImage ++all: vmlinux + + # KBUILD_IMAGE specify target image being built +-KBUILD_IMAGE := $(boot)/bzImage ++#KBUILD_IMAGE := $(boot)/bzImage + +-bzImage: vmlinux +-ifeq ($(CONFIG_X86_DECODER_SELFTEST),y) +- $(Q)$(MAKE) $(build)=arch/x86/tools posttest +-endif +- $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) +- $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot +- $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@ +- +-$(BOOT_TARGETS): vmlinux +- $(Q)$(MAKE) $(build)=$(boot) $@ +- +-PHONY += install +-install: +- $(Q)$(MAKE) $(build)=$(boot) $@ ++#bzImage: vmlinux ++#ifeq ($(CONFIG_X86_DECODER_SELFTEST),y) ++# $(Q)$(MAKE) $(build)=arch/x86/tools posttest ++#endif ++# $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) ++# $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot ++# $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@ ++ ++#$(BOOT_TARGETS): vmlinux ++# $(Q)$(MAKE) $(build)=$(boot) $@ ++ ++#PHONY += install ++#install: ++# $(Q)$(MAKE) $(build)=$(boot) $@ + + PHONY += vdso_install + vdso_install: +diff -uprN linux-5.3/arch/x86/entry/Makefile linux-5.3-bonsai/arch/x86/entry/Makefile +--- linux-5.3/arch/x86/entry/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/entry/Makefile 2019-09-20 15:15:10.767623600 -0400 +@@ -11,7 +11,4 @@ obj-y := entry_$(BITS).o thunk_$(BITS + obj-y += common.o + + obj-y += vdso/ +-obj-y += vsyscall/ +- +-obj-$(CONFIG_IA32_EMULATION) += entry_64_compat.o syscall_32.o + +diff -uprN linux-5.3/arch/x86/kernel/head_64.S linux-5.3-bonsai/arch/x86/kernel/head_64.S +--- linux-5.3/arch/x86/kernel/head_64.S 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/kernel/head_64.S 2019-09-20 15:15:10.767623600 -0400 +@@ -474,8 +474,6 @@ ENTRY(phys_base) + .quad 0x0000000000000000 + EXPORT_SYMBOL(phys_base) + +-#include "../../x86/xen/xen-head.S" +- + __PAGE_ALIGNED_BSS + NEXT_PAGE(empty_zero_page) + .skip PAGE_SIZE +diff -uprN linux-5.3/arch/x86/kernel/setup.c linux-5.3-bonsai/arch/x86/kernel/setup.c +--- linux-5.3/arch/x86/kernel/setup.c 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/kernel/setup.c 2019-09-20 15:15:10.768623600 -0400 +@@ -1282,7 +1282,7 @@ void __init setup_arch(char **cmdline_p) + if (!efi_enabled(EFI_BOOT) || (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) + conswitchp = &vga_con; + #elif defined(CONFIG_DUMMY_CONSOLE) +- conswitchp = &dummy_con; ++// conswitchp = &dummy_con; + #endif + #endif + x86_init.oem.banner(); +diff -uprN linux-5.3/arch/x86/mm/Makefile linux-5.3-bonsai/arch/x86/mm/Makefile +--- linux-5.3/arch/x86/mm/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/arch/x86/mm/Makefile 2019-09-20 15:15:10.768623600 -0400 +@@ -25,31 +25,14 @@ CFLAGS_fault.o := -I $(srctree)/$(src)/. + + obj-$(CONFIG_X86_PAT) += pat_rbtree.o + +-obj-$(CONFIG_X86_32) += pgtable_32.o iomap_32.o +- + obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o + obj-$(CONFIG_X86_PTDUMP_CORE) += dump_pagetables.o + obj-$(CONFIG_X86_PTDUMP) += debug_pagetables.o + +-obj-$(CONFIG_HIGHMEM) += highmem_32.o +- + KASAN_SANITIZE_kasan_init_$(BITS).o := n + obj-$(CONFIG_KASAN) += kasan_init_$(BITS).o + +-obj-$(CONFIG_MMIOTRACE) += mmiotrace.o +-mmiotrace-y := kmmio.o pf_in.o mmio-mod.o +-obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o +- +-obj-$(CONFIG_NUMA) += numa.o numa_$(BITS).o +-obj-$(CONFIG_AMD_NUMA) += amdtopology.o +-obj-$(CONFIG_ACPI_NUMA) += srat.o +-obj-$(CONFIG_NUMA_EMU) += numa_emulation.o +- + obj-$(CONFIG_X86_INTEL_MPX) += mpx.o + obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o + obj-$(CONFIG_RANDOMIZE_MEMORY) += kaslr.o + obj-$(CONFIG_PAGE_TABLE_ISOLATION) += pti.o +- +-obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt.o +-obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_identity.o +-obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_boot.o +diff -uprN linux-5.3/crypto/Kconfig linux-5.3-bonsai/crypto/Kconfig +--- linux-5.3/crypto/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/crypto/Kconfig 2019-09-20 15:15:10.768623600 -0400 +@@ -1928,7 +1928,6 @@ config CRYPTO_STATS + config CRYPTO_HASH_INFO + bool + +-source "drivers/crypto/Kconfig" + source "crypto/asymmetric_keys/Kconfig" + source "certs/Kconfig" + +diff -uprN linux-5.3/drivers/Kconfig linux-5.3-bonsai/drivers/Kconfig +--- linux-5.3/drivers/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/Kconfig 2019-09-20 15:15:10.769623600 -0400 +@@ -1,233 +1,760 @@ + # SPDX-License-Identifier: GPL-2.0 + menu "Device Drivers" + +-# Keep I/O buses first ++# ++# PCI configuration ++# ++ ++# select this to offer the PCI prompt ++config HAVE_PCI ++ bool ++ ++# select this to unconditionally force on PCI support ++config FORCE_PCI ++ bool ++ select HAVE_PCI ++ select PCI ++ ++menuconfig PCI ++ bool "PCI support" ++ depends on HAVE_PCI ++ help ++ This option enables support for the PCI local bus, including ++ support for PCI-X and the foundations for PCI Express support. ++ Say 'Y' here unless you know what you are doing. ++ ++if PCI ++ ++config PCI_MSI ++ bool "Message Signaled Interrupts (MSI and MSI-X)" ++ select GENERIC_MSI_IRQ ++ help ++ This allows device drivers to enable MSI (Message Signaled ++ Interrupts). Message Signaled Interrupts enable a device to ++ generate an interrupt using an inbound Memory Write on its ++ PCI bus instead of asserting a device IRQ pin. ++ ++ Use of PCI MSI interrupts can be disabled at kernel boot time ++ by using the 'pci=nomsi' option. This disables MSI for the ++ entire system. ++ ++ If you don't know what to do here, say Y. ++ ++config PCI_MSI_IRQ_DOMAIN ++ def_bool ARC || ARM || ARM64 || X86 ++ depends on PCI_MSI ++ select GENERIC_MSI_IRQ_DOMAIN ++ ++ ++config PCI_ECAM ++ bool ++ ++config PCI_LOCKLESS_CONFIG ++ bool ++ ++config PCI_BRIDGE_EMUL ++ bool ++ ++ ++config PCI_LABEL ++ def_bool y if (DMI || ACPI) ++ select NLS ++ ++endif ++ ++menu "Generic Driver Options" ++ ++config UEVENT_HELPER ++ bool "Support for uevent helper" ++ help ++ The uevent helper program is forked by the kernel for ++ every uevent. ++ Before the switch to the netlink-based uevent source, this was ++ used to hook hotplug scripts into kernel device events. It ++ usually pointed to a shell script at /sbin/hotplug. ++ This should not be used today, because usual systems create ++ many events at bootup or device discovery in a very short time ++ frame. One forked process per event can create so many processes ++ that it creates a high system load, or on smaller systems ++ it is known to create out-of-memory situations during bootup. ++ ++config UEVENT_HELPER_PATH ++ string "path to uevent helper" ++ depends on UEVENT_HELPER ++ default "" ++ help ++ To disable user space helper program execution at by default ++ specify an empty string here. This setting can still be altered ++ via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper ++ later at runtime. ++ ++config DEVTMPFS ++ bool "Maintain a devtmpfs filesystem to mount at /dev" ++ help ++ This creates a tmpfs/ramfs filesystem instance early at bootup. ++ In this filesystem, the kernel driver core maintains device ++ nodes with their default names and permissions for all ++ registered devices with an assigned major/minor number. ++ Userspace can modify the filesystem content as needed, add ++ symlinks, and apply needed permissions. ++ It provides a fully functional /dev directory, where usually ++ udev runs on top, managing permissions and adding meaningful ++ symlinks. ++ In very limited environments, it may provide a sufficient ++ functional /dev without any further help. It also allows simple ++ rescue systems, and reliably handles dynamic major/minor numbers. ++ ++ Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs ++ file system will be used instead. ++ ++config DEVTMPFS_MOUNT ++ bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs" ++ depends on DEVTMPFS ++ help ++ This will instruct the kernel to automatically mount the ++ devtmpfs filesystem at /dev, directly after the kernel has ++ mounted the root filesystem. The behavior can be overridden ++ with the commandline parameter: devtmpfs.mount=0|1. ++ This option does not affect initramfs based booting, here ++ the devtmpfs filesystem always needs to be mounted manually ++ after the rootfs is mounted. ++ With this option enabled, it allows to bring up a system in ++ rescue mode with init=/bin/sh, even when the /dev directory ++ on the rootfs is completely empty. ++ ++ ++config GENERIC_CPU_DEVICES ++ bool ++ default n ++ ++config GENERIC_CPU_AUTOPROBE ++ bool ++ ++config GENERIC_CPU_VULNERABILITIES ++ bool ++ ++config SOC_BUS ++ bool ++ select GLOB ++ ++ ++config DMA_SHARED_BUFFER ++ bool ++ default n ++ select IRQ_WORK ++ help ++ This option enables the framework for buffer-sharing between ++ multiple drivers. A buffer is associated with a file using driver ++ APIs extension; the file's descriptor can then be passed on to other ++ driver. ++ ++config DMA_FENCE_TRACE ++ bool "Enable verbose DMA_FENCE_TRACE messages" ++ depends on DMA_SHARED_BUFFER ++ help ++ Enable the DMA_FENCE_TRACE printks. This will add extra ++ spam to the console log, but will make it easier to diagnose ++ lockup related problems for dma-buffers shared across multiple ++ devices. + +-source "drivers/amba/Kconfig" +-source "drivers/eisa/Kconfig" +-source "drivers/pci/Kconfig" +-source "drivers/pcmcia/Kconfig" +-source "drivers/rapidio/Kconfig" + ++endmenu + +-source "drivers/base/Kconfig" +- +-source "drivers/bus/Kconfig" +- +-source "drivers/connector/Kconfig" +- +-source "drivers/gnss/Kconfig" +- +-source "drivers/mtd/Kconfig" +- +-source "drivers/of/Kconfig" +- +-source "drivers/parport/Kconfig" +- +-source "drivers/pnp/Kconfig" +- +-source "drivers/block/Kconfig" +- +-source "drivers/nvme/Kconfig" +- +-# misc before ide - BLK_DEV_SGIIOC4 depends on SGI_IOC4 +- +-source "drivers/misc/Kconfig" +- +-source "drivers/ide/Kconfig" +- +-source "drivers/scsi/Kconfig" +- +-source "drivers/ata/Kconfig" +- +-source "drivers/md/Kconfig" +- +-source "drivers/target/Kconfig" +- +-source "drivers/message/fusion/Kconfig" +- +-source "drivers/firewire/Kconfig" +- +-source "drivers/macintosh/Kconfig" +- +-source "drivers/net/Kconfig" +- +-source "drivers/isdn/Kconfig" +- +-source "drivers/lightnvm/Kconfig" +- +-# input before char - char/joystick depends on it. As does USB. +- +-source "drivers/input/Kconfig" +- +-source "drivers/char/Kconfig" +- +-source "drivers/i2c/Kconfig" +- +-source "drivers/i3c/Kconfig" +- +-source "drivers/spi/Kconfig" +- +-source "drivers/spmi/Kconfig" +- +-source "drivers/hsi/Kconfig" +- +-source "drivers/pps/Kconfig" +- +-source "drivers/ptp/Kconfig" +- +-source "drivers/pinctrl/Kconfig" +- +-source "drivers/gpio/Kconfig" +- +-source "drivers/w1/Kconfig" +- +-source "drivers/power/Kconfig" +- +-source "drivers/hwmon/Kconfig" +- +-source "drivers/thermal/Kconfig" + +-source "drivers/watchdog/Kconfig" ++# ++# Block device driver configuration ++# ++ ++menuconfig BLK_DEV ++ bool "Block devices" ++ depends on BLOCK ++ default y ++ ---help--- ++ Say Y here to get to see options for various different block device ++ drivers. This option alone does not add any kernel code. ++ ++ If you say N, all options in this submenu will be skipped and disabled; ++ only do this if you know what you are doing. ++ ++if BLK_DEV ++ ++config BLK_DEV_LOOP ++ tristate "Loopback device support" ++ ---help--- ++ Saying Y here will allow you to use a regular file as a block ++ device; you can then create a file system on that block device and ++ mount it just as you would mount other block devices such as hard ++ drive partitions, CD-ROM drives or floppy drives. The loop devices ++ are block special device files with major number 7 and typically ++ called /dev/loop0, /dev/loop1 etc. ++ ++ This is useful if you want to check an ISO 9660 file system before ++ burning the CD, or if you want to use floppy images without first ++ writing them to floppy. Furthermore, some Linux distributions avoid ++ the need for a dedicated Linux partition by keeping their complete ++ root file system inside a DOS FAT file using this loop device ++ driver. ++ ++ To use the loop device, you need the losetup utility, found in the ++ util-linux package, see ++ . ++ ++ The loop device driver can also be used to "hide" a file system in ++ a disk partition, floppy, or regular file, either using encryption ++ (scrambling the data) or steganography (hiding the data in the low ++ bits of, say, a sound file). This is also safe if the file resides ++ on a remote file server. ++ ++ There are several ways of encrypting disks. Some of these require ++ kernel patches. The vanilla kernel offers the cryptoloop option ++ and a Device Mapper target (which is superior, as it supports all ++ file systems). If you want to use the cryptoloop, say Y to both ++ LOOP and CRYPTOLOOP, and make sure you have a recent (version 2.12 ++ or later) version of util-linux. Additionally, be aware that ++ the cryptoloop is not safe for storing journaled filesystems. ++ ++ Note that this loop device has nothing to do with the loopback ++ device used for network connections from the machine to itself. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called loop. ++ ++ Most users will answer N here. ++ ++config BLK_DEV_LOOP_MIN_COUNT ++ int "Number of loop devices to pre-create at init time" ++ depends on BLK_DEV_LOOP ++ default 8 ++ help ++ Static number of loop devices to be unconditionally pre-created ++ at init time. ++ ++ This default value can be overwritten on the kernel command ++ line or with module-parameter loop.max_loop. ++ ++ The historic default is 8. If a late 2011 version of losetup(8) ++ is used, it can be set to 0, since needed loop devices can be ++ dynamically allocated with the /dev/loop-control interface. ++ ++config VIRTIO_BLK ++ tristate "Virtio block driver" ++ depends on VIRTIO ++ ---help--- ++ This is the virtual block driver for virtio. It can be used with ++ QEMU based VMMs (like KVM or Xen). Say Y or M. ++ ++endif # BLK_DEV ++ ++menuconfig MD ++ bool "Multiple devices driver support (RAID and LVM)" ++ depends on BLOCK ++ select SRCU ++ help ++ Support multiple physical spindles through a single logical device. ++ Required for RAID and logical volume management. ++ ++if MD ++ ++ ++config MD_LINEAR ++ tristate "Linear (append) mode" ++ depends on BLK_DEV_MD ++ ---help--- ++ If you say Y here, then your multiple devices driver will be able to ++ use the so-called linear mode, i.e. it will combine the hard disk ++ partitions by simply appending one to the other. ++ ++ To compile this as a module, choose M here: the module ++ will be called linear. ++ ++ If unsure, say Y. ++ ++config BLK_DEV_DM_BUILTIN ++ bool ++ ++config BLK_DEV_DM ++ tristate "Device mapper support" ++ select BLK_DEV_DM_BUILTIN ++ depends on DAX || DAX=n ++ ---help--- ++ Device-mapper is a low level volume manager. It works by allowing ++ people to specify mappings for ranges of logical sectors. Various ++ mapping types are available, in addition people may write their own ++ modules containing custom mappings if they wish. ++ ++ Higher level volume managers such as LVM2 use this driver. ++ ++ To compile this as a module, choose M here: the module will be ++ called dm-mod. ++ ++ If unsure, say N. ++ ++config DM_DEBUG ++ bool "Device mapper debugging support" ++ depends on BLK_DEV_DM ++ ---help--- ++ Enable this for messages that may help debug device-mapper problems. ++ ++ If unsure, say N. ++ ++config DM_BUFIO ++ tristate ++ depends on BLK_DEV_DM ++ ---help--- ++ This interface allows you to do buffered I/O on a device and acts ++ as a cache, holding recently-read blocks in memory and performing ++ delayed writes. ++ ++config DM_CRYPT ++ tristate "Crypt target support" ++ depends on BLK_DEV_DM ++ select CRYPTO ++ select CRYPTO_CBC ++ ---help--- ++ This device-mapper target allows you to create a device that ++ transparently encrypts the data on it. You'll need to activate ++ the ciphers you're going to use in the cryptoapi configuration. ++ ++ For further information on dm-crypt and userspace tools see: ++ ++ ++ To compile this code as a module, choose M here: the module will ++ be called dm-crypt. ++ ++ If unsure, say N. ++ ++config DM_INIT ++ bool "DM \"dm-mod.create=\" parameter support" ++ depends on BLK_DEV_DM=y ++ ---help--- ++ Enable "dm-mod.create=" parameter to create mapped devices at init time. ++ This option is useful to allow mounting rootfs without requiring an ++ initramfs. ++ See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..." ++ format. ++ ++ If unsure, say N. ++ ++config DM_UEVENT ++ bool "DM uevents" ++ depends on BLK_DEV_DM ++ ---help--- ++ Generate udev events for DM events. ++ ++config DM_VERITY ++ tristate "Verity target support" ++ depends on BLK_DEV_DM ++ select CRYPTO ++ select CRYPTO_HASH ++ select DM_BUFIO ++ ---help--- ++ This device-mapper target creates a read-only device that ++ transparently validates the data on one underlying device against ++ a pre-generated tree of cryptographic checksums stored on a second ++ device. ++ ++ You'll need to activate the digests you're going to use in the ++ cryptoapi configuration. ++ ++ To compile this code as a module, choose M here: the module will ++ be called dm-verity. ++ ++ If unsure, say N. ++ ++endif # MD ++ ++# ++# Network device configuration ++# ++ ++menuconfig NETDEVICES ++ default y if UML ++ depends on NET ++ bool "Network device support" ++ ---help--- ++ You can say N here if you don't intend to connect your Linux box to ++ any other computer at all. ++ ++ You'll have to say Y if your computer contains a network card that ++ you want to use under Linux. If you are going to run SLIP or PPP over ++ telephone line or null modem cable you need say Y here. Connecting ++ two machines with parallel ports using PLIP needs this, as well as ++ AX.25/KISS for sending Internet traffic over amateur radio links. ++ ++ See also "The Linux Network Administrator's Guide" by Olaf Kirch and ++ Terry Dawson. Available at . ++ ++ If unsure, say Y. ++ ++# All the following symbols are dependent on NETDEVICES - do not repeat ++# that for each of the symbols. ++if NETDEVICES ++ ++config MII ++ tristate ++ ++config NET_CORE ++ default y ++ bool "Network core driver support" ++ ---help--- ++ You can say N here if you do not intend to use any of the ++ networking core drivers (i.e. VLAN, bridging, bonding, etc.) ++ ++if NET_CORE ++ ++config TUN ++ tristate "Universal TUN/TAP device driver support" ++ depends on INET ++ select CRC32 ++ ---help--- ++ TUN/TAP provides packet reception and transmission for user space ++ programs. It can be viewed as a simple Point-to-Point or Ethernet ++ device, which instead of receiving packets from a physical media, ++ receives them from user space program and instead of sending packets ++ via physical media writes them to the user space program. ++ ++ When a program opens /dev/net/tun, driver creates and registers ++ corresponding net device tunX or tapX. After a program closed above ++ devices, driver will automatically delete tunXX or tapXX device and ++ all routes corresponding to it. ++ ++ Please read for more ++ information. ++ ++ To compile this driver as a module, choose M here: the module ++ will be called tun. ++ ++ If you don't know what to use this for, you don't need it. ++ ++config TAP ++ tristate ++ ---help--- ++ This option is selected by any driver implementing tap user space ++ interface for a virtual interface to re-use core tap functionality. ++ ++config TUN_VNET_CROSS_LE ++ bool "Support for cross-endian vnet headers on little-endian kernels" ++ default n ++ ---help--- ++ This option allows TUN/TAP and MACVTAP device drivers in a ++ little-endian kernel to parse vnet headers that come from a ++ big-endian legacy virtio device. ++ ++ Userspace programs can control the feature using the TUNSETVNETBE ++ and TUNGETVNETBE ioctls. ++ ++ Unless you have a little-endian system hosting a big-endian virtual ++ machine with a legacy virtio NIC, you should say N. ++ ++config VETH ++ tristate "Virtual ethernet pair device" ++ ---help--- ++ This device is a local ethernet tunnel. Devices are created in pairs. ++ When one end receives the packet it appears on its pair and vice ++ versa. ++ ++config VIRTIO_NET ++ tristate "Virtio network driver" ++ depends on VIRTIO ++ select NET_FAILOVER ++ ---help--- ++ This is the virtual network driver for virtio. It can be used with ++ QEMU based VMMs (like KVM or Xen). Say Y or M. ++ ++endif # NET_CORE ++ ++config NET_FAILOVER ++ tristate "Failover driver" ++ select FAILOVER ++ help ++ This provides an automated failover mechanism via APIs to create ++ and destroy a failover master netdev and manages a primary and ++ standby slave netdevs that get registered via the generic failover ++ infrastructure. This can be used by paravirtual drivers to enable ++ an alternate low latency datapath. It also enables live migration of ++ a VM with direct attached VF by failing over to the paravirtual ++ datapath when the VF is unplugged. ++ ++endif # NETDEVICES ++ ++ ++menu "Character devices" ++ ++config TTY ++ bool "Enable TTY" if EXPERT ++ default y ++ ---help--- ++ Allows you to remove TTY support which can save space, and ++ blocks features that require TTY from inclusion in the kernel. ++ TTY is required for any text terminals or serial port ++ communication. Most users should leave this enabled. ++ ++if TTY ++ ++config UNIX98_PTYS ++ bool "Unix98 PTY support" if EXPERT ++ default y ++ ---help--- ++ A pseudo terminal (PTY) is a software device consisting of two ++ halves: a master and a slave. The slave device behaves identical to ++ a physical terminal; the master device is used by a process to ++ read data from and write data to the slave, thereby emulating a ++ terminal. Typical programs for the master side are telnet servers ++ and xterms. ++ ++ Linux has traditionally used the BSD-like names /dev/ptyxx for ++ masters and /dev/ttyxx for slaves of pseudo terminals. This scheme ++ has a number of problems. The GNU C library glibc 2.1 and later, ++ however, supports the Unix98 naming standard: in order to acquire a ++ pseudo terminal, a process opens /dev/ptmx; the number of the pseudo ++ terminal is then made available to the process and the pseudo ++ terminal slave can be accessed as /dev/pts/. What was ++ traditionally /dev/ttyp2 will then be /dev/pts/2, for example. ++ ++ All modern Linux systems use the Unix98 ptys. Say Y unless ++ you're on an embedded system and want to conserve memory. ++ ++config LDISC_AUTOLOAD ++ bool "Automatically load TTY Line Disciplines" ++ default y ++ help ++ Historically the kernel has always automatically loaded any ++ line discipline that is in a kernel module when a user asks ++ for it to be loaded with the TIOCSETD ioctl, or through other ++ means. This is not always the best thing to do on systems ++ where you know you will not be using some of the more ++ "ancient" line disciplines, so prevent the kernel from doing ++ this unless the request is coming from a process with the ++ CAP_SYS_MODULE permissions. ++ ++ Say 'Y' here if you trust your userspace users to do the right ++ thing, or if you have only provided the line disciplines that ++ you know you will be using, or if you wish to continue to use ++ the traditional method of on-demand loading of these modules ++ by any user. ++ ++ This functionality can be changed at runtime with the ++ dev.tty.ldisc_autoload sysctl, this configuration option will ++ only set the default value of this functionality. ++ ++config HVC_DRIVER ++ bool ++ help ++ Generic "hypervisor virtual console" infrastructure for various ++ hypervisors (pSeries, iSeries, Xen). ++ It will automatically be selected if one of the back-end console drivers ++ is selected. ++ ++config VIRTIO_CONSOLE ++ tristate "Virtio console" ++ depends on VIRTIO && TTY ++ select HVC_DRIVER ++ help ++ Virtio console for use with hypervisors. ++ ++ Also serves as a general-purpose serial device for data ++ transfer between the guest and host. Character devices at ++ /dev/vportNpn will be created when corresponding ports are ++ found, where N is the device number and n is the port number ++ within that device. If specified by the host, a sysfs ++ attribute called 'name' will be populated with a name for ++ the port which can be used by udev scripts to create a ++ symlink to the device. ++ ++ ++endif # TTY ++ ++menuconfig HW_RANDOM ++ tristate "Hardware Random Number Generator Core support" ++ default m ++ ---help--- ++ Hardware Random Number Generator Core infrastructure. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called rng-core. This provides a device ++ that's usually called /dev/hwrng, and which exposes one ++ of possibly several hardware random number generators. ++ ++ These hardware random number generators do feed into the ++ kernel's random number generator entropy pool. ++ ++ If unsure, say Y. ++ ++if HW_RANDOM ++ ++config HW_RANDOM_VIRTIO ++ tristate "VirtIO Random Number Generator support" ++ depends on VIRTIO ++ ---help--- ++ This driver provides kernel-side support for the virtual Random Number ++ Generator hardware. + +-source "drivers/ssb/Kconfig" ++ To compile this driver as a module, choose M here: the ++ module will be called virtio-rng. If unsure, say N. + +-source "drivers/bcma/Kconfig" ++endif # HW_RANDOM + +-source "drivers/mfd/Kconfig" ++endmenu + +-source "drivers/regulator/Kconfig" ++config RANDOM_TRUST_CPU ++ bool "Trust the CPU manufacturer to initialize Linux's CRNG" ++ depends on X86 || S390 || PPC ++ default n ++ help ++ Assume that CPU manufacturer (e.g., Intel or AMD for RDSEED or ++ RDRAND, IBM for the S390 and Power PC architectures) is trustworthy ++ for the purposes of initializing Linux's CRNG. Since this is not ++ something that can be independently audited, this amounts to trusting ++ that CPU manufacturer (perhaps with the insistence or mandate ++ of a Nation State's intelligence or law enforcement agencies) ++ has not installed a hidden back door to compromise the CPU's ++ random number generation facilities. This can also be configured ++ at boot with "random.trust_cpu=on/off". + +-source "drivers/media/Kconfig" + +-source "drivers/video/Kconfig" + + source "sound/Kconfig" + +-source "drivers/hid/Kconfig" +- +-source "drivers/usb/Kconfig" +- +-source "drivers/uwb/Kconfig" +- +-source "drivers/mmc/Kconfig" +- +-source "drivers/memstick/Kconfig" +- +-source "drivers/leds/Kconfig" + +-source "drivers/accessibility/Kconfig" ++config RTC_LIB ++ bool + +-source "drivers/infiniband/Kconfig" ++config RTC_MC146818_LIB ++ bool ++ select RTC_LIB ++ ++menuconfig RTC_CLASS ++ bool "Real Time Clock" ++ default n ++ depends on !S390 && !UML ++ select RTC_LIB ++ help ++ Generic RTC class support. If you say yes here, you will ++ be allowed to plug one or more RTCs to your system. You will ++ probably want to enable one or more of the interfaces below. ++ ++if RTC_CLASS ++ ++config RTC_HCTOSYS ++ bool "Set system time from RTC on startup and resume" ++ default y ++ help ++ If you say yes here, the system time (wall clock) will be set using ++ the value read from a specified RTC device. This is useful to avoid ++ unnecessary fsck runs at boot time, and to network better. ++ ++config RTC_HCTOSYS_DEVICE ++ string "RTC used to set the system time" ++ depends on RTC_HCTOSYS ++ default "rtc0" ++ help ++ The RTC device that will be used to (re)initialize the system ++ clock, usually rtc0. Initialization is done when the system ++ starts up, and when it resumes from a low power state. This ++ device should record time in UTC, since the kernel won't do ++ timezone correction. ++ ++ The driver for this RTC device must be loaded before late_initcall ++ functions run, so it must usually be statically linked. ++ ++ This clock should be battery-backed, so that it reads the correct ++ time when the system boots from a power-off state. Otherwise, your ++ system will need an external clock source (like an NTP server). ++ ++ If the clock you specify here is not battery backed, it may still ++ be useful to reinitialize system time when resuming from system ++ sleep states. Do not specify an RTC here unless it stays powered ++ during all this system's supported sleep states. ++ ++config RTC_DRV_CMOS ++ tristate "PC-style 'CMOS'" ++ depends on X86 || ARM || PPC || MIPS || SPARC64 ++ default y if X86 ++ select RTC_MC146818_LIB ++ help ++ Say "yes" here to get direct support for the real time clock ++ found in every PC or ACPI-based system, and some other boards. ++ Specifically the original MC146818, compatibles like those in ++ PC south bridges, the DS12887 or M48T86, some multifunction ++ or LPC bus chips, and so on. ++ ++ Your system will need to define the platform device used by ++ this driver, otherwise it won't be accessible. This means ++ you can safely enable this driver if you don't know whether ++ or not your board has this kind of hardware. ++ ++ This driver can also be built as a module. If so, the module ++ will be called rtc-cmos. ++endif # RTC_CLASS + +-source "drivers/edac/Kconfig" +- +-source "drivers/rtc/Kconfig" +- +-source "drivers/dma/Kconfig" +- +-source "drivers/dma-buf/Kconfig" +- +-source "drivers/dca/Kconfig" +- +-source "drivers/auxdisplay/Kconfig" +- +-source "drivers/uio/Kconfig" +- +-source "drivers/vfio/Kconfig" +- +-source "drivers/vlynq/Kconfig" +- +-source "drivers/virt/Kconfig" + + source "drivers/virtio/Kconfig" + +-source "drivers/hv/Kconfig" +- +-source "drivers/xen/Kconfig" +- +-source "drivers/staging/Kconfig" +- +-source "drivers/platform/Kconfig" +- +-source "drivers/clk/Kconfig" +- +-source "drivers/hwspinlock/Kconfig" +- +-source "drivers/clocksource/Kconfig" +- +-source "drivers/mailbox/Kconfig" +- +-source "drivers/iommu/Kconfig" +- +-source "drivers/remoteproc/Kconfig" +- +-source "drivers/rpmsg/Kconfig" +- +-source "drivers/soundwire/Kconfig" +- +-source "drivers/soc/Kconfig" +- +-source "drivers/devfreq/Kconfig" +- +-source "drivers/extcon/Kconfig" ++menu "Clock Source drivers" ++ depends on GENERIC_CLOCKEVENTS + +-source "drivers/memory/Kconfig" ++config CLKSRC_I8253 ++ bool + +-source "drivers/iio/Kconfig" ++config CLKEVT_I8253 ++ bool + +-source "drivers/ntb/Kconfig" ++config CLKBLD_I8253 ++ def_bool y if CLKSRC_I8253 || CLKEVT_I8253 || I8253_LOCK + +-source "drivers/vme/Kconfig" +- +-source "drivers/pwm/Kconfig" +- +-source "drivers/irqchip/Kconfig" +- +-source "drivers/ipack/Kconfig" +- +-source "drivers/reset/Kconfig" +- +-source "drivers/phy/Kconfig" +- +-source "drivers/powercap/Kconfig" +- +-source "drivers/mcb/Kconfig" +- +-source "drivers/perf/Kconfig" +- +-source "drivers/ras/Kconfig" +- +-source "drivers/thunderbolt/Kconfig" +- +-source "drivers/android/Kconfig" ++endmenu + + source "drivers/nvdimm/Kconfig" + +-source "drivers/dax/Kconfig" +- +-source "drivers/nvmem/Kconfig" +- +-source "drivers/hwtracing/Kconfig" +- +-source "drivers/fpga/Kconfig" +- +-source "drivers/fsi/Kconfig" +- +-source "drivers/tee/Kconfig" +- +-source "drivers/mux/Kconfig" +- +-source "drivers/opp/Kconfig" +- +-source "drivers/visorbus/Kconfig" +- +-source "drivers/siox/Kconfig" +- +-source "drivers/slimbus/Kconfig" ++config DAX_DRIVER ++ select DAX ++ bool ++ ++menuconfig DAX ++ tristate "DAX: direct access to differentiated memory" ++ select SRCU ++ default m if NVDIMM_DAX ++ ++if DAX ++ ++config DEV_DAX ++ tristate "Device DAX: direct access mapping device" ++ depends on TRANSPARENT_HUGEPAGE ++ help ++ Support raw access to differentiated (persistence, bandwidth, ++ latency...) memory via an mmap(2) capable character ++ device. Platform firmware or a device driver may identify a ++ platform memory resource that is differentiated from the ++ baseline memory pool. Mappings of a /dev/daxX.Y device impose ++ restrictions that make the mapping behavior deterministic. ++ ++config DEV_DAX_PMEM ++ tristate "PMEM DAX: direct access to persistent memory" ++ depends on LIBNVDIMM && NVDIMM_DAX && DEV_DAX ++ default DEV_DAX ++ help ++ Support raw access to persistent memory. Note that this ++ driver consumes memory ranges allocated and exported by the ++ libnvdimm sub-system. ++ ++ Say M if unsure ++ ++config DEV_DAX_KMEM ++ tristate "KMEM DAX: volatile-use of persistent memory" ++ default DEV_DAX ++ depends on DEV_DAX ++ depends on MEMORY_HOTPLUG # for add_memory() and friends ++ help ++ Support access to persistent memory as if it were RAM. This ++ allows easier use of persistent memory by unmodified ++ applications. ++ ++ To use this feature, a DAX device must be unbound from the ++ device_dax driver (PMEM DAX) and bound to this kmem driver ++ on each boot. + +-source "drivers/interconnect/Kconfig" ++ Say N if unsure. + +-source "drivers/counter/Kconfig" ++endif + + endmenu +diff -uprN linux-5.3/drivers/Makefile linux-5.3-bonsai/drivers/Makefile +--- linux-5.3/drivers/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/Makefile 2019-09-20 15:15:10.769623600 -0400 +@@ -6,184 +6,22 @@ + # Rewritten to use lists instead of if-statements. + # + +-obj-y += irqchip/ +-obj-y += bus/ +- +-obj-$(CONFIG_GENERIC_PHY) += phy/ +- +-# GPIO must come after pinctrl as gpios may need to mux pins etc +-obj-$(CONFIG_PINCTRL) += pinctrl/ +-obj-$(CONFIG_GPIOLIB) += gpio/ +-obj-y += pwm/ +- + obj-y += pci/ + +-obj-$(CONFIG_PARISC) += parisc/ +-obj-$(CONFIG_RAPIDIO) += rapidio/ +-obj-y += video/ +-obj-y += idle/ +- +-# IPMI must come before ACPI in order to provide IPMI opregion support +-obj-y += char/ipmi/ +- +-obj-$(CONFIG_ACPI) += acpi/ +-obj-$(CONFIG_SFI) += sfi/ +-# PnP must come after ACPI since it will eventually need to check if acpi +-# was used and do nothing if so +-obj-$(CONFIG_PNP) += pnp/ +-obj-y += amba/ +- +-obj-y += clk/ +-# Many drivers will want to use DMA so this has to be made available +-# really early. +-obj-$(CONFIG_DMADEVICES) += dma/ +- +-# SOC specific infrastructure drivers. +-obj-y += soc/ +- + obj-$(CONFIG_VIRTIO) += virtio/ +-obj-$(CONFIG_XEN) += xen/ + +-# regulators early, since some subsystems rely on them to initialize +-obj-$(CONFIG_REGULATOR) += regulator/ +- +-# reset controllers early, since gpu drivers might rely on them to initialize +-obj-$(CONFIG_RESET_CONTROLLER) += reset/ +- +-# tty/ comes before char/ so that the VT console is the boot-time +-# default. + obj-y += tty/ + obj-y += char/ + +-# iommu/ comes before gpu as gpu are using iommu controllers +-obj-y += iommu/ +- +-# gpu/ comes after char for AGP vs DRM startup and after iommu + obj-y += gpu/ + +-obj-$(CONFIG_CONNECTOR) += connector/ +- +-# i810fb and intelfb depend on char/agp/ +-obj-$(CONFIG_FB_I810) += video/fbdev/i810/ +-obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/ +- +-obj-$(CONFIG_PARPORT) += parport/ +-obj-$(CONFIG_NVM) += lightnvm/ +-obj-y += base/ block/ misc/ mfd/ nfc/ ++obj-y += base/ block/ + obj-$(CONFIG_LIBNVDIMM) += nvdimm/ + obj-$(CONFIG_DAX) += dax/ + obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/ +-obj-$(CONFIG_NUBUS) += nubus/ +-obj-y += macintosh/ +-obj-$(CONFIG_IDE) += ide/ +-obj-y += scsi/ +-obj-y += nvme/ +-obj-$(CONFIG_ATA) += ata/ +-obj-$(CONFIG_TARGET_CORE) += target/ +-obj-$(CONFIG_MTD) += mtd/ +-obj-$(CONFIG_SPI) += spi/ +-obj-$(CONFIG_SPMI) += spmi/ +-obj-$(CONFIG_HSI) += hsi/ +-obj-$(CONFIG_SLIMBUS) += slimbus/ + obj-y += net/ +-obj-$(CONFIG_ATM) += atm/ +-obj-$(CONFIG_FUSION) += message/ +-obj-y += firewire/ +-obj-$(CONFIG_UIO) += uio/ +-obj-$(CONFIG_VFIO) += vfio/ +-obj-y += cdrom/ +-obj-y += auxdisplay/ +-obj-$(CONFIG_PCCARD) += pcmcia/ +-obj-$(CONFIG_DIO) += dio/ +-obj-$(CONFIG_SBUS) += sbus/ +-obj-$(CONFIG_ZORRO) += zorro/ +-obj-$(CONFIG_ATA_OVER_ETH) += block/aoe/ +-obj-$(CONFIG_PARIDE) += block/paride/ +-obj-$(CONFIG_TC) += tc/ +-obj-$(CONFIG_UWB) += uwb/ +-obj-$(CONFIG_USB_PHY) += usb/ +-obj-$(CONFIG_USB) += usb/ +-obj-$(CONFIG_USB_SUPPORT) += usb/ +-obj-$(CONFIG_PCI) += usb/ +-obj-$(CONFIG_USB_GADGET) += usb/ +-obj-$(CONFIG_OF) += usb/ +-obj-$(CONFIG_SERIO) += input/serio/ +-obj-$(CONFIG_GAMEPORT) += input/gameport/ +-obj-$(CONFIG_INPUT) += input/ + obj-$(CONFIG_RTC_LIB) += rtc/ +-obj-y += i2c/ i3c/ media/ +-obj-$(CONFIG_PPS) += pps/ +-obj-y += ptp/ +-obj-$(CONFIG_W1) += w1/ +-obj-y += power/ +-obj-$(CONFIG_HWMON) += hwmon/ +-obj-$(CONFIG_THERMAL) += thermal/ +-obj-$(CONFIG_WATCHDOG) += watchdog/ + obj-$(CONFIG_MD) += md/ +-obj-$(CONFIG_BT) += bluetooth/ +-obj-$(CONFIG_ACCESSIBILITY) += accessibility/ +-obj-$(CONFIG_ISDN) += isdn/ +-obj-$(CONFIG_EDAC) += edac/ +-obj-$(CONFIG_EISA) += eisa/ +-obj-$(CONFIG_PM_OPP) += opp/ +-obj-$(CONFIG_CPU_FREQ) += cpufreq/ +-obj-$(CONFIG_CPU_IDLE) += cpuidle/ +-obj-y += mmc/ +-obj-$(CONFIG_MEMSTICK) += memstick/ +-obj-$(CONFIG_NEW_LEDS) += leds/ +-obj-$(CONFIG_INFINIBAND) += infiniband/ +-obj-$(CONFIG_SGI_SN) += sn/ +-obj-y += firmware/ +-obj-$(CONFIG_CRYPTO) += crypto/ +-obj-$(CONFIG_SUPERH) += sh/ + ifndef CONFIG_ARCH_USES_GETTIMEOFFSET + obj-y += clocksource/ + endif +-obj-$(CONFIG_DCA) += dca/ +-obj-$(CONFIG_HID) += hid/ +-obj-$(CONFIG_PPC_PS3) += ps3/ +-obj-$(CONFIG_OF) += of/ +-obj-$(CONFIG_SSB) += ssb/ +-obj-$(CONFIG_BCMA) += bcma/ +-obj-$(CONFIG_VHOST_RING) += vhost/ +-obj-$(CONFIG_VHOST) += vhost/ +-obj-$(CONFIG_VLYNQ) += vlynq/ +-obj-$(CONFIG_STAGING) += staging/ +-obj-y += platform/ +- +-obj-$(CONFIG_MAILBOX) += mailbox/ +-obj-$(CONFIG_HWSPINLOCK) += hwspinlock/ +-obj-$(CONFIG_REMOTEPROC) += remoteproc/ +-obj-$(CONFIG_RPMSG) += rpmsg/ +-obj-$(CONFIG_SOUNDWIRE) += soundwire/ +- +-# Virtualization drivers +-obj-$(CONFIG_VIRT_DRIVERS) += virt/ +-obj-$(CONFIG_HYPERV) += hv/ +- +-obj-$(CONFIG_PM_DEVFREQ) += devfreq/ +-obj-$(CONFIG_EXTCON) += extcon/ +-obj-$(CONFIG_MEMORY) += memory/ +-obj-$(CONFIG_IIO) += iio/ +-obj-$(CONFIG_VME_BUS) += vme/ +-obj-$(CONFIG_IPACK_BUS) += ipack/ +-obj-$(CONFIG_NTB) += ntb/ +-obj-$(CONFIG_POWERCAP) += powercap/ +-obj-$(CONFIG_MCB) += mcb/ +-obj-$(CONFIG_PERF_EVENTS) += perf/ +-obj-$(CONFIG_RAS) += ras/ +-obj-$(CONFIG_THUNDERBOLT) += thunderbolt/ +-obj-$(CONFIG_CORESIGHT) += hwtracing/coresight/ +-obj-y += hwtracing/intel_th/ +-obj-$(CONFIG_STM) += hwtracing/stm/ +-obj-$(CONFIG_ANDROID) += android/ +-obj-$(CONFIG_NVMEM) += nvmem/ +-obj-$(CONFIG_FPGA) += fpga/ +-obj-$(CONFIG_FSI) += fsi/ +-obj-$(CONFIG_TEE) += tee/ +-obj-$(CONFIG_MULTIPLEXER) += mux/ +-obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/ +-obj-$(CONFIG_SIOX) += siox/ +-obj-$(CONFIG_GNSS) += gnss/ +-obj-$(CONFIG_INTERCONNECT) += interconnect/ +-obj-$(CONFIG_COUNTER) += counter/ +diff -uprN linux-5.3/drivers/base/Makefile linux-5.3-bonsai/drivers/base/Makefile +--- linux-5.3/drivers/base/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/base/Makefile 2019-09-20 15:15:10.769623600 -0400 +@@ -8,23 +8,23 @@ obj-y := component.o core.o bus.o dd.o + topology.o container.o property.o cacheinfo.o \ + devcon.o swnode.o + obj-$(CONFIG_DEVTMPFS) += devtmpfs.o +-obj-y += power/ ++#obj-y += power/ + obj-$(CONFIG_ISA_BUS_API) += isa.o +-obj-y += firmware_loader/ ++#obj-y += firmware_loader/ + obj-$(CONFIG_NUMA) += node.o + obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o + ifeq ($(CONFIG_SYSFS),y) + obj-$(CONFIG_MODULES) += module.o + endif + obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor.o +-obj-$(CONFIG_REGMAP) += regmap/ ++#obj-$(CONFIG_REGMAP) += regmap/ + obj-$(CONFIG_SOC_BUS) += soc.o + obj-$(CONFIG_PINCTRL) += pinctrl.o + obj-$(CONFIG_DEV_COREDUMP) += devcoredump.o + obj-$(CONFIG_GENERIC_MSI_IRQ_DOMAIN) += platform-msi.o + obj-$(CONFIG_GENERIC_ARCH_TOPOLOGY) += arch_topology.o + +-obj-y += test/ ++#obj-y += test/ + + ccflags-$(CONFIG_DEBUG_DRIVER) := -DDEBUG + +diff -uprN linux-5.3/drivers/block/Makefile linux-5.3-bonsai/drivers/block/Makefile +--- linux-5.3/drivers/block/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/block/Makefile 2019-09-20 15:15:10.769623600 -0400 +@@ -6,40 +6,5 @@ + # Rewritten to use lists instead of if-statements. + # + +-obj-$(CONFIG_MAC_FLOPPY) += swim3.o +-obj-$(CONFIG_BLK_DEV_SWIM) += swim_mod.o +-obj-$(CONFIG_BLK_DEV_FD) += floppy.o +-obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o +-obj-$(CONFIG_PS3_DISK) += ps3disk.o +-obj-$(CONFIG_PS3_VRAM) += ps3vram.o +-obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o +-obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o +-obj-$(CONFIG_BLK_DEV_RAM) += brd.o + obj-$(CONFIG_BLK_DEV_LOOP) += loop.o +-obj-$(CONFIG_XILINX_SYSACE) += xsysace.o +-obj-$(CONFIG_CDROM_PKTCDVD) += pktcdvd.o +-obj-$(CONFIG_SUNVDC) += sunvdc.o +-obj-$(CONFIG_BLK_DEV_SKD) += skd.o +- +-obj-$(CONFIG_BLK_DEV_UMEM) += umem.o +-obj-$(CONFIG_BLK_DEV_NBD) += nbd.o +-obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryptoloop.o + obj-$(CONFIG_VIRTIO_BLK) += virtio_blk.o +- +-obj-$(CONFIG_BLK_DEV_SX8) += sx8.o +- +-obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o +-obj-$(CONFIG_XEN_BLKDEV_BACKEND) += xen-blkback/ +-obj-$(CONFIG_BLK_DEV_DRBD) += drbd/ +-obj-$(CONFIG_BLK_DEV_RBD) += rbd.o +-obj-$(CONFIG_BLK_DEV_PCIESSD_MTIP32XX) += mtip32xx/ +- +-obj-$(CONFIG_BLK_DEV_RSXX) += rsxx/ +-obj-$(CONFIG_ZRAM) += zram/ +- +-obj-$(CONFIG_BLK_DEV_NULL_BLK) += null_blk.o +-null_blk-objs := null_blk_main.o +-null_blk-$(CONFIG_BLK_DEV_ZONED) += null_blk_zoned.o +- +-skd-y := skd_main.o +-swim_mod-y := swim.o swim_asm.o +diff -uprN linux-5.3/drivers/char/Makefile linux-5.3-bonsai/drivers/char/Makefile +--- linux-5.3/drivers/char/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/char/Makefile 2019-09-20 15:15:10.770623600 -0400 +@@ -4,53 +4,53 @@ + # + + obj-y += mem.o random.o +-obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o ++#obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o + obj-y += misc.o +-obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o ++#obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o + obj-$(CONFIG_VIRTIO_CONSOLE) += virtio_console.o +-obj-$(CONFIG_RAW_DRIVER) += raw.o +-obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o +-obj-$(CONFIG_MSPEC) += mspec.o +-obj-$(CONFIG_UV_MMTIMER) += uv_mmtimer.o +-obj-$(CONFIG_IBM_BSR) += bsr.o +-obj-$(CONFIG_SGI_MBCS) += mbcs.o +- +-obj-$(CONFIG_PRINTER) += lp.o +- +-obj-$(CONFIG_APM_EMULATION) += apm-emulation.o +- +-obj-$(CONFIG_DTLK) += dtlk.o +-obj-$(CONFIG_APPLICOM) += applicom.o +-obj-$(CONFIG_SONYPI) += sonypi.o +-obj-$(CONFIG_RTC) += rtc.o +-obj-$(CONFIG_HPET) += hpet.o +-obj-$(CONFIG_EFI_RTC) += efirtc.o +-obj-$(CONFIG_XILINX_HWICAP) += xilinx_hwicap/ +-obj-$(CONFIG_NVRAM) += nvram.o +-obj-$(CONFIG_TOSHIBA) += toshiba.o +-obj-$(CONFIG_DS1620) += ds1620.o ++#obj-$(CONFIG_RAW_DRIVER) += raw.o ++#obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o ++#obj-$(CONFIG_MSPEC) += mspec.o ++#obj-$(CONFIG_UV_MMTIMER) += uv_mmtimer.o ++#obj-$(CONFIG_IBM_BSR) += bsr.o ++#obj-$(CONFIG_SGI_MBCS) += mbcs.o ++ ++#obj-$(CONFIG_PRINTER) += lp.o ++ ++#obj-$(CONFIG_APM_EMULATION) += apm-emulation.o ++ ++#obj-$(CONFIG_DTLK) += dtlk.o ++#obj-$(CONFIG_APPLICOM) += applicom.o ++#obj-$(CONFIG_SONYPI) += sonypi.o ++#obj-$(CONFIG_RTC) += rtc.o ++#obj-$(CONFIG_HPET) += hpet.o ++#obj-$(CONFIG_EFI_RTC) += efirtc.o ++#obj-$(CONFIG_XILINX_HWICAP) += xilinx_hwicap/ ++#obj-$(CONFIG_NVRAM) += nvram.o ++#obj-$(CONFIG_TOSHIBA) += toshiba.o ++#obj-$(CONFIG_DS1620) += ds1620.o + obj-$(CONFIG_HW_RANDOM) += hw_random/ +-obj-$(CONFIG_PPDEV) += ppdev.o +-obj-$(CONFIG_NWBUTTON) += nwbutton.o +-obj-$(CONFIG_NWFLASH) += nwflash.o +-obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o +-obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o +-obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o +-obj-$(CONFIG_GPIO_TB0219) += tb0219.o +-obj-$(CONFIG_TELCLOCK) += tlclk.o +- +-obj-$(CONFIG_MWAVE) += mwave/ +-obj-y += agp/ +-obj-$(CONFIG_PCMCIA) += pcmcia/ +- +-obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o +-obj-$(CONFIG_TCG_TPM) += tpm/ +- +-obj-$(CONFIG_PS3_FLASH) += ps3flash.o +- +-obj-$(CONFIG_JS_RTC) += js-rtc.o +-js-rtc-y = rtc.o +- +-obj-$(CONFIG_XILLYBUS) += xillybus/ +-obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o +-obj-$(CONFIG_ADI) += adi.o ++#obj-$(CONFIG_PPDEV) += ppdev.o ++#obj-$(CONFIG_NWBUTTON) += nwbutton.o ++#obj-$(CONFIG_NWFLASH) += nwflash.o ++#obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o ++#obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o ++#obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o ++#obj-$(CONFIG_GPIO_TB0219) += tb0219.o ++#obj-$(CONFIG_TELCLOCK) += tlclk.o ++ ++#obj-$(CONFIG_MWAVE) += mwave/ ++#obj-y += agp/ ++#obj-$(CONFIG_PCMCIA) += pcmcia/ ++ ++#obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o ++#obj-$(CONFIG_TCG_TPM) += tpm/ ++ ++#obj-$(CONFIG_PS3_FLASH) += ps3flash.o ++ ++#obj-$(CONFIG_JS_RTC) += js-rtc.o ++#js-rtc-y = rtc.o ++ ++#obj-$(CONFIG_XILLYBUS) += xillybus/ ++#obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o ++#obj-$(CONFIG_ADI) += adi.o +diff -uprN linux-5.3/drivers/char/hw_random/Makefile linux-5.3-bonsai/drivers/char/hw_random/Makefile +--- linux-5.3/drivers/char/hw_random/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/char/hw_random/Makefile 2019-09-20 15:15:10.770623600 -0400 +@@ -5,37 +5,4 @@ + + obj-$(CONFIG_HW_RANDOM) += rng-core.o + rng-core-y := core.o +-obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o +-obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o +-obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o +-obj-$(CONFIG_HW_RANDOM_ATMEL) += atmel-rng.o +-obj-$(CONFIG_HW_RANDOM_GEODE) += geode-rng.o +-obj-$(CONFIG_HW_RANDOM_N2RNG) += n2-rng.o +-n2-rng-y := n2-drv.o n2-asm.o +-obj-$(CONFIG_HW_RANDOM_VIA) += via-rng.o +-obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-trng.o +-obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o +-obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o +-obj-$(CONFIG_HW_RANDOM_OMAP3_ROM) += omap3-rom-rng.o +-obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o + obj-$(CONFIG_HW_RANDOM_VIRTIO) += virtio-rng.o +-obj-$(CONFIG_HW_RANDOM_TX4939) += tx4939-rng.o +-obj-$(CONFIG_HW_RANDOM_MXC_RNGA) += mxc-rnga.o +-obj-$(CONFIG_HW_RANDOM_IMX_RNGC) += imx-rngc.o +-obj-$(CONFIG_HW_RANDOM_OCTEON) += octeon-rng.o +-obj-$(CONFIG_HW_RANDOM_NOMADIK) += nomadik-rng.o +-obj-$(CONFIG_HW_RANDOM_PSERIES) += pseries-rng.o +-obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o +-obj-$(CONFIG_HW_RANDOM_HISI) += hisi-rng.o +-obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o +-obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) += iproc-rng200.o +-obj-$(CONFIG_HW_RANDOM_ST) += st-rng.o +-obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o +-obj-$(CONFIG_HW_RANDOM_STM32) += stm32-rng.o +-obj-$(CONFIG_HW_RANDOM_PIC32) += pic32-rng.o +-obj-$(CONFIG_HW_RANDOM_MESON) += meson-rng.o +-obj-$(CONFIG_HW_RANDOM_CAVIUM) += cavium-rng.o cavium-rng-vf.o +-obj-$(CONFIG_HW_RANDOM_MTK) += mtk-rng.o +-obj-$(CONFIG_HW_RANDOM_S390) += s390-trng.o +-obj-$(CONFIG_HW_RANDOM_KEYSTONE) += ks-sa-rng.o +-obj-$(CONFIG_HW_RANDOM_OPTEE) += optee-rng.o +diff -uprN linux-5.3/drivers/clocksource/Makefile linux-5.3-bonsai/drivers/clocksource/Makefile +--- linux-5.3/drivers/clocksource/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/clocksource/Makefile 2019-09-20 15:15:10.770623600 -0400 +@@ -1,89 +1,2 @@ + # SPDX-License-Identifier: GPL-2.0 +-obj-$(CONFIG_TIMER_OF) += timer-of.o +-obj-$(CONFIG_TIMER_PROBE) += timer-probe.o +-obj-$(CONFIG_ATMEL_PIT) += timer-atmel-pit.o +-obj-$(CONFIG_ATMEL_ST) += timer-atmel-st.o +-obj-$(CONFIG_ATMEL_TCB_CLKSRC) += timer-atmel-tcb.o +-obj-$(CONFIG_X86_PM_TIMER) += acpi_pm.o +-obj-$(CONFIG_SCx200HR_TIMER) += scx200_hrt.o +-obj-$(CONFIG_CS5535_CLOCK_EVENT_SRC) += timer-cs5535.o +-obj-$(CONFIG_CLKSRC_JCORE_PIT) += jcore-pit.o +-obj-$(CONFIG_SH_TIMER_CMT) += sh_cmt.o +-obj-$(CONFIG_SH_TIMER_MTU2) += sh_mtu2.o +-obj-$(CONFIG_RENESAS_OSTM) += renesas-ostm.o +-obj-$(CONFIG_SH_TIMER_TMU) += sh_tmu.o +-obj-$(CONFIG_EM_TIMER_STI) += em_sti.o + obj-$(CONFIG_CLKBLD_I8253) += i8253.o +-obj-$(CONFIG_CLKSRC_MMIO) += mmio.o +-obj-$(CONFIG_DAVINCI_TIMER) += timer-davinci.o +-obj-$(CONFIG_DIGICOLOR_TIMER) += timer-digicolor.o +-obj-$(CONFIG_OMAP_DM_TIMER) += timer-ti-dm.o +-obj-$(CONFIG_DW_APB_TIMER) += dw_apb_timer.o +-obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o +-obj-$(CONFIG_FTTMR010_TIMER) += timer-fttmr010.o +-obj-$(CONFIG_IXP4XX_TIMER) += timer-ixp4xx.o +-obj-$(CONFIG_ROCKCHIP_TIMER) += timer-rockchip.o +-obj-$(CONFIG_CLKSRC_NOMADIK_MTU) += nomadik-mtu.o +-obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o +-obj-$(CONFIG_ARMADA_370_XP_TIMER) += timer-armada-370-xp.o +-obj-$(CONFIG_ORION_TIMER) += timer-orion.o +-obj-$(CONFIG_BCM2835_TIMER) += bcm2835_timer.o +-obj-$(CONFIG_CLPS711X_TIMER) += clps711x-timer.o +-obj-$(CONFIG_ATLAS7_TIMER) += timer-atlas7.o +-obj-$(CONFIG_MXS_TIMER) += mxs_timer.o +-obj-$(CONFIG_CLKSRC_PXA) += timer-pxa.o +-obj-$(CONFIG_PRIMA2_TIMER) += timer-prima2.o +-obj-$(CONFIG_U300_TIMER) += timer-u300.o +-obj-$(CONFIG_SUN4I_TIMER) += timer-sun4i.o +-obj-$(CONFIG_SUN5I_HSTIMER) += timer-sun5i.o +-obj-$(CONFIG_MESON6_TIMER) += timer-meson6.o +-obj-$(CONFIG_TEGRA_TIMER) += timer-tegra.o +-obj-$(CONFIG_VT8500_TIMER) += timer-vt8500.o +-obj-$(CONFIG_NSPIRE_TIMER) += timer-zevio.o +-obj-$(CONFIG_BCM_KONA_TIMER) += bcm_kona_timer.o +-obj-$(CONFIG_CADENCE_TTC_TIMER) += timer-cadence-ttc.o +-obj-$(CONFIG_CLKSRC_EFM32) += timer-efm32.o +-obj-$(CONFIG_CLKSRC_STM32) += timer-stm32.o +-obj-$(CONFIG_CLKSRC_EXYNOS_MCT) += exynos_mct.o +-obj-$(CONFIG_CLKSRC_LPC32XX) += timer-lpc32xx.o +-obj-$(CONFIG_CLKSRC_MPS2) += mps2-timer.o +-obj-$(CONFIG_CLKSRC_SAMSUNG_PWM) += samsung_pwm_timer.o +-obj-$(CONFIG_FSL_FTM_TIMER) += timer-fsl-ftm.o +-obj-$(CONFIG_VF_PIT_TIMER) += timer-vf-pit.o +-obj-$(CONFIG_CLKSRC_QCOM) += timer-qcom.o +-obj-$(CONFIG_MTK_TIMER) += timer-mediatek.o +-obj-$(CONFIG_CLKSRC_PISTACHIO) += timer-pistachio.o +-obj-$(CONFIG_CLKSRC_TI_32K) += timer-ti-32k.o +-obj-$(CONFIG_CLKSRC_NPS) += timer-nps.o +-obj-$(CONFIG_OXNAS_RPS_TIMER) += timer-oxnas-rps.o +-obj-$(CONFIG_OWL_TIMER) += timer-owl.o +-obj-$(CONFIG_MILBEAUT_TIMER) += timer-milbeaut.o +-obj-$(CONFIG_SPRD_TIMER) += timer-sprd.o +-obj-$(CONFIG_NPCM7XX_TIMER) += timer-npcm7xx.o +-obj-$(CONFIG_RDA_TIMER) += timer-rda.o +- +-obj-$(CONFIG_ARC_TIMERS) += arc_timer.o +-obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o +-obj-$(CONFIG_ARM_GLOBAL_TIMER) += arm_global_timer.o +-obj-$(CONFIG_ARMV7M_SYSTICK) += armv7m_systick.o +-obj-$(CONFIG_ARM_TIMER_SP804) += timer-sp804.o +-obj-$(CONFIG_ARCH_HAS_TICK_BROADCAST) += dummy_timer.o +-obj-$(CONFIG_KEYSTONE_TIMER) += timer-keystone.o +-obj-$(CONFIG_INTEGRATOR_AP_TIMER) += timer-integrator-ap.o +-obj-$(CONFIG_CLKSRC_VERSATILE) += timer-versatile.o +-obj-$(CONFIG_CLKSRC_MIPS_GIC) += mips-gic-timer.o +-obj-$(CONFIG_CLKSRC_TANGO_XTAL) += timer-tango-xtal.o +-obj-$(CONFIG_CLKSRC_IMX_GPT) += timer-imx-gpt.o +-obj-$(CONFIG_CLKSRC_IMX_TPM) += timer-imx-tpm.o +-obj-$(CONFIG_TIMER_IMX_SYS_CTR) += timer-imx-sysctr.o +-obj-$(CONFIG_ASM9260_TIMER) += asm9260_timer.o +-obj-$(CONFIG_H8300_TMR8) += h8300_timer8.o +-obj-$(CONFIG_H8300_TMR16) += h8300_timer16.o +-obj-$(CONFIG_H8300_TPU) += h8300_tpu.o +-obj-$(CONFIG_CLKSRC_ST_LPC) += clksrc_st_lpc.o +-obj-$(CONFIG_X86_NUMACHIP) += numachip.o +-obj-$(CONFIG_ATCPIT100_TIMER) += timer-atcpit100.o +-obj-$(CONFIG_RISCV_TIMER) += timer-riscv.o +-obj-$(CONFIG_CSKY_MP_TIMER) += timer-mp-csky.o +-obj-$(CONFIG_GX6605S_TIMER) += timer-gx6605s.o +-obj-$(CONFIG_HYPERV_TIMER) += hyperv_timer.o +diff -uprN linux-5.3/drivers/gpu/Makefile linux-5.3-bonsai/drivers/gpu/Makefile +--- linux-5.3/drivers/gpu/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/gpu/Makefile 2019-09-20 15:15:10.770623600 -0400 +@@ -2,6 +2,4 @@ + # drm/tegra depends on host1x, so if both drivers are built-in care must be + # taken to initialize them in the correct order. Link order is the only way + # to ensure this currently. +-obj-$(CONFIG_TEGRA_HOST1X) += host1x/ +-obj-y += drm/ vga/ +-obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/ ++obj-y += drm/ +diff -uprN linux-5.3/drivers/gpu/drm/Kconfig linux-5.3-bonsai/drivers/gpu/drm/Kconfig +--- linux-5.3/drivers/gpu/drm/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/gpu/drm/Kconfig 2019-09-20 15:15:10.771623600 -0400 +@@ -191,56 +191,6 @@ config DRM_VM + bool + depends on DRM && MMU + +-config DRM_SCHED +- tristate +- depends on DRM +- +-source "drivers/gpu/drm/i2c/Kconfig" +- +-source "drivers/gpu/drm/arm/Kconfig" +- +-config DRM_RADEON +- tristate "ATI Radeon" +- depends on DRM && PCI && MMU +- select FW_LOADER +- select DRM_KMS_HELPER +- select DRM_TTM +- select POWER_SUPPLY +- select HWMON +- select BACKLIGHT_CLASS_DEVICE +- select INTERVAL_TREE +- help +- Choose this option if you have an ATI Radeon graphics card. There +- are both PCI and AGP versions. You don't need to choose this to +- run the Radeon in plain VGA mode. +- +- If M is selected, the module will be called radeon. +- +-source "drivers/gpu/drm/radeon/Kconfig" +- +-config DRM_AMDGPU +- tristate "AMD GPU" +- depends on DRM && PCI && MMU +- select FW_LOADER +- select DRM_KMS_HELPER +- select DRM_SCHED +- select DRM_TTM +- select POWER_SUPPLY +- select HWMON +- select BACKLIGHT_CLASS_DEVICE +- select INTERVAL_TREE +- select CHASH +- help +- Choose this option if you have a recent AMD Radeon graphics card. +- +- If M is selected, the module will be called amdgpu. +- +-source "drivers/gpu/drm/amd/amdgpu/Kconfig" +- +-source "drivers/gpu/drm/nouveau/Kconfig" +- +-source "drivers/gpu/drm/i915/Kconfig" +- + config DRM_VGEM + tristate "Virtual GEM provider" + depends on DRM +@@ -261,183 +211,7 @@ config DRM_VKMS + + If M is selected the module will be called vkms. + +-config DRM_ATI_PCIGART +- bool +- +-source "drivers/gpu/drm/exynos/Kconfig" +- +-source "drivers/gpu/drm/rockchip/Kconfig" +- +-source "drivers/gpu/drm/vmwgfx/Kconfig" +- +-source "drivers/gpu/drm/gma500/Kconfig" +- +-source "drivers/gpu/drm/udl/Kconfig" +- +-source "drivers/gpu/drm/ast/Kconfig" +- +-source "drivers/gpu/drm/mgag200/Kconfig" +- +-source "drivers/gpu/drm/cirrus/Kconfig" +- +-source "drivers/gpu/drm/armada/Kconfig" +- +-source "drivers/gpu/drm/atmel-hlcdc/Kconfig" +- +-source "drivers/gpu/drm/rcar-du/Kconfig" +- +-source "drivers/gpu/drm/shmobile/Kconfig" +- +-source "drivers/gpu/drm/sun4i/Kconfig" +- +-source "drivers/gpu/drm/omapdrm/Kconfig" +- +-source "drivers/gpu/drm/tilcdc/Kconfig" +- +-source "drivers/gpu/drm/qxl/Kconfig" +- +-source "drivers/gpu/drm/bochs/Kconfig" +- +-source "drivers/gpu/drm/virtio/Kconfig" +- +-source "drivers/gpu/drm/msm/Kconfig" +- +-source "drivers/gpu/drm/fsl-dcu/Kconfig" +- +-source "drivers/gpu/drm/tegra/Kconfig" +- +-source "drivers/gpu/drm/stm/Kconfig" +- +-source "drivers/gpu/drm/panel/Kconfig" +- +-source "drivers/gpu/drm/bridge/Kconfig" +- +-source "drivers/gpu/drm/sti/Kconfig" +- +-source "drivers/gpu/drm/imx/Kconfig" +- +-source "drivers/gpu/drm/ingenic/Kconfig" +- +-source "drivers/gpu/drm/v3d/Kconfig" +- +-source "drivers/gpu/drm/vc4/Kconfig" +- +-source "drivers/gpu/drm/etnaviv/Kconfig" +- +-source "drivers/gpu/drm/arc/Kconfig" +- +-source "drivers/gpu/drm/hisilicon/Kconfig" +- +-source "drivers/gpu/drm/mediatek/Kconfig" +- +-source "drivers/gpu/drm/zte/Kconfig" +- +-source "drivers/gpu/drm/mxsfb/Kconfig" +- +-source "drivers/gpu/drm/meson/Kconfig" +- +-source "drivers/gpu/drm/tinydrm/Kconfig" +- +-source "drivers/gpu/drm/pl111/Kconfig" +- +-source "drivers/gpu/drm/tve200/Kconfig" +- +-source "drivers/gpu/drm/xen/Kconfig" +- +-source "drivers/gpu/drm/vboxvideo/Kconfig" +- +-source "drivers/gpu/drm/lima/Kconfig" +- +-source "drivers/gpu/drm/panfrost/Kconfig" +- +-source "drivers/gpu/drm/aspeed/Kconfig" +- +-source "drivers/gpu/drm/mcde/Kconfig" +- +-# Keep legacy drivers last +- +-menuconfig DRM_LEGACY +- bool "Enable legacy drivers (DANGEROUS)" +- depends on DRM && MMU +- select DRM_VM +- select DRM_ATI_PCIGART if PCI +- help +- Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous +- APIs to user-space, which can be used to circumvent access +- restrictions and other security measures. For backwards compatibility +- those drivers are still available, but their use is highly +- inadvisable and might harm your system. +- +- You are recommended to use the safe modeset-only drivers instead, and +- perform 3D emulation in user-space. +- +- Unless you have strong reasons to go rogue, say "N". +- +-if DRM_LEGACY +- +-config DRM_TDFX +- tristate "3dfx Banshee/Voodoo3+" +- depends on DRM && PCI +- help +- Choose this option if you have a 3dfx Banshee or Voodoo3 (or later), +- graphics card. If M is selected, the module will be called tdfx. +- +-config DRM_R128 +- tristate "ATI Rage 128" +- depends on DRM && PCI +- select FW_LOADER +- help +- Choose this option if you have an ATI Rage 128 graphics card. If M +- is selected, the module will be called r128. AGP support for +- this card is strongly suggested (unless you have a PCI version). +- +-config DRM_I810 +- tristate "Intel I810" +- # !PREEMPT because of missing ioctl locking +- depends on DRM && AGP && AGP_INTEL && (!PREEMPTION || BROKEN) +- help +- Choose this option if you have an Intel I810 graphics card. If M is +- selected, the module will be called i810. AGP support is required +- for this driver to work. +- +-config DRM_MGA +- tristate "Matrox g200/g400" +- depends on DRM && PCI +- select FW_LOADER +- help +- Choose this option if you have a Matrox G200, G400 or G450 graphics +- card. If M is selected, the module will be called mga. AGP +- support is required for this driver to work. +- +-config DRM_SIS +- tristate "SiS video cards" +- depends on DRM && AGP +- depends on FB_SIS || FB_SIS=n +- help +- Choose this option if you have a SiS 630 or compatible video +- chipset. If M is selected the module will be called sis. AGP +- support is required for this driver to work. +- +-config DRM_VIA +- tristate "Via unichrome video cards" +- depends on DRM && PCI +- help +- Choose this option if you have a Via unichrome or compatible video +- chipset. If M is selected the module will be called via. +- +-config DRM_SAVAGE +- tristate "Savage video cards" +- depends on DRM && PCI +- help +- Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister +- chipset. If M is selected the module will be called savage. +- +-endif # DRM_LEGACY +- +-# Separate option because drm_panel_orientation_quirks.c is shared with fbdev + config DRM_PANEL_ORIENTATION_QUIRKS + tristate + +-config DRM_LIB_RANDOM +- bool +- default n ++source "drivers/gpu/drm/virtio/Kconfig" +diff -uprN linux-5.3/drivers/gpu/drm/Makefile linux-5.3-bonsai/drivers/gpu/drm/Makefile +--- linux-5.3/drivers/gpu/drm/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/gpu/drm/Makefile 2019-09-20 15:15:10.771623600 -0400 +@@ -19,8 +19,6 @@ drm-y := drm_auth.o drm_cache.o \ + drm_syncobj.o drm_lease.o drm_writeback.o drm_client.o \ + drm_client_modeset.o drm_atomic_uapi.o drm_hdcp.o + +-drm-$(CONFIG_DRM_LEGACY) += drm_legacy_misc.o drm_bufs.o drm_context.o drm_dma.o drm_scatter.o drm_lock.o +-drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o + drm-$(CONFIG_DRM_VM) += drm_vm.o + drm-$(CONFIG_COMPAT) += drm_ioc32.o + drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o +@@ -45,78 +43,16 @@ drm_kms_helper-y := drm_crtc_helper.o dr + drm_atomic_state_helper.o drm_damage_helper.o \ + drm_format_helper.o drm_self_refresh_helper.o + +-drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o + drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o + drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o + drm_kms_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.o + drm_kms_helper-$(CONFIG_DRM_DP_CEC) += drm_dp_cec.o + + obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o +-obj-$(CONFIG_DRM_DEBUG_SELFTEST) += selftests/ + + obj-$(CONFIG_DRM) += drm.o + obj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o + obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o +-obj-y += arm/ + obj-$(CONFIG_DRM_TTM) += ttm/ +-obj-$(CONFIG_DRM_SCHED) += scheduler/ +-obj-$(CONFIG_DRM_TDFX) += tdfx/ +-obj-$(CONFIG_DRM_R128) += r128/ +-obj-$(CONFIG_HSA_AMD) += amd/amdkfd/ +-obj-$(CONFIG_DRM_RADEON)+= radeon/ +-obj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/ +-obj-$(CONFIG_DRM_MGA) += mga/ +-obj-$(CONFIG_DRM_I810) += i810/ +-obj-$(CONFIG_DRM_I915) += i915/ +-obj-$(CONFIG_DRM_MGAG200) += mgag200/ +-obj-$(CONFIG_DRM_V3D) += v3d/ +-obj-$(CONFIG_DRM_VC4) += vc4/ +-obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus/ +-obj-$(CONFIG_DRM_SIS) += sis/ +-obj-$(CONFIG_DRM_SAVAGE)+= savage/ +-obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/ +-obj-$(CONFIG_DRM_VIA) +=via/ + obj-$(CONFIG_DRM_VGEM) += vgem/ +-obj-$(CONFIG_DRM_VKMS) += vkms/ +-obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/ +-obj-$(CONFIG_DRM_EXYNOS) +=exynos/ +-obj-$(CONFIG_DRM_ROCKCHIP) +=rockchip/ +-obj-$(CONFIG_DRM_GMA500) += gma500/ +-obj-$(CONFIG_DRM_UDL) += udl/ +-obj-$(CONFIG_DRM_AST) += ast/ +-obj-$(CONFIG_DRM_ARMADA) += armada/ +-obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/ +-obj-y += rcar-du/ +-obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/ +-obj-y += omapdrm/ +-obj-$(CONFIG_DRM_SUN4I) += sun4i/ +-obj-y += tilcdc/ +-obj-$(CONFIG_DRM_QXL) += qxl/ +-obj-$(CONFIG_DRM_BOCHS) += bochs/ + obj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/ +-obj-$(CONFIG_DRM_MSM) += msm/ +-obj-$(CONFIG_DRM_TEGRA) += tegra/ +-obj-$(CONFIG_DRM_STM) += stm/ +-obj-$(CONFIG_DRM_STI) += sti/ +-obj-$(CONFIG_DRM_IMX) += imx/ +-obj-$(CONFIG_DRM_INGENIC) += ingenic/ +-obj-$(CONFIG_DRM_MEDIATEK) += mediatek/ +-obj-$(CONFIG_DRM_MESON) += meson/ +-obj-y += i2c/ +-obj-y += panel/ +-obj-y += bridge/ +-obj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/ +-obj-$(CONFIG_DRM_ETNAVIV) += etnaviv/ +-obj-$(CONFIG_DRM_ARCPGU)+= arc/ +-obj-y += hisilicon/ +-obj-$(CONFIG_DRM_ZTE) += zte/ +-obj-$(CONFIG_DRM_MXSFB) += mxsfb/ +-obj-$(CONFIG_DRM_TINYDRM) += tinydrm/ +-obj-$(CONFIG_DRM_PL111) += pl111/ +-obj-$(CONFIG_DRM_TVE200) += tve200/ +-obj-$(CONFIG_DRM_XEN) += xen/ +-obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/ +-obj-$(CONFIG_DRM_LIMA) += lima/ +-obj-$(CONFIG_DRM_PANFROST) += panfrost/ +-obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/ +-obj-$(CONFIG_DRM_MCDE) += mcde/ +diff -uprN linux-5.3/drivers/md/Makefile linux-5.3-bonsai/drivers/md/Makefile +--- linux-5.3/drivers/md/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/md/Makefile 2019-09-20 15:15:10.771623600 -0400 +@@ -6,25 +6,8 @@ + dm-mod-y += dm.o dm-table.o dm-target.o dm-linear.o dm-stripe.o \ + dm-ioctl.o dm-io.o dm-kcopyd.o dm-sysfs.o dm-stats.o \ + dm-rq.o +-dm-multipath-y += dm-path-selector.o dm-mpath.o +-dm-snapshot-y += dm-snap.o dm-exception-store.o dm-snap-transient.o \ +- dm-snap-persistent.o +-dm-mirror-y += dm-raid1.o +-dm-log-userspace-y \ +- += dm-log-userspace-base.o dm-log-userspace-transfer.o +-dm-bio-prison-y += dm-bio-prison-v1.o dm-bio-prison-v2.o +-dm-thin-pool-y += dm-thin.o dm-thin-metadata.o +-dm-cache-y += dm-cache-target.o dm-cache-metadata.o dm-cache-policy.o \ +- dm-cache-background-tracker.o +-dm-cache-smq-y += dm-cache-policy-smq.o +-dm-era-y += dm-era-target.o + dm-verity-y += dm-verity-target.o +-md-mod-y += md.o md-bitmap.o +-raid456-y += raid5.o raid5-cache.o raid5-ppl.o +-dm-zoned-y += dm-zoned-target.o dm-zoned-metadata.o dm-zoned-reclaim.o + linear-y += md-linear.o +-multipath-y += md-multipath.o +-faulty-y += md-faulty.o + + # Note: link order is important. All raid personalities + # and must come before md.o, as they each initialise +@@ -32,43 +15,11 @@ faulty-y += md-faulty.o + # auto-initialised. + + obj-$(CONFIG_MD_LINEAR) += linear.o +-obj-$(CONFIG_MD_RAID0) += raid0.o +-obj-$(CONFIG_MD_RAID1) += raid1.o +-obj-$(CONFIG_MD_RAID10) += raid10.o +-obj-$(CONFIG_MD_RAID456) += raid456.o +-obj-$(CONFIG_MD_MULTIPATH) += multipath.o +-obj-$(CONFIG_MD_FAULTY) += faulty.o +-obj-$(CONFIG_MD_CLUSTER) += md-cluster.o +-obj-$(CONFIG_BCACHE) += bcache/ +-obj-$(CONFIG_BLK_DEV_MD) += md-mod.o + obj-$(CONFIG_BLK_DEV_DM) += dm-mod.o + obj-$(CONFIG_BLK_DEV_DM_BUILTIN) += dm-builtin.o +-obj-$(CONFIG_DM_UNSTRIPED) += dm-unstripe.o + obj-$(CONFIG_DM_BUFIO) += dm-bufio.o +-obj-$(CONFIG_DM_BIO_PRISON) += dm-bio-prison.o + obj-$(CONFIG_DM_CRYPT) += dm-crypt.o +-obj-$(CONFIG_DM_DELAY) += dm-delay.o +-obj-$(CONFIG_DM_DUST) += dm-dust.o +-obj-$(CONFIG_DM_FLAKEY) += dm-flakey.o +-obj-$(CONFIG_DM_MULTIPATH) += dm-multipath.o dm-round-robin.o +-obj-$(CONFIG_DM_MULTIPATH_QL) += dm-queue-length.o +-obj-$(CONFIG_DM_MULTIPATH_ST) += dm-service-time.o +-obj-$(CONFIG_DM_SWITCH) += dm-switch.o +-obj-$(CONFIG_DM_SNAPSHOT) += dm-snapshot.o +-obj-$(CONFIG_DM_PERSISTENT_DATA) += persistent-data/ +-obj-$(CONFIG_DM_MIRROR) += dm-mirror.o dm-log.o dm-region-hash.o +-obj-$(CONFIG_DM_LOG_USERSPACE) += dm-log-userspace.o +-obj-$(CONFIG_DM_ZERO) += dm-zero.o +-obj-$(CONFIG_DM_RAID) += dm-raid.o +-obj-$(CONFIG_DM_THIN_PROVISIONING) += dm-thin-pool.o + obj-$(CONFIG_DM_VERITY) += dm-verity.o +-obj-$(CONFIG_DM_CACHE) += dm-cache.o +-obj-$(CONFIG_DM_CACHE_SMQ) += dm-cache-smq.o +-obj-$(CONFIG_DM_ERA) += dm-era.o +-obj-$(CONFIG_DM_LOG_WRITES) += dm-log-writes.o +-obj-$(CONFIG_DM_INTEGRITY) += dm-integrity.o +-obj-$(CONFIG_DM_ZONED) += dm-zoned.o +-obj-$(CONFIG_DM_WRITECACHE) += dm-writecache.o + + ifeq ($(CONFIG_DM_INIT),y) + dm-mod-objs += dm-init.o +@@ -77,7 +28,3 @@ endif + ifeq ($(CONFIG_DM_UEVENT),y) + dm-mod-objs += dm-uevent.o + endif +- +-ifeq ($(CONFIG_DM_VERITY_FEC),y) +-dm-verity-objs += dm-verity-fec.o +-endif +diff -uprN linux-5.3/drivers/net/Makefile linux-5.3-bonsai/drivers/net/Makefile +--- linux-5.3/drivers/net/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/net/Makefile 2019-09-20 15:15:10.772623601 -0400 +@@ -6,76 +6,10 @@ + # + # Networking Core Drivers + # +-obj-$(CONFIG_BONDING) += bonding/ +-obj-$(CONFIG_IPVLAN) += ipvlan/ +-obj-$(CONFIG_IPVTAP) += ipvlan/ +-obj-$(CONFIG_DUMMY) += dummy.o +-obj-$(CONFIG_EQUALIZER) += eql.o +-obj-$(CONFIG_IFB) += ifb.o +-obj-$(CONFIG_MACSEC) += macsec.o +-obj-$(CONFIG_MACVLAN) += macvlan.o +-obj-$(CONFIG_MACVTAP) += macvtap.o +-obj-$(CONFIG_MII) += mii.o +-obj-$(CONFIG_MDIO) += mdio.o +-obj-$(CONFIG_NET) += Space.o loopback.o +-obj-$(CONFIG_NETCONSOLE) += netconsole.o +-obj-y += phy/ +-obj-$(CONFIG_RIONET) += rionet.o +-obj-$(CONFIG_NET_TEAM) += team/ ++#obj-$(CONFIG_NET) += Space.o loopback.o ++obj-$(CONFIG_NET) += loopback.o + obj-$(CONFIG_TUN) += tun.o + obj-$(CONFIG_TAP) += tap.o + obj-$(CONFIG_VETH) += veth.o + obj-$(CONFIG_VIRTIO_NET) += virtio_net.o +-obj-$(CONFIG_VXLAN) += vxlan.o +-obj-$(CONFIG_GENEVE) += geneve.o +-obj-$(CONFIG_GTP) += gtp.o +-obj-$(CONFIG_NLMON) += nlmon.o +-obj-$(CONFIG_NET_VRF) += vrf.o +-obj-$(CONFIG_VSOCKMON) += vsockmon.o +- +-# +-# Networking Drivers +-# +-obj-$(CONFIG_ARCNET) += arcnet/ +-obj-$(CONFIG_DEV_APPLETALK) += appletalk/ +-obj-$(CONFIG_CAIF) += caif/ +-obj-$(CONFIG_CAN) += can/ +-obj-y += dsa/ +-obj-$(CONFIG_ETHERNET) += ethernet/ +-obj-$(CONFIG_FDDI) += fddi/ +-obj-$(CONFIG_HIPPI) += hippi/ +-obj-$(CONFIG_HAMRADIO) += hamradio/ +-obj-$(CONFIG_PLIP) += plip/ +-obj-$(CONFIG_PPP) += ppp/ +-obj-$(CONFIG_PPP_ASYNC) += ppp/ +-obj-$(CONFIG_PPP_BSDCOMP) += ppp/ +-obj-$(CONFIG_PPP_DEFLATE) += ppp/ +-obj-$(CONFIG_PPP_MPPE) += ppp/ +-obj-$(CONFIG_PPP_SYNC_TTY) += ppp/ +-obj-$(CONFIG_PPPOE) += ppp/ +-obj-$(CONFIG_PPPOL2TP) += ppp/ +-obj-$(CONFIG_PPTP) += ppp/ +-obj-$(CONFIG_SLIP) += slip/ +-obj-$(CONFIG_SLHC) += slip/ +-obj-$(CONFIG_NET_SB1000) += sb1000.o +-obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o +-obj-$(CONFIG_WAN) += wan/ +-obj-$(CONFIG_WLAN) += wireless/ +-obj-$(CONFIG_WIMAX) += wimax/ +-obj-$(CONFIG_IEEE802154) += ieee802154/ +- +-obj-$(CONFIG_VMXNET3) += vmxnet3/ +-obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o +-obj-$(CONFIG_XEN_NETDEV_BACKEND) += xen-netback/ +- +-obj-$(CONFIG_USB_NET_DRIVERS) += usb/ +- +-obj-$(CONFIG_HYPERV_NET) += hyperv/ +-obj-$(CONFIG_NTB_NETDEV) += ntb_netdev.o +- +-obj-$(CONFIG_FUJITSU_ES) += fjes/ +- +-thunderbolt-net-y += thunderbolt.o +-obj-$(CONFIG_THUNDERBOLT_NET) += thunderbolt-net.o +-obj-$(CONFIG_NETDEVSIM) += netdevsim/ + obj-$(CONFIG_NET_FAILOVER) += net_failover.o +diff -uprN linux-5.3/drivers/pci/Makefile linux-5.3-bonsai/drivers/pci/Makefile +--- linux-5.3/drivers/pci/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/pci/Makefile 2019-09-20 15:15:10.772623601 -0400 +@@ -13,27 +13,4 @@ obj-$(CONFIG_SYSFS) += slot.o + obj-$(CONFIG_ACPI) += pci-acpi.o + endif + +-obj-$(CONFIG_OF) += of.o +-obj-$(CONFIG_PCI_QUIRKS) += quirks.o +-obj-$(CONFIG_PCIEPORTBUS) += pcie/ +-obj-$(CONFIG_HOTPLUG_PCI) += hotplug/ +-obj-$(CONFIG_PCI_MSI) += msi.o +-obj-$(CONFIG_PCI_ATS) += ats.o +-obj-$(CONFIG_PCI_IOV) += iov.o +-obj-$(CONFIG_PCI_BRIDGE_EMUL) += pci-bridge-emul.o +-obj-$(CONFIG_PCI_LABEL) += pci-label.o +-obj-$(CONFIG_X86_INTEL_MID) += pci-mid.o +-obj-$(CONFIG_PCI_SYSCALL) += syscall.o +-obj-$(CONFIG_PCI_STUB) += pci-stub.o +-obj-$(CONFIG_PCI_PF_STUB) += pci-pf-stub.o +-obj-$(CONFIG_PCI_ECAM) += ecam.o +-obj-$(CONFIG_PCI_P2PDMA) += p2pdma.o +-obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen-pcifront.o + +-# Endpoint library must be initialized before its users +-obj-$(CONFIG_PCI_ENDPOINT) += endpoint/ +- +-obj-y += controller/ +-obj-y += switch/ +- +-ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG +diff -uprN linux-5.3/drivers/rtc/Makefile linux-5.3-bonsai/drivers/rtc/Makefile +--- linux-5.3/drivers/rtc/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/rtc/Makefile 2019-09-20 15:15:10.772623601 -0400 +@@ -7,181 +7,8 @@ ccflags-$(CONFIG_RTC_DEBUG) := -DDEBUG + + obj-$(CONFIG_RTC_LIB) += lib.o + obj-$(CONFIG_RTC_HCTOSYS) += hctosys.o +-obj-$(CONFIG_RTC_SYSTOHC) += systohc.o + obj-$(CONFIG_RTC_CLASS) += rtc-core.o + obj-$(CONFIG_RTC_MC146818_LIB) += rtc-mc146818-lib.o + rtc-core-y := class.o interface.o + +-ifdef CONFIG_RTC_DRV_EFI +-rtc-core-y += rtc-efi-platform.o +-endif +- +-rtc-core-$(CONFIG_RTC_NVMEM) += nvmem.o +-rtc-core-$(CONFIG_RTC_INTF_DEV) += dev.o +-rtc-core-$(CONFIG_RTC_INTF_PROC) += proc.o +-rtc-core-$(CONFIG_RTC_INTF_SYSFS) += sysfs.o +- +-# Keep the list ordered. +- +-obj-$(CONFIG_RTC_DRV_88PM80X) += rtc-88pm80x.o +-obj-$(CONFIG_RTC_DRV_88PM860X) += rtc-88pm860x.o +-obj-$(CONFIG_RTC_DRV_AB3100) += rtc-ab3100.o +-obj-$(CONFIG_RTC_DRV_AB8500) += rtc-ab8500.o +-obj-$(CONFIG_RTC_DRV_ABB5ZES3) += rtc-ab-b5ze-s3.o +-obj-$(CONFIG_RTC_DRV_ABEOZ9) += rtc-ab-eoz9.o +-obj-$(CONFIG_RTC_DRV_ABX80X) += rtc-abx80x.o +-obj-$(CONFIG_RTC_DRV_AC100) += rtc-ac100.o +-obj-$(CONFIG_RTC_DRV_ARMADA38X) += rtc-armada38x.o +-obj-$(CONFIG_RTC_DRV_AS3722) += rtc-as3722.o +-obj-$(CONFIG_RTC_DRV_ASM9260) += rtc-asm9260.o +-obj-$(CONFIG_RTC_DRV_ASPEED) += rtc-aspeed.o +-obj-$(CONFIG_RTC_DRV_AT91RM9200)+= rtc-at91rm9200.o +-obj-$(CONFIG_RTC_DRV_AT91SAM9) += rtc-at91sam9.o +-obj-$(CONFIG_RTC_DRV_AU1XXX) += rtc-au1xxx.o +-obj-$(CONFIG_RTC_DRV_BD70528) += rtc-bd70528.o +-obj-$(CONFIG_RTC_DRV_BQ32K) += rtc-bq32k.o +-obj-$(CONFIG_RTC_DRV_BQ4802) += rtc-bq4802.o +-obj-$(CONFIG_RTC_DRV_BRCMSTB) += rtc-brcmstb-waketimer.o +-obj-$(CONFIG_RTC_DRV_CADENCE) += rtc-cadence.o + obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o +-obj-$(CONFIG_RTC_DRV_COH901331) += rtc-coh901331.o +-obj-$(CONFIG_RTC_DRV_CPCAP) += rtc-cpcap.o +-obj-$(CONFIG_RTC_DRV_CROS_EC) += rtc-cros-ec.o +-obj-$(CONFIG_RTC_DRV_DA9052) += rtc-da9052.o +-obj-$(CONFIG_RTC_DRV_DA9055) += rtc-da9055.o +-obj-$(CONFIG_RTC_DRV_DA9063) += rtc-da9063.o +-obj-$(CONFIG_RTC_DRV_DAVINCI) += rtc-davinci.o +-obj-$(CONFIG_RTC_DRV_DIGICOLOR) += rtc-digicolor.o +-obj-$(CONFIG_RTC_DRV_DM355EVM) += rtc-dm355evm.o +-obj-$(CONFIG_RTC_DRV_DS1216) += rtc-ds1216.o +-obj-$(CONFIG_RTC_DRV_DS1286) += rtc-ds1286.o +-obj-$(CONFIG_RTC_DRV_DS1302) += rtc-ds1302.o +-obj-$(CONFIG_RTC_DRV_DS1305) += rtc-ds1305.o +-obj-$(CONFIG_RTC_DRV_DS1307) += rtc-ds1307.o +-obj-$(CONFIG_RTC_DRV_DS1343) += rtc-ds1343.o +-obj-$(CONFIG_RTC_DRV_DS1347) += rtc-ds1347.o +-obj-$(CONFIG_RTC_DRV_DS1374) += rtc-ds1374.o +-obj-$(CONFIG_RTC_DRV_DS1390) += rtc-ds1390.o +-obj-$(CONFIG_RTC_DRV_DS1511) += rtc-ds1511.o +-obj-$(CONFIG_RTC_DRV_DS1553) += rtc-ds1553.o +-obj-$(CONFIG_RTC_DRV_DS1672) += rtc-ds1672.o +-obj-$(CONFIG_RTC_DRV_DS1685_FAMILY) += rtc-ds1685.o +-obj-$(CONFIG_RTC_DRV_DS1742) += rtc-ds1742.o +-obj-$(CONFIG_RTC_DRV_DS2404) += rtc-ds2404.o +-obj-$(CONFIG_RTC_DRV_DS3232) += rtc-ds3232.o +-obj-$(CONFIG_RTC_DRV_EFI) += rtc-efi.o +-obj-$(CONFIG_RTC_DRV_EM3027) += rtc-em3027.o +-obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o +-obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o +-obj-$(CONFIG_RTC_DRV_FTRTC010) += rtc-ftrtc010.o +-obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o +-obj-$(CONFIG_RTC_DRV_GOLDFISH) += rtc-goldfish.o +-obj-$(CONFIG_RTC_DRV_HID_SENSOR_TIME) += rtc-hid-sensor-time.o +-obj-$(CONFIG_RTC_DRV_HYM8563) += rtc-hym8563.o +-obj-$(CONFIG_RTC_DRV_IMXDI) += rtc-imxdi.o +-obj-$(CONFIG_RTC_DRV_IMX_SC) += rtc-imx-sc.o +-obj-$(CONFIG_RTC_DRV_ISL12022) += rtc-isl12022.o +-obj-$(CONFIG_RTC_DRV_ISL12026) += rtc-isl12026.o +-obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o +-obj-$(CONFIG_RTC_DRV_JZ4740) += rtc-jz4740.o +-obj-$(CONFIG_RTC_DRV_LOONGSON1) += rtc-ls1x.o +-obj-$(CONFIG_RTC_DRV_LP8788) += rtc-lp8788.o +-obj-$(CONFIG_RTC_DRV_LPC24XX) += rtc-lpc24xx.o +-obj-$(CONFIG_RTC_DRV_LPC32XX) += rtc-lpc32xx.o +-obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o +-obj-$(CONFIG_RTC_DRV_M41T93) += rtc-m41t93.o +-obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o +-obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o +-obj-$(CONFIG_RTC_DRV_M48T59) += rtc-m48t59.o +-obj-$(CONFIG_RTC_DRV_M48T86) += rtc-m48t86.o +-obj-$(CONFIG_RTC_DRV_MAX6900) += rtc-max6900.o +-obj-$(CONFIG_RTC_DRV_MAX6902) += rtc-max6902.o +-obj-$(CONFIG_RTC_DRV_MAX6916) += rtc-max6916.o +-obj-$(CONFIG_RTC_DRV_MAX77686) += rtc-max77686.o +-obj-$(CONFIG_RTC_DRV_MAX8907) += rtc-max8907.o +-obj-$(CONFIG_RTC_DRV_MAX8925) += rtc-max8925.o +-obj-$(CONFIG_RTC_DRV_MAX8997) += rtc-max8997.o +-obj-$(CONFIG_RTC_DRV_MAX8998) += rtc-max8998.o +-obj-$(CONFIG_RTC_DRV_MC13XXX) += rtc-mc13xxx.o +-obj-$(CONFIG_RTC_DRV_MCP795) += rtc-mcp795.o +-obj-$(CONFIG_RTC_DRV_MESON) += rtc-meson.o +-obj-$(CONFIG_RTC_DRV_MOXART) += rtc-moxart.o +-obj-$(CONFIG_RTC_DRV_MPC5121) += rtc-mpc5121.o +-obj-$(CONFIG_RTC_DRV_MSM6242) += rtc-msm6242.o +-obj-$(CONFIG_RTC_DRV_MT6397) += rtc-mt6397.o +-obj-$(CONFIG_RTC_DRV_MT7622) += rtc-mt7622.o +-obj-$(CONFIG_RTC_DRV_MV) += rtc-mv.o +-obj-$(CONFIG_RTC_DRV_MXC) += rtc-mxc.o +-obj-$(CONFIG_RTC_DRV_MXC_V2) += rtc-mxc_v2.o +-obj-$(CONFIG_RTC_DRV_NUC900) += rtc-nuc900.o +-obj-$(CONFIG_RTC_DRV_OMAP) += rtc-omap.o +-obj-$(CONFIG_RTC_DRV_OPAL) += rtc-opal.o +-obj-$(CONFIG_RTC_DRV_PALMAS) += rtc-palmas.o +-obj-$(CONFIG_RTC_DRV_PCAP) += rtc-pcap.o +-obj-$(CONFIG_RTC_DRV_PCF2123) += rtc-pcf2123.o +-obj-$(CONFIG_RTC_DRV_PCF2127) += rtc-pcf2127.o +-obj-$(CONFIG_RTC_DRV_PCF50633) += rtc-pcf50633.o +-obj-$(CONFIG_RTC_DRV_PCF85063) += rtc-pcf85063.o +-obj-$(CONFIG_RTC_DRV_PCF8523) += rtc-pcf8523.o +-obj-$(CONFIG_RTC_DRV_PCF85363) += rtc-pcf85363.o +-obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o +-obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o +-obj-$(CONFIG_RTC_DRV_PIC32) += rtc-pic32.o +-obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030.o +-obj-$(CONFIG_RTC_DRV_PL031) += rtc-pl031.o +-obj-$(CONFIG_RTC_DRV_PM8XXX) += rtc-pm8xxx.o +-obj-$(CONFIG_RTC_DRV_PS3) += rtc-ps3.o +-obj-$(CONFIG_RTC_DRV_PUV3) += rtc-puv3.o +-obj-$(CONFIG_RTC_DRV_PXA) += rtc-pxa.o +-obj-$(CONFIG_RTC_DRV_R7301) += rtc-r7301.o +-obj-$(CONFIG_RTC_DRV_R9701) += rtc-r9701.o +-obj-$(CONFIG_RTC_DRV_RC5T583) += rtc-rc5t583.o +-obj-$(CONFIG_RTC_DRV_RK808) += rtc-rk808.o +-obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c01.o +-obj-$(CONFIG_RTC_DRV_RS5C313) += rtc-rs5c313.o +-obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o +-obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o +-obj-$(CONFIG_RTC_DRV_RTD119X) += rtc-rtd119x.o +-obj-$(CONFIG_RTC_DRV_RV3028) += rtc-rv3028.o +-obj-$(CONFIG_RTC_DRV_RV3029C2) += rtc-rv3029c2.o +-obj-$(CONFIG_RTC_DRV_RV8803) += rtc-rv8803.o +-obj-$(CONFIG_RTC_DRV_RX4581) += rtc-rx4581.o +-obj-$(CONFIG_RTC_DRV_RX6110) += rtc-rx6110.o +-obj-$(CONFIG_RTC_DRV_RX8010) += rtc-rx8010.o +-obj-$(CONFIG_RTC_DRV_RX8025) += rtc-rx8025.o +-obj-$(CONFIG_RTC_DRV_RX8581) += rtc-rx8581.o +-obj-$(CONFIG_RTC_DRV_S35390A) += rtc-s35390a.o +-obj-$(CONFIG_RTC_DRV_S3C) += rtc-s3c.o +-obj-$(CONFIG_RTC_DRV_S5M) += rtc-s5m.o +-obj-$(CONFIG_RTC_DRV_SA1100) += rtc-sa1100.o +-obj-$(CONFIG_RTC_DRV_SC27XX) += rtc-sc27xx.o +-obj-$(CONFIG_RTC_DRV_SD3078) += rtc-sd3078.o +-obj-$(CONFIG_RTC_DRV_SH) += rtc-sh.o +-obj-$(CONFIG_RTC_DRV_SIRFSOC) += rtc-sirfsoc.o +-obj-$(CONFIG_RTC_DRV_SNVS) += rtc-snvs.o +-obj-$(CONFIG_RTC_DRV_SPEAR) += rtc-spear.o +-obj-$(CONFIG_RTC_DRV_STARFIRE) += rtc-starfire.o +-obj-$(CONFIG_RTC_DRV_STK17TA8) += rtc-stk17ta8.o +-obj-$(CONFIG_RTC_DRV_ST_LPC) += rtc-st-lpc.o +-obj-$(CONFIG_RTC_DRV_STM32) += rtc-stm32.o +-obj-$(CONFIG_RTC_DRV_STMP) += rtc-stmp3xxx.o +-obj-$(CONFIG_RTC_DRV_SUN4V) += rtc-sun4v.o +-obj-$(CONFIG_RTC_DRV_SUN6I) += rtc-sun6i.o +-obj-$(CONFIG_RTC_DRV_SUNXI) += rtc-sunxi.o +-obj-$(CONFIG_RTC_DRV_TEGRA) += rtc-tegra.o +-obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o +-obj-$(CONFIG_RTC_DRV_TPS6586X) += rtc-tps6586x.o +-obj-$(CONFIG_RTC_DRV_TPS65910) += rtc-tps65910.o +-obj-$(CONFIG_RTC_DRV_TPS80031) += rtc-tps80031.o +-obj-$(CONFIG_RTC_DRV_TWL4030) += rtc-twl.o +-obj-$(CONFIG_RTC_DRV_TX4939) += rtc-tx4939.o +-obj-$(CONFIG_RTC_DRV_V3020) += rtc-v3020.o +-obj-$(CONFIG_RTC_DRV_VR41XX) += rtc-vr41xx.o +-obj-$(CONFIG_RTC_DRV_VRTC) += rtc-mrst.o +-obj-$(CONFIG_RTC_DRV_VT8500) += rtc-vt8500.o +-obj-$(CONFIG_RTC_DRV_WILCO_EC) += rtc-wilco-ec.o +-obj-$(CONFIG_RTC_DRV_WM831X) += rtc-wm831x.o +-obj-$(CONFIG_RTC_DRV_WM8350) += rtc-wm8350.o +-obj-$(CONFIG_RTC_DRV_X1205) += rtc-x1205.o +-obj-$(CONFIG_RTC_DRV_XGENE) += rtc-xgene.o +-obj-$(CONFIG_RTC_DRV_ZYNQMP) += rtc-zynqmp.o +diff -uprN linux-5.3/drivers/tty/Makefile linux-5.3-bonsai/drivers/tty/Makefile +--- linux-5.3/drivers/tty/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/drivers/tty/Makefile 2019-09-20 15:15:10.773623601 -0400 +@@ -13,10 +13,10 @@ obj-$(CONFIG_TRACE_ROUTER) += n_tracerou + obj-$(CONFIG_TRACE_SINK) += n_tracesink.o + obj-$(CONFIG_R3964) += n_r3964.o + +-obj-y += vt/ ++#obj-y += vt/ + obj-$(CONFIG_HVC_DRIVER) += hvc/ +-obj-y += serial/ +-obj-$(CONFIG_SERIAL_DEV_BUS) += serdev/ ++#obj-y += serial/ ++#obj-$(CONFIG_SERIAL_DEV_BUS) += serdev/ + + # tty drivers + obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o +@@ -35,4 +35,4 @@ obj-$(CONFIG_GOLDFISH_TTY) += goldfish.o + obj-$(CONFIG_MIPS_EJTAG_FDC_TTY) += mips_ejtag_fdc.o + obj-$(CONFIG_VCC) += vcc.o + +-obj-y += ipwireless/ ++#obj-y += ipwireless/ +diff -uprN linux-5.3/fs/Kconfig linux-5.3-bonsai/fs/Kconfig +--- linux-5.3/fs/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/fs/Kconfig 2019-09-20 15:15:10.773623601 -0400 +@@ -31,16 +31,6 @@ config FS_MBCACHE + default y if EXT4_FS=y + default m if EXT2_FS_XATTR || EXT4_FS + +-source "fs/reiserfs/Kconfig" +-source "fs/jfs/Kconfig" +- +-source "fs/xfs/Kconfig" +-source "fs/gfs2/Kconfig" +-source "fs/ocfs2/Kconfig" +-source "fs/btrfs/Kconfig" +-source "fs/nilfs2/Kconfig" +-source "fs/f2fs/Kconfig" +- + config FS_DAX + bool "Direct Access (DAX) support" + depends on MMU +@@ -110,12 +100,8 @@ config MANDATORY_FILE_LOCKING + + To the best of my knowledge this is dead code that no one cares about. + +-source "fs/crypto/Kconfig" +- + source "fs/notify/Kconfig" + +-source "fs/quota/Kconfig" +- + source "fs/autofs/Kconfig" + source "fs/fuse/Kconfig" + source "fs/overlayfs/Kconfig" +@@ -123,24 +109,13 @@ source "fs/overlayfs/Kconfig" + menu "Caches" + + source "fs/fscache/Kconfig" +-source "fs/cachefiles/Kconfig" +- +-endmenu +- +-if BLOCK +-menu "CD-ROM/DVD Filesystems" +- +-source "fs/isofs/Kconfig" +-source "fs/udf/Kconfig" + + endmenu +-endif # BLOCK + + if BLOCK + menu "DOS/FAT/NT Filesystems" + + source "fs/fat/Kconfig" +-source "fs/ntfs/Kconfig" + + endmenu + endif # BLOCK +@@ -218,52 +193,9 @@ config ARCH_HAS_GIGANTIC_PAGE + bool + + source "fs/configfs/Kconfig" +-source "fs/efivarfs/Kconfig" + + endmenu + +-menuconfig MISC_FILESYSTEMS +- bool "Miscellaneous filesystems" +- default y +- ---help--- +- Say Y here to get to see options for various miscellaneous +- filesystems, such as filesystems that came from other +- operating systems. +- +- This option alone does not add any kernel code. +- +- If you say N, all options in this submenu will be skipped and +- disabled; if unsure, say Y here. +- +-if MISC_FILESYSTEMS +- +-source "fs/orangefs/Kconfig" +-source "fs/adfs/Kconfig" +-source "fs/affs/Kconfig" +-source "fs/ecryptfs/Kconfig" +-source "fs/hfs/Kconfig" +-source "fs/hfsplus/Kconfig" +-source "fs/befs/Kconfig" +-source "fs/bfs/Kconfig" +-source "fs/efs/Kconfig" +-source "fs/jffs2/Kconfig" +-# UBIFS File system configuration +-source "fs/ubifs/Kconfig" +-source "fs/cramfs/Kconfig" +-source "fs/squashfs/Kconfig" +-source "fs/freevxfs/Kconfig" +-source "fs/minix/Kconfig" +-source "fs/omfs/Kconfig" +-source "fs/hpfs/Kconfig" +-source "fs/qnx4/Kconfig" +-source "fs/qnx6/Kconfig" +-source "fs/romfs/Kconfig" +-source "fs/pstore/Kconfig" +-source "fs/sysv/Kconfig" +-source "fs/ufs/Kconfig" +- +-endif # MISC_FILESYSTEMS +- + menuconfig NETWORK_FILESYSTEMS + bool "Network File Systems" + default y +@@ -280,43 +212,10 @@ menuconfig NETWORK_FILESYSTEMS + + if NETWORK_FILESYSTEMS + +-source "fs/nfs/Kconfig" +-source "fs/nfsd/Kconfig" +- +-config GRACE_PERIOD +- tristate +- +-config LOCKD +- tristate +- depends on FILE_LOCKING +- select GRACE_PERIOD +- +-config LOCKD_V4 +- bool +- depends on NFSD_V3 || NFS_V3 +- depends on FILE_LOCKING +- default y +- +-config NFS_ACL_SUPPORT +- tristate +- select FS_POSIX_ACL +- +-config NFS_COMMON +- bool +- depends on NFSD || NFS_FS || LOCKD +- default y +- +-source "net/sunrpc/Kconfig" +-source "fs/ceph/Kconfig" +-source "fs/cifs/Kconfig" +-source "fs/coda/Kconfig" +-source "fs/afs/Kconfig" + source "fs/9p/Kconfig" + + endif # NETWORK_FILESYSTEMS + + source "fs/nls/Kconfig" +-source "fs/dlm/Kconfig" +-source "fs/unicode/Kconfig" + + endmenu +diff -uprN linux-5.3/fs/Makefile linux-5.3-bonsai/fs/Makefile +--- linux-5.3/fs/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/fs/Makefile 2019-09-20 15:15:10.773623601 -0400 +@@ -33,10 +33,8 @@ obj-$(CONFIG_USERFAULTFD) += userfaultfd + obj-$(CONFIG_AIO) += aio.o + obj-$(CONFIG_IO_URING) += io_uring.o + obj-$(CONFIG_FS_DAX) += dax.o +-obj-$(CONFIG_FS_ENCRYPTION) += crypto/ + obj-$(CONFIG_FILE_LOCKING) += locks.o + obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o +-obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o + obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o + obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o + obj-$(CONFIG_BINFMT_SCRIPT) += binfmt_script.o +@@ -47,14 +45,12 @@ obj-$(CONFIG_BINFMT_FLAT) += binfmt_flat + + obj-$(CONFIG_FS_MBCACHE) += mbcache.o + obj-$(CONFIG_FS_POSIX_ACL) += posix_acl.o +-obj-$(CONFIG_NFS_COMMON) += nfs_common/ + obj-$(CONFIG_COREDUMP) += coredump.o + obj-$(CONFIG_SYSCTL) += drop_caches.o + + obj-$(CONFIG_FHANDLE) += fhandle.o + obj-y += iomap/ + +-obj-y += quota/ + + obj-$(CONFIG_PROC_FS) += proc/ + obj-$(CONFIG_KERNFS) += kernfs/ +@@ -63,70 +59,21 @@ obj-$(CONFIG_CONFIGFS_FS) += configfs/ + obj-y += devpts/ + + obj-$(CONFIG_PROFILING) += dcookies.o +-obj-$(CONFIG_DLM) += dlm/ + + # Do not add any filesystems before this line + obj-$(CONFIG_FSCACHE) += fscache/ +-obj-$(CONFIG_REISERFS_FS) += reiserfs/ + obj-$(CONFIG_EXT4_FS) += ext4/ + # We place ext4 before ext2 so that clean ext3 root fs's do NOT mount using the + # ext2 driver, which doesn't know about journalling! Explicitly request ext2 + # by giving the rootfstype= parameter. + obj-$(CONFIG_EXT2_FS) += ext2/ + obj-$(CONFIG_JBD2) += jbd2/ +-obj-$(CONFIG_CRAMFS) += cramfs/ +-obj-$(CONFIG_SQUASHFS) += squashfs/ + obj-y += ramfs/ + obj-$(CONFIG_HUGETLBFS) += hugetlbfs/ +-obj-$(CONFIG_CODA_FS) += coda/ +-obj-$(CONFIG_MINIX_FS) += minix/ + obj-$(CONFIG_FAT_FS) += fat/ +-obj-$(CONFIG_BFS_FS) += bfs/ +-obj-$(CONFIG_ISO9660_FS) += isofs/ +-obj-$(CONFIG_HFSPLUS_FS) += hfsplus/ # Before hfs to find wrapped HFS+ +-obj-$(CONFIG_HFS_FS) += hfs/ +-obj-$(CONFIG_ECRYPT_FS) += ecryptfs/ +-obj-$(CONFIG_VXFS_FS) += freevxfs/ +-obj-$(CONFIG_NFS_FS) += nfs/ + obj-$(CONFIG_EXPORTFS) += exportfs/ +-obj-$(CONFIG_NFSD) += nfsd/ +-obj-$(CONFIG_LOCKD) += lockd/ + obj-$(CONFIG_NLS) += nls/ +-obj-$(CONFIG_UNICODE) += unicode/ +-obj-$(CONFIG_SYSV_FS) += sysv/ +-obj-$(CONFIG_CIFS) += cifs/ +-obj-$(CONFIG_HPFS_FS) += hpfs/ +-obj-$(CONFIG_NTFS_FS) += ntfs/ +-obj-$(CONFIG_UFS_FS) += ufs/ +-obj-$(CONFIG_EFS_FS) += efs/ +-obj-$(CONFIG_JFFS2_FS) += jffs2/ +-obj-$(CONFIG_UBIFS_FS) += ubifs/ +-obj-$(CONFIG_AFFS_FS) += affs/ +-obj-$(CONFIG_ROMFS_FS) += romfs/ +-obj-$(CONFIG_QNX4FS_FS) += qnx4/ +-obj-$(CONFIG_QNX6FS_FS) += qnx6/ + obj-$(CONFIG_AUTOFS_FS) += autofs/ +-obj-$(CONFIG_ADFS_FS) += adfs/ + obj-$(CONFIG_FUSE_FS) += fuse/ + obj-$(CONFIG_OVERLAY_FS) += overlayfs/ +-obj-$(CONFIG_ORANGEFS_FS) += orangefs/ +-obj-$(CONFIG_UDF_FS) += udf/ +-obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/ +-obj-$(CONFIG_OMFS_FS) += omfs/ +-obj-$(CONFIG_JFS_FS) += jfs/ +-obj-$(CONFIG_XFS_FS) += xfs/ + obj-$(CONFIG_9P_FS) += 9p/ +-obj-$(CONFIG_AFS_FS) += afs/ +-obj-$(CONFIG_NILFS2_FS) += nilfs2/ +-obj-$(CONFIG_BEFS_FS) += befs/ +-obj-$(CONFIG_HOSTFS) += hostfs/ +-obj-$(CONFIG_CACHEFILES) += cachefiles/ +-obj-$(CONFIG_DEBUG_FS) += debugfs/ +-obj-$(CONFIG_TRACING) += tracefs/ +-obj-$(CONFIG_OCFS2_FS) += ocfs2/ +-obj-$(CONFIG_BTRFS_FS) += btrfs/ +-obj-$(CONFIG_GFS2_FS) += gfs2/ +-obj-$(CONFIG_F2FS_FS) += f2fs/ +-obj-$(CONFIG_CEPH_FS) += ceph/ +-obj-$(CONFIG_PSTORE) += pstore/ +-obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +diff -uprN linux-5.3/kernel/sysctl_binary.c linux-5.3-bonsai/kernel/sysctl_binary.c +--- linux-5.3/kernel/sysctl_binary.c 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/kernel/sysctl_binary.c 2019-09-20 15:15:10.773623601 -0400 +@@ -1,7 +1,6 @@ + // SPDX-License-Identifier: GPL-2.0 + #include + #include +-#include "../fs/xfs/xfs_sysctl.h" + #include + #include + #include +@@ -744,26 +743,6 @@ static const struct bin_table bin_fs_quo + {} + }; + +-static const struct bin_table bin_fs_xfs_table[] = { +- { CTL_INT, XFS_SGID_INHERIT, "irix_sgid_inherit" }, +- { CTL_INT, XFS_SYMLINK_MODE, "irix_symlink_mode" }, +- { CTL_INT, XFS_PANIC_MASK, "panic_mask" }, +- +- { CTL_INT, XFS_ERRLEVEL, "error_level" }, +- { CTL_INT, XFS_SYNCD_TIMER, "xfssyncd_centisecs" }, +- { CTL_INT, XFS_INHERIT_SYNC, "inherit_sync" }, +- { CTL_INT, XFS_INHERIT_NODUMP, "inherit_nodump" }, +- { CTL_INT, XFS_INHERIT_NOATIME, "inherit_noatime" }, +- { CTL_INT, XFS_BUF_TIMER, "xfsbufd_centisecs" }, +- { CTL_INT, XFS_BUF_AGE, "age_buffer_centisecs" }, +- { CTL_INT, XFS_INHERIT_NOSYM, "inherit_nosymlinks" }, +- { CTL_INT, XFS_ROTORSTEP, "rotorstep" }, +- { CTL_INT, XFS_INHERIT_NODFRG, "inherit_nodefrag" }, +- { CTL_INT, XFS_FILESTREAM_TIMER, "filestream_centisecs" }, +- { CTL_INT, XFS_STATS_CLEAR, "stats_clear" }, +- {} +-}; +- + static const struct bin_table bin_fs_ocfs2_nm_table[] = { + { CTL_STR, 1, "hb_ctl_path" }, + {} +@@ -798,7 +777,6 @@ static const struct bin_table bin_fs_tab + { CTL_INT, FS_DIR_NOTIFY, "dir-notify-enable" }, + { CTL_INT, FS_LEASE_TIME, "lease-break-time" }, + { CTL_DIR, FS_DQSTATS, "quota", bin_fs_quota_table }, +- { CTL_DIR, FS_XFS, "xfs", bin_fs_xfs_table }, + { CTL_ULONG, FS_AIO_NR, "aio-nr" }, + { CTL_ULONG, FS_AIO_MAX_NR, "aio-max-nr" }, + { CTL_DIR, FS_INOTIFY, "inotify", bin_inotify_table }, +diff -uprN linux-5.3/net/Kconfig linux-5.3-bonsai/net/Kconfig +--- linux-5.3/net/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/net/Kconfig 2019-09-20 15:15:10.774623601 -0400 +@@ -59,11 +59,6 @@ menu "Networking options" + + source "net/packet/Kconfig" + source "net/unix/Kconfig" +-source "net/tls/Kconfig" +-source "net/xfrm/Kconfig" +-source "net/iucv/Kconfig" +-source "net/smc/Kconfig" +-source "net/xdp/Kconfig" + + config INET + bool "TCP/IP networking" +@@ -90,7 +85,7 @@ config INET + if INET + source "net/ipv4/Kconfig" + source "net/ipv6/Kconfig" +-source "net/netlabel/Kconfig" ++#source "net/netlabel/Kconfig" + + endif # if INET + +@@ -114,132 +109,10 @@ config NETWORK_PHY_TIMESTAMPING + + If you are unsure how to answer this question, answer N. + +-menuconfig NETFILTER +- bool "Network packet filtering framework (Netfilter)" +- ---help--- +- Netfilter is a framework for filtering and mangling network packets +- that pass through your Linux box. + +- The most common use of packet filtering is to run your Linux box as +- a firewall protecting a local network from the Internet. The type of +- firewall provided by this kernel support is called a "packet +- filter", which means that it can reject individual network packets +- based on type, source, destination etc. The other kind of firewall, +- a "proxy-based" one, is more secure but more intrusive and more +- bothersome to set up; it inspects the network traffic much more +- closely, modifies it and has knowledge about the higher level +- protocols, which a packet filter lacks. Moreover, proxy-based +- firewalls often require changes to the programs running on the local +- clients. Proxy-based firewalls don't need support by the kernel, but +- they are often combined with a packet filter, which only works if +- you say Y here. +- +- You should also say Y here if you intend to use your Linux box as +- the gateway to the Internet for a local network of machines without +- globally valid IP addresses. This is called "masquerading": if one +- of the computers on your local network wants to send something to +- the outside, your box can "masquerade" as that computer, i.e. it +- forwards the traffic to the intended outside destination, but +- modifies the packets to make it look like they came from the +- firewall box itself. It works both ways: if the outside host +- replies, the Linux box will silently forward the traffic to the +- correct local computer. This way, the computers on your local net +- are completely invisible to the outside world, even though they can +- reach the outside and can receive replies. It is even possible to +- run globally visible servers from within a masqueraded local network +- using a mechanism called portforwarding. Masquerading is also often +- called NAT (Network Address Translation). +- +- Another use of Netfilter is in transparent proxying: if a machine on +- the local network tries to connect to an outside host, your Linux +- box can transparently forward the traffic to a local server, +- typically a caching proxy server. +- +- Yet another use of Netfilter is building a bridging firewall. Using +- a bridge with Network packet filtering enabled makes iptables "see" +- the bridged traffic. For filtering on the lower network and Ethernet +- protocols over the bridge, use ebtables (under bridge netfilter +- configuration). +- +- Various modules exist for netfilter which replace the previous +- masquerading (ipmasqadm), packet filtering (ipchains), transparent +- proxying, and portforwarding mechanisms. Please see +- under "iptables" for the location of +- these packages. +- +-if NETFILTER +- +-config NETFILTER_ADVANCED +- bool "Advanced netfilter configuration" +- depends on NETFILTER +- default y +- help +- If you say Y here you can select between all the netfilter modules. +- If you say N the more unusual ones will not be shown and the +- basic ones needed by most people will default to 'M'. +- +- If unsure, say Y. +- +-config BRIDGE_NETFILTER +- tristate "Bridged IP/ARP packets filtering" +- depends on BRIDGE +- depends on NETFILTER && INET +- depends on NETFILTER_ADVANCED +- select NETFILTER_FAMILY_BRIDGE +- select SKB_EXTENSIONS +- default m +- ---help--- +- Enabling this option will let arptables resp. iptables see bridged +- ARP resp. IP traffic. If you want a bridging firewall, you probably +- want this option enabled. +- Enabling or disabling this option doesn't enable or disable +- ebtables. +- +- If unsure, say N. +- +-source "net/netfilter/Kconfig" +-source "net/ipv4/netfilter/Kconfig" +-source "net/ipv6/netfilter/Kconfig" +-source "net/decnet/netfilter/Kconfig" +-source "net/bridge/netfilter/Kconfig" +- +-endif +- +-source "net/bpfilter/Kconfig" +- +-source "net/dccp/Kconfig" +-source "net/sctp/Kconfig" +-source "net/rds/Kconfig" +-source "net/tipc/Kconfig" +-source "net/atm/Kconfig" +-source "net/l2tp/Kconfig" +-source "net/802/Kconfig" +-source "net/bridge/Kconfig" +-source "net/dsa/Kconfig" +-source "net/8021q/Kconfig" +-source "net/decnet/Kconfig" +-source "net/llc/Kconfig" +-source "drivers/net/appletalk/Kconfig" +-source "net/x25/Kconfig" +-source "net/lapb/Kconfig" +-source "net/phonet/Kconfig" +-source "net/6lowpan/Kconfig" +-source "net/ieee802154/Kconfig" +-source "net/mac802154/Kconfig" + source "net/sched/Kconfig" +-source "net/dcb/Kconfig" +-source "net/dns_resolver/Kconfig" +-source "net/batman-adv/Kconfig" +-source "net/openvswitch/Kconfig" + source "net/vmw_vsock/Kconfig" + source "net/netlink/Kconfig" +-source "net/mpls/Kconfig" +-source "net/nsh/Kconfig" +-source "net/hsr/Kconfig" +-source "net/switchdev/Kconfig" +-source "net/l3mdev/Kconfig" +-source "net/qrtr/Kconfig" +-source "net/ncsi/Kconfig" + + config RPS + bool +@@ -360,37 +233,11 @@ endmenu + + endmenu + +-source "net/ax25/Kconfig" +-source "net/can/Kconfig" +-source "net/bluetooth/Kconfig" +-source "net/rxrpc/Kconfig" +-source "net/kcm/Kconfig" +-source "net/strparser/Kconfig" +- + config FIB_RULES + bool + +-menuconfig WIRELESS +- bool "Wireless" +- depends on !S390 +- default y +- +-if WIRELESS +- +-source "net/wireless/Kconfig" +-source "net/mac80211/Kconfig" +- +-endif # WIRELESS +- +-source "net/wimax/Kconfig" + +-source "net/rfkill/Kconfig" + source "net/9p/Kconfig" +-source "net/caif/Kconfig" +-source "net/ceph/Kconfig" +-source "net/nfc/Kconfig" +-source "net/psample/Kconfig" +-source "net/ife/Kconfig" + + config LWTUNNEL + bool "Network light weight tunnels" +diff -uprN linux-5.3/net/Makefile linux-5.3-bonsai/net/Makefile +--- linux-5.3/net/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/net/Makefile 2019-09-20 15:15:10.774623601 -0400 +@@ -11,79 +11,14 @@ obj-$(CONFIG_NET) := socket.o core/ + tmp-$(CONFIG_COMPAT) := compat.o + obj-$(CONFIG_NET) += $(tmp-y) + +-# LLC has to be linked before the files in net/802/ +-obj-$(CONFIG_LLC) += llc/ +-obj-$(CONFIG_NET) += ethernet/ 802/ sched/ netlink/ bpf/ +-obj-$(CONFIG_NETFILTER) += netfilter/ ++obj-$(CONFIG_NET) += ethernet/ sched/ netlink/ bpf/ + obj-$(CONFIG_INET) += ipv4/ +-obj-$(CONFIG_TLS) += tls/ +-obj-$(CONFIG_XFRM) += xfrm/ + obj-$(CONFIG_UNIX_SCM) += unix/ + obj-$(CONFIG_NET) += ipv6/ +-obj-$(CONFIG_BPFILTER) += bpfilter/ + obj-$(CONFIG_PACKET) += packet/ +-obj-$(CONFIG_NET_KEY) += key/ +-obj-$(CONFIG_BRIDGE) += bridge/ +-obj-$(CONFIG_NET_DSA) += dsa/ +-obj-$(CONFIG_ATALK) += appletalk/ +-obj-$(CONFIG_X25) += x25/ +-obj-$(CONFIG_LAPB) += lapb/ +-obj-$(CONFIG_NETROM) += netrom/ +-obj-$(CONFIG_ROSE) += rose/ +-obj-$(CONFIG_AX25) += ax25/ +-obj-$(CONFIG_CAN) += can/ +-obj-$(CONFIG_BT) += bluetooth/ +-obj-$(CONFIG_SUNRPC) += sunrpc/ +-obj-$(CONFIG_AF_RXRPC) += rxrpc/ +-obj-$(CONFIG_AF_KCM) += kcm/ +-obj-$(CONFIG_STREAM_PARSER) += strparser/ +-obj-$(CONFIG_ATM) += atm/ +-obj-$(CONFIG_L2TP) += l2tp/ +-obj-$(CONFIG_DECNET) += decnet/ +-obj-$(CONFIG_PHONET) += phonet/ +-ifneq ($(CONFIG_VLAN_8021Q),) +-obj-y += 8021q/ +-endif +-obj-$(CONFIG_IP_DCCP) += dccp/ +-obj-$(CONFIG_IP_SCTP) += sctp/ +-obj-$(CONFIG_RDS) += rds/ +-obj-$(CONFIG_WIRELESS) += wireless/ +-obj-$(CONFIG_MAC80211) += mac80211/ +-obj-$(CONFIG_TIPC) += tipc/ +-obj-$(CONFIG_NETLABEL) += netlabel/ +-obj-$(CONFIG_IUCV) += iucv/ +-obj-$(CONFIG_SMC) += smc/ +-obj-$(CONFIG_RFKILL) += rfkill/ + obj-$(CONFIG_NET_9P) += 9p/ +-obj-$(CONFIG_CAIF) += caif/ +-ifneq ($(CONFIG_DCB),) +-obj-y += dcb/ +-endif +-obj-$(CONFIG_6LOWPAN) += 6lowpan/ +-obj-$(CONFIG_IEEE802154) += ieee802154/ +-obj-$(CONFIG_MAC802154) += mac802154/ + + ifeq ($(CONFIG_NET),y) + obj-$(CONFIG_SYSCTL) += sysctl_net.o + endif +-obj-$(CONFIG_WIMAX) += wimax/ +-obj-$(CONFIG_DNS_RESOLVER) += dns_resolver/ +-obj-$(CONFIG_CEPH_LIB) += ceph/ +-obj-$(CONFIG_BATMAN_ADV) += batman-adv/ +-obj-$(CONFIG_NFC) += nfc/ +-obj-$(CONFIG_PSAMPLE) += psample/ +-obj-$(CONFIG_NET_IFE) += ife/ +-obj-$(CONFIG_OPENVSWITCH) += openvswitch/ + obj-$(CONFIG_VSOCKETS) += vmw_vsock/ +-obj-$(CONFIG_MPLS) += mpls/ +-obj-$(CONFIG_NET_NSH) += nsh/ +-obj-$(CONFIG_HSR) += hsr/ +-ifneq ($(CONFIG_NET_SWITCHDEV),) +-obj-y += switchdev/ +-endif +-ifneq ($(CONFIG_NET_L3_MASTER_DEV),) +-obj-y += l3mdev/ +-endif +-obj-$(CONFIG_QRTR) += qrtr/ +-obj-$(CONFIG_NET_NCSI) += ncsi/ +-obj-$(CONFIG_XDP_SOCKETS) += xdp/ +diff -uprN linux-5.3/net/sched/Kconfig linux-5.3-bonsai/net/sched/Kconfig +--- linux-5.3/net/sched/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/net/sched/Kconfig 2019-09-20 15:15:10.775623601 -0400 +@@ -3,967 +3,3 @@ + # Traffic control configuration. + # + +-menuconfig NET_SCHED +- bool "QoS and/or fair queueing" +- select NET_SCH_FIFO +- ---help--- +- When the kernel has several packets to send out over a network +- device, it has to decide which ones to send first, which ones to +- delay, and which ones to drop. This is the job of the queueing +- disciplines, several different algorithms for how to do this +- "fairly" have been proposed. +- +- If you say N here, you will get the standard packet scheduler, which +- is a FIFO (first come, first served). If you say Y here, you will be +- able to choose from among several alternative algorithms which can +- then be attached to different network devices. This is useful for +- example if some of your network devices are real time devices that +- need a certain minimum data flow rate, or if you need to limit the +- maximum data flow rate for traffic which matches specified criteria. +- This code is considered to be experimental. +- +- To administer these schedulers, you'll need the user-level utilities +- from the package iproute2+tc at +- . That package +- also contains some documentation; for more, check out +- . +- +- This Quality of Service (QoS) support will enable you to use +- Differentiated Services (diffserv) and Resource Reservation Protocol +- (RSVP) on your Linux router if you also say Y to the corresponding +- classifiers below. Documentation and software is at +- . +- +- If you say Y here and to "/proc file system" below, you will be able +- to read status information about packet schedulers from the file +- /proc/net/psched. +- +- The available schedulers are listed in the following questions; you +- can say Y to as many as you like. If unsure, say N now. +- +-if NET_SCHED +- +-comment "Queueing/Scheduling" +- +-config NET_SCH_CBQ +- tristate "Class Based Queueing (CBQ)" +- ---help--- +- Say Y here if you want to use the Class-Based Queueing (CBQ) packet +- scheduling algorithm. This algorithm classifies the waiting packets +- into a tree-like hierarchy of classes; the leaves of this tree are +- in turn scheduled by separate algorithms. +- +- See the top of for more details. +- +- CBQ is a commonly used scheduler, so if you're unsure, you should +- say Y here. Then say Y to all the queueing algorithms below that you +- want to use as leaf disciplines. +- +- To compile this code as a module, choose M here: the +- module will be called sch_cbq. +- +-config NET_SCH_HTB +- tristate "Hierarchical Token Bucket (HTB)" +- ---help--- +- Say Y here if you want to use the Hierarchical Token Buckets (HTB) +- packet scheduling algorithm. See +- for complete manual and +- in-depth articles. +- +- HTB is very similar to CBQ regarding its goals however is has +- different properties and different algorithm. +- +- To compile this code as a module, choose M here: the +- module will be called sch_htb. +- +-config NET_SCH_HFSC +- tristate "Hierarchical Fair Service Curve (HFSC)" +- ---help--- +- Say Y here if you want to use the Hierarchical Fair Service Curve +- (HFSC) packet scheduling algorithm. +- +- To compile this code as a module, choose M here: the +- module will be called sch_hfsc. +- +-config NET_SCH_ATM +- tristate "ATM Virtual Circuits (ATM)" +- depends on ATM +- ---help--- +- Say Y here if you want to use the ATM pseudo-scheduler. This +- provides a framework for invoking classifiers, which in turn +- select classes of this queuing discipline. Each class maps +- the flow(s) it is handling to a given virtual circuit. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_atm. +- +-config NET_SCH_PRIO +- tristate "Multi Band Priority Queueing (PRIO)" +- ---help--- +- Say Y here if you want to use an n-band priority queue packet +- scheduler. +- +- To compile this code as a module, choose M here: the +- module will be called sch_prio. +- +-config NET_SCH_MULTIQ +- tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)" +- ---help--- +- Say Y here if you want to use an n-band queue packet scheduler +- to support devices that have multiple hardware transmit queues. +- +- To compile this code as a module, choose M here: the +- module will be called sch_multiq. +- +-config NET_SCH_RED +- tristate "Random Early Detection (RED)" +- ---help--- +- Say Y here if you want to use the Random Early Detection (RED) +- packet scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_red. +- +-config NET_SCH_SFB +- tristate "Stochastic Fair Blue (SFB)" +- ---help--- +- Say Y here if you want to use the Stochastic Fair Blue (SFB) +- packet scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_sfb. +- +-config NET_SCH_SFQ +- tristate "Stochastic Fairness Queueing (SFQ)" +- ---help--- +- Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) +- packet scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_sfq. +- +-config NET_SCH_TEQL +- tristate "True Link Equalizer (TEQL)" +- ---help--- +- Say Y here if you want to use the True Link Equalizer (TLE) packet +- scheduling algorithm. This queueing discipline allows the combination +- of several physical devices into one virtual device. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_teql. +- +-config NET_SCH_TBF +- tristate "Token Bucket Filter (TBF)" +- ---help--- +- Say Y here if you want to use the Token Bucket Filter (TBF) packet +- scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_tbf. +- +-config NET_SCH_CBS +- tristate "Credit Based Shaper (CBS)" +- ---help--- +- Say Y here if you want to use the Credit Based Shaper (CBS) packet +- scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_cbs. +- +-config NET_SCH_ETF +- tristate "Earliest TxTime First (ETF)" +- help +- Say Y here if you want to use the Earliest TxTime First (ETF) packet +- scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_etf. +- +-config NET_SCH_TAPRIO +- tristate "Time Aware Priority (taprio) Scheduler" +- help +- Say Y here if you want to use the Time Aware Priority (taprio) packet +- scheduling algorithm. +- +- See the top of for more details. +- +- To compile this code as a module, choose M here: the +- module will be called sch_taprio. +- +-config NET_SCH_GRED +- tristate "Generic Random Early Detection (GRED)" +- ---help--- +- Say Y here if you want to use the Generic Random Early Detection +- (GRED) packet scheduling algorithm for some of your network devices +- (see the top of for details and +- references about the algorithm). +- +- To compile this code as a module, choose M here: the +- module will be called sch_gred. +- +-config NET_SCH_DSMARK +- tristate "Differentiated Services marker (DSMARK)" +- ---help--- +- Say Y if you want to schedule packets according to the +- Differentiated Services architecture proposed in RFC 2475. +- Technical information on this method, with pointers to associated +- RFCs, is available at . +- +- To compile this code as a module, choose M here: the +- module will be called sch_dsmark. +- +-config NET_SCH_NETEM +- tristate "Network emulator (NETEM)" +- ---help--- +- Say Y if you want to emulate network delay, loss, and packet +- re-ordering. This is often useful to simulate networks when +- testing applications or protocols. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_netem. +- +- If unsure, say N. +- +-config NET_SCH_DRR +- tristate "Deficit Round Robin scheduler (DRR)" +- help +- Say Y here if you want to use the Deficit Round Robin (DRR) packet +- scheduling algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_drr. +- +- If unsure, say N. +- +-config NET_SCH_MQPRIO +- tristate "Multi-queue priority scheduler (MQPRIO)" +- help +- Say Y here if you want to use the Multi-queue Priority scheduler. +- This scheduler allows QOS to be offloaded on NICs that have support +- for offloading QOS schedulers. +- +- To compile this driver as a module, choose M here: the module will +- be called sch_mqprio. +- +- If unsure, say N. +- +-config NET_SCH_SKBPRIO +- tristate "SKB priority queue scheduler (SKBPRIO)" +- help +- Say Y here if you want to use the SKB priority queue +- scheduler. This schedules packets according to skb->priority, +- which is useful for request packets in DoS mitigation systems such +- as Gatekeeper. +- +- To compile this driver as a module, choose M here: the module will +- be called sch_skbprio. +- +- If unsure, say N. +- +-config NET_SCH_CHOKE +- tristate "CHOose and Keep responsive flow scheduler (CHOKE)" +- help +- Say Y here if you want to use the CHOKe packet scheduler (CHOose +- and Keep for responsive flows, CHOose and Kill for unresponsive +- flows). This is a variation of RED which trys to penalize flows +- that monopolize the queue. +- +- To compile this code as a module, choose M here: the +- module will be called sch_choke. +- +-config NET_SCH_QFQ +- tristate "Quick Fair Queueing scheduler (QFQ)" +- help +- Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ) +- packet scheduling algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_qfq. +- +- If unsure, say N. +- +-config NET_SCH_CODEL +- tristate "Controlled Delay AQM (CODEL)" +- help +- Say Y here if you want to use the Controlled Delay (CODEL) +- packet scheduling algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_codel. +- +- If unsure, say N. +- +-config NET_SCH_FQ_CODEL +- tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)" +- help +- Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL) +- packet scheduling algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_fq_codel. +- +- If unsure, say N. +- +-config NET_SCH_CAKE +- tristate "Common Applications Kept Enhanced (CAKE)" +- help +- Say Y here if you want to use the Common Applications Kept Enhanced +- (CAKE) queue management algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_cake. +- +- If unsure, say N. +- +-config NET_SCH_FQ +- tristate "Fair Queue" +- help +- Say Y here if you want to use the FQ packet scheduling algorithm. +- +- FQ does flow separation, and is able to respect pacing requirements +- set by TCP stack into sk->sk_pacing_rate (for localy generated +- traffic) +- +- To compile this driver as a module, choose M here: the module +- will be called sch_fq. +- +- If unsure, say N. +- +-config NET_SCH_HHF +- tristate "Heavy-Hitter Filter (HHF)" +- help +- Say Y here if you want to use the Heavy-Hitter Filter (HHF) +- packet scheduling algorithm. +- +- To compile this driver as a module, choose M here: the module +- will be called sch_hhf. +- +-config NET_SCH_PIE +- tristate "Proportional Integral controller Enhanced (PIE) scheduler" +- help +- Say Y here if you want to use the Proportional Integral controller +- Enhanced scheduler packet scheduling algorithm. +- For more information, please see https://tools.ietf.org/html/rfc8033 +- +- To compile this driver as a module, choose M here: the module +- will be called sch_pie. +- +- If unsure, say N. +- +-config NET_SCH_INGRESS +- tristate "Ingress/classifier-action Qdisc" +- depends on NET_CLS_ACT +- select NET_INGRESS +- select NET_EGRESS +- ---help--- +- Say Y here if you want to use classifiers for incoming and/or outgoing +- packets. This qdisc doesn't do anything else besides running classifiers, +- which can also have actions attached to them. In case of outgoing packets, +- classifiers that this qdisc holds are executed in the transmit path +- before real enqueuing to an egress qdisc happens. +- +- If unsure, say Y. +- +- To compile this code as a module, choose M here: the module will be +- called sch_ingress with alias of sch_clsact. +- +-config NET_SCH_PLUG +- tristate "Plug network traffic until release (PLUG)" +- ---help--- +- +- This queuing discipline allows userspace to plug/unplug a network +- output queue, using the netlink interface. When it receives an +- enqueue command it inserts a plug into the outbound queue that +- causes following packets to enqueue until a dequeue command arrives +- over netlink, causing the plug to be removed and resuming the normal +- packet flow. +- +- This module also provides a generic "network output buffering" +- functionality (aka output commit), wherein upon arrival of a dequeue +- command, only packets up to the first plug are released for delivery. +- The Remus HA project uses this module to enable speculative execution +- of virtual machines by allowing the generated network output to be rolled +- back if needed. +- +- For more information, please refer to +- +- Say Y here if you are using this kernel for Xen dom0 and +- want to protect Xen guests with Remus. +- +- To compile this code as a module, choose M here: the +- module will be called sch_plug. +- +-menuconfig NET_SCH_DEFAULT +- bool "Allow override default queue discipline" +- ---help--- +- Support for selection of default queuing discipline. +- +- Nearly all users can safely say no here, and the default +- of pfifo_fast will be used. Many distributions already set +- the default value via /proc/sys/net/core/default_qdisc. +- +- If unsure, say N. +- +-if NET_SCH_DEFAULT +- +-choice +- prompt "Default queuing discipline" +- default DEFAULT_PFIFO_FAST +- help +- Select the queueing discipline that will be used by default +- for all network devices. +- +- config DEFAULT_FQ +- bool "Fair Queue" if NET_SCH_FQ +- +- config DEFAULT_CODEL +- bool "Controlled Delay" if NET_SCH_CODEL +- +- config DEFAULT_FQ_CODEL +- bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL +- +- config DEFAULT_SFQ +- bool "Stochastic Fair Queue" if NET_SCH_SFQ +- +- config DEFAULT_PFIFO_FAST +- bool "Priority FIFO Fast" +-endchoice +- +-config DEFAULT_NET_SCH +- string +- default "pfifo_fast" if DEFAULT_PFIFO_FAST +- default "fq" if DEFAULT_FQ +- default "fq_codel" if DEFAULT_FQ_CODEL +- default "sfq" if DEFAULT_SFQ +- default "pfifo_fast" +-endif +- +-comment "Classification" +- +-config NET_CLS +- bool +- +-config NET_CLS_BASIC +- tristate "Elementary classification (BASIC)" +- select NET_CLS +- ---help--- +- Say Y here if you want to be able to classify packets using +- only extended matches and actions. +- +- To compile this code as a module, choose M here: the +- module will be called cls_basic. +- +-config NET_CLS_TCINDEX +- tristate "Traffic-Control Index (TCINDEX)" +- select NET_CLS +- ---help--- +- Say Y here if you want to be able to classify packets based on +- traffic control indices. You will want this feature if you want +- to implement Differentiated Services together with DSMARK. +- +- To compile this code as a module, choose M here: the +- module will be called cls_tcindex. +- +-config NET_CLS_ROUTE4 +- tristate "Routing decision (ROUTE)" +- depends on INET +- select IP_ROUTE_CLASSID +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets +- according to the route table entry they matched. +- +- To compile this code as a module, choose M here: the +- module will be called cls_route. +- +-config NET_CLS_FW +- tristate "Netfilter mark (FW)" +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets +- according to netfilter/firewall marks. +- +- To compile this code as a module, choose M here: the +- module will be called cls_fw. +- +-config NET_CLS_U32 +- tristate "Universal 32bit comparisons w/ hashing (U32)" +- select NET_CLS +- ---help--- +- Say Y here to be able to classify packets using a universal +- 32bit pieces based comparison scheme. +- +- To compile this code as a module, choose M here: the +- module will be called cls_u32. +- +-config CLS_U32_PERF +- bool "Performance counters support" +- depends on NET_CLS_U32 +- ---help--- +- Say Y here to make u32 gather additional statistics useful for +- fine tuning u32 classifiers. +- +-config CLS_U32_MARK +- bool "Netfilter marks support" +- depends on NET_CLS_U32 +- ---help--- +- Say Y here to be able to use netfilter marks as u32 key. +- +-config NET_CLS_RSVP +- tristate "IPv4 Resource Reservation Protocol (RSVP)" +- select NET_CLS +- ---help--- +- The Resource Reservation Protocol (RSVP) permits end systems to +- request a minimum and maximum data flow rate for a connection; this +- is important for real time data such as streaming sound or video. +- +- Say Y here if you want to be able to classify outgoing packets based +- on their RSVP requests. +- +- To compile this code as a module, choose M here: the +- module will be called cls_rsvp. +- +-config NET_CLS_RSVP6 +- tristate "IPv6 Resource Reservation Protocol (RSVP6)" +- select NET_CLS +- ---help--- +- The Resource Reservation Protocol (RSVP) permits end systems to +- request a minimum and maximum data flow rate for a connection; this +- is important for real time data such as streaming sound or video. +- +- Say Y here if you want to be able to classify outgoing packets based +- on their RSVP requests and you are using the IPv6 protocol. +- +- To compile this code as a module, choose M here: the +- module will be called cls_rsvp6. +- +-config NET_CLS_FLOW +- tristate "Flow classifier" +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets based on +- a configurable combination of packet keys. This is mostly useful +- in combination with SFQ. +- +- To compile this code as a module, choose M here: the +- module will be called cls_flow. +- +-config NET_CLS_CGROUP +- tristate "Control Group Classifier" +- select NET_CLS +- select CGROUP_NET_CLASSID +- depends on CGROUPS +- ---help--- +- Say Y here if you want to classify packets based on the control +- cgroup of their process. +- +- To compile this code as a module, choose M here: the +- module will be called cls_cgroup. +- +-config NET_CLS_BPF +- tristate "BPF-based classifier" +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets based on +- programmable BPF (JIT'ed) filters as an alternative to ematches. +- +- To compile this code as a module, choose M here: the module will +- be called cls_bpf. +- +-config NET_CLS_FLOWER +- tristate "Flower classifier" +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets based on +- a configurable combination of packet keys and masks. +- +- To compile this code as a module, choose M here: the module will +- be called cls_flower. +- +-config NET_CLS_MATCHALL +- tristate "Match-all classifier" +- select NET_CLS +- ---help--- +- If you say Y here, you will be able to classify packets based on +- nothing. Every packet will match. +- +- To compile this code as a module, choose M here: the module will +- be called cls_matchall. +- +-config NET_EMATCH +- bool "Extended Matches" +- select NET_CLS +- ---help--- +- Say Y here if you want to use extended matches on top of classifiers +- and select the extended matches below. +- +- Extended matches are small classification helpers not worth writing +- a separate classifier for. +- +- A recent version of the iproute2 package is required to use +- extended matches. +- +-config NET_EMATCH_STACK +- int "Stack size" +- depends on NET_EMATCH +- default "32" +- ---help--- +- Size of the local stack variable used while evaluating the tree of +- ematches. Limits the depth of the tree, i.e. the number of +- encapsulated precedences. Every level requires 4 bytes of additional +- stack space. +- +-config NET_EMATCH_CMP +- tristate "Simple packet data comparison" +- depends on NET_EMATCH +- ---help--- +- Say Y here if you want to be able to classify packets based on +- simple packet data comparisons for 8, 16, and 32bit values. +- +- To compile this code as a module, choose M here: the +- module will be called em_cmp. +- +-config NET_EMATCH_NBYTE +- tristate "Multi byte comparison" +- depends on NET_EMATCH +- ---help--- +- Say Y here if you want to be able to classify packets based on +- multiple byte comparisons mainly useful for IPv6 address comparisons. +- +- To compile this code as a module, choose M here: the +- module will be called em_nbyte. +- +-config NET_EMATCH_U32 +- tristate "U32 key" +- depends on NET_EMATCH +- ---help--- +- Say Y here if you want to be able to classify packets using +- the famous u32 key in combination with logic relations. +- +- To compile this code as a module, choose M here: the +- module will be called em_u32. +- +-config NET_EMATCH_META +- tristate "Metadata" +- depends on NET_EMATCH +- ---help--- +- Say Y here if you want to be able to classify packets based on +- metadata such as load average, netfilter attributes, socket +- attributes and routing decisions. +- +- To compile this code as a module, choose M here: the +- module will be called em_meta. +- +-config NET_EMATCH_TEXT +- tristate "Textsearch" +- depends on NET_EMATCH +- select TEXTSEARCH +- select TEXTSEARCH_KMP +- select TEXTSEARCH_BM +- select TEXTSEARCH_FSM +- ---help--- +- Say Y here if you want to be able to classify packets based on +- textsearch comparisons. +- +- To compile this code as a module, choose M here: the +- module will be called em_text. +- +-config NET_EMATCH_CANID +- tristate "CAN Identifier" +- depends on NET_EMATCH && (CAN=y || CAN=m) +- ---help--- +- Say Y here if you want to be able to classify CAN frames based +- on CAN Identifier. +- +- To compile this code as a module, choose M here: the +- module will be called em_canid. +- +-config NET_EMATCH_IPSET +- tristate "IPset" +- depends on NET_EMATCH && IP_SET +- ---help--- +- Say Y here if you want to be able to classify packets based on +- ipset membership. +- +- To compile this code as a module, choose M here: the +- module will be called em_ipset. +- +-config NET_EMATCH_IPT +- tristate "IPtables Matches" +- depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES +- ---help--- +- Say Y here to be able to classify packets based on iptables +- matches. +- Current supported match is "policy" which allows packet classification +- based on IPsec policy that was used during decapsulation +- +- To compile this code as a module, choose M here: the +- module will be called em_ipt. +- +-config NET_CLS_ACT +- bool "Actions" +- select NET_CLS +- ---help--- +- Say Y here if you want to use traffic control actions. Actions +- get attached to classifiers and are invoked after a successful +- classification. They are used to overwrite the classification +- result, instantly drop or redirect packets, etc. +- +- A recent version of the iproute2 package is required to use +- extended matches. +- +-config NET_ACT_POLICE +- tristate "Traffic Policing" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here if you want to do traffic policing, i.e. strict +- bandwidth limiting. This action replaces the existing policing +- module. +- +- To compile this code as a module, choose M here: the +- module will be called act_police. +- +-config NET_ACT_GACT +- tristate "Generic actions" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to take generic actions such as dropping and +- accepting packets. +- +- To compile this code as a module, choose M here: the +- module will be called act_gact. +- +-config GACT_PROB +- bool "Probability support" +- depends on NET_ACT_GACT +- ---help--- +- Say Y here to use the generic action randomly or deterministically. +- +-config NET_ACT_MIRRED +- tristate "Redirecting and Mirroring" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to allow packets to be mirrored or redirected to +- other devices. +- +- To compile this code as a module, choose M here: the +- module will be called act_mirred. +- +-config NET_ACT_SAMPLE +- tristate "Traffic Sampling" +- depends on NET_CLS_ACT +- select PSAMPLE +- ---help--- +- Say Y here to allow packet sampling tc action. The packet sample +- action consists of statistically choosing packets and sampling +- them using the psample module. +- +- To compile this code as a module, choose M here: the +- module will be called act_sample. +- +-config NET_ACT_IPT +- tristate "IPtables targets" +- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES +- ---help--- +- Say Y here to be able to invoke iptables targets after successful +- classification. +- +- To compile this code as a module, choose M here: the +- module will be called act_ipt. +- +-config NET_ACT_NAT +- tristate "Stateless NAT" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to do stateless NAT on IPv4 packets. You should use +- netfilter for NAT unless you know what you are doing. +- +- To compile this code as a module, choose M here: the +- module will be called act_nat. +- +-config NET_ACT_PEDIT +- tristate "Packet Editing" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here if you want to mangle the content of packets. +- +- To compile this code as a module, choose M here: the +- module will be called act_pedit. +- +-config NET_ACT_SIMP +- tristate "Simple Example (Debug)" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to add a simple action for demonstration purposes. +- It is meant as an example and for debugging purposes. It will +- print a configured policy string followed by the packet count +- to the console for every packet that passes by. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_simple. +- +-config NET_ACT_SKBEDIT +- tristate "SKB Editing" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to change skb priority or queue_mapping settings. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_skbedit. +- +-config NET_ACT_CSUM +- tristate "Checksum Updating" +- depends on NET_CLS_ACT && INET +- select LIBCRC32C +- ---help--- +- Say Y here to update some common checksum after some direct +- packet alterations. +- +- To compile this code as a module, choose M here: the +- module will be called act_csum. +- +-config NET_ACT_MPLS +- tristate "MPLS manipulation" +- depends on NET_CLS_ACT +- help +- Say Y here to push or pop MPLS headers. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_mpls. +- +-config NET_ACT_VLAN +- tristate "Vlan manipulation" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to push or pop vlan headers. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_vlan. +- +-config NET_ACT_BPF +- tristate "BPF based action" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to execute BPF code on packets. The BPF code will decide +- if the packet should be dropped or not. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_bpf. +- +-config NET_ACT_CONNMARK +- tristate "Netfilter Connection Mark Retriever" +- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES +- depends on NF_CONNTRACK && NF_CONNTRACK_MARK +- ---help--- +- Say Y here to allow retrieving of conn mark +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_connmark. +- +-config NET_ACT_CTINFO +- tristate "Netfilter Connection Mark Actions" +- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES +- depends on NF_CONNTRACK && NF_CONNTRACK_MARK +- help +- Say Y here to allow transfer of a connmark stored information. +- Current actions transfer connmark stored DSCP into +- ipv4/v6 diffserv and/or to transfer connmark to packet +- mark. Both are useful for restoring egress based marks +- back onto ingress connections for qdisc priority mapping +- purposes. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_ctinfo. +- +-config NET_ACT_SKBMOD +- tristate "skb data modification action" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to allow modification of skb data +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_skbmod. +- +-config NET_ACT_IFE +- tristate "Inter-FE action based on IETF ForCES InterFE LFB" +- depends on NET_CLS_ACT +- select NET_IFE +- ---help--- +- Say Y here to allow for sourcing and terminating metadata +- For details refer to netdev01 paper: +- "Distributing Linux Traffic Control Classifier-Action Subsystem" +- Authors: Jamal Hadi Salim and Damascene M. Joachimpillai +- +- To compile this code as a module, choose M here: the +- module will be called act_ife. +- +-config NET_ACT_TUNNEL_KEY +- tristate "IP tunnel metadata manipulation" +- depends on NET_CLS_ACT +- ---help--- +- Say Y here to set/release ip tunnel metadata. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_tunnel_key. +- +-config NET_ACT_CT +- tristate "connection tracking tc action" +- depends on NET_CLS_ACT && NF_CONNTRACK && NF_NAT +- help +- Say Y here to allow sending the packets to conntrack module. +- +- If unsure, say N. +- +- To compile this code as a module, choose M here: the +- module will be called act_ct. +- +-config NET_IFE_SKBMARK +- tristate "Support to encoding decoding skb mark on IFE action" +- depends on NET_ACT_IFE +- +-config NET_IFE_SKBPRIO +- tristate "Support to encoding decoding skb prio on IFE action" +- depends on NET_ACT_IFE +- +-config NET_IFE_SKBTCINDEX +- tristate "Support to encoding decoding skb tcindex on IFE action" +- depends on NET_ACT_IFE +- +-endif # NET_SCHED +- +-config NET_SCH_FIFO +- bool +diff -uprN linux-5.3/net/sched/Makefile linux-5.3-bonsai/net/sched/Makefile +--- linux-5.3/net/sched/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/net/sched/Makefile 2019-09-20 15:15:10.775623601 -0400 +@@ -4,82 +4,3 @@ + # + + obj-y := sch_generic.o sch_mq.o +- +-obj-$(CONFIG_NET_SCHED) += sch_api.o sch_blackhole.o +-obj-$(CONFIG_NET_CLS) += cls_api.o +-obj-$(CONFIG_NET_CLS_ACT) += act_api.o +-obj-$(CONFIG_NET_ACT_POLICE) += act_police.o +-obj-$(CONFIG_NET_ACT_GACT) += act_gact.o +-obj-$(CONFIG_NET_ACT_MIRRED) += act_mirred.o +-obj-$(CONFIG_NET_ACT_SAMPLE) += act_sample.o +-obj-$(CONFIG_NET_ACT_IPT) += act_ipt.o +-obj-$(CONFIG_NET_ACT_NAT) += act_nat.o +-obj-$(CONFIG_NET_ACT_PEDIT) += act_pedit.o +-obj-$(CONFIG_NET_ACT_SIMP) += act_simple.o +-obj-$(CONFIG_NET_ACT_SKBEDIT) += act_skbedit.o +-obj-$(CONFIG_NET_ACT_CSUM) += act_csum.o +-obj-$(CONFIG_NET_ACT_MPLS) += act_mpls.o +-obj-$(CONFIG_NET_ACT_VLAN) += act_vlan.o +-obj-$(CONFIG_NET_ACT_BPF) += act_bpf.o +-obj-$(CONFIG_NET_ACT_CONNMARK) += act_connmark.o +-obj-$(CONFIG_NET_ACT_CTINFO) += act_ctinfo.o +-obj-$(CONFIG_NET_ACT_SKBMOD) += act_skbmod.o +-obj-$(CONFIG_NET_ACT_IFE) += act_ife.o +-obj-$(CONFIG_NET_IFE_SKBMARK) += act_meta_mark.o +-obj-$(CONFIG_NET_IFE_SKBPRIO) += act_meta_skbprio.o +-obj-$(CONFIG_NET_IFE_SKBTCINDEX) += act_meta_skbtcindex.o +-obj-$(CONFIG_NET_ACT_TUNNEL_KEY)+= act_tunnel_key.o +-obj-$(CONFIG_NET_ACT_CT) += act_ct.o +-obj-$(CONFIG_NET_SCH_FIFO) += sch_fifo.o +-obj-$(CONFIG_NET_SCH_CBQ) += sch_cbq.o +-obj-$(CONFIG_NET_SCH_HTB) += sch_htb.o +-obj-$(CONFIG_NET_SCH_HFSC) += sch_hfsc.o +-obj-$(CONFIG_NET_SCH_RED) += sch_red.o +-obj-$(CONFIG_NET_SCH_GRED) += sch_gred.o +-obj-$(CONFIG_NET_SCH_INGRESS) += sch_ingress.o +-obj-$(CONFIG_NET_SCH_DSMARK) += sch_dsmark.o +-obj-$(CONFIG_NET_SCH_SFB) += sch_sfb.o +-obj-$(CONFIG_NET_SCH_SFQ) += sch_sfq.o +-obj-$(CONFIG_NET_SCH_TBF) += sch_tbf.o +-obj-$(CONFIG_NET_SCH_TEQL) += sch_teql.o +-obj-$(CONFIG_NET_SCH_PRIO) += sch_prio.o +-obj-$(CONFIG_NET_SCH_MULTIQ) += sch_multiq.o +-obj-$(CONFIG_NET_SCH_ATM) += sch_atm.o +-obj-$(CONFIG_NET_SCH_NETEM) += sch_netem.o +-obj-$(CONFIG_NET_SCH_DRR) += sch_drr.o +-obj-$(CONFIG_NET_SCH_PLUG) += sch_plug.o +-obj-$(CONFIG_NET_SCH_MQPRIO) += sch_mqprio.o +-obj-$(CONFIG_NET_SCH_SKBPRIO) += sch_skbprio.o +-obj-$(CONFIG_NET_SCH_CHOKE) += sch_choke.o +-obj-$(CONFIG_NET_SCH_QFQ) += sch_qfq.o +-obj-$(CONFIG_NET_SCH_CODEL) += sch_codel.o +-obj-$(CONFIG_NET_SCH_FQ_CODEL) += sch_fq_codel.o +-obj-$(CONFIG_NET_SCH_CAKE) += sch_cake.o +-obj-$(CONFIG_NET_SCH_FQ) += sch_fq.o +-obj-$(CONFIG_NET_SCH_HHF) += sch_hhf.o +-obj-$(CONFIG_NET_SCH_PIE) += sch_pie.o +-obj-$(CONFIG_NET_SCH_CBS) += sch_cbs.o +-obj-$(CONFIG_NET_SCH_ETF) += sch_etf.o +-obj-$(CONFIG_NET_SCH_TAPRIO) += sch_taprio.o +- +-obj-$(CONFIG_NET_CLS_U32) += cls_u32.o +-obj-$(CONFIG_NET_CLS_ROUTE4) += cls_route.o +-obj-$(CONFIG_NET_CLS_FW) += cls_fw.o +-obj-$(CONFIG_NET_CLS_RSVP) += cls_rsvp.o +-obj-$(CONFIG_NET_CLS_TCINDEX) += cls_tcindex.o +-obj-$(CONFIG_NET_CLS_RSVP6) += cls_rsvp6.o +-obj-$(CONFIG_NET_CLS_BASIC) += cls_basic.o +-obj-$(CONFIG_NET_CLS_FLOW) += cls_flow.o +-obj-$(CONFIG_NET_CLS_CGROUP) += cls_cgroup.o +-obj-$(CONFIG_NET_CLS_BPF) += cls_bpf.o +-obj-$(CONFIG_NET_CLS_FLOWER) += cls_flower.o +-obj-$(CONFIG_NET_CLS_MATCHALL) += cls_matchall.o +-obj-$(CONFIG_NET_EMATCH) += ematch.o +-obj-$(CONFIG_NET_EMATCH_CMP) += em_cmp.o +-obj-$(CONFIG_NET_EMATCH_NBYTE) += em_nbyte.o +-obj-$(CONFIG_NET_EMATCH_U32) += em_u32.o +-obj-$(CONFIG_NET_EMATCH_META) += em_meta.o +-obj-$(CONFIG_NET_EMATCH_TEXT) += em_text.o +-obj-$(CONFIG_NET_EMATCH_CANID) += em_canid.o +-obj-$(CONFIG_NET_EMATCH_IPSET) += em_ipset.o +-obj-$(CONFIG_NET_EMATCH_IPT) += em_ipt.o +diff -uprN linux-5.3/scripts/bonsai.list linux-5.3-bonsai/scripts/bonsai.list +--- linux-5.3/scripts/bonsai.list 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-bonsai/scripts/bonsai.list 2019-09-20 15:15:10.775623601 -0400 +@@ -0,0 +1,1129 @@ ++arch/alpha ++arch/arc ++arch/arm ++arch/arm64 ++arch/c6x ++arch/csky ++arch/h8300 ++arch/hexagon ++arch/ia64 ++arch/m68k ++arch/microblaze ++arch/mips ++arch/nds32 ++arch/nios2 ++arch/openrisc ++arch/parisc ++arch/powerpc ++arch/riscv ++arch/s390 ++arch/sh ++arch/sparc ++arch/um ++arch/unicore32 ++arch/x86/boot ++arch/x86/entry/vsyscall ++arch/x86/hyperv ++arch/x86/ia32 ++arch/x86/kvm ++arch/x86/math-emu ++arch/x86/net ++arch/x86/oprofile ++arch/x86/platform ++arch/x86/power ++arch/x86/purgatory ++arch/x86/ras ++arch/x86/um ++arch/x86/xen ++arch/xtensa ++drivers/accessibility ++drivers/acpi ++drivers/amba ++drivers/android ++drivers/ata ++drivers/atm ++drivers/auxdisplay ++drivers/base/firmware_loader ++drivers/base/regmap ++drivers/base/test ++drivers/bcma ++drivers/block/aoe ++drivers/block/drbd ++drivers/block/mtip32xx ++drivers/block/paride ++drivers/block/rsxx ++drivers/block/xen-blkback ++drivers/block/zram ++drivers/bluetooth ++drivers/bus ++drivers/cdrom ++drivers/char/agp ++drivers/char/ipmi ++drivers/char/mwave ++drivers/char/pcmcia ++drivers/char/tpm ++drivers/char/xilinx_hwicap ++drivers/char/xillybus ++drivers/clk ++drivers/connector ++drivers/counter ++drivers/cpufreq ++drivers/cpuidle ++drivers/crypto ++drivers/dca ++drivers/devfreq ++drivers/dio ++drivers/dma ++drivers/edac ++drivers/eisa ++drivers/extcon ++drivers/firewire ++drivers/firmware ++drivers/fpga ++drivers/fsi ++drivers/gnss ++drivers/gpio ++drivers/gpu/drm/amd ++drivers/gpu/drm/arc ++drivers/gpu/drm/arm ++drivers/gpu/drm/armada ++drivers/gpu/drm/aspeed ++drivers/gpu/drm/ast ++drivers/gpu/drm/atmel-hlcdc ++drivers/gpu/drm/bochs ++drivers/gpu/drm/bridge ++drivers/gpu/drm/cirrus ++drivers/gpu/drm/etnaviv ++drivers/gpu/drm/exynos ++drivers/gpu/drm/fsl-dcu ++drivers/gpu/drm/gma500 ++drivers/gpu/drm/hisilicon ++drivers/gpu/drm/i2c ++drivers/gpu/drm/i810 ++drivers/gpu/drm/i915 ++drivers/gpu/drm/imx ++drivers/gpu/drm/ingenic ++drivers/gpu/drm/lib ++drivers/gpu/drm/lima ++drivers/gpu/drm/mcde ++drivers/gpu/drm/mediatek ++drivers/gpu/drm/meson ++drivers/gpu/drm/mga ++drivers/gpu/drm/mgag200 ++drivers/gpu/drm/msm ++drivers/gpu/drm/mxsfb ++drivers/gpu/drm/nouveau ++drivers/gpu/drm/omapdrm ++drivers/gpu/drm/panel ++drivers/gpu/drm/panfrost ++drivers/gpu/drm/pl111 ++drivers/gpu/drm/qxl ++drivers/gpu/drm/r128 ++drivers/gpu/drm/radeon ++drivers/gpu/drm/rcar-du ++drivers/gpu/drm/rockchip ++drivers/gpu/drm/savage ++drivers/gpu/drm/scheduler ++drivers/gpu/drm/selftests ++drivers/gpu/drm/shmobile ++drivers/gpu/drm/sis ++drivers/gpu/drm/sti ++drivers/gpu/drm/stm ++drivers/gpu/drm/sun4i ++drivers/gpu/drm/tdfx ++drivers/gpu/drm/tegra ++drivers/gpu/drm/tilcdc ++drivers/gpu/drm/tinydrm ++drivers/gpu/drm/tve200 ++drivers/gpu/drm/udl ++drivers/gpu/drm/v3d ++drivers/gpu/drm/vboxvideo ++drivers/gpu/drm/vc4 ++drivers/gpu/drm/via ++drivers/gpu/drm/vkms ++drivers/gpu/drm/vmwgfx ++drivers/gpu/drm/xen ++drivers/gpu/drm/zte ++drivers/gpu/host1x ++drivers/gpu/ipu-v3 ++drivers/gpu/vga ++drivers/hid ++drivers/hsi ++drivers/hv ++drivers/hwmon ++drivers/hwspinlock ++drivers/hwtracing ++drivers/i2c ++drivers/i3c ++drivers/ide ++drivers/idle ++drivers/iio ++drivers/infiniband ++drivers/input ++drivers/interconnect ++drivers/iommu ++drivers/ipack ++drivers/irqchip ++drivers/isdn ++drivers/leds ++drivers/lightnvm ++drivers/macintosh ++drivers/mailbox ++drivers/mcb ++drivers/md/bcache ++drivers/md/persistent-data ++drivers/media ++drivers/memory ++drivers/memstick ++drivers/message ++drivers/mfd ++drivers/misc ++drivers/mmc ++drivers/mtd ++drivers/mux ++drivers/net/appletalk ++drivers/net/arcnet ++drivers/net/bonding ++drivers/net/caif ++drivers/net/can ++drivers/net/dsa ++drivers/net/ethernet ++drivers/net/fddi ++drivers/net/fjes ++drivers/net/hamradio ++drivers/net/hippi ++drivers/net/hyperv ++drivers/net/ieee802154 ++drivers/net/ipvlan ++drivers/net/netdevsim ++drivers/net/phy ++drivers/net/plip ++drivers/net/ppp ++drivers/net/slip ++drivers/net/team ++drivers/net/usb ++drivers/net/vmxnet3 ++drivers/net/wan ++drivers/net/wimax ++drivers/net/wireless ++drivers/net/xen-netback ++drivers/nfc ++drivers/ntb ++drivers/nubus ++drivers/nvme ++drivers/nvmem ++drivers/of ++drivers/opp ++drivers/oprofile ++drivers/parisc ++drivers/parport ++drivers/pci/controller ++drivers/pci/endpoint ++drivers/pci/hotplug ++drivers/pci/switch ++drivers/pcmcia ++drivers/perf ++drivers/phy ++drivers/pinctrl ++drivers/platform ++drivers/pnp ++drivers/power ++drivers/powercap ++drivers/pps ++drivers/ps3 ++drivers/ptp ++drivers/pwm ++drivers/rapidio ++drivers/ras ++drivers/regulator ++drivers/remoteproc ++drivers/reset ++drivers/rpmsg ++drivers/s390 ++drivers/sbus ++drivers/scsi ++drivers/sfi ++drivers/sh ++drivers/siox ++drivers/slimbus ++drivers/sn ++drivers/soc ++drivers/soundwire ++drivers/spi ++drivers/spmi ++drivers/ssb ++drivers/staging ++drivers/target ++drivers/tc ++drivers/tee ++drivers/thermal ++drivers/thunderbolt ++drivers/tty/ipwireless ++drivers/tty/serdev ++drivers/tty/serial ++drivers/tty/vt ++drivers/uio ++drivers/usb ++drivers/uwb ++drivers/vfio ++drivers/vhost ++drivers/video ++drivers/virt ++drivers/visorbus ++drivers/vlynq ++drivers/vme ++drivers/w1 ++drivers/watchdog ++drivers/xen ++drivers/zorro ++fs/adfs ++fs/affs ++fs/afs ++fs/befs ++fs/bfs ++fs/btrfs ++fs/cachefiles ++fs/ceph ++fs/cifs ++fs/coda ++fs/cramfs ++fs/crypto ++fs/debugfs ++fs/dlm ++fs/ecryptfs ++fs/efivarfs ++fs/efs ++fs/f2fs ++fs/freevxfs ++fs/gfs2 ++fs/hfs ++fs/hfsplus ++fs/hostfs ++fs/hpfs ++fs/isofs ++fs/jffs2 ++fs/jfs ++fs/lockd ++fs/minix ++fs/nfs ++fs/nfs_common ++fs/nfsd ++fs/nilfs2 ++fs/ntfs ++fs/ocfs2 ++fs/omfs ++fs/openpromfs ++fs/orangefs ++fs/pstore ++fs/qnx4 ++fs/qnx6 ++fs/quota ++fs/reiserfs ++fs/romfs ++fs/squashfs ++fs/sysv ++fs/tracefs ++fs/ubifs ++fs/udf ++fs/ufs ++fs/unicode ++fs/xfs ++net/6lowpan ++net/802 ++net/8021q ++net/appletalk ++net/atm ++net/ax25 ++net/batman-adv ++net/bluetooth ++net/bridge ++net/caif ++net/can ++net/ceph ++net/dcb ++net/dccp ++net/decnet ++net/dns_resolver ++net/dsa ++net/hsr ++net/ieee802154 ++net/ife ++net/iucv ++net/kcm ++net/key ++net/l2tp ++net/l3mdev ++net/lapb ++net/llc ++net/mac80211 ++net/mac802154 ++net/mpls ++net/ncsi ++net/netfilter ++net/netlabel ++net/netrom ++net/nfc ++net/nsh ++net/openvswitch ++net/phonet ++net/psample ++net/qrtr ++net/rds ++net/rfkill ++net/rose ++net/rxrpc ++net/sctp ++net/smc ++net/strparser ++net/sunrpc ++net/switchdev ++net/tipc ++net/tls ++net/wimax ++net/wireless ++net/x25 ++net/xdp ++net/xfrm ++sound/aoa ++sound/arm ++sound/atmel ++sound/core/oss ++sound/core/seq ++sound/drivers ++sound/firewire ++sound/i2c ++sound/isa ++sound/mips ++sound/oss ++sound/parisc ++sound/pci/ali5451 ++sound/pci/asihpi ++sound/pci/au88x0 ++sound/pci/aw2 ++sound/pci/ca0106 ++sound/pci/cs46xx ++sound/pci/cs5535audio ++sound/pci/ctxfi ++sound/pci/echoaudio ++sound/pci/emu10k1 ++sound/pci/hda ++sound/pci/ice1712 ++sound/pci/korg1212 ++sound/pci/lola ++sound/pci/lx6464es ++sound/pci/mixart ++sound/pci/nm256 ++sound/pci/oxygen ++sound/pci/pcxhr ++sound/pci/riptide ++sound/pci/rme9652 ++sound/pci/trident ++sound/pci/vx222 ++sound/pci/ymfpci ++sound/pcmcia ++sound/ppc ++sound/sh ++sound/soc ++sound/sparc ++sound/spi ++sound/synth ++sound/usb ++sound/xen ++arch/x86/entry/entry_32.S ++arch/x86/entry/entry_64_compat.S ++arch/x86/entry/syscall_32.c ++arch/x86/entry/thunk_32.S ++arch/x86/mm/amdtopology.c ++arch/x86/mm/highmem_32.c ++arch/x86/mm/init_32.c ++arch/x86/mm/iomap_32.c ++arch/x86/mm/kmmio.c ++arch/x86/mm/mem_encrypt.c ++arch/x86/mm/mem_encrypt_boot.S ++arch/x86/mm/mem_encrypt_identity.c ++arch/x86/mm/mmio-mod.c ++arch/x86/mm/numa.c ++arch/x86/mm/numa_32.c ++arch/x86/mm/numa_64.c ++arch/x86/mm/numa_emulation.c ++arch/x86/mm/numa_internal.h ++arch/x86/mm/pf_in.c ++arch/x86/mm/pf_in.h ++arch/x86/mm/pgtable_32.c ++arch/x86/mm/srat.c ++arch/x86/mm/testmmiotrace.c ++drivers/base/Kconfig ++drivers/base/arch_topology.c ++drivers/base/devcoredump.c ++drivers/base/hypervisor.c ++drivers/base/isa.c ++drivers/base/memory.c ++drivers/base/module.c ++drivers/base/node.c ++drivers/base/pinctrl.c ++drivers/base/platform-msi.c ++drivers/base/power/Makefile ++drivers/base/power/clock_ops.c ++drivers/base/power/common.c ++drivers/base/power/domain.c ++drivers/base/power/domain_governor.c ++drivers/base/power/generic_ops.c ++drivers/base/power/main.c ++drivers/base/power/qos.c ++drivers/base/power/runtime.c ++drivers/base/power/sysfs.c ++drivers/base/power/trace.c ++drivers/base/power/wakeirq.c ++drivers/base/power/wakeup.c ++drivers/base/soc.c ++drivers/block/Kconfig ++drivers/block/amiflop.c ++drivers/block/ataflop.c ++drivers/block/brd.c ++drivers/block/cryptoloop.c ++drivers/block/floppy.c ++drivers/block/nbd.c ++drivers/block/null_blk.h ++drivers/block/null_blk_main.c ++drivers/block/null_blk_zoned.c ++drivers/block/pktcdvd.c ++drivers/block/ps3disk.c ++drivers/block/ps3vram.c ++drivers/block/rbd.c ++drivers/block/rbd_types.h ++drivers/block/skd_main.c ++drivers/block/skd_s1120.h ++drivers/block/sunvdc.c ++drivers/block/swim.c ++drivers/block/swim3.c ++drivers/block/swim_asm.S ++drivers/block/sx8.c ++drivers/block/umem.c ++drivers/block/umem.h ++drivers/block/xen-blkfront.c ++drivers/block/xsysace.c ++drivers/block/z2ram.c ++drivers/char/Kconfig ++drivers/char/adi.c ++drivers/char/apm-emulation.c ++drivers/char/applicom.c ++drivers/char/applicom.h ++drivers/char/bsr.c ++drivers/char/ds1620.c ++drivers/char/dsp56k.c ++drivers/char/dtlk.c ++drivers/char/efirtc.c ++drivers/char/hangcheck-timer.c ++drivers/char/hpet.c ++drivers/char/hw_random/Kconfig ++drivers/char/hw_random/amd-rng.c ++drivers/char/hw_random/atmel-rng.c ++drivers/char/hw_random/bcm2835-rng.c ++drivers/char/hw_random/cavium-rng-vf.c ++drivers/char/hw_random/cavium-rng.c ++drivers/char/hw_random/exynos-trng.c ++drivers/char/hw_random/geode-rng.c ++drivers/char/hw_random/hisi-rng.c ++drivers/char/hw_random/imx-rngc.c ++drivers/char/hw_random/intel-rng.c ++drivers/char/hw_random/iproc-rng200.c ++drivers/char/hw_random/ixp4xx-rng.c ++drivers/char/hw_random/ks-sa-rng.c ++drivers/char/hw_random/meson-rng.c ++drivers/char/hw_random/mtk-rng.c ++drivers/char/hw_random/mxc-rnga.c ++drivers/char/hw_random/n2-asm.S ++drivers/char/hw_random/n2-drv.c ++drivers/char/hw_random/n2rng.h ++drivers/char/hw_random/nomadik-rng.c ++drivers/char/hw_random/octeon-rng.c ++drivers/char/hw_random/omap-rng.c ++drivers/char/hw_random/omap3-rom-rng.c ++drivers/char/hw_random/optee-rng.c ++drivers/char/hw_random/pasemi-rng.c ++drivers/char/hw_random/pic32-rng.c ++drivers/char/hw_random/powernv-rng.c ++drivers/char/hw_random/pseries-rng.c ++drivers/char/hw_random/s390-trng.c ++drivers/char/hw_random/st-rng.c ++drivers/char/hw_random/stm32-rng.c ++drivers/char/hw_random/timeriomem-rng.c ++drivers/char/hw_random/tx4939-rng.c ++drivers/char/hw_random/via-rng.c ++drivers/char/hw_random/xgene-rng.c ++drivers/char/lp.c ++drivers/char/mbcs.c ++drivers/char/mbcs.h ++drivers/char/mspec.c ++drivers/char/nsc_gpio.c ++drivers/char/nvram.c ++drivers/char/nwbutton.c ++drivers/char/nwbutton.h ++drivers/char/nwflash.c ++drivers/char/pc8736x_gpio.c ++drivers/char/powernv-op-panel.c ++drivers/char/ppdev.c ++drivers/char/ps3flash.c ++drivers/char/raw.c ++drivers/char/rtc.c ++drivers/char/scx200_gpio.c ++drivers/char/snsc.c ++drivers/char/snsc.h ++drivers/char/snsc_event.c ++drivers/char/sonypi.c ++drivers/char/tb0219.c ++drivers/char/tlclk.c ++drivers/char/toshiba.c ++drivers/char/ttyprintk.c ++drivers/char/uv_mmtimer.c ++drivers/clocksource/Kconfig ++drivers/clocksource/acpi_pm.c ++drivers/clocksource/arc_timer.c ++drivers/clocksource/arm_arch_timer.c ++drivers/clocksource/arm_global_timer.c ++drivers/clocksource/armv7m_systick.c ++drivers/clocksource/asm9260_timer.c ++drivers/clocksource/bcm2835_timer.c ++drivers/clocksource/bcm_kona_timer.c ++drivers/clocksource/clksrc-dbx500-prcmu.c ++drivers/clocksource/clksrc_st_lpc.c ++drivers/clocksource/clps711x-timer.c ++drivers/clocksource/dummy_timer.c ++drivers/clocksource/dw_apb_timer.c ++drivers/clocksource/dw_apb_timer_of.c ++drivers/clocksource/em_sti.c ++drivers/clocksource/exynos_mct.c ++drivers/clocksource/h8300_timer16.c ++drivers/clocksource/h8300_timer8.c ++drivers/clocksource/h8300_tpu.c ++drivers/clocksource/hyperv_timer.c ++drivers/clocksource/jcore-pit.c ++drivers/clocksource/mips-gic-timer.c ++drivers/clocksource/mmio.c ++drivers/clocksource/mps2-timer.c ++drivers/clocksource/mxs_timer.c ++drivers/clocksource/nomadik-mtu.c ++drivers/clocksource/numachip.c ++drivers/clocksource/renesas-ostm.c ++drivers/clocksource/samsung_pwm_timer.c ++drivers/clocksource/scx200_hrt.c ++drivers/clocksource/sh_cmt.c ++drivers/clocksource/sh_mtu2.c ++drivers/clocksource/sh_tmu.c ++drivers/clocksource/timer-armada-370-xp.c ++drivers/clocksource/timer-atcpit100.c ++drivers/clocksource/timer-atlas7.c ++drivers/clocksource/timer-atmel-pit.c ++drivers/clocksource/timer-atmel-st.c ++drivers/clocksource/timer-atmel-tcb.c ++drivers/clocksource/timer-cadence-ttc.c ++drivers/clocksource/timer-cs5535.c ++drivers/clocksource/timer-davinci.c ++drivers/clocksource/timer-digicolor.c ++drivers/clocksource/timer-efm32.c ++drivers/clocksource/timer-fsl-ftm.c ++drivers/clocksource/timer-fttmr010.c ++drivers/clocksource/timer-gx6605s.c ++drivers/clocksource/timer-imx-gpt.c ++drivers/clocksource/timer-imx-sysctr.c ++drivers/clocksource/timer-imx-tpm.c ++drivers/clocksource/timer-integrator-ap.c ++drivers/clocksource/timer-ixp4xx.c ++drivers/clocksource/timer-keystone.c ++drivers/clocksource/timer-lpc32xx.c ++drivers/clocksource/timer-mediatek.c ++drivers/clocksource/timer-meson6.c ++drivers/clocksource/timer-milbeaut.c ++drivers/clocksource/timer-mp-csky.c ++drivers/clocksource/timer-npcm7xx.c ++drivers/clocksource/timer-nps.c ++drivers/clocksource/timer-of.c ++drivers/clocksource/timer-of.h ++drivers/clocksource/timer-orion.c ++drivers/clocksource/timer-owl.c ++drivers/clocksource/timer-oxnas-rps.c ++drivers/clocksource/timer-pistachio.c ++drivers/clocksource/timer-prima2.c ++drivers/clocksource/timer-probe.c ++drivers/clocksource/timer-pxa.c ++drivers/clocksource/timer-qcom.c ++drivers/clocksource/timer-rda.c ++drivers/clocksource/timer-riscv.c ++drivers/clocksource/timer-rockchip.c ++drivers/clocksource/timer-sp.h ++drivers/clocksource/timer-sp804.c ++drivers/clocksource/timer-sprd.c ++drivers/clocksource/timer-stm32.c ++drivers/clocksource/timer-sun4i.c ++drivers/clocksource/timer-sun5i.c ++drivers/clocksource/timer-tango-xtal.c ++drivers/clocksource/timer-tegra.c ++drivers/clocksource/timer-ti-32k.c ++drivers/clocksource/timer-ti-dm.c ++drivers/clocksource/timer-u300.c ++drivers/clocksource/timer-versatile.c ++drivers/clocksource/timer-vf-pit.c ++drivers/clocksource/timer-vt8500.c ++drivers/clocksource/timer-zevio.c ++drivers/dax/Kconfig ++drivers/dma-buf/Kconfig ++drivers/md/Kconfig ++drivers/md/dm-bio-prison-v1.c ++drivers/md/dm-bio-prison-v1.h ++drivers/md/dm-bio-prison-v2.c ++drivers/md/dm-bio-prison-v2.h ++drivers/md/dm-bio-record.h ++drivers/md/dm-cache-background-tracker.c ++drivers/md/dm-cache-background-tracker.h ++drivers/md/dm-cache-block-types.h ++drivers/md/dm-cache-metadata.c ++drivers/md/dm-cache-metadata.h ++drivers/md/dm-cache-policy-internal.h ++drivers/md/dm-cache-policy-smq.c ++drivers/md/dm-cache-policy.c ++drivers/md/dm-cache-policy.h ++drivers/md/dm-cache-target.c ++drivers/md/dm-delay.c ++drivers/md/dm-dust.c ++drivers/md/dm-era-target.c ++drivers/md/dm-exception-store.c ++drivers/md/dm-exception-store.h ++drivers/md/dm-flakey.c ++drivers/md/dm-integrity.c ++drivers/md/dm-log-userspace-base.c ++drivers/md/dm-log-userspace-transfer.c ++drivers/md/dm-log-userspace-transfer.h ++drivers/md/dm-log-writes.c ++drivers/md/dm-log.c ++drivers/md/dm-mpath.c ++drivers/md/dm-mpath.h ++drivers/md/dm-path-selector.c ++drivers/md/dm-path-selector.h ++drivers/md/dm-queue-length.c ++drivers/md/dm-raid.c ++drivers/md/dm-raid1.c ++drivers/md/dm-region-hash.c ++drivers/md/dm-round-robin.c ++drivers/md/dm-service-time.c ++drivers/md/dm-snap-persistent.c ++drivers/md/dm-snap-transient.c ++drivers/md/dm-snap.c ++drivers/md/dm-switch.c ++drivers/md/dm-thin-metadata.c ++drivers/md/dm-thin-metadata.h ++drivers/md/dm-thin.c ++drivers/md/dm-unstripe.c ++drivers/md/dm-writecache.c ++drivers/md/dm-zero.c ++drivers/md/dm-zoned-metadata.c ++drivers/md/dm-zoned-reclaim.c ++drivers/md/dm-zoned-target.c ++drivers/md/dm-zoned.h ++drivers/md/md-bitmap.c ++drivers/md/md-bitmap.h ++drivers/md/md-cluster.c ++drivers/md/md-cluster.h ++drivers/md/md-faulty.c ++drivers/md/md-linear.c ++drivers/md/md-linear.h ++drivers/md/md-multipath.c ++drivers/md/md-multipath.h ++drivers/md/md.c ++drivers/md/md.h ++drivers/md/raid0.c ++drivers/md/raid0.h ++drivers/md/raid1-10.c ++drivers/md/raid1.c ++drivers/md/raid1.h ++drivers/md/raid10.c ++drivers/md/raid10.h ++drivers/md/raid5-cache.c ++drivers/md/raid5-log.h ++drivers/md/raid5-ppl.c ++drivers/md/raid5.c ++drivers/md/raid5.h ++drivers/net/Kconfig ++drivers/net/Space.c ++drivers/net/dummy.c ++drivers/net/eql.c ++drivers/net/geneve.c ++drivers/net/gtp.c ++drivers/net/ifb.c ++drivers/net/macsec.c ++drivers/net/macvlan.c ++drivers/net/macvtap.c ++drivers/net/mdio.c ++drivers/net/mii.c ++drivers/net/netconsole.c ++drivers/net/ntb_netdev.c ++drivers/net/rionet.c ++drivers/net/sb1000.c ++drivers/net/sungem_phy.c ++drivers/net/thunderbolt.c ++drivers/net/vrf.c ++drivers/net/vsockmon.c ++drivers/net/vxlan.c ++drivers/net/xen-netfront.c ++drivers/pci/Kconfig ++drivers/pci/ats.c ++drivers/pci/ecam.c ++drivers/pci/iov.c ++drivers/pci/msi.c ++drivers/pci/of.c ++drivers/pci/p2pdma.c ++drivers/pci/pci-acpi.c ++drivers/pci/pci-bridge-emul.c ++drivers/pci/pci-bridge-emul.h ++drivers/pci/pci-label.c ++drivers/pci/pci-mid.c ++drivers/pci/pci-pf-stub.c ++drivers/pci/pci-stub.c ++drivers/pci/pcie/Kconfig ++drivers/pci/pcie/Makefile ++drivers/pci/pcie/aer.c ++drivers/pci/pcie/aer_inject.c ++drivers/pci/pcie/aspm.c ++drivers/pci/pcie/bw_notification.c ++drivers/pci/pcie/dpc.c ++drivers/pci/pcie/err.c ++drivers/pci/pcie/pme.c ++drivers/pci/pcie/portdrv_core.c ++drivers/pci/pcie/portdrv_pci.c ++drivers/pci/pcie/ptm.c ++drivers/pci/quirks.c ++drivers/pci/syscall.c ++drivers/pci/xen-pcifront.c ++drivers/rtc/Kconfig ++drivers/rtc/dev.c ++drivers/rtc/nvmem.c ++drivers/rtc/proc.c ++drivers/rtc/rtc-88pm80x.c ++drivers/rtc/rtc-88pm860x.c ++drivers/rtc/rtc-ab-b5ze-s3.c ++drivers/rtc/rtc-ab-eoz9.c ++drivers/rtc/rtc-ab3100.c ++drivers/rtc/rtc-ab8500.c ++drivers/rtc/rtc-abx80x.c ++drivers/rtc/rtc-ac100.c ++drivers/rtc/rtc-armada38x.c ++drivers/rtc/rtc-as3722.c ++drivers/rtc/rtc-asm9260.c ++drivers/rtc/rtc-aspeed.c ++drivers/rtc/rtc-at91rm9200.c ++drivers/rtc/rtc-at91rm9200.h ++drivers/rtc/rtc-at91sam9.c ++drivers/rtc/rtc-au1xxx.c ++drivers/rtc/rtc-bd70528.c ++drivers/rtc/rtc-bq32k.c ++drivers/rtc/rtc-bq4802.c ++drivers/rtc/rtc-brcmstb-waketimer.c ++drivers/rtc/rtc-cadence.c ++drivers/rtc/rtc-coh901331.c ++drivers/rtc/rtc-cpcap.c ++drivers/rtc/rtc-cros-ec.c ++drivers/rtc/rtc-da9052.c ++drivers/rtc/rtc-da9055.c ++drivers/rtc/rtc-da9063.c ++drivers/rtc/rtc-davinci.c ++drivers/rtc/rtc-digicolor.c ++drivers/rtc/rtc-dm355evm.c ++drivers/rtc/rtc-ds1216.c ++drivers/rtc/rtc-ds1286.c ++drivers/rtc/rtc-ds1302.c ++drivers/rtc/rtc-ds1305.c ++drivers/rtc/rtc-ds1307.c ++drivers/rtc/rtc-ds1343.c ++drivers/rtc/rtc-ds1347.c ++drivers/rtc/rtc-ds1374.c ++drivers/rtc/rtc-ds1390.c ++drivers/rtc/rtc-ds1511.c ++drivers/rtc/rtc-ds1553.c ++drivers/rtc/rtc-ds1672.c ++drivers/rtc/rtc-ds1685.c ++drivers/rtc/rtc-ds1742.c ++drivers/rtc/rtc-ds2404.c ++drivers/rtc/rtc-ds3232.c ++drivers/rtc/rtc-efi-platform.c ++drivers/rtc/rtc-efi.c ++drivers/rtc/rtc-em3027.c ++drivers/rtc/rtc-ep93xx.c ++drivers/rtc/rtc-fm3130.c ++drivers/rtc/rtc-ftrtc010.c ++drivers/rtc/rtc-generic.c ++drivers/rtc/rtc-goldfish.c ++drivers/rtc/rtc-hid-sensor-time.c ++drivers/rtc/rtc-hym8563.c ++drivers/rtc/rtc-imx-sc.c ++drivers/rtc/rtc-imxdi.c ++drivers/rtc/rtc-isl12022.c ++drivers/rtc/rtc-isl12026.c ++drivers/rtc/rtc-isl1208.c ++drivers/rtc/rtc-jz4740.c ++drivers/rtc/rtc-lp8788.c ++drivers/rtc/rtc-lpc24xx.c ++drivers/rtc/rtc-lpc32xx.c ++drivers/rtc/rtc-ls1x.c ++drivers/rtc/rtc-m41t80.c ++drivers/rtc/rtc-m41t93.c ++drivers/rtc/rtc-m41t94.c ++drivers/rtc/rtc-m48t35.c ++drivers/rtc/rtc-m48t59.c ++drivers/rtc/rtc-m48t86.c ++drivers/rtc/rtc-max6900.c ++drivers/rtc/rtc-max6902.c ++drivers/rtc/rtc-max6916.c ++drivers/rtc/rtc-max77686.c ++drivers/rtc/rtc-max8907.c ++drivers/rtc/rtc-max8925.c ++drivers/rtc/rtc-max8997.c ++drivers/rtc/rtc-max8998.c ++drivers/rtc/rtc-mc13xxx.c ++drivers/rtc/rtc-mcp795.c ++drivers/rtc/rtc-meson.c ++drivers/rtc/rtc-moxart.c ++drivers/rtc/rtc-mpc5121.c ++drivers/rtc/rtc-mrst.c ++drivers/rtc/rtc-msm6242.c ++drivers/rtc/rtc-mt6397.c ++drivers/rtc/rtc-mt7622.c ++drivers/rtc/rtc-mv.c ++drivers/rtc/rtc-mxc.c ++drivers/rtc/rtc-mxc_v2.c ++drivers/rtc/rtc-nuc900.c ++drivers/rtc/rtc-omap.c ++drivers/rtc/rtc-opal.c ++drivers/rtc/rtc-palmas.c ++drivers/rtc/rtc-pcap.c ++drivers/rtc/rtc-pcf2123.c ++drivers/rtc/rtc-pcf2127.c ++drivers/rtc/rtc-pcf50633.c ++drivers/rtc/rtc-pcf85063.c ++drivers/rtc/rtc-pcf8523.c ++drivers/rtc/rtc-pcf85363.c ++drivers/rtc/rtc-pcf8563.c ++drivers/rtc/rtc-pcf8583.c ++drivers/rtc/rtc-pic32.c ++drivers/rtc/rtc-pl030.c ++drivers/rtc/rtc-pl031.c ++drivers/rtc/rtc-pm8xxx.c ++drivers/rtc/rtc-ps3.c ++drivers/rtc/rtc-puv3.c ++drivers/rtc/rtc-pxa.c ++drivers/rtc/rtc-r7301.c ++drivers/rtc/rtc-r9701.c ++drivers/rtc/rtc-rc5t583.c ++drivers/rtc/rtc-rk808.c ++drivers/rtc/rtc-rp5c01.c ++drivers/rtc/rtc-rs5c313.c ++drivers/rtc/rtc-rs5c348.c ++drivers/rtc/rtc-rs5c372.c ++drivers/rtc/rtc-rtd119x.c ++drivers/rtc/rtc-rv3028.c ++drivers/rtc/rtc-rv3029c2.c ++drivers/rtc/rtc-rv8803.c ++drivers/rtc/rtc-rx4581.c ++drivers/rtc/rtc-rx6110.c ++drivers/rtc/rtc-rx8010.c ++drivers/rtc/rtc-rx8025.c ++drivers/rtc/rtc-rx8581.c ++drivers/rtc/rtc-s35390a.c ++drivers/rtc/rtc-s3c.c ++drivers/rtc/rtc-s3c.h ++drivers/rtc/rtc-s5m.c ++drivers/rtc/rtc-sa1100.c ++drivers/rtc/rtc-sa1100.h ++drivers/rtc/rtc-sc27xx.c ++drivers/rtc/rtc-sd3078.c ++drivers/rtc/rtc-sh.c ++drivers/rtc/rtc-sirfsoc.c ++drivers/rtc/rtc-snvs.c ++drivers/rtc/rtc-spear.c ++drivers/rtc/rtc-st-lpc.c ++drivers/rtc/rtc-starfire.c ++drivers/rtc/rtc-stk17ta8.c ++drivers/rtc/rtc-stm32.c ++drivers/rtc/rtc-stmp3xxx.c ++drivers/rtc/rtc-sun4v.c ++drivers/rtc/rtc-sun6i.c ++drivers/rtc/rtc-sunxi.c ++drivers/rtc/rtc-tegra.c ++drivers/rtc/rtc-test.c ++drivers/rtc/rtc-tps6586x.c ++drivers/rtc/rtc-tps65910.c ++drivers/rtc/rtc-tps80031.c ++drivers/rtc/rtc-twl.c ++drivers/rtc/rtc-tx4939.c ++drivers/rtc/rtc-v3020.c ++drivers/rtc/rtc-vr41xx.c ++drivers/rtc/rtc-vt8500.c ++drivers/rtc/rtc-wilco-ec.c ++drivers/rtc/rtc-wm831x.c ++drivers/rtc/rtc-wm8350.c ++drivers/rtc/rtc-x1205.c ++drivers/rtc/rtc-xgene.c ++drivers/rtc/rtc-zynqmp.c ++drivers/rtc/sysfs.c ++drivers/rtc/systohc.c ++drivers/tty/Kconfig ++drivers/tty/amiserial.c ++drivers/tty/cyclades.c ++drivers/tty/ehv_bytechan.c ++drivers/tty/goldfish.c ++drivers/tty/hvc/Kconfig ++drivers/tty/hvc/hvc_dcc.c ++drivers/tty/hvc/hvc_irq.c ++drivers/tty/hvc/hvc_iucv.c ++drivers/tty/hvc/hvc_opal.c ++drivers/tty/hvc/hvc_riscv_sbi.c ++drivers/tty/hvc/hvc_rtas.c ++drivers/tty/hvc/hvc_udbg.c ++drivers/tty/hvc/hvc_vio.c ++drivers/tty/hvc/hvc_xen.c ++drivers/tty/hvc/hvcs.c ++drivers/tty/hvc/hvsi.c ++drivers/tty/hvc/hvsi_lib.c ++drivers/tty/isicom.c ++drivers/tty/mips_ejtag_fdc.c ++drivers/tty/moxa.c ++drivers/tty/moxa.h ++drivers/tty/mxser.c ++drivers/tty/mxser.h ++drivers/tty/n_gsm.c ++drivers/tty/n_hdlc.c ++drivers/tty/n_r3964.c ++drivers/tty/n_tracerouter.c ++drivers/tty/n_tracesink.c ++drivers/tty/n_tracesink.h ++drivers/tty/nozomi.c ++drivers/tty/rocket.c ++drivers/tty/rocket.h ++drivers/tty/rocket_int.h ++drivers/tty/synclink.c ++drivers/tty/synclink_gt.c ++drivers/tty/synclinkmp.c ++drivers/tty/sysrq.c ++drivers/tty/ttynull.c ++drivers/tty/vcc.c ++net/sched/act_api.c ++net/sched/act_bpf.c ++net/sched/act_connmark.c ++net/sched/act_csum.c ++net/sched/act_ct.c ++net/sched/act_ctinfo.c ++net/sched/act_gact.c ++net/sched/act_ife.c ++net/sched/act_ipt.c ++net/sched/act_meta_mark.c ++net/sched/act_meta_skbprio.c ++net/sched/act_meta_skbtcindex.c ++net/sched/act_mirred.c ++net/sched/act_mpls.c ++net/sched/act_nat.c ++net/sched/act_pedit.c ++net/sched/act_police.c ++net/sched/act_sample.c ++net/sched/act_simple.c ++net/sched/act_skbedit.c ++net/sched/act_skbmod.c ++net/sched/act_tunnel_key.c ++net/sched/act_vlan.c ++net/sched/cls_api.c ++net/sched/cls_basic.c ++net/sched/cls_bpf.c ++net/sched/cls_cgroup.c ++net/sched/cls_flow.c ++net/sched/cls_flower.c ++net/sched/cls_fw.c ++net/sched/cls_matchall.c ++net/sched/cls_route.c ++net/sched/cls_rsvp.c ++net/sched/cls_rsvp.h ++net/sched/cls_rsvp6.c ++net/sched/cls_tcindex.c ++net/sched/cls_u32.c ++net/sched/em_canid.c ++net/sched/em_cmp.c ++net/sched/em_ipset.c ++net/sched/em_ipt.c ++net/sched/em_meta.c ++net/sched/em_nbyte.c ++net/sched/em_text.c ++net/sched/em_u32.c ++net/sched/ematch.c ++net/sched/sch_api.c ++net/sched/sch_atm.c ++net/sched/sch_blackhole.c ++net/sched/sch_cake.c ++net/sched/sch_cbq.c ++net/sched/sch_cbs.c ++net/sched/sch_choke.c ++net/sched/sch_codel.c ++net/sched/sch_drr.c ++net/sched/sch_dsmark.c ++net/sched/sch_etf.c ++net/sched/sch_fifo.c ++net/sched/sch_fq.c ++net/sched/sch_fq_codel.c ++net/sched/sch_gred.c ++net/sched/sch_hfsc.c ++net/sched/sch_hhf.c ++net/sched/sch_htb.c ++net/sched/sch_ingress.c ++net/sched/sch_mqprio.c ++net/sched/sch_multiq.c ++net/sched/sch_netem.c ++net/sched/sch_pie.c ++net/sched/sch_plug.c ++net/sched/sch_prio.c ++net/sched/sch_qfq.c ++net/sched/sch_red.c ++net/sched/sch_sfb.c ++net/sched/sch_sfq.c ++net/sched/sch_skbprio.c ++net/sched/sch_taprio.c ++net/sched/sch_tbf.c ++net/sched/sch_teql.c ++sound/core/compress_offload.c ++sound/core/ctljack.c ++sound/core/hrtimer.c ++sound/core/hwdep.c ++sound/core/hwdep_compat.c ++sound/core/info_oss.c ++sound/core/isadma.c ++sound/core/jack.c ++sound/core/pcm_compat.c ++sound/core/pcm_dmaengine.c ++sound/core/pcm_drm_eld.c ++sound/core/pcm_iec958.c ++sound/core/rawmidi.c ++sound/core/rawmidi_compat.c ++sound/core/seq_device.c ++sound/core/sound_oss.c ++sound/core/timer_compat.c ++sound/pci/ad1889.c ++sound/pci/ad1889.h ++sound/pci/ak4531_codec.c ++sound/pci/als300.c ++sound/pci/als4000.c ++sound/pci/atiixp.c ++sound/pci/atiixp_modem.c ++sound/pci/azt3328.c ++sound/pci/azt3328.h ++sound/pci/bt87x.c ++sound/pci/cmipci.c ++sound/pci/cs4281.c ++sound/pci/cs5530.c ++sound/pci/ens1370.c ++sound/pci/ens1371.c ++sound/pci/es1938.c ++sound/pci/es1968.c ++sound/pci/fm801.c ++sound/pci/intel8x0m.c ++sound/pci/maestro3.c ++sound/pci/rme32.c ++sound/pci/rme96.c ++sound/pci/sis7019.c ++sound/pci/sis7019.h ++sound/pci/sonicvibes.c ++sound/pci/via82xx.c ++sound/pci/via82xx_modem.c +diff -uprN linux-5.3/scripts/bonsai.sh linux-5.3-bonsai/scripts/bonsai.sh +--- linux-5.3/scripts/bonsai.sh 1969-12-31 19:00:00.000000000 -0500 ++++ linux-5.3-bonsai/scripts/bonsai.sh 2019-09-20 15:15:25.116624284 -0400 +@@ -0,0 +1,181 @@ ++#!/bin/bash ++ ++WORKDIR=/tmp/bonsai ++SCRIPT=$(realpath ${BASH_SOURCE}) ++SCRIPT_DIR=$(dirname ${SCRIPT}) ++BONSAI_LIST=${SCRIPT_DIR}/bonsai.list ++ ++test_tarfile() { ++ tarfile=$(basename ${1}) ++ base=$(tarfile_basename ${1}) ++ ++ if [[ $tarfile == $base || ${base:0:6} != "linux-" ]]; then ++ echo "Argument is not a linux source tarball name" ++ exit 1 ++ fi ++ ++ if [[ ! -f ${1} ]]; then ++ echo "Tarfile ${1} does not exist" ++ exit 1 ++ fi ++} ++ ++tarfile_basename() { ++ tarfile=$(basename ${1}) ++ # Strip .tar suffix (or .tar.xz, tar.gz, etc) ++ # output will look like "linux-5.0.1" ++ echo ${tarfile%%.tar*} ++} ++ ++extract_file_lists() { ++ ++ test_tarfile ${1} ++ ++ echo "Extracting filenames" ++ ++ tarfile=$(basename ${1}) ++ # Strip .tar suffix (or .tar.xz, tar.gz, etc) ++ # base will now look like "linux-5.0.1" ++ base=${tarfile%%.tar*} ++ ++ mkdir -p ${WORKDIR} ++ ++ # sed: ++ # '1d' skip first line ++ # 's%${base}/%%' strip prefix ${base}/ ++ # ++ tar tf ${1} | sed -e "1d; s%${base}/%%" > ${WORKDIR}/orig.all ++ ++ # split output on presence of trailing / character ++ grep -e '/$' ${WORKDIR}/orig.all > ${WORKDIR}/orig.dirs ++ grep -ve '/$' ${WORKDIR}/orig.all > ${WORKDIR}/orig.files ++} ++ ++generate_bonsai_diff() { ++ ++ if [[ $# -ne 1 ]]; then ++ echo "bonsai --generate requires original source tarball path as argument" ++ usage ++ fi ++ ++ extract_file_lists ${1} ++ ++ # dirmap is a 'set' of directories that are removed ++ # entirely in bonsai tree ++ declare -A dirmap ++ ++ :> ${WORKDIR}/bonsai.out ++ ++ echo "Processing directories" ++ ++ while read line; do ++ dir=${line%/} ++ if [[ ! -d ${dir} ]]; then ++ dirmap[$dir]=1 ++ parent=$(dirname ${dir}) ++ if [[ ! ${dirmap[$parent]} ]]; then ++ echo "${dir}" >> ${WORKDIR}/bonsai.out ++ fi ++ fi ++ done < ${WORKDIR}/orig.dirs ++ ++ echo "Processing files" ++ ++ while read line; do ++ dir=$(dirname ${line}) ++ if [[ ! ${dirmap[$dir]} && ! -f ${line} ]]; then ++ # File is not in one of the directories already marked as removed ++ # and does not exist ++ echo ${line} >> ${WORKDIR}/bonsai.out ++ fi ++ done < ${WORKDIR}/orig.files ++ ++ ++ cp ${WORKDIR}/bonsai.out ${BONSAI_LIST} ++ rm -rf ${WORKDIR} ++ exit 0 ++} ++ ++bonsai_trim() { ++ ++ if [[ ! -f ${BONSAI_LIST} ]]; then ++ echo "Bonsai list does not exist at ${BONSAI_LIST}" ++ exit 1 ++ fi ++ ++ if [[ -e .bonsai ]]; then ++ echo "Source tree is already trimmed (.bonsai directory exists)" ++ exit 1 ++ fi ++ ++ # XXX delete it if it already exists ++ mkdir -p .bonsai.tmp ++ ++ echo "Trimming source tree" ++ ++ while read line; do ++ parent=$(dirname ${line}) ++ ## XXX test if target file/dir exists and warn ++ mkdir -p .bonsai.tmp/${parent} ++ mv ${line} .bonsai.tmp/${line} ++ done < ${BONSAI_LIST} ++ ++ mv .bonsai.tmp .bonsai ++} ++ ++bonsai_revert() { ++ ++ echo "reverting removed files and directories" ++ while read line; do ++ parent=$(dirname ${line}) ++ mkdir -p ${parent} ++ ## XXX or warn... ++ if [[ -e .bonsai/${line} ]]; then ++ mv .bonsai/${line} ${line} ++ fi ++ done < ${BONSAI_LIST} ++ ++ rm -rf .bonsai ++} ++ ++usage() { ++cat <<-EOF ++USAGE: bonsai --generate path/to/linux-x.x.tar.xz ++ bonsai --trim ++ bonsai --revert ++EOF ++exit 0 ++} ++ ++if [[ ! -f Kbuild || ! -f README ]]; then ++ echo "Kbuild and README file does not exist in current directory." ++ echo "Are you executing script at root of kernel source tree?" ++ exit 1 ++fi ++ ++while [[ $# -gt 0 ]]; do ++ key=${1} ++ case $key in ++ --generate) ++ shift ++ generate_bonsai_diff $@ ++ exit 0 ++ ;; ++ --trim) ++ shift ++ bonsai_trim $@ ++ exit 0 ++ ;; ++ --revert) ++ shift ++ bonsai_revert $@ ++ exit 0 ++ ;; ++ *) ++ printf "Unknown option ${key}\n" ++ exit 1 ++ ;; ++ esac ++done ++ ++usage +diff -uprN linux-5.3/sound/Kconfig linux-5.3-bonsai/sound/Kconfig +--- linux-5.3/sound/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/Kconfig 2019-09-20 15:15:10.776623601 -0400 +@@ -8,37 +8,6 @@ menuconfig SOUND + + if SOUND + +-config SOUND_OSS_CORE +- bool +- default n +- +-config SOUND_OSS_CORE_PRECLAIM +- bool "Preclaim OSS device numbers" +- depends on SOUND_OSS_CORE +- default y +- help +- With this option enabled, the kernel will claim all OSS device +- numbers if any OSS support (native or emulation) is enabled +- whether the respective module is loaded or not and try to load the +- appropriate module using sound-slot/service-* and char-major-* +- module aliases when one of the device numbers is opened. With +- this option disabled, kernel will only claim actually in-use +- device numbers and opening a missing device will generate only the +- standard char-major-* aliases. +- +- The only visible difference is use of additional module aliases +- and whether OSS sound devices appear multiple times in +- /proc/devices. sound-slot/service-* module aliases are scheduled +- to be removed (ie. PRECLAIM won't be available) and this option is +- to make the transition easier. This option can be overridden +- during boot using the kernel parameter soundcore.preclaim_oss. +- +- Disabling this allows alternative OSS implementations. +- +- If unsure, say Y. +- +-source "sound/oss/dmasound/Kconfig" +- + if !UML + + menuconfig SND +@@ -53,52 +22,12 @@ if SND + + source "sound/core/Kconfig" + +-source "sound/drivers/Kconfig" +- +-source "sound/isa/Kconfig" +- + source "sound/pci/Kconfig" + +-source "sound/hda/Kconfig" +- +-source "sound/ppc/Kconfig" +- + source "sound/ac97/Kconfig" + +-source "sound/aoa/Kconfig" +- +-source "sound/arm/Kconfig" +- +-source "sound/atmel/Kconfig" +- +-source "sound/spi/Kconfig" +- +-source "sound/mips/Kconfig" +- +-source "sound/sh/Kconfig" +- +-# the following will depend on the order of config. +-# here assuming USB is defined before ALSA +-source "sound/usb/Kconfig" +- +-source "sound/firewire/Kconfig" +- +-# the following will depend on the order of config. +-# here assuming PCMCIA is defined before ALSA +-source "sound/pcmcia/Kconfig" +- +-source "sound/sparc/Kconfig" +- +-source "sound/parisc/Kconfig" +- +-source "sound/soc/Kconfig" +- + source "sound/x86/Kconfig" + +-source "sound/synth/Kconfig" +- +-source "sound/xen/Kconfig" +- + endif # SND + + endif # !UML +diff -uprN linux-5.3/sound/Makefile linux-5.3-bonsai/sound/Makefile +--- linux-5.3/sound/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/Makefile 2019-09-20 15:15:10.776623601 -0400 +@@ -3,10 +3,7 @@ + # + + obj-$(CONFIG_SOUND) += soundcore.o +-obj-$(CONFIG_DMASOUND) += oss/dmasound/ +-obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ sh/ synth/ usb/ \ +- firewire/ sparc/ spi/ parisc/ pcmcia/ mips/ soc/ atmel/ hda/ x86/ xen/ +-obj-$(CONFIG_SND_AOA) += aoa/ ++obj-$(CONFIG_SND) += core/ pci/ hda/ x86/ + + # This one must be compilable even if sound is configured out + obj-$(CONFIG_AC97_BUS) += ac97_bus.o +diff -uprN linux-5.3/sound/core/Kconfig linux-5.3-bonsai/sound/core/Kconfig +--- linux-5.3/sound/core/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/core/Kconfig 2019-09-20 15:15:10.776623601 -0400 +@@ -185,4 +185,3 @@ config SND_DMA_SGBUF + def_bool y + depends on X86 + +-source "sound/core/seq/Kconfig" +diff -uprN linux-5.3/sound/core/Makefile linux-5.3-bonsai/sound/core/Makefile +--- linux-5.3/sound/core/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/core/Makefile 2019-09-20 15:15:10.776623601 -0400 +@@ -7,45 +7,42 @@ + snd-y := sound.o init.o memory.o control.o misc.o device.o + ifneq ($(CONFIG_SND_PROC_FS),) + snd-y += info.o +-snd-$(CONFIG_SND_OSSEMUL) += info_oss.o ++#snd-$(CONFIG_SND_OSSEMUL) += info_oss.o + endif +-snd-$(CONFIG_ISA_DMA_API) += isadma.o +-snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o ++#snd-$(CONFIG_ISA_DMA_API) += isadma.o ++#snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o + snd-$(CONFIG_SND_VMASTER) += vmaster.o +-snd-$(CONFIG_SND_JACK) += ctljack.o jack.o ++#snd-$(CONFIG_SND_JACK) += ctljack.o jack.o + + snd-pcm-y := pcm.o pcm_native.o pcm_lib.o pcm_misc.o \ + pcm_memory.o memalloc.o + snd-pcm-$(CONFIG_SND_PCM_TIMER) += pcm_timer.o + snd-pcm-$(CONFIG_SND_DMA_SGBUF) += sgbuf.o +-snd-pcm-$(CONFIG_SND_PCM_ELD) += pcm_drm_eld.o +-snd-pcm-$(CONFIG_SND_PCM_IEC958) += pcm_iec958.o ++#snd-pcm-$(CONFIG_SND_PCM_ELD) += pcm_drm_eld.o ++#snd-pcm-$(CONFIG_SND_PCM_IEC958) += pcm_iec958.o + + # for trace-points + CFLAGS_pcm_lib.o := -I$(src) + CFLAGS_pcm_native.o := -I$(src) + +-snd-pcm-dmaengine-objs := pcm_dmaengine.o ++#snd-pcm-dmaengine-objs := pcm_dmaengine.o + +-snd-rawmidi-objs := rawmidi.o ++##snd-rawmidi-objs := rawmidi.o + snd-timer-objs := timer.o +-snd-hrtimer-objs := hrtimer.o +-snd-rtctimer-objs := rtctimer.o +-snd-hwdep-objs := hwdep.o +-snd-seq-device-objs := seq_device.o ++#snd-hrtimer-objs := hrtimer.o ++#snd-rtctimer-objs := rtctimer.o ++#snd-hwdep-objs := hwdep.o ++#snd-seq-device-objs := seq_device.o + +-snd-compress-objs := compress_offload.o ++#snd-compress-objs := compress_offload.o + + obj-$(CONFIG_SND) += snd.o +-obj-$(CONFIG_SND_HWDEP) += snd-hwdep.o ++#obj-$(CONFIG_SND_HWDEP) += snd-hwdep.o + obj-$(CONFIG_SND_TIMER) += snd-timer.o +-obj-$(CONFIG_SND_HRTIMER) += snd-hrtimer.o ++#obj-$(CONFIG_SND_HRTIMER) += snd-hrtimer.o + obj-$(CONFIG_SND_PCM) += snd-pcm.o +-obj-$(CONFIG_SND_DMAENGINE_PCM) += snd-pcm-dmaengine.o +-obj-$(CONFIG_SND_SEQ_DEVICE) += snd-seq-device.o +-obj-$(CONFIG_SND_RAWMIDI) += snd-rawmidi.o ++#obj-$(CONFIG_SND_DMAENGINE_PCM) += snd-pcm-dmaengine.o ++#obj-$(CONFIG_SND_SEQ_DEVICE) += snd-seq-device.o ++#obj-$(CONFIG_SND_RAWMIDI) += snd-rawmidi.o + +-obj-$(CONFIG_SND_OSSEMUL) += oss/ +-obj-$(CONFIG_SND_SEQUENCER) += seq/ +- +-obj-$(CONFIG_SND_COMPRESS_OFFLOAD) += snd-compress.o ++#obj-$(CONFIG_SND_COMPRESS_OFFLOAD) += snd-compress.o +diff -uprN linux-5.3/sound/pci/Kconfig linux-5.3-bonsai/sound/pci/Kconfig +--- linux-5.3/sound/pci/Kconfig 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/pci/Kconfig 2019-09-20 15:15:10.777623601 -0400 +@@ -10,652 +10,6 @@ menuconfig SND_PCI + + if SND_PCI + +-config SND_AD1889 +- tristate "Analog Devices AD1889" +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated AC97 sound +- device found in particular on the Hewlett-Packard [BCJ]-xxx0 +- class PA-RISC workstations, using the AD1819 codec. +- +- To compile this as a module, choose M here: the module +- will be called snd-ad1889. +- +-config SND_ALS300 +- tristate "Avance Logic ALS300/ALS300+" +- select SND_PCM +- select SND_AC97_CODEC +- select SND_OPL3_LIB +- depends on ZONE_DMA +- help +- Say 'Y' or 'M' to include support for Avance Logic ALS300/ALS300+ +- +- To compile this driver as a module, choose M here: the module +- will be called snd-als300 +- +-config SND_ALS4000 +- tristate "Avance Logic ALS4000" +- depends on ISA_DMA_API +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_PCM +- select SND_SB_COMMON +- help +- Say Y here to include support for soundcards based on Avance Logic +- ALS4000 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-als4000. +- +-config SND_ALI5451 +- tristate "ALi M5451 PCI Audio Controller" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for the integrated AC97 sound +- device on motherboards using the ALi M5451 Audio Controller +- (M1535/M1535D/M1535+/M1535D+ south bridges). Newer chipsets +- use the "Intel/SiS/nVidia/AMD/ALi AC97 Controller" driver. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ali5451. +- +-config SND_ASIHPI +- tristate "AudioScience ASIxxxx" +- depends on X86 +- select FW_LOADER +- select SND_PCM +- select SND_HWDEP +- help +- Say Y here to include support for AudioScience ASI sound cards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-asihpi. +- +-config SND_ATIIXP +- tristate "ATI IXP AC97 Controller" +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated AC97 sound +- device on motherboards with ATI chipsets (ATI IXP 150/200/250/ +- 300/400). +- +- To compile this driver as a module, choose M here: the module +- will be called snd-atiixp. +- +-config SND_ATIIXP_MODEM +- tristate "ATI IXP Modem" +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated MC97 modem on +- motherboards with ATI chipsets (ATI IXP 150/200/250). +- +- To compile this driver as a module, choose M here: the module +- will be called snd-atiixp-modem. +- +-config SND_AU8810 +- tristate "Aureal Advantage" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say Y here to include support for Aureal Advantage soundcards. +- +- Supported features: Hardware Mixer, SRC, EQ and SPDIF output. +- 3D support code is in place, but not yet useable. For more info, +- email the ALSA developer list, or . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-au8810. +- +-config SND_AU8820 +- tristate "Aureal Vortex" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say Y here to include support for Aureal Vortex soundcards. +- +- Supported features: Hardware Mixer and SRC. For more info, email +- the ALSA developer list, or . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-au8820. +- +-config SND_AU8830 +- tristate "Aureal Vortex 2" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say Y here to include support for Aureal Vortex 2 soundcards. +- +- Supported features: Hardware Mixer, SRC, EQ and SPDIF output. +- 3D support code is in place, but not yet useable. For more info, +- email the ALSA developer list, or . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-au8830. +- +-config SND_AW2 +- tristate "Emagic Audiowerk 2" +- help +- Say Y here to include support for Emagic Audiowerk 2 soundcards. +- +- Supported features: Analog and SPDIF output. Analog or SPDIF input. +- Note: Switch between analog and digital input does not always work. +- It can produce continuous noise. The workaround is to switch again +- (and again) between digital and analog input until it works. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-aw2. +- +- +-config SND_AZT3328 +- tristate "Aztech AZF3328 / PCI168" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_PCM +- select SND_RAWMIDI +- select SND_AC97_CODEC +- select SND_TIMER +- depends on ZONE_DMA +- help +- Say Y here to include support for Aztech AZF3328 (PCI168) +- soundcards. +- +- Supported features: AC97-"conformant" mixer, MPU401/OPL3, analog I/O +- (16bit/8bit, many sample rates [<= 66.2kHz], NO hardware mixing), +- Digital Enhanced Game Port, 1.024MHz multimedia sequencer timer, +- ext. codec (I2S port), onboard amp (4W/4Ohms/ch), suspend/resume. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-azt3328. +- +-config SND_BT87X +- tristate "Bt87x Audio Capture" +- select SND_PCM +- help +- If you want to record audio from TV cards based on +- Brooktree Bt878/Bt879 chips, say Y here and read +- . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-bt87x. +- +-config SND_BT87X_OVERCLOCK +- bool "Bt87x Audio overclocking" +- depends on SND_BT87X +- help +- Say Y here if 448000 Hz isn't enough for you and you want to +- record from the analog input with up to 1792000 Hz. +- +- Higher sample rates won't hurt your hardware, but audio +- quality may suffer. +- +-config SND_CA0106 +- tristate "SB Audigy LS / Live 24bit" +- select SND_AC97_CODEC +- select SND_RAWMIDI +- select SND_VMASTER +- help +- Say Y here to include support for the Sound Blaster Audigy LS +- and Live 24bit. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ca0106. +- +-config SND_CMIPCI +- tristate "C-Media 8338, 8738, 8768, 8770" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_PCM +- help +- If you want to use soundcards based on C-Media CMI8338, CMI8738, +- CMI8768 or CMI8770 chips, say Y here and read +- . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-cmipci. +- +-config SND_OXYGEN_LIB +- tristate +- +-config SND_OXYGEN +- tristate "C-Media 8786, 8787, 8788 (Oxygen)" +- select SND_OXYGEN_LIB +- select SND_PCM +- select SND_MPU401_UART +- help +- Say Y here to include support for sound cards based on the +- C-Media CMI8788 (Oxygen HD Audio) chip: +- * Asound A-8788 +- * Asus Xonar DG/DGX +- * AuzenTech X-Meridian +- * AuzenTech X-Meridian 2G +- * Bgears b-Enspirer +- * Club3D Theatron DTS +- * HT-Omega Claro (plus) +- * HT-Omega Claro halo (XT) +- * Kuroutoshikou CMI8787-HG2PCI +- * Razer Barracuda AC-1 +- * Sondigo Inferno +- * TempoTec/MediaTek HiFier Fantasia +- * TempoTec/MediaTek HiFier Serenade +- +- To compile this driver as a module, choose M here: the module +- will be called snd-oxygen. +- +-config SND_CS4281 +- tristate "Cirrus Logic (Sound Fusion) CS4281" +- select SND_OPL3_LIB +- select SND_RAWMIDI +- select SND_AC97_CODEC +- help +- Say Y here to include support for Cirrus Logic CS4281 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-cs4281. +- +-config SND_CS46XX +- tristate "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x" +- select SND_RAWMIDI +- select SND_AC97_CODEC +- select FW_LOADER +- help +- Say Y here to include support for Cirrus Logic CS4610/CS4612/ +- CS4614/CS4615/CS4622/CS4624/CS4630/CS4280 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-cs46xx. +- +-config SND_CS46XX_NEW_DSP +- bool "Cirrus Logic (Sound Fusion) New DSP support" +- depends on SND_CS46XX +- default y +- help +- Say Y here to use a new DSP image for SPDIF and dual codecs. +- +- This works better than the old code, so say Y. +- +-config SND_CS5530 +- tristate "CS5530 Audio" +- depends on ISA_DMA_API && (X86_32 || COMPILE_TEST) +- select SND_SB16_DSP +- help +- Say Y here to include support for audio on Cyrix/NatSemi CS5530 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-cs5530. +- +-config SND_CS5535AUDIO +- tristate "CS5535/CS5536 Audio" +- depends on X86_32 || MIPS || COMPILE_TEST +- select SND_PCM +- select SND_AC97_CODEC +- help +- Say Y here to include support for audio on CS5535 chips. It is +- referred to as NS CS5535 IO or AMD CS5535 IO companion in +- various literature. This driver also supports the CS5536 audio +- device. However, for both chips, on certain boards, you may +- need to use ac97_quirk=hp_only if your board has physically +- mapped headphone out to master output. If that works for you, +- send lspci -vvv output to the mailing list so that your board +- can be identified in the quirks list. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-cs5535audio. +- +-config SND_CTXFI +- tristate "Creative Sound Blaster X-Fi" +- select SND_PCM +- help +- If you want to use soundcards based on Creative Sound Blastr X-Fi +- boards with 20k1 or 20k2 chips, say Y here. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ctxfi. +- +-config SND_DARLA20 +- tristate "(Echoaudio) Darla20" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Darla. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-darla20 +- +-config SND_GINA20 +- tristate "(Echoaudio) Gina20" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Gina. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-gina20 +- +-config SND_LAYLA20 +- tristate "(Echoaudio) Layla20" +- select FW_LOADER +- select SND_RAWMIDI +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Layla. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-layla20 +- +-config SND_DARLA24 +- tristate "(Echoaudio) Darla24" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Darla24. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-darla24 +- +-config SND_GINA24 +- tristate "(Echoaudio) Gina24" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Gina24. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-gina24 +- +-config SND_LAYLA24 +- tristate "(Echoaudio) Layla24" +- select FW_LOADER +- select SND_RAWMIDI +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Layla24. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-layla24 +- +-config SND_MONA +- tristate "(Echoaudio) Mona" +- select FW_LOADER +- select SND_RAWMIDI +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Mona. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-mona +- +-config SND_MIA +- tristate "(Echoaudio) Mia" +- select FW_LOADER +- select SND_RAWMIDI +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Mia and Mia-midi. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-mia +- +-config SND_ECHO3G +- tristate "(Echoaudio) 3G cards" +- select FW_LOADER +- select SND_RAWMIDI +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Gina3G and Layla3G. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-echo3g +- +-config SND_INDIGO +- tristate "(Echoaudio) Indigo" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Indigo. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-indigo +- +-config SND_INDIGOIO +- tristate "(Echoaudio) Indigo IO" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Indigo IO. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-indigoio +- +-config SND_INDIGODJ +- tristate "(Echoaudio) Indigo DJ" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Indigo DJ. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-indigodj +- +-config SND_INDIGOIOX +- tristate "(Echoaudio) Indigo IOx" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Indigo IOx. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-indigoiox +- +-config SND_INDIGODJX +- tristate "(Echoaudio) Indigo DJx" +- select FW_LOADER +- select SND_PCM +- help +- Say 'Y' or 'M' to include support for Echoaudio Indigo DJx. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-indigodjx +- +-config SND_EMU10K1 +- tristate "Emu10k1 (SB Live!, Audigy, E-mu APS)" +- select FW_LOADER +- select SND_HWDEP +- select SND_RAWMIDI +- select SND_AC97_CODEC +- select SND_TIMER +- select SND_SEQ_DEVICE if SND_SEQUENCER != n +- depends on ZONE_DMA +- help +- Say Y to include support for Sound Blaster PCI 512, Live!, +- Audigy and E-mu APS (partially supported) soundcards. +- +- The confusing multitude of mixer controls is documented in +- and +- . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-emu10k1. +- +-# select SEQ stuff to min(SND_SEQUENCER,SND_XXX) +-config SND_EMU10K1_SEQ +- def_tristate SND_SEQUENCER && SND_EMU10K1 +- select SND_SEQ_MIDI_EMUL +- select SND_SEQ_VIRMIDI +- select SND_SYNTH_EMUX +- +-config SND_EMU10K1X +- tristate "Emu10k1X (Dell OEM Version)" +- select SND_AC97_CODEC +- select SND_RAWMIDI +- depends on ZONE_DMA +- help +- Say Y here to include support for the Dell OEM version of the +- Sound Blaster Live!. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-emu10k1x. +- +-config SND_ENS1370 +- tristate "(Creative) Ensoniq AudioPCI 1370" +- select SND_RAWMIDI +- select SND_PCM +- help +- Say Y here to include support for Ensoniq AudioPCI ES1370 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ens1370. +- +-config SND_ENS1371 +- tristate "(Creative) Ensoniq AudioPCI 1371/1373" +- select SND_RAWMIDI +- select SND_AC97_CODEC +- help +- Say Y here to include support for Ensoniq AudioPCI ES1371 chips and +- Sound Blaster PCI 64 or 128 soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ens1371. +- +-config SND_ES1938 +- tristate "ESS ES1938/1946/1969 (Solo-1)" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on ESS Solo-1 +- (ES1938, ES1946, ES1969) chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-es1938. +- +-config SND_ES1968 +- tristate "ESS ES1968/1978 (Maestro-1/2/2E)" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on ESS Maestro +- 1/2/2E chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-es1968. +- +-config SND_ES1968_INPUT +- bool "Enable input device for es1968 volume buttons" +- depends on SND_ES1968 +- depends on INPUT=y || INPUT=SND_ES1968 +- help +- If you say Y here, you will get an input device which reports +- keypresses for the volume buttons connected to the es1968 chip. +- If you say N the buttons will directly control the master volume. +- It is recommended to say Y. +- +-config SND_ES1968_RADIO +- bool "Enable TEA5757 radio tuner support for es1968" +- depends on SND_ES1968 +- depends on MEDIA_RADIO_SUPPORT +- depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_ES1968 +- select RADIO_ADAPTERS +- select RADIO_TEA575X +- +- help +- Say Y here to include support for TEA5757 radio tuner integrated on +- some MediaForte cards (e.g. SF64-PCE2). +- +-config SND_FM801 +- tristate "ForteMedia FM801" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say Y here to include support for soundcards based on the ForteMedia +- FM801 chip. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-fm801. +- +-config SND_FM801_TEA575X_BOOL +- bool "ForteMedia FM801 + TEA5757 tuner" +- depends on SND_FM801 +- depends on MEDIA_RADIO_SUPPORT +- depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_FM801 +- select RADIO_ADAPTERS +- select RADIO_TEA575X +- help +- Say Y here to include support for soundcards based on the ForteMedia +- FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and +- SF64-PCR) into the snd-fm801 driver. +- +-config SND_HDSP +- tristate "RME Hammerfall DSP Audio" +- select FW_LOADER +- select SND_HWDEP +- select SND_RAWMIDI +- select SND_PCM +- help +- Say Y here to include support for RME Hammerfall DSP Audio +- soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-hdsp. +- +-comment "Don't forget to add built-in firmwares for HDSP driver" +- depends on SND_HDSP=y +- +-config SND_HDSPM +- tristate "RME Hammerfall DSP MADI/RayDAT/AIO" +- select SND_HWDEP +- select SND_RAWMIDI +- select SND_PCM +- help +- Say Y here to include support for RME Hammerfall DSP MADI, +- RayDAT and AIO soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-hdspm. +- +-config SND_ICE1712 +- tristate "ICEnsemble ICE1712 (Envy24)" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- select BITREVERSE +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on the +- ICE1712 (Envy24) chip. +- +- Currently supported hardware is: M-Audio Delta 1010(LT), +- DiO 2496, 66, 44, 410, Audiophile 24/96; Digigram VX442; +- TerraTec EWX 24/96, EWS 88MT/D, DMX 6Fire, Phase 88; +- Hoontech SoundTrack DSP 24/Value/Media7.1; Event EZ8; +- Lionstracs Mediastation, Terrasoniq TS 88. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ice1712. +- +-config SND_ICE1724 +- tristate "ICE/VT1724/1720 (Envy24HT/PT)" +- select SND_RAWMIDI +- select SND_AC97_CODEC +- select SND_VMASTER +- help +- Say Y here to include support for soundcards based on +- ICE/VT1724/1720 (Envy24HT/PT) chips. +- +- Currently supported hardware is: AMP AUDIO2000; M-Audio +- Revolution 5.1, 7.1, Audiophile 192; TerraTec Aureon 5.1 Sky, +- 7.1 Space/Universe, Phase 22/28; Onkyo SE-90PCI, SE-200PCI; +- AudioTrak Prodigy 192, 7.1 (HIFI/LT/XT), HD2; Hercules +- Fortissimo IV; ESI Juli@; Pontis MS300; EGO-SYS WaveTerminal +- 192M; Albatron K8X800 Pro II; Chaintech ZNF3-150/250, 9CJS, +- AV-710; Shuttle SN25P; Philips PSC724 Ultimate Edge. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ice1724. + + config SND_INTEL8X0 + tristate "Intel/SiS/nVidia/AMD/ALi AC97 Controller" +@@ -669,245 +23,5 @@ config SND_INTEL8X0 + To compile this driver as a module, choose M here: the module + will be called snd-intel8x0. + +-config SND_INTEL8X0M +- tristate "Intel/SiS/nVidia/AMD MC97 Modem" +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated MC97 modem on +- motherboards with Intel/SiS/nVidia/AMD chipsets. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-intel8x0m. +- +-config SND_KORG1212 +- tristate "Korg 1212 IO" +- select SND_PCM +- help +- Say Y here to include support for Korg 1212IO soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-korg1212. +- +-config SND_LOLA +- tristate "Digigram Lola" +- select SND_PCM +- help +- Say Y to include support for Digigram Lola boards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-lola. +- +-config SND_LX6464ES +- tristate "Digigram LX6464ES" +- depends on HAS_IOPORT_MAP +- select SND_PCM +- help +- Say Y here to include support for Digigram LX6464ES boards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-lx6464es. +- +- +-config SND_MAESTRO3 +- tristate "ESS Allegro/Maestro3" +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on ESS Maestro 3 +- (Allegro) chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-maestro3. +- +-config SND_MAESTRO3_INPUT +- bool "Enable input device for maestro3 volume buttons" +- depends on SND_MAESTRO3 +- depends on INPUT=y || INPUT=SND_MAESTRO3 +- help +- If you say Y here, you will get an input device which reports +- keypresses for the volume buttons connected to the maestro3 chip. +- If you say N the buttons will directly control the master volume. +- It is recommended to say Y. +- +-config SND_MIXART +- tristate "Digigram miXart" +- select FW_LOADER +- select SND_HWDEP +- select SND_PCM +- help +- If you want to use Digigram miXart soundcards, say Y here and +- read . +- +- To compile this driver as a module, choose M here: the module +- will be called snd-mixart. +- +-config SND_NM256 +- tristate "NeoMagic NM256AV/ZX" +- select SND_AC97_CODEC +- help +- Say Y here to include support for NeoMagic NM256AV/ZX chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-nm256. +- +-config SND_PCXHR +- tristate "Digigram PCXHR" +- select FW_LOADER +- select SND_PCM +- select SND_HWDEP +- help +- Say Y here to include support for Digigram PCXHR boards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-pcxhr. +- +-config SND_RIPTIDE +- tristate "Conexant Riptide" +- select FW_LOADER +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say 'Y' or 'M' to include support for Conexant Riptide chip. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-riptide +- +-config SND_RME32 +- tristate "RME Digi32, 32/8, 32 PRO" +- select SND_PCM +- help +- Say Y to include support for RME Digi32, Digi32 PRO and +- Digi32/8 (Sek'd Prodif32, Prodif96 and Prodif Gold) audio +- devices. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-rme32. +- +-config SND_RME96 +- tristate "RME Digi96, 96/8, 96/8 PRO" +- select SND_PCM +- help +- Say Y here to include support for RME Digi96, Digi96/8 and +- Digi96/8 PRO/PAD/PST soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-rme96. +- +-config SND_RME9652 +- tristate "RME Digi9652 (Hammerfall)" +- select SND_PCM +- help +- Say Y here to include support for RME Hammerfall (RME +- Digi9652/Digi9636) soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-rme9652. +- +-config SND_SE6X +- tristate "Studio Evolution SE6X" +- depends on SND_OXYGEN=n && SND_VIRTUOSO=n # PCI ID conflict +- select SND_OXYGEN_LIB +- select SND_PCM +- select SND_MPU401_UART +- help +- Say Y or M here only if you actually have this sound card. +- +-config SND_SIS7019 +- tristate "SiS 7019 Audio Accelerator" +- depends on X86_32 +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for the SiS 7019 Audio Accelerator. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-sis7019. +- +-config SND_SONICVIBES +- tristate "S3 SonicVibes" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on the S3 +- SonicVibes chip. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-sonicvibes. +- +-config SND_TRIDENT +- tristate "Trident 4D-Wave DX/NX; SiS 7018" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- depends on ZONE_DMA +- help +- Say Y here to include support for soundcards based on Trident +- 4D-Wave DX/NX or SiS 7018 chips. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-trident. +- +-config SND_VIA82XX +- tristate "VIA 82C686A/B, 8233/8235 AC97 Controller" +- select SND_MPU401_UART +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated AC97 sound +- device on motherboards with VIA chipsets. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-via82xx. +- +-config SND_VIA82XX_MODEM +- tristate "VIA 82C686A/B, 8233 based Modems" +- select SND_AC97_CODEC +- help +- Say Y here to include support for the integrated MC97 modem on +- motherboards with VIA chipsets. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-via82xx-modem. +- +-config SND_VIRTUOSO +- tristate "Asus Virtuoso 66/100/200 (Xonar)" +- select SND_OXYGEN_LIB +- select SND_PCM +- select SND_MPU401_UART +- select SND_JACK +- help +- Say Y here to include support for sound cards based on the +- Asus AV66/AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X, DS, DSX, +- Essence ST (Deluxe), and Essence STX (II). +- Support for the HDAV1.3 (Deluxe) and HDAV1.3 Slim is experimental; +- for the Xense, missing. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-virtuoso. +- +-config SND_VX222 +- tristate "Digigram VX222" +- select SND_VX_LIB +- help +- Say Y here to include support for Digigram VX222 soundcards. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-vx222. +- +-config SND_YMFPCI +- tristate "Yamaha YMF724/740/744/754" +- select SND_OPL3_LIB +- select SND_MPU401_UART +- select SND_AC97_CODEC +- select SND_TIMER +- help +- Say Y here to include support for Yamaha PCI audio chips - +- YMF724, YMF724F, YMF740, YMF740C, YMF744, YMF754. +- +- To compile this driver as a module, choose M here: the module +- will be called snd-ymfpci. +- + endif # SND_PCI + +-source "sound/pci/hda/Kconfig" +diff -uprN linux-5.3/sound/pci/Makefile linux-5.3-bonsai/sound/pci/Makefile +--- linux-5.3/sound/pci/Makefile 2019-09-15 17:19:32.000000000 -0400 ++++ linux-5.3-bonsai/sound/pci/Makefile 2019-09-20 15:15:10.777623601 -0400 +@@ -4,80 +4,7 @@ + # Copyright (c) 2001 by Jaroslav Kysela + # + +-snd-ad1889-objs := ad1889.o +-snd-als300-objs := als300.o +-snd-als4000-objs := als4000.o +-snd-atiixp-objs := atiixp.o +-snd-atiixp-modem-objs := atiixp_modem.o +-snd-azt3328-objs := azt3328.o +-snd-bt87x-objs := bt87x.o +-snd-cmipci-objs := cmipci.o +-snd-cs4281-objs := cs4281.o +-snd-cs5530-objs := cs5530.o +-snd-ens1370-objs := ens1370.o ak4531_codec.o +-snd-ens1371-objs := ens1371.o +-snd-es1938-objs := es1938.o +-snd-es1968-objs := es1968.o +-snd-fm801-objs := fm801.o + snd-intel8x0-objs := intel8x0.o +-snd-intel8x0m-objs := intel8x0m.o +-snd-maestro3-objs := maestro3.o +-snd-rme32-objs := rme32.o +-snd-rme96-objs := rme96.o +-snd-sis7019-objs := sis7019.o +-snd-sonicvibes-objs := sonicvibes.o +-snd-via82xx-objs := via82xx.o +-snd-via82xx-modem-objs := via82xx_modem.o + +-# Toplevel Module Dependency +-obj-$(CONFIG_SND_AD1889) += snd-ad1889.o +-obj-$(CONFIG_SND_ALS300) += snd-als300.o +-obj-$(CONFIG_SND_ALS4000) += snd-als4000.o +-obj-$(CONFIG_SND_ATIIXP) += snd-atiixp.o +-obj-$(CONFIG_SND_ATIIXP_MODEM) += snd-atiixp-modem.o +-obj-$(CONFIG_SND_AZT3328) += snd-azt3328.o +-obj-$(CONFIG_SND_BT87X) += snd-bt87x.o +-obj-$(CONFIG_SND_CMIPCI) += snd-cmipci.o +-obj-$(CONFIG_SND_CS4281) += snd-cs4281.o +-obj-$(CONFIG_SND_CS5530) += snd-cs5530.o +-obj-$(CONFIG_SND_ENS1370) += snd-ens1370.o +-obj-$(CONFIG_SND_ENS1371) += snd-ens1371.o +-obj-$(CONFIG_SND_ES1938) += snd-es1938.o +-obj-$(CONFIG_SND_ES1968) += snd-es1968.o +-obj-$(CONFIG_SND_FM801) += snd-fm801.o +-obj-$(CONFIG_SND_INTEL8X0) += snd-intel8x0.o +-obj-$(CONFIG_SND_INTEL8X0M) += snd-intel8x0m.o +-obj-$(CONFIG_SND_MAESTRO3) += snd-maestro3.o +-obj-$(CONFIG_SND_RME32) += snd-rme32.o +-obj-$(CONFIG_SND_RME96) += snd-rme96.o +-obj-$(CONFIG_SND_SIS7019) += snd-sis7019.o +-obj-$(CONFIG_SND_SONICVIBES) += snd-sonicvibes.o +-obj-$(CONFIG_SND_VIA82XX) += snd-via82xx.o +-obj-$(CONFIG_SND_VIA82XX_MODEM) += snd-via82xx-modem.o + +-obj-$(CONFIG_SND) += \ +- ac97/ \ +- ali5451/ \ +- asihpi/ \ +- au88x0/ \ +- aw2/ \ +- ctxfi/ \ +- ca0106/ \ +- cs46xx/ \ +- cs5535audio/ \ +- lola/ \ +- lx6464es/ \ +- echoaudio/ \ +- emu10k1/ \ +- hda/ \ +- ice1712/ \ +- korg1212/ \ +- mixart/ \ +- nm256/ \ +- oxygen/ \ +- pcxhr/ \ +- riptide/ \ +- rme9652/ \ +- trident/ \ +- ymfpci/ \ +- vx222/ ++obj-$(CONFIG_SND) += ac97/ diff --git a/kernel/patches/0002-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch b/kernel/patches/0002-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch deleted file mode 100644 index 61ffcca..0000000 --- a/kernel/patches/0002-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch +++ /dev/null @@ -1,34 +0,0 @@ -From e86a8d2060f5551bc3bbb1621cce206954340cc1 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 11 Feb 2015 16:19:26 -0600 -Subject: [PATCH 02/22] cpuidle: skip synchronize_rcu() on single CPU systems - -synchronize_rcu() is pretty expensive, and on single CPU systems we don't need -it in this specific case, so skip it. - -Signed-off-by: Arjan van de Ven -Signed-off-by: Miguel Bernal Marin ---- - drivers/cpuidle/cpuidle.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c -index c73207ab..224cefc0 100644 ---- a/drivers/cpuidle/cpuidle.c -+++ b/drivers/cpuidle/cpuidle.c -@@ -307,8 +307,11 @@ void cpuidle_uninstall_idle_handler(void) - /* - * Make sure external observers (such as the scheduler) - * are done looking at pointed idle states. -+ * This is only relevant if there is more than one cpu, -+ * if there is only one CPU, that is us... and we're -+ * coherent to ourselves. - */ -- synchronize_rcu(); -+ - } - - /** --- -2.11.0 - diff --git a/kernel/patches/0003-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch b/kernel/patches/0003-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch deleted file mode 100644 index 791499c..0000000 --- a/kernel/patches/0003-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7b5447090b8fbb80a85320c880934f35acbf68a7 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 11 Feb 2015 16:25:16 -0600 -Subject: [PATCH 03/22] sysrq: skip synchronize_rcu() if there is no old op - -synchronize_rcu() is expensive. Currently it is called as part of the sysrq -registration/unregistration, which happens during boot several times. -Now, the reason for the synchronize_rcu() is to allow an old registered -operation to expire properly... which is pointless if the old operation -is NULL... -So we can save the common case of the old operation being NULL a lot of time -by just checking for non-NULL prior to the synchronize_rcu() - -Signed-off-by: Arjan van de Ven -Signed-off-by: Miguel Bernal Marin ---- - drivers/tty/sysrq.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c -index 701c085b..c60c7ba5 100644 ---- a/drivers/tty/sysrq.c -+++ b/drivers/tty/sysrq.c -@@ -1065,8 +1065,10 @@ static int __sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p, - * A concurrent __handle_sysrq either got the old op or the new op. - * Wait for it to go away before returning, so the code for an old - * op is not freed (eg. on module unload) while it is in use. -+ * This is only relevant if the old op is not NULL of course. - */ -- synchronize_rcu(); -+ if (remove_op_p) -+ synchronize_rcu(); - - return retval; - } --- -2.11.0 - diff --git a/kernel/patches/0005-vmstats-wakeups.patch b/kernel/patches/0005-vmstats-wakeups.patch deleted file mode 100644 index 57c73e1..0000000 --- a/kernel/patches/0005-vmstats-wakeups.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 43e288fed0ccb8bf17cfea69d032425e6d224b96 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 11 Feb 2015 16:47:20 -0600 -Subject: [PATCH 05/22] vmstats: wakeups - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin ---- - mm/vmstat.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mm/vmstat.c b/mm/vmstat.c -index 604f26a4..bfbbcd76 100644 ---- a/mm/vmstat.c -+++ b/mm/vmstat.c -@@ -1549,7 +1549,7 @@ static const struct file_operations proc_vmstat_file_operations = { - #ifdef CONFIG_SMP - static struct workqueue_struct *vmstat_wq; - static DEFINE_PER_CPU(struct delayed_work, vmstat_work); --int sysctl_stat_interval __read_mostly = HZ; -+int sysctl_stat_interval __read_mostly = 8 * HZ; - - #ifdef CONFIG_PROC_FS - static void refresh_vm_stats(struct work_struct *work) --- -2.11.0 - diff --git a/kernel/patches/0006-pci-probe.patch b/kernel/patches/0006-pci-probe.patch deleted file mode 100644 index 1858d21..0000000 --- a/kernel/patches/0006-pci-probe.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 9c7e56e2621a12943055442a2b4b963ee1604e4a Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 11 Feb 2015 16:53:08 -0600 -Subject: [PATCH 06/22] pci: probe - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin ---- - drivers/pci/probe.c | 43 ++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 40 insertions(+), 3 deletions(-) - -diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index d266d800..73ebc222 100644 ---- a/drivers/pci/probe.c -+++ b/drivers/pci/probe.c -@@ -182,6 +182,10 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, - - mask = type ? PCI_ROM_ADDRESS_MASK : ~0; - -+ res->name = pci_name(dev); -+ -+ printk("clr: Starting probe for %s\n", res->name); -+ - /* No printks while decoding is disabled! */ - if (!dev->mmio_always_on) { - pci_read_config_word(dev, PCI_COMMAND, &orig_cmd); -@@ -191,8 +195,6 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, - } - } - -- res->name = pci_name(dev); -- - pci_read_config_dword(dev, pos, &l); - pci_write_config_dword(dev, pos, l | mask); - pci_read_config_dword(dev, pos, &sz); -@@ -324,6 +326,8 @@ static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom) - if (dev->non_compliant_bars) - return; - -+ printk("clr: pci_read_bases start\n"); -+ - for (pos = 0; pos < howmany; pos++) { - struct resource *res = &dev->resource[pos]; - reg = PCI_BASE_ADDRESS_0 + (pos << 2); -@@ -332,11 +336,13 @@ static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom) - - if (rom) { - struct resource *res = &dev->resource[PCI_ROM_RESOURCE]; -+ printk("clr: rom path\n"); - dev->rom_base_reg = rom; - res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH | - IORESOURCE_READONLY | IORESOURCE_SIZEALIGN; - __pci_read_base(dev, pci_bar_mem32, res, rom); - } -+ printk("clr: pci_read_bases end\n"); - } - - static void pci_read_bridge_io(struct pci_bus *child) -@@ -1193,6 +1199,28 @@ static void pci_msi_setup_pci_dev(struct pci_dev *dev) - pci_msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0); - } - -+static int guess_bar_count(int class) -+{ -+ if (class == 0x068000) -+ return 0; -+ if (class == 0x020000) -+ return 2; -+ if (class == 0x010000) -+ return 2; -+ if (class == 0x00ff00) -+ return 1; -+ return 6; -+} -+ -+static int has_rom(int class, int rom) -+{ -+ if (class == 0x020000) -+ return 0; -+ if (class == 0x010000 || class == 0x00ff00) -+ return 0; -+ return rom; -+} -+ - /** - * pci_setup_device - fill in class and map information of a device - * @dev: the device structure to fill -@@ -1211,6 +1239,9 @@ int pci_setup_device(struct pci_dev *dev) - int pos = 0; - struct pci_bus_region region; - struct resource *res; -+ int maxbar; -+ -+ printk("clr: pci_setup_device start\n"); - - if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type)) - return -EIO; -@@ -1265,7 +1296,11 @@ int pci_setup_device(struct pci_dev *dev) - if (class == PCI_CLASS_BRIDGE_PCI) - goto bad; - pci_read_irq(dev); -- pci_read_bases(dev, 6, PCI_ROM_ADDRESS); -+ -+ maxbar = guess_bar_count(dev->class); -+ -+ if (class != PCI_CLASS_STORAGE_IDE) -+ pci_read_bases(dev, maxbar, has_rom(dev->class, PCI_ROM_ADDRESS)); - pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor); - pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device); - -@@ -1350,6 +1385,8 @@ int pci_setup_device(struct pci_dev *dev) - dev->class = PCI_CLASS_NOT_DEFINED << 8; - } - -+ printk("clr: pci_setup_device end\n"); -+ - /* We found a fine healthy device, go go go... */ - return 0; - } --- -2.11.0 - diff --git a/kernel/patches/0007-cgroup.patch b/kernel/patches/0007-cgroup.patch deleted file mode 100644 index 1a2aeba..0000000 --- a/kernel/patches/0007-cgroup.patch +++ /dev/null @@ -1,107 +0,0 @@ -From a672fb44791bab2e0b7cd519fbb55751fb2fbe16 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Fri, 28 Aug 2015 11:00:36 -0500 -Subject: [PATCH 07/22] cgroup - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin -Signed-off-by: Jose Carlos Venegas Munoz ---- - include/linux/cgroup-defs.h | 2 +- - kernel/cgroup.c | 24 ++++++++++++++---------- - 2 files changed, 15 insertions(+), 11 deletions(-) - -diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h -index 6fb1c34c..f5ffee9d 100644 ---- a/include/linux/cgroup-defs.h -+++ b/include/linux/cgroup-defs.h -@@ -137,7 +137,7 @@ struct cgroup_subsys_state { - - /* percpu_ref killing and RCU release */ - struct rcu_head rcu_head; -- struct work_struct destroy_work; -+ struct delayed_work destroy_work; - }; - - /* -diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 4c233437..27a71a9e 100644 ---- a/kernel/cgroup.c -+++ b/kernel/cgroup.c -@@ -73,7 +73,7 @@ - * Expiring in the middle is a performance problem not a correctness one. - * 1 sec should be enough. - */ --#define CGROUP_PIDLIST_DESTROY_DELAY HZ -+#define CGROUP_PIDLIST_DESTROY_DELAY round_jiffies_relative(HZ) - - #define CGROUP_FILE_NAME_MAX (MAX_CGROUP_TYPE_NAMELEN + \ - MAX_CFTYPE_NAME + 2) -@@ -4987,8 +4987,9 @@ static struct cftype cgroup_legacy_base_files[] = { - */ - static void css_free_work_fn(struct work_struct *work) - { -+ struct delayed_work *dwork = to_delayed_work(work); - struct cgroup_subsys_state *css = -- container_of(work, struct cgroup_subsys_state, destroy_work); -+ container_of(dwork, struct cgroup_subsys_state, destroy_work); - struct cgroup_subsys *ss = css->ss; - struct cgroup *cgrp = css->cgroup; - -@@ -5037,14 +5038,15 @@ static void css_free_rcu_fn(struct rcu_head *rcu_head) - struct cgroup_subsys_state *css = - container_of(rcu_head, struct cgroup_subsys_state, rcu_head); - -- INIT_WORK(&css->destroy_work, css_free_work_fn); -- queue_work(cgroup_destroy_wq, &css->destroy_work); -+ INIT_DELAYED_WORK(&css->destroy_work, css_free_work_fn); -+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY); - } - - static void css_release_work_fn(struct work_struct *work) - { -+ struct delayed_work *dwork = to_delayed_work(work); - struct cgroup_subsys_state *css = -- container_of(work, struct cgroup_subsys_state, destroy_work); -+ container_of(dwork, struct cgroup_subsys_state, destroy_work); - struct cgroup_subsys *ss = css->ss; - struct cgroup *cgrp = css->cgroup; - -@@ -5087,8 +5089,9 @@ static void css_release(struct percpu_ref *ref) - struct cgroup_subsys_state *css = - container_of(ref, struct cgroup_subsys_state, refcnt); - -- INIT_WORK(&css->destroy_work, css_release_work_fn); -- queue_work(cgroup_destroy_wq, &css->destroy_work); -+ INIT_DELAYED_WORK(&css->destroy_work, css_release_work_fn); -+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY); -+ - } - - static void init_and_link_css(struct cgroup_subsys_state *css, -@@ -5367,8 +5370,9 @@ static int cgroup_mkdir(struct kernfs_node *parent_kn, const char *name, - */ - static void css_killed_work_fn(struct work_struct *work) - { -+ struct delayed_work *dwork = to_delayed_work(work); - struct cgroup_subsys_state *css = -- container_of(work, struct cgroup_subsys_state, destroy_work); -+ container_of(dwork, struct cgroup_subsys_state, destroy_work); - - mutex_lock(&cgroup_mutex); - -@@ -5389,8 +5393,8 @@ static void css_killed_ref_fn(struct percpu_ref *ref) - container_of(ref, struct cgroup_subsys_state, refcnt); - - if (atomic_dec_and_test(&css->online_cnt)) { -- INIT_WORK(&css->destroy_work, css_killed_work_fn); -- queue_work(cgroup_destroy_wq, &css->destroy_work); -+ INIT_DELAYED_WORK(&css->destroy_work, css_killed_work_fn); -+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY); - } - } - --- -2.11.0 - diff --git a/kernel/patches/0008-smpboot-reuse-timer-calibration.patch b/kernel/patches/0008-smpboot-reuse-timer-calibration.patch deleted file mode 100644 index c1513a9..0000000 --- a/kernel/patches/0008-smpboot-reuse-timer-calibration.patch +++ /dev/null @@ -1,45 +0,0 @@ -From a312877651e18175726e33e4530307880d249aa5 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 11 Feb 2015 17:28:14 -0600 -Subject: [PATCH 08/22] smpboot: reuse timer calibration - -NO point recalibrating for known-constant tsc... saves 200ms+ of boot time. - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin ---- - arch/x86/kernel/smpboot.c | 2 +- - arch/x86/kernel/tsc.c | 3 +++ - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c -index 36171bcd..7f4e9cdf 100644 ---- a/arch/x86/kernel/smpboot.c -+++ b/arch/x86/kernel/smpboot.c -@@ -731,7 +731,7 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip) - pr_debug("Waiting for send to finish...\n"); - send_status = safe_apic_wait_icr_idle(); - -- udelay(init_udelay); -+ udelay(100); - - pr_debug("Deasserting INIT\n"); - -diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c -index 6e57edf3..94ab049f 100644 ---- a/arch/x86/kernel/tsc.c -+++ b/arch/x86/kernel/tsc.c -@@ -1390,6 +1390,9 @@ unsigned long calibrate_delay_is_known(void) - if (!mask) - return 0; - -+ if (cpu !=0) -+ return cpu_data(0).loops_per_jiffy; -+ - sibling = cpumask_any_but(mask, cpu); - if (sibling < nr_cpu_ids) - return cpu_data(sibling).loops_per_jiffy; --- -2.11.0 - diff --git a/kernel/patches/0009-perf.patch b/kernel/patches/0009-perf.patch deleted file mode 100644 index 60ad272..0000000 --- a/kernel/patches/0009-perf.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f1af807278f9b52c68b32e604aa4c23f1456f5d5 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 4 Nov 2015 15:17:10 -0600 -Subject: [PATCH 09/22] perf - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin ---- - arch/x86/events/intel/core.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c -index f0f197f4..9d1f4060 100644 ---- a/arch/x86/events/intel/core.c -+++ b/arch/x86/events/intel/core.c -@@ -4028,7 +4028,7 @@ __init int intel_pmu_init(void) - */ - if (x86_pmu.extra_regs) { - for (er = x86_pmu.extra_regs; er->msr; er++) { -- er->extra_msr_access = check_msr(er->msr, 0x11UL); -+ er->extra_msr_access = false; - /* Disable LBR select mapping */ - if ((er->idx == EXTRA_REG_LBR) && !er->extra_msr_access) - x86_pmu.lbr_sel_map = NULL; --- -2.11.0 - diff --git a/kernel/patches/0010-pci-probe-identify-known-devices.patch b/kernel/patches/0010-pci-probe-identify-known-devices.patch deleted file mode 100644 index b818ab9..0000000 --- a/kernel/patches/0010-pci-probe-identify-known-devices.patch +++ /dev/null @@ -1,190 +0,0 @@ -From 0f320ebfefc339814bc7efe46a83550cc6ee1453 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Sat, 14 Feb 2015 09:49:41 -0600 -Subject: [PATCH 10/22] pci: probe: identify known devices - -Author: Arjan van de Ven -Modify-by: Miguel Bernal Marin - -Signed-off-by: Miguel Bernal Marin ---- - drivers/pci/probe.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 156 insertions(+) - -diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index 73ebc222..d693b6b8 100644 ---- a/drivers/pci/probe.c -+++ b/drivers/pci/probe.c -@@ -163,6 +163,159 @@ static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar) - - #define PCI_COMMAND_DECODE_ENABLE (PCI_COMMAND_MEMORY | PCI_COMMAND_IO) - -+/* shortcut version of __pci_read_base where we know the sizes already */ -+int __pci_read_base_shortcut(struct pci_dev *dev, enum pci_bar_type type, -+ struct resource *res, unsigned int pos, u32 sz_in, u32 sz2_in) -+{ -+ u32 l, sz; -+ u64 l64, sz64, mask64; -+ struct pci_bus_region region, inverted_region; -+ -+ res->name = pci_name(dev); -+ -+ pci_read_config_dword(dev, pos, &l); -+ -+ sz = sz_in; -+ -+ /* -+ * All bits set in sz means the device isn't working properly. -+ * If the BAR isn't implemented, all bits must be 0. If it's a -+ * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit -+ * 1 must be clear. -+ * Here we set the size and is not 0xffffffff -+ */ -+ -+ /* -+ * I don't know how l can have all bits set. Copied from old code. -+ * Maybe it fixes a bug on some ancient platform. -+ */ -+ if (l == 0xffffffff) -+ l = 0; -+ -+ if (type == pci_bar_unknown) { -+ res->flags = decode_bar(dev, l); -+ res->flags |= IORESOURCE_SIZEALIGN; -+ if (res->flags & IORESOURCE_IO) { -+ l64 = l & PCI_BASE_ADDRESS_IO_MASK; -+ sz64 = sz & PCI_BASE_ADDRESS_IO_MASK; -+ mask64 = PCI_BASE_ADDRESS_IO_MASK & (u32)IO_SPACE_LIMIT; -+ } else { -+ l64 = l & PCI_BASE_ADDRESS_MEM_MASK; -+ sz64 = sz & PCI_BASE_ADDRESS_MEM_MASK; -+ mask64 = (u32)PCI_BASE_ADDRESS_MEM_MASK; -+ } -+ } else { -+ res->flags |= (l & IORESOURCE_ROM_ENABLE); -+ l64 = l & PCI_ROM_ADDRESS_MASK; -+ sz64 = sz & PCI_ROM_ADDRESS_MASK; -+ mask64 = (u32)PCI_ROM_ADDRESS_MASK; -+ } -+ -+ if (res->flags & IORESOURCE_MEM_64) { -+ pci_read_config_dword(dev, pos + 4, &l); -+ sz = sz2_in; -+ -+ l64 |= ((u64)l << 32); -+ sz64 |= ((u64)sz << 32); -+ mask64 |= ((u64)~0 << 32); -+ } -+ -+ if (!sz64) -+ goto fail; -+ -+ sz64 = pci_size(l64, sz64, mask64); -+ if (!sz64) { -+ dev_info(&dev->dev, FW_BUG "reg 0x%x: invalid BAR (can't size)\n", -+ pos); -+ goto fail; -+ } -+ -+ if (res->flags & IORESOURCE_MEM_64) { -+ if ((sizeof(dma_addr_t) < 8 || sizeof(resource_size_t) < 8) && -+ sz64 > 0x100000000ULL) { -+ res->flags |= IORESOURCE_UNSET | IORESOURCE_DISABLED; -+ res->start = 0; -+ res->end = 0; -+ dev_err(&dev->dev, "reg 0x%x: can't handle BAR larger than 4GB (size %#010llx)\n", -+ pos, (unsigned long long)sz64); -+ goto out; -+ } -+ -+ if ((sizeof(dma_addr_t) < 8) && l) { -+ /* Above 32-bit boundary; try to reallocate */ -+ res->flags |= IORESOURCE_UNSET; -+ res->start = 0; -+ res->end = sz64; -+ dev_info(&dev->dev, "reg 0x%x: can't handle BAR above 4GB (bus address %#010llx)\n", -+ pos, (unsigned long long)l64); -+ goto out; -+ } -+ } -+ -+ region.start = l64; -+ region.end = l64 + sz64; -+ -+ pcibios_bus_to_resource(dev->bus, res, ®ion); -+ pcibios_resource_to_bus(dev->bus, &inverted_region, res); -+ -+ /* -+ * If "A" is a BAR value (a bus address), "bus_to_resource(A)" is -+ * the corresponding resource address (the physical address used by -+ * the CPU. Converting that resource address back to a bus address -+ * should yield the original BAR value: -+ * -+ * resource_to_bus(bus_to_resource(A)) == A -+ * -+ * If it doesn't, CPU accesses to "bus_to_resource(A)" will not -+ * be claimed by the device. -+ */ -+ if (inverted_region.start != region.start) { -+ res->flags |= IORESOURCE_UNSET; -+ res->start = 0; -+ res->end = region.end - region.start; -+ dev_info(&dev->dev, "reg 0x%x: initial BAR value %#010llx invalid\n", -+ pos, (unsigned long long)region.start); -+ } -+ -+ goto out; -+ -+ -+fail: -+ res->flags = 0; -+out: -+ if (res->flags) -+ dev_printk(KERN_DEBUG, &dev->dev, "reg 0x%x: %pR\n", pos, res); -+ -+ return (res->flags & IORESOURCE_MEM_64) ? 1 : 0; -+} -+ -+static int is_known_device(struct pci_dev *dev, int pos, int *sz) -+{ -+ /* Red Hat, Inc : Virtio network device */ -+ if (dev->vendor == 0x1af4 && dev->device == 0x1000) { -+ if (pos == 0x10) { -+ *sz = 0xffffffe1; -+ return 1; -+ } -+ if (pos == 0x14) { -+ *sz = 0xfffff000; -+ return 1; -+ } -+ } -+ /* Red Hat, Inc : Virtio block device */ -+ if (dev->vendor == 0x1af4 && dev->device == 0x1001) { -+ if (pos == 0x10) { -+ *sz = 0xffffffc1; -+ return 1; -+ } -+ if (pos == 0x14) { -+ *sz = 0xfffff000; -+ return 1; -+ } -+ } -+ return 0; -+} -+ - /** - * pci_read_base - read a PCI BAR - * @dev: the PCI device -@@ -182,6 +335,9 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type, - - mask = type ? PCI_ROM_ADDRESS_MASK : ~0; - -+ if (is_known_device(dev, pos, &sz)) -+ return __pci_read_base_shortcut(dev, type, res, pos, sz, 0); -+ - res->name = pci_name(dev); - - printk("clr: Starting probe for %s\n", res->name); --- -2.11.0 - diff --git a/kernel/patches/0011-init-no-wait-for-the-known-devices.patch b/kernel/patches/0011-init-no-wait-for-the-known-devices.patch deleted file mode 100644 index aea4a1c..0000000 --- a/kernel/patches/0011-init-no-wait-for-the-known-devices.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 11a42057e43d77c04317eb3a3f40989b6f57864d Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Mon, 22 Jun 2015 09:33:33 -0500 -Subject: [PATCH 11/22] init: no wait for the known devices - -No wait for the known devices to complete their probing - -Author: Arjan van de Ven - -Signed-off-by: Miguel Bernal Marin ---- - init/do_mounts.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/init/do_mounts.c b/init/do_mounts.c -index dea5de95..da840946 100644 ---- a/init/do_mounts.c -+++ b/init/do_mounts.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -563,7 +564,8 @@ void __init prepare_namespace(void) - * For example, it is not atypical to wait 5 seconds here - * for the touchpad of a laptop to initialize. - */ -- wait_for_device_probe(); -+ //wait_for_device_probe(); -+ async_synchronize_full(); - - md_run_setup(); - --- -2.11.0 - diff --git a/kernel/patches/0012-ksm-wakeups.patch b/kernel/patches/0012-ksm-wakeups.patch deleted file mode 100644 index e743ec5..0000000 --- a/kernel/patches/0012-ksm-wakeups.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d8056696038fd33187ca41e25832ed3960c3ec7f Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Mon, 14 Mar 2016 11:06:46 -0600 -Subject: [PATCH 12/22] ksm-wakeups - -reduce wakeups in ksm ---- - mm/ksm.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/mm/ksm.c b/mm/ksm.c -index caa54a55..b043f871 100644 ---- a/mm/ksm.c -+++ b/mm/ksm.c -@@ -1724,8 +1724,12 @@ static int ksm_scan_thread(void *nothing) - try_to_freeze(); - - if (ksmd_should_run()) { -- schedule_timeout_interruptible( -- msecs_to_jiffies(ksm_thread_sleep_millisecs)); -+ if (ksm_thread_sleep_millisecs >= 1000) -+ schedule_timeout_interruptible( -+ msecs_to_jiffies(round_jiffies_relative(ksm_thread_sleep_millisecs))); -+ else -+ schedule_timeout_interruptible( -+ msecs_to_jiffies(ksm_thread_sleep_millisecs)); - } else { - wait_event_freezable(ksm_thread_wait, - ksmd_should_run() || kthread_should_stop()); --- -2.11.0 - diff --git a/kernel/patches/0014-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch b/kernel/patches/0014-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch deleted file mode 100644 index 41f4042..0000000 --- a/kernel/patches/0014-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c03fac43a4294098b01d6a0eadd824e6c79e70e6 Mon Sep 17 00:00:00 2001 -From: Alan Cox -Date: Thu, 10 Mar 2016 15:11:28 +0000 -Subject: [PATCH 14/22] xattr: allow setting user.* attributes on symlinks by - owner - -Kvmtool and clear containers supports using user attributes to label host -files with the virtual uid/guid of the file in the container. This allows an -end user to manage their files and a complete uid space without all the ugly -namespace stuff. - -The one gap in the support is symlinks because an end user can change the -ownership of a symbolic link. We support attributes on these files as you -can already (as root) set security attributes on them. - -The current rules seem slightly over-paranoid and as we have a use case this -patch enables updating the attributes on a symbolic link IFF you are the -owner of the synlink (as permissions are not usually meaningful on the link -itself). - -Signed-off-by: Alan Cox ---- - fs/xattr.c | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/fs/xattr.c b/fs/xattr.c -index ed8c3745..f48d608e 100644 ---- a/fs/xattr.c -+++ b/fs/xattr.c -@@ -118,15 +118,17 @@ xattr_permission(struct inode *inode, const char *name, int mask) - } - - /* -- * In the user.* namespace, only regular files and directories can have -- * extended attributes. For sticky directories, only the owner and -- * privileged users can write attributes. -+ * In the user.* namespace, only regular files, symbolic links, and -+ * directories can have extended attributes. For symbolic links and -+ * sticky directories, only the owner and privileged users can write -+ * attributes. - */ - if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) { -- if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode)) -+ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode) && !S_ISLNK(inode->i_mode)) - return (mask & MAY_WRITE) ? -EPERM : -ENODATA; -- if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) && -- (mask & MAY_WRITE) && !inode_owner_or_capable(inode)) -+ if (((S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX)) -+ || S_ISLNK(inode->i_mode)) && (mask & MAY_WRITE) -+ && !inode_owner_or_capable(inode)) - return -EPERM; - } - --- -2.11.0 - diff --git a/kernel/patches/0015-crypto-allow-testmgr-to-be-skipped.patch b/kernel/patches/0015-crypto-allow-testmgr-to-be-skipped.patch deleted file mode 100644 index a0db6b8..0000000 --- a/kernel/patches/0015-crypto-allow-testmgr-to-be-skipped.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ec4c5378faf4ab331d56706d58e112c14ec45396 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Wed, 7 Dec 2016 17:50:05 -0600 -Subject: [PATCH 15/22] crypto: allow testmgr to be skipped - ---- - crypto/testmgr.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/crypto/testmgr.c b/crypto/testmgr.c -index 62dffa00..197e9c53 100644 ---- a/crypto/testmgr.c -+++ b/crypto/testmgr.c -@@ -36,7 +36,7 @@ - - #include "internal.h" - --static bool notests; -+static bool notests = true; - module_param(notests, bool, 0644); - MODULE_PARM_DESC(notests, "disable crypto self-tests"); - --- -2.11.0 - diff --git a/kernel/patches/0016-silence-Power-down-msg.patch b/kernel/patches/0016-silence-Power-down-msg.patch deleted file mode 100644 index 3023ed5..0000000 --- a/kernel/patches/0016-silence-Power-down-msg.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 5b5f050eec3a244002b1a729627b7b610c86a4e5 Mon Sep 17 00:00:00 2001 -From: Jose Carlos Venegas Munoz -Date: Wed, 7 Dec 2016 17:53:45 -0600 -Subject: [PATCH 16/22] silence "Power down" msg - ---- - kernel/reboot.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kernel/reboot.c b/kernel/reboot.c -index bd30a973..eb6f8f6e 100644 ---- a/kernel/reboot.c -+++ b/kernel/reboot.c -@@ -261,7 +261,7 @@ void kernel_power_off(void) - pm_power_off_prepare(); - migrate_to_reboot_cpu(); - syscore_shutdown(); -- pr_emerg("Power down\n"); -+ pr_info("Power down\n"); - kmsg_dump(KMSG_DUMP_POWEROFF); - machine_power_off(); - } --- -2.11.0 - diff --git a/kernel/patches/0017-fs-9p-fix-create-unlink-getattr-idiom.patch b/kernel/patches/0017-fs-9p-fix-create-unlink-getattr-idiom.patch deleted file mode 100644 index b6a4df3..0000000 --- a/kernel/patches/0017-fs-9p-fix-create-unlink-getattr-idiom.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 3db64f7f26d077d4c05e413ac21269bc5a897c6a Mon Sep 17 00:00:00 2001 -From: Eric Van Hensbergen -Date: Tue, 21 Apr 2015 12:46:29 -0700 -Subject: [PATCH 17/22] fs/9p: fix create-unlink-getattr idiom - -Fixes several outstanding bug reports of not being able to getattr from an -open file after an unlink. This patch cleans up transient fids on an unlink -and will search open fids on a client if it detects a dentry that appears to -have been unlinked. This search is necessary because fstat does not pass fd -information through the VFS API to the filesystem, only the dentry which for -9p has an imperfect match to fids. - -Inherent in this patch is also a fix for the qid handling on create/open -which apparently wasn't being set correctly and was necessary for the search -to succeed. - -A possible optimization over this fix is to include accounting of open fids -with the inode in the private data (in a similar fashion to the way we track -transient fids with dentries). This would allow a much quicker search for -a matching open fid. - -Signed-off-by: Eric Van Hensbergen ---- - fs/9p/fid.c | 30 ++++++++++++++++++++++++++++++ - fs/9p/vfs_inode.c | 4 ++++ - net/9p/client.c | 5 ++++- - 3 files changed, 38 insertions(+), 1 deletion(-) - -diff --git a/fs/9p/fid.c b/fs/9p/fid.c -index 60fb4746..e19c9cf7 100644 ---- a/fs/9p/fid.c -+++ b/fs/9p/fid.c -@@ -54,6 +54,33 @@ void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid) - } - - /** -+ * v9fs_fid_find_global - search for a fid off of the client list -+ * @inode: return a fid pointing to a specific inode -+ * @uid: return a fid belonging to the specified user -+ * -+ */ -+ -+static struct p9_fid *v9fs_fid_find_inode(struct inode *inode, kuid_t uid) -+{ -+ struct p9_client *clnt = v9fs_inode2v9ses(inode)->clnt; -+ struct p9_fid *fid, *fidptr, *ret = NULL; -+ unsigned long flags; -+ -+ p9_debug(P9_DEBUG_VFS, " inode: %p\n", inode); -+ -+ spin_lock_irqsave(&clnt->lock, flags); -+ list_for_each_entry_safe(fid, fidptr, &clnt->fidlist, flist) { -+ if (uid_eq(fid->uid, uid) && -+ (inode->i_ino == v9fs_qid2ino(&fid->qid))) { -+ ret = fid; -+ break; -+ } -+ } -+ spin_unlock_irqrestore(&clnt->lock, flags); -+ return ret; -+} -+ -+/** - * v9fs_fid_find - retrieve a fid that belongs to the specified uid - * @dentry: dentry to look for fid in - * @uid: return fid that belongs to the specified user -@@ -80,6 +107,9 @@ static struct p9_fid *v9fs_fid_find(struct dentry *dentry, kuid_t uid, int any) - } - } - spin_unlock(&dentry->d_lock); -+ } else { -+ if (dentry->d_inode) -+ ret = v9fs_fid_find_inode(dentry->d_inode, uid); - } - - return ret; -diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c -index 30ca770c..c00487ea 100644 ---- a/fs/9p/vfs_inode.c -+++ b/fs/9p/vfs_inode.c -@@ -624,6 +624,10 @@ static int v9fs_remove(struct inode *dir, struct dentry *dentry, int flags) - - v9fs_invalidate_inode_attr(inode); - v9fs_invalidate_inode_attr(dir); -+ -+ /* invalidate all fids associated with dentry */ -+ /* NOTE: This will not include open fids */ -+ dentry->d_op->d_release(dentry); - } - return retval; - } -diff --git a/net/9p/client.c b/net/9p/client.c -index cf129fec..8284ad03 100644 ---- a/net/9p/client.c -+++ b/net/9p/client.c -@@ -1208,7 +1208,7 @@ struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname, - if (nwname) - memmove(&fid->qid, &wqids[nwqids - 1], sizeof(struct p9_qid)); - else -- fid->qid = oldfid->qid; -+ memmove(&fid->qid, &oldfid->qid, sizeof(struct p9_qid)); - - kfree(wqids); - return fid; -@@ -1261,6 +1261,7 @@ int p9_client_open(struct p9_fid *fid, int mode) - p9_is_proto_dotl(clnt) ? "RLOPEN" : "ROPEN", qid.type, - (unsigned long long)qid.path, qid.version, iounit); - -+ memmove(&fid->qid, &qid, sizeof(struct p9_qid)); - fid->mode = mode; - fid->iounit = iounit; - -@@ -1306,6 +1307,7 @@ int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, - (unsigned long long)qid->path, - qid->version, iounit); - -+ memmove(&ofid->qid, qid, sizeof(struct p9_qid)); - ofid->mode = mode; - ofid->iounit = iounit; - -@@ -1351,6 +1353,7 @@ int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode, - (unsigned long long)qid.path, - qid.version, iounit); - -+ memmove(&fid->qid, &qid, sizeof(struct p9_qid)); - fid->mode = mode; - fid->iounit = iounit; - --- -2.11.0 - diff --git a/kernel/patches/0018-rdrand.patch b/kernel/patches/0018-rdrand.patch deleted file mode 100644 index 9a9b3b6..0000000 --- a/kernel/patches/0018-rdrand.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 9ac45f2a4f0de76365e7b12414500f3a12bf028e Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Tue, 29 Mar 2016 14:29:24 -0600 -Subject: [PATCH 18/22] rdrand - ---- - arch/x86/kernel/cpu/rdrand.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/x86/kernel/cpu/rdrand.c b/arch/x86/kernel/cpu/rdrand.c -index cfa97ff6..cd7aa166 100644 ---- a/arch/x86/kernel/cpu/rdrand.c -+++ b/arch/x86/kernel/cpu/rdrand.c -@@ -48,6 +48,7 @@ void x86_init_rdrand(struct cpuinfo_x86 *c) - if (!cpu_has(c, X86_FEATURE_RDRAND)) - return; - -+ return; - for (i = 0; i < SANITY_CHECK_LOOPS; i++) { - if (!rdrand_long(&tmp)) { - clear_cpu_cap(c, X86_FEATURE_RDRAND); --- -2.11.0 - diff --git a/kernel/patches/0019-reboot.patch b/kernel/patches/0019-reboot.patch deleted file mode 100644 index 133a5e3..0000000 --- a/kernel/patches/0019-reboot.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 1629faac6cc01351c26608c3ea8c669c8b87459b Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Thu, 11 Feb 2016 11:06:26 -0600 -Subject: [PATCH 19/22] reboot - ---- - kernel/reboot.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/kernel/reboot.c b/kernel/reboot.c -index eb6f8f6e..b367c1e0 100644 ---- a/kernel/reboot.c -+++ b/kernel/reboot.c -@@ -309,7 +309,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, - * halt when pm_power_off is not set do it the easy way. - */ - if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off) -- cmd = LINUX_REBOOT_CMD_HALT; -+ cmd = LINUX_REBOOT_CMD_RESTART; - - mutex_lock(&reboot_mutex); - switch (cmd) { -@@ -326,7 +326,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, - break; - - case LINUX_REBOOT_CMD_HALT: -- kernel_halt(); -+ kernel_restart(NULL); - do_exit(0); - panic("cannot halt"); - --- -2.11.0 - diff --git a/kernel/patches/0020-no-early-modprobe.patch b/kernel/patches/0020-no-early-modprobe.patch deleted file mode 100644 index 2342ee4..0000000 --- a/kernel/patches/0020-no-early-modprobe.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9424467a5d1fb1f971076187c07c78a81e9cf661 Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven -Date: Thu, 11 Feb 2016 11:07:54 -0600 -Subject: [PATCH 20/22] no early modprobe - ---- - kernel/kmod.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kernel/kmod.c b/kernel/kmod.c -index 0277d121..20b5777f 100644 ---- a/kernel/kmod.c -+++ b/kernel/kmod.c -@@ -557,7 +557,7 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info, int wait) - DECLARE_COMPLETION_ONSTACK(done); - int retval = 0; - -- if (!sub_info->path) { -+ if (!sub_info->path || system_state == SYSTEM_BOOTING) { - call_usermodehelper_freeinfo(sub_info); - return -EINVAL; - } --- -2.11.0 - diff --git a/kernel/patches/0022-Show-restart-information-using-info-log.patch b/kernel/patches/0022-Show-restart-information-using-info-log.patch deleted file mode 100644 index 02238c6..0000000 --- a/kernel/patches/0022-Show-restart-information-using-info-log.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f209324e2d027b432870b64847122e55ba805ee9 Mon Sep 17 00:00:00 2001 -From: Dimitri John Ledkov -Date: Thu, 11 Feb 2016 13:14:53 -0600 -Subject: [PATCH 22/22] Show restart information using info log - ---- - kernel/reboot.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/kernel/reboot.c b/kernel/reboot.c -index b367c1e0..cfd60137 100644 ---- a/kernel/reboot.c -+++ b/kernel/reboot.c -@@ -217,9 +217,9 @@ void kernel_restart(char *cmd) - migrate_to_reboot_cpu(); - syscore_shutdown(); - if (!cmd) -- pr_emerg("Restarting system\n"); -+ pr_info("Restarting system\n"); - else -- pr_emerg("Restarting system with command '%s'\n", cmd); -+ pr_info("Restarting system with command '%s'\n", cmd); - kmsg_dump(KMSG_DUMP_RESTART); - machine_restart(cmd); - } --- -2.11.0 - diff --git a/kernel/v4.9.56.sha256 b/kernel/v4.9.56.sha256 deleted file mode 100644 index f218ef5..0000000 --- a/kernel/v4.9.56.sha256 +++ /dev/null @@ -1,2 +0,0 @@ -66df3d3c25d3627da87b612db9f0158b652d949b5e8b27ac38c6c5957fa2bf72 downloads/linux-4.9.56.tar -5b0d7ac640b6c1f20524cf6042ad39bb5d8f2184ca5ef7a9cd309e5b8a5c9b60 downloads/v4.9.56-unofficial_grsec-20171013093040.diff diff --git a/kernel/v5.3.sha256 b/kernel/v5.3.sha256 new file mode 100644 index 0000000..07ae042 --- /dev/null +++ b/kernel/v5.3.sha256 @@ -0,0 +1 @@ +d6434bf06da20d6954efdf7639d9fc105ca3b1fb01338ab5d9b6deae4bf72e15 downloads/linux-5.3.tar