From 8ae0d14768687882b4eb44a98761bb16fc27e7fc Mon Sep 17 00:00:00 2001 From: Rmys Date: Sat, 4 May 2024 16:26:44 +0300 Subject: [PATCH] kernel-6.6.30 --- .../kernel/files/configs/kernel-x86_64-config | 3204 +- .../files/configs/kernel5-x86_64-config | 10695 ++ .../files/patches/aufs6/aufs6-base.patch | 209 + .../files/patches/aufs6/aufs6-kbuild.patch | 24 + .../files/patches/aufs6/aufs6-loopback.patch | 241 + .../files/patches/aufs6/aufs6-mmap.patch | 428 + .../aufs6-standalone.patch} | 156 +- .../aufs6.6-20240226.patch} | 3795 +- .../files/patches/aufs6/lockdep-debug.patch | 16 + .../files/patches/aufs6/tmpfs-idr.patch | 213 + .../kernel/files/patches/aufs6/vfs-ino.patch | 24 + .../files/patches/linux/patch-6.6.30.xz | Bin 0 -> 1872228 bytes .../patches/mageia/3rd-3rdparty-merge.patch | 57 - .../patches/mageia/3rd-3rdparty-tree.patch | 21 - .../patches/mageia/3rd-fix-kconfig.patch | 34 - .../patches/mageia/3rd-ndiswrapper-1.63.patch | 26570 ----- .../mageia/3rd-ndiswrapper-Kconfig.patch | 7 - .../3rd-ndiswrapper-Makefile-build-fix.patch | 45 - .../3rd-niswrapper-Kconfig-Makefile.patch | 16 - .../mageia/3rd-rtl8223de-kernel-5.6.patch | 244 - .../3rd-rtl8723de-Kconfig-Makefile.patch | 16 - ...3rd-rtl8723de-add-kernel-5.8-support.patch | 79 - .../mageia/3rd-rtl8723de-fix-redefine.patch | 13 - .../mageia/3rd-rtl8723de-nodebug.patch | 11 - .../3rd-rtl8812au-Kconfig-Makefile.patch | 16 - .../mageia/3rd-rtl8812au-kernel-5.10.patch | 281 - .../mageia/3rd-rtl8812au-kernel-5.12.patch | 12 - .../mageia/3rd-rtl8812au-kernel-5.15.patch | 66 - .../patches/mageia/3rd-rtl8812au-rename.patch | 78 - .../mageia/3rd-rtl8821ce-5.8-fix.patch | 301 - .../3rd-rtl8821ce-Kconfig-Makefile.patch | 20 - .../mageia/3rd-rtl8821ce-kernel-5.10.patch | 162 - .../mageia/3rd-rtl8821ce-kernel-5.12.patch | 12 - .../mageia/3rd-rtl8821ce-kernel-5.15.patch | 66 - .../patches/mageia/3rd-viahss-0.92.patch | 189 - .../mageia/3rd-viahss-2.6.35-buildfix.patch | 20 - .../mageia/3rd-viahss-3.0-buildfix.patch | 19 - .../mageia/3rd-viahss-Kconfig-Makefile.patch | 16 - .../patches/mageia/3rd-viahss-config.patch | 18 - .../mageia/3rd-viahss-module-license.patch | 7 - .../files/patches/mageia/CVE-2019-12379.patch | 37 - ...9-DCCP-CCID-structure-use-after-free.patch | 305 - ...github-https-github.com-for-terrelln.patch | 33 + .../patches/mageia/fs-aufs5.10-tristate.patch | 24 - .../files/patches/mageia/fs-aufs5.10.patch | 37866 ------- .../mageia/fs-aufs5.15-symbol-exports.patch | 260 - .../patches/mageia/fs-aufs5.15-tristate.patch | 24 - ...s-do-not-list-TID-0-in-proc-pid-task.patch | 36 - .../mageia/hack-broken-rtla-cleaner.patch | 17 + ...Add-missing-MODULE_FIRMWARE-for-pnvm.patch | 42 + .../mageia/lib-zstd-Fix-comment-typo.patch | 29 + ...zstd-clean-up-double-word-in-comment.patch | 38 + ...-zstd-fix-repeated-words-in-comments.patch | 29 + ...less-iwlwifi-add-new-pci-id-for-6235.patch | 31 + .../mageia/net-wireless-rtw88-6.2-git.patch | 2377 + ...ngs-to-prevent-potential-hw-deadlock.patch | 74 - .../net-wireless-rtw88-add-8723de-alias.patch | 14 + ...-CRC-of-VHT-SIG-B-in-802.11ac-signal.patch | 143 - .../mageia/net-wireless-rtw89-6.2-git.patch | 40911 +++++++ ...ss-rtw89-add-Realtek-802.11ax-driver.patch | 91474 ---------------- .../platform-x86-add-shuttle-wmi-driver.patch | 18 +- .../mageia/staging-rtl8812au-20231117.patch | 1720 + .../staging-rtl8812au-Kconfig-Makefile.patch | 33 + .../mageia/staging-rtl8812au-rename.patch | 78 + ...tl8812au.patch => staging-rtl8812au.patch} | 23953 +--- ...ssion-for-Broadcom-PCIe-wifi-devices.patch | 34 + .../wifi-iwlwifi-fw-skip-ppag-for-jf.patch | 46 + ...wlwifi-pcie-add-support-for-AX101NGW.patch | 33 + ...alization-of-rx-link-and-rx-link_sta.patch | 451 + .../x86-default_poweroff_up_machines.patch | 58 + ...pci-toshiba-equium-a60-assign-busses.patch | 29 + ...ommon-module-exports-to-zstd_common_.patch | 163 + .../mageia/zstd-import-usptream-v1.5.2.patch | 14871 +++ kernel/kernel/pspec.xml | 89 +- 74 files changed, 80864 insertions(+), 181877 deletions(-) create mode 100644 kernel/kernel/files/configs/kernel5-x86_64-config create mode 100644 kernel/kernel/files/patches/aufs6/aufs6-base.patch create mode 100644 kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch create mode 100644 kernel/kernel/files/patches/aufs6/aufs6-loopback.patch create mode 100644 kernel/kernel/files/patches/aufs6/aufs6-mmap.patch rename kernel/kernel/files/patches/{mageia/fs-aufs5.10-symbol-exports.patch => aufs6/aufs6-standalone.patch} (53%) rename kernel/kernel/files/patches/{mageia/fs-aufs5.15.patch => aufs6/aufs6.6-20240226.patch} (90%) create mode 100644 kernel/kernel/files/patches/aufs6/lockdep-debug.patch create mode 100644 kernel/kernel/files/patches/aufs6/tmpfs-idr.patch create mode 100644 kernel/kernel/files/patches/aufs6/vfs-ino.patch create mode 100644 kernel/kernel/files/patches/linux/patch-6.6.30.xz delete mode 100644 kernel/kernel/files/patches/mageia/3rd-3rdparty-merge.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-3rdparty-tree.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-fix-kconfig.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-ndiswrapper-1.63.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-ndiswrapper-Kconfig.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-ndiswrapper-Makefile-build-fix.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-niswrapper-Kconfig-Makefile.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8223de-kernel-5.6.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8723de-Kconfig-Makefile.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8723de-add-kernel-5.8-support.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8723de-fix-redefine.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8723de-nodebug.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8812au-Kconfig-Makefile.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8812au-kernel-5.10.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8812au-kernel-5.12.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8812au-kernel-5.15.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8812au-rename.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8821ce-5.8-fix.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8821ce-Kconfig-Makefile.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8821ce-kernel-5.10.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8821ce-kernel-5.12.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-rtl8821ce-kernel-5.15.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-0.92.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-2.6.35-buildfix.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-3.0-buildfix.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-Kconfig-Makefile.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-config.patch delete mode 100644 kernel/kernel/files/patches/mageia/3rd-viahss-module-license.patch delete mode 100644 kernel/kernel/files/patches/mageia/CVE-2019-12379.patch delete mode 100644 kernel/kernel/files/patches/mageia/CVE-2020-16119-DCCP-CCID-structure-use-after-free.patch create mode 100644 kernel/kernel/files/patches/mageia/MAINTAINERS-git-github-https-github.com-for-terrelln.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-aufs5.10-tristate.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-aufs5.10.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-aufs5.15-symbol-exports.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-aufs5.15-tristate.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch create mode 100644 kernel/kernel/files/patches/mageia/hack-broken-rtla-cleaner.patch create mode 100644 kernel/kernel/files/patches/mageia/iwlwifi-cfg-Add-missing-MODULE_FIRMWARE-for-pnvm.patch create mode 100644 kernel/kernel/files/patches/mageia/lib-zstd-Fix-comment-typo.patch create mode 100644 kernel/kernel/files/patches/mageia/lib-zstd-clean-up-double-word-in-comment.patch create mode 100644 kernel/kernel/files/patches/mageia/lib-zstd-fix-repeated-words-in-comments.patch create mode 100644 kernel/kernel/files/patches/mageia/net-wireless-iwlwifi-add-new-pci-id-for-6235.patch create mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw88-6.2-git.patch delete mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw88-8822c-update-rx-settings-to-prevent-potential-hw-deadlock.patch create mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw88-add-8723de-alias.patch delete mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw88-dont-check-CRC-of-VHT-SIG-B-in-802.11ac-signal.patch create mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw89-6.2-git.patch delete mode 100644 kernel/kernel/files/patches/mageia/net-wireless-rtw89-add-Realtek-802.11ax-driver.patch create mode 100644 kernel/kernel/files/patches/mageia/staging-rtl8812au-20231117.patch create mode 100644 kernel/kernel/files/patches/mageia/staging-rtl8812au-Kconfig-Makefile.patch create mode 100644 kernel/kernel/files/patches/mageia/staging-rtl8812au-rename.patch rename kernel/kernel/files/patches/mageia/{3rd-rtl8812au.patch => staging-rtl8812au.patch} (95%) create mode 100644 kernel/kernel/files/patches/mageia/wifi-brcmfmac-fix-regression-for-Broadcom-PCIe-wifi-devices.patch create mode 100644 kernel/kernel/files/patches/mageia/wifi-iwlwifi-fw-skip-ppag-for-jf.patch create mode 100644 kernel/kernel/files/patches/mageia/wifi-iwlwifi-pcie-add-support-for-AX101NGW.patch create mode 100644 kernel/kernel/files/patches/mageia/wifi-mac80211-fix-initialization-of-rx-link-and-rx-link_sta.patch create mode 100644 kernel/kernel/files/patches/mageia/x86-default_poweroff_up_machines.patch create mode 100644 kernel/kernel/files/patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch create mode 100644 kernel/kernel/files/patches/mageia/zstd-Move-zstd-common-module-exports-to-zstd_common_.patch create mode 100644 kernel/kernel/files/patches/mageia/zstd-import-usptream-v1.5.2.patch diff --git a/kernel/kernel/files/configs/kernel-x86_64-config b/kernel/kernel/files/configs/kernel-x86_64-config index 03cfba32..6c3f272f 100644 --- a/kernel/kernel/files/configs/kernel-x86_64-config +++ b/kernel/kernel/files/configs/kernel-x86_64-config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 5.15.158 Kernel Configuration +# Linux/x86_64 6.6.30 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (Pisi Linux) 12.2.0" CONFIG_CC_IS_GCC=y @@ -11,11 +11,12 @@ CONFIG_AS_VERSION=24000 CONFIG_LD_IS_BFD=y CONFIG_LD_VERSION=24000 CONFIG_LLD_VERSION=0 +CONFIG_RUST_IS_AVAILABLE=y CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y -CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=0 @@ -48,9 +49,9 @@ CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_ZSTD is not set CONFIG_DEFAULT_INIT="" CONFIG_DEFAULT_HOSTNAME="" -CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_WATCH_QUEUE=y @@ -75,7 +76,6 @@ CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_SIM=y CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y CONFIG_IRQ_MSI_IOMMU=y CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y CONFIG_GENERIC_IRQ_RESERVATION_MODE=y @@ -94,6 +94,8 @@ CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y # # Timers subsystem @@ -103,10 +105,11 @@ CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set # CONFIG_NO_HZ_IDLE is not set CONFIG_NO_HZ_FULL=y -CONFIG_CONTEXT_TRACKING=y -# CONFIG_CONTEXT_TRACKING_FORCE is not set +CONFIG_CONTEXT_TRACKING_USER=y +# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 # end of Timers subsystem CONFIG_BPF=y @@ -125,10 +128,14 @@ CONFIG_BPF_JIT_DEFAULT_ON=y CONFIG_BPF_LSM=y # end of BPF subsystem +CONFIG_PREEMPT_BUILD=y # CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_VOLUNTARY=y -# CONFIG_PREEMPT is not set -# CONFIG_SCHED_CORE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +CONFIG_PREEMPT_DYNAMIC=y +CONFIG_SCHED_CORE=y # # CPU/Task time and stats accounting @@ -153,23 +160,36 @@ CONFIG_CPU_ISOLATION=y # RCU Subsystem # CONFIG_TREE_RCU=y -# CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y +CONFIG_PREEMPT_RCU=y +CONFIG_RCU_EXPERT=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y +# CONFIG_FORCE_TASKS_RCU is not set +CONFIG_TASKS_RCU=y +# CONFIG_FORCE_TASKS_RUDE_RCU is not set CONFIG_TASKS_RUDE_RCU=y +# CONFIG_FORCE_TASKS_TRACE_RCU is not set CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FANOUT_LEAF=16 +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_DELAY=97 +CONFIG_RCU_EXP_KTHREAD=y CONFIG_RCU_NOCB_CPU=y +# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set +CONFIG_RCU_NOCB_CPU_CB_BOOST=y +# CONFIG_TASKS_TRACE_RCU_READ_MB is not set +# CONFIG_RCU_LAZY is not set +CONFIG_RCU_DOUBLE_CHECK_CB_TIME=y # end of RCU Subsystem CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -# CONFIG_IKHEADERS is not set +CONFIG_IKHEADERS=m CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 # CONFIG_PRINTK_INDEX is not set CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y @@ -183,12 +203,15 @@ CONFIG_UCLAMP_BUCKETS_COUNT=5 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC11_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_ARCH_SUPPORTS_INT128=y # CONFIG_NUMA_BALANCING is not set CONFIG_CGROUPS=y CONFIG_PAGE_COUNTER=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set CONFIG_MEMCG=y -CONFIG_MEMCG_SWAP=y CONFIG_MEMCG_KMEM=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_WRITEBACK=y @@ -196,6 +219,7 @@ CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y +CONFIG_SCHED_MM_CID=y CONFIG_UCLAMP_TASK_GROUP=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_RDMA=y @@ -218,8 +242,8 @@ CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CHECKPOINT_RESTORE=y +CONFIG_SCHED_BORE=y CONFIG_SCHED_AUTOGROUP=y -# CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" @@ -230,10 +254,14 @@ CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y CONFIG_RD_ZSTD=y -# CONFIG_BOOT_CONFIG is not set +CONFIG_BOOT_CONFIG=y +# CONFIG_BOOT_CONFIG_FORCE is not set +# CONFIG_BOOT_CONFIG_EMBED is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y @@ -262,16 +290,17 @@ CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y CONFIG_KALLSYMS_BASE_RELATIVE=y -# CONFIG_USERFAULTFD is not set CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y CONFIG_RSEQ=y +CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set -CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y # CONFIG_PC104 is not set # @@ -281,20 +310,22 @@ CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set # end of Kernel Performance Events And Counters -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_DEBUG=y -# CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_SLAB_MERGE_DEFAULT=y -# CONFIG_SLAB_FREELIST_RANDOM is not set -CONFIG_SLAB_FREELIST_HARDENED=y -CONFIG_SHUFFLE_PAGE_ALLOCATOR=y -CONFIG_SLUB_CPU_PARTIAL=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y + +# +# Kexec and crash features +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +CONFIG_KEXEC_JUMP=y +CONFIG_CRASH_DUMP=y +CONFIG_CRASH_HOTPLUG=y +CONFIG_CRASH_MAX_MEMORY_RANGES=8192 +# end of Kexec and crash features # end of General setup CONFIG_64BIT=y @@ -315,19 +346,14 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=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_NR_GPIO=1024 CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_AUDIT_ARCH=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y +CONFIG_DYNAMIC_PHYSICAL_MASK=y CONFIG_PGTABLE_LEVELS=4 CONFIG_CC_HAS_SANE_STACKPROTECTOR=y @@ -335,7 +361,6 @@ CONFIG_CC_HAS_SANE_STACKPROTECTOR=y # Processor type and features # CONFIG_SMP=y -CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y # CONFIG_GOLDFISH is not set @@ -356,7 +381,7 @@ CONFIG_HYPERVISOR_GUEST=y CONFIG_PARAVIRT=y CONFIG_PARAVIRT_XXL=y # CONFIG_PARAVIRT_DEBUG is not set -# CONFIG_PARAVIRT_SPINLOCKS is not set +CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_X86_HV_CALLBACK_VECTOR=y CONFIG_XEN=y CONFIG_XEN_PV=y @@ -370,6 +395,7 @@ CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_DEBUG_FS=y CONFIG_XEN_PVH=y CONFIG_XEN_DOM0=y +CONFIG_XEN_PV_MSR_SAFE=y CONFIG_KVM_GUEST=y CONFIG_ARCH_CPUIDLE_HALTPOLL=y CONFIG_PVH=y @@ -377,6 +403,7 @@ CONFIG_PARAVIRT_TIME_ACCOUNTING=y CONFIG_PARAVIRT_CLOCK=y # CONFIG_JAILHOUSE_GUEST is not set CONFIG_ACRN_GUEST=y +CONFIG_INTEL_TDX_GUEST=y # CONFIG_MK8 is not set # CONFIG_MPSC is not set # CONFIG_MCORE2 is not set @@ -401,11 +428,13 @@ CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y CONFIG_GART_IOMMU=y +CONFIG_BOOT_VESA_SUPPORT=y # 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=128 +CONFIG_SCHED_CLUSTER=y CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y CONFIG_SCHED_MC_PRIO=y @@ -426,23 +455,22 @@ CONFIG_PERF_EVENTS_INTEL_UNCORE=m CONFIG_PERF_EVENTS_INTEL_RAPL=m CONFIG_PERF_EVENTS_INTEL_CSTATE=m CONFIG_PERF_EVENTS_AMD_POWER=m -CONFIG_PERF_EVENTS_AMD_UNCORE=y +CONFIG_PERF_EVENTS_AMD_UNCORE=m +CONFIG_PERF_EVENTS_AMD_BRS=y # end of Performance monitoring CONFIG_X86_16BIT=y CONFIG_X86_ESPFIX64=y CONFIG_X86_VSYSCALL_EMULATION=y CONFIG_X86_IOPL_IOPERM=y -CONFIG_I8K=m CONFIG_MICROCODE=y -CONFIG_MICROCODE_INTEL=y -CONFIG_MICROCODE_AMD=y # CONFIG_MICROCODE_LATE_LOADING is not set CONFIG_X86_MSR=y CONFIG_X86_CPUID=y # CONFIG_X86_5LEVEL is not set CONFIG_X86_DIRECT_GBPAGES=y # CONFIG_X86_CPA_STATISTICS is not set +CONFIG_X86_MEM_ENCRYPT=y # CONFIG_AMD_MEM_ENCRYPT is not set CONFIG_NUMA=y CONFIG_AMD_NUMA=y @@ -451,7 +479,6 @@ CONFIG_X86_64_ACPI_NUMA=y CONFIG_NODES_SHIFT=10 CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_MEMORY_PROBE=y CONFIG_ARCH_PROC_KCORE_TEXT=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 @@ -464,27 +491,36 @@ CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 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_UMIP=y +CONFIG_CC_HAS_IBT=y +CONFIG_X86_CET=y +# CONFIG_X86_KERNEL_IBT is not set CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y # CONFIG_X86_INTEL_TSX_MODE_OFF is not set # CONFIG_X86_INTEL_TSX_MODE_ON is not set CONFIG_X86_INTEL_TSX_MODE_AUTO=y # CONFIG_X86_SGX is not set +# CONFIG_X86_USER_SHADOW_STACK is not set CONFIG_EFI=y CONFIG_EFI_STUB=y +CONFIG_EFI_HANDOVER_PROTOCOL=y CONFIG_EFI_MIXED=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_RUNTIME_MAP=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=y -# CONFIG_KEXEC_FILE is not set -CONFIG_CRASH_DUMP=y -CONFIG_KEXEC_JUMP=y +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG_FORCE=y +CONFIG_ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +CONFIG_ARCH_SUPPORTS_CRASH_HOTPLUG=y CONFIG_PHYSICAL_START=0x200000 CONFIG_RELOCATABLE=y CONFIG_RANDOMIZE_BASE=y @@ -493,26 +529,35 @@ CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_DYNAMIC_MEMORY_LAYOUT=y CONFIG_RANDOMIZE_MEMORY=y CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +# CONFIG_ADDRESS_MASKING is not set CONFIG_HOTPLUG_CPU=y -# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set -# CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_COMPAT_VDSO is not set -# CONFIG_LEGACY_VSYSCALL_EMULATE is not set CONFIG_LEGACY_VSYSCALL_XONLY=y # CONFIG_LEGACY_VSYSCALL_NONE is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_MODIFY_LDT_SYSCALL=y +# CONFIG_STRICT_SIGALTSTACK_SIZE is not set CONFIG_HAVE_LIVEPATCH=y CONFIG_LIVEPATCH=y # end of Processor type and features CONFIG_CC_HAS_SLS=y CONFIG_CC_HAS_RETURN_THUNK=y +CONFIG_CC_HAS_ENTRY_PADDING=y +CONFIG_FUNCTION_PADDING_CFI=11 +CONFIG_FUNCTION_PADDING_BYTES=16 +CONFIG_CALL_PADDING=y +CONFIG_HAVE_CALL_THUNKS=y +CONFIG_CALL_THUNKS=y +CONFIG_PREFIX_SYMBOLS=y +CONFIG_SPECULATION_MITIGATIONS=y CONFIG_CPU_MITIGATIONS=y CONFIG_PAGE_TABLE_ISOLATION=y CONFIG_RETPOLINE=y CONFIG_RETHUNK=y CONFIG_CPU_UNRET_ENTRY=y +CONFIG_CALL_DEPTH_TRACKING=y +# CONFIG_CALL_THUNKS_DEBUG is not set CONFIG_CPU_IBPB_ENTRY=y CONFIG_CPU_IBRS_ENTRY=y CONFIG_CPU_SRSO=y @@ -520,9 +565,10 @@ CONFIG_CPU_SRSO=y # CONFIG_GDS_FORCE_MITIGATION is not set CONFIG_MITIGATION_RFDS=y CONFIG_MITIGATION_SPECTRE_BHI=y +CONFIG_SPECTRE_BHI_ON=y +# CONFIG_SPECTRE_BHI_OFF is not set +# CONFIG_SPECTRE_BHI_AUTO is not set CONFIG_ARCH_HAS_ADD_PAGES=y -CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y -CONFIG_USE_PERCPU_NUMA_NODE_ID=y # # Power management and ACPI options @@ -538,7 +584,10 @@ CONFIG_PM_STD_PARTITION="" CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y # CONFIG_PM_AUTOSLEEP is not set -# CONFIG_PM_WAKELOCKS is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y CONFIG_PM=y CONFIG_PM_DEBUG=y # CONFIG_PM_ADVANCED_DEBUG is not set @@ -551,7 +600,7 @@ CONFIG_PM_CLK=y CONFIG_PM_GENERIC_DOMAINS=y # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set CONFIG_PM_GENERIC_DOMAINS_SLEEP=y -# CONFIG_ENERGY_MODEL is not set +CONFIG_ENERGY_MODEL=y CONFIG_ARCH_SUPPORTS_ACPI=y CONFIG_ACPI=y CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y @@ -563,13 +612,12 @@ CONFIG_ACPI_SPCR_TABLE=y CONFIG_ACPI_LPIT=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y -CONFIG_ACPI_EC_DEBUGFS=m -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m -CONFIG_ACPI_BUTTON=m -# CONFIG_ACPI_TINY_POWER_BUTTON is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=m -CONFIG_ACPI_FAN=m +CONFIG_ACPI_FAN=y CONFIG_ACPI_TAD=m CONFIG_ACPI_DOCK=y CONFIG_ACPI_CPU_FREQ_PSS=y @@ -580,14 +628,14 @@ CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_IPMI=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_PROCESSOR_AGGREGATOR=m -CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_THERMAL=y CONFIG_ACPI_PLATFORM_PROFILE=m CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y CONFIG_ACPI_TABLE_UPGRADE=y # CONFIG_ACPI_DEBUG is not set -# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PCI_SLOT=y CONFIG_ACPI_CONTAINER=y -# CONFIG_ACPI_HOTPLUG_MEMORY is not set +CONFIG_ACPI_HOTPLUG_MEMORY=y CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_ACPI_SBS=m CONFIG_ACPI_HED=y @@ -597,7 +645,7 @@ CONFIG_ACPI_BGRT=y CONFIG_ACPI_NFIT=m # CONFIG_NFIT_SECURITY_DEBUG is not set CONFIG_ACPI_NUMA=y -# CONFIG_ACPI_HMAT is not set +CONFIG_ACPI_HMAT=y CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_ACPI_APEI=y @@ -613,14 +661,18 @@ CONFIG_ACPI_WATCHDOG=y CONFIG_ACPI_EXTLOG=m CONFIG_ACPI_ADXL=y CONFIG_ACPI_CONFIGFS=m +CONFIG_ACPI_PFRUT=m +CONFIG_ACPI_PCC=y +CONFIG_ACPI_FFH=y CONFIG_PMIC_OPREGION=y CONFIG_BYTCRC_PMIC_OPREGION=y CONFIG_CHTCRC_PMIC_OPREGION=y # CONFIG_XPOWER_PMIC_OPREGION is not set CONFIG_CHT_WC_PMIC_OPREGION=y CONFIG_CHT_DC_TI_PMIC_OPREGION=y -CONFIG_X86_PM_TIMER=y +CONFIG_TPS68470_PMIC_OPREGION=y CONFIG_ACPI_PRMT=y +CONFIG_X86_PM_TIMER=y # # CPU Frequency scaling @@ -645,6 +697,9 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y # CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_AMD_PSTATE=y +CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3 +CONFIG_X86_AMD_PSTATE_UT=m CONFIG_X86_ACPI_CPUFREQ=m CONFIG_X86_ACPI_CPUFREQ_CPB=y CONFIG_X86_POWERNOW_K8=m @@ -689,17 +744,20 @@ CONFIG_AMD_NB=y # Binary Emulations # CONFIG_IA32_EMULATION=y -CONFIG_X86_X32=y +CONFIG_X86_X32_ABI=y CONFIG_COMPAT_32=y CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y -CONFIG_SYSVIPC_COMPAT=y # end of Binary Emulations CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_PFNCACHE=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_IRQFD=y CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_DIRTY_RING=y +CONFIG_HAVE_KVM_DIRTY_RING_TSO=y +CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y CONFIG_HAVE_KVM_EVENTFD=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y @@ -712,37 +770,32 @@ CONFIG_HAVE_KVM_IRQ_BYPASS=y CONFIG_HAVE_KVM_NO_POLL=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_HAVE_KVM_PM_NOTIFIER=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_WERROR=y CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m CONFIG_KVM_AMD_SEV=y +CONFIG_KVM_SMM=y # CONFIG_KVM_XEN is not set -CONFIG_KVM_MMU_AUDIT=y +CONFIG_KVM_PROVE_MMU=y CONFIG_AS_AVX512=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y CONFIG_AS_TPAUSE=y - -# -# External 3rdparty kernel additions -# -CONFIG_NDISWRAPPER=m -CONFIG_RTL8821CE=m -CONFIG_RTL8812AU=m -# CONFIG_RTL8723DE is not set -CONFIG_VIAHSS=m -# end of External 3rdparty kernel additions - -CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y +CONFIG_AS_GFNI=y +CONFIG_AS_WRUSS=y # # General architecture-dependent options # -CONFIG_CRASH_CORE=y -CONFIG_KEXEC_CORE=y CONFIG_HOTPLUG_SMT=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +CONFIG_HOTPLUG_CORE_SYNC_FULL=y +CONFIG_HOTPLUG_SPLIT_STARTUP=y +CONFIG_HOTPLUG_PARALLEL=y CONFIG_GENERIC_ENTRY=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y @@ -754,12 +807,14 @@ CONFIG_UPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_KRETPROBES=y +CONFIG_KRETPROBE_ON_RETHOOK=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_NMI=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y @@ -777,6 +832,7 @@ CONFIG_ARCH_WANTS_NO_INSTR=y CONFIG_HAVE_ASM_MODVERSIONS=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_RUST=y CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y @@ -789,7 +845,10 @@ CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y CONFIG_MMU_GATHER_TABLE_FREE=y CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_GATHER_MERGE_VMAS=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y @@ -807,9 +866,10 @@ CONFIG_STACKPROTECTOR_STRONG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y -CONFIG_HAVE_CONTEXT_TRACKING=y -CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y CONFIG_HAVE_MOVE_PUD=y @@ -817,12 +877,15 @@ 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_HAVE_ARCH_HUGE_VMALLOC=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_PMD_MKWRITE=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_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_HAVE_ARCH_MMAP_RND_BITS=y CONFIG_HAVE_EXIT_THREAD=y @@ -830,6 +893,13 @@ CONFIG_ARCH_MMAP_RND_BITS=28 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_HAVE_OBJTOOL=y +CONFIG_HAVE_JUMP_LABEL_HACK=y +CONFIG_HAVE_NOINSTR_HACK=y +CONFIG_HAVE_NOINSTR_VALIDATION=y +CONFIG_HAVE_UACCESS_VALIDATION=y CONFIG_HAVE_STACK_VALIDATION=y CONFIG_HAVE_RELIABLE_STACKTRACE=y CONFIG_ISA_BUS_API=y @@ -839,7 +909,8 @@ CONFIG_COMPAT_32BIT_TIME=y CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y -# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y CONFIG_STRICT_KERNEL_RWX=y CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y @@ -848,13 +919,18 @@ CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y CONFIG_ARCH_USE_MEMREMAP_PROT=y CONFIG_LOCK_EVENT_COUNTS=y CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_ARCH_HAS_CC_PLATFORM=y CONFIG_HAVE_STATIC_CALL=y CONFIG_HAVE_STATIC_CALL_INLINE=y CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y CONFIG_ARCH_HAS_ELFCORE_COMPAT=y CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y +CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y # # GCOV-based kernel profiling @@ -865,9 +941,7 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y CONFIG_HAVE_GCC_PLUGINS=y CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set -# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT_16B=y CONFIG_FUNCTION_ALIGNMENT=16 @@ -876,9 +950,11 @@ CONFIG_FUNCTION_ALIGNMENT=16 CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set @@ -891,12 +967,15 @@ CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CGROUP_PUNT_BIO=y CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_ICQ=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLK_DEV_INTEGRITY_T10=y -# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_DEV_THROTTLING=y # CONFIG_BLK_DEV_THROTTLING_LOW is not set # CONFIG_BLK_WBT is not set @@ -905,6 +984,7 @@ CONFIG_BLK_DEV_THROTTLING=y # CONFIG_BLK_CGROUP_IOCOST is not set # CONFIG_BLK_CGROUP_IOPRIO is not set CONFIG_BLK_DEBUG_FS=y +CONFIG_BLK_DEBUG_FS_ZONED=y # CONFIG_BLK_SED_OPAL is not set CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y @@ -932,15 +1012,14 @@ CONFIG_SUN_PARTITION=y CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y CONFIG_SYSV68_PARTITION=y -# CONFIG_CMDLINE_PARTITION is not set +CONFIG_CMDLINE_PARTITION=y # end of Partition Types -CONFIG_BLOCK_COMPAT=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y -CONFIG_BLK_MQ_RDMA=y CONFIG_BLK_PM=y CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y # # IO Schedulers @@ -955,11 +1034,7 @@ CONFIG_BFQ_GROUP_IOSCHED=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_INLINE_SPIN_UNLOCK_IRQ=y -CONFIG_INLINE_READ_UNLOCK=y -CONFIG_INLINE_READ_UNLOCK_IRQ=y -CONFIG_INLINE_WRITE_UNLOCK=y -CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -988,55 +1063,11 @@ CONFIG_COREDUMP=y # # Memory Management options # -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_SPARSEMEM_MANUAL=y -CONFIG_SPARSEMEM=y -CONFIG_SPARSEMEM_EXTREME=y -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSEMEM_VMEMMAP=y -CONFIG_HAVE_FAST_GUP=y -CONFIG_NUMA_KEEP_MEMINFO=y -CONFIG_MEMORY_ISOLATION=y -CONFIG_HAVE_BOOTMEM_INFO_NODE=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -CONFIG_MEMORY_HOTPLUG=y -CONFIG_MEMORY_HOTPLUG_SPARSE=y -# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set -CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y -CONFIG_MEMORY_HOTREMOVE=y -CONFIG_MHP_MEMMAP_ON_MEMORY=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -CONFIG_MEMORY_BALLOON=y -CONFIG_BALLOON_COMPACTION=y -CONFIG_COMPACTION=y -CONFIG_PAGE_REPORTING=y -CONFIG_MIGRATION=y -CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y -CONFIG_ARCH_ENABLE_THP_MIGRATION=y -CONFIG_CONTIG_ALLOC=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_VIRT_TO_BUS=y -CONFIG_MMU_NOTIFIER=y -CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -CONFIG_MEMORY_FAILURE=y -# CONFIG_HWPOISON_INJECT is not set -CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set -CONFIG_ARCH_WANTS_THP_SWAP=y -CONFIG_THP_SWAP=y -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y -CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set -# CONFIG_CMA_DEBUGFS is not set -# CONFIG_CMA_SYSFS is not set -CONFIG_CMA_AREAS=7 -# CONFIG_MEM_SOFT_DIRTY is not set +CONFIG_ZPOOL=y +CONFIG_SWAP=y CONFIG_ZSWAP=y +# CONFIG_ZSWAP_DEFAULT_ON is not set +# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set @@ -1048,32 +1079,117 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y # CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set # CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" -# CONFIG_ZSWAP_DEFAULT_ON is not set -CONFIG_ZPOOL=y CONFIG_ZBUD=y -CONFIG_Z3FOLD=m +CONFIG_Z3FOLD=y CONFIG_ZSMALLOC=y -# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_STAT=y +CONFIG_ZSMALLOC_CHAIN_SIZE=8 + +# +# SLAB allocator options +# +# CONFIG_SLAB_DEPRECATED is not set +CONFIG_SLUB=y +# CONFIG_SLUB_TINY is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +CONFIG_SLAB_FREELIST_HARDENED=y +# CONFIG_SLUB_STATS is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_RANDOM_KMALLOC_CACHES is not set +# end of SLAB allocator options + +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_HOTPLUG=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MHP_MEMMAP_ON_MEMORY=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_DEVICE_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_THP_SWAP=y +CONFIG_READ_ONLY_THP_FOR_FS=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=7 +CONFIG_MEM_SOFT_DIRTY=y CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y CONFIG_ARCH_HAS_PTE_DEVMAP=y CONFIG_ARCH_HAS_ZONE_DMA_SET=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA32=y CONFIG_ZONE_DEVICE=y -CONFIG_DEV_PAGEMAP_OPS=y CONFIG_HMM_MIRROR=y -# CONFIG_DEVICE_PRIVATE is not set +CONFIG_DEVICE_PRIVATE=y +CONFIG_GET_FREE_REGION=y CONFIG_VMAP_PFN=y CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_ARCH_HAS_PKEYS=y +CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set -CONFIG_READ_ONLY_THP_FOR_FS=y +# CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MAPPING_DIRTY_HELPERS=y +CONFIG_MEMFD_CREATE=y +CONFIG_SECRETMEM=y +CONFIG_ANON_VMA_NAME=y +CONFIG_USERFAULTFD=y +CONFIG_HAVE_ARCH_USERFAULTFD_WP=y +CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y +CONFIG_PTE_MARKER_UFFD_WP=y +CONFIG_LRU_GEN=y +# CONFIG_LRU_GEN_ENABLED is not set +# CONFIG_LRU_GEN_STATS is not set +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y # # Data Access Monitoring @@ -1086,6 +1202,7 @@ CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y CONFIG_NET_REDIRECT=y CONFIG_SKB_EXTENSIONS=y @@ -1102,6 +1219,7 @@ CONFIG_TLS=m # CONFIG_TLS_DEVICE is not set # CONFIG_TLS_TOE is not set CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y CONFIG_XFRM_ALGO=y CONFIG_XFRM_USER=y # CONFIG_XFRM_USER_COMPAT is not set @@ -1115,9 +1233,11 @@ CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m CONFIG_NET_KEY_MIGRATE=y CONFIG_XFRM_ESPINTCP=y -# CONFIG_SMC is not set +CONFIG_SMC=m +CONFIG_SMC_DIAG=m CONFIG_XDP_SOCKETS=y CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_NET_HANDSHAKE=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -1144,7 +1264,7 @@ CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_INET_AH=m CONFIG_INET_ESP=m -# CONFIG_INET_ESP_OFFLOAD is not set +CONFIG_INET_ESP_OFFLOAD=m CONFIG_INET_ESPINTCP=y CONFIG_INET_IPCOMP=m CONFIG_INET_TABLE_PERTURB_ORDER=16 @@ -1154,7 +1274,7 @@ CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_INET_UDP_DIAG=m CONFIG_INET_RAW_DIAG=m -# CONFIG_INET_DIAG_DESTROY is not set +CONFIG_INET_DIAG_DESTROY=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" @@ -1165,7 +1285,7 @@ CONFIG_IPV6_ROUTE_INFO=y CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_AH=m CONFIG_INET6_ESP=m -# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_ESP_OFFLOAD=m CONFIG_INET6_ESPINTCP=y CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=y @@ -1204,9 +1324,12 @@ CONFIG_BRIDGE_NETFILTER=m # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_SKIP_EGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_FAMILY_BRIDGE=y CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_BPF_LINK=y # CONFIG_NETFILTER_NETLINK_HOOK is not set CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=m @@ -1223,6 +1346,7 @@ CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_TIMEOUT=y CONFIG_NF_CONNTRACK_TIMESTAMP=y CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y CONFIG_NF_CT_PROTO_DCCP=y CONFIG_NF_CT_PROTO_GRE=y CONFIG_NF_CT_PROTO_SCTP=y @@ -1250,6 +1374,7 @@ CONFIG_NF_NAT_SIP=m CONFIG_NF_NAT_TFTP=m CONFIG_NF_NAT_REDIRECT=y CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NF_NAT_OVS=y CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m # CONFIG_NF_TABLES_INET is not set @@ -1257,7 +1382,6 @@ CONFIG_NF_TABLES_NETDEV=y CONFIG_NFT_NUMGEN=m CONFIG_NFT_CT=m CONFIG_NFT_FLOW_OFFLOAD=m -CONFIG_NFT_COUNTER=m CONFIG_NFT_CONNLIMIT=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m @@ -1265,7 +1389,6 @@ CONFIG_NFT_MASQ=m CONFIG_NFT_REDIR=m CONFIG_NFT_NAT=m CONFIG_NFT_TUNNEL=m -CONFIG_NFT_OBJREF=m CONFIG_NFT_QUEUE=m CONFIG_NFT_QUOTA=m CONFIG_NFT_REJECT=m @@ -1456,7 +1579,6 @@ CONFIG_NFT_REJECT_IPV4=m CONFIG_NFT_DUP_IPV4=m CONFIG_NFT_FIB_IPV4=m CONFIG_NF_TABLES_ARP=y -CONFIG_NF_FLOW_TABLE_IPV4=m CONFIG_NF_DUP_IPV4=m CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m @@ -1477,7 +1599,6 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m @@ -1496,7 +1617,6 @@ CONFIG_NF_TABLES_IPV6=y CONFIG_NFT_REJECT_IPV6=m CONFIG_NFT_DUP_IPV6=m CONFIG_NFT_FIB_IPV6=m -CONFIG_NF_FLOW_TABLE_IPV6=m CONFIG_NF_DUP_IPV6=m CONFIG_NF_REJECT_IPV6=m CONFIG_NF_LOG_IPV6=m @@ -1606,6 +1726,7 @@ CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_BRIDGE_MRP=y # CONFIG_BRIDGE_CFM is not set CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_NONE=m CONFIG_NET_DSA_TAG_AR9331=m CONFIG_NET_DSA_TAG_BRCM_COMMON=m CONFIG_NET_DSA_TAG_BRCM=m @@ -1618,10 +1739,12 @@ CONFIG_NET_DSA_TAG_DSA=m CONFIG_NET_DSA_TAG_EDSA=m CONFIG_NET_DSA_TAG_MTK=m CONFIG_NET_DSA_TAG_KSZ=m -CONFIG_NET_DSA_TAG_RTL4_A=m CONFIG_NET_DSA_TAG_OCELOT=m # CONFIG_NET_DSA_TAG_OCELOT_8021Q is not set CONFIG_NET_DSA_TAG_QCA=m +CONFIG_NET_DSA_TAG_RTL4_A=m +CONFIG_NET_DSA_TAG_RTL8_4=m +CONFIG_NET_DSA_TAG_RZN1_A5PSW=m CONFIG_NET_DSA_TAG_LAN9303=m CONFIG_NET_DSA_TAG_SJA1105=m CONFIG_NET_DSA_TAG_TRAILER=m @@ -1675,6 +1798,7 @@ CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_MQPRIO_LIB=m CONFIG_NET_SCH_TAPRIO=m CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_NETEM=m @@ -1750,11 +1874,11 @@ CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y CONFIG_DNS_RESOLVER=y CONFIG_BATMAN_ADV=m -# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_BATMAN_V=y CONFIG_BATMAN_ADV_BLA=y CONFIG_BATMAN_ADV_DAT=y -# CONFIG_BATMAN_ADV_NC is not set -# CONFIG_BATMAN_ADV_MCAST is not set +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATMAN_ADV_MCAST=y # CONFIG_BATMAN_ADV_DEBUG is not set # CONFIG_BATMAN_ADV_TRACING is not set CONFIG_OPENVSWITCH=m @@ -1781,8 +1905,11 @@ CONFIG_QRTR=m # CONFIG_QRTR_SMD is not set CONFIG_QRTR_TUN=m CONFIG_QRTR_MHI=m -# CONFIG_NET_NCSI is not set +CONFIG_NET_NCSI=y +CONFIG_NCSI_OEM_CMD_GET_MAC=y +CONFIG_NCSI_OEM_CMD_KEEP_PHY=y CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y @@ -1828,69 +1955,8 @@ CONFIG_CAN=m CONFIG_CAN_RAW=m CONFIG_CAN_BCM=m CONFIG_CAN_GW=m -# CONFIG_CAN_J1939 is not set -# CONFIG_CAN_ISOTP is not set - -# -# CAN Device Drivers -# -CONFIG_CAN_VCAN=m -CONFIG_CAN_VXCAN=m -CONFIG_CAN_SLCAN=m -CONFIG_CAN_DEV=m -# CONFIG_CAN_CALC_BITTIMING is not set -# CONFIG_CAN_KVASER_PCIEFD is not set -CONFIG_CAN_C_CAN=m -CONFIG_CAN_C_CAN_PLATFORM=m -CONFIG_CAN_C_CAN_PCI=m -CONFIG_CAN_CC770=m -CONFIG_CAN_CC770_ISA=m -CONFIG_CAN_CC770_PLATFORM=m -CONFIG_CAN_IFI_CANFD=m -CONFIG_CAN_M_CAN=m -# CONFIG_CAN_M_CAN_PCI is not set -# CONFIG_CAN_M_CAN_PLATFORM is not set -# CONFIG_CAN_M_CAN_TCAN4X5X is not set -CONFIG_CAN_PEAK_PCIEFD=m -CONFIG_CAN_SJA1000=m -CONFIG_CAN_EMS_PCI=m -CONFIG_CAN_EMS_PCMCIA=m -# CONFIG_CAN_F81601 is not set -CONFIG_CAN_KVASER_PCI=m -CONFIG_CAN_PEAK_PCI=m -CONFIG_CAN_PEAK_PCIEC=y -CONFIG_CAN_PEAK_PCMCIA=m -CONFIG_CAN_PLX_PCI=m -CONFIG_CAN_SJA1000_ISA=m -# CONFIG_CAN_SJA1000_PLATFORM is not set -CONFIG_CAN_SOFTING=m -CONFIG_CAN_SOFTING_CS=m - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -CONFIG_CAN_MCP251X=m -# CONFIG_CAN_MCP251XFD is not set -# end of CAN SPI interfaces - -# -# CAN USB interfaces -# -CONFIG_CAN_8DEV_USB=m -CONFIG_CAN_EMS_USB=m -CONFIG_CAN_ESD_USB2=m -# CONFIG_CAN_ETAS_ES58X is not set -CONFIG_CAN_GS_USB=m -CONFIG_CAN_KVASER_USB=m -# CONFIG_CAN_MCBA_USB is not set -CONFIG_CAN_PEAK_USB=m -# CONFIG_CAN_UCAN is not set -# end of CAN USB interfaces - -# CONFIG_CAN_DEBUG_DEVICES is not set -# end of CAN Device Drivers - +CONFIG_CAN_J1939=m +CONFIG_CAN_ISOTP=m CONFIG_BT=m CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=m @@ -1902,6 +1968,7 @@ CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m CONFIG_BT_HS=y CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m CONFIG_BT_LEDS=y CONFIG_BT_MSFTEXT=y @@ -1916,8 +1983,10 @@ CONFIG_BT_INTEL=m CONFIG_BT_BCM=m CONFIG_BT_RTL=m CONFIG_BT_QCA=m +CONFIG_BT_MTK=m CONFIG_BT_HCIBTUSB=m # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_POLL_SYNC=y CONFIG_BT_HCIBTUSB_BCM=y CONFIG_BT_HCIBTUSB_MTK=y CONFIG_BT_HCIBTUSB_RTL=y @@ -1936,6 +2005,7 @@ CONFIG_BT_HCIUART_QCA=y CONFIG_BT_HCIUART_AG6XX=y CONFIG_BT_HCIUART_MRVL=y CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBCM4377=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m CONFIG_BT_HCIDTL1=m @@ -1949,13 +2019,16 @@ CONFIG_BT_MTKSDIO=m CONFIG_BT_MTKUART=m CONFIG_BT_HCIRSI=m # CONFIG_BT_VIRTIO is not set +CONFIG_BT_NXPUART=m # end of Bluetooth device drivers CONFIG_AF_RXRPC=m CONFIG_AF_RXRPC_IPV6=y # CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set # CONFIG_AF_RXRPC_DEBUG is not set # CONFIG_RXKAD is not set +# CONFIG_RXPERF is not set CONFIG_AF_KCM=m CONFIG_STREAM_PARSER=y # CONFIG_MCTP is not set @@ -1998,6 +2071,7 @@ CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_GPIO=m CONFIG_NET_9P=m +CONFIG_NET_9P_FD=m CONFIG_NET_9P_VIRTIO=m CONFIG_NET_9P_XEN=m CONFIG_NET_9P_RDMA=m @@ -2033,7 +2107,7 @@ CONFIG_NFC_PN544_MEI=m CONFIG_NFC_PN533=m CONFIG_NFC_PN533_USB=m CONFIG_NFC_PN533_I2C=m -# CONFIG_NFC_PN532_UART is not set +CONFIG_NFC_PN532_UART=m CONFIG_NFC_MICROREAD=m CONFIG_NFC_MICROREAD_I2C=m CONFIG_NFC_MICROREAD_MEI=m @@ -2046,7 +2120,8 @@ CONFIG_NFC_ST21NFCA_I2C=m CONFIG_NFC_ST_NCI=m CONFIG_NFC_ST_NCI_I2C=m CONFIG_NFC_ST_NCI_SPI=m -# CONFIG_NFC_NXP_NCI is not set +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m CONFIG_NFC_S3FWRN5=m CONFIG_NFC_S3FWRN5_I2C=m # CONFIG_NFC_S3FWRN82_UART is not set @@ -2063,6 +2138,7 @@ CONFIG_NET_SELFTESTS=y CONFIG_NET_SOCK_MSG=y CONFIG_NET_DEVLINK=y CONFIG_PAGE_POOL=y +CONFIG_PAGE_POOL_STATS=y CONFIG_FAILOVER=m CONFIG_ETHTOOL_NETLINK=y @@ -2089,7 +2165,6 @@ CONFIG_PCIE_DPC=y # CONFIG_PCIE_PTM is not set # CONFIG_PCIE_EDR is not set CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y CONFIG_PCI_QUIRKS=y # CONFIG_PCI_DEBUG is not set # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set @@ -2109,13 +2184,15 @@ CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m -# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_PCI_SHPC=y # # PCI controller drivers @@ -2124,24 +2201,24 @@ CONFIG_VMD=m CONFIG_PCI_HYPERV_INTERFACE=m # -# DesignWare PCI Core Support +# Cadence-based PCIe controllers +# +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers # CONFIG_PCIE_DW=y CONFIG_PCIE_DW_HOST=y +# CONFIG_PCI_MESON is not set CONFIG_PCIE_DW_PLAT=y CONFIG_PCIE_DW_PLAT_HOST=y -# CONFIG_PCI_MESON is not set -# end of DesignWare PCI Core Support +# end of DesignWare-based PCIe controllers # -# Mobiveil PCIe Core Support +# Mobiveil-based PCIe controllers # -# end of Mobiveil PCIe Core Support - -# -# Cadence PCIe controllers support -# -# end of Cadence PCIe controllers support +# end of Mobiveil-based PCIe controllers # end of PCI controller drivers # @@ -2177,7 +2254,7 @@ CONFIG_PCCARD_NONSTATIC=y CONFIG_RAPIDIO=y CONFIG_RAPIDIO_TSI721=y CONFIG_RAPIDIO_DISC_TIMEOUT=30 -# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS=y CONFIG_RAPIDIO_DMA_ENGINE=y # CONFIG_RAPIDIO_DEBUG is not set CONFIG_RAPIDIO_ENUM_BASIC=m @@ -2187,9 +2264,7 @@ CONFIG_RAPIDIO_MPORT_CDEV=m # # RapidIO Switch drivers # -CONFIG_RAPIDIO_TSI57X=y CONFIG_RAPIDIO_CPS_XX=y -CONFIG_RAPIDIO_TSI568=y CONFIG_RAPIDIO_CPS_GEN2=y CONFIG_RAPIDIO_RXS_GEN3=y # end of RapidIO Switch drivers @@ -2202,6 +2277,7 @@ CONFIG_UEVENT_HELPER=y CONFIG_UEVENT_HELPER_PATH="" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y @@ -2209,12 +2285,17 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # Firmware loader # CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y CONFIG_EXTRA_FIRMWARE="" CONFIG_FW_LOADER_USER_HELPER=y CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_XZ=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y CONFIG_FW_CACHE=y +CONFIG_FW_UPLOAD=y # end of Firmware loader CONFIG_WANT_DEV_COREDUMP=y @@ -2223,10 +2304,12 @@ CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_HMEM_REPORTING=y # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_SYS_HYPERVISOR=y CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y @@ -2234,10 +2317,12 @@ CONFIG_REGMAP_SPMI=m CONFIG_REGMAP_MMIO=y CONFIG_REGMAP_IRQ=y CONFIG_REGMAP_SOUNDWIRE=m +CONFIG_REGMAP_SOUNDWIRE_MBQ=m CONFIG_REGMAP_SCCB=m CONFIG_REGMAP_SPI_AVMM=m CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set # end of Generic Driver Options # @@ -2245,9 +2330,15 @@ CONFIG_DMA_SHARED_BUFFER=y # CONFIG_MHI_BUS=m # CONFIG_MHI_BUS_DEBUG is not set -# CONFIG_MHI_BUS_PCI_GENERIC is not set +CONFIG_MHI_BUS_PCI_GENERIC=m +CONFIG_MHI_BUS_EP=m # end of Bus devices +# +# Cache Drivers +# +# end of Cache Drivers + CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y @@ -2271,8 +2362,10 @@ CONFIG_ISCSI_IBFT=m # CONFIG_FW_CFG_SYSFS is not set CONFIG_SYSFB=y # CONFIG_SYSFB_SIMPLEFB is not set +CONFIG_FW_CS_DSP=m CONFIG_GOOGLE_FIRMWARE=y CONFIG_GOOGLE_SMI=m +# CONFIG_GOOGLE_CBMEM is not set CONFIG_GOOGLE_COREBOOT_TABLE=m CONFIG_GOOGLE_MEMCONSOLE=m # CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set @@ -2283,29 +2376,30 @@ CONFIG_GOOGLE_VPD=m # # EFI (Extensible Firmware Interface) Support # -CONFIG_EFI_VARS=y CONFIG_EFI_ESRT=y CONFIG_EFI_VARS_PSTORE=y CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y -CONFIG_EFI_RUNTIME_MAP=y -# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_SOFT_RESERVE=y +CONFIG_EFI_DXE_MEM_ATTRIBUTES=y CONFIG_EFI_RUNTIME_WRAPPERS=y -CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y CONFIG_EFI_BOOTLOADER_CONTROL=m CONFIG_EFI_CAPSULE_LOADER=m # CONFIG_EFI_TEST is not set +CONFIG_EFI_DEV_PATH_PARSER=y CONFIG_APPLE_PROPERTIES=y # CONFIG_RESET_ATTACK_MITIGATION is not set CONFIG_EFI_RCI2_TABLE=y # CONFIG_EFI_DISABLE_PCI_DMA is not set -# end of EFI (Extensible Firmware Interface) Support - -CONFIG_EFI_EMBEDDED_FIRMWARE=y -CONFIG_UEFI_CPER=y -CONFIG_UEFI_CPER_X86=y -CONFIG_EFI_DEV_PATH_PARSER=y CONFIG_EFI_EARLYCON=y CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +# CONFIG_EFI_DISABLE_RUNTIME is not set +CONFIG_EFI_COCO_SECRET=y +CONFIG_UNACCEPTED_MEMORY=y +CONFIG_EFI_EMBEDDED_FIRMWARE=y +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_X86=y # # Tegra firmware driver @@ -2313,7 +2407,12 @@ CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y # end of Tegra firmware driver # end of Firmware Drivers -# CONFIG_GNSS is not set +CONFIG_GNSS=m +CONFIG_GNSS_SERIAL=m +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_GNSS_SIRF_SERIAL=m +CONFIG_GNSS_UBX_SERIAL=m +CONFIG_GNSS_USB=m CONFIG_MTD=m CONFIG_MTD_TESTS=m @@ -2346,6 +2445,7 @@ CONFIG_RFD_FTL=m CONFIG_SSFDC=m CONFIG_SM_FTL=m CONFIG_MTD_OOPS=m +CONFIG_MTD_PSTORE=m CONFIG_MTD_SWAP=m # CONFIG_MTD_PARTITIONED_MASTER is not set @@ -2460,6 +2560,7 @@ CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y CONFIG_MTD_NAND_ECC_SW_BCH=y +CONFIG_MTD_NAND_ECC_MXIC=y # end of ECC engine support # end of NAND @@ -2474,8 +2575,6 @@ CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y # CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y # CONFIG_MTD_SPI_NOR_SWP_KEEP is not set -# CONFIG_SPI_INTEL_SPI_PCI is not set -# CONFIG_SPI_INTEL_SPI_PLATFORM is not set CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_LIMIT=20 @@ -2491,11 +2590,10 @@ CONFIG_PARPORT_SERIAL=m CONFIG_PARPORT_PC_FIFO=y CONFIG_PARPORT_PC_SUPERIO=y CONFIG_PARPORT_PC_PCMCIA=m -# CONFIG_PARPORT_AX88796 is not set CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y -CONFIG_PNP_DEBUG_MESSAGES=y +# CONFIG_PNP_DEBUG_MESSAGES is not set # # Protocols @@ -2506,35 +2604,6 @@ CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=m # CONFIG_BLK_DEV_FD_RAWCMD is not set CONFIG_CDROM=y -CONFIG_PARIDE=m - -# -# Parallel IDE high-level drivers -# -CONFIG_PARIDE_PD=m -CONFIG_PARIDE_PCD=m -CONFIG_PARIDE_PF=m -CONFIG_PARIDE_PT=m -CONFIG_PARIDE_PG=m - -# -# Parallel IDE protocol modules -# -CONFIG_PARIDE_ATEN=m -CONFIG_PARIDE_BPCK=m -CONFIG_PARIDE_COMM=m -CONFIG_PARIDE_DSTR=m -CONFIG_PARIDE_FIT2=m -CONFIG_PARIDE_FIT3=m -CONFIG_PARIDE_EPAT=m -CONFIG_PARIDE_EPATC8=y -CONFIG_PARIDE_EPIA=m -CONFIG_PARIDE_FRIQ=m -CONFIG_PARIDE_FRPW=m -CONFIG_PARIDE_KBIC=m -CONFIG_PARIDE_KTTI=m -CONFIG_PARIDE_ON20=m -CONFIG_PARIDE_ON26=m CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m CONFIG_ZRAM=m CONFIG_ZRAM_DEF_COMP_LZORLE=y @@ -2544,11 +2613,11 @@ CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_LZ4HC is not set # CONFIG_ZRAM_DEF_COMP_842 is not set CONFIG_ZRAM_DEF_COMP="lzo-rle" -# CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZRAM_MEMORY_TRACKING=y +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -CONFIG_BLK_DEV_CRYPTOLOOP=m CONFIG_BLK_DEV_DRBD=m # CONFIG_DRBD_FAULT_INJECTION is not set CONFIG_BLK_DEV_NBD=m @@ -2563,27 +2632,32 @@ CONFIG_XEN_BLKDEV_FRONTEND=m CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_VIRTIO_BLK=m CONFIG_BLK_DEV_RBD=m -CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_UBLK=m +CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y # CONFIG_BLK_DEV_RNBD_CLIENT is not set # CONFIG_BLK_DEV_RNBD_SERVER is not set # # NVME Support # +CONFIG_NVME_COMMON=y CONFIG_NVME_CORE=y CONFIG_BLK_DEV_NVME=y -# CONFIG_NVME_MULTIPATH is not set +CONFIG_NVME_MULTIPATH=y +CONFIG_NVME_VERBOSE_ERRORS=y CONFIG_NVME_FABRICS=m CONFIG_NVME_RDMA=m CONFIG_NVME_FC=m CONFIG_NVME_TCP=m +CONFIG_NVME_AUTH=y CONFIG_NVME_TARGET=m CONFIG_NVME_TARGET_PASSTHRU=y CONFIG_NVME_TARGET_LOOP=m CONFIG_NVME_TARGET_RDMA=m CONFIG_NVME_TARGET_FC=m -# CONFIG_NVME_TARGET_FCLOOP is not set +CONFIG_NVME_TARGET_FCLOOP=m CONFIG_NVME_TARGET_TCP=m +CONFIG_NVME_TARGET_AUTH=y # end of NVME Support # @@ -2598,6 +2672,8 @@ CONFIG_TIFM_CORE=m CONFIG_TIFM_7XX1=m CONFIG_ICS932S401=m CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SMPRO_ERRMON=m +CONFIG_SMPRO_MISC=m CONFIG_HP_ILO=m CONFIG_APDS9802ALS=m CONFIG_ISL29003=m @@ -2614,6 +2690,8 @@ CONFIG_SRAM=y # CONFIG_PCI_ENDPOINT_TEST is not set # CONFIG_XILINX_SDFEC is not set CONFIG_MISC_RTSX=m +CONFIG_TPS6594_ESM=m +CONFIG_TPS6594_PFSM=m CONFIG_C2PORT=m CONFIG_C2PORT_DURAMAR_2150=m @@ -2645,7 +2723,10 @@ CONFIG_ALTERA_STAPL=m CONFIG_INTEL_MEI=y CONFIG_INTEL_MEI_ME=m CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_GSC=m CONFIG_INTEL_MEI_HDCP=m +CONFIG_INTEL_MEI_PXP=m +CONFIG_INTEL_MEI_GSC_PROXY=m CONFIG_VMWARE_VMCI=m CONFIG_GENWQE=m CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=1 @@ -2654,9 +2735,11 @@ CONFIG_ECHO=m CONFIG_MISC_ALCOR_PCI=m CONFIG_MISC_RTSX_PCI=m CONFIG_MISC_RTSX_USB=m -# CONFIG_HABANA_AI is not set # CONFIG_UACCE is not set -# CONFIG_PVPANIC is not set +CONFIG_PVPANIC=y +CONFIG_PVPANIC_MMIO=m +CONFIG_PVPANIC_PCI=m +CONFIG_GP_PCI1XXXX=m # end of Misc devices # @@ -2729,7 +2812,6 @@ CONFIG_SCSI_MVSAS=m CONFIG_SCSI_MVSAS_DEBUG=y CONFIG_SCSI_MVSAS_TASKLET=y CONFIG_SCSI_MVUMI=m -CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_ARCMSR=m CONFIG_SCSI_ESAS2R=m @@ -2744,15 +2826,6 @@ CONFIG_SCSI_MPT3SAS_MAX_SGE=128 CONFIG_SCSI_MPT2SAS=m CONFIG_SCSI_MPI3MR=m CONFIG_SCSI_SMARTPQI=m -CONFIG_SCSI_UFSHCD=m -CONFIG_SCSI_UFSHCD_PCI=m -CONFIG_SCSI_UFS_DWC_TC_PCI=m -CONFIG_SCSI_UFSHCD_PLATFORM=m -CONFIG_SCSI_UFS_CDNS_PLATFORM=m -CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m -CONFIG_SCSI_UFS_BSG=y -CONFIG_SCSI_UFS_CRYPTO=y -# CONFIG_SCSI_UFS_HPB is not set CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_BUSLOGIC=m CONFIG_SCSI_FLASHPOINT=y @@ -2833,7 +2906,8 @@ CONFIG_SATA_PMP=y CONFIG_SATA_AHCI=y CONFIG_SATA_MOBILE_LPM_POLICY=0 CONFIG_SATA_AHCI_PLATFORM=m -CONFIG_SATA_INIC162X=m +CONFIG_AHCI_DWC=m +# CONFIG_SATA_INIC162X is not set CONFIG_SATA_ACARD_AHCI=m CONFIG_SATA_SIL24=m CONFIG_ATA_SFF=y @@ -2907,8 +2981,8 @@ CONFIG_PATA_MPIIX=m CONFIG_PATA_NS87410=m CONFIG_PATA_OPTI=m CONFIG_PATA_PCMCIA=m -# CONFIG_PATA_PLATFORM is not set CONFIG_PATA_RZ1000=m +# CONFIG_PATA_PARPORT is not set # # Generic fallback / legacy drivers @@ -2919,6 +2993,7 @@ CONFIG_PATA_LEGACY=m CONFIG_MD=y CONFIG_BLK_DEV_MD=y CONFIG_MD_AUTODETECT=y +CONFIG_MD_BITMAP_FILE=y CONFIG_MD_LINEAR=m CONFIG_MD_RAID0=m CONFIG_MD_RAID1=m @@ -2957,7 +3032,7 @@ CONFIG_DM_MULTIPATH_QL=m CONFIG_DM_MULTIPATH_ST=m CONFIG_DM_MULTIPATH_HST=m # CONFIG_DM_MULTIPATH_IOA is not set -# CONFIG_DM_DELAY is not set +CONFIG_DM_DELAY=m CONFIG_DM_DUST=m CONFIG_DM_UEVENT=y CONFIG_DM_FLAKEY=m @@ -2967,6 +3042,8 @@ CONFIG_DM_VERITY_FEC=y CONFIG_DM_SWITCH=m CONFIG_DM_LOG_WRITES=m CONFIG_DM_INTEGRITY=m +CONFIG_DM_ZONED=m +CONFIG_DM_AUDIT=y CONFIG_TARGET_CORE=m CONFIG_TCM_IBLOCK=m CONFIG_TCM_FILEIO=m @@ -2977,6 +3054,7 @@ CONFIG_TCM_FC=m CONFIG_ISCSI_TARGET=m CONFIG_ISCSI_TARGET_CXGB4=m CONFIG_SBP_TARGET=m +# CONFIG_REMOTE_TARGET is not set CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -3023,9 +3101,11 @@ CONFIG_VXLAN=m CONFIG_GENEVE=m CONFIG_BAREUDP=m CONFIG_GTP=m +CONFIG_AMT=m CONFIG_MACSEC=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y +# CONFIG_NETCONSOLE_EXTENDED_LOG is not set CONFIG_NETPOLL=y CONFIG_NET_POLL_CONTROLLER=y CONFIG_NTB_NETDEV=m @@ -3060,18 +3140,11 @@ CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set # CONFIG_ATM_ENI_TUNE_BURST is not set -CONFIG_ATM_FIRESTREAM=m -CONFIG_ATM_ZATM=m -# CONFIG_ATM_ZATM_DEBUG is not set # CONFIG_ATM_NICSTAR is not set CONFIG_ATM_IDT77252=m # CONFIG_ATM_IDT77252_DEBUG is not set # CONFIG_ATM_IDT77252_RCV_ALL is not set CONFIG_ATM_IDT77252_USE_SUNI=y -CONFIG_ATM_AMBASSADOR=m -# CONFIG_ATM_AMBASSADOR_DEBUG is not set -CONFIG_ATM_HORIZON=m -# CONFIG_ATM_HORIZON_DEBUG is not set CONFIG_ATM_IA=m # CONFIG_ATM_IA_DEBUG is not set CONFIG_ATM_FORE200E=m @@ -3098,17 +3171,22 @@ CONFIG_NET_DSA_BCM_SF2=m CONFIG_NET_DSA_LANTIQ_GSWIP=m # CONFIG_NET_DSA_MT7530 is not set CONFIG_NET_DSA_MV88E6060=m -# CONFIG_NET_DSA_MICROCHIP_KSZ9477 is not set -# CONFIG_NET_DSA_MICROCHIP_KSZ8795 is not set +# CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set CONFIG_NET_DSA_MV88E6XXX=m # CONFIG_NET_DSA_MV88E6XXX_PTP is not set +# CONFIG_NET_DSA_MSCC_OCELOT_EXT is not set # CONFIG_NET_DSA_MSCC_SEVILLE is not set # CONFIG_NET_DSA_AR9331 is not set +CONFIG_NET_DSA_QCA8K=m +# CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT is not set # CONFIG_NET_DSA_SJA1105 is not set # CONFIG_NET_DSA_XRS700X_I2C is not set # CONFIG_NET_DSA_XRS700X_MDIO is not set -CONFIG_NET_DSA_QCA8K=m +CONFIG_NET_DSA_REALTEK=m +# CONFIG_NET_DSA_REALTEK_MDIO is not set # CONFIG_NET_DSA_REALTEK_SMI is not set +CONFIG_NET_DSA_REALTEK_RTL8365MB=m +CONFIG_NET_DSA_REALTEK_RTL8366RB=m # CONFIG_NET_DSA_SMSC_LAN9303_I2C is not set # CONFIG_NET_DSA_SMSC_LAN9303_MDIO is not set # CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set @@ -3141,9 +3219,13 @@ CONFIG_PCMCIA_NMCLAN=m CONFIG_AMD_XGBE=m CONFIG_AMD_XGBE_DCB=y CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_PDS_CORE=m CONFIG_NET_VENDOR_AQUANTIA=y CONFIG_AQTION=m CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ASIX=y +CONFIG_SPI_AX88796C=m +CONFIG_SPI_AX88796C_COMPRESSION=y CONFIG_NET_VENDOR_ATHEROS=y CONFIG_ATL2=m CONFIG_ATL1=m @@ -3191,9 +3273,12 @@ CONFIG_CHELSIO_T4_FCOE=y CONFIG_CHELSIO_T4VF=m CONFIG_CHELSIO_LIB=m CONFIG_CHELSIO_INLINE_CRYPTO=y +CONFIG_CHELSIO_IPSEC_INLINE=m CONFIG_NET_VENDOR_CISCO=y CONFIG_ENIC=m CONFIG_NET_VENDOR_CORTINA=y +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DM9051 is not set # CONFIG_DNET is not set CONFIG_NET_VENDOR_DEC=y CONFIG_NET_TULIP=y @@ -3203,7 +3288,6 @@ CONFIG_TULIP=m # CONFIG_TULIP_MWI is not set CONFIG_TULIP_MMIO=y # CONFIG_TULIP_NAPI is not set -CONFIG_DE4X5=m CONFIG_WINBOND_840=m CONFIG_DM9102=m CONFIG_ULI526X=m @@ -3219,9 +3303,14 @@ CONFIG_BE2NET_BE2=y CONFIG_BE2NET_BE3=y CONFIG_BE2NET_LANCER=y CONFIG_BE2NET_SKYHAWK=y +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set CONFIG_NET_VENDOR_EZCHIP=y CONFIG_NET_VENDOR_FUJITSU=y CONFIG_PCMCIA_FMVJ18X=m +CONFIG_NET_VENDOR_FUNGIBLE=y +CONFIG_FUN_CORE=m +CONFIG_FUN_ETH=m CONFIG_NET_VENDOR_GOOGLE=y CONFIG_GVE=m CONFIG_NET_VENDOR_HUAWEI=y @@ -3236,20 +3325,25 @@ CONFIG_IGB=m CONFIG_IGB_HWMON=y CONFIG_IGB_DCA=y CONFIG_IGBVF=m -CONFIG_IXGB=m CONFIG_IXGBE=m CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_IPSEC=y CONFIG_IXGBEVF=m +CONFIG_IXGBEVF_IPSEC=y CONFIG_I40E=m CONFIG_I40E_DCB=y CONFIG_IAVF=m CONFIG_I40EVF=m CONFIG_ICE=m +CONFIG_ICE_SWITCHDEV=y +CONFIG_ICE_HWTS=y CONFIG_FM10K=m CONFIG_IGC=m CONFIG_JME=m +CONFIG_NET_VENDOR_ADI=y +# CONFIG_ADIN1110 is not set CONFIG_NET_VENDOR_LITEX=y CONFIG_NET_VENDOR_MARVELL=y CONFIG_MVMDIO=m @@ -3258,6 +3352,7 @@ CONFIG_SKGE=m CONFIG_SKGE_GENESIS=y CONFIG_SKY2=m # CONFIG_SKY2_DEBUG is not set +# CONFIG_OCTEON_EP is not set # CONFIG_PRESTERA is not set CONFIG_NET_VENDOR_MELLANOX=y CONFIG_MLX4_EN=m @@ -3266,7 +3361,6 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_MLX4_CORE_GEN2=y CONFIG_MLX5_CORE=m -CONFIG_MLX5_ACCEL=y CONFIG_MLX5_FPGA=y CONFIG_MLX5_CORE_EN=y CONFIG_MLX5_EN_ARFS=y @@ -3279,7 +3373,8 @@ CONFIG_MLX5_TC_CT=y CONFIG_MLX5_TC_SAMPLE=y CONFIG_MLX5_CORE_EN_DCB=y # CONFIG_MLX5_CORE_IPOIB is not set -CONFIG_MLX5_FPGA_IPSEC=y +# CONFIG_MLX5_MACSEC is not set +# CONFIG_MLX5_EN_IPSEC is not set CONFIG_MLX5_SW_STEERING=y # CONFIG_MLX5_SF is not set CONFIG_MLXSW_CORE=m @@ -3301,6 +3396,7 @@ CONFIG_ENC28J60=m # CONFIG_ENC28J60_WRITEVERIFY is not set CONFIG_ENCX24J600=m CONFIG_LAN743X=m +# CONFIG_VCAP is not set CONFIG_NET_VENDOR_MICROSEMI=y CONFIG_NET_VENDOR_MICROSOFT=y # CONFIG_MICROSOFT_MANA is not set @@ -3315,12 +3411,11 @@ CONFIG_NATSEMI=m CONFIG_NS83820=m CONFIG_NET_VENDOR_NETERION=y CONFIG_S2IO=m -CONFIG_VXGE=m -# CONFIG_VXGE_DEBUG_TRACE_ALL is not set CONFIG_NET_VENDOR_NETRONOME=y CONFIG_NFP=m # CONFIG_NFP_APP_FLOWER is not set CONFIG_NFP_APP_ABM_NIC=y +CONFIG_NFP_NET_IPSEC=y # CONFIG_NFP_DEBUG is not set CONFIG_NET_VENDOR_8390=y CONFIG_PCMCIA_AXNET=m @@ -3385,6 +3480,11 @@ CONFIG_SFC_SRIOV=y CONFIG_SFC_MCDI_LOGGING=y CONFIG_SFC_FALCON=m CONFIG_SFC_FALCON_MTD=y +CONFIG_SFC_SIENA=m +CONFIG_SFC_SIENA_MTD=y +CONFIG_SFC_SIENA_MCDI_MON=y +CONFIG_SFC_SIENA_SRIOV=y +CONFIG_SFC_SIENA_MCDI_LOGGING=y CONFIG_NET_VENDOR_SMSC=y CONFIG_PCMCIA_SMC91C92=m CONFIG_EPIC100=m @@ -3411,10 +3511,16 @@ CONFIG_TEHUTI=m CONFIG_NET_VENDOR_TI=y # CONFIG_TI_CPSW_PHY_SEL is not set CONFIG_TLAN=m +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=m CONFIG_VIA_RHINE_MMIO=y CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WANGXUN=y +CONFIG_LIBWX=m +# CONFIG_NGBE is not set +CONFIG_TXGBE=m CONFIG_NET_VENDOR_WIZNET=y CONFIG_WIZNET_W5100=m CONFIG_WIZNET_W5300=m @@ -3445,6 +3551,7 @@ CONFIG_SFP=m # CONFIG_AMD_PHY=m CONFIG_ADIN_PHY=m +CONFIG_ADIN1100_PHY=m CONFIG_AQUANTIA_PHY=m CONFIG_AX88796B_PHY=m CONFIG_BROADCOM_PHY=m @@ -3453,6 +3560,7 @@ CONFIG_BCM7XXX_PHY=m # CONFIG_BCM84881_PHY is not set CONFIG_BCM87XX_PHY=m CONFIG_BCM_NET_PHYLIB=m +CONFIG_BCM_NET_PHYPTP=m CONFIG_CICADA_PHY=m CONFIG_CORTINA_PHY=m CONFIG_DAVICOM_PHY=m @@ -3462,17 +3570,21 @@ CONFIG_INTEL_XWAY_PHY=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MARVELL_PHY=m CONFIG_MARVELL_10G_PHY=m -# CONFIG_MARVELL_88X2222_PHY is not set +CONFIG_MARVELL_88Q2XXX_PHY=m +CONFIG_MARVELL_88X2222_PHY=m # CONFIG_MAXLINEAR_GPHY is not set # CONFIG_MEDIATEK_GE_PHY is not set CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_T1S_PHY=m CONFIG_MICROCHIP_PHY=m CONFIG_MICROCHIP_T1_PHY=m CONFIG_MICROSEMI_PHY=m -# CONFIG_MOTORCOMM_PHY is not set +CONFIG_MOTORCOMM_PHY=m CONFIG_NATIONAL_PHY=m +# CONFIG_NXP_CBTX_PHY is not set # CONFIG_NXP_C45_TJA11XX_PHY is not set CONFIG_NXP_TJA11XX_PHY=m +CONFIG_NCN26000_PHY=m CONFIG_AT803X_PHY=m CONFIG_QSEMI_PHY=m CONFIG_REALTEK_PHY=m @@ -3486,9 +3598,71 @@ CONFIG_TERANETICS_PHY=m CONFIG_DP83848_PHY=m CONFIG_DP83867_PHY=m CONFIG_DP83869_PHY=m +CONFIG_DP83TD510_PHY=m CONFIG_VITESSE_PHY=m CONFIG_XILINX_GMII2RGMII=m CONFIG_MICREL_KS8995MA=m +# CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_NETLINK=y +# CONFIG_CAN_CALC_BITTIMING is not set +CONFIG_CAN_RX_OFFLOAD=y +# CONFIG_CAN_CAN327 is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +CONFIG_CAN_SLCAN=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +# CONFIG_CAN_CTUCANFD_PCI is not set +CONFIG_CAN_IFI_CANFD=m +CONFIG_CAN_M_CAN=m +# CONFIG_CAN_M_CAN_PCI is not set +# CONFIG_CAN_M_CAN_PLATFORM is not set +# CONFIG_CAN_M_CAN_TCAN4X5X is not set +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +# CONFIG_CAN_F81601 is not set +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_SJA1000_ISA=m +# CONFIG_CAN_SJA1000_PLATFORM is not set +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +CONFIG_CAN_MCP251X=m +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB=m +CONFIG_CAN_ETAS_ES58X=m +CONFIG_CAN_F81604=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +# CONFIG_CAN_MCBA_USB is not set +CONFIG_CAN_PEAK_USB=m +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set CONFIG_MDIO_DEVICE=y CONFIG_MDIO_BUS=y CONFIG_FWNODE_MDIO=y @@ -3501,6 +3675,7 @@ CONFIG_MDIO_GPIO=m CONFIG_MDIO_I2C=m # CONFIG_MDIO_MVUSB is not set CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_REGMAP=m CONFIG_MDIO_THUNDER=m # @@ -3511,6 +3686,7 @@ CONFIG_MDIO_THUNDER=m # PCS device drivers # CONFIG_PCS_XPCS=m +CONFIG_PCS_LYNX=m # end of PCS device drivers CONFIG_PLIP=m @@ -3522,6 +3698,11 @@ CONFIG_PPP_MPPE=m CONFIG_PPP_MULTILINK=y CONFIG_PPPOATM=m CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 CONFIG_PPTP=m CONFIG_PPPOL2TP=m CONFIG_PPP_ASYNC=m @@ -3638,6 +3819,9 @@ CONFIG_ATH11K_PCI=m # CONFIG_ATH11K_DEBUG is not set # CONFIG_ATH11K_DEBUGFS is not set # CONFIG_ATH11K_TRACING is not set +CONFIG_ATH12K=m +# CONFIG_ATH12K_DEBUG is not set +# CONFIG_ATH12K_TRACING is not set CONFIG_WLAN_VENDOR_ATMEL=y CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m @@ -3675,6 +3859,7 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y # CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_BRCMUTIL=m CONFIG_BRCMSMAC=m +CONFIG_BRCMSMAC_LEDS=y CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_PROTO_BCDC=y CONFIG_BRCMFMAC_PROTO_MSGBUF=y @@ -3714,7 +3899,6 @@ CONFIG_IWLWIFI_LEDS=y CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y -# CONFIG_IWLWIFI_BCAST_FILTERING is not set # # Debugging Options @@ -3766,9 +3950,12 @@ CONFIG_MT7601U=m CONFIG_MT76_CORE=m CONFIG_MT76_LEDS=y CONFIG_MT76_USB=m +CONFIG_MT76_SDIO=m CONFIG_MT76x02_LIB=m CONFIG_MT76x02_USB=m CONFIG_MT76_CONNAC_LIB=m +CONFIG_MT792x_LIB=m +CONFIG_MT792x_USB=m CONFIG_MT76x0_COMMON=m CONFIG_MT76x0U=m CONFIG_MT76x0E=m @@ -3778,15 +3965,22 @@ CONFIG_MT76x2U=m CONFIG_MT7603E=m CONFIG_MT7615_COMMON=m CONFIG_MT7615E=m -# CONFIG_MT7663U is not set -# CONFIG_MT7663S is not set -# CONFIG_MT7915E is not set -# CONFIG_MT7921E is not set +CONFIG_MT7663_USB_SDIO_COMMON=m +CONFIG_MT7663U=m +CONFIG_MT7663S=m +CONFIG_MT7915E=m +CONFIG_MT7921_COMMON=m +CONFIG_MT7921E=m +CONFIG_MT7921S=m +CONFIG_MT7921U=m +CONFIG_MT7996E=m CONFIG_WLAN_VENDOR_MICROCHIP=y CONFIG_WILC1000=m CONFIG_WILC1000_SDIO=m # CONFIG_WILC1000_SPI is not set # CONFIG_WILC1000_HW_OOB_INTR is not set +CONFIG_WLAN_VENDOR_PURELIFI=y +CONFIG_PLFXLC=m CONFIG_WLAN_VENDOR_RALINK=y CONFIG_RT2X00=m CONFIG_RT2400PCI=m @@ -3843,20 +4037,37 @@ CONFIG_RTL8XXXU=m CONFIG_RTW88=m CONFIG_RTW88_CORE=m CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m CONFIG_RTW88_8822B=m CONFIG_RTW88_8822C=m CONFIG_RTW88_8723D=m CONFIG_RTW88_8821C=m CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BS=m +CONFIG_RTW88_8822BU=m CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CS=m +CONFIG_RTW88_8822CU=m CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723DU=m CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW88_8821CU=m CONFIG_RTW88_DEBUG=y CONFIG_RTW88_DEBUGFS=y CONFIG_RTW89=m CONFIG_RTW89_CORE=m CONFIG_RTW89_PCI=m +CONFIG_RTW89_8851B=m +CONFIG_RTW89_8852A=m +CONFIG_RTW89_8852B=m +CONFIG_RTW89_8852C=m +CONFIG_RTW89_8851BE=m CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852BE=m +CONFIG_RTW89_8852CE=m CONFIG_RTW89_DEBUG=y CONFIG_RTW89_DEBUGMSG=y CONFIG_RTW89_DEBUGFS=y @@ -3866,6 +4077,8 @@ CONFIG_RSI_DEBUGFS=y CONFIG_RSI_SDIO=m CONFIG_RSI_USB=m CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_SILABS=y +CONFIG_WFX=m CONFIG_WLAN_VENDOR_ST=y CONFIG_CW1200=m CONFIG_CW1200_WLAN_SDIO=m @@ -3878,7 +4091,6 @@ CONFIG_WL12XX=m CONFIG_WL18XX=m CONFIG_WLCORE=m CONFIG_WLCORE_SDIO=m -CONFIG_WILINK_PLATFORM_DATA=y CONFIG_WLAN_VENDOR_ZYDAS=y CONFIG_USB_ZD1201=m CONFIG_ZD1211RW=m @@ -3888,11 +4100,10 @@ CONFIG_QTNFMAC=m CONFIG_QTNFMAC_PCIE=m CONFIG_PCMCIA_RAYCS=m CONFIG_PCMCIA_WL3501=m -CONFIG_MAC80211_HWSIM=m CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_MAC80211_HWSIM=m # CONFIG_VIRT_WIFI is not set CONFIG_WAN=y -CONFIG_LANMEDIA=m CONFIG_HDLC=m CONFIG_HDLC_RAW=m CONFIG_HDLC_RAW_ETH=m @@ -3908,7 +4119,6 @@ CONFIG_LAPBETHER=m CONFIG_IEEE802154_DRIVERS=m CONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m -# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set CONFIG_IEEE802154_MRF24J40=m CONFIG_IEEE802154_CC2520=m CONFIG_IEEE802154_ATUSB=m @@ -3922,11 +4132,13 @@ CONFIG_IEEE802154_CA8210=m # Wireless WAN # CONFIG_WWAN=y +CONFIG_WWAN_DEBUGFS=y # CONFIG_WWAN_HWSIM is not set CONFIG_MHI_WWAN_CTRL=m CONFIG_MHI_WWAN_MBIM=m # CONFIG_RPMSG_WWAN_CTRL is not set CONFIG_IOSM=m +CONFIG_MTK_T7XX=m # end of Wireless WAN CONFIG_XEN_NETDEV_FRONTEND=m @@ -3968,6 +4180,7 @@ CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y CONFIG_INPUT_SPARSEKMAP=m CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_VIVALDIFMAP=y # # Userland interfaces @@ -4007,6 +4220,7 @@ CONFIG_KEYBOARD_TCA8418=m # CONFIG_KEYBOARD_MPR121 is not set CONFIG_KEYBOARD_NEWTON=m # CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_PINEPHONE is not set CONFIG_KEYBOARD_SAMSUNG=m CONFIG_KEYBOARD_STOWAWAY=m CONFIG_KEYBOARD_SUNKBD=m @@ -4015,6 +4229,7 @@ CONFIG_KEYBOARD_SUNKBD=m CONFIG_KEYBOARD_TWL4030=m CONFIG_KEYBOARD_XTKBD=m CONFIG_KEYBOARD_CROS_EC=m +# CONFIG_KEYBOARD_CYPRESS_SF is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=m CONFIG_MOUSE_PS2_ALPS=y @@ -4079,6 +4294,7 @@ CONFIG_JOYSTICK_WALKERA0701=m CONFIG_JOYSTICK_PXRC=m # CONFIG_JOYSTICK_QWIIC is not set # CONFIG_JOYSTICK_FSIA6B is not set +# CONFIG_JOYSTICK_SENSEHAT is not set CONFIG_INPUT_TABLET=y CONFIG_TABLET_USB_ACECAD=m CONFIG_TABLET_USB_AIPTEK=m @@ -4108,6 +4324,7 @@ CONFIG_TOUCHSCREEN_CYTTSP_SPI=m CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP5=m CONFIG_TOUCHSCREEN_DA9034=m CONFIG_TOUCHSCREEN_DA9052=m CONFIG_TOUCHSCREEN_DYNAPRO=m @@ -4119,6 +4336,7 @@ CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GOODIX=m # CONFIG_TOUCHSCREEN_HIDEEP is not set # CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=m CONFIG_TOUCHSCREEN_ILI210X=m # CONFIG_TOUCHSCREEN_ILITEK is not set # CONFIG_TOUCHSCREEN_S6SY761 is not set @@ -4134,13 +4352,14 @@ CONFIG_TOUCHSCREEN_MMS114=m CONFIG_TOUCHSCREEN_MELFAS_MIP4=m # CONFIG_TOUCHSCREEN_MSG2638 is not set CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS=m +# CONFIG_TOUCHSCREEN_IMAGIS is not set CONFIG_TOUCHSCREEN_INEXIO=m -CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m CONFIG_TOUCHSCREEN_TOUCHWIN=m -CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m CONFIG_TOUCHSCREEN_PIXCIR=m CONFIG_TOUCHSCREEN_WDT87XX_I2C=m CONFIG_TOUCHSCREEN_WM831X=m @@ -4187,9 +4406,12 @@ CONFIG_TOUCHSCREEN_SURFACE3_SPI=m CONFIG_TOUCHSCREEN_TPS6507X=m CONFIG_TOUCHSCREEN_ZET6223=m CONFIG_TOUCHSCREEN_ZFORCE=m +# CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set CONFIG_TOUCHSCREEN_ROHM_BU21023=m # CONFIG_TOUCHSCREEN_IQS5XX is not set +CONFIG_TOUCHSCREEN_IQS7211=m # CONFIG_TOUCHSCREEN_ZINITIX is not set +CONFIG_TOUCHSCREEN_HIMAX_HX83112B=m CONFIG_INPUT_MISC=y CONFIG_INPUT_88PM860X_ONKEY=m CONFIG_INPUT_88PM80X_ONKEY=m @@ -4235,9 +4457,11 @@ CONFIG_INPUT_DA9063_ONKEY=m CONFIG_INPUT_WM831X_ON=m CONFIG_INPUT_PCAP=m # CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IBM_PANEL is not set CONFIG_INPUT_IMS_PCU=m # CONFIG_INPUT_IQS269A is not set # CONFIG_INPUT_IQS626A is not set +# CONFIG_INPUT_IQS7222 is not set CONFIG_INPUT_CMA3000=m CONFIG_INPUT_CMA3000_I2C=m CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y @@ -4280,8 +4504,6 @@ CONFIG_HYPERV_KEYBOARD=m CONFIG_SERIO_GPIO_PS2=m CONFIG_USERIO=m CONFIG_GAMEPORT=m -CONFIG_GAMEPORT_NS558=m -CONFIG_GAMEPORT_L4=m CONFIG_GAMEPORT_EMU10K1=m CONFIG_GAMEPORT_FM801=m # end of Hardware I/O ports @@ -4300,6 +4522,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=0 +# CONFIG_LEGACY_TIOCSTI is not set CONFIG_LDISC_AUTOLOAD=y # @@ -4313,6 +4536,7 @@ CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_FINTEK=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCILIB=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_EXAR=y CONFIG_SERIAL_8250_CS=m @@ -4320,14 +4544,17 @@ CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y +# CONFIG_SERIAL_8250_PCI1XXXX is not set CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_DETECT_IRQ is not set CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_DWLIB=y +# CONFIG_SERIAL_8250_DFL is not set CONFIG_SERIAL_8250_DW=m CONFIG_SERIAL_8250_RT288X=y CONFIG_SERIAL_8250_LPSS=y CONFIG_SERIAL_8250_MID=y +CONFIG_SERIAL_8250_PERICOM=m # # Non-8250 serial port support @@ -4345,7 +4572,6 @@ CONFIG_SERIAL_SC16IS7XX_CORE=m CONFIG_SERIAL_SC16IS7XX=m CONFIG_SERIAL_SC16IS7XX_I2C=y # CONFIG_SERIAL_SC16IS7XX_SPI is not set -# CONFIG_SERIAL_BCM63XX is not set CONFIG_SERIAL_ALTERA_JTAGUART=m CONFIG_SERIAL_ALTERA_UART=m CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 @@ -4363,8 +4589,8 @@ CONFIG_SERIAL_MCTRL_GPIO=y CONFIG_SERIAL_NONSTANDARD=y CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m -CONFIG_SYNCLINK_GT=m CONFIG_N_HDLC=m +CONFIG_IPWIRELESS=m CONFIG_N_GSM=m CONFIG_NOZOMI=m CONFIG_NULL_TTY=m @@ -4372,6 +4598,7 @@ CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y CONFIG_HVC_XEN=y CONFIG_HVC_XEN_FRONTEND=y +CONFIG_RPMSG_TTY=m CONFIG_SERIAL_DEV_BUS=m # CONFIG_TTY_PRINTK is not set CONFIG_PRINTER=m @@ -4386,8 +4613,10 @@ CONFIG_IPMI_PANIC_STRING=y CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_SSIF=m +CONFIG_IPMI_IPMB=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m +CONFIG_SSIF_IPMI_BMC=m CONFIG_IPMB_DEVICE_INTERFACE=m CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_TIMERIOMEM=m @@ -4398,17 +4627,6 @@ CONFIG_HW_RANDOM_VIA=m CONFIG_HW_RANDOM_VIRTIO=m CONFIG_HW_RANDOM_XIPHERA=m CONFIG_APPLICOM=m - -# -# PCMCIA character devices -# -CONFIG_SYNCLINK_CS=m -CONFIG_CARDMAN_4000=m -CONFIG_CARDMAN_4040=m -CONFIG_SCR24X=m -CONFIG_IPWIRELESS=m -# end of PCMCIA character devices - CONFIG_MWAVE=m CONFIG_DEVMEM=y CONFIG_NVRAM=y @@ -4423,7 +4641,8 @@ CONFIG_TCG_TIS_CORE=m CONFIG_TCG_TIS=m CONFIG_TCG_TIS_SPI=m # CONFIG_TCG_TIS_SPI_CR50 is not set -# CONFIG_TCG_TIS_I2C_CR50 is not set +CONFIG_TCG_TIS_I2C=m +CONFIG_TCG_TIS_I2C_CR50=m CONFIG_TCG_TIS_I2C_ATMEL=m CONFIG_TCG_TIS_I2C_INFINEON=m CONFIG_TCG_TIS_I2C_NUVOTON=m @@ -4441,8 +4660,6 @@ CONFIG_XILLYBUS_CLASS=m CONFIG_XILLYBUS=m CONFIG_XILLYBUS_PCIE=m # CONFIG_XILLYUSB is not set -CONFIG_RANDOM_TRUST_CPU=y -CONFIG_RANDOM_TRUST_BOOTLOADER=y # end of Character devices # @@ -4477,6 +4694,7 @@ CONFIG_I2C_ALGOBIT=m # # PC SMBus host controller drivers # +CONFIG_I2C_CCGX_UCSI=m CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m @@ -4527,6 +4745,7 @@ CONFIG_I2C_DIOLAN_U2C=m CONFIG_I2C_DLN2=m # CONFIG_I2C_CP2615 is not set CONFIG_I2C_PARPORT=m +# CONFIG_I2C_PCI1XXXX is not set CONFIG_I2C_ROBOTFUZZ_OSIF=m CONFIG_I2C_TAOS_EVM=m CONFIG_I2C_TINY_USB=m @@ -4564,23 +4783,29 @@ CONFIG_SPI_MEM=y # CONFIG_SPI_ALTERA=m CONFIG_SPI_ALTERA_CORE=m +CONFIG_SPI_ALTERA_DFL=m CONFIG_SPI_AXI_SPI_ENGINE=m CONFIG_SPI_BITBANG=m CONFIG_SPI_BUTTERFLY=m # CONFIG_SPI_CADENCE is not set +CONFIG_SPI_CS42L43=m CONFIG_SPI_DESIGNWARE=m # CONFIG_SPI_DW_DMA is not set CONFIG_SPI_DW_PCI=m CONFIG_SPI_DW_MMIO=m # CONFIG_SPI_DLN2 is not set -# CONFIG_SPI_NXP_FLEXSPI is not set CONFIG_SPI_GPIO=m +CONFIG_SPI_INTEL=m +CONFIG_SPI_INTEL_PCI=m +CONFIG_SPI_INTEL_PLATFORM=m CONFIG_SPI_LM70_LLP=m +# CONFIG_SPI_MICROCHIP_CORE is not set +# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set CONFIG_SPI_LANTIQ_SSC=m CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PCI1XXXX=m CONFIG_SPI_PXA2XX=m CONFIG_SPI_PXA2XX_PCI=m -CONFIG_SPI_ROCKCHIP=m CONFIG_SPI_SC18IS602=m # CONFIG_SPI_SIFIVE is not set # CONFIG_SPI_MXIC is not set @@ -4640,8 +4865,10 @@ CONFIG_PTP_1588_CLOCK_OPTIONAL=m CONFIG_PTP_1588_CLOCK_KVM=m # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set +CONFIG_PTP_1588_CLOCK_MOCK=m # CONFIG_PTP_1588_CLOCK_VMW is not set # CONFIG_PTP_1588_CLOCK_OCP is not set +# CONFIG_PTP_DFL_TOD is not set # end of PTP clock support CONFIG_PINCTRL=y @@ -4650,9 +4877,21 @@ CONFIG_PINCONF=y CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set CONFIG_PINCTRL_AMD=y +# CONFIG_PINCTRL_CY8C95X0 is not set # CONFIG_PINCTRL_DA9062 is not set # CONFIG_PINCTRL_MCP23S08 is not set CONFIG_PINCTRL_SX150X=y +CONFIG_PINCTRL_CS42L43=m +CONFIG_PINCTRL_MADERA=m +CONFIG_PINCTRL_CS47L15=y +CONFIG_PINCTRL_CS47L35=y +CONFIG_PINCTRL_CS47L85=y +CONFIG_PINCTRL_CS47L90=y +CONFIG_PINCTRL_CS47L92=y + +# +# Intel pinctrl drivers +# CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_CHERRYVIEW=m CONFIG_PINCTRL_LYNXPOINT=y @@ -4669,20 +4908,16 @@ CONFIG_PINCTRL_ICELAKE=m CONFIG_PINCTRL_JASPERLAKE=m # CONFIG_PINCTRL_LAKEFIELD is not set CONFIG_PINCTRL_LEWISBURG=m +CONFIG_PINCTRL_METEORLAKE=m CONFIG_PINCTRL_SUNRISEPOINT=m CONFIG_PINCTRL_TIGERLAKE=m +# end of Intel pinctrl drivers # # Renesas pinctrl drivers # # end of Renesas pinctrl drivers -CONFIG_PINCTRL_MADERA=m -CONFIG_PINCTRL_CS47L15=y -CONFIG_PINCTRL_CS47L35=y -CONFIG_PINCTRL_CS47L85=y -CONFIG_PINCTRL_CS47L90=y -CONFIG_PINCTRL_CS47L92=y CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_GPIO_ACPI=y @@ -4692,7 +4927,9 @@ CONFIG_GPIO_SYSFS=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_REGMAP=m CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_IDIO_16=m # # Memory mapped GPIO drivers @@ -4703,13 +4940,14 @@ CONFIG_GPIO_DWAPB=m CONFIG_GPIO_GENERIC_PLATFORM=y CONFIG_GPIO_ICH=m # CONFIG_GPIO_MB86S7X is not set -CONFIG_GPIO_VX855=m +CONFIG_GPIO_TANGIER=m CONFIG_GPIO_AMD_FCH=m # end of Memory mapped GPIO drivers # # Port-mapped I/O GPIO drivers # +CONFIG_GPIO_VX855=m CONFIG_GPIO_F7188X=m CONFIG_GPIO_IT87=m CONFIG_GPIO_SCH=m @@ -4721,7 +4959,8 @@ CONFIG_GPIO_WS16C48=m # # I2C GPIO expanders # -CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_FXL6408=m +CONFIG_GPIO_DS4520=m CONFIG_GPIO_MAX7300=m CONFIG_GPIO_MAX732X=m CONFIG_GPIO_PCA953X=m @@ -4741,6 +4980,7 @@ CONFIG_GPIO_CRYSTAL_COVE=y CONFIG_GPIO_DA9052=m CONFIG_GPIO_DA9055=m CONFIG_GPIO_DLN2=m +CONFIG_GPIO_ELKHARTLAKE=m CONFIG_GPIO_KEMPLD=m CONFIG_GPIO_LP3943=m CONFIG_GPIO_MADERA=m @@ -4753,7 +4993,6 @@ CONFIG_GPIO_TPS65912=m # CONFIG_GPIO_TQMX86 is not set CONFIG_GPIO_TWL4030=m CONFIG_GPIO_TWL6040=m -# CONFIG_GPIO_UCB1400 is not set CONFIG_GPIO_WM831X=m CONFIG_GPIO_WM8350=m CONFIG_GPIO_WM8994=m @@ -4789,8 +5028,10 @@ CONFIG_GPIO_VIPERBOARD=m # Virtual GPIO drivers # CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_LATCH=m CONFIG_GPIO_MOCKUP=m -# CONFIG_GPIO_VIRTIO is not set +CONFIG_GPIO_VIRTIO=m +# CONFIG_GPIO_SIM is not set # end of Virtual GPIO drivers CONFIG_W1=m @@ -4802,7 +5043,6 @@ CONFIG_W1_CON=y CONFIG_W1_MASTER_MATROX=m CONFIG_W1_MASTER_DS2490=m CONFIG_W1_MASTER_DS2482=m -CONFIG_W1_MASTER_DS1WM=m CONFIG_W1_MASTER_GPIO=m CONFIG_W1_MASTER_SGI=m # end of 1-wire Bus Masters @@ -4834,13 +5074,13 @@ CONFIG_W1_SLAVE_DS28E04=m # CONFIG_POWER_RESET is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set CONFIG_GENERIC_ADC_BATTERY=m +# CONFIG_IP5XXX_POWER is not set CONFIG_MAX8925_POWER=m CONFIG_WM831X_BACKUP=m CONFIG_WM831X_POWER=m CONFIG_WM8350_POWER=m -# CONFIG_TEST_POWER is not set +CONFIG_TEST_POWER=m CONFIG_BATTERY_88PM860X=m CONFIG_CHARGER_ADP5061=m # CONFIG_BATTERY_CW2015 is not set @@ -4848,6 +5088,7 @@ CONFIG_BATTERY_DS2760=m CONFIG_BATTERY_DS2780=m CONFIG_BATTERY_DS2781=m CONFIG_BATTERY_DS2782=m +# CONFIG_BATTERY_SAMSUNG_SDI is not set CONFIG_BATTERY_SBS=m CONFIG_CHARGER_SBS=m # CONFIG_MANAGER_SBS is not set @@ -4877,6 +5118,7 @@ CONFIG_CHARGER_LT3651=m # CONFIG_CHARGER_LTC4162L is not set CONFIG_CHARGER_MAX14577=m # CONFIG_CHARGER_MAX77693 is not set +# CONFIG_CHARGER_MAX77976 is not set CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_BQ2415X=m @@ -4893,10 +5135,13 @@ CONFIG_CHARGER_TPS65090=m # CONFIG_BATTERY_GOLDFISH is not set CONFIG_BATTERY_RT5033=m CONFIG_CHARGER_RT9455=m +# CONFIG_CHARGER_RT9467 is not set +# CONFIG_CHARGER_RT9471 is not set CONFIG_CHARGER_CROS_USBPD=m CONFIG_CHARGER_CROS_PCHG=m # CONFIG_CHARGER_BD99954 is not set CONFIG_CHARGER_WILCO=m +# CONFIG_BATTERY_UG3105 is not set CONFIG_HWMON=m CONFIG_HWMON_VID=m # CONFIG_HWMON_DEBUG_CHIP is not set @@ -4906,10 +5151,10 @@ CONFIG_HWMON_VID=m # CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_SMPRO=m CONFIG_SENSORS_AD7314=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m -CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m @@ -4933,7 +5178,6 @@ CONFIG_SENSORS_K10TEMP=m CONFIG_SENSORS_FAM15H_POWER=m CONFIG_SENSORS_APPLESMC=m CONFIG_SENSORS_ASB100=m -CONFIG_SENSORS_ASPEED=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_CORSAIR_CPRO=m # CONFIG_SENSORS_CORSAIR_PSU is not set @@ -4941,6 +5185,7 @@ CONFIG_SENSORS_DRIVETEMP=m CONFIG_SENSORS_DS620=m CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_DELL_SMM=m +CONFIG_I8K=y CONFIG_SENSORS_DA9052_ADC=m CONFIG_SENSORS_DA9055=m CONFIG_SENSORS_I5K_AMB=m @@ -4955,6 +5200,7 @@ CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_G760A=m CONFIG_SENSORS_G762=m CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HS3001=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IIO_HWMON=m @@ -4984,12 +5230,15 @@ CONFIG_SENSORS_MAX1668=m CONFIG_SENSORS_MAX197=m CONFIG_SENSORS_MAX31722=m CONFIG_SENSORS_MAX31730=m +CONFIG_SENSORS_MAX31760=m +CONFIG_MAX31827=m +# CONFIG_SENSORS_MAX6620 is not set # CONFIG_SENSORS_MAX6621 is not set CONFIG_SENSORS_MAX6639=m -CONFIG_SENSORS_MAX6642=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_MAX6697=m CONFIG_SENSORS_MAX31790=m +# CONFIG_SENSORS_MC34VR500 is not set CONFIG_SENSORS_MCP3021=m CONFIG_SENSORS_MLXREG_FAN=m CONFIG_SENSORS_TC654=m @@ -5017,28 +5266,41 @@ CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775_CORE=m CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT6775_I2C=m CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_NPCM7XX=m -# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +CONFIG_SENSORS_NZXT_KRAKEN2=m +CONFIG_SENSORS_NZXT_SMART2=m +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_OXP is not set CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PECI_CPUTEMP=m +CONFIG_SENSORS_PECI_DIMMTEMP=m +CONFIG_SENSORS_PECI=m CONFIG_PMBUS=m CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_ACBEL_FSG032=m CONFIG_SENSORS_ADM1266=m CONFIG_SENSORS_ADM1275=m # CONFIG_SENSORS_BEL_PFE is not set # CONFIG_SENSORS_BPA_RS600 is not set -# CONFIG_SENSORS_FSP_3Y is not set +# CONFIG_SENSORS_DELTA_AHE50DC_FAN is not set +CONFIG_SENSORS_FSP_3Y=m CONFIG_SENSORS_IBM_CFFPS=m # CONFIG_SENSORS_DPS920AB is not set CONFIG_SENSORS_INSPUR_IPSPS=m CONFIG_SENSORS_IR35221=m # CONFIG_SENSORS_IR36021 is not set CONFIG_SENSORS_IR38064=m +# CONFIG_SENSORS_IR38064_REGULATOR is not set CONFIG_SENSORS_IRPS5401=m CONFIG_SENSORS_ISL68137=m CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM25066_REGULATOR=y +CONFIG_SENSORS_LT7182S=m CONFIG_SENSORS_LTC2978=m CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_LTC3815=m @@ -5052,28 +5314,39 @@ CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m # CONFIG_SENSORS_MP2888 is not set CONFIG_SENSORS_MP2975=m -# CONFIG_SENSORS_PIM4328 is not set -# CONFIG_SENSORS_PM6764TR is not set +CONFIG_SENSORS_MP2975_REGULATOR=y +CONFIG_SENSORS_MP5023=m +CONFIG_SENSORS_MPQ7932_REGULATOR=y +CONFIG_SENSORS_MPQ7932=m +CONFIG_SENSORS_PIM4328=m +CONFIG_SENSORS_PLI1209BC=m +CONFIG_SENSORS_PLI1209BC_REGULATOR=y +CONFIG_SENSORS_PM6764TR=m CONFIG_SENSORS_PXE1610=m -# CONFIG_SENSORS_Q54SJ108A2 is not set +CONFIG_SENSORS_Q54SJ108A2=m # CONFIG_SENSORS_STPDDC60 is not set +# CONFIG_SENSORS_TDA38640 is not set CONFIG_SENSORS_TPS40422=m CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_TPS546D24=m CONFIG_SENSORS_UCD9000=m CONFIG_SENSORS_UCD9200=m +# CONFIG_SENSORS_XDPE152 is not set CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_XDPE122_REGULATOR=y CONFIG_SENSORS_ZL6100=m # CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SBRMI is not set -# CONFIG_SENSORS_SHT15 is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHT4x is not set +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHT4x=m CONFIG_SENSORS_SHTC1=m CONFIG_SENSORS_SIS5595=m CONFIG_SENSORS_DME1737=m CONFIG_SENSORS_EMC1403=m CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC2305=m CONFIG_SENSORS_EMC6W201=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m @@ -5082,13 +5355,13 @@ CONFIG_SENSORS_SCH56XX_COMMON=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_STTS751=m -CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_ADC128D818=m # CONFIG_SENSORS_ADS7828 is not set CONFIG_SENSORS_ADS7871=m # CONFIG_SENSORS_AMC6821 is not set CONFIG_SENSORS_INA209=m # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set # CONFIG_SENSORS_INA3221 is not set CONFIG_SENSORS_TC74=m CONFIG_SENSORS_THMC50=m @@ -5097,6 +5370,7 @@ CONFIG_SENSORS_TMP103=m CONFIG_SENSORS_TMP108=m CONFIG_SENSORS_TMP401=m CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP464=m CONFIG_SENSORS_TMP513=m CONFIG_SENSORS_VIA_CPUTEMP=m CONFIG_SENSORS_VIA686A=m @@ -5123,18 +5397,24 @@ CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m # CONFIG_SENSORS_ACPI_POWER=m CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ASUS_WMI=m +CONFIG_SENSORS_ASUS_EC=m +CONFIG_SENSORS_HP_WMI=m CONFIG_THERMAL=y CONFIG_THERMAL_NETLINK=y -# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_STATISTICS=y CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_ACPI=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y CONFIG_THERMAL_GOV_USER_SPACE=y +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set CONFIG_DEVFREQ_THERMAL=y CONFIG_THERMAL_EMULATION=y @@ -5143,6 +5423,7 @@ CONFIG_THERMAL_EMULATION=y # CONFIG_INTEL_POWERCLAMP=m CONFIG_X86_THERMAL_VECTOR=y +CONFIG_INTEL_TCC=y CONFIG_X86_PKG_TEMP_THERMAL=m CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m @@ -5157,8 +5438,8 @@ CONFIG_PROC_THERMAL_MMIO_RAPL=m # end of ACPI INT340X thermal drivers CONFIG_INTEL_PCH_THERMAL=m -# CONFIG_INTEL_TCC_COOLING is not set -CONFIG_INTEL_MENLOW=m +CONFIG_INTEL_TCC_COOLING=m +CONFIG_INTEL_HFI_THERMAL=y # end of Intel thermal drivers CONFIG_GENERIC_ADC_THERMAL=m @@ -5173,12 +5454,18 @@ CONFIG_WATCHDOG_SYSFS=y # # Watchdog Pretimeout Governors # -# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y +# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP is not set +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y # # Watchdog Device Drivers # CONFIG_SOFT_WATCHDOG=m +# CONFIG_SOFT_WATCHDOG_PRETIMEOUT is not set CONFIG_DA9052_WATCHDOG=m CONFIG_DA9055_WATCHDOG=m CONFIG_DA9063_WATCHDOG=m @@ -5197,9 +5484,11 @@ CONFIG_MAX63XX_WATCHDOG=m CONFIG_RETU_WATCHDOG=m CONFIG_ACQUIRE_WDT=m CONFIG_ADVANTECH_WDT=m +CONFIG_ADVANTECH_EC_WDT=m CONFIG_ALIM1535_WDT=m CONFIG_ALIM7101_WDT=m CONFIG_EBC_C384_WDT=m +# CONFIG_EXAR_WDT is not set CONFIG_F71808E_WDT=m CONFIG_SP5100_TCO=m CONFIG_SBC_FITPC2_WATCHDOG=m @@ -5277,6 +5566,7 @@ CONFIG_BCMA_DRIVER_GPIO=y # CONFIG_MFD_CORE=y CONFIG_MFD_AS3711=y +CONFIG_MFD_SMPRO=m CONFIG_PMIC_ADP5520=y CONFIG_MFD_AAT2870_CORE=y CONFIG_MFD_BCM590XX=m @@ -5284,6 +5574,9 @@ CONFIG_MFD_BD9571MWV=m CONFIG_MFD_AXP20X=m CONFIG_MFD_AXP20X_I2C=m CONFIG_MFD_CROS_EC_DEV=m +CONFIG_MFD_CS42L43=m +CONFIG_MFD_CS42L43_I2C=m +CONFIG_MFD_CS42L43_SDW=m CONFIG_MFD_MADERA=m CONFIG_MFD_MADERA_I2C=m CONFIG_MFD_MADERA_SPI=m @@ -5305,8 +5598,6 @@ CONFIG_MFD_MC13XXX=m CONFIG_MFD_MC13XXX_SPI=m # CONFIG_MFD_MC13XXX_I2C is not set CONFIG_MFD_MP2629=m -# CONFIG_HTC_PASIC3 is not set -CONFIG_HTC_I2CPLD=y CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_LPC_ICH=m CONFIG_LPC_SCH=m @@ -5318,7 +5609,6 @@ CONFIG_MFD_INTEL_LPSS=m CONFIG_MFD_INTEL_LPSS_ACPI=m CONFIG_MFD_INTEL_LPSS_PCI=m CONFIG_MFD_INTEL_PMC_BXT=m -# CONFIG_MFD_INTEL_PMT is not set CONFIG_MFD_IQS62X=m # CONFIG_MFD_JANZ_CMODIO is not set CONFIG_MFD_KEMPLD=m @@ -5326,6 +5616,7 @@ CONFIG_MFD_88PM800=m CONFIG_MFD_88PM805=m CONFIG_MFD_88PM860X=y CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77541=m CONFIG_MFD_MAX77693=y # CONFIG_MFD_MAX77843 is not set CONFIG_MFD_MAX8907=m @@ -5333,22 +5624,26 @@ CONFIG_MFD_MAX8925=y CONFIG_MFD_MAX8997=y CONFIG_MFD_MAX8998=y # CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6370 is not set # CONFIG_MFD_MT6397 is not set CONFIG_MFD_MENF21BMC=m +# CONFIG_MFD_OCELOT is not set CONFIG_EZX_PCAP=y CONFIG_MFD_VIPERBOARD=m CONFIG_MFD_RETU=m # CONFIG_MFD_PCF50633 is not set -CONFIG_UCB1400_CORE=m +# CONFIG_MFD_SY7636A is not set CONFIG_MFD_RDC321X=m # CONFIG_MFD_RT4831 is not set # CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RT5120 is not set CONFIG_MFD_RC5T583=y CONFIG_MFD_SI476X_CORE=m CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y CONFIG_MFD_SKY81452=m CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m CONFIG_MFD_LP3943=m CONFIG_MFD_LP8788=y CONFIG_MFD_TI_LMU=m @@ -5364,7 +5659,9 @@ CONFIG_MFD_TPS65910=y CONFIG_MFD_TPS65912=y CONFIG_MFD_TPS65912_I2C=y CONFIG_MFD_TPS65912_SPI=y -CONFIG_MFD_TPS80031=y +CONFIG_MFD_TPS6594=m +CONFIG_MFD_TPS6594_I2C=m +CONFIG_MFD_TPS6594_SPI=m CONFIG_TWL4030_CORE=y CONFIG_MFD_TWL4030_AUDIO=y CONFIG_TWL6040_CORE=y @@ -5389,7 +5686,9 @@ CONFIG_MFD_WM8350_I2C=y CONFIG_MFD_WM8994=y # CONFIG_MFD_ATC260X_I2C is not set # CONFIG_RAVE_SP_CORE is not set -CONFIG_MFD_INTEL_M10_BMC=m +CONFIG_MFD_INTEL_M10_BMC_CORE=m +CONFIG_MFD_INTEL_M10_BMC_SPI=m +CONFIG_MFD_INTEL_M10_BMC_PMCI=m # end of Multifunction device drivers CONFIG_REGULATOR=y @@ -5406,6 +5705,7 @@ CONFIG_REGULATOR_AAT2870=m # CONFIG_REGULATOR_ARIZONA_LDO1 is not set # CONFIG_REGULATOR_ARIZONA_MICSUPP is not set CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AW37503=m CONFIG_REGULATOR_AXP20X=m CONFIG_REGULATOR_BCM590XX=m CONFIG_REGULATOR_BD9571MWV=m @@ -5429,6 +5729,8 @@ CONFIG_REGULATOR_LTC3589=m # CONFIG_REGULATOR_LTC3676 is not set CONFIG_REGULATOR_MAX14577=m CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77541=m +CONFIG_REGULATOR_MAX77857=m CONFIG_REGULATOR_MAX8649=m CONFIG_REGULATOR_MAX8660=m # CONFIG_REGULATOR_MAX8893 is not set @@ -5437,6 +5739,8 @@ CONFIG_REGULATOR_MAX8925=m CONFIG_REGULATOR_MAX8952=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m +# CONFIG_REGULATOR_MAX20086 is not set +CONFIG_REGULATOR_MAX20411=m CONFIG_REGULATOR_MAX77693=m # CONFIG_REGULATOR_MAX77826 is not set CONFIG_REGULATOR_MC13XXX_CORE=m @@ -5454,14 +5758,20 @@ CONFIG_REGULATOR_PV88090=m CONFIG_REGULATOR_PWM=m CONFIG_REGULATOR_QCOM_SPMI=m CONFIG_REGULATOR_QCOM_USB_VBUS=m -# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RAA215300=m CONFIG_REGULATOR_RC5T583=m # CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set +# CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set +# CONFIG_REGULATOR_RT5759 is not set # CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6190 is not set # CONFIG_REGULATOR_RT6245 is not set # CONFIG_REGULATOR_RTQ2134 is not set # CONFIG_REGULATOR_RTMV20 is not set # CONFIG_REGULATOR_RTQ6752 is not set +CONFIG_REGULATOR_RTQ2208=m # CONFIG_REGULATOR_SKY81452 is not set # CONFIG_REGULATOR_SLG51000 is not set CONFIG_REGULATOR_TPS51632=m @@ -5470,12 +5780,11 @@ CONFIG_REGULATOR_TPS65023=m CONFIG_REGULATOR_TPS6507X=m CONFIG_REGULATOR_TPS65086=m CONFIG_REGULATOR_TPS65090=m -# CONFIG_REGULATOR_TPS65132 is not set +CONFIG_REGULATOR_TPS65132=m CONFIG_REGULATOR_TPS6524X=m CONFIG_REGULATOR_TPS6586X=m CONFIG_REGULATOR_TPS65910=m CONFIG_REGULATOR_TPS65912=m -CONFIG_REGULATOR_TPS80031=m CONFIG_REGULATOR_TWL4030=m CONFIG_REGULATOR_WM831X=m CONFIG_REGULATOR_WM8350=m @@ -5483,50 +5792,58 @@ CONFIG_REGULATOR_WM8400=m CONFIG_REGULATOR_WM8994=m CONFIG_REGULATOR_QCOM_LABIBB=m CONFIG_RC_CORE=m -CONFIG_RC_MAP=m CONFIG_LIRC=y +CONFIG_RC_MAP=m CONFIG_RC_DECODERS=y +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m CONFIG_IR_NEC_DECODER=m CONFIG_IR_RC5_DECODER=m CONFIG_IR_RC6_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_SONY_DECODER=m +CONFIG_IR_RCMM_DECODER=m CONFIG_IR_SANYO_DECODER=m CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_SONY_DECODER=m CONFIG_IR_XMP_DECODER=m -CONFIG_IR_IMON_DECODER=m -CONFIG_IR_RCMM_DECODER=m CONFIG_RC_DEVICES=y -CONFIG_RC_ATI_REMOTE=m CONFIG_IR_ENE=m -CONFIG_IR_IMON=m -CONFIG_IR_IMON_RAW=m -CONFIG_IR_MCEUSB=m -CONFIG_IR_ITE_CIR=m CONFIG_IR_FINTEK=m -CONFIG_IR_NUVOTON=m -CONFIG_IR_REDRAT3=m -CONFIG_IR_STREAMZAP=m -CONFIG_IR_WINBOND_CIR=m CONFIG_IR_IGORPLUGUSB=m CONFIG_IR_IGUANA=m -CONFIG_IR_TTUSBIR=m -CONFIG_RC_LOOPBACK=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m CONFIG_IR_SERIAL=m CONFIG_IR_SERIAL_TRANSMITTER=y -CONFIG_IR_SIR=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TOY=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_LOOPBACK=m CONFIG_RC_XBOX_DVD=m -# CONFIG_IR_TOY is not set CONFIG_CEC_CORE=m CONFIG_CEC_NOTIFIER=y +CONFIG_CEC_PIN=y + +# +# CEC support +# # CONFIG_MEDIA_CEC_RC is not set +# CONFIG_CEC_PIN_ERROR_INJ is not set CONFIG_MEDIA_CEC_SUPPORT=y # CONFIG_CEC_CH7322 is not set # CONFIG_CEC_CROS_EC is not set +CONFIG_CEC_GPIO=m # CONFIG_CEC_SECO is not set CONFIG_USB_PULSE8_CEC=m CONFIG_USB_RAINSHADOW_CEC=m +# end of CEC support + CONFIG_MEDIA_SUPPORT=m # CONFIG_MEDIA_SUPPORT_FILTER is not set CONFIG_MEDIA_SUBDRV_AUTOSELECT=y @@ -5554,7 +5871,6 @@ CONFIG_DVB_CORE=m # # Video4Linux options # -CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L2_I2C=y CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set @@ -5564,9 +5880,8 @@ CONFIG_V4L2_MEM2MEM_DEV=m # CONFIG_V4L2_FLASH_LED_CLASS is not set CONFIG_V4L2_FWNODE=m CONFIG_V4L2_ASYNC=m -CONFIG_VIDEOBUF_GEN=m -CONFIG_VIDEOBUF_DMA_SG=m -CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_V4L2_CCI=m +CONFIG_V4L2_CCI_I2C=m # end of Video4Linux options # @@ -5574,10 +5889,6 @@ CONFIG_VIDEOBUF_VMALLOC=m # CONFIG_MEDIA_CONTROLLER_DVB=y CONFIG_MEDIA_CONTROLLER_REQUEST_API=y - -# -# Please notice that the enabled Media controller Request API is EXPERIMENTAL -# # end of Media controller options # @@ -5591,6 +5902,10 @@ CONFIG_DVB_DYNAMIC_MINORS=y # CONFIG_DVB_ULE_DEBUG is not set # end of Digital TV options +# +# Media drivers +# + # # Media drivers # @@ -5599,12 +5914,7 @@ CONFIG_MEDIA_USB_SUPPORT=y # # Webcam devices # -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=m -CONFIG_USB_M5602=m -CONFIG_USB_STV06XX=m -CONFIG_USB_GL860=m CONFIG_USB_GSPCA_BENQ=m CONFIG_USB_GSPCA_CONEX=m CONFIG_USB_GSPCA_CPIA1=m @@ -5629,13 +5939,13 @@ CONFIG_USB_GSPCA_SN9C2028=m CONFIG_USB_GSPCA_SN9C20X=m CONFIG_USB_GSPCA_SONIXB=m CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m CONFIG_USB_GSPCA_SPCA500=m CONFIG_USB_GSPCA_SPCA501=m CONFIG_USB_GSPCA_SPCA505=m CONFIG_USB_GSPCA_SPCA506=m CONFIG_USB_GSPCA_SPCA508=m CONFIG_USB_GSPCA_SPCA561=m -CONFIG_USB_GSPCA_SPCA1528=m CONFIG_USB_GSPCA_SQ905=m CONFIG_USB_GSPCA_SQ905C=m CONFIG_USB_GSPCA_SQ930X=m @@ -5651,29 +5961,30 @@ CONFIG_USB_GSPCA_VC032X=m CONFIG_USB_GSPCA_VICAM=m CONFIG_USB_GSPCA_XIRLINK_CIT=m CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_GL860=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set CONFIG_USB_PWC_INPUT_EVDEV=y -CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m CONFIG_USB_S2255=m CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y # # Analog TV USB devices # -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_PVRUSB2_SYSFS=y -CONFIG_VIDEO_PVRUSB2_DVB=y -# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_STK1160=m CONFIG_VIDEO_GO7007=m CONFIG_VIDEO_GO7007_USB=m CONFIG_VIDEO_GO7007_LOADER=m CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_STK1160=m # # Analog/digital TV USB devices @@ -5685,41 +5996,13 @@ CONFIG_VIDEO_CX231XX=m CONFIG_VIDEO_CX231XX_RC=y CONFIG_VIDEO_CX231XX_ALSA=m CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_VIDEO_TM6000=m -CONFIG_VIDEO_TM6000_ALSA=m -CONFIG_VIDEO_TM6000_DVB=m # # Digital TV USB devices # -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_DIB3000MC=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_CXUSB_ANALOG=y -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set CONFIG_DVB_USB_V2=m CONFIG_DVB_USB_AF9015=m CONFIG_DVB_USB_AF9035=m @@ -5727,19 +6010,44 @@ CONFIG_DVB_USB_ANYSEE=m CONFIG_DVB_USB_AU6610=m CONFIG_DVB_USB_AZ6007=m CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m CONFIG_DVB_USB_EC168=m CONFIG_DVB_USB_GL861=m CONFIG_DVB_USB_LME2510=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB_DVBSKY=m CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_CXUSB_ANALOG=y +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_SMS_USB_DRV=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set -CONFIG_DVB_AS102=m # # Webcam, TV (analog/digital) USB devices @@ -5761,15 +6069,16 @@ CONFIG_MEDIA_PCI_SUPPORT=y # # Media capture support # -CONFIG_VIDEO_MEYE=m CONFIG_VIDEO_SOLO6X10=m CONFIG_VIDEO_TW5864=m CONFIG_VIDEO_TW68=m CONFIG_VIDEO_TW686X=m +# CONFIG_VIDEO_ZORAN is not set # # Media capture/analog TV support # +CONFIG_VIDEO_DT3155=m CONFIG_VIDEO_IVTV=m CONFIG_VIDEO_IVTV_ALSA=m CONFIG_VIDEO_FB_IVTV=m @@ -5777,11 +6086,13 @@ CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_DT3155=m # # Media capture/analog/hybrid TV support # +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_COBALT=m CONFIG_VIDEO_CX18=m CONFIG_VIDEO_CX18_ALSA=m CONFIG_VIDEO_CX23885=m @@ -5795,107 +6106,175 @@ CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_ENABLE_VP3054=y CONFIG_VIDEO_CX88_VP3054=m CONFIG_VIDEO_CX88_MPEG=m -CONFIG_VIDEO_BT848=m -CONFIG_DVB_BT8XX=m CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_SAA7134_ALSA=m CONFIG_VIDEO_SAA7134_RC=y CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_SAA7134_GO7007=m CONFIG_VIDEO_SAA7164=m -CONFIG_VIDEO_COBALT=m # # Media digital TV PCI Adapters # +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +CONFIG_DVB_DM1105=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NETUP_UNIDVB=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_DVB_SMIPCIE=m CONFIG_DVB_BUDGET_CORE=m CONFIG_DVB_BUDGET=m CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m -CONFIG_DVB_B2C2_FLEXCOP_PCI=m -# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set -CONFIG_DVB_PLUTO2=m -CONFIG_DVB_DM1105=m -CONFIG_DVB_PT1=m -CONFIG_DVB_PT3=m -CONFIG_MANTIS_CORE=m -CONFIG_DVB_MANTIS=m -CONFIG_DVB_HOPPER=m -CONFIG_DVB_NGENE=m -CONFIG_DVB_DDBRIDGE=m -# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set -CONFIG_DVB_SMIPCIE=m -CONFIG_DVB_NETUP_UNIDVB=m # CONFIG_VIDEO_IPU3_CIO2 is not set -CONFIG_RADIO_ADAPTERS=y +CONFIG_INTEL_VSC=m +CONFIG_IPU_BRIDGE=m +CONFIG_RADIO_ADAPTERS=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI4713=m +# CONFIG_RADIO_SI476X is not set CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_USB_DSBR=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_USB_MR800=m +CONFIG_USB_RAREMONO=m CONFIG_RADIO_SI470X=m CONFIG_USB_SI470X=m CONFIG_I2C_SI470X=m -CONFIG_RADIO_SI4713=m CONFIG_USB_SI4713=m CONFIG_PLATFORM_SI4713=m CONFIG_I2C_SI4713=m -# CONFIG_RADIO_SI476X is not set -CONFIG_USB_MR800=m -CONFIG_USB_DSBR=m -CONFIG_RADIO_MAXIRADIO=m -CONFIG_RADIO_SHARK=m -CONFIG_RADIO_SHARK2=m -CONFIG_USB_KEENE=m -CONFIG_USB_RAREMONO=m -CONFIG_USB_MA901=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m CONFIG_RADIO_WL128X=m -CONFIG_MEDIA_COMMON_OPTIONS=y - -# -# common driver options -# -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_TTPCI_EEPROM=m -CONFIG_CYPRESS_FIRMWARE=m -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_V4L2=m -CONFIG_VIDEOBUF2_MEMOPS=m -CONFIG_VIDEOBUF2_DMA_CONTIG=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEOBUF2_DMA_SG=m -CONFIG_VIDEOBUF2_DVB=m -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_VIDEO_SAA7146=m -CONFIG_VIDEO_SAA7146_VV=m -CONFIG_SMS_SIANO_MDTV=m -CONFIG_SMS_SIANO_RC=y -# CONFIG_SMS_SIANO_DEBUGFS is not set -CONFIG_VIDEO_V4L2_TPG=m +CONFIG_MEDIA_PLATFORM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_CAFE_CCIC=m -CONFIG_VIDEO_VIA_CAMERA=m -CONFIG_VIDEO_CADENCE=y -# CONFIG_VIDEO_CADENCE_CSI2RX is not set -# CONFIG_VIDEO_CADENCE_CSI2TX is not set -CONFIG_VIDEO_ASPEED=m +# CONFIG_SDR_PLATFORM_DRIVERS is not set +CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m -CONFIG_DVB_PLATFORM_DRIVERS=y -# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +CONFIG_VIDEO_CAFE_CCIC=m + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# + +# +# VIA media platform drivers +# +CONFIG_VIDEO_VIA_CAMERA=m + +# +# Xilinx media platform drivers +# # # MMC/SDIO DVB adapters # CONFIG_SMS_SDIO_DRV=m CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VICODEC=m # CONFIG_VIDEO_VIMC is not set CONFIG_VIDEO_VIVID=m # CONFIG_VIDEO_VIVID_CEC is not set CONFIG_VIDEO_VIVID_MAX_DEVS=64 -CONFIG_VIDEO_VIM2M=m -CONFIG_VIDEO_VICODEC=m +# CONFIG_VIDEO_VISL is not set # CONFIG_DVB_TEST_DRIVERS is not set # @@ -5903,6 +6282,30 @@ CONFIG_VIDEO_VICODEC=m # CONFIG_DVB_FIREDTV=m CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set +CONFIG_VIDEO_V4L2_TPG=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m # end of Media drivers # @@ -5914,26 +6317,105 @@ CONFIG_MEDIA_ATTACH=y # IR I2C driver auto-selected by 'Autoselect ancillary drivers' # CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_CAMERA_SENSOR=y +CONFIG_VIDEO_AR0521=m +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_MT9M001 is not set +CONFIG_VIDEO_MT9M111=m +# CONFIG_VIDEO_MT9P031 is not set +CONFIG_VIDEO_MT9T112=m +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MT9V032 is not set +CONFIG_VIDEO_MT9V111=m +# CONFIG_VIDEO_OG01A1B is not set +CONFIG_VIDEO_OV01A10=m +CONFIG_VIDEO_OV02A10=m +# CONFIG_VIDEO_OV08D10 is not set +CONFIG_VIDEO_OV08X40=m +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV2659=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV2685=m +# CONFIG_VIDEO_OV2740 is not set +CONFIG_VIDEO_OV4689=m +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +CONFIG_VIDEO_OV5695=m +CONFIG_VIDEO_OV6650=m +# CONFIG_VIDEO_OV7251 is not set +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_OV772X=m +CONFIG_VIDEO_OV7740=m +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV8865 is not set +CONFIG_VIDEO_OV9640=m +# CONFIG_VIDEO_OV9650 is not set +CONFIG_VIDEO_OV9734=m +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +CONFIG_VIDEO_RJ54N1=m +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +CONFIG_VIDEO_DW9719=m +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices # # Audio decoders, processors and mixers # -CONFIG_VIDEO_TVAUDIO=m -CONFIG_VIDEO_TDA7432=m -CONFIG_VIDEO_TDA9840=m -# CONFIG_VIDEO_TDA1997X is not set -CONFIG_VIDEO_TEA6415C=m -CONFIG_VIDEO_TEA6420=m -CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_CS3308=m CONFIG_VIDEO_CS5345=m CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_TLV320AIC23B=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_WM8739=m -CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_SONY_BTF_MPX=m +# CONFIG_VIDEO_TDA1997X is not set +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m # end of Audio decoders, processors and mixers # @@ -5959,6 +6441,7 @@ CONFIG_VIDEO_ML86V7667=m CONFIG_VIDEO_SAA7110=m CONFIG_VIDEO_SAA711X=m # CONFIG_VIDEO_TC358743 is not set +CONFIG_VIDEO_TC358746=m CONFIG_VIDEO_TVP514X=m CONFIG_VIDEO_TVP5150=m CONFIG_VIDEO_TVP7002=m @@ -5978,16 +6461,15 @@ CONFIG_VIDEO_CX25840=m # # Video encoders # -CONFIG_VIDEO_SAA7127=m -CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_ADV7170=m CONFIG_VIDEO_ADV7175=m CONFIG_VIDEO_ADV7343=m CONFIG_VIDEO_ADV7393=m CONFIG_VIDEO_ADV7511=m # CONFIG_VIDEO_ADV7511_CEC is not set -# CONFIG_VIDEO_AD9389B is not set CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_THS8200=m # end of Video encoders @@ -6013,100 +6495,22 @@ CONFIG_SDR_MAX2175=m # # Miscellaneous helper chips # -CONFIG_VIDEO_THS7303=m -CONFIG_VIDEO_M52790=m CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_M52790=m # CONFIG_VIDEO_ST_MIPID02 is not set +CONFIG_VIDEO_THS7303=m # end of Miscellaneous helper chips # -# Camera sensor devices +# Video serializers and deserializers # -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -# CONFIG_VIDEO_IMX219 is not set -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_OV02A10 is not set -CONFIG_VIDEO_OV2640=m -CONFIG_VIDEO_OV2659=m -CONFIG_VIDEO_OV2680=m -CONFIG_VIDEO_OV2685=m -# CONFIG_VIDEO_OV2740 is not set -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -CONFIG_VIDEO_OV6650=m -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -CONFIG_VIDEO_OV5695=m -# CONFIG_VIDEO_OV7251 is not set -CONFIG_VIDEO_OV772X=m -CONFIG_VIDEO_OV7640=m -CONFIG_VIDEO_OV7670=m -CONFIG_VIDEO_OV7740=m -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8865 is not set -CONFIG_VIDEO_OV9640=m -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_OV9734 is not set -# CONFIG_VIDEO_OV13858 is not set -CONFIG_VIDEO_VS6624=m -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M032 is not set -CONFIG_VIDEO_MT9M111=m -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -CONFIG_VIDEO_MT9T112=m -CONFIG_VIDEO_MT9V011=m -# CONFIG_VIDEO_MT9V032 is not set -CONFIG_VIDEO_MT9V111=m -CONFIG_VIDEO_SR030PC30=m -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_M5MOLS is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -CONFIG_VIDEO_RJ54N1=m -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# end of Camera sensor devices - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices - -# -# SPI helper chips -# -# CONFIG_VIDEO_GS1662 is not set -# end of SPI helper chips +# end of Video serializers and deserializers # # Media SPI Adapters # -# CONFIG_CXD2880_SPI_DRV is not set +CONFIG_CXD2880_SPI_DRV=m +CONFIG_VIDEO_GS1662=m # end of Media SPI Adapters CONFIG_MEDIA_TUNER=m @@ -6114,43 +6518,43 @@ CONFIG_MEDIA_TUNER=m # # Customize TV tuners # -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -CONFIG_MEDIA_TUNER_MSI001=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_E4000=m CONFIG_MEDIA_TUNER_FC0011=m CONFIG_MEDIA_TUNER_FC0012=m CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_E4000=m CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_M88RS6000T=m -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_SI2157=m CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m CONFIG_MEDIA_TUNER_MXL301RF=m -CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m # end of Customize TV tuners # @@ -6160,126 +6564,126 @@ CONFIG_MEDIA_TUNER_QM1D1B0004=m # # Multistandard (satellite) frontends # +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_MXL5XX=m CONFIG_DVB_STB0899=m CONFIG_DVB_STB6100=m CONFIG_DVB_STV090x=m CONFIG_DVB_STV0910=m CONFIG_DVB_STV6110x=m CONFIG_DVB_STV6111=m -CONFIG_DVB_MXL5XX=m -CONFIG_DVB_M88DS3103=m # # Multistandard (cable + terrestrial) frontends # CONFIG_DVB_DRXK=m -CONFIG_DVB_TDA18271C2DD=m -CONFIG_DVB_SI2165=m CONFIG_DVB_MN88472=m CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m # # DVB-S (satellite) frontends # CONFIG_DVB_CX24110=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_MT312=m -CONFIG_DVB_ZL10036=m -CONFIG_DVB_ZL10039=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8261=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TUA6100=m CONFIG_DVB_CX24116=m CONFIG_DVB_CX24117=m CONFIG_DVB_CX24120=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_TS2020=m +CONFIG_DVB_CX24123=m CONFIG_DVB_DS3000=m CONFIG_DVB_MB86A16=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m # # DVB-T (terrestrial) frontends # -CONFIG_DVB_SP887X=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AS102_FE=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m -CONFIG_DVB_S5H1432=m -CONFIG_DVB_DRXD=m -CONFIG_DVB_L64781=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m -CONFIG_DVB_ZL10353=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m CONFIG_DVB_DIB3000MB=m CONFIG_DVB_DIB3000MC=m CONFIG_DVB_DIB7000M=m CONFIG_DVB_DIB7000P=m CONFIG_DVB_DIB9000=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_AF9013=m +CONFIG_DVB_DRXD=m CONFIG_DVB_EC100=m -CONFIG_DVB_STV0367=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_L64781=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_S5H1432=m CONFIG_DVB_SI2168=m -CONFIG_DVB_AS102_FE=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_ZL10353=m CONFIG_DVB_CXD2880=m # # DVB-C (cable) frontends # -CONFIG_DVB_VES1820=m +CONFIG_DVB_STV0297=m CONFIG_DVB_TDA10021=m CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m +CONFIG_DVB_VES1820=m # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51211=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_S5H1409=m CONFIG_DVB_AU8522=m CONFIG_DVB_AU8522_DTV=m CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_S5H1411=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m # # ISDB-T (terrestrial) frontends # -CONFIG_DVB_S921=m CONFIG_DVB_DIB8000=m CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m # # ISDB-S (satellite) & ISDB-T (terrestrial) frontends # -CONFIG_DVB_TC90522=m CONFIG_DVB_MN88443X=m +CONFIG_DVB_TC90522=m # # Digital terrestrial only tuners/PLL @@ -6291,25 +6695,25 @@ CONFIG_DVB_TUNER_DIB0090=m # # SEC control devices for DVB-S # -CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m CONFIG_DVB_LNBH25=m # CONFIG_DVB_LNBH29 is not set CONFIG_DVB_LNBP21=m CONFIG_DVB_LNBP22=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_A8293=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LGS8GXX=m -CONFIG_DVB_ATBM8830=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_IX2505V=m CONFIG_DVB_M88RS2000=m -CONFIG_DVB_AF9033=m -CONFIG_DVB_HORUS3A=m -CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_HELENE=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m # # Common Interface (EN50221) controller drivers @@ -6327,30 +6731,58 @@ CONFIG_DVB_DUMMY_FE=m # # Graphics support # +CONFIG_APERTURE_HELPERS=y +CONFIG_VIDEO_CMDLINE=y +CONFIG_VIDEO_NOMODESET=y +CONFIG_AUXDISPLAY=y +CONFIG_CHARLCD=m +CONFIG_HD44780_COMMON=m +# CONFIG_HD44780 is not set +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +# CONFIG_IMG_ASCII_LCD is not set +# CONFIG_HT16K33 is not set +# CONFIG_LCD2S is not set +CONFIG_PARPORT_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +# CONFIG_CHARLCD_BL_OFF is not set +# CONFIG_CHARLCD_BL_ON is not set +CONFIG_CHARLCD_BL_FLASH=y +CONFIG_PANEL=m CONFIG_AGP=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=y CONFIG_AGP_SIS=y CONFIG_AGP_VIA=y CONFIG_INTEL_GTT=y -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=m CONFIG_DRM_MIPI_DSI=y -# CONFIG_DRM_DP_AUX_CHARDEV is not set -# CONFIG_DRM_DEBUG_SELFTEST is not set CONFIG_DRM_KMS_HELPER=m # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_HDCP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +CONFIG_DRM_DP_AUX_CHARDEV=y CONFIG_DRM_DP_CEC=y CONFIG_DRM_TTM=m +CONFIG_DRM_EXEC=m +CONFIG_DRM_BUDDY=m CONFIG_DRM_VRAM_HELPER=m CONFIG_DRM_TTM_HELPER=m -CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=m +CONFIG_DRM_SUBALLOC_HELPER=m CONFIG_DRM_SCHED=m # @@ -6373,6 +6805,7 @@ CONFIG_DRM_AMDGPU=m CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y CONFIG_DRM_AMDGPU_USERPTR=y +# CONFIG_DRM_AMDGPU_WERROR is not set # # ACP (Audio CoProcessor) Configuration @@ -6384,27 +6817,27 @@ CONFIG_DRM_AMD_ACP=y # Display Engine Configuration # CONFIG_DRM_AMD_DC=y -CONFIG_DRM_AMD_DC_DCN=y -CONFIG_DRM_AMD_DC_HDCP=y +CONFIG_DRM_AMD_DC_FP=y CONFIG_DRM_AMD_DC_SI=y # CONFIG_DRM_AMD_SECURE_DISPLAY is not set # end of Display Engine Configuration CONFIG_HSA_AMD=y +CONFIG_HSA_AMD_SVM=y CONFIG_DRM_NOUVEAU=m -CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 # CONFIG_NOUVEAU_DEBUG_MMU is not set # CONFIG_NOUVEAU_DEBUG_PUSH is not set CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_NOUVEAU_SVM is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_FORCE_PROBE="" CONFIG_DRM_I915_CAPTURE_ERROR=y CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y -CONFIG_DRM_I915_GVT=y -# CONFIG_DRM_I915_GVT_KVMGT is not set +CONFIG_DRM_I915_GVT_KVMGT=m +CONFIG_DRM_I915_PXP=y # # drm/i915 Debugging @@ -6429,6 +6862,7 @@ CONFIG_DRM_I915_FENCE_TIMEOUT=10000 CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 +CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500 CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 CONFIG_DRM_I915_STOP_TIMEOUT=100 CONFIG_DRM_I915_TIMESLICE_DURATION=1 @@ -6437,7 +6871,6 @@ CONFIG_DRM_I915_TIMESLICE_DURATION=1 CONFIG_DRM_VGEM=m # CONFIG_DRM_VKMS is not set CONFIG_DRM_VMWGFX=m -CONFIG_DRM_VMWGFX_FBCON=y # CONFIG_DRM_VMWGFX_MKSSTATS is not set CONFIG_DRM_GMA500=m CONFIG_DRM_UDL=m @@ -6445,11 +6878,14 @@ CONFIG_DRM_AST=m CONFIG_DRM_MGAG200=m CONFIG_DRM_QXL=m CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VIRTIO_GPU_KMS=y CONFIG_DRM_PANEL=y # # Display Panels # +# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set # CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set # end of Display Panels @@ -6463,12 +6899,15 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_ANALOGIX_ANX78XX is not set # end of Display Interface Bridges +CONFIG_DRM_LOONGSON=m # CONFIG_DRM_ETNAVIV is not set CONFIG_DRM_BOCHS=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_GM12U320=m +# CONFIG_DRM_PANEL_MIPI_DBI is not set # CONFIG_DRM_SIMPLEDRM is not set # CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set # CONFIG_TINYDRM_ILI9225 is not set # CONFIG_TINYDRM_ILI9341 is not set # CONFIG_TINYDRM_ILI9486 is not set @@ -6480,46 +6919,17 @@ CONFIG_DRM_XEN=y CONFIG_DRM_XEN_FRONTEND=m CONFIG_DRM_VBOXVIDEO=m # CONFIG_DRM_GUD is not set -# CONFIG_DRM_HYPERV is not set +# CONFIG_DRM_SSD130X is not set +CONFIG_DRM_HYPERV=m CONFIG_DRM_LEGACY=y -CONFIG_DRM_TDFX=m -CONFIG_DRM_R128=m -CONFIG_DRM_I810=m -CONFIG_DRM_MGA=m -CONFIG_DRM_SIS=m -# CONFIG_DRM_VIA is not set -CONFIG_DRM_SAVAGE=m CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_PRIVACY_SCREEN=y # # Frame buffer Devices # -CONFIG_FB_CMDLINE=y -CONFIG_FB_NOTIFY=y CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FB_DDC=m -CONFIG_FB_BOOT_VESA_SUPPORT=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_IMAGEBLIT=y -CONFIG_FB_FOREIGN_ENDIAN=y -CONFIG_FB_BOTH_ENDIAN=y -# CONFIG_FB_BIG_ENDIAN is not set -# CONFIG_FB_LITTLE_ENDIAN is not set -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_DEFERRED_IO=y CONFIG_FB_SVGALIB=m -CONFIG_FB_BACKLIGHT=m -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_TILEBLITTING=y - -# -# Frame buffer hardware drivers -# CONFIG_FB_CIRRUS=m CONFIG_FB_PM2=m # CONFIG_FB_PM2_FIFO_DISCONNECT is not set @@ -6605,6 +7015,29 @@ CONFIG_FB_HYPERV=m CONFIG_FB_SIMPLE=y # CONFIG_FB_SSD1307 is not set CONFIG_FB_SM712=m +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DEVICE=y +CONFIG_FB_DDC=m +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_FOREIGN_ENDIAN=y +CONFIG_FB_BOTH_ENDIAN=y +# CONFIG_FB_BIG_ENDIAN is not set +# CONFIG_FB_LITTLE_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_IOMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_BACKLIGHT=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y # end of Frame buffer Devices # @@ -6625,6 +7058,7 @@ CONFIG_LCD_HX8357=m # CONFIG_LCD_OTM3225A is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_KTD253 is not set +# CONFIG_BACKLIGHT_KTZ8866 is not set CONFIG_BACKLIGHT_CARILLO_RANCH=m CONFIG_BACKLIGHT_PWM=m CONFIG_BACKLIGHT_DA903X=m @@ -6673,6 +7107,10 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y # CONFIG_LOGO is not set # end of Graphics support +CONFIG_DRM_ACCEL=y +CONFIG_DRM_ACCEL_HABANALABS=m +CONFIG_DRM_ACCEL_IVPU=m +CONFIG_DRM_ACCEL_QAIC=m CONFIG_SOUND=m CONFIG_SOUND_OSS_CORE=y CONFIG_SOUND_OSS_CORE_PRECLAIM=y @@ -6685,6 +7123,8 @@ CONFIG_SND_DMAENGINE_PCM=m CONFIG_SND_HWDEP=m CONFIG_SND_SEQ_DEVICE=m CONFIG_SND_RAWMIDI=m +CONFIG_SND_UMP=m +CONFIG_SND_UMP_LEGACY_RAWMIDI=y CONFIG_SND_COMPRESS_OFFLOAD=m CONFIG_SND_JACK=y CONFIG_SND_JACK_INPUT_DEV=y @@ -6700,10 +7140,12 @@ 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_CTL_FAST_LOOKUP=y CONFIG_SND_DEBUG=y # CONFIG_SND_DEBUG_VERBOSE is not set CONFIG_SND_PCM_XRUN_DEBUG=y -# CONFIG_SND_CTL_VALIDATION is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set +# CONFIG_SND_CTL_DEBUG is not set # CONFIG_SND_JACK_INJECTION_DEBUG is not set CONFIG_SND_VMASTER=y CONFIG_SND_DMA_SGBUF=y @@ -6716,6 +7158,8 @@ CONFIG_SND_SEQ_MIDI_EVENT=m CONFIG_SND_SEQ_MIDI=m CONFIG_SND_SEQ_MIDI_EMUL=m CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_SEQ_UMP=y +CONFIG_SND_SEQ_UMP_CLIENT=m CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m CONFIG_SND_OPL3_LIB_SEQ=m @@ -6725,6 +7169,7 @@ CONFIG_SND_DRIVERS=y CONFIG_SND_PCSP=m CONFIG_SND_DUMMY=m CONFIG_SND_ALOOP=m +CONFIG_SND_PCMTEST=m CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m CONFIG_SND_MTS64=m @@ -6819,6 +7264,14 @@ CONFIG_SND_HDA_RECONFIG=y CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_INPUT_BEEP_MODE=0 CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_SCODEC_CS35L41=m +CONFIG_SND_HDA_CS_DSP_CONTROLS=m +CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m +CONFIG_SND_HDA_SCODEC_CS35L56=m +CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m +CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m CONFIG_SND_HDA_CODEC_REALTEK=m CONFIG_SND_HDA_CODEC_ANALOG=m CONFIG_SND_HDA_CODEC_SIGMATEL=m @@ -6834,7 +7287,8 @@ CONFIG_SND_HDA_CODEC_CMEDIA=m CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 -# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set +CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y +CONFIG_SND_HDA_CTL_DEV_ID=y # end of HD-Audio CONFIG_SND_HDA_CORE=m @@ -6850,6 +7304,7 @@ CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_AUDIO_MIDI_V2=y CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y CONFIG_SND_USB_UA101=m CONFIG_SND_USB_USX2Y=m @@ -6884,15 +7339,36 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y CONFIG_SND_SOC_COMPRESS=y CONFIG_SND_SOC_TOPOLOGY=y CONFIG_SND_SOC_ACPI=m -# CONFIG_SND_SOC_ADI is not set +CONFIG_SND_SOC_ADI=m +CONFIG_SND_SOC_ADI_AXI_I2S=m +CONFIG_SND_SOC_ADI_AXI_SPDIF=m CONFIG_SND_SOC_AMD_ACP=m CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m +CONFIG_SND_SOC_AMD_ST_ES8336_MACH=m CONFIG_SND_SOC_AMD_ACP3x=m CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m CONFIG_SND_SOC_AMD_RENOIR=m CONFIG_SND_SOC_AMD_RENOIR_MACH=m -# CONFIG_SND_SOC_AMD_ACP5x is not set +CONFIG_SND_SOC_AMD_ACP5x=m +CONFIG_SND_SOC_AMD_VANGOGH_MACH=m +CONFIG_SND_SOC_AMD_ACP6x=m +CONFIG_SND_SOC_AMD_YC_MACH=m +CONFIG_SND_AMD_ACP_CONFIG=m +CONFIG_SND_SOC_AMD_ACP_COMMON=m +CONFIG_SND_SOC_AMD_ACP_PDM=m +CONFIG_SND_SOC_AMD_ACP_LEGACY_COMMON=m +CONFIG_SND_SOC_AMD_ACP_I2S=m +CONFIG_SND_SOC_AMD_ACP_PCM=m +CONFIG_SND_SOC_AMD_ACP_PCI=m +CONFIG_SND_AMD_ASOC_RENOIR=m +CONFIG_SND_AMD_ASOC_REMBRANDT=m +CONFIG_SND_SOC_AMD_MACH_COMMON=m +CONFIG_SND_SOC_AMD_LEGACY_MACH=m +CONFIG_SND_SOC_AMD_SOF_MACH=m +CONFIG_SND_SOC_AMD_RPL_ACP6x=m +CONFIG_SND_SOC_AMD_PS=m +CONFIG_SND_SOC_AMD_PS_MACH=m # CONFIG_SND_ATMEL_SOC is not set # CONFIG_SND_BCM63XX_I2S_WHISTLER is not set CONFIG_SND_DESIGNWARE_I2S=m @@ -6917,6 +7393,7 @@ CONFIG_SND_DESIGNWARE_I2S=m # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs +CONFIG_SND_SOC_CHV3_I2S=m # CONFIG_SND_I2S_HI6210_I2S is not set # CONFIG_SND_SOC_IMG is not set CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y @@ -6939,10 +7416,39 @@ CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_INTEL_AVS=m + +# +# Intel AVS Machine drivers +# + +# +# Available DSP configurations +# +CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219=m +CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC=m +CONFIG_SND_SOC_INTEL_AVS_MACH_ES8336=m +CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98927=m +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A=m +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373=m +CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825=m +CONFIG_SND_SOC_INTEL_AVS_MACH_PROBE=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT274=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT286=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT298=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5663=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682=m +CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567=m +# end of Intel AVS Machine drivers + CONFIG_SND_SOC_INTEL_MACH=y # CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_REALTEK_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_CIRRUS_COMMON=m CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m @@ -6977,9 +7483,12 @@ CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m # CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH is not set CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m +CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH=m +CONFIG_SND_SOC_INTEL_SOF_NAU8825_MACH=m CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH=m +CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH=m CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m CONFIG_SND_SOC_MTK_BTCVSD=m CONFIG_SND_SOC_SOF_TOPLEVEL=y @@ -6987,10 +7496,19 @@ CONFIG_SND_SOC_SOF_PCI_DEV=m CONFIG_SND_SOC_SOF_PCI=m CONFIG_SND_SOC_SOF_ACPI=m CONFIG_SND_SOC_SOF_ACPI_DEV=m -# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set +CONFIG_SND_SOC_SOF_DEBUG_PROBES=m +CONFIG_SND_SOC_SOF_CLIENT=m # CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set CONFIG_SND_SOC_SOF=m CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_IPC3=y +CONFIG_SND_SOC_SOF_INTEL_IPC4=y +CONFIG_SND_SOC_SOF_AMD_TOPLEVEL=m +CONFIG_SND_SOC_SOF_AMD_COMMON=m +CONFIG_SND_SOC_SOF_AMD_RENOIR=m +CONFIG_SND_SOC_SOF_AMD_VANGOGH=m +CONFIG_SND_SOC_SOF_AMD_REMBRANDT=m +CONFIG_SND_SOC_SOF_ACP_PROBES=m CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m @@ -6998,6 +7516,9 @@ CONFIG_SND_SOC_SOF_INTEL_COMMON=m CONFIG_SND_SOC_SOF_BAYTRAIL=m CONFIG_SND_SOC_SOF_BROADWELL=m CONFIG_SND_SOC_SOF_MERRIFIELD=m +CONFIG_SND_SOC_SOF_INTEL_SKL=m +CONFIG_SND_SOC_SOF_SKYLAKE=m +CONFIG_SND_SOC_SOF_KABYLAKE=m CONFIG_SND_SOC_SOF_INTEL_APL=m CONFIG_SND_SOC_SOF_APOLLOLAKE=m CONFIG_SND_SOC_SOF_GEMINILAKE=m @@ -7012,11 +7533,17 @@ CONFIG_SND_SOC_SOF_INTEL_TGL=m CONFIG_SND_SOC_SOF_TIGERLAKE=m CONFIG_SND_SOC_SOF_ELKHARTLAKE=m CONFIG_SND_SOC_SOF_ALDERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_MTL=m +CONFIG_SND_SOC_SOF_METEORLAKE=m +CONFIG_SND_SOC_SOF_INTEL_LNL=m +CONFIG_SND_SOC_SOF_LUNARLAKE=m CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_MLINK=m CONFIG_SND_SOC_SOF_HDA_LINK=y CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_HDA_PROBES=m CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE=m CONFIG_SND_SOC_SOF_XTENSA=m @@ -7035,6 +7562,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # # CODEC drivers # +CONFIG_SND_SOC_WM_ADSP=m CONFIG_SND_SOC_AC97_CODEC=m CONFIG_SND_SOC_ADAU_UTILS=m # CONFIG_SND_SOC_ADAU1372_I2C is not set @@ -7048,28 +7576,52 @@ CONFIG_SND_SOC_ADAU7002=m CONFIG_SND_SOC_ADAU7118=m CONFIG_SND_SOC_ADAU7118_HW=m CONFIG_SND_SOC_ADAU7118_I2C=m -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4118 is not set -# CONFIG_SND_SOC_AK4458 is not set -# CONFIG_SND_SOC_AK4554 is not set -# CONFIG_SND_SOC_AK4613 is not set -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_AK5558 is not set +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4118=m +CONFIG_SND_SOC_AK4375=m +CONFIG_SND_SOC_AK4458=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_AK5558=m # CONFIG_SND_SOC_ALC5623 is not set +CONFIG_SND_SOC_AUDIO_IIO_AUX=m +CONFIG_SND_SOC_AW8738=m +CONFIG_SND_SOC_AW88395_LIB=m +# CONFIG_SND_SOC_AW88395 is not set +CONFIG_SND_SOC_AW88261=m # CONFIG_SND_SOC_BD28623 is not set # CONFIG_SND_SOC_BT_SCO is not set +CONFIG_SND_SOC_CHV3_CODEC=m CONFIG_SND_SOC_CROS_EC_CODEC=m # CONFIG_SND_SOC_CS35L32 is not set # CONFIG_SND_SOC_CS35L33 is not set CONFIG_SND_SOC_CS35L34=m CONFIG_SND_SOC_CS35L35=m CONFIG_SND_SOC_CS35L36=m +CONFIG_SND_SOC_CS35L41_LIB=m +CONFIG_SND_SOC_CS35L41=m +CONFIG_SND_SOC_CS35L41_SPI=m +CONFIG_SND_SOC_CS35L41_I2C=m +CONFIG_SND_SOC_CS35L45=m +CONFIG_SND_SOC_CS35L45_SPI=m +CONFIG_SND_SOC_CS35L45_I2C=m +CONFIG_SND_SOC_CS35L56=m +CONFIG_SND_SOC_CS35L56_SHARED=m +CONFIG_SND_SOC_CS35L56_I2C=m +CONFIG_SND_SOC_CS35L56_SPI=m +CONFIG_SND_SOC_CS35L56_SDW=m +CONFIG_SND_SOC_CS42L42_CORE=m CONFIG_SND_SOC_CS42L42=m +CONFIG_SND_SOC_CS42L42_SDW=m +CONFIG_SND_SOC_CS42L43=m +CONFIG_SND_SOC_CS42L43_SDW=m # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set # CONFIG_SND_SOC_CS42L73 is not set +CONFIG_SND_SOC_CS42L83=m CONFIG_SND_SOC_CS4234=m # CONFIG_SND_SOC_CS4265 is not set # CONFIG_SND_SOC_CS4270 is not set @@ -7088,12 +7640,15 @@ CONFIG_SND_SOC_HDMI_CODEC=m # CONFIG_SND_SOC_ES7134 is not set # CONFIG_SND_SOC_ES7241 is not set CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8326=m # CONFIG_SND_SOC_ES8328_I2C is not set # CONFIG_SND_SOC_ES8328_SPI is not set # CONFIG_SND_SOC_GTM601 is not set CONFIG_SND_SOC_HDAC_HDMI=m CONFIG_SND_SOC_HDAC_HDA=m +CONFIG_SND_SOC_HDA=m # CONFIG_SND_SOC_ICS43432 is not set +CONFIG_SND_SOC_IDT821034=m # CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98088=m CONFIG_SND_SOC_MAX98090=m @@ -7101,10 +7656,14 @@ CONFIG_SND_SOC_MAX98357A=m # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set CONFIG_SND_SOC_MAX98927=m +# CONFIG_SND_SOC_MAX98520 is not set +CONFIG_SND_SOC_MAX98363=m CONFIG_SND_SOC_MAX98373=m CONFIG_SND_SOC_MAX98373_I2C=m # CONFIG_SND_SOC_MAX98373_SDW is not set +CONFIG_SND_SOC_MAX98388=m CONFIG_SND_SOC_MAX98390=m +CONFIG_SND_SOC_MAX98396=m # CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set # CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set @@ -7122,16 +7681,22 @@ CONFIG_SND_SOC_MAX98390=m CONFIG_SND_SOC_PCM512x=m CONFIG_SND_SOC_PCM512x_I2C=m # CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_PEB2466 is not set # CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RT274=m CONFIG_SND_SOC_RT286=m CONFIG_SND_SOC_RT298=m CONFIG_SND_SOC_RT1011=m CONFIG_SND_SOC_RT1015=m CONFIG_SND_SOC_RT1015P=m +CONFIG_SND_SOC_RT1017_SDCA_SDW=m +CONFIG_SND_SOC_RT1019=m +CONFIG_SND_SOC_RT1308=m CONFIG_SND_SOC_RT1308_SDW=m -# CONFIG_SND_SOC_RT1316_SDW is not set +CONFIG_SND_SOC_RT1316_SDW=m +CONFIG_SND_SOC_RT1318_SDW=m CONFIG_SND_SOC_RT5514=m CONFIG_SND_SOC_RT5514_SPI=m # CONFIG_SND_SOC_RT5616 is not set @@ -7148,14 +7713,19 @@ CONFIG_SND_SOC_RT5677_SPI=m CONFIG_SND_SOC_RT5682=m CONFIG_SND_SOC_RT5682_I2C=m # CONFIG_SND_SOC_RT5682_SDW is not set +CONFIG_SND_SOC_RT5682S=m CONFIG_SND_SOC_RT700=m CONFIG_SND_SOC_RT700_SDW=m CONFIG_SND_SOC_RT711=m CONFIG_SND_SOC_RT711_SDW=m # CONFIG_SND_SOC_RT711_SDCA_SDW is not set +CONFIG_SND_SOC_RT712_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m +CONFIG_SND_SOC_RT722_SDCA_SDW=m CONFIG_SND_SOC_RT715=m CONFIG_SND_SOC_RT715_SDW=m -# CONFIG_SND_SOC_RT715_SDCA_SDW is not set +CONFIG_SND_SOC_RT715_SDCA_SDW=m +# CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SDW_MOCKUP is not set # CONFIG_SND_SOC_SGTL5000 is not set CONFIG_SND_SOC_SIGMADSP=m @@ -7163,7 +7733,10 @@ CONFIG_SND_SOC_SIGMADSP_I2C=m CONFIG_SND_SOC_SIGMADSP_REGMAP=m # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set # CONFIG_SND_SOC_SIMPLE_MUX is not set +CONFIG_SND_SOC_SMA1303=m # CONFIG_SND_SOC_SPDIF is not set +CONFIG_SND_SOC_SRC4XXX_I2C=m +CONFIG_SND_SOC_SRC4XXX=m # CONFIG_SND_SOC_SSM2305 is not set # CONFIG_SND_SOC_SSM2518 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set @@ -7176,15 +7749,22 @@ CONFIG_SND_SOC_SSM4567=m # CONFIG_SND_SOC_TAS2562 is not set # CONFIG_SND_SOC_TAS2764 is not set # CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS2780 is not set +CONFIG_SND_SOC_TAS2781_COMLIB=m +CONFIG_SND_SOC_TAS2781_FMWLIB=m +# CONFIG_SND_SOC_TAS2781_I2C is not set # CONFIG_SND_SOC_TAS5086 is not set # CONFIG_SND_SOC_TAS571X is not set # CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set # CONFIG_SND_SOC_TAS6424 is not set # CONFIG_SND_SOC_TDA7419 is not set # CONFIG_SND_SOC_TFA9879 is not set # CONFIG_SND_SOC_TFA989X is not set -# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m # CONFIG_SND_SOC_TLV320AIC31XX is not set # CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set # CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set @@ -7202,7 +7782,8 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_WM8580 is not set # CONFIG_SND_SOC_WM8711 is not set # CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8731_I2C is not set +# CONFIG_SND_SOC_WM8731_SPI is not set # CONFIG_SND_SOC_WM8737 is not set # CONFIG_SND_SOC_WM8741 is not set # CONFIG_SND_SOC_WM8750 is not set @@ -7215,20 +7796,25 @@ CONFIG_SND_SOC_WM8804_I2C=m # CONFIG_SND_SOC_WM8804_SPI is not set # CONFIG_SND_SOC_WM8903 is not set # CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8940 is not set # CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8961 is not set # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set # CONFIG_SND_SOC_WM8985 is not set CONFIG_SND_SOC_WSA881X=m -# CONFIG_SND_SOC_ZL38060 is not set -# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_WSA883X is not set +# CONFIG_SND_SOC_WSA884X is not set +CONFIG_SND_SOC_ZL38060=m +CONFIG_SND_SOC_MAX9759=m # CONFIG_SND_SOC_MT6351 is not set # CONFIG_SND_SOC_MT6358 is not set # CONFIG_SND_SOC_MT6660 is not set -# CONFIG_SND_SOC_NAU8315 is not set +CONFIG_SND_SOC_NAU8315=m CONFIG_SND_SOC_NAU8540=m CONFIG_SND_SOC_NAU8810=m +CONFIG_SND_SOC_NAU8821=m # CONFIG_SND_SOC_NAU8822 is not set CONFIG_SND_SOC_NAU8824=m CONFIG_SND_SOC_NAU8825=m @@ -7246,10 +7832,7 @@ CONFIG_SND_SYNTH_EMUX=m CONFIG_SND_XEN_FRONTEND=m # CONFIG_SND_VIRTIO is not set CONFIG_AC97_BUS=m - -# -# HID support -# +CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y @@ -7260,7 +7843,7 @@ CONFIG_HID_GENERIC=y # Special HID drivers # CONFIG_HID_A4TECH=y -# CONFIG_HID_ACCUTOUCH is not set +CONFIG_HID_ACCUTOUCH=m CONFIG_HID_ACRUX=m CONFIG_HID_ACRUX_FF=y CONFIG_HID_APPLE=y @@ -7286,21 +7869,26 @@ CONFIG_HID_EMS_FF=m CONFIG_HID_ELAN=m CONFIG_HID_ELECOM=m CONFIG_HID_ELO=m +CONFIG_HID_EVISION=m CONFIG_HID_EZKEY=y -# CONFIG_HID_FT260 is not set +CONFIG_HID_FT260=m CONFIG_HID_GEMBIRD=m CONFIG_HID_GFRM=m -# CONFIG_HID_GLORIOUS is not set +CONFIG_HID_GLORIOUS=m CONFIG_HID_HOLTEK=m CONFIG_HOLTEK_FF=y +CONFIG_HID_VIVALDI_COMMON=m CONFIG_HID_GOOGLE_HAMMER=m +CONFIG_HID_GOOGLE_STADIA_FF=m CONFIG_HID_VIVALDI=m CONFIG_HID_GT683R=m CONFIG_HID_KEYTOUCH=m CONFIG_HID_KYE=m CONFIG_HID_UCLOGIC=m CONFIG_HID_WALTOP=m -# CONFIG_HID_VIEWSONIC is not set +CONFIG_HID_VIEWSONIC=m +# CONFIG_HID_VRC2 is not set +CONFIG_HID_XIAOMI=m CONFIG_HID_GYRATION=m CONFIG_HID_ICADE=m CONFIG_HID_ITE=y @@ -7310,6 +7898,7 @@ CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=m CONFIG_HID_LED=m CONFIG_HID_LENOVO=m +CONFIG_HID_LETSKETCH=m CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=m CONFIG_HID_LOGITECH_HIDPP=m @@ -7318,14 +7907,19 @@ CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_LOGIG940_FF=y CONFIG_LOGIWHEELS_FF=y CONFIG_HID_MAGICMOUSE=m -# CONFIG_HID_MALTRON is not set -# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_MALTRON=m +CONFIG_HID_MAYFLASH=m +CONFIG_HID_MEGAWORLD_FF=m CONFIG_HID_REDRAGON=y CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y CONFIG_HID_MULTITOUCH=m -# CONFIG_HID_NTI is not set +CONFIG_HID_NINTENDO=m +CONFIG_NINTENDO_FF=y +CONFIG_HID_NTI=m CONFIG_HID_NTRIG=y +CONFIG_HID_NVIDIA_SHIELD=m +CONFIG_NVIDIA_SHIELD_FF=y CONFIG_HID_ORTEK=m CONFIG_HID_PANTHERLORD=m CONFIG_PANTHERLORD_FF=y @@ -7337,18 +7931,23 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y CONFIG_HID_PICOLCD_LCD=y CONFIG_HID_PICOLCD_LEDS=y CONFIG_HID_PICOLCD_CIR=y -CONFIG_HID_PLANTRONICS=y -# CONFIG_HID_PLAYSTATION is not set +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PLAYSTATION=m +CONFIG_PLAYSTATION_FF=y +CONFIG_HID_PXRC=m +CONFIG_HID_RAZER=m CONFIG_HID_PRIMAX=m CONFIG_HID_RETRODE=m CONFIG_HID_ROCCAT=m CONFIG_HID_SAITEK=m CONFIG_HID_SAMSUNG=m -# CONFIG_HID_SEMITEK is not set +CONFIG_HID_SEMITEK=m +CONFIG_HID_SIGMAMICRO=m CONFIG_HID_SONY=m CONFIG_SONY_FF=y CONFIG_HID_SPEEDLINK=m CONFIG_HID_STEAM=m +CONFIG_STEAM_FF=y CONFIG_HID_STEELSERIES=m CONFIG_HID_SUNPLUS=m CONFIG_HID_RMI=m @@ -7359,11 +7958,12 @@ CONFIG_HID_SMARTJOYPLUS=m CONFIG_SMARTJOYPLUS_FF=y CONFIG_HID_TIVO=m CONFIG_HID_TOPSEED=m +CONFIG_HID_TOPRE=m CONFIG_HID_THINGM=m CONFIG_HID_THRUSTMASTER=m CONFIG_THRUSTMASTER_FF=y -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_U2FZERO is not set +CONFIG_HID_UDRAW_PS3=m +CONFIG_HID_U2FZERO=m CONFIG_HID_WACOM=m CONFIG_HID_WIIMOTE=m CONFIG_HID_XINMO=m @@ -7376,6 +7976,12 @@ CONFIG_HID_ALPS=m # CONFIG_HID_MCP2221 is not set # end of Special HID drivers +# +# HID-BPF support +# +# CONFIG_HID_BPF is not set +# end of HID-BPF support + # # USB HID support # @@ -7384,12 +7990,9 @@ CONFIG_HID_PID=y CONFIG_USB_HIDDEV=y # end of USB HID support -# -# I2C HID support -# +CONFIG_I2C_HID=y CONFIG_I2C_HID_ACPI=m -# end of I2C HID support - +CONFIG_I2C_HID_OF=m CONFIG_I2C_HID_CORE=m # @@ -7404,7 +8007,6 @@ CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=m # CONFIG_AMD_SFH_HID=m # end of AMD SFH HID Support -# end of HID support CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y @@ -7448,13 +8050,11 @@ CONFIG_USB_EHCI_PCI=y CONFIG_USB_EHCI_HCD_PLATFORM=m # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_FOTG210_HCD=m # CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_PCI=y CONFIG_USB_OHCI_HCD_PLATFORM=m CONFIG_USB_UHCI_HCD=y -CONFIG_USB_U132_HCD=m CONFIG_USB_SL811_HCD=m CONFIG_USB_SL811_HCD_ISO=y # CONFIG_USB_SL811_CS is not set @@ -7462,6 +8062,7 @@ CONFIG_USB_SL811_HCD_ISO=y CONFIG_USB_HCD_BCMA=m CONFIG_USB_HCD_SSB=m # CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_XEN_HCD=m # # USB Device Class drivers @@ -7507,6 +8108,10 @@ CONFIG_USBIP_VHCI_HC_PORTS=8 CONFIG_USBIP_VHCI_NR_HCS=1 CONFIG_USBIP_HOST=m # CONFIG_USBIP_DEBUG is not set + +# +# USB dual-mode controller drivers +# # CONFIG_USB_CDNS_SUPPORT is not set CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_HOST=y @@ -7545,7 +8150,6 @@ CONFIG_USB_ISP1760_HOST_ROLE=y # # USB port drivers # -CONFIG_USB_USS720=m CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_CONSOLE=y CONFIG_USB_SERIAL_GENERIC=y @@ -7607,6 +8211,7 @@ CONFIG_USB_SERIAL_DEBUG=m # # USB Miscellaneous drivers # +CONFIG_USB_USS720=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m @@ -7616,7 +8221,6 @@ CONFIG_USB_LCD=m CONFIG_USB_CYPRESS_CY7C63=m CONFIG_USB_CYTHERM=m CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m CONFIG_USB_APPLEDISPLAY=m # CONFIG_APPLE_MFI_FASTCHARGE is not set CONFIG_USB_SISUSBVGA=m @@ -7659,15 +8263,22 @@ CONFIG_TYPEC_FUSB302=m CONFIG_TYPEC_UCSI=m CONFIG_UCSI_CCG=m CONFIG_UCSI_ACPI=m +CONFIG_UCSI_STM32G0=m # CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_ANX7411 is not set +# CONFIG_TYPEC_RT1719 is not set # CONFIG_TYPEC_HD3SS3220 is not set # CONFIG_TYPEC_STUSB160X is not set +# CONFIG_TYPEC_WUSB3801 is not set # # USB Type-C Multiplexer/DeMultiplexer Switch support # +CONFIG_TYPEC_MUX_FSA4480=m +# CONFIG_TYPEC_MUX_GPIO_SBU is not set # CONFIG_TYPEC_MUX_PI3USB30532 is not set # CONFIG_TYPEC_MUX_INTEL_PMC is not set +CONFIG_TYPEC_MUX_NB7VPQ904M=m # end of USB Type-C Multiplexer/DeMultiplexer Switch support # @@ -7714,6 +8325,14 @@ CONFIG_MMC_CQHCI=m CONFIG_MMC_TOSHIBA_PCI=m CONFIG_MMC_MTK=m CONFIG_MMC_SDHCI_XENON=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFS_CRYPTO=y +CONFIG_SCSI_UFS_HWMON=y +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFS_DWC_TC_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +CONFIG_SCSI_UFS_CDNS_PLATFORM=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -7742,9 +8361,11 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m # LED drivers # CONFIG_LEDS_88PM860X=m -# CONFIG_LEDS_APU is not set +CONFIG_LEDS_APU=m +CONFIG_LEDS_AW200XX=m +CONFIG_LEDS_CHT_WCOVE=m CONFIG_LEDS_LM3530=m -# CONFIG_LEDS_LM3532 is not set +CONFIG_LEDS_LM3532=m CONFIG_LEDS_LM3642=m CONFIG_LEDS_PCA9532=m CONFIG_LEDS_PCA9532_GPIO=y @@ -7753,10 +8374,10 @@ CONFIG_LEDS_LP3944=m CONFIG_LEDS_LP3952=m # CONFIG_LEDS_LP50XX is not set # CONFIG_LEDS_LP8788 is not set -CONFIG_LEDS_CLEVO_MAIL=m CONFIG_LEDS_PCA955X=m # CONFIG_LEDS_PCA955X_GPIO is not set CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_PCA995X=m CONFIG_LEDS_WM831X_STATUS=m CONFIG_LEDS_WM8350=m CONFIG_LEDS_DA903X=m @@ -7764,6 +8385,7 @@ CONFIG_LEDS_DA9052=m CONFIG_LEDS_DAC124S085=m CONFIG_LEDS_PWM=m CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2606MVV is not set # CONFIG_LEDS_BD2802 is not set CONFIG_LEDS_INTEL_SS4200=m # CONFIG_LEDS_LT3593 is not set @@ -7774,6 +8396,7 @@ CONFIG_LEDS_TLC591XX=m CONFIG_LEDS_MAX8997=m CONFIG_LEDS_LM355x=m CONFIG_LEDS_MENF21BMC=m +# CONFIG_LEDS_IS31FL319X is not set # # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) @@ -7783,7 +8406,7 @@ CONFIG_LEDS_MLXCPLD=m CONFIG_LEDS_MLXREG=m CONFIG_LEDS_USER=m # CONFIG_LEDS_NIC78BX is not set -# CONFIG_LEDS_TI_LMU_COMMON is not set +# CONFIG_LEDS_LM36274 is not set # # Flash and Torch LED drivers @@ -7793,6 +8416,11 @@ CONFIG_LEDS_USER=m # CONFIG_LEDS_RT8515 is not set CONFIG_LEDS_SGM3140=m +# +# RGB LED drivers +# +# CONFIG_LEDS_PWM_MULTICOLOR is not set + # # LED Triggers # @@ -7805,7 +8433,6 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=m CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_CPU=y # CONFIG_LEDS_TRIGGER_ACTIVITY is not set -CONFIG_LEDS_TRIGGER_GPIO=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # @@ -7818,6 +8445,10 @@ CONFIG_LEDS_TRIGGER_NETDEV=m CONFIG_LEDS_TRIGGER_PATTERN=m CONFIG_LEDS_TRIGGER_AUDIO=m # CONFIG_LEDS_TRIGGER_TTY is not set + +# +# Simple LED drivers +# CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y @@ -7846,23 +8477,24 @@ CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y CONFIG_INFINIBAND_VIRT_DMA=y -CONFIG_INFINIBAND_MTHCA=m -CONFIG_INFINIBAND_MTHCA_DEBUG=y -CONFIG_INFINIBAND_QIB=m -CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_BNXT_RE=m CONFIG_INFINIBAND_CXGB4=m CONFIG_INFINIBAND_EFA=m -# CONFIG_INFINIBAND_IRDMA is not set -CONFIG_MLX4_INFINIBAND=m -CONFIG_MLX5_INFINIBAND=m -CONFIG_INFINIBAND_OCRDMA=m -CONFIG_INFINIBAND_VMWARE_PVRDMA=m -CONFIG_INFINIBAND_USNIC=m -CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_ERDMA=m CONFIG_INFINIBAND_HFI1=m CONFIG_HFI1_DEBUG_SDMA_ORDER=y CONFIG_SDMA_VERBOSITY=y +# CONFIG_INFINIBAND_IRDMA is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_INFINIBAND=m +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_OCRDMA=m CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFINIBAND_VMWARE_PVRDMA=m CONFIG_INFINIBAND_RDMAVT=m CONFIG_RDMA_RXE=m CONFIG_RDMA_SIW=m @@ -7894,7 +8526,6 @@ CONFIG_EDAC_IE31200=m CONFIG_EDAC_X38=m CONFIG_EDAC_I5400=m CONFIG_EDAC_I7CORE=m -CONFIG_EDAC_I5000=m CONFIG_EDAC_I5100=m CONFIG_EDAC_I7300=m CONFIG_EDAC_SBRIDGE=m @@ -7952,7 +8583,6 @@ CONFIG_RTC_DRV_BQ32K=m CONFIG_RTC_DRV_PALMAS=m CONFIG_RTC_DRV_TPS6586X=m CONFIG_RTC_DRV_TPS65910=m -CONFIG_RTC_DRV_TPS80031=m CONFIG_RTC_DRV_RC5T583=m # CONFIG_RTC_DRV_S35390A is not set # CONFIG_RTC_DRV_FM3130 is not set @@ -8002,7 +8632,7 @@ CONFIG_RTC_DRV_CMOS=y # 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_DS1742=m # CONFIG_RTC_DRV_DS2404 is not set CONFIG_RTC_DRV_DA9052=m CONFIG_RTC_DRV_DA9055=m @@ -8012,9 +8642,7 @@ CONFIG_RTC_DRV_DA9063=m # 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 CONFIG_RTC_DRV_WM831X=m CONFIG_RTC_DRV_WM8350=m CONFIG_RTC_DRV_CROS_EC=m @@ -8049,6 +8677,8 @@ CONFIG_INTEL_IDXD=m # CONFIG_INTEL_IDXD_PERFMON is not set CONFIG_INTEL_IOATDMA=m CONFIG_PLX_DMA=m +CONFIG_XILINX_DMA=m +# CONFIG_XILINX_XDMA is not set # CONFIG_AMD_PTDMA is not set CONFIG_QCOM_HIDMA_MGMT=m CONFIG_QCOM_HIDMA=m @@ -8084,25 +8714,6 @@ CONFIG_DMABUF_HEAPS_CMA=y # end of DMABUF options CONFIG_DCA=m -CONFIG_AUXDISPLAY=y -CONFIG_CHARLCD=m -CONFIG_HD44780_COMMON=m -# CONFIG_HD44780 is not set -CONFIG_KS0108=m -CONFIG_KS0108_PORT=0x378 -CONFIG_KS0108_DELAY=2 -CONFIG_CFAG12864B=m -CONFIG_CFAG12864B_RATE=20 -# CONFIG_IMG_ASCII_LCD is not set -# CONFIG_LCD2S is not set -CONFIG_PARPORT_PANEL=m -CONFIG_PANEL_PARPORT=0 -CONFIG_PANEL_PROFILE=5 -# CONFIG_PANEL_CHANGE_MESSAGE is not set -# CONFIG_CHARLCD_BL_OFF is not set -# CONFIG_CHARLCD_BL_ON is not set -CONFIG_CHARLCD_BL_FLASH=y -CONFIG_PANEL=m CONFIG_UIO=m CONFIG_UIO_CIF=m # CONFIG_UIO_PDRV_GENIRQ is not set @@ -8114,24 +8725,41 @@ CONFIG_UIO_NETX=m CONFIG_UIO_PRUSS=m CONFIG_UIO_MF624=m CONFIG_UIO_HV_GENERIC=m +CONFIG_UIO_DFL=m CONFIG_VFIO=m +CONFIG_VFIO_DEVICE_CDEV=y +CONFIG_VFIO_GROUP=y +CONFIG_VFIO_CONTAINER=y CONFIG_VFIO_IOMMU_TYPE1=m -CONFIG_VFIO_VIRQFD=m # CONFIG_VFIO_NOIOMMU is not set +CONFIG_VFIO_VIRQFD=y + +# +# VFIO support for PCI devices +# CONFIG_VFIO_PCI_CORE=m CONFIG_VFIO_PCI_MMAP=y CONFIG_VFIO_PCI_INTX=y CONFIG_VFIO_PCI=m CONFIG_VFIO_PCI_VGA=y CONFIG_VFIO_PCI_IGD=y +CONFIG_MLX5_VFIO_PCI=m +CONFIG_PDS_VFIO_PCI=m +# end of VFIO support for PCI devices + CONFIG_VFIO_MDEV=m CONFIG_IRQ_BYPASS_MANAGER=m CONFIG_VIRT_DRIVERS=y +CONFIG_VMGENID=y CONFIG_VBOXGUEST=m CONFIG_NITRO_ENCLAVES=m -# CONFIG_ACRN_HSM is not set +CONFIG_ACRN_HSM=m +CONFIG_EFI_SECRET=m +# CONFIG_TDX_GUEST_DRIVER is not set +CONFIG_VIRTIO_ANCHOR=y CONFIG_VIRTIO=y CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_PCI_LIB_LEGACY=y CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI_LEGACY=y @@ -8140,10 +8768,11 @@ CONFIG_VIRTIO_BALLOON=m CONFIG_VIRTIO_MEM=m CONFIG_VIRTIO_INPUT=m CONFIG_VIRTIO_MMIO=m -# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y CONFIG_VIRTIO_DMA_SHARED_BUFFER=m # CONFIG_VDPA is not set CONFIG_VHOST_IOTLB=m +CONFIG_VHOST_TASK=y CONFIG_VHOST=m CONFIG_VHOST_MENU=y CONFIG_VHOST_NET=m @@ -8155,6 +8784,7 @@ CONFIG_VHOST_VSOCK=m # Microsoft Hyper-V guest support # CONFIG_HYPERV=m +# CONFIG_HYPERV_VTL_MODE is not set CONFIG_HYPERV_TIMER=y CONFIG_HYPERV_UTILS=m CONFIG_HYPERV_BALLOON=m @@ -8164,7 +8794,7 @@ CONFIG_HYPERV_BALLOON=m # Xen driver support # CONFIG_XEN_BALLOON=y -# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512 CONFIG_XEN_SCRUB_PAGES_DEFAULT=y CONFIG_XEN_DEV_EVTCHN=m @@ -8174,16 +8804,19 @@ CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_SYS_HYPERVISOR=y CONFIG_XEN_XENBUS_FRONTEND=y CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GNTDEV_DMABUF=y CONFIG_XEN_GRANT_DEV_ALLOC=m -# CONFIG_XEN_GRANT_DMA_ALLOC is not set +CONFIG_XEN_GRANT_DMA_ALLOC=y CONFIG_SWIOTLB_XEN=y +CONFIG_XEN_PCI_STUB=y CONFIG_XEN_PCIDEV_BACKEND=m -# CONFIG_XEN_PVCALLS_FRONTEND is not set +CONFIG_XEN_PVCALLS_FRONTEND=m # CONFIG_XEN_PVCALLS_BACKEND is not set CONFIG_XEN_SCSI_BACKEND=m CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_PRIVCMD_IRQFD=y CONFIG_XEN_ACPI_PROCESSOR=m -CONFIG_XEN_MCE_LOG=y +# CONFIG_XEN_MCE_LOG is not set CONFIG_XEN_HAVE_PVMMU=y CONFIG_XEN_EFI=y CONFIG_XEN_AUTO_XLATE=y @@ -8192,6 +8825,9 @@ CONFIG_XEN_SYMS=y CONFIG_XEN_HAVE_VPMU=y CONFIG_XEN_FRONT_PGDIR_SHBUF=m CONFIG_XEN_UNPOPULATED_ALLOC=y +CONFIG_XEN_GRANT_DMA_OPS=y +CONFIG_XEN_VIRTIO=y +# CONFIG_XEN_VIRTIO_FORCE_GRANT is not set # end of Xen driver support # CONFIG_GREYBUS is not set @@ -8203,52 +8839,7 @@ CONFIG_COMEDI_MISC_DRIVERS=y CONFIG_COMEDI_BOND=m CONFIG_COMEDI_TEST=m CONFIG_COMEDI_PARPORT=m -CONFIG_COMEDI_ISA_DRIVERS=y -CONFIG_COMEDI_PCL711=m -CONFIG_COMEDI_PCL724=m -CONFIG_COMEDI_PCL726=m -CONFIG_COMEDI_PCL730=m -CONFIG_COMEDI_PCL812=m -CONFIG_COMEDI_PCL816=m -CONFIG_COMEDI_PCL818=m -CONFIG_COMEDI_PCM3724=m -CONFIG_COMEDI_AMPLC_DIO200_ISA=m -CONFIG_COMEDI_AMPLC_PC236_ISA=m -CONFIG_COMEDI_AMPLC_PC263_ISA=m -CONFIG_COMEDI_RTI800=m -CONFIG_COMEDI_RTI802=m -# CONFIG_COMEDI_DAC02 is not set -CONFIG_COMEDI_DAS16M1=m -CONFIG_COMEDI_DAS08_ISA=m -CONFIG_COMEDI_DAS16=m -CONFIG_COMEDI_DAS800=m -CONFIG_COMEDI_DAS1800=m -CONFIG_COMEDI_DAS6402=m -CONFIG_COMEDI_DT2801=m -CONFIG_COMEDI_DT2811=m -CONFIG_COMEDI_DT2814=m -CONFIG_COMEDI_DT2815=m -CONFIG_COMEDI_DT2817=m -CONFIG_COMEDI_DT282X=m -CONFIG_COMEDI_DMM32AT=m -CONFIG_COMEDI_FL512=m -CONFIG_COMEDI_AIO_AIO12_8=m -CONFIG_COMEDI_AIO_IIRO_16=m -CONFIG_COMEDI_II_PCI20KC=m -CONFIG_COMEDI_C6XDIGIO=m -CONFIG_COMEDI_MPC624=m -CONFIG_COMEDI_ADQ12B=m -CONFIG_COMEDI_NI_AT_A2150=m -CONFIG_COMEDI_NI_AT_AO=m -CONFIG_COMEDI_NI_ATMIO=m -CONFIG_COMEDI_NI_ATMIO16D=m -CONFIG_COMEDI_NI_LABPC_ISA=m -CONFIG_COMEDI_PCMAD=m -CONFIG_COMEDI_PCMDA12=m -CONFIG_COMEDI_PCMMIO=m -CONFIG_COMEDI_PCMUIO=m -CONFIG_COMEDI_MULTIQ3=m -CONFIG_COMEDI_S526=m +# CONFIG_COMEDI_ISA_DRIVERS is not set CONFIG_COMEDI_PCI_DRIVERS=m CONFIG_COMEDI_8255_PCI=m CONFIG_COMEDI_ADDI_WATCHDOG=m @@ -8328,9 +8919,7 @@ CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_AMPLC_DIO200=m CONFIG_COMEDI_AMPLC_PC236=m CONFIG_COMEDI_DAS08=m -CONFIG_COMEDI_ISADMA=m CONFIG_COMEDI_NI_LABPC=m -CONFIG_COMEDI_NI_LABPC_ISADMA=m CONFIG_COMEDI_NI_TIO=m CONFIG_COMEDI_NI_ROUTING=m # CONFIG_COMEDI_TESTS is not set @@ -8344,8 +8933,7 @@ CONFIG_RTLLIB_CRYPTO_WEP=m CONFIG_RTL8192E=m CONFIG_RTL8723BS=m CONFIG_R8712U=m -CONFIG_R8188EU=m -CONFIG_88EU_AP_MODE=y +CONFIG_RTL8812AU=m CONFIG_RTS5208=m CONFIG_VT6655=m CONFIG_VT6656=m @@ -8365,7 +8953,6 @@ CONFIG_ADIS16240=m # Analog to digital converters # CONFIG_AD7816=m -CONFIG_AD7280=m # end of Analog to digital converters # @@ -8376,12 +8963,6 @@ CONFIG_ADT7316_SPI=m CONFIG_ADT7316_I2C=m # end of Analog digital bi-direction converters -# -# Capacitance to digital converters -# -CONFIG_AD7746=m -# end of Capacitance to digital converters - # # Direct Digital Synthesis # @@ -8395,14 +8976,6 @@ CONFIG_AD9834=m CONFIG_AD5933=m # end of Network Analyzer, Impedance Converters -# -# Active energy metering IC -# -CONFIG_ADE7854=m -CONFIG_ADE7854_I2C=m -CONFIG_ADE7854_SPI=m -# end of Active energy metering IC - # # Resolver to digital converters # @@ -8414,53 +8987,95 @@ CONFIG_AD2S1210=m CONFIG_STAGING_MEDIA=y CONFIG_INTEL_ATOMISP=y # CONFIG_VIDEO_ATOMISP is not set -# CONFIG_VIDEO_ZORAN is not set -CONFIG_VIDEO_IPU3_IMGU=m CONFIG_DVB_AV7110_IR=y CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET_PATCH=m CONFIG_DVB_SP8870=m - -# -# Android -# -# end of Android - +CONFIG_VIDEO_IPU3_IMGU=m +# CONFIG_STAGING_MEDIA_DEPRECATED is not set CONFIG_LTE_GDM724X=m -CONFIG_FIREWIRE_SERIAL=m -CONFIG_FWTTY_MAX_TOTAL_PORTS=64 -CONFIG_FWTTY_MAX_CARD_PORTS=32 -# CONFIG_GS_FPGABOOT is not set -CONFIG_UNISYSSPAR=y -CONFIG_UNISYS_VISORNIC=m -CONFIG_UNISYS_VISORINPUT=m -CONFIG_UNISYS_VISORHBA=m # CONFIG_FB_TFT is not set # CONFIG_MOST_COMPONENTS is not set CONFIG_KS7010=m # CONFIG_PI433 is not set CONFIG_FIELDBUS_DEV=m CONFIG_QLGE=m -CONFIG_WFX=m +CONFIG_VME_BUS=y + +# +# VME Bridge Drivers +# +CONFIG_VME_TSI148=m +# CONFIG_VME_FAKE is not set + +# +# VME Device Drivers +# +CONFIG_VME_USER=m +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_ACPI=m +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROMEOS_TBMC=m +CONFIG_CROS_EC=m +CONFIG_CROS_EC_I2C=m +CONFIG_CROS_EC_ISHTP=m +CONFIG_CROS_EC_SPI=m +CONFIG_CROS_EC_UART=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CROS_KBD_LED_BACKLIGHT=m +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LIGHTBAR=m +CONFIG_CROS_EC_DEBUGFS=m +CONFIG_CROS_EC_SENSORHUB=m +CONFIG_CROS_EC_SYSFS=m +CONFIG_CROS_EC_TYPEC=m +CONFIG_CROS_HPS_I2C=m +CONFIG_CROS_USBPD_LOGGER=m +CONFIG_CROS_USBPD_NOTIFY=m +CONFIG_CHROMEOS_PRIVACY_SCREEN=m +CONFIG_CROS_TYPEC_SWITCH=m +CONFIG_WILCO_EC=m +CONFIG_WILCO_EC_DEBUGFS=m +CONFIG_WILCO_EC_EVENTS=m +CONFIG_WILCO_EC_TELEMETRY=m +CONFIG_MELLANOX_PLATFORM=y +CONFIG_MLXREG_HOTPLUG=m +CONFIG_MLXREG_IO=m +CONFIG_MLXREG_LC=m +CONFIG_NVSW_SN2201=m +CONFIG_SURFACE_PLATFORMS=y +CONFIG_SURFACE3_WMI=m +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_GPE is not set +# CONFIG_SURFACE_HOTPLUG is not set +CONFIG_SURFACE_PRO3_BUTTON=m +# CONFIG_SURFACE_AGGREGATOR is not set CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACPI_WMI=m CONFIG_WMI_BMOF=m CONFIG_HUAWEI_WMI=m CONFIG_MXM_WMI=m -CONFIG_PEAQ_WMI=m +CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m CONFIG_XIAOMI_WMI=m -# CONFIG_GIGABYTE_WMI is not set +CONFIG_GIGABYTE_WMI=m +CONFIG_YOGABOOK=m CONFIG_ACERHDF=m # CONFIG_ACER_WIRELESS is not set CONFIG_ACER_WMI=m -# CONFIG_AMD_PMC is not set -# CONFIG_ADV_SWBUTTON is not set +CONFIG_AMD_PMF=m +# CONFIG_AMD_PMF_DEBUG is not set +CONFIG_AMD_PMC=m +CONFIG_AMD_HSMP=m +CONFIG_ADV_SWBUTTON=m CONFIG_APPLE_GMUX=m CONFIG_ASUS_LAPTOP=m CONFIG_ASUS_WIRELESS=m CONFIG_ASUS_WMI=m CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_TF103C_DOCK=m # CONFIG_MERAKI_MX100 is not set CONFIG_EEEPC_LAPTOP=m CONFIG_EEEPC_WMI=m @@ -8472,9 +9087,11 @@ CONFIG_GPD_POCKET_FAN=m CONFIG_X86_PLATFORM_DRIVERS_HP=y CONFIG_HP_ACCEL=m CONFIG_HP_WMI=m -CONFIG_WIRELESS_HOTKEY=m +CONFIG_HP_BIOSCFG=m +# CONFIG_WIRELESS_HOTKEY is not set CONFIG_IBM_RTL=m CONFIG_IDEAPAD_LAPTOP=m +CONFIG_LENOVO_YMC=m CONFIG_SENSORS_HDAPS=m CONFIG_THINKPAD_ACPI=m CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y @@ -8485,13 +9102,18 @@ CONFIG_THINKPAD_ACPI_VIDEO=y CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y # CONFIG_THINKPAD_LMI is not set # CONFIG_INTEL_ATOMISP2_LED is not set +# CONFIG_INTEL_IFS is not set # CONFIG_INTEL_SAR_INT1092 is not set # CONFIG_INTEL_SKL_INT3472 is not set CONFIG_INTEL_PMC_CORE=y +CONFIG_INTEL_PMT_CLASS=m +CONFIG_INTEL_PMT_TELEMETRY=m +CONFIG_INTEL_PMT_CRASHLOG=m # # Intel Speed Select Technology interface support # +CONFIG_INTEL_SPEED_SELECT_TPMI=m CONFIG_INTEL_SPEED_SELECT_INTERFACE=m # end of Intel Speed Select Technology interface support @@ -8499,19 +9121,33 @@ CONFIG_INTEL_SPEED_SELECT_INTERFACE=m CONFIG_INTEL_WMI=y CONFIG_INTEL_WMI_SBL_FW_UPDATE=m # CONFIG_INTEL_WMI_THUNDERBOLT is not set + +# +# Intel Uncore Frequency Control +# +CONFIG_INTEL_UNCORE_FREQ_CONTROL_TPMI=m +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +# end of Intel Uncore Frequency Control + CONFIG_INTEL_HID_EVENT=m CONFIG_INTEL_VBTN=m CONFIG_INTEL_INT0002_VGPIO=m CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_BYTCRC_PWRSRC=m CONFIG_INTEL_CHTDC_TI_PWRBTN=m +CONFIG_INTEL_ISHTP_ECLITE=m CONFIG_INTEL_PUNIT_IPC=m CONFIG_INTEL_RST=m +CONFIG_INTEL_SDSI=m CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TPMI=m CONFIG_INTEL_TURBO_MAX_3=y -CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +CONFIG_INTEL_VSEC=m +CONFIG_MSI_EC=m CONFIG_MSI_LAPTOP=m CONFIG_MSI_WMI=m CONFIG_PCENGINES_APU2=m +# CONFIG_BARCO_P50_GPIO is not set CONFIG_SAMSUNG_LAPTOP=m CONFIG_SAMSUNG_Q10=m CONFIG_ACPI_TOSHIBA=m @@ -8527,60 +9163,23 @@ CONFIG_SONY_LAPTOP=m CONFIG_SONYPI_COMPAT=y CONFIG_SYSTEM76_ACPI=m CONFIG_TOPSTAR_LAPTOP=m -CONFIG_I2C_MULTI_INSTANTIATE=m +# CONFIG_SERIAL_MULTI_INSTANTIATE is not set CONFIG_MLX_PLATFORM=m CONFIG_TOUCHSCREEN_DMI=y +CONFIG_X86_ANDROID_TABLETS=m +CONFIG_FW_ATTR_CLASS=m CONFIG_INTEL_IPS=m CONFIG_INTEL_SCU_IPC=y # CONFIG_INTEL_SCU_PCI is not set # CONFIG_INTEL_SCU_PLATFORM is not set -CONFIG_PMC_ATOM=y -CONFIG_CHROME_PLATFORMS=y -CONFIG_CHROMEOS_LAPTOP=m -CONFIG_CHROMEOS_PSTORE=m -CONFIG_CHROMEOS_TBMC=m -CONFIG_CROS_EC=m -CONFIG_CROS_EC_I2C=m -CONFIG_CROS_EC_ISHTP=m -CONFIG_CROS_EC_SPI=m -CONFIG_CROS_EC_LPC=m -CONFIG_CROS_EC_PROTO=y -CONFIG_CROS_KBD_LED_BACKLIGHT=m -CONFIG_CROS_EC_CHARDEV=m -CONFIG_CROS_EC_LIGHTBAR=m -CONFIG_CROS_EC_DEBUGFS=m -CONFIG_CROS_EC_SENSORHUB=m -CONFIG_CROS_EC_SYSFS=m -CONFIG_CROS_EC_TYPEC=m -CONFIG_CROS_USBPD_LOGGER=m -CONFIG_CROS_USBPD_NOTIFY=m -CONFIG_WILCO_EC=m -CONFIG_WILCO_EC_DEBUGFS=m -CONFIG_WILCO_EC_EVENTS=m -CONFIG_WILCO_EC_TELEMETRY=m -CONFIG_MELLANOX_PLATFORM=y -CONFIG_MLXREG_HOTPLUG=m -CONFIG_MLXREG_IO=m -CONFIG_SURFACE_PLATFORMS=y -CONFIG_SURFACE3_WMI=m -CONFIG_SURFACE_3_BUTTON=m -# CONFIG_SURFACE_3_POWER_OPREGION is not set -# CONFIG_SURFACE_GPE is not set -# CONFIG_SURFACE_HOTPLUG is not set -CONFIG_SURFACE_PRO3_BUTTON=m -# CONFIG_SURFACE_AGGREGATOR is not set +# CONFIG_SIEMENS_SIMATIC_IPC is not set +# CONFIG_WINMATE_FM07_KEYS is not set +CONFIG_SEL3350_PLATFORM=m +CONFIG_P2SB=y CONFIG_HAVE_CLK=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_WM831X=m - -# -# Clock driver for ARM Reference designs -# -# CONFIG_ICST is not set -# CONFIG_CLK_SP810 is not set -# end of Clock driver for ARM Reference designs - # CONFIG_LMK04832 is not set # CONFIG_COMMON_CLK_MAX9485 is not set CONFIG_COMMON_CLK_SI5341=m @@ -8606,7 +9205,6 @@ CONFIG_MAILBOX=y CONFIG_PCC=y CONFIG_ALTERA_MBOX=m CONFIG_IOMMU_IOVA=y -CONFIG_IOASID=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y @@ -8629,6 +9227,8 @@ CONFIG_INTEL_IOMMU=y # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set CONFIG_INTEL_IOMMU_FLOPPY_WA=y # CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_PERF_EVENTS=y +CONFIG_IOMMUFD=m CONFIG_IRQ_REMAP=y CONFIG_HYPERV_IOMMU=y # CONFIG_VIRTIO_IOMMU is not set @@ -8645,6 +9245,7 @@ CONFIG_REMOTEPROC_CDEV=y # CONFIG_RPMSG=m # CONFIG_RPMSG_CHAR is not set +# CONFIG_RPMSG_CTRL is not set CONFIG_RPMSG_NS=m CONFIG_RPMSG_QCOM_GLINK=m CONFIG_RPMSG_QCOM_GLINK_RPM=m @@ -8656,6 +9257,7 @@ CONFIG_SOUNDWIRE=y # # SoundWire Devices # +CONFIG_SOUNDWIRE_AMD=m CONFIG_SOUNDWIRE_CADENCE=m CONFIG_SOUNDWIRE_INTEL=m CONFIG_SOUNDWIRE_QCOM=m @@ -8680,6 +9282,11 @@ CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m # # end of NXP/Freescale QorIQ SoC drivers +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers + # # i.MX SoC drivers # @@ -8690,6 +9297,8 @@ CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m # # end of Enable LiteX SoC Builder specific drivers +CONFIG_WPCM450_SOC=m + # # Qualcomm SoC drivers # @@ -8742,6 +9351,7 @@ CONFIG_EXTCON_USB_GPIO=m CONFIG_EXTCON_USBC_CROS_EC=m # CONFIG_EXTCON_USBC_TUSB320 is not set CONFIG_MEMORY=y +CONFIG_FPGA_DFL_EMIF=m CONFIG_IIO=m CONFIG_IIO_BUFFER=y CONFIG_IIO_BUFFER_CB=m @@ -8762,9 +9372,15 @@ CONFIG_IIO_TRIGGERED_EVENT=m # CONFIG_ADIS16201=m CONFIG_ADIS16209=m +# CONFIG_ADXL313_I2C is not set +# CONFIG_ADXL313_SPI is not set CONFIG_ADXL345=m CONFIG_ADXL345_I2C=m CONFIG_ADXL345_SPI=m +# CONFIG_ADXL355_I2C is not set +# CONFIG_ADXL355_SPI is not set +# CONFIG_ADXL367_SPI is not set +# CONFIG_ADXL367_I2C is not set # CONFIG_ADXL372_SPI is not set # CONFIG_ADXL372_I2C is not set CONFIG_BMA220=m @@ -8775,6 +9391,7 @@ CONFIG_BMC150_ACCEL_SPI=m # CONFIG_BMI088_ACCEL is not set # CONFIG_DA280 is not set # CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set # CONFIG_DMARD09 is not set # CONFIG_DMARD10 is not set # CONFIG_FXLS8962AF_I2C is not set @@ -8784,6 +9401,8 @@ CONFIG_HID_SENSOR_ACCEL_3D=m CONFIG_IIO_ST_ACCEL_3AXIS=m CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +# CONFIG_IIO_KX022A_SPI is not set +# CONFIG_IIO_KX022A_I2C is not set CONFIG_KXSD9=m CONFIG_KXSD9_SPI=m CONFIG_KXSD9_I2C=m @@ -8796,6 +9415,7 @@ CONFIG_MMA7660=m CONFIG_MMA8452=m # CONFIG_MMA9551 is not set # CONFIG_MMA9553 is not set +# CONFIG_MSA311 is not set CONFIG_MXC4005=m CONFIG_MXC6255=m CONFIG_SCA3000=m @@ -8808,10 +9428,12 @@ CONFIG_STK8BA50=m # Analog to digital converters # CONFIG_AD_SIGMA_DELTA=m +CONFIG_AD4130=m # CONFIG_AD7091R5 is not set CONFIG_AD7124=m CONFIG_AD7192=m CONFIG_AD7266=m +CONFIG_AD7280=m CONFIG_AD7291=m CONFIG_AD7292=m CONFIG_AD7298=m @@ -8832,6 +9454,7 @@ CONFIG_AD799X=m CONFIG_AXP288_ADC=m # CONFIG_CC10001_ADC is not set CONFIG_DLN2_ADC=m +# CONFIG_ENVELOPE_DETECTOR is not set CONFIG_HI8435=m # CONFIG_HX711 is not set CONFIG_INA2XX_ADC=m @@ -8843,8 +9466,11 @@ CONFIG_LTC2471=m CONFIG_MAX1027=m # CONFIG_MAX11100 is not set # CONFIG_MAX1118 is not set +# CONFIG_MAX11205 is not set +CONFIG_MAX11410=m # CONFIG_MAX1241 is not set CONFIG_MAX1363=m +CONFIG_MAX77541_ADC=m # CONFIG_MAX9611 is not set CONFIG_MCP320X=m CONFIG_MCP3422=m @@ -8855,6 +9481,8 @@ CONFIG_PALMAS_GPADC=m CONFIG_QCOM_SPMI_IADC=m # CONFIG_QCOM_SPMI_VADC is not set # CONFIG_QCOM_SPMI_ADC5 is not set +# CONFIG_RICHTEK_RTQ6056 is not set +# CONFIG_SD_ADC_MODULATOR is not set CONFIG_TI_ADC081C=m CONFIG_TI_ADC0832=m CONFIG_TI_ADC084S021=m @@ -8863,12 +9491,20 @@ CONFIG_TI_ADC108S102=m CONFIG_TI_ADC128S052=m # CONFIG_TI_ADC161S626 is not set CONFIG_TI_ADS1015=m +CONFIG_TI_ADS7924=m +CONFIG_TI_ADS1100=m # CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set # CONFIG_TI_ADS131E08 is not set +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_LMP92064=m # CONFIG_TI_TLC4541 is not set # CONFIG_TI_TSC2046 is not set CONFIG_TWL4030_MADC=m CONFIG_TWL6030_GPADC=m +# CONFIG_VF610_ADC is not set CONFIG_VIPERBOARD_ADC=m CONFIG_XILINX_XADC=m # end of Analog to digital converters @@ -8876,17 +9512,21 @@ CONFIG_XILINX_XADC=m # # Analog to digital and digital to analog converters # +CONFIG_AD74115=m +# CONFIG_AD74413R is not set # end of Analog to digital and digital to analog converters # # Analog Front Ends # +CONFIG_IIO_RESCALE=m # end of Analog Front Ends # # Amplifiers # CONFIG_AD8366=m +# CONFIG_ADA4250 is not set # CONFIG_HMC425 is not set # end of Amplifiers @@ -8894,6 +9534,7 @@ CONFIG_AD8366=m # Capacitance to digital converters # CONFIG_AD7150=m +CONFIG_AD7746=m # end of Capacitance to digital converters # @@ -8908,10 +9549,12 @@ CONFIG_IAQCORE=m CONFIG_SCD30_CORE=m CONFIG_SCD30_I2C=m CONFIG_SCD30_SERIAL=m +# CONFIG_SCD4X is not set # CONFIG_SENSIRION_SGP30 is not set # CONFIG_SENSIRION_SGP40 is not set # CONFIG_SPS30_I2C is not set # CONFIG_SPS30_SERIAL is not set +# CONFIG_SENSEAIR_SUNRISE_CO2 is not set CONFIG_VZ89X=m # end of Chemical Sensors @@ -8926,6 +9569,7 @@ CONFIG_HID_SENSOR_IIO_COMMON=m CONFIG_HID_SENSOR_IIO_TRIGGER=m # end of Hid Sensor IIO Common +CONFIG_IIO_INV_SENSORS_TIMESTAMP=m CONFIG_IIO_MS_SENSORS_I2C=m # @@ -8946,6 +9590,7 @@ CONFIG_IIO_ST_SENSORS_CORE=m # # Digital to analog converters # +# CONFIG_AD3552R is not set CONFIG_AD5064=m CONFIG_AD5360=m CONFIG_AD5380=m @@ -8957,6 +9602,7 @@ CONFIG_AD5592R=m CONFIG_AD5593R=m CONFIG_AD5504=m CONFIG_AD5624R_SPI=m +CONFIG_LTC2688=m CONFIG_AD5686=m CONFIG_AD5686_SPI=m CONFIG_AD5696_I2C=m @@ -8967,20 +9613,26 @@ CONFIG_AD5764=m # CONFIG_AD5766 is not set # CONFIG_AD5770R is not set CONFIG_AD5791=m +# CONFIG_AD7293 is not set CONFIG_AD7303=m # CONFIG_AD8801 is not set # CONFIG_CIO_DAC is not set +# CONFIG_DPOT_DAC is not set # CONFIG_DS4424 is not set # CONFIG_LTC1660 is not set # CONFIG_LTC2632 is not set CONFIG_M62332=m CONFIG_MAX517=m +CONFIG_MAX5522=m +# CONFIG_MAX5821 is not set CONFIG_MCP4725=m +CONFIG_MCP4728=m CONFIG_MCP4922=m # CONFIG_TI_DAC082S085 is not set # CONFIG_TI_DAC5571 is not set # CONFIG_TI_DAC7311 is not set # CONFIG_TI_DAC7612 is not set +# CONFIG_VF610_DAC is not set # end of Digital to analog converters # @@ -8989,6 +9641,12 @@ CONFIG_MCP4922=m # CONFIG_IIO_SIMPLE_DUMMY is not set # end of IIO dummy driver +# +# Filters +# +# CONFIG_ADMV8818 is not set +# end of Filters + # # Frequency Synthesizers DDS/PLL # @@ -9004,6 +9662,11 @@ CONFIG_AD9523=m # CONFIG_ADF4350=m CONFIG_ADF4371=m +CONFIG_ADF4377=m +# CONFIG_ADMV1013 is not set +# CONFIG_ADMV1014 is not set +# CONFIG_ADMV4420 is not set +# CONFIG_ADRF6780 is not set # end of Phase-Locked Loop (PLL) frequency synthesizers # end of Frequency Synthesizers DDS/PLL @@ -9068,6 +9731,8 @@ CONFIG_ADIS16480=m CONFIG_BMI160=m CONFIG_BMI160_I2C=m CONFIG_BMI160_SPI=m +# CONFIG_BOSCH_BNO055_SERIAL is not set +# CONFIG_BOSCH_BNO055_I2C is not set CONFIG_FXOS8700=m CONFIG_FXOS8700_I2C=m CONFIG_FXOS8700_SPI=m @@ -9101,6 +9766,7 @@ CONFIG_BH1780=m CONFIG_CM32181=m # CONFIG_CM3232 is not set # CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set CONFIG_CM36651=m CONFIG_IIO_CROS_EC_LIGHT_PROX=m # CONFIG_GP2AP002 is not set @@ -9112,13 +9778,17 @@ CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m # CONFIG_JSA1212 is not set +# CONFIG_ROHM_BU27008 is not set +# CONFIG_ROHM_BU27034 is not set CONFIG_RPR0521=m CONFIG_LTR501=m +# CONFIG_LTRF216A is not set # CONFIG_LV0104CS is not set CONFIG_MAX44000=m # CONFIG_MAX44009 is not set # CONFIG_NOA1305 is not set CONFIG_OPT3001=m +CONFIG_OPT4001=m CONFIG_PA12203001=m # CONFIG_SI1133 is not set # CONFIG_SI1145 is not set @@ -9145,6 +9815,7 @@ CONFIG_VEML6070=m # # Magnetometer sensors # +# CONFIG_AK8974 is not set CONFIG_AK8975=m CONFIG_AK09911=m CONFIG_BMC150_MAGN=m @@ -9161,12 +9832,14 @@ CONFIG_SENSORS_HMC5843_I2C=m CONFIG_SENSORS_HMC5843_SPI=m # CONFIG_SENSORS_RM3100_I2C is not set # CONFIG_SENSORS_RM3100_SPI is not set +CONFIG_TI_TMAG5273=m # CONFIG_YAMAHA_YAS530 is not set # end of Magnetometer sensors # # Multiplexers # +CONFIG_IIO_MUX=m # end of Multiplexers # @@ -9206,6 +9879,7 @@ CONFIG_MCP4131=m CONFIG_MCP4531=m # CONFIG_MCP41010 is not set CONFIG_TPL0102=m +CONFIG_X9250=m # end of Digital potentiometers # @@ -9229,6 +9903,7 @@ CONFIG_MPL115=m CONFIG_MPL115_I2C=m CONFIG_MPL115_SPI=m # CONFIG_MPL3115 is not set +CONFIG_MPRLS0025PA=m # CONFIG_MS5611 is not set CONFIG_MS5637=m CONFIG_IIO_ST_PRESS=m @@ -9249,6 +9924,7 @@ CONFIG_AS3935=m # Proximity and distance sensors # # CONFIG_CROS_EC_MKBP_PROXIMITY is not set +CONFIG_IRSD200=m # CONFIG_ISL29501 is not set CONFIG_LIDAR_LITE_V2=m # CONFIG_MB1232 is not set @@ -9256,6 +9932,8 @@ CONFIG_LIDAR_LITE_V2=m # CONFIG_RFD77402 is not set # CONFIG_SRF04 is not set # CONFIG_SX9310 is not set +# CONFIG_SX9324 is not set +# CONFIG_SX9360 is not set # CONFIG_SX9500 is not set # CONFIG_SRF08 is not set # CONFIG_VCNL3020 is not set @@ -9283,7 +9961,9 @@ CONFIG_TMP006=m # CONFIG_TMP117 is not set CONFIG_TSYS01=m CONFIG_TSYS02D=m +CONFIG_MAX30208=m # CONFIG_MAX31856 is not set +# CONFIG_MAX31865 is not set # end of Temperature sensors CONFIG_NTB=m @@ -9297,27 +9977,10 @@ CONFIG_NTB_PINGPONG=m CONFIG_NTB_TOOL=m CONFIG_NTB_PERF=m CONFIG_NTB_TRANSPORT=m -CONFIG_VME_BUS=y - -# -# VME Bridge Drivers -# -CONFIG_VME_CA91CX42=m -CONFIG_VME_TSI148=m -# CONFIG_VME_FAKE is not set - -# -# VME Board Drivers -# -CONFIG_VMIVME_7805=m - -# -# VME Device Drivers -# -CONFIG_VME_USER=m CONFIG_PWM=y CONFIG_PWM_SYSFS=y # CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_CLK is not set CONFIG_PWM_CRC=y CONFIG_PWM_CROS_EC=m # CONFIG_PWM_DWC is not set @@ -9338,15 +10001,24 @@ CONFIG_MADERA_IRQ=m # CONFIG_IPACK_BUS is not set CONFIG_RESET_CONTROLLER=y -# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_RESET_SIMPLE is not set +CONFIG_RESET_TI_SYSCON=m +# CONFIG_RESET_TI_TPS380X is not set # # PHY Subsystem # CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y CONFIG_USB_LGM_PHY=m # CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# CONFIG_BCM_KONA_USB2_PHY=m +# end of PHY drivers for Broadcom platforms + CONFIG_PHY_PXA_28NM_HSIC=m CONFIG_PHY_PXA_28NM_USB2=m CONFIG_PHY_CPCAP_USB=m @@ -9360,8 +10032,8 @@ CONFIG_PHY_INTEL_LGM_EMMC=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL_CORE=m CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RAPL_TPMI=m CONFIG_IDLE_INJECT=y -# CONFIG_DTPM is not set # CONFIG_MCB is not set # @@ -9378,12 +10050,14 @@ CONFIG_USB4=m # # Android # -# CONFIG_ANDROID is not set +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_BINDERFS=y +CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" +# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set # end of Android CONFIG_LIBNVDIMM=m CONFIG_BLK_DEV_PMEM=m -CONFIG_ND_BLK=m CONFIG_ND_CLAIM=y CONFIG_ND_BTT=m CONFIG_BTT=y @@ -9391,16 +10065,25 @@ CONFIG_ND_PFN=m CONFIG_NVDIMM_PFN=y CONFIG_NVDIMM_DAX=y CONFIG_NVDIMM_KEYS=y -CONFIG_DAX_DRIVER=y +# CONFIG_NVDIMM_SECURITY_TEST is not set CONFIG_DAX=y CONFIG_DEV_DAX=m CONFIG_DEV_DAX_PMEM=m +CONFIG_DEV_DAX_HMEM=m +CONFIG_DEV_DAX_HMEM_DEVICES=y CONFIG_DEV_DAX_KMEM=m -CONFIG_DEV_DAX_PMEM_COMPAT=m CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y -CONFIG_NVMEM_SPMI_SDAM=m + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +CONFIG_NVMEM_LAYOUT_ONIE_TLV=m +# end of Layout Types + # CONFIG_NVMEM_RMEM is not set +CONFIG_NVMEM_SPMI_SDAM=m # # HW tracing support @@ -9428,28 +10111,47 @@ CONFIG_FPGA=m # CONFIG_FPGA_MGR_ALTERA_CVP is not set # CONFIG_FPGA_MGR_XILINX_SPI is not set # CONFIG_FPGA_MGR_MACHXO2_SPI is not set -# CONFIG_FPGA_BRIDGE is not set -# CONFIG_FPGA_DFL is not set +CONFIG_FPGA_BRIDGE=m +CONFIG_ALTERA_FREEZE_BRIDGE=m +CONFIG_XILINX_PR_DECOUPLER=m +CONFIG_FPGA_REGION=m +CONFIG_FPGA_DFL=m +CONFIG_FPGA_DFL_FME=m +CONFIG_FPGA_DFL_FME_MGR=m +CONFIG_FPGA_DFL_FME_BRIDGE=m +CONFIG_FPGA_DFL_FME_REGION=m +CONFIG_FPGA_DFL_AFU=m +CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m +CONFIG_FPGA_DFL_PCI=m +CONFIG_FPGA_M10_BMC_SEC_UPDATE=m +# CONFIG_FPGA_MGR_MICROCHIP_SPI is not set +# CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI is not set CONFIG_TEE=m +CONFIG_AMDTEE=m +CONFIG_MULTIPLEXER=m # -# TEE drivers +# Multiplexer drivers # -CONFIG_AMDTEE=m -# end of TEE drivers +# CONFIG_MUX_ADG792A is not set +# CONFIG_MUX_ADGS1408 is not set +# CONFIG_MUX_GPIO is not set +# end of Multiplexer drivers CONFIG_PM_OPP=y -CONFIG_UNISYS_VISORBUS=m # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set CONFIG_INTERCONNECT=y -CONFIG_COUNTER=m -# CONFIG_INTERRUPT_CNT is not set -# CONFIG_INTEL_QEP is not set +CONFIG_COUNTER=y +CONFIG_INTEL_QEP=m +CONFIG_INTERRUPT_CNT=m CONFIG_MOST=m CONFIG_MOST_USB_HDM=m CONFIG_MOST_CDEV=m -# CONFIG_MOST_SND is not set +CONFIG_MOST_SND=m +CONFIG_PECI=m +CONFIG_PECI_CPU=m +CONFIG_HTE=y # end of Device Drivers # @@ -9458,6 +10160,8 @@ CONFIG_MOST_CDEV=m CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_VALIDATE_FS_PARSER is not set CONFIG_FS_IOMAP=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y @@ -9485,6 +10189,7 @@ CONFIG_JFS_SECURITY=y CONFIG_JFS_STATISTICS=y CONFIG_XFS_FS=m CONFIG_XFS_SUPPORT_V4=y +# CONFIG_XFS_SUPPORT_ASCII_CI is not set CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y @@ -9521,6 +10226,8 @@ CONFIG_F2FS_FS_LZ4=y CONFIG_F2FS_FS_LZ4HC=y CONFIG_F2FS_FS_ZSTD=y CONFIG_F2FS_IOSTAT=y +# CONFIG_F2FS_UNFAIR_RWSEM is not set +CONFIG_ZONEFS_FS=m CONFIG_FS_DAX=y CONFIG_FS_DAX_PMD=y CONFIG_FS_POSIX_ACL=y @@ -9538,13 +10245,11 @@ CONFIG_FANOTIFY=y CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y -CONFIG_PRINT_QUOTA_WARNING=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QFMT_V1=m CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y -CONFIG_AUTOFS4_FS=y CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m @@ -9556,6 +10261,7 @@ 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 +# CONFIG_OVERLAY_FS_DEBUG is not set # # Caches @@ -9567,6 +10273,8 @@ CONFIG_FSCACHE_STATS=y CONFIG_FSCACHE_DEBUG=y CONFIG_CACHEFILES=m CONFIG_CACHEFILES_DEBUG=y +# CONFIG_CACHEFILES_ERROR_INJECTION is not set +# CONFIG_CACHEFILES_ONDEMAND is not set # end of Caches # @@ -9616,11 +10324,11 @@ CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y CONFIG_TMPFS_INODE64=y +# CONFIG_TMPFS_QUOTA is not set CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y -CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y -# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set -CONFIG_MEMFD_CREATE=y +CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y +# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_CONFIGFS_FS=y CONFIG_EFIVAR_FS=y @@ -9664,9 +10372,11 @@ CONFIG_CRAMFS_BLOCKDEV=y CONFIG_SQUASHFS=m # CONFIG_SQUASHFS_FILE_CACHE is not set CONFIG_SQUASHFS_FILE_DIRECT=y -# CONFIG_SQUASHFS_DECOMP_SINGLE is not set -CONFIG_SQUASHFS_DECOMP_MULTI=y -# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU is not set CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_LZ4=y @@ -9691,25 +10401,16 @@ CONFIG_ROMFS_ON_BLOCK=y CONFIG_ROMFS_ON_MTD=y CONFIG_PSTORE=y CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 -CONFIG_PSTORE_DEFLATE_COMPRESS=m -CONFIG_PSTORE_LZO_COMPRESS=m -CONFIG_PSTORE_LZ4_COMPRESS=m -CONFIG_PSTORE_LZ4HC_COMPRESS=m -CONFIG_PSTORE_842_COMPRESS=y -CONFIG_PSTORE_ZSTD_COMPRESS=y CONFIG_PSTORE_COMPRESS=y -CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -# CONFIG_PSTORE_LZO_COMPRESS_DEFAULT is not set -# CONFIG_PSTORE_LZ4_COMPRESS_DEFAULT is not set -# CONFIG_PSTORE_LZ4HC_COMPRESS_DEFAULT is not set -# CONFIG_PSTORE_842_COMPRESS_DEFAULT is not set -# CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT is not set -CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" -CONFIG_PSTORE_CONSOLE=y -CONFIG_PSTORE_PMSG=y -CONFIG_PSTORE_FTRACE=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set CONFIG_PSTORE_RAM=m -# CONFIG_PSTORE_BLK is not set +CONFIG_PSTORE_ZONE=m +CONFIG_PSTORE_BLK=m +CONFIG_PSTORE_BLK_BLKDEV="" +CONFIG_PSTORE_BLK_KMSG_SIZE=64 +CONFIG_PSTORE_BLK_MAX_REASON=2 CONFIG_SYSV_FS=m CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set @@ -9718,8 +10419,12 @@ CONFIG_EROFS_FS=m # CONFIG_EROFS_FS_DEBUG is not set CONFIG_EROFS_FS_XATTR=y CONFIG_EROFS_FS_POSIX_ACL=y -# CONFIG_EROFS_FS_SECURITY is not set -# CONFIG_EROFS_FS_ZIP is not set +CONFIG_EROFS_FS_SECURITY=y +CONFIG_EROFS_FS_ZIP=y +CONFIG_EROFS_FS_ZIP_LZMA=y +CONFIG_EROFS_FS_ZIP_DEFLATE=y +CONFIG_EROFS_FS_PCPU_KTHREAD=y +# CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI is not set CONFIG_VBOXSF_FS=m CONFIG_AUFS_FS=y CONFIG_AUFS_BRANCH_MAX_127=y @@ -9785,7 +10490,9 @@ CONFIG_SUNRPC_GSS=m CONFIG_SUNRPC_BACKCHANNEL=y CONFIG_SUNRPC_SWAP=y CONFIG_RPCSEC_GSS_KRB5=m -# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y +# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y CONFIG_SUNRPC_DEBUG=y CONFIG_SUNRPC_XPRT_RDMA=m CONFIG_CEPH_FS=m @@ -9806,7 +10513,7 @@ CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_SMB_DIRECT is not set CONFIG_CIFS_FSCACHE=y # CONFIG_SMB_SERVER is not set -CONFIG_SMBFS_COMMON=m +CONFIG_SMBFS=m CONFIG_CODA_FS=m CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set @@ -9867,8 +10574,9 @@ CONFIG_NLS_MAC_INUIT=m CONFIG_NLS_MAC_ROMANIAN=m CONFIG_NLS_MAC_TURKISH=m CONFIG_NLS_UTF8=m +CONFIG_NLS_UCS2_UTILS=m CONFIG_DLM=m -CONFIG_DLM_DEBUG=y +# CONFIG_DLM_DEBUG is not set # CONFIG_UNICODE is not set CONFIG_IO_WQ=y # end of File systems @@ -9880,7 +10588,10 @@ CONFIG_KEYS=y # CONFIG_KEYS_REQUEST_CACHE is not set # CONFIG_PERSISTENT_KEYRINGS is not set CONFIG_TRUSTED_KEYS=m +CONFIG_TRUSTED_KEYS_TPM=y +CONFIG_TRUSTED_KEYS_TEE=y CONFIG_ENCRYPTED_KEYS=y +# CONFIG_USER_DECRYPTED_DATA is not set # CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_KEY_NOTIFICATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set @@ -9891,19 +10602,19 @@ CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_PATH=y CONFIG_INTEL_TXT=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_DEBUG is not set +CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y -# CONFIG_SECURITY_APPARMOR_DEBUG is not set +CONFIG_SECURITY_APPARMOR_EXPORT_BINARY=y +CONFIG_SECURITY_APPARMOR_PARANOID_LOAD=y # CONFIG_SECURITY_LOADPIN is not set # CONFIG_SECURITY_YAMA is not set # CONFIG_SECURITY_SAFESETID is not set @@ -9930,9 +10641,6 @@ CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y CONFIG_INIT_STACK_NONE=y -# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set -# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set -# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set # CONFIG_INIT_STACK_ALL_PATTERN is not set # CONFIG_INIT_STACK_ALL_ZERO is not set # CONFIG_GCC_PLUGIN_STACKLEAK is not set @@ -9941,6 +10649,17 @@ CONFIG_INIT_STACK_NONE=y CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization + +# +# Hardening of kernel data structures +# +# CONFIG_LIST_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# CONFIG_RANDSTRUCT_FULL is not set +# CONFIG_RANDSTRUCT_PERFORMANCE is not set # end of Kernel hardening options # end of Security options @@ -9959,6 +10678,7 @@ CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y @@ -9975,7 +10695,6 @@ CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_PCRYPT=m @@ -9984,129 +10703,115 @@ CONFIG_CRYPTO_AUTHENC=m CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_SIMD=m CONFIG_CRYPTO_ENGINE=m +# end of Crypto core or helper # # Public-key cryptography # CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_DH=m +# CONFIG_CRYPTO_DH_RFC7919_GROUPS is not set CONFIG_CRYPTO_ECC=m CONFIG_CRYPTO_ECDH=m # CONFIG_CRYPTO_ECDSA is not set CONFIG_CRYPTO_ECRDSA=m CONFIG_CRYPTO_SM2=m CONFIG_CRYPTO_CURVE25519=m -CONFIG_CRYPTO_CURVE25519_X86=m +# end of Public-key cryptography # -# Authenticated Encryption with Associated Data +# Block ciphers # -CONFIG_CRYPTO_CCM=m -CONFIG_CRYPTO_GCM=m -CONFIG_CRYPTO_CHACHA20POLY1305=m -CONFIG_CRYPTO_AEGIS128=m -CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARIA=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SM4=m +CONFIG_CRYPTO_SM4_GENERIC=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +# end of Block ciphers # -# Block modes +# Length-preserving ciphers and modes # +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_CHACHA20=m CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_CFB=m CONFIG_CRYPTO_CTR=y CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_HCTR2=m +CONFIG_CRYPTO_KEYWRAP=m CONFIG_CRYPTO_LRW=y # CONFIG_CRYPTO_OFB is not set CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XCTR=m CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_KEYWRAP=m CONFIG_CRYPTO_NHPOLY1305=m -CONFIG_CRYPTO_NHPOLY1305_SSE2=m -CONFIG_CRYPTO_NHPOLY1305_AVX2=m -CONFIG_CRYPTO_ADIANTUM=m +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GENIV=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=m CONFIG_CRYPTO_ESSIV=m +# end of AEAD (authenticated encryption with associated data) ciphers # -# Hash modes +# Hashes, digests, and MACs # -CONFIG_CRYPTO_CMAC=m -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_VMAC=m - -# -# Digest -# -CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_CRC32C_INTEL=m -CONFIG_CRYPTO_CRC32=m -CONFIG_CRYPTO_CRC32_PCLMUL=m -CONFIG_CRYPTO_XXHASH=y CONFIG_CRYPTO_BLAKE2B=y -CONFIG_CRYPTO_BLAKE2S_X86=y -CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_CRCT10DIF_PCLMUL=y +CONFIG_CRYPTO_CMAC=m CONFIG_CRYPTO_GHASH=m -CONFIG_CRYPTO_POLY1305=m -CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_POLYVAL=m +CONFIG_CRYPTO_POLY1305=m CONFIG_CRYPTO_RMD160=m CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA1_SSSE3=m -CONFIG_CRYPTO_SHA256_SSSE3=m -CONFIG_CRYPTO_SHA512_SSSE3=m CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_SHA3=y CONFIG_CRYPTO_SM3=m +CONFIG_CRYPTO_SM3_GENERIC=m CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_VMAC=m CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XXHASH=y +# end of Hashes, digests, and MACs # -# Ciphers +# CRCs (cyclic redundancy checks) # -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_AES_TI=m -CONFIG_CRYPTO_AES_NI_INTEL=m -CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_ARC4=m -CONFIG_CRYPTO_BLOWFISH=m -CONFIG_CRYPTO_BLOWFISH_COMMON=m -CONFIG_CRYPTO_BLOWFISH_X86_64=m -CONFIG_CRYPTO_CAMELLIA=m -CONFIG_CRYPTO_CAMELLIA_X86_64=m -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m -CONFIG_CRYPTO_CAST_COMMON=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_CAST5_AVX_X86_64=m -CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_CAST6_AVX_X86_64=m -CONFIG_CRYPTO_DES=m -CONFIG_CRYPTO_DES3_EDE_X86_64=m -CONFIG_CRYPTO_FCRYPT=m -CONFIG_CRYPTO_KHAZAD=m -CONFIG_CRYPTO_CHACHA20=m -CONFIG_CRYPTO_CHACHA20_X86_64=m -CONFIG_CRYPTO_SEED=m -CONFIG_CRYPTO_SERPENT=m -CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m -CONFIG_CRYPTO_SERPENT_AVX_X86_64=m -CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m -CONFIG_CRYPTO_SM4=m -# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set -# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set -CONFIG_CRYPTO_TEA=m -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m -CONFIG_CRYPTO_TWOFISH_X86_64=m -CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m -CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRC64_ROCKSOFT=y +# end of CRCs (cyclic redundancy checks) # # Compression @@ -10114,20 +10819,27 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_842=y -CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4=y CONFIG_CRYPTO_LZ4HC=m CONFIG_CRYPTO_ZSTD=y +# end of Compression # -# Random Number Generation +# Random number generation # CONFIG_CRYPTO_ANSI_CPRNG=m 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_HASH=y +CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +# end of Random number generation + +# +# Userspace interface +# CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m @@ -10136,7 +10848,50 @@ CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_USER_API_AEAD=m CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y # CONFIG_CRYPTO_STATS is not set +# end of Userspace interface + CONFIG_CRYPTO_HASH_INFO=y + +# +# Accelerated Cryptographic Algorithms for CPU (x86) +# +CONFIG_CRYPTO_CURVE25519_X86=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64=m +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_AVX2=m +CONFIG_CRYPTO_BLAKE2S_X86=y +CONFIG_CRYPTO_POLYVAL_CLMUL_NI=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SM3_AVX_X86_64=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=y +# end of Accelerated Cryptographic Algorithms for CPU (x86) + CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m @@ -10150,6 +10905,8 @@ CONFIG_CRYPTO_DEV_SP_CCP=y CONFIG_CRYPTO_DEV_CCP_CRYPTO=m CONFIG_CRYPTO_DEV_SP_PSP=y # CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m CONFIG_CRYPTO_DEV_QAT=m CONFIG_CRYPTO_DEV_QAT_DH895xCC=m CONFIG_CRYPTO_DEV_QAT_C3XXX=m @@ -10158,8 +10915,6 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m CONFIG_CRYPTO_DEV_QAT_C62XVF=m -CONFIG_CRYPTO_DEV_NITROX=m -CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m CONFIG_CRYPTO_DEV_CHELSIO=m CONFIG_CRYPTO_DEV_VIRTIO=m CONFIG_CRYPTO_DEV_SAFEXCEL=m @@ -10167,13 +10922,12 @@ CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m # CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set CONFIG_ASYMMETRIC_KEY_TYPE=y CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m CONFIG_X509_CERTIFICATE_PARSER=y CONFIG_PKCS8_PRIVATE_KEY_PARSER=m -CONFIG_TPM_KEY_PARSER=m CONFIG_PKCS7_MESSAGE_PARSER=y # CONFIG_PKCS7_TEST_KEY is not set CONFIG_SIGNED_PE_FILE_VERIFICATION=y +# CONFIG_FIPS_SIGNATURE_SELFTEST is not set # # Certificates for signature checking @@ -10198,7 +10952,6 @@ CONFIG_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y -CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_CORDIC=m # CONFIG_PRIME_NUMBERS is not set CONFIG_RATIONAL=y @@ -10211,8 +10964,10 @@ CONFIG_ARCH_USE_SYM_ANNOTATIONS=y # # Crypto library routines # +CONFIG_CRYPTO_LIB_UTILS=y CONFIG_CRYPTO_LIB_AES=y CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m @@ -10227,14 +10982,14 @@ CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m CONFIG_CRYPTO_LIB_POLY1305=m CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_SHA1=y CONFIG_CRYPTO_LIB_SHA256=y -CONFIG_CRYPTO_LIB_SM4=m # end of Crypto library routines -CONFIG_LIB_MEMNEQ=y CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y +CONFIG_CRC64_ROCKSOFT=y CONFIG_CRC_ITU_T=m CONFIG_CRC32=y # CONFIG_CRC32_SELFTEST is not set @@ -10255,9 +11010,10 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4_COMPRESS=y CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y @@ -10267,6 +11023,7 @@ CONFIG_XZ_DEC_IA64=y CONFIG_XZ_DEC_ARM=y CONFIG_XZ_DEC_ARMTHUMB=y CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_MICROLZMA=y CONFIG_XZ_DEC_BCJ=y # CONFIG_XZ_DEC_TEST is not set CONFIG_DECOMPRESS_GZIP=y @@ -10291,15 +11048,19 @@ CONFIG_INTERVAL_TREE=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_FLAGS=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y CONFIG_SWIOTLB=y +# CONFIG_SWIOTLB_DYNAMIC is not set CONFIG_DMA_CMA=y -# CONFIG_DMA_PERNUMA_CMA is not set +# CONFIG_DMA_NUMA_CMA is not set # # Default contiguous memory area size: @@ -10315,6 +11076,7 @@ CONFIG_CMA_ALIGNMENT=8 CONFIG_SGL_ALLOC=y CONFIG_IOMMU_HELPER=y CONFIG_CHECK_SIGNATURE=y +# CONFIG_FORCE_NR_CPUS is not set CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_GLOB=y @@ -10337,9 +11099,11 @@ CONFIG_FONT_8x16=y CONFIG_SG_POOL=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_MEMREGION=y +CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y CONFIG_ARCH_HAS_COPY_MC=y CONFIG_ARCH_STACKWALK=y +CONFIG_STACKDEPOT=y CONFIG_SBITMAP=y CONFIG_PARMAN=m CONFIG_OBJAGG=m @@ -10368,12 +11132,17 @@ CONFIG_SYMBOLIC_ERRNAME=y CONFIG_DEBUG_BUGVERBOSE=y # end of printk and dmesg options -CONFIG_AS_HAS_NON_CONST_LEB128=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y # # Compile-time checks and compiler options # -# CONFIG_DEBUG_INFO is not set +CONFIG_AS_HAS_NON_CONST_LEB128=y +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set CONFIG_FRAME_WARN=2048 CONFIG_STRIP_ASM_SYMS=y # CONFIG_READABLE_ASM is not set @@ -10381,7 +11150,7 @@ CONFIG_STRIP_ASM_SYMS=y CONFIG_DEBUG_SECTION_MISMATCH=y CONFIG_SECTION_MISMATCH_WARN_ONLY=y # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set -CONFIG_STACK_VALIDATION=y +CONFIG_OBJTOOL=y # CONFIG_VMLINUX_MAP is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # end of Compile-time checks and compiler options @@ -10406,15 +11175,23 @@ CONFIG_HAVE_KCSAN_COMPILER=y # CONFIG_KCSAN is not set # end of Generic Kernel Debugging Instruments -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_MISC=y +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# end of Networking Debugging # # Memory Debugging # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set # CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set CONFIG_DEBUG_RODATA_TEST=y @@ -10423,11 +11200,11 @@ CONFIG_DEBUG_WX=y CONFIG_GENERIC_PTDUMP=y CONFIG_PTDUMP_CORE=y # CONFIG_PTDUMP_DEBUGFS is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_SLUB_STATS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_SCHED_STACK_END_CHECK is not set CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y @@ -10446,7 +11223,13 @@ CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y # CONFIG_KASAN is not set CONFIG_HAVE_ARCH_KFENCE=y -# CONFIG_KFENCE is not set +CONFIG_KFENCE=y +CONFIG_KFENCE_SAMPLE_INTERVAL=0 +CONFIG_KFENCE_NUM_OBJECTS=255 +# CONFIG_KFENCE_DEFERRABLE is not set +# CONFIG_KFENCE_STATIC_KEYS is not set +CONFIG_KFENCE_STRESS_TEST_FAULTS=0 +CONFIG_HAVE_ARCH_KMSAN=y # end of Memory Debugging # CONFIG_DEBUG_SHIRQ is not set @@ -10457,14 +11240,23 @@ CONFIG_HAVE_ARCH_KFENCE=y # CONFIG_PANIC_ON_OOPS is not set CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 -# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +# CONFIG_HARDLOCKUP_DETECTOR_BUDDY is not set +# CONFIG_HARDLOCKUP_DETECTOR_ARCH is not set +CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER=y CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y -# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set 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_WQ_CPU_INTENSIVE_REPORT is not set # CONFIG_TEST_LOCKUP is not set # end of Debug Oops, Lockups and Hangs @@ -10477,6 +11269,7 @@ CONFIG_SCHEDSTATS=y # end of Scheduler Debugging CONFIG_DEBUG_TIMEKEEPING=y +# CONFIG_DEBUG_PREEMPT is not set # # Lock Debugging (spinlocks, mutexes, etc...) @@ -10498,6 +11291,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_CSD_LOCK_WAIT_DEBUG is not set # end of Lock Debugging (spinlocks, mutexes, etc...) +# CONFIG_NMI_CHECK_CPU is not set # CONFIG_DEBUG_IRQFLAGS is not set CONFIG_STACKTRACE=y # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set @@ -10510,7 +11304,7 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures # CONFIG_DEBUG_CREDENTIALS is not set @@ -10522,6 +11316,8 @@ CONFIG_STACKTRACE=y # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_REF_SCALE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set # CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set # end of RCU Debugging @@ -10529,19 +11325,27 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set CONFIG_LATENCYTOP=y +# CONFIG_DEBUG_CGROUP_REF is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y +CONFIG_HAVE_RETHOOK=y +CONFIG_RETHOOK=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_FENTRY=y CONFIG_HAVE_OBJTOOL_MCOUNT=y +CONFIG_HAVE_OBJTOOL_NOP_MCOUNT=y CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y +CONFIG_BUILDTIME_MCOUNT_SORT=y CONFIG_TRACER_MAX_TRACE=y CONFIG_TRACE_CLOCK=y CONFIG_RING_BUFFER=y @@ -10552,16 +11356,19 @@ CONFIG_TRACING=y CONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=y CONFIG_FTRACE=y -# CONFIG_BOOTTIME_TRACING is not set +CONFIG_BOOTTIME_TRACING=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_GRAPH_RETVAL=y CONFIG_DYNAMIC_FTRACE=y CONFIG_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y +# CONFIG_FPROBE is not set CONFIG_FUNCTION_PROFILER=y CONFIG_STACK_TRACER=y # CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y # CONFIG_HWLAT_TRACER is not set # CONFIG_OSNOISE_TRACER is not set @@ -10583,6 +11390,7 @@ CONFIG_PROBE_EVENTS=y CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_FTRACE_MCOUNT_USE_CC=y # CONFIG_SYNTH_EVENTS is not set +# CONFIG_USER_EVENTS is not set # CONFIG_HIST_TRIGGERS is not set # CONFIG_TRACE_EVENT_INJECT is not set # CONFIG_TRACEPOINT_BENCHMARK is not set @@ -10590,13 +11398,17 @@ CONFIG_RING_BUFFER_BENCHMARK=m # CONFIG_TRACE_EVAL_MAP_FILE is not set # CONFIG_FTRACE_RECORD_RECURSION is not set # CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_FTRACE_SORT_STARTUP_TEST is not set # CONFIG_RING_BUFFER_STARTUP_TEST is not set # CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set # CONFIG_MMIOTRACE_TEST is not set # CONFIG_PREEMPTIRQ_DELAY_TEST is not set # CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_RV is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y CONFIG_STRICT_DEVMEM=y CONFIG_IO_STRICT_DEVMEM=y @@ -10626,7 +11438,6 @@ CONFIG_X86_DEBUG_FPU=y CONFIG_PUNIT_ATOM_DEBUG=m CONFIG_UNWINDER_ORC=y # CONFIG_UNWINDER_FRAME_POINTER is not set -# CONFIG_UNWINDER_GUESS is not set # end of x86 Debugging # @@ -10642,11 +11453,12 @@ CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y # CONFIG_KCOV is not set CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_TEST_DHRY is not set # CONFIG_LKDTM is not set # CONFIG_TEST_MIN_HEAP is not set # CONFIG_TEST_DIV64 is not set -# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER is not set CONFIG_RBTREE_TEST=m # CONFIG_REED_SOLOMON_TEST is not set # CONFIG_INTERVAL_TREE_TEST is not set @@ -10656,16 +11468,14 @@ CONFIG_ASYNC_RAID6_TEST=m CONFIG_TEST_HEXDUMP=m # CONFIG_STRING_SELFTEST is not set # CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_TEST_STRSCPY is not set CONFIG_TEST_KSTRTOX=y CONFIG_TEST_PRINTF=m # CONFIG_TEST_SCANF is not set # CONFIG_TEST_BITMAP is not set # CONFIG_TEST_UUID is not set CONFIG_TEST_XARRAY=m -# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_MAPLE_TREE is not set # CONFIG_TEST_RHASHTABLE is not set -# CONFIG_TEST_HASH is not set # CONFIG_TEST_IDA is not set # CONFIG_TEST_PARMAN is not set # CONFIG_TEST_LKM is not set @@ -10679,12 +11489,13 @@ CONFIG_TEST_XARRAY=m # CONFIG_TEST_SYSCTL is not set # CONFIG_TEST_UDELAY is not set # CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_DYNAMIC_DEBUG is not set # CONFIG_TEST_KMOD is not set # CONFIG_TEST_MEMCAT_P is not set # CONFIG_TEST_LIVEPATCH is not set # CONFIG_TEST_OBJAGG is not set -# CONFIG_TEST_STACKINIT is not set # CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_HMM is not set # CONFIG_TEST_FREE_PAGES is not set # CONFIG_TEST_FPU is not set # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set @@ -10692,4 +11503,9 @@ CONFIG_ARCH_USE_MEMTEST=y CONFIG_MEMTEST=y # CONFIG_HYPERV_TESTING is not set # end of Kernel Testing and Coverage + +# +# Rust hacking +# +# end of Rust hacking # end of Kernel hacking diff --git a/kernel/kernel/files/configs/kernel5-x86_64-config b/kernel/kernel/files/configs/kernel5-x86_64-config new file mode 100644 index 00000000..03cfba32 --- /dev/null +++ b/kernel/kernel/files/configs/kernel5-x86_64-config @@ -0,0 +1,10695 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86_64 5.15.158 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="gcc (Pisi Linux) 12.2.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=120200 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24000 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=24000 +CONFIG_LLD_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR 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 +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_ZSTD is not set +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_WATCH_QUEUE=y +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_IRQ_INJECTION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_SIM=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_IRQ_MSI_IOMMU=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +# CONFIG_NO_HZ_IDLE is not set +CONFIG_NO_HZ_FULL=y +CONFIG_CONTEXT_TRACKING=y +# CONFIG_CONTEXT_TRACKING_FORCE is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +# CONFIG_BPF_PRELOAD is not set +CONFIG_BPF_LSM=y +# end of BPF subsystem + +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +# CONFIG_SCHED_CORE is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_NOCB_CPU=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +# CONFIG_PRINTK_INDEX is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=5 +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_ARCH_SUPPORTS_INT128=y +# CONFIG_NUMA_BALANCING is not set +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# CONFIG_BOOT_CONFIG is not set +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK 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 is not set +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +# 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_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_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=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_NR_GPIO=1024 +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_AUDIT_ARCH=y +CONFIG_HAVE_INTEL_TXT=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_SMP=y +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_X2APIC=y +CONFIG_X86_MPPARSE=y +# CONFIG_GOLDFISH is not set +CONFIG_X86_CPU_RESCTRL=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_NUMACHIP is not set +# CONFIG_X86_VSMP is not set +# CONFIG_X86_UV is not set +# CONFIG_X86_GOLDFISH is not set +# CONFIG_X86_INTEL_MID is not set +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_XXL=y +# CONFIG_PARAVIRT_DEBUG is not set +# CONFIG_PARAVIRT_SPINLOCKS is not set +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_XEN=y +CONFIG_XEN_PV=y +CONFIG_XEN_512GB=y +CONFIG_XEN_PV_SMP=y +CONFIG_XEN_PV_DOM0=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_PVHVM_GUEST=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_DEBUG_FS=y +CONFIG_XEN_PVH=y +CONFIG_XEN_DOM0=y +CONFIG_KVM_GUEST=y +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_PVH=y +CONFIG_PARAVIRT_TIME_ACCOUNTING=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_JAILHOUSE_GUEST is not set +CONFIG_ACRN_GUEST=y +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_IA32_FEAT_CTL=y +CONFIG_X86_VMX_FEATURE_NAMES=y +# CONFIG_PROCESSOR_SELECT is not set +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +# 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=128 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=m +CONFIG_PERF_EVENTS_INTEL_RAPL=m +CONFIG_PERF_EVENTS_INTEL_CSTATE=m +CONFIG_PERF_EVENTS_AMD_POWER=m +CONFIG_PERF_EVENTS_AMD_UNCORE=y +# end of Performance monitoring + +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_IOPL_IOPERM=y +CONFIG_I8K=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +# CONFIG_MICROCODE_LATE_LOADING is not set +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +# CONFIG_X86_5LEVEL is not set +CONFIG_X86_DIRECT_GBPAGES=y +# CONFIG_X86_CPA_STATISTICS is not set +# CONFIG_AMD_MEM_ENCRYPT is not set +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +# CONFIG_NUMA_EMU is not set +CONFIG_NODES_SHIFT=10 +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +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_UMIP=y +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +# CONFIG_X86_INTEL_TSX_MODE_OFF is not set +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +CONFIG_X86_INTEL_TSX_MODE_AUTO=y +# CONFIG_X86_SGX is not set +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_MIXED=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=y +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +CONFIG_KEXEC_JUMP=y +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_DYNAMIC_MEMORY_LAYOUT=y +CONFIG_RANDOMIZE_MEMORY=y +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +# CONFIG_COMPAT_VDSO is not set +# CONFIG_LEGACY_VSYSCALL_EMULATE is not set +CONFIG_LEGACY_VSYSCALL_XONLY=y +# CONFIG_LEGACY_VSYSCALL_NONE is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_HAVE_LIVEPATCH=y +CONFIG_LIVEPATCH=y +# end of Processor type and features + +CONFIG_CC_HAS_SLS=y +CONFIG_CC_HAS_RETURN_THUNK=y +CONFIG_CPU_MITIGATIONS=y +CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_RETPOLINE=y +CONFIG_RETHUNK=y +CONFIG_CPU_UNRET_ENTRY=y +CONFIG_CPU_IBPB_ENTRY=y +CONFIG_CPU_IBRS_ENTRY=y +CONFIG_CPU_SRSO=y +# CONFIG_SLS is not set +# CONFIG_GDS_FORCE_MITIGATION is not set +CONFIG_MITIGATION_RFDS=y +CONFIG_MITIGATION_SPECTRE_BHI=y +CONFIG_ARCH_HAS_ADD_PAGES=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_ADVANCED_DEBUG is not set +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +# CONFIG_ENERGY_MODEL is not set +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +# CONFIG_ACPI_FPDT is not set +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +# CONFIG_ACPI_TINY_POWER_BUTTON is not set +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_TAD=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_PLATFORM_PROFILE=m +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_HOTPLUG_MEMORY is not set +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_HED=y +# CONFIG_ACPI_CUSTOM_METHOD is not set +CONFIG_ACPI_BGRT=y +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ACPI_NFIT=m +# CONFIG_NFIT_SECURITY_DEBUG is not set +CONFIG_ACPI_NUMA=y +# CONFIG_ACPI_HMAT is not set +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_EINJ=m +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +CONFIG_ACPI_DPTF=y +CONFIG_DPTF_POWER=m +CONFIG_DPTF_PCH_FIVR=m +CONFIG_ACPI_WATCHDOG=y +CONFIG_ACPI_EXTLOG=m +CONFIG_ACPI_ADXL=y +CONFIG_ACPI_CONFIGFS=m +CONFIG_PMIC_OPREGION=y +CONFIG_BYTCRC_PMIC_OPREGION=y +CONFIG_CHTCRC_PMIC_OPREGION=y +# CONFIG_XPOWER_PMIC_OPREGION is not set +CONFIG_CHT_WC_PMIC_OPREGION=y +CONFIG_CHT_DC_TI_PMIC_OPREGION=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_PRMT=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_P4_CLOCKMOD=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m +# end of CPU Frequency scaling + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_GOV_TEO=y +CONFIG_CPU_IDLE_GOV_HALTPOLL=y +CONFIG_HALTPOLL_CPUIDLE=m +# end of CPU Idle + +CONFIG_INTEL_IDLE=y +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_XEN=y +CONFIG_MMCONF_FAM10H=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +CONFIG_ISA_BUS=y +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_IA32_EMULATION=y +CONFIG_X86_X32=y +CONFIG_COMPAT_32=y +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +# end of Binary Emulations + +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_COMPAT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_KVM_XFER_TO_GUEST_WORK=y +CONFIG_HAVE_KVM_PM_NOTIFIER=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +CONFIG_KVM_WERROR=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +CONFIG_KVM_AMD_SEV=y +# CONFIG_KVM_XEN is not set +CONFIG_KVM_MMU_AUDIT=y +CONFIG_AS_AVX512=y +CONFIG_AS_SHA1_NI=y +CONFIG_AS_SHA256_NI=y +CONFIG_AS_TPAUSE=y + +# +# External 3rdparty kernel additions +# +CONFIG_NDISWRAPPER=m +CONFIG_RTL8821CE=m +CONFIG_RTL8812AU=m +# CONFIG_RTL8723DE is not set +CONFIG_VIAHSS=m +# end of External 3rdparty kernel additions + +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +CONFIG_HOTPLUG_SMT=y +CONFIG_GENERIC_ENTRY=y +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +# CONFIG_STATIC_CALL_SELFTEST is not set +CONFIG_OPTPROBES=y +CONFIG_KPROBES_ON_FTRACE=y +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_KRETPROBES=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_IOREMAP_PROT=y +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_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=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_ARCH_HAS_CPU_FINALIZE_INIT=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_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_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_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_HAVE_SOFTIRQ_ON_OWN_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=28 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_ISA_BUS_API=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +CONFIG_LOCK_EVENT_COUNTS=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_HAVE_STATIC_CALL=y +CONFIG_HAVE_STATIC_CALL_INLINE=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_HAS_ELFCORE_COMPAT=y +CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set +CONFIG_FUNCTION_ALIGNMENT_4B=y +CONFIG_FUNCTION_ALIGNMENT_16B=y +CONFIG_FUNCTION_ALIGNMENT=16 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=y +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_FC_APPID is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_MQ_RDMA=y +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set +# end of IO Schedulers + +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=m +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MHP_MEMMAP_ON_MEMORY=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_VIRT_TO_BUS=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +# CONFIG_HWPOISON_INJECT is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_THP_SWAP=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_MEM_SOFT_DIRTY is not set +CONFIG_ZSWAP=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y +# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set +# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" +# CONFIG_ZSWAP_DEFAULT_ON is not set +CONFIG_ZPOOL=y +CONFIG_ZBUD=y +CONFIG_Z3FOLD=m +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DEVICE=y +CONFIG_DEV_PAGEMAP_OPS=y +CONFIG_HMM_MIRROR=y +# CONFIG_DEVICE_PRIVATE is not set +CONFIG_VMAP_PFN=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +CONFIG_READ_ONLY_THP_FOR_FS=y +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MAPPING_DIRTY_HELPERS=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_REDIRECT=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_AF_UNIX_OOB=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +# CONFIG_TLS_DEVICE is not set +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_USER_COMPAT is not set +# CONFIG_XFRM_INTERFACE is not set +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +CONFIG_XFRM_ESPINTCP=y +# CONFIG_SMC is not set +CONFIG_XDP_SOCKETS=y +CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +# CONFIG_INET_ESP_OFFLOAD is not set +CONFIG_INET_ESPINTCP=y +CONFIG_INET_IPCOMP=m +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +# 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=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_ESPINTCP=y +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +CONFIG_IPV6_RPL_LWTUNNEL=y +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +CONFIG_NETLABEL=y +CONFIG_MPTCP=y +CONFIG_INET_MPTCP_DIAG=y +CONFIG_MPTCP_IPV6=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +# CONFIG_NETFILTER_NETLINK_HOOK is not set +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +# CONFIG_NF_TABLES_INET is not set +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +# CONFIG_NFT_REJECT_NETDEV is not set +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NF_FLOW_TABLE_PROCFS=y +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XTABLES_COMPAT=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_DEBUG=y +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +# CONFIG_IP_VS_TWOS is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_FLOW_TABLE_IPV4=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=y +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_FLOW_TABLE_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +# CONFIG_BPFILTER is not set +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y +# end of DCCP CCIDs Configuration + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +# end of DCCP Kernel Hacking + +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_INET_SCTP_DIAG=m +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TIPC_CRYPTO=y +CONFIG_TIPC_DIAG=m +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_MRP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BRIDGE_MRP=y +# CONFIG_BRIDGE_CFM is not set +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_AR9331=m +CONFIG_NET_DSA_TAG_BRCM_COMMON=m +CONFIG_NET_DSA_TAG_BRCM=m +CONFIG_NET_DSA_TAG_BRCM_LEGACY=m +CONFIG_NET_DSA_TAG_BRCM_PREPEND=m +# CONFIG_NET_DSA_TAG_HELLCREEK is not set +CONFIG_NET_DSA_TAG_GSWIP=m +CONFIG_NET_DSA_TAG_DSA_COMMON=m +CONFIG_NET_DSA_TAG_DSA=m +CONFIG_NET_DSA_TAG_EDSA=m +CONFIG_NET_DSA_TAG_MTK=m +CONFIG_NET_DSA_TAG_KSZ=m +CONFIG_NET_DSA_TAG_RTL4_A=m +CONFIG_NET_DSA_TAG_OCELOT=m +# CONFIG_NET_DSA_TAG_OCELOT_8021Q is not set +CONFIG_NET_DSA_TAG_QCA=m +CONFIG_NET_DSA_TAG_LAN9303=m +CONFIG_NET_DSA_TAG_SJA1105=m +CONFIG_NET_DSA_TAG_TRAILER=m +# CONFIG_NET_DSA_TAG_XRS700X is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_X25=m +CONFIG_LAPB=m +CONFIG_PHONET=m +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m +CONFIG_6LOWPAN_GHC_UDP=m +CONFIG_6LOWPAN_GHC_ICMPV6=m +CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m +CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m +CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_SKBPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +# CONFIG_NET_SCH_FQ_PIE is not set +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_ETS=m +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_MPLS=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CTINFO=m +# CONFIG_NET_ACT_SKBMOD is not set +CONFIG_NET_ACT_IFE=m +# CONFIG_NET_ACT_TUNNEL_KEY is not set +CONFIG_NET_ACT_CT=m +CONFIG_NET_ACT_GATE=m +CONFIG_NET_IFE_SKBMARK=m +CONFIG_NET_IFE_SKBPRIO=m +CONFIG_NET_IFE_SKBTCINDEX=m +CONFIG_NET_TC_SKB_EXT=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=y +CONFIG_BATMAN_ADV=m +# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_NC is not set +# CONFIG_BATMAN_ADV_MCAST is not set +# CONFIG_BATMAN_ADV_DEBUG is not set +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS_COMMON=m +CONFIG_HYPERV_VSOCKETS=m +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=y +CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m +CONFIG_NET_NSH=m +CONFIG_HSR=m +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_QRTR=m +# CONFIG_QRTR_SMD is not set +CONFIG_QRTR_TUN=m +CONFIG_QRTR_MHI=m +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_STREAM_PARSER=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_DROP_MONITOR=y +# end of Network testing +# end of Networking options + +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +# end of AX.25 network device drivers + +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set + +# +# CAN Device Drivers +# +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_DEV=m +# CONFIG_CAN_CALC_BITTIMING is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_IFI_CANFD=m +CONFIG_CAN_M_CAN=m +# CONFIG_CAN_M_CAN_PCI is not set +# CONFIG_CAN_M_CAN_PLATFORM is not set +# CONFIG_CAN_M_CAN_TCAN4X5X is not set +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +# CONFIG_CAN_F81601 is not set +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_SJA1000_ISA=m +# CONFIG_CAN_SJA1000_PLATFORM is not set +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +CONFIG_CAN_MCP251X=m +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +# CONFIG_CAN_ETAS_ES58X is not set +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +# CONFIG_CAN_MCBA_USB is not set +CONFIG_CAN_PEAK_USB=m +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +# end of CAN Device Drivers + +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HS=y +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_LEDS=y +CONFIG_BT_MSFTEXT=y +# CONFIG_BT_AOSPEXT is not set +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_QCA=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_NOKIA is not set +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +CONFIG_BT_MTKUART=m +CONFIG_BT_HCIRSI=m +# CONFIG_BT_VIRTIO is not set +# end of Bluetooth device drivers + +CONFIG_AF_RXRPC=m +CONFIG_AF_RXRPC_IPV6=y +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_DEBUG is not set +# CONFIG_RXKAD is not set +CONFIG_AF_KCM=m +CONFIG_STREAM_PARSER=y +# CONFIG_MCTP is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +CONFIG_MAC80211_MESSAGE_TRACING=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_XEN=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_CAIF=m +# CONFIG_CAIF_DEBUG is not set +CONFIG_CAIF_NETDEV=m +CONFIG_CAIF_USB=m +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_NCI=m +# CONFIG_NFC_NCI_SPI is not set +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_HCI=m +CONFIG_NFC_SHDLC=y + +# +# Near Field Communication (NFC) devices +# +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m +# CONFIG_NFC_VIRTUAL_NCI is not set +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN533_USB=m +CONFIG_NFC_PN533_I2C=m +# CONFIG_NFC_PN532_UART is not set +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MICROREAD_MEI=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +# CONFIG_NFC_NXP_NCI is not set +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +# CONFIG_NFC_S3FWRN82_UART is not set +CONFIG_NFC_ST95HF=m +# end of Near Field Communication (NFC) devices + +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_NET_DEVLINK=y +CONFIG_PAGE_POOL=y +CONFIG_FAILOVER=m +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_HAVE_EISA=y +# CONFIG_EISA is not set +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIE_ECRC=y +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +CONFIG_PCIE_DPC=y +# CONFIG_PCIE_PTM is not set +# CONFIG_PCIE_EDR is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +CONFIG_PCI_STUB=y +# CONFIG_PCI_PF_STUB is not set +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_PCI_ATS=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_IOV=y +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +CONFIG_PCI_P2PDMA=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_HYPERV=m +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# PCI controller drivers +# +CONFIG_VMD=m +CONFIG_PCI_HYPERV_INTERFACE=m + +# +# DesignWare PCI Core Support +# +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y +CONFIG_PCIE_DW_PLAT=y +CONFIG_PCIE_DW_PLAT_HOST=y +# CONFIG_PCI_MESON is not set +# end of DesignWare PCI Core Support + +# +# Mobiveil PCIe Core Support +# +# end of Mobiveil PCIe Core Support + +# +# Cadence PCIe controllers support +# +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_CXL_BUS is not set +CONFIG_PCCARD=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=y +CONFIG_RAPIDIO=y +CONFIG_RAPIDIO_TSI721=y +CONFIG_RAPIDIO_DISC_TIMEOUT=30 +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_DMA_ENGINE=y +# CONFIG_RAPIDIO_DEBUG is not set +CONFIG_RAPIDIO_ENUM_BASIC=m +CONFIG_RAPIDIO_CHMAN=m +CONFIG_RAPIDIO_MPORT_CDEV=m + +# +# RapidIO Switch drivers +# +CONFIG_RAPIDIO_TSI57X=y +CONFIG_RAPIDIO_CPS_XX=y +CONFIG_RAPIDIO_TSI568=y +CONFIG_RAPIDIO_CPS_GEN2=y +CONFIG_RAPIDIO_RXS_GEN3=y +# end of RapidIO Switch drivers + +# +# Generic Driver Options +# +CONFIG_AUXILIARY_BUS=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_CACHE=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SOUNDWIRE=m +CONFIG_REGMAP_SCCB=m +CONFIG_REGMAP_SPI_AVMM=m +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +# end of Generic Driver Options + +# +# Bus devices +# +CONFIG_MHI_BUS=m +# CONFIG_MHI_BUS_DEBUG is not set +# CONFIG_MHI_BUS_PCI_GENERIC is not set +# end of Bus devices + +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +CONFIG_EDD=y +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_SYSFB=y +# CONFIG_SYSFB_SIMPLEFB is not set +CONFIG_GOOGLE_FIRMWARE=y +CONFIG_GOOGLE_SMI=m +CONFIG_GOOGLE_COREBOOT_TABLE=m +CONFIG_GOOGLE_MEMCONSOLE=m +# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set +# CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT is not set +CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m +CONFIG_GOOGLE_VPD=m + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_VARS=y +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=y +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y +CONFIG_EFI_RUNTIME_MAP=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y +CONFIG_EFI_BOOTLOADER_CONTROL=m +CONFIG_EFI_CAPSULE_LOADER=m +# CONFIG_EFI_TEST is not set +CONFIG_APPLE_PROPERTIES=y +# CONFIG_RESET_ATTACK_MITIGATION is not set +CONFIG_EFI_RCI2_TABLE=y +# CONFIG_EFI_DISABLE_PCI_DMA is not set +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_EFI_EMBEDDED_FIRMWARE=y +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_X86=y +CONFIG_EFI_DEV_PATH_PARSER=y +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +CONFIG_MTD=m +CONFIG_MTD_TESTS=m + +# +# Partition parsers +# +CONFIG_MTD_AR7_PARTS=m +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +CONFIG_FTL=m +CONFIG_NFTL=m +# CONFIG_NFTL_RW is not set +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_SM_FTL=m +CONFIG_MTD_OOPS=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_GPIO_ADDR=y +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DATAFLASH_OTP is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 is not set +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOCG3=m +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_T=4 +# end of Self-contained MTD device drivers + +# +# NAND +# +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_ONENAND=m +# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set +# CONFIG_MTD_ONENAND_GENERIC is not set +CONFIG_MTD_ONENAND_OTP=y +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_RAW_NAND=m + +# +# Raw/parallel NAND flash controllers +# +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_MXIC=m +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_ARASAN=m + +# +# Misc +# +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y +CONFIG_MTD_SPI_NAND=m + +# +# ECC engine support +# +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_ECC_SW_HAMMING=y +CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y +CONFIG_MTD_NAND_ECC_SW_BCH=y +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=m +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_SPI_INTEL_SPI_PCI is not set +# CONFIG_SPI_INTEL_SPI_PLATFORM is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +CONFIG_MTD_HYPERBUS=m +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_AX88796 is not set +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_FD_RAWCMD is not set +CONFIG_CDROM=y +CONFIG_PARIDE=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_ZRAM=m +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_842 is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=m +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_VIRTIO_BLK=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_RSXX=m +# CONFIG_BLK_DEV_RNBD_CLIENT is not set +# CONFIG_BLK_DEV_RNBD_SERVER is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_MULTIPATH is not set +CONFIG_NVME_FABRICS=m +CONFIG_NVME_RDMA=m +CONFIG_NVME_FC=m +CONFIG_NVME_TCP=m +CONFIG_NVME_TARGET=m +CONFIG_NVME_TARGET_PASSTHRU=y +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_FC=m +# CONFIG_NVME_TARGET_FCLOOP is not set +CONFIG_NVME_TARGET_TCP=m +# end of NVME Support + +# +# Misc devices +# +CONFIG_SENSORS_LIS3LV02D=m +# CONFIG_AD525X_DPOT is not set +CONFIG_DUMMY_IRQ=m +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_APDS9802ALS=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_APDS990X=m +CONFIG_HMC6352=m +CONFIG_DS1682=m +CONFIG_VMWARE_BALLOON=m +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_SRAM=y +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +CONFIG_MISC_RTSX=m +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=y +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_EE1004=m +# end of EEPROM support + +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y + +# +# Texas Instruments shared transport line discipline +# +CONFIG_TI_ST=m +# end of Texas Instruments shared transport line discipline + +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=y +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_HDCP=m +CONFIG_VMWARE_VMCI=m +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=1 +CONFIG_ECHO=m +# CONFIG_BCM_VK is not set +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MISC_RTSX_USB=m +# CONFIG_HABANA_AI is not set +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_BLK_DEV_BSG=y +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SRP_ATTRS=m +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=4 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=4 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +CONFIG_AIC94XX_DEBUG=y +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVSAS_DEBUG=y +CONFIG_SCSI_MVSAS_TASKLET=y +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ESAS2R=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPI3MR=m +CONFIG_SCSI_SMARTPQI=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFS_DWC_TC_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +CONFIG_SCSI_UFS_CDNS_PLATFORM=m +CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m +CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFS_CRYPTO=y +# CONFIG_SCSI_UFS_HPB is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_MYRS=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_HYPERV_STORAGE=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_FDOMAIN=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_QEDI=m +CONFIG_QEDF=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_EFCT=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_WD719X=y +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_PATA_TIMINGS=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_ZPODD=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_INIC162X=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SX4=m +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +# CONFIG_SATA_DWC is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m + +# +# PATA SFF controllers with BMDMA +# +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +CONFIG_PATA_HPT3X3_DMA=y +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m + +# +# PIO-only SFF controllers +# +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_PCMCIA=m +# CONFIG_PATA_PLATFORM is not set +CONFIG_PATA_RZ1000=m + +# +# Generic fallback / legacy drivers +# +CONFIG_PATA_ACPI=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_LEGACY=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +CONFIG_MD_CLUSTER=m +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +CONFIG_BCACHE_ASYNC_REGISTRATION=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +CONFIG_DM_DEBUG=y +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_UNSTRIPED=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +CONFIG_DM_EBS=m +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_MULTIPATH_HST=m +# CONFIG_DM_MULTIPATH_IOA is not set +# CONFIG_DM_DELAY is not set +CONFIG_DM_DUST=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_FEC=y +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m +CONFIG_LOOPBACK_TARGET=m +CONFIG_TCM_FC=m +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TARGET_CXGB4=m +CONFIG_SBP_TARGET=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y + +# +# IEEE 1394 (FireWire) support +# +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +# end of IEEE 1394 (FireWire) support + +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_EQUALIZER=m +CONFIG_NET_FC=y +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=y +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m +CONFIG_GENEVE=m +CONFIG_BAREUDP=m +CONFIG_GTP=m +CONFIG_MACSEC=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NTB_NETDEV=m +CONFIG_RIONET=m +CONFIG_RIONET_TX_SIZE=128 +CONFIG_RIONET_RX_SIZE=128 +CONFIG_TUN=m +CONFIG_TAP=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_NET_VRF=m +CONFIG_VSOCKMON=m +# CONFIG_MHI_NET is not set +CONFIG_SUNGEM_PHY=m +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ATM_DRIVERS=y +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATM_NICSTAR is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_USE_TASKLET=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +# CONFIG_CAIF_DRIVERS is not set + +# +# Distributed Switch Architecture drivers +# +CONFIG_B53=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_B53_SERDES=m +CONFIG_NET_DSA_BCM_SF2=m +# CONFIG_NET_DSA_LOOP is not set +# CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK is not set +CONFIG_NET_DSA_LANTIQ_GSWIP=m +# CONFIG_NET_DSA_MT7530 is not set +CONFIG_NET_DSA_MV88E6060=m +# CONFIG_NET_DSA_MICROCHIP_KSZ9477 is not set +# CONFIG_NET_DSA_MICROCHIP_KSZ8795 is not set +CONFIG_NET_DSA_MV88E6XXX=m +# CONFIG_NET_DSA_MV88E6XXX_PTP is not set +# CONFIG_NET_DSA_MSCC_SEVILLE is not set +# CONFIG_NET_DSA_AR9331 is not set +# CONFIG_NET_DSA_SJA1105 is not set +# CONFIG_NET_DSA_XRS700X_I2C is not set +# CONFIG_NET_DSA_XRS700X_MDIO is not set +CONFIG_NET_DSA_QCA8K=m +# CONFIG_NET_DSA_REALTEK_SMI is not set +# CONFIG_NET_DSA_SMSC_LAN9303_I2C is not set +# CONFIG_NET_DSA_SMSC_LAN9303_MDIO is not set +# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set +# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_NET_VENDOR_AGERE=y +CONFIG_ET131X=m +CONFIG_NET_VENDOR_ALACRITECH=y +CONFIG_SLICOSS=m +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ALTERA_TSE=m +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_ENA_ETHERNET=m +CONFIG_NET_VENDOR_AMD=y +CONFIG_AMD8111_ETH=m +CONFIG_PCNET32=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_AQTION=m +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_CX_ECAT=m +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_BCMGENET=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_SYSTEMPORT=m +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y +CONFIG_BNXT_FLOWER_OFFLOAD=y +CONFIG_BNXT_DCB=y +CONFIG_BNXT_HWMON=y +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_MACB=m +CONFIG_MACB_USE_HWSTAMP=y +CONFIG_MACB_PCI=m +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_RGX=m +CONFIG_CAVIUM_PTP=m +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_LIB=m +CONFIG_CHELSIO_INLINE_CRYPTO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_ENIC=m +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_MMIO=y +# CONFIG_TULIP_NAPI is not set +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_BE2=y +CONFIG_BE2NET_BE3=y +CONFIG_BE2NET_LANCER=y +CONFIG_BE2NET_SKYHAWK=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_GVE=m +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_HINIC=m +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBEVF=m +CONFIG_I40E=m +CONFIG_I40E_DCB=y +CONFIG_IAVF=m +CONFIG_I40EVF=m +CONFIG_ICE=m +CONFIG_FM10K=m +CONFIG_IGC=m +CONFIG_JME=m +CONFIG_NET_VENDOR_LITEX=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_MVMDIO=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +# CONFIG_PRESTERA is not set +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_CORE_GEN2=y +CONFIG_MLX5_CORE=m +CONFIG_MLX5_ACCEL=y +CONFIG_MLX5_FPGA=y +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_EN_ARFS=y +CONFIG_MLX5_EN_RXNFC=y +CONFIG_MLX5_MPFS=y +CONFIG_MLX5_ESWITCH=y +CONFIG_MLX5_BRIDGE=y +CONFIG_MLX5_CLS_ACT=y +CONFIG_MLX5_TC_CT=y +CONFIG_MLX5_TC_SAMPLE=y +CONFIG_MLX5_CORE_EN_DCB=y +# CONFIG_MLX5_CORE_IPOIB is not set +CONFIG_MLX5_FPGA_IPSEC=y +CONFIG_MLX5_SW_STEERING=y +# CONFIG_MLX5_SF is not set +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_CORE_HWMON=y +CONFIG_MLXSW_CORE_THERMAL=y +CONFIG_MLXSW_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MLXSW_SPECTRUM=m +CONFIG_MLXSW_SPECTRUM_DCB=y +CONFIG_MLXSW_MINIMAL=m +CONFIG_MLXFW=m +CONFIG_NET_VENDOR_MICREL=y +CONFIG_KS8842=m +CONFIG_KS8851=m +# CONFIG_KS8851_MLL is not set +CONFIG_KSZ884X_PCI=m +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCX24J600=m +CONFIG_LAN743X=m +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +# CONFIG_MICROSOFT_MANA is not set +CONFIG_NET_VENDOR_MYRI=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_FEALNX=m +CONFIG_NET_VENDOR_NI=y +CONFIG_NI_XGE_MANAGEMENT_ENET=m +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m +CONFIG_NS83820=m +CONFIG_NET_VENDOR_NETERION=y +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=m +# CONFIG_NFP_APP_FLOWER is not set +CONFIG_NFP_APP_ABM_NIC=y +# CONFIG_NFP_DEBUG is not set +CONFIG_NET_VENDOR_8390=y +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=m +CONFIG_NET_VENDOR_OKI=y +CONFIG_ETHOC=m +CONFIG_NET_VENDOR_PACKET_ENGINES=y +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_IONIC=m +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_NETXEN_NIC=m +CONFIG_QED=m +CONFIG_QED_LL2=y +CONFIG_QED_SRIOV=y +CONFIG_QEDE=m +CONFIG_QED_RDMA=y +CONFIG_QED_ISCSI=y +CONFIG_QED_FCOE=y +CONFIG_QED_OOO=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_BNA=m +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_QCOM_EMAC=m +CONFIG_RMNET=m +CONFIG_NET_VENDOR_RDC=y +CONFIG_R6040=m +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_ATP=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_SXGBE_ETH=m +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_SC92031=m +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS900=m +CONFIG_SIS190=m +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_SFC=m +CONFIG_SFC_MTD=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_FALCON=m +CONFIG_SFC_FALCON_MTD=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m +CONFIG_SMSC911X=m +CONFIG_SMSC9420=m +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_INTEL=m +# CONFIG_STMMAC_PCI is not set +CONFIG_NET_VENDOR_SUN=y +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y +CONFIG_DWC_XLGMAC=m +CONFIG_DWC_XLGMAC_PCI=m +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_TEHUTI=m +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +CONFIG_TLAN=m +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y +CONFIG_WIZNET_W5100_SPI=m +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +CONFIG_XILINX_AXI_EMAC=m +# CONFIG_XILINX_LL_TEMAC is not set +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_FDDI=y +CONFIG_DEFXX=m +CONFIG_SKFP=m +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_PHYLINK=m +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set +CONFIG_FIXED_PHY=y +CONFIG_SFP=m + +# +# MII PHY device drivers +# +CONFIG_AMD_PHY=m +CONFIG_ADIN_PHY=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AX88796B_PHY=m +CONFIG_BROADCOM_PHY=m +# CONFIG_BCM54140_PHY is not set +CONFIG_BCM7XXX_PHY=m +# CONFIG_BCM84881_PHY is not set +CONFIG_BCM87XX_PHY=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_CICADA_PHY=m +CONFIG_CORTINA_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_LXT_PHY=m +CONFIG_INTEL_XWAY_PHY=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCHIP_T1_PHY=m +CONFIG_MICROSEMI_PHY=m +# CONFIG_MOTORCOMM_PHY is not set +CONFIG_NATIONAL_PHY=m +# CONFIG_NXP_C45_TJA11XX_PHY is not set +CONFIG_NXP_TJA11XX_PHY=m +CONFIG_AT803X_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +# CONFIG_RENESAS_PHY is not set +CONFIG_ROCKCHIP_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_STE10XP=m +CONFIG_TERANETICS_PHY=m +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +CONFIG_DP83869_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_XILINX_GMII2RGMII=m +CONFIG_MICREL_KS8995MA=m +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_FWNODE_MDIO=y +CONFIG_ACPI_MDIO=y +CONFIG_MDIO_DEVRES=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_CAVIUM=m +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_I2C=m +# CONFIG_MDIO_MVUSB is not set +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_THUNDER=m + +# +# MDIO Multiplexers +# + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=m +# end of PCS device drivers + +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLHC=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_USB_NET_DRIVERS=m +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +CONFIG_USB_RTL8153_ECM=m +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_ADM8211=m +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +CONFIG_ATH_DEBUG=y +# CONFIG_ATH_TRACEPOINTS is not set +CONFIG_ATH5K=m +CONFIG_ATH5K_DEBUG=y +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_COMMON_DEBUG=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_AHB=y +CONFIG_ATH9K_DEBUGFS=y +# CONFIG_ATH9K_STATION_STATISTICS is not set +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_WOW=y +CONFIG_ATH9K_RFKILL=y +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_PCI_NO_EEPROM=m +CONFIG_ATH9K_HTC=m +# CONFIG_ATH9K_HTC_DEBUGFS is not set +CONFIG_ATH9K_HWRNG=y +# CONFIG_ATH9K_COMMON_SPECTRAL is not set +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_WPC=y +CONFIG_CARL9170_HWRNG=y +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +# CONFIG_ATH6KL_TRACING is not set +CONFIG_AR5523=m +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +CONFIG_WIL6210_DEBUGFS=y +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_SDIO=m +CONFIG_ATH10K_USB=m +CONFIG_ATH10K_DEBUG=y +# CONFIG_ATH10K_DEBUGFS is not set +# CONFIG_ATH10K_TRACING is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_ATH11K=m +CONFIG_ATH11K_AHB=m +CONFIG_ATH11K_PCI=m +# CONFIG_ATH11K_DEBUG is not set +# CONFIG_ATH11K_DEBUGFS is not set +# CONFIG_ATH11K_TRACING is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_SDIO=y +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +CONFIG_B43_DEBUG=y +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_DEBUG=y +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_BRCMUTIL=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_IWLEGACY=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m + +# +# iwl3945 / iwl4965 Debugging Options +# +CONFIG_IWLEGACY_DEBUG=y +CONFIG_IWLEGACY_DEBUGFS=y +# end of iwl3945 / iwl4965 Debugging Options + +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +CONFIG_IWLWIFI_OPMODE_MODULAR=y +# CONFIG_IWLWIFI_BCAST_FILTERING is not set + +# +# Debugging Options +# +CONFIG_IWLWIFI_DEBUG=y +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +# end of Debugging Options + +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_CS=m +CONFIG_HERMES=m +CONFIG_HERMES_PRISM=y +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_ORINOCO_USB=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +CONFIG_P54_SPI_DEFAULT_EEPROM=y +CONFIG_P54_LEDS=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBERTAS_THINFIRM is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76_USB=m +CONFIG_MT76x02_LIB=m +CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m +CONFIG_MT76x0_COMMON=m +CONFIG_MT76x0U=m +CONFIG_MT76x0E=m +CONFIG_MT76x2_COMMON=m +CONFIG_MT76x2E=m +CONFIG_MT76x2U=m +CONFIG_MT7603E=m +CONFIG_MT7615_COMMON=m +CONFIG_MT7615E=m +# CONFIG_MT7663U is not set +# CONFIG_MT7663S is not set +# CONFIG_MT7915E is not set +# CONFIG_MT7921E is not set +CONFIG_WLAN_VENDOR_MICROCHIP=y +CONFIG_WILC1000=m +CONFIG_WILC1000_SDIO=m +# CONFIG_WILC1000_SPI is not set +# CONFIG_WILC1000_HW_OOB_INTR is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +CONFIG_RT2X00_LIB_DEBUGFS=y +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +# CONFIG_RTL8XXXU_UNTESTED is not set +CONFIG_RTW88=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8821C=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_DEBUG=y +CONFIG_RTW88_DEBUGFS=y +CONFIG_RTW89=m +CONFIG_RTW89_CORE=m +CONFIG_RTW89_PCI=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_DEBUG=y +CONFIG_RTW89_DEBUGMSG=y +CONFIG_RTW89_DEBUGFS=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +CONFIG_RSI_DEBUGFS=y +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_USB_ZD1201=m +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +CONFIG_QTNFMAC=m +CONFIG_QTNFMAC_PCIE=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_WL3501=m +CONFIG_MAC80211_HWSIM=m +CONFIG_USB_NET_RNDIS_WLAN=m +# CONFIG_VIRT_WIFI is not set +CONFIG_WAN=y +CONFIG_LANMEDIA=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_FARSYNC=m +CONFIG_LAPBETHER=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m +CONFIG_IEEE802154_CA8210=m +# CONFIG_IEEE802154_CA8210_DEBUGFS is not set +# CONFIG_IEEE802154_MCR20A is not set +# CONFIG_IEEE802154_HWSIM is not set + +# +# Wireless WAN +# +CONFIG_WWAN=y +# CONFIG_WWAN_HWSIM is not set +CONFIG_MHI_WWAN_CTRL=m +CONFIG_MHI_WWAN_MBIM=m +# CONFIG_RPMSG_WWAN_CTRL is not set +CONFIG_IOSM=m +# end of Wireless WAN + +CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_VMXNET3=m +CONFIG_FUJITSU_ES=m +CONFIG_USB4_NET=m +CONFIG_HYPERV_NET=m +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=m +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +CONFIG_CAPI_TRACE=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_HDLC=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +CONFIG_KEYBOARD_ADP5520=m +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_APPLESPI=m +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_DLINK_DIR685=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +CONFIG_KEYBOARD_NEWTON=m +# CONFIG_KEYBOARD_OPENCORES is not set +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_IQS62X is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +# CONFIG_JOYSTICK_ADC is not set +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_IFORCE_232=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +CONFIG_JOYSTICK_PXRC=m +# CONFIG_JOYSTICK_QWIIC is not set +# CONFIG_JOYSTICK_FSIA6B is not set +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADC=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ATMEL_MXT_T37=y +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_BU21029=m +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m +CONFIG_TOUCHSCREEN_DA9034=m +CONFIG_TOUCHSCREEN_DA9052=m +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m +# CONFIG_TOUCHSCREEN_EXC3000 is not set +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set +CONFIG_TOUCHSCREEN_ILI210X=m +# CONFIG_TOUCHSCREEN_ILITEK is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_EKTF2127=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MELFAS_MIP4=m +# CONFIG_TOUCHSCREEN_MSG2638 is not set +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_TSC200X_CORE=m +CONFIG_TOUCHSCREEN_TSC2004=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +# CONFIG_TOUCHSCREEN_TSC2007_IIO is not set +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_RM_TS=m +CONFIG_TOUCHSCREEN_SILEAD=m +CONFIG_TOUCHSCREEN_SIS_I2C=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMFTS=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m +# CONFIG_TOUCHSCREEN_SX8654 is not set +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_ZET6223=m +CONFIG_TOUCHSCREEN_ZFORCE=m +CONFIG_TOUCHSCREEN_ROHM_BU21023=m +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_88PM80X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +# CONFIG_INPUT_ARIZONA_HAPTICS is not set +CONFIG_INPUT_BMA150=m +# CONFIG_INPUT_E3X0_BUTTON is not set +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +# CONFIG_INPUT_MMA8450 is not set +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +# CONFIG_INPUT_GPIO_VIBRA is not set +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +# CONFIG_INPUT_AXP20X_PEK is not set +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_PALMAS_PWRBUTTON=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +# CONFIG_INPUT_DA7280_HAPTICS is not set +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_PCAP=m +# CONFIG_INPUT_ADXL34X is not set +CONFIG_INPUT_IMS_PCU=m +# CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SPI=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F3A=y +CONFIG_RMI4_F54=y +CONFIG_RMI4_F55=y + +# +# 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=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_HYPERV_KEYBOARD=m +CONFIG_SERIO_GPIO_PS2=m +CONFIG_USERIO=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DWLIB=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_RT288X=y +CONFIG_SERIAL_8250_LPSS=y +CONFIG_SERIAL_8250_MID=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_UARTLITE_NR_UARTS=1 +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +# CONFIG_SERIAL_LANTIQ is not set +CONFIG_SERIAL_SCCNXP=m +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +# CONFIG_SERIAL_SC16IS7XX_SPI is not set +# CONFIG_SERIAL_BCM63XX is not set +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_FSL_LPUART=m +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_SYNCLINK_GT=m +CONFIG_N_HDLC=m +CONFIG_N_GSM=m +CONFIG_NOZOMI=m +CONFIG_NULL_TTY=m +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_SERIAL_DEV_BUS=m +# CONFIG_TTY_PRINTK is not set +CONFIG_PRINTER=m +CONFIG_LP_CONSOLE=y +CONFIG_PPDEV=m +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_PLAT_DATA=y +CONFIG_IPMI_PANIC_EVENT=y +CONFIG_IPMI_PANIC_STRING=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMB_DEVICE_INTERFACE=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_BA431=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XIPHERA=m +CONFIG_APPLICOM=m + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_SCR24X=m +CONFIG_IPWIRELESS=m +# end of PCMCIA character devices + +CONFIG_MWAVE=m +CONFIG_DEVMEM=y +CONFIG_NVRAM=y +CONFIG_DEVPORT=y +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=m +CONFIG_HW_RANDOM_TPM=y +CONFIG_TCG_TIS_CORE=m +CONFIG_TCG_TIS=m +CONFIG_TCG_TIS_SPI=m +# CONFIG_TCG_TIS_SPI_CR50 is not set +# CONFIG_TCG_TIS_I2C_CR50 is not set +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=m +CONFIG_TCG_VTPM_PROXY=m +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TELCLOCK=m +CONFIG_XILLYBUS_CLASS=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_PCIE=m +# CONFIG_XILLYUSB is not set +CONFIG_RANDOM_TRUST_CPU=y +CONFIG_RANDOM_TRUST_BOOTLOADER=y +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_MUX_MLXCPLD=m +# end of Multiplexer I2C Chip support + +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +CONFIG_I2C_ALGOBIT=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_AMD_MP2=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +# CONFIG_I2C_CHT_WC is not set +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_SLAVE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_EMEV2=m +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_KEMPLD=m +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_SIMTEC is not set +CONFIG_I2C_XILINX=m + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +# CONFIG_I2C_CP2615 is not set +CONFIG_I2C_PARPORT=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_MLXCPLD=m +CONFIG_I2C_CROS_EC_TUNNEL=m +CONFIG_I2C_VIRTIO=m +# end of I2C Hardware Bus support + +CONFIG_I2C_STUB=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m +# CONFIG_I2C_SLAVE_TESTUNIT is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +CONFIG_I3C=m +CONFIG_CDNS_I3C_MASTER=m +CONFIG_DW_I3C_MASTER=m +# CONFIG_SVC_I3C_MASTER is not set +# CONFIG_MIPI_I3C_HCI is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_ALTERA=m +CONFIG_SPI_ALTERA_CORE=m +CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +# CONFIG_SPI_CADENCE is not set +CONFIG_SPI_DESIGNWARE=m +# CONFIG_SPI_DW_DMA is not set +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_DW_MMIO=m +# CONFIG_SPI_DLN2 is not set +# CONFIG_SPI_NXP_FLEXSPI is not set +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_LANTIQ_SSC=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_SC18IS602=m +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_MXIC is not set +CONFIG_SPI_XCOMM=m +CONFIG_SPI_XILINX=m +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPI_AMD=m + +# +# SPI Multiplexer support +# +# CONFIG_SPI_MUX is not set + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_LOOPBACK_TEST=m +CONFIG_SPI_TLE62X0=m +# CONFIG_SPI_SLAVE is not set +CONFIG_SPI_DYNAMIC=y +CONFIG_SPMI=m +# CONFIG_SPMI_HISI3670 is not set +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y + +# +# HSI controllers +# + +# +# HSI clients +# +CONFIG_HSI_CHAR=m +CONFIG_PPS=m +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +CONFIG_PPS_CLIENT_KTIMER=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +CONFIG_PPS_CLIENT_GPIO=m + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=m +CONFIG_PTP_1588_CLOCK_OPTIONAL=m +# CONFIG_DP83640_PHY is not set +# CONFIG_PTP_1588_CLOCK_INES is not set +CONFIG_PTP_1588_CLOCK_KVM=m +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# CONFIG_PTP_1588_CLOCK_VMW is not set +# CONFIG_PTP_1588_CLOCK_OCP is not set +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +CONFIG_PINCTRL_AMD=y +# CONFIG_PINCTRL_DA9062 is not set +# CONFIG_PINCTRL_MCP23S08 is not set +CONFIG_PINCTRL_SX150X=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=m +CONFIG_PINCTRL_LYNXPOINT=y +CONFIG_PINCTRL_INTEL=y +# CONFIG_PINCTRL_ALDERLAKE is not set +CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_CANNONLAKE=m +CONFIG_PINCTRL_CEDARFORK=m +CONFIG_PINCTRL_DENVERTON=m +# CONFIG_PINCTRL_ELKHARTLAKE is not set +CONFIG_PINCTRL_EMMITSBURG=m +CONFIG_PINCTRL_GEMINILAKE=m +CONFIG_PINCTRL_ICELAKE=m +CONFIG_PINCTRL_JASPERLAKE=m +# CONFIG_PINCTRL_LAKEFIELD is not set +CONFIG_PINCTRL_LEWISBURG=m +CONFIG_PINCTRL_SUNRISEPOINT=m +CONFIG_PINCTRL_TIGERLAKE=m + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_PINCTRL_MADERA=m +CONFIG_PINCTRL_CS47L15=y +CONFIG_PINCTRL_CS47L35=y +CONFIG_PINCTRL_CS47L85=y +CONFIG_PINCTRL_CS47L90=y +CONFIG_PINCTRL_CS47L92=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_MAX730X=m + +# +# Memory mapped GPIO drivers +# +CONFIG_GPIO_AMDPT=m +CONFIG_GPIO_DWAPB=m +# CONFIG_GPIO_EXAR is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_ICH=m +# CONFIG_GPIO_MB86S7X is not set +CONFIG_GPIO_VX855=m +CONFIG_GPIO_AMD_FCH=m +# end of Memory mapped GPIO drivers + +# +# Port-mapped I/O GPIO drivers +# +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_IT87=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_WINBOND=m +CONFIG_GPIO_WS16C48=m +# end of Port-mapped I/O GPIO drivers + +# +# I2C GPIO expanders +# +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCA9570=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_TPIC2810=m +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_CRYSTAL_COVE=y +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_MADERA=m +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_TPS65086=m +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +# CONFIG_GPIO_TQMX86 is not set +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_GPIO_UCB1400 is not set +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_PCI_IDIO_16=m +# CONFIG_GPIO_PCIE_IDIO_24 is not set +CONFIG_GPIO_RDC321X=m +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_MAX3191X is not set +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_PISOSR=m +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +CONFIG_GPIO_VIPERBOARD=m +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_MOCKUP=m +# CONFIG_GPIO_VIRTIO is not set +# end of Virtual GPIO drivers + +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_SGI=m +# end of 1-wire Bus Masters + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +# CONFIG_W1_SLAVE_DS2405 is not set +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +# CONFIG_W1_SLAVE_DS2805 is not set +CONFIG_W1_SLAVE_DS2430=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2433_CRC=y +# CONFIG_W1_SLAVE_DS2438 is not set +CONFIG_W1_SLAVE_DS250X=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +# CONFIG_W1_SLAVE_DS28E17 is not set +# end of 1-wire Slaves + +# CONFIG_POWER_RESET is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_MAX8925_POWER=m +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM8350_POWER=m +# CONFIG_TEST_POWER is not set +CONFIG_BATTERY_88PM860X=m +CONFIG_CHARGER_ADP5061=m +# CONFIG_BATTERY_CW2015 is not set +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_SBS=m +CONFIG_CHARGER_SBS=m +# CONFIG_MANAGER_SBS is not set +CONFIG_BATTERY_BQ27XXX=m +CONFIG_BATTERY_BQ27XXX_I2C=m +CONFIG_BATTERY_BQ27XXX_HDQ=m +# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +# CONFIG_BATTERY_MAX17040 is not set +CONFIG_BATTERY_MAX17042=m +# CONFIG_BATTERY_MAX1721X is not set +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_CHARGER_88PM860X=m +CONFIG_BATTERY_RX51=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_LT3651=m +# CONFIG_CHARGER_LTC4162L is not set +CONFIG_CHARGER_MAX14577=m +# CONFIG_CHARGER_MAX77693 is not set +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ2515X=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_BQ25980=m +# CONFIG_CHARGER_BQ256XX is not set +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_GOLDFISH is not set +CONFIG_BATTERY_RT5033=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_CROS_USBPD=m +CONFIG_CHARGER_CROS_PCHG=m +# CONFIG_CHARGER_BD99954 is not set +CONFIG_CHARGER_WILCO=m +CONFIG_HWMON=m +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1177=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +# CONFIG_SENSORS_AHT10 is not set +# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set +CONFIG_SENSORS_AS370=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_AXI_FAN_CONTROL=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ASPEED=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_CORSAIR_CPRO=m +# CONFIG_SENSORS_CORSAIR_PSU is not set +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2947=m +CONFIG_SENSORS_LTC2947_I2C=m +CONFIG_SENSORS_LTC2947_SPI=m +CONFIG_SENSORS_LTC2990=m +# CONFIG_SENSORS_LTC2992 is not set +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +# CONFIG_SENSORS_MAX127 is not set +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX31722=m +CONFIG_SENSORS_MAX31730=m +# CONFIG_SENSORS_MAX6621 is not set +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_MLXREG_FAN=m +CONFIG_SENSORS_TC654=m +# CONFIG_SENSORS_TPS23861 is not set +CONFIG_SENSORS_MENF21BMC_HWMON=m +CONFIG_SENSORS_MR75203=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +CONFIG_SENSORS_PCF8591=m +CONFIG_PMBUS=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_ADM1266=m +CONFIG_SENSORS_ADM1275=m +# CONFIG_SENSORS_BEL_PFE is not set +# CONFIG_SENSORS_BPA_RS600 is not set +# CONFIG_SENSORS_FSP_3Y is not set +CONFIG_SENSORS_IBM_CFFPS=m +# CONFIG_SENSORS_DPS920AB is not set +CONFIG_SENSORS_INSPUR_IPSPS=m +CONFIG_SENSORS_IR35221=m +# CONFIG_SENSORS_IR36021 is not set +CONFIG_SENSORS_IR38064=m +CONFIG_SENSORS_IRPS5401=m +CONFIG_SENSORS_ISL68137=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC3815=m +# CONFIG_SENSORS_MAX15301 is not set +CONFIG_SENSORS_MAX16064=m +# CONFIG_SENSORS_MAX16601 is not set +CONFIG_SENSORS_MAX20730=m +CONFIG_SENSORS_MAX20751=m +# CONFIG_SENSORS_MAX31785 is not set +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX8688=m +# CONFIG_SENSORS_MP2888 is not set +CONFIG_SENSORS_MP2975=m +# CONFIG_SENSORS_PIM4328 is not set +# CONFIG_SENSORS_PM6764TR is not set +CONFIG_SENSORS_PXE1610=m +# CONFIG_SENSORS_Q54SJ108A2 is not set +# CONFIG_SENSORS_STPDDC60 is not set +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_ZL6100=m +# CONFIG_SENSORS_SBTSI is not set +# CONFIG_SENSORS_SBRMI is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHT4x is not set +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_ADC128D818=m +# CONFIG_SENSORS_ADS7828 is not set +CONFIG_SENSORS_ADS7871=m +# CONFIG_SENSORS_AMC6821 is not set +CONFIG_SENSORS_INA209=m +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP108=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP513=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_XGENE=m +CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_ATK0110=m +CONFIG_THERMAL=y +CONFIG_THERMAL_NETLINK=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_THERMAL_EMULATION=y + +# +# Intel thermal drivers +# +CONFIG_INTEL_POWERCLAMP=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m + +# +# ACPI INT340X thermal drivers +# +CONFIG_INT340X_THERMAL=m +CONFIG_ACPI_THERMAL_REL=m +CONFIG_INT3406_THERMAL=m +CONFIG_PROC_THERMAL_MMIO_RAPL=m +# end of ACPI INT340X thermal drivers + +CONFIG_INTEL_PCH_THERMAL=m +# CONFIG_INTEL_TCC_COOLING is not set +CONFIG_INTEL_MENLOW=m +# end of Intel thermal drivers + +CONFIG_GENERIC_ADC_THERMAL=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +CONFIG_WATCHDOG_SYSFS=y +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9062_WATCHDOG=m +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_WDAT_WDT=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_WATCHDOG=m +# CONFIG_XILINX_WATCHDOG is not set +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_MLX_WDT=m +# CONFIG_CADENCE_WATCHDOG is not set +CONFIG_DW_WATCHDOG=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_RETU_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_EBC_C384_WDT=m +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_HPWDT_NMI_DECODING=y +# CONFIG_KEMPLD_WDT is not set +# CONFIG_SC1200_WDT is not set +# CONFIG_PC87413_WDT is not set +CONFIG_NV_TCO=m +CONFIG_60XX_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +# CONFIG_TQMX86_WDT is not set +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_INTEL_MEI_WDT=m +CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m +CONFIG_MEN_A21_WDT=m +CONFIG_XEN_WDT=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_DRIVER_PCI=y +CONFIG_BCMA_SFLASH=y +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +CONFIG_MFD_AS3711=y +CONFIG_PMIC_ADP5520=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_AXP20X=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_CROS_EC_DEV=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MADERA_I2C=m +CONFIG_MFD_MADERA_SPI=m +CONFIG_MFD_CS47L15=y +CONFIG_MFD_CS47L35=y +CONFIG_MFD_CS47L85=y +CONFIG_MFD_CS47L90=y +CONFIG_MFD_CS47L92=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +# CONFIG_MFD_DA9150 is not set +CONFIG_MFD_DLN2=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_SPI=m +# CONFIG_MFD_MC13XXX_I2C is not set +CONFIG_MFD_MP2629=m +# CONFIG_HTC_PASIC3 is not set +CONFIG_HTC_I2CPLD=y +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_INTEL_SOC_PMIC=y +# CONFIG_INTEL_SOC_PMIC_BXTWC is not set +CONFIG_INTEL_SOC_PMIC_CHTWC=y +CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_PMC_BXT=m +# CONFIG_MFD_INTEL_PMT is not set +CONFIG_MFD_IQS62X=m +# CONFIG_MFD_JANZ_CMODIO is not set +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77693=y +# CONFIG_MFD_MAX77843 is not set +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +# CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6397 is not set +CONFIG_MFD_MENF21BMC=m +CONFIG_EZX_PCAP=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_RETU=m +# CONFIG_MFD_PCF50633 is not set +CONFIG_UCB1400_CORE=m +CONFIG_MFD_RDC321X=m +# CONFIG_MFD_RT4831 is not set +# CONFIG_MFD_RT5033 is not set +CONFIG_MFD_RC5T583=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_LP3943=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_PALMAS=y +# CONFIG_TPS6105X is not set +CONFIG_TPS65010=m +# CONFIG_TPS6507X is not set +CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65090=y +# CONFIG_MFD_TI_LP873X is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS80031=y +CONFIG_TWL4030_CORE=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_TWL6040_CORE=y +CONFIG_MFD_WL1273_CORE=m +# CONFIG_MFD_LM3533 is not set +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_ARIZONA=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_CS47L24=y +CONFIG_MFD_WM5102=y +CONFIG_MFD_WM5110=y +CONFIG_MFD_WM8997=y +# CONFIG_MFD_WM8998 is not set +CONFIG_MFD_WM8400=y +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +# CONFIG_MFD_ATC260X_I2C is not set +# CONFIG_RAVE_SP_CORE is not set +CONFIG_MFD_INTEL_M10_BMC=m +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +# CONFIG_REGULATOR_88PG86X is not set +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_AAT2870=m +# CONFIG_REGULATOR_ARIZONA_LDO1 is not set +# CONFIG_REGULATOR_ARIZONA_MICSUPP is not set +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_BD9571MWV=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m +CONFIG_REGULATOR_DA9210=m +CONFIG_REGULATOR_DA9211=m +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_ISL6271A=m +# CONFIG_REGULATOR_LM363X is not set +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +# CONFIG_REGULATOR_LTC3676 is not set +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +# CONFIG_REGULATOR_MAX8893 is not set +CONFIG_REGULATOR_MAX8907=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MAX77693=m +# CONFIG_REGULATOR_MAX77826 is not set +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MP8859=m +CONFIG_REGULATOR_MT6311=m +# CONFIG_REGULATOR_MT6315 is not set +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PCA9450=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PV88060=m +CONFIG_REGULATOR_PV88080=m +CONFIG_REGULATOR_PV88090=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_QCOM_USB_VBUS=m +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RC5T583=m +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6245 is not set +# CONFIG_REGULATOR_RTQ2134 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_SKY81452 is not set +# CONFIG_REGULATOR_SLG51000 is not set +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65086=m +CONFIG_REGULATOR_TPS65090=m +# CONFIG_REGULATOR_TPS65132 is not set +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TPS80031=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +CONFIG_REGULATOR_QCOM_LABIBB=m +CONFIG_RC_CORE=m +CONFIG_RC_MAP=m +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_RCMM_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_ENE=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_FINTEK=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_SIR=m +CONFIG_RC_XBOX_DVD=m +# CONFIG_IR_TOY is not set +CONFIG_CEC_CORE=m +CONFIG_CEC_NOTIFIER=y +# CONFIG_MEDIA_CEC_RC is not set +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_CEC_CROS_EC is not set +# CONFIG_CEC_SECO is not set +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_MEDIA_SUPPORT=m +# CONFIG_MEDIA_SUPPORT_FILTER is not set +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=m +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=m +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_MEM2MEM_DEV=m +# CONFIG_V4L2_FLASH_LED_CLASS is not set +CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_ASYNC=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +# end of Video4Linux options + +# +# Media controller options +# +CONFIG_MEDIA_CONTROLLER_DVB=y +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y + +# +# Please notice that the enabled Media controller Request API is EXPERIMENTAL +# +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m + +# +# Analog TV USB devices +# +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_CXUSB_ANALOG=y +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW5864=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW686X=m + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m +# CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DT3155=m + +# +# Media capture/analog/hybrid TV support +# +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX23885=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_GO7007=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_COBALT=m + +# +# Media digital TV PCI Adapters +# +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_NETUP_UNIDVB=m +# CONFIG_VIDEO_IPU3_CIO2 is not set +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_SI4713=m +CONFIG_PLATFORM_SI4713=m +CONFIG_I2C_SI4713=m +# CONFIG_RADIO_SI476X is not set +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_TTPCI_EEPROM=m +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set +CONFIG_VIDEO_V4L2_TPG=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_CADENCE=y +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set +CONFIG_VIDEO_ASPEED=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_DVB_PLATFORM_DRIVERS=y +# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# MMC/SDIO DVB adapters +# +CONFIG_SMS_SDIO_DRV=m +CONFIG_V4L_TEST_DRIVERS=y +# CONFIG_VIDEO_VIMC is not set +CONFIG_VIDEO_VIVID=m +# CONFIG_VIDEO_VIVID_CEC is not set +CONFIG_VIDEO_VIVID_MAX_DEVS=64 +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VICODEC=m +# CONFIG_DVB_TEST_DRIVERS is not set + +# +# FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +CONFIG_VIDEO_IR_I2C=m + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +# CONFIG_VIDEO_TDA1997X is not set +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SONY_BTF_MPX=m +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7604=m +# CONFIG_VIDEO_ADV7604_CEC is not set +CONFIG_VIDEO_ADV7842=m +# CONFIG_VIDEO_ADV7842_CEC is not set +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_ML86V7667=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_TC358743 is not set +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_TW9910=m +CONFIG_VIDEO_VPX3220=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m +# end of Video decoders + +# +# Video encoders +# +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7343=m +CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_ADV7511=m +# CONFIG_VIDEO_ADV7511_CEC is not set +# CONFIG_VIDEO_AD9389B is not set +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_THS8200=m +# end of Video encoders + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +# end of Video improvement chips + +# +# Audio/Video compression chips +# +CONFIG_VIDEO_SAA6752HS=m +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +CONFIG_SDR_MAX2175=m +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_I2C=m +# CONFIG_VIDEO_ST_MIPID02 is not set +# end of Miscellaneous helper chips + +# +# Camera sensor devices +# +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OV02A10 is not set +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV2659=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV2685=m +# CONFIG_VIDEO_OV2740 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +CONFIG_VIDEO_OV6650=m +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +CONFIG_VIDEO_OV5695=m +# CONFIG_VIDEO_OV7251 is not set +CONFIG_VIDEO_OV772X=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_OV7740=m +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8865 is not set +CONFIG_VIDEO_OV9640=m +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV9734 is not set +# CONFIG_VIDEO_OV13858 is not set +CONFIG_VIDEO_VS6624=m +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M032 is not set +CONFIG_VIDEO_MT9M111=m +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +CONFIG_VIDEO_MT9T112=m +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MT9V032 is not set +CONFIG_VIDEO_MT9V111=m +CONFIG_VIDEO_SR030PC30=m +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_M5MOLS is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +CONFIG_VIDEO_RJ54N1=m +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# end of Camera sensor devices + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set +# end of SPI helper chips + +# +# Media SPI Adapters +# +# CONFIG_CXD2880_SPI_DRV is not set +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=m + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_M88DS3103=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_EC100=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_MXL692=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_S921=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_TC90522=m +CONFIG_DVB_MN88443X=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m +# CONFIG_DVB_LNBH29 is not set +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_A8293=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_HELENE=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +CONFIG_DVB_DUMMY_FE=m +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=y +CONFIG_AGP_VIA=y +CONFIG_INTEL_GTT=y +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_SWITCHEROO=y +CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=m +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DP_CEC=y +CONFIG_DRM_TTM=m +CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SCHED=m + +# +# I2C encoder or helper chips +# +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_NXP_TDA9950=m +# end of I2C encoder or helper chips + +# +# ARM devices +# +# end of ARM devices + +CONFIG_DRM_RADEON=m +CONFIG_DRM_RADEON_USERPTR=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y + +# +# ACP (Audio CoProcessor) Configuration +# +CONFIG_DRM_AMD_ACP=y +# end of ACP (Audio CoProcessor) Configuration + +# +# Display Engine Configuration +# +CONFIG_DRM_AMD_DC=y +CONFIG_DRM_AMD_DC_DCN=y +CONFIG_DRM_AMD_DC_HDCP=y +CONFIG_DRM_AMD_DC_SI=y +# CONFIG_DRM_AMD_SECURE_DISPLAY is not set +# end of Display Engine Configuration + +CONFIG_HSA_AMD=y +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_DEBUG_PUSH is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_I915=m +CONFIG_DRM_I915_FORCE_PROBE="" +CONFIG_DRM_I915_CAPTURE_ERROR=y +CONFIG_DRM_I915_COMPRESS_ERROR=y +CONFIG_DRM_I915_USERPTR=y +CONFIG_DRM_I915_GVT=y +# CONFIG_DRM_I915_GVT_KVMGT is not set + +# +# drm/i915 Debugging +# +# CONFIG_DRM_I915_WERROR is not set +# CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_DEBUG_MMIO is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set +# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set +# CONFIG_DRM_I915_DEBUG_GUC is not set +# CONFIG_DRM_I915_SELFTEST is not set +# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set +# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set +# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# end of drm/i915 Debugging + +# +# drm/i915 Profile Guided Optimisation +# +CONFIG_DRM_I915_REQUEST_TIMEOUT=20000 +CONFIG_DRM_I915_FENCE_TIMEOUT=10000 +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 +CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 +CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 +CONFIG_DRM_I915_STOP_TIMEOUT=100 +CONFIG_DRM_I915_TIMESLICE_DURATION=1 +# end of drm/i915 Profile Guided Optimisation + +CONFIG_DRM_VGEM=m +# CONFIG_DRM_VKMS is not set +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y +# CONFIG_DRM_VMWGFX_MKSSTATS is not set +CONFIG_DRM_GMA500=m +CONFIG_DRM_UDL=m +CONFIG_DRM_AST=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_QXL=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +CONFIG_DRM_BOCHS=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_GM12U320=m +# CONFIG_DRM_SIMPLEDRM is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_ST7586 is not set +# CONFIG_TINYDRM_ST7735R is not set +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=m +CONFIG_DRM_VBOXVIDEO=m +# CONFIG_DRM_GUD is not set +# CONFIG_DRM_HYPERV is not set +CONFIG_DRM_LEGACY=y +CONFIG_DRM_TDFX=m +CONFIG_DRM_R128=m +CONFIG_DRM_I810=m +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m +# CONFIG_DRM_VIA is not set +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_FOREIGN_ENDIAN=y +CONFIG_FB_BOTH_ENDIAN=y +# CONFIG_FB_BIG_ENDIAN is not set +# CONFIG_FB_LITTLE_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_BACKLIGHT=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +# CONFIG_FB_N411 is not set +# CONFIG_FB_HGA is not set +CONFIG_FB_OPENCORES=m +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +# CONFIG_FB_RIVA_I2C is not set +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I740=m +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +# CONFIG_FB_VIA_X_COMPATIBILITY is not set +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +# CONFIG_FB_SM501 is not set +CONFIG_FB_SMSCUFX=m +CONFIG_FB_UDL=m +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_VIRTUAL=m +CONFIG_XEN_FBDEV_FRONTEND=y +# CONFIG_FB_METRONOME is not set +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_MB862XX_I2C=y +CONFIG_FB_HYPERV=m +CONFIG_FB_SIMPLE=y +# CONFIG_FB_SSD1307 is not set +CONFIG_FB_SM712=m +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +# CONFIG_LCD_PLATFORM is not set +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_HX8357=m +# CONFIG_LCD_OTM3225A is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD253 is not set +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_APPLE=m +# CONFIG_BACKLIGHT_QCOM_WLED is not set +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_WM831X=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_LP8788=m +CONFIG_BACKLIGHT_PANDORA=m +# CONFIG_BACKLIGHT_SKY81452 is not set +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_ARCXCNN=m +# end of Backlight & LCD device support + +CONFIG_VGASTATE=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +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=y +# CONFIG_SND_DEBUG_VERBOSE is not set +CONFIG_SND_PCM_XRUN_DEBUG=y +# CONFIG_SND_CTL_VALIDATION is not set +# CONFIG_SND_JACK_INJECTION_DEBUG is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_CTL_LED=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQUENCER_OSS=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +# +# HD-Audio +# +CONFIG_SND_HDA=m +CONFIG_SND_HDA_GENERIC_LEDS=y +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +# CONFIG_SND_HDA_CODEC_CS8409 is not set +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set +# end of HD-Audio + +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_HDA_PREALLOC_SIZE=0 +CONFIG_SND_INTEL_NHLT=y +CONFIG_SND_INTEL_DSP_CONFIG=m +CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m +# CONFIG_SND_INTEL_BYT_PREFER_SOF is not set +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m +CONFIG_SND_ISIGHT=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_BEBOB=m +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_TASCAM=m +CONFIG_SND_FIREWIRE_MOTU=m +CONFIG_SND_FIREFACE=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_COMPRESS=y +CONFIG_SND_SOC_TOPOLOGY=y +CONFIG_SND_SOC_ACPI=m +# CONFIG_SND_SOC_ADI is not set +CONFIG_SND_SOC_AMD_ACP=m +CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m +CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m +CONFIG_SND_SOC_AMD_ACP3x=m +CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m +CONFIG_SND_SOC_AMD_RENOIR=m +CONFIG_SND_SOC_AMD_RENOIR_MACH=m +# CONFIG_SND_SOC_AMD_ACP5x is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set +CONFIG_SND_DESIGNWARE_I2S=m +# CONFIG_SND_DESIGNWARE_PCM is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set +# CONFIG_SND_SOC_FSL_RPMSG is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_SOC_IMG is not set +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y +CONFIG_SND_SOC_INTEL_SST=m +CONFIG_SND_SOC_INTEL_CATPT=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m +CONFIG_SND_SOC_INTEL_SKYLAKE=m +CONFIG_SND_SOC_INTEL_SKL=m +CONFIG_SND_SOC_INTEL_APL=m +CONFIG_SND_SOC_INTEL_KBL=m +CONFIG_SND_SOC_INTEL_GLK=m +CONFIG_SND_SOC_INTEL_CNL=m +CONFIG_SND_SOC_INTEL_CFL=m +CONFIG_SND_SOC_INTEL_CML_H=m +CONFIG_SND_SOC_INTEL_CML_LP=m +CONFIG_SND_SOC_INTEL_SKYLAKE_FAMILY=m +CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m +CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y +CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m +CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_INTEL_MACH=y +# CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set +CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m +# CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH is not set +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH=m +CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_DA7219_MAX98357A_GENERIC=m +CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON=m +CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m +CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m +CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m +CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m +# CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH is not set +CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m +CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH=m +CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m +CONFIG_SND_SOC_MTK_BTCVSD=m +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_PCI_DEV=m +CONFIG_SND_SOC_SOF_PCI=m +CONFIG_SND_SOC_SOF_ACPI=m +CONFIG_SND_SOC_SOF_ACPI_DEV=m +# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set +# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set +CONFIG_SND_SOC_SOF=m +CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y +CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m +CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m +CONFIG_SND_SOC_SOF_INTEL_COMMON=m +CONFIG_SND_SOC_SOF_BAYTRAIL=m +CONFIG_SND_SOC_SOF_BROADWELL=m +CONFIG_SND_SOC_SOF_MERRIFIELD=m +CONFIG_SND_SOC_SOF_INTEL_APL=m +CONFIG_SND_SOC_SOF_APOLLOLAKE=m +CONFIG_SND_SOC_SOF_GEMINILAKE=m +CONFIG_SND_SOC_SOF_INTEL_CNL=m +CONFIG_SND_SOC_SOF_CANNONLAKE=m +CONFIG_SND_SOC_SOF_COFFEELAKE=m +CONFIG_SND_SOC_SOF_COMETLAKE=m +CONFIG_SND_SOC_SOF_INTEL_ICL=m +CONFIG_SND_SOC_SOF_ICELAKE=m +CONFIG_SND_SOC_SOF_JASPERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_TGL=m +CONFIG_SND_SOC_SOF_TIGERLAKE=m +CONFIG_SND_SOC_SOF_ELKHARTLAKE=m +CONFIG_SND_SOC_SOF_ALDERLAKE=m +CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_LINK=y +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y +CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE=m +CONFIG_SND_SOC_SOF_XTENSA=m + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +CONFIG_SND_SOC_XILINX_I2S=m +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +CONFIG_SND_SOC_I2C_AND_SPI=m + +# +# CODEC drivers +# +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ADAU_UTILS=m +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_ADAU17X1=m +CONFIG_SND_SOC_ADAU1761=m +CONFIG_SND_SOC_ADAU1761_I2C=m +CONFIG_SND_SOC_ADAU1761_SPI=m +CONFIG_SND_SOC_ADAU7002=m +CONFIG_SND_SOC_ADAU7118=m +CONFIG_SND_SOC_ADAU7118_HW=m +CONFIG_SND_SOC_ADAU7118_I2C=m +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +CONFIG_SND_SOC_CROS_EC_CODEC=m +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +CONFIG_SND_SOC_CS35L34=m +CONFIG_SND_SOC_CS35L35=m +CONFIG_SND_SOC_CS35L36=m +CONFIG_SND_SOC_CS42L42=m +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +CONFIG_SND_SOC_CS4234=m +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +CONFIG_SND_SOC_CS43130=m +CONFIG_SND_SOC_CS4341=m +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_DA7219=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_HDMI_CODEC=m +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES8316=m +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_GTM601 is not set +CONFIG_SND_SOC_HDAC_HDMI=m +CONFIG_SND_SOC_HDAC_HDA=m +# CONFIG_SND_SOC_ICS43432 is not set +# CONFIG_SND_SOC_INNO_RK3036 is not set +CONFIG_SND_SOC_MAX98088=m +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98357A=m +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +CONFIG_SND_SOC_MAX98927=m +CONFIG_SND_SOC_MAX98373=m +CONFIG_SND_SOC_MAX98373_I2C=m +# CONFIG_SND_SOC_MAX98373_SDW is not set +CONFIG_SND_SOC_MAX98390=m +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set +CONFIG_SND_SOC_PCM512x=m +CONFIG_SND_SOC_PCM512x_I2C=m +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RK3328 is not set +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT298=m +CONFIG_SND_SOC_RT1011=m +CONFIG_SND_SOC_RT1015=m +CONFIG_SND_SOC_RT1015P=m +CONFIG_SND_SOC_RT1308_SDW=m +# CONFIG_SND_SOC_RT1316_SDW is not set +CONFIG_SND_SOC_RT5514=m +CONFIG_SND_SOC_RT5514_SPI=m +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5651=m +# CONFIG_SND_SOC_RT5659 is not set +CONFIG_SND_SOC_RT5660=m +CONFIG_SND_SOC_RT5663=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_RT5682=m +CONFIG_SND_SOC_RT5682_I2C=m +# CONFIG_SND_SOC_RT5682_SDW is not set +CONFIG_SND_SOC_RT700=m +CONFIG_SND_SOC_RT700_SDW=m +CONFIG_SND_SOC_RT711=m +CONFIG_SND_SOC_RT711_SDW=m +# CONFIG_SND_SOC_RT711_SDCA_SDW is not set +CONFIG_SND_SOC_RT715=m +CONFIG_SND_SOC_RT715_SDW=m +# CONFIG_SND_SOC_RT715_SDCA_SDW is not set +# CONFIG_SND_SOC_SDW_MOCKUP is not set +# CONFIG_SND_SOC_SGTL5000 is not set +CONFIG_SND_SOC_SIGMADSP=m +CONFIG_SND_SOC_SIGMADSP_I2C=m +CONFIG_SND_SOC_SIGMADSP_REGMAP=m +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2518 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +CONFIG_SND_SOC_SSM4567=m +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +CONFIG_SND_SOC_TS3A227E=m +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_WCD938X_SDW is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +CONFIG_SND_SOC_WM8524=m +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +CONFIG_SND_SOC_WSA881X=m +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set +CONFIG_SND_SOC_NAU8540=m +CONFIG_SND_SOC_NAU8810=m +# CONFIG_SND_SOC_NAU8822 is not set +CONFIG_SND_SOC_NAU8824=m +CONFIG_SND_SOC_NAU8825=m +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set +# end of CODEC drivers + +# CONFIG_SND_SIMPLE_CARD is not set +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m +CONFIG_SND_SYNTH_EMUX=m +CONFIG_SND_XEN_FRONTEND=m +# CONFIG_SND_VIRTIO is not set +CONFIG_AC97_BUS=m + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=m +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=y +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CORSAIR=m +CONFIG_HID_COUGAR=m +CONFIG_HID_MACALLY=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CP2112=m +CONFIG_HID_CREATIVE_SB0540=m +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELAN=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=y +# CONFIG_HID_FT260 is not set +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GFRM=m +# CONFIG_HID_GLORIOUS is not set +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +CONFIG_HID_GOOGLE_HAMMER=m +CONFIG_HID_VIVALDI=m +CONFIG_HID_GT683R=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +# CONFIG_HID_VIEWSONIC is not set +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=m +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=m +# CONFIG_HID_NTI is not set +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=y +# CONFIG_HID_PLAYSTATION is not set +CONFIG_HID_PRIMAX=m +CONFIG_HID_RETRODE=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +# CONFIG_HID_SEMITEK is not set +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set +CONFIG_HID_ALPS=m +# CONFIG_HID_MCP2221 is not set +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +# end of USB HID support + +# +# I2C HID support +# +CONFIG_I2C_HID_ACPI=m +# end of I2C HID support + +CONFIG_I2C_HID_CORE=m + +# +# Intel ISH HID support +# +CONFIG_INTEL_ISH_HID=m +CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=m +# end of Intel ISH HID support + +# +# AMD SFH HID Support +# +CONFIG_AMD_SFH_HID=m +# end of AMD SFH HID Support +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +# CONFIG_USB_LED_TRIG is not set +CONFIG_USB_ULPI_BUS=m +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_OTG_FSM=m +CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_MON=y + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PCI_RENESAS=y +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PLATFORM=m +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_FOTG210_HCD=m +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +# CONFIG_USB_SL811_CS is not set +# CONFIG_USB_R8A66597_HCD is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=8 +CONFIG_USBIP_VHCI_NR_HCS=1 +CONFIG_USBIP_HOST=m +# CONFIG_USBIP_DEBUG is not set +# CONFIG_USB_CDNS_SUPPORT is not set +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_HOST=y + +# +# Platform Glue Layer +# + +# +# MUSB DMA mode +# +CONFIG_MUSB_PIO_ONLY=y +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_ULPI is not set +CONFIG_USB_DWC3_HOST=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_DWC3_HAPS=m +CONFIG_USB_DWC2=y +CONFIG_USB_DWC2_HOST=y + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +CONFIG_USB_DWC2_PCI=y +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +# CONFIG_USB_CHIPIDEA is not set +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1760_HOST_ROLE=y + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +# CONFIG_USB_SERIAL_XR is not set +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +# CONFIG_APPLE_MFI_FASTCHARGE is not set +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m +# CONFIG_USB_HUB_USB251XB is not set +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSIC_USB4604=m +# CONFIG_USB_LINK_LAYER_TEST is not set +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GPIO_VBUS=m +# CONFIG_TAHVO_USB is not set +CONFIG_USB_ISP1301=m +# end of USB Physical Layer drivers + +# CONFIG_USB_GADGET is not set +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TCPCI=m +CONFIG_TYPEC_RT1711H=m +# CONFIG_TYPEC_TCPCI_MAXIM is not set +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_UCSI=m +CONFIG_UCSI_CCG=m +CONFIG_UCSI_ACPI=m +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_STUSB160X is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_PI3USB30532 is not set +# CONFIG_TYPEC_MUX_INTEL_PMC is not set +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=m +CONFIG_TYPEC_NVIDIA_ALTMODE=m +# end of USB Type-C Alternate Mode drivers + +CONFIG_USB_ROLE_SWITCH=y +CONFIG_USB_ROLES_INTEL_XHCI=m +CONFIG_MMC=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_SDIO_UART=m +CONFIG_MMC_TEST=m +# CONFIG_MMC_CRYPTO is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_WBSD=m +CONFIG_MMC_ALCOR=m +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SPI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_USHC=m +CONFIG_MMC_USDHI6ROL0=m +# CONFIG_MMC_REALTEK_PCI is not set +# CONFIG_MMC_REALTEK_USB is not set +CONFIG_MMC_CQHCI=m +# CONFIG_MMC_HSQ is not set +CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_MTK=m +CONFIG_MMC_SDHCI_XENON=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m +# CONFIG_MS_BLOCK is not set + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLASS_MULTICOLOR=m +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +CONFIG_LEDS_88PM860X=m +# CONFIG_LEDS_APU is not set +CONFIG_LEDS_LM3530=m +# CONFIG_LEDS_LM3532 is not set +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP3952=m +# CONFIG_LEDS_LP50XX is not set +# CONFIG_LEDS_LP8788 is not set +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m +# CONFIG_LEDS_PCA955X_GPIO is not set +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2802 is not set +CONFIG_LEDS_INTEL_SS4200=m +# CONFIG_LEDS_LT3593 is not set +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_MENF21BMC=m + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_MLXCPLD=m +CONFIG_LEDS_MLXREG=m +CONFIG_LEDS_USER=m +# CONFIG_LEDS_NIC78BX is not set +# CONFIG_LEDS_TI_LMU_COMMON is not set + +# +# Flash and Torch LED drivers +# +# CONFIG_LEDS_AS3645A is not set +# CONFIG_LEDS_LM3601X is not set +# CONFIG_LEDS_RT8515 is not set +CONFIG_LEDS_SGM3140=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=y +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +# CONFIG_LEDS_TRIGGER_PANIC is not set +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_PATTERN=m +CONFIG_LEDS_TRIGGER_AUDIO=m +# CONFIG_LEDS_TRIGGER_TTY is not set +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y + +# +# Speakup console speech +# +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +# end of Speakup console speech + +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y +CONFIG_INFINIBAND_VIRT_DMA=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EFA=m +# CONFIG_INFINIBAND_IRDMA is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_INFINIBAND=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_VMWARE_PVRDMA=m +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_HFI1=m +CONFIG_HFI1_DEBUG_SDMA_ORDER=y +CONFIG_SDMA_VERBOSITY=y +CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_RDMAVT=m +CONFIG_RDMA_RXE=m +CONFIG_RDMA_SIW=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +CONFIG_INFINIBAND_RTRS=m +CONFIG_INFINIBAND_RTRS_CLIENT=m +CONFIG_INFINIBAND_RTRS_SERVER=m +# CONFIG_INFINIBAND_OPA_VNIC is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=y +# CONFIG_EDAC_GHES is not set +CONFIG_EDAC_AMD64=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SKX=m +CONFIG_EDAC_I10NM=m +CONFIG_EDAC_PND2=m +# CONFIG_EDAC_IGEN6 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=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_88PM860X=m +CONFIG_RTC_DRV_88PM80X=m +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 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_LP8788=m +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_MAX8907=m +CONFIG_RTC_DRV_MAX8925=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MAX8997=m +# CONFIG_RTC_DRV_RS5C372 is not set +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF85063=m +# CONFIG_RTC_DRV_PCF85363 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=m +CONFIG_RTC_DRV_PALMAS=m +CONFIG_RTC_DRV_TPS6586X=m +CONFIG_RTC_DRV_TPS65910=m +CONFIG_RTC_DRV_TPS80031=m +CONFIG_RTC_DRV_RC5T583=m +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +CONFIG_RTC_DRV_RX8010=m +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set +CONFIG_RTC_DRV_RV8803=m +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6916=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3232_HWMON=y +# CONFIG_RTC_DRV_PCF2127 is not set +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV3029_HWMON=y +CONFIG_RTC_DRV_RX6110=m + +# +# 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_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +# 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 +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_CROS_EC=m + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_FTRTC010 is not set +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_MC13XXX=m + +# +# HID Sensor RTC drivers +# +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +# CONFIG_RTC_DRV_GOLDFISH is not set +CONFIG_RTC_DRV_WILCO_EC=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMA_ACPI=y +CONFIG_ALTERA_MSGDMA=m +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IDXD_BUS=m +CONFIG_INTEL_IDXD=m +# CONFIG_INTEL_IDXD_COMPAT is not set +# CONFIG_INTEL_IDXD_PERFMON is not set +CONFIG_INTEL_IOATDMA=m +CONFIG_PLX_DMA=m +# CONFIG_AMD_PTDMA is not set +CONFIG_QCOM_HIDMA_MGMT=m +CONFIG_QCOM_HIDMA=m +CONFIG_DW_DMAC_CORE=y +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_PCI=y +CONFIG_DW_EDMA=m +CONFIG_DW_EDMA_PCIE=m +CONFIG_HSU_DMA=y +CONFIG_SF_PDMA=m +# CONFIG_INTEL_LDMA is not set + +# +# DMA Clients +# +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +CONFIG_UDMABUF=y +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +# CONFIG_DMABUF_SYSFS_STATS is not set +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# end of DMABUF options + +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +CONFIG_CHARLCD=m +CONFIG_HD44780_COMMON=m +# CONFIG_HD44780 is not set +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +# CONFIG_IMG_ASCII_LCD is not set +# CONFIG_LCD2S is not set +CONFIG_PARPORT_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +# CONFIG_CHARLCD_BL_OFF is not set +# CONFIG_CHARLCD_BL_ON is not set +CONFIG_CHARLCD_BL_FLASH=y +CONFIG_PANEL=m +CONFIG_UIO=m +CONFIG_UIO_CIF=m +# CONFIG_UIO_PDRV_GENIRQ is not set +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_MF624=m +CONFIG_UIO_HV_GENERIC=m +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_VIRQFD=m +# CONFIG_VFIO_NOIOMMU is not set +CONFIG_VFIO_PCI_CORE=m +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_IGD=y +CONFIG_VFIO_MDEV=m +CONFIG_IRQ_BYPASS_MANAGER=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VBOXGUEST=m +CONFIG_NITRO_ENCLAVES=m +# CONFIG_ACRN_HSM is not set +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_PMEM is not set +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_MEM=m +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=m +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_DMA_SHARED_BUFFER=m +# CONFIG_VDPA is not set +CONFIG_VHOST_IOTLB=m +CONFIG_VHOST=m +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +CONFIG_VHOST_VSOCK=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +CONFIG_HYPERV=m +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=m +CONFIG_HYPERV_BALLOON=m +# end of Microsoft Hyper-V guest support + +# +# Xen driver support +# +CONFIG_XEN_BALLOON=y +# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set +CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XEN_SCRUB_PAGES_DEFAULT=y +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_BACKEND=y +CONFIG_XENFS=m +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +# CONFIG_XEN_GRANT_DMA_ALLOC is not set +CONFIG_SWIOTLB_XEN=y +CONFIG_XEN_PCIDEV_BACKEND=m +# CONFIG_XEN_PVCALLS_FRONTEND is not set +# CONFIG_XEN_PVCALLS_BACKEND is not set +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_ACPI_PROCESSOR=m +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_HAVE_VPMU=y +CONFIG_XEN_FRONT_PGDIR_SHBUF=m +CONFIG_XEN_UNPOPULATED_ALLOC=y +# end of Xen driver support + +# CONFIG_GREYBUS is not set +CONFIG_COMEDI=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +# CONFIG_COMEDI_DAC02 is not set +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS800=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_MULTIQ3=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_ADDI_WATCHDOG=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1720=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI1760=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_NI_TIOCMD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_ISADMA=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_LABPC_ISADMA=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_ROUTING=m +# CONFIG_COMEDI_TESTS is not set +CONFIG_STAGING=y +CONFIG_PRISM2_USB=m +CONFIG_RTL8192U=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTL8192E=m +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_R8188EU=m +CONFIG_88EU_AP_MODE=y +CONFIG_RTS5208=m +CONFIG_VT6655=m +CONFIG_VT6656=m + +# +# IIO staging drivers +# + +# +# Accelerometers +# +CONFIG_ADIS16203=m +CONFIG_ADIS16240=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_AD7816=m +CONFIG_AD7280=m +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +CONFIG_ADT7316=m +CONFIG_ADT7316_SPI=m +CONFIG_ADT7316_I2C=m +# end of Analog digital bi-direction converters + +# +# Capacitance to digital converters +# +CONFIG_AD7746=m +# end of Capacitance to digital converters + +# +# Direct Digital Synthesis +# +CONFIG_AD9832=m +CONFIG_AD9834=m +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +CONFIG_AD5933=m +# end of Network Analyzer, Impedance Converters + +# +# Active energy metering IC +# +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +# end of Active energy metering IC + +# +# Resolver to digital converters +# +CONFIG_AD2S1210=m +# end of Resolver to digital converters +# end of IIO staging drivers + +# CONFIG_FB_SM750 is not set +CONFIG_STAGING_MEDIA=y +CONFIG_INTEL_ATOMISP=y +# CONFIG_VIDEO_ATOMISP is not set +# CONFIG_VIDEO_ZORAN is not set +CONFIG_VIDEO_IPU3_IMGU=m +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_SP8870=m + +# +# Android +# +# end of Android + +CONFIG_LTE_GDM724X=m +CONFIG_FIREWIRE_SERIAL=m +CONFIG_FWTTY_MAX_TOTAL_PORTS=64 +CONFIG_FWTTY_MAX_CARD_PORTS=32 +# CONFIG_GS_FPGABOOT is not set +CONFIG_UNISYSSPAR=y +CONFIG_UNISYS_VISORNIC=m +CONFIG_UNISYS_VISORINPUT=m +CONFIG_UNISYS_VISORHBA=m +# CONFIG_FB_TFT is not set +# CONFIG_MOST_COMPONENTS is not set +CONFIG_KS7010=m +# CONFIG_PI433 is not set +CONFIG_FIELDBUS_DEV=m +CONFIG_QLGE=m +CONFIG_WFX=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACPI_WMI=m +CONFIG_WMI_BMOF=m +CONFIG_HUAWEI_WMI=m +CONFIG_MXM_WMI=m +CONFIG_PEAQ_WMI=m +CONFIG_XIAOMI_WMI=m +# CONFIG_GIGABYTE_WMI is not set +CONFIG_ACERHDF=m +# CONFIG_ACER_WIRELESS is not set +CONFIG_ACER_WMI=m +# CONFIG_AMD_PMC is not set +# CONFIG_ADV_SWBUTTON is not set +CONFIG_APPLE_GMUX=m +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ASUS_WMI=m +CONFIG_ASUS_NB_WMI=m +# CONFIG_MERAKI_MX100 is not set +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +# CONFIG_X86_PLATFORM_DRIVERS_DELL is not set +CONFIG_AMILO_RFKILL=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_GPD_POCKET_FAN=m +CONFIG_X86_PLATFORM_DRIVERS_HP=y +CONFIG_HP_ACCEL=m +CONFIG_HP_WMI=m +CONFIG_WIRELESS_HOTKEY=m +CONFIG_IBM_RTL=m +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_SENSORS_HDAPS=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +# CONFIG_THINKPAD_LMI is not set +# CONFIG_INTEL_ATOMISP2_LED is not set +# CONFIG_INTEL_SAR_INT1092 is not set +# CONFIG_INTEL_SKL_INT3472 is not set +CONFIG_INTEL_PMC_CORE=y + +# +# Intel Speed Select Technology interface support +# +CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +# end of Intel Speed Select Technology interface support + +# CONFIG_INTEL_TELEMETRY is not set +CONFIG_INTEL_WMI=y +CONFIG_INTEL_WMI_SBL_FW_UPDATE=m +# CONFIG_INTEL_WMI_THUNDERBOLT is not set +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_CHTDC_TI_PWRBTN=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TURBO_MAX_3=y +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +CONFIG_PCENGINES_APU2=m +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_Q10=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_TOSHIBA_WMI=m +CONFIG_ACPI_CMPC=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_LG_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +# CONFIG_SHUTTLE_WMI is not set +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SYSTEM76_ACPI=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_I2C_MULTI_INSTANTIATE=m +CONFIG_MLX_PLATFORM=m +CONFIG_TOUCHSCREEN_DMI=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_SCU_IPC=y +# CONFIG_INTEL_SCU_PCI is not set +# CONFIG_INTEL_SCU_PLATFORM is not set +CONFIG_PMC_ATOM=y +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROMEOS_TBMC=m +CONFIG_CROS_EC=m +CONFIG_CROS_EC_I2C=m +CONFIG_CROS_EC_ISHTP=m +CONFIG_CROS_EC_SPI=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CROS_KBD_LED_BACKLIGHT=m +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LIGHTBAR=m +CONFIG_CROS_EC_DEBUGFS=m +CONFIG_CROS_EC_SENSORHUB=m +CONFIG_CROS_EC_SYSFS=m +CONFIG_CROS_EC_TYPEC=m +CONFIG_CROS_USBPD_LOGGER=m +CONFIG_CROS_USBPD_NOTIFY=m +CONFIG_WILCO_EC=m +CONFIG_WILCO_EC_DEBUGFS=m +CONFIG_WILCO_EC_EVENTS=m +CONFIG_WILCO_EC_TELEMETRY=m +CONFIG_MELLANOX_PLATFORM=y +CONFIG_MLXREG_HOTPLUG=m +CONFIG_MLXREG_IO=m +CONFIG_SURFACE_PLATFORMS=y +CONFIG_SURFACE3_WMI=m +CONFIG_SURFACE_3_BUTTON=m +# CONFIG_SURFACE_3_POWER_OPREGION is not set +# CONFIG_SURFACE_GPE is not set +# CONFIG_SURFACE_HOTPLUG is not set +CONFIG_SURFACE_PRO3_BUTTON=m +# CONFIG_SURFACE_AGGREGATOR is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +CONFIG_COMMON_CLK_WM831X=m + +# +# Clock driver for ARM Reference designs +# +# CONFIG_ICST is not set +# CONFIG_CLK_SP810 is not set +# end of Clock driver for ARM Reference designs + +# CONFIG_LMK04832 is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +CONFIG_COMMON_CLK_SI5341=m +CONFIG_COMMON_CLK_SI5351=m +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +CONFIG_COMMON_CLK_CS2000_CP=m +CONFIG_CLK_TWL6040=m +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_XILINX_VCU=m +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + +CONFIG_MAILBOX=y +CONFIG_PCC=y +CONFIG_ALTERA_MBOX=m +CONFIG_IOMMU_IOVA=y +CONFIG_IOASID=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set +CONFIG_IOMMU_DEFAULT_DMA_LAZY=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_DMA=y +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_SVM is not set +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set +CONFIG_IRQ_REMAP=y +CONFIG_HYPERV_IOMMU=y +# CONFIG_VIRTIO_IOMMU is not set + +# +# Remoteproc drivers +# +CONFIG_REMOTEPROC=y +CONFIG_REMOTEPROC_CDEV=y +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +CONFIG_RPMSG=m +# CONFIG_RPMSG_CHAR is not set +CONFIG_RPMSG_NS=m +CONFIG_RPMSG_QCOM_GLINK=m +CONFIG_RPMSG_QCOM_GLINK_RPM=m +CONFIG_RPMSG_VIRTIO=m +# end of Rpmsg drivers + +CONFIG_SOUNDWIRE=y + +# +# SoundWire Devices +# +CONFIG_SOUNDWIRE_CADENCE=m +CONFIG_SOUNDWIRE_INTEL=m +CONFIG_SOUNDWIRE_QCOM=m +CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# end of Enable LiteX SoC Builder specific drivers + +# +# Qualcomm SoC drivers +# +CONFIG_QCOM_QMI_HELPERS=m +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m +# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set +# CONFIG_DEVFREQ_GOV_POWERSAVE is not set +# CONFIG_DEVFREQ_GOV_USERSPACE is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_AXP288=m +# CONFIG_EXTCON_FSA9480 is not set +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_INT3496=m +CONFIG_EXTCON_INTEL_CHT_WC=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX3355=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +# CONFIG_EXTCON_PTN5150 is not set +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTCON_USBC_CROS_EC=m +# CONFIG_EXTCON_USBC_TUSB320 is not set +CONFIG_MEMORY=y +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +# CONFIG_IIO_BUFFER_DMA is not set +# CONFIG_IIO_BUFFER_DMAENGINE is not set +CONFIG_IIO_BUFFER_HW_CONSUMER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_TRIGGERED_BUFFER=m +CONFIG_IIO_CONFIGFS=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_SW_DEVICE=m +CONFIG_IIO_SW_TRIGGER=m +CONFIG_IIO_TRIGGERED_EVENT=m + +# +# Accelerometers +# +CONFIG_ADIS16201=m +CONFIG_ADIS16209=m +CONFIG_ADXL345=m +CONFIG_ADXL345_I2C=m +CONFIG_ADXL345_SPI=m +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +CONFIG_BMA220=m +# CONFIG_BMA400 is not set +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +# CONFIG_BMI088_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_FXLS8962AF_I2C is not set +# CONFIG_FXLS8962AF_SPI is not set +CONFIG_HID_SENSOR_ACCEL_3D=m +# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +CONFIG_KXSD9=m +CONFIG_KXSD9_SPI=m +CONFIG_KXSD9_I2C=m +CONFIG_KXCJK1013=m +# CONFIG_MC3230 is not set +CONFIG_MMA7455=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_SCA3000=m +# CONFIG_SCA3300 is not set +CONFIG_STK8312=m +CONFIG_STK8BA50=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_AD_SIGMA_DELTA=m +# CONFIG_AD7091R5 is not set +CONFIG_AD7124=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7291=m +CONFIG_AD7292=m +CONFIG_AD7298=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7766=m +# CONFIG_AD7768_1 is not set +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD7949=m +CONFIG_AD799X=m +# CONFIG_AXP20X_ADC is not set +CONFIG_AXP288_ADC=m +# CONFIG_CC10001_ADC is not set +CONFIG_DLN2_ADC=m +CONFIG_HI8435=m +# CONFIG_HX711 is not set +CONFIG_INA2XX_ADC=m +CONFIG_LP8788_ADC=m +CONFIG_LTC2471=m +# CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set +# CONFIG_LTC2497 is not set +CONFIG_MAX1027=m +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1241 is not set +CONFIG_MAX1363=m +# CONFIG_MAX9611 is not set +CONFIG_MCP320X=m +CONFIG_MCP3422=m +# CONFIG_MCP3911 is not set +# CONFIG_MP2629_ADC is not set +CONFIG_NAU7802=m +CONFIG_PALMAS_GPADC=m +CONFIG_QCOM_SPMI_IADC=m +# CONFIG_QCOM_SPMI_VADC is not set +# CONFIG_QCOM_SPMI_ADC5 is not set +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC0832=m +CONFIG_TI_ADC084S021=m +# CONFIG_TI_ADC12138 is not set +CONFIG_TI_ADC108S102=m +CONFIG_TI_ADC128S052=m +# CONFIG_TI_ADC161S626 is not set +CONFIG_TI_ADS1015=m +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS131E08 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_TI_TSC2046 is not set +CONFIG_TWL4030_MADC=m +CONFIG_TWL6030_GPADC=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_XILINX_XADC=m +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +# end of Analog to digital and digital to analog converters + +# +# Analog Front Ends +# +# end of Analog Front Ends + +# +# Amplifiers +# +CONFIG_AD8366=m +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Capacitance to digital converters +# +CONFIG_AD7150=m +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +CONFIG_ATLAS_PH_SENSOR=m +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +CONFIG_CCS811=m +CONFIG_IAQCORE=m +# CONFIG_PMS7003 is not set +CONFIG_SCD30_CORE=m +CONFIG_SCD30_I2C=m +CONFIG_SCD30_SERIAL=m +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SENSIRION_SGP40 is not set +# CONFIG_SPS30_I2C is not set +# CONFIG_SPS30_SERIAL is not set +CONFIG_VZ89X=m +# end of Chemical Sensors + +CONFIG_IIO_CROS_EC_SENSORS_CORE=m +CONFIG_IIO_CROS_EC_SENSORS=m +CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m + +# +# Hid Sensor IIO Common +# +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +# end of Hid Sensor IIO Common + +CONFIG_IIO_MS_SENSORS_I2C=m + +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m + +# +# Digital to analog converters +# +CONFIG_AD5064=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5592R_BASE=m +CONFIG_AD5592R=m +CONFIG_AD5593R=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +CONFIG_AD5755=m +CONFIG_AD5758=m +CONFIG_AD5761=m +CONFIG_AD5764=m +# CONFIG_AD5766 is not set +# CONFIG_AD5770R is not set +CONFIG_AD5791=m +CONFIG_AD7303=m +# CONFIG_AD8801 is not set +# CONFIG_CIO_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +CONFIG_M62332=m +CONFIG_MAX517=m +CONFIG_MCP4725=m +CONFIG_MCP4922=m +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# CONFIG_IIO_SIMPLE_DUMMY is not set +# end of IIO dummy driver + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +CONFIG_AD9523=m +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +CONFIG_ADF4350=m +CONFIG_ADF4371=m +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16260=m +CONFIG_ADXRS290=m +CONFIG_ADXRS450=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +# CONFIG_FXAS21002C is not set +CONFIG_HID_SENSOR_GYRO_3D=m +# CONFIG_MPU3050_I2C is not set +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_ITG3200=m +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +CONFIG_AFE4403=m +CONFIG_AFE4404=m +CONFIG_MAX30100=m +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +CONFIG_AM2315=m +CONFIG_DHT11=m +CONFIG_HDC100X=m +CONFIG_HDC2010=m +CONFIG_HID_SENSOR_HUMIDITY=m +CONFIG_HTS221=m +CONFIG_HTS221_I2C=m +CONFIG_HTS221_SPI=m +CONFIG_HTU21=m +CONFIG_SI7005=m +CONFIG_SI7020=m +# end of Humidity sensors + +# +# Inertial measurement units +# +CONFIG_ADIS16400=m +CONFIG_ADIS16460=m +# CONFIG_ADIS16475 is not set +CONFIG_ADIS16480=m +CONFIG_BMI160=m +CONFIG_BMI160_I2C=m +CONFIG_BMI160_SPI=m +CONFIG_FXOS8700=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +# CONFIG_KMX61 is not set +CONFIG_INV_ICM42600=m +CONFIG_INV_ICM42600_I2C=m +CONFIG_INV_ICM42600_SPI=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_INV_MPU6050_I2C=m +CONFIG_INV_MPU6050_SPI=m +# CONFIG_IIO_ST_LSM6DSX is not set +# CONFIG_IIO_ST_LSM9DS0 is not set +# end of Inertial measurement units + +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y + +# +# Light sensors +# +CONFIG_ACPI_ALS=m +CONFIG_ADJD_S311=m +# CONFIG_ADUX1020 is not set +# CONFIG_AL3010 is not set +CONFIG_AL3320A=m +CONFIG_APDS9300=m +CONFIG_APDS9960=m +# CONFIG_AS73211 is not set +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_CM32181=m +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +CONFIG_CM36651=m +CONFIG_IIO_CROS_EC_LIGHT_PROX=m +# CONFIG_GP2AP002 is not set +CONFIG_GP2AP020A00F=m +# CONFIG_IQS621_ALS is not set +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_ISL29125=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +# CONFIG_JSA1212 is not set +CONFIG_RPR0521=m +CONFIG_LTR501=m +# CONFIG_LV0104CS is not set +CONFIG_MAX44000=m +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set +CONFIG_OPT3001=m +CONFIG_PA12203001=m +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +CONFIG_STK3310=m +CONFIG_ST_UVIS25=m +CONFIG_ST_UVIS25_I2C=m +CONFIG_ST_UVIS25_SPI=m +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_SENSORS_TSL2563=m +CONFIG_TSL2583=m +# CONFIG_TSL2591 is not set +# CONFIG_TSL2772 is not set +CONFIG_TSL4531=m +CONFIG_US5182D=m +CONFIG_VCNL4000=m +# CONFIG_VCNL4035 is not set +# CONFIG_VEML6030 is not set +CONFIG_VEML6070=m +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +CONFIG_AK8975=m +CONFIG_AK09911=m +CONFIG_BMC150_MAGN=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_MAG3110=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_YAMAHA_YAS530 is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# end of Multiplexers + +# +# Inclinometer sensors +# +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +# end of Inclinometer sensors + +# +# Triggers - standalone +# +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=m +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# CONFIG_IQS624_POS is not set +# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5110 is not set +# CONFIG_AD5272 is not set +CONFIG_DS1803=m +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +CONFIG_MCP4131=m +CONFIG_MCP4531=m +# CONFIG_MCP41010 is not set +CONFIG_TPL0102=m +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +CONFIG_IIO_CROS_EC_BARO=m +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set +CONFIG_HID_SENSOR_PRESS=m +CONFIG_HP03=m +# CONFIG_ICP10100 is not set +CONFIG_MPL115=m +CONFIG_MPL115_I2C=m +CONFIG_MPL115_SPI=m +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +CONFIG_MS5637=m +CONFIG_IIO_ST_PRESS=m +CONFIG_IIO_ST_PRESS_I2C=m +CONFIG_IIO_ST_PRESS_SPI=m +CONFIG_T5403=m +CONFIG_HP206C=m +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +CONFIG_AS3935=m +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_CROS_EC_MKBP_PROXIMITY is not set +# CONFIG_ISL29501 is not set +CONFIG_LIDAR_LITE_V2=m +# CONFIG_MB1232 is not set +# CONFIG_PING is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +CONFIG_AD2S90=m +CONFIG_AD2S1200=m +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_IQS620AT_TEMP is not set +# CONFIG_LTC2983 is not set +# CONFIG_MAXIM_THERMOCOUPLE is not set +CONFIG_HID_SENSOR_TEMP=m +CONFIG_MLX90614=m +CONFIG_MLX90632=m +CONFIG_TMP006=m +# CONFIG_TMP007 is not set +# CONFIG_TMP117 is not set +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +# CONFIG_MAX31856 is not set +# end of Temperature sensors + +CONFIG_NTB=m +# CONFIG_NTB_MSI is not set +CONFIG_NTB_AMD=m +CONFIG_NTB_IDT=m +CONFIG_NTB_INTEL=m +# CONFIG_NTB_EPF is not set +# CONFIG_NTB_SWITCHTEC is not set +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_PERF=m +CONFIG_NTB_TRANSPORT=m +CONFIG_VME_BUS=y + +# +# VME Bridge Drivers +# +CONFIG_VME_CA91CX42=m +CONFIG_VME_TSI148=m +# CONFIG_VME_FAKE is not set + +# +# VME Board Drivers +# +CONFIG_VMIVME_7805=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m +CONFIG_PWM=y +CONFIG_PWM_SYSFS=y +# CONFIG_PWM_DEBUG is not set +CONFIG_PWM_CRC=y +CONFIG_PWM_CROS_EC=m +# CONFIG_PWM_DWC is not set +CONFIG_PWM_IQS620A=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_LPSS=m +CONFIG_PWM_LPSS_PCI=m +CONFIG_PWM_LPSS_PLATFORM=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m + +# +# IRQ chip support +# +CONFIG_MADERA_IRQ=m +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_TI_SYSCON is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_USB_LGM_PHY=m +# CONFIG_PHY_CAN_TRANSCEIVER is not set +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_CPCAP_USB=m +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_TUSB1210=m +CONFIG_PHY_INTEL_LGM_EMMC=m +# end of PHY Subsystem + +CONFIG_POWERCAP=y +CONFIG_INTEL_RAPL_CORE=m +CONFIG_INTEL_RAPL=m +CONFIG_IDLE_INJECT=y +# CONFIG_DTPM is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +CONFIG_RAS=y +# CONFIG_RAS_CEC is not set +CONFIG_USB4=m +# CONFIG_USB4_DEBUGFS_WRITE is not set +# CONFIG_USB4_DMA_TEST is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +CONFIG_LIBNVDIMM=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_BLK=m +CONFIG_ND_CLAIM=y +CONFIG_ND_BTT=m +CONFIG_BTT=y +CONFIG_ND_PFN=m +CONFIG_NVDIMM_PFN=y +CONFIG_NVDIMM_DAX=y +CONFIG_NVDIMM_KEYS=y +CONFIG_DAX_DRIVER=y +CONFIG_DAX=y +CONFIG_DEV_DAX=m +CONFIG_DEV_DAX_PMEM=m +CONFIG_DEV_DAX_KMEM=m +CONFIG_DEV_DAX_PMEM_COMPAT=m +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_NVMEM_SPMI_SDAM=m +# CONFIG_NVMEM_RMEM is not set + +# +# HW tracing support +# +CONFIG_STM=m +CONFIG_STM_PROTO_BASIC=m +CONFIG_STM_PROTO_SYS_T=m +CONFIG_STM_DUMMY=m +CONFIG_STM_SOURCE_CONSOLE=m +CONFIG_STM_SOURCE_HEARTBEAT=m +# CONFIG_STM_SOURCE_FTRACE is not set +CONFIG_INTEL_TH=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_ACPI=m +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_STH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PTI=m +# CONFIG_INTEL_TH_DEBUG is not set +# end of HW tracing support + +CONFIG_FPGA=m +# CONFIG_ALTERA_PR_IP_CORE is not set +# CONFIG_FPGA_MGR_ALTERA_PS_SPI is not set +# CONFIG_FPGA_MGR_ALTERA_CVP is not set +# CONFIG_FPGA_MGR_XILINX_SPI is not set +# CONFIG_FPGA_MGR_MACHXO2_SPI is not set +# CONFIG_FPGA_BRIDGE is not set +# CONFIG_FPGA_DFL is not set +CONFIG_TEE=m + +# +# TEE drivers +# +CONFIG_AMDTEE=m +# end of TEE drivers + +CONFIG_PM_OPP=y +CONFIG_UNISYS_VISORBUS=m +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +CONFIG_INTERCONNECT=y +CONFIG_COUNTER=m +# CONFIG_INTERRUPT_CNT is not set +# CONFIG_INTEL_QEP is not set +CONFIG_MOST=m +CONFIG_MOST_USB_HDM=m +CONFIG_MOST_CDEV=m +# CONFIG_MOST_SND is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +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_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=m +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +# CONFIG_F2FS_CHECK_FS is not set +# CONFIG_F2FS_FAULT_INJECTION is not set +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_FS_LZO=y +CONFIG_F2FS_FS_LZORLE=y +CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZ4HC=y +CONFIG_F2FS_FS_ZSTD=y +CONFIG_F2FS_IOSTAT=y +CONFIG_FS_DAX=y +CONFIG_FS_DAX_PMD=y +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +CONFIG_EXPORTFS_BLOCK_OPS=y +CONFIG_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +CONFIG_AUTOFS4_FS=y +CONFIG_AUTOFS_FS=y +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_VIRTIO_FS=m +CONFIG_FUSE_DAX=y +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 +# +CONFIG_NETFS_SUPPORT=m +CONFIG_NETFS_STATS=y +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +CONFIG_FSCACHE_DEBUG=y +CONFIG_CACHEFILES=m +CONFIG_CACHEFILES_DEBUG=y +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_EXFAT_FS=m +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +CONFIG_NTFS3_FS=m +# CONFIG_NTFS3_64BIT_CLUSTER is not set +# CONFIG_NTFS3_LZX_XPRESS is not set +# CONFIG_NTFS3_FS_POSIX_ACL is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_PID_ARCH_STATUS=y +CONFIG_PROC_CPU_RESCTRL=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TMPFS_INODE64=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y +# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +CONFIG_EFIVAR_FS=y +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ORANGEFS_FS=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_SECURITY=y +CONFIG_UBIFS_FS_AUTHENTICATION=y +CONFIG_CRAMFS=y +CONFIG_CRAMFS_BLOCKDEV=y +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +CONFIG_SQUASHFS_DECOMP_MULTI=y +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_DEFLATE_COMPRESS=m +CONFIG_PSTORE_LZO_COMPRESS=m +CONFIG_PSTORE_LZ4_COMPRESS=m +CONFIG_PSTORE_LZ4HC_COMPRESS=m +CONFIG_PSTORE_842_COMPRESS=y +CONFIG_PSTORE_ZSTD_COMPRESS=y +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +# CONFIG_PSTORE_LZO_COMPRESS_DEFAULT is not set +# CONFIG_PSTORE_LZ4_COMPRESS_DEFAULT is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS_DEFAULT is not set +# CONFIG_PSTORE_842_COMPRESS_DEFAULT is not set +# CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT is not set +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_PMSG=y +CONFIG_PSTORE_FTRACE=y +CONFIG_PSTORE_RAM=m +# CONFIG_PSTORE_BLK is not set +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set +CONFIG_EROFS_FS=m +# CONFIG_EROFS_FS_DEBUG is not set +CONFIG_EROFS_FS_XATTR=y +CONFIG_EROFS_FS_POSIX_ACL=y +# CONFIG_EROFS_FS_SECURITY is not set +# CONFIG_EROFS_FS_ZIP is not set +CONFIG_VBOXSF_FS=m +CONFIG_AUFS_FS=y +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +CONFIG_AUFS_SBILIST=y +CONFIG_AUFS_HNOTIFY=y +CONFIG_AUFS_HFSNOTIFY=y +CONFIG_AUFS_EXPORT=y +CONFIG_AUFS_INO_T_64=y +CONFIG_AUFS_XATTR=y +CONFIG_AUFS_FHSM=y +CONFIG_AUFS_RDU=y +# CONFIG_AUFS_DIRREN is not set +CONFIG_AUFS_SHWH=y +CONFIG_AUFS_BR_RAMFS=y +CONFIG_AUFS_BR_FUSE=y +CONFIG_AUFS_POLL=y +CONFIG_AUFS_BR_HFSPLUS=y +CONFIG_AUFS_BDEV_LOOP=y +CONFIG_AUFS_DEBUG=y +CONFIG_AUFS_MAGIC_SYSRQ=y +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +# CONFIG_NFS_V4_1_MIGRATION is not set +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +# CONFIG_NFS_V4_2_READ_PLUS is not set +CONFIG_NFSD=m +# CONFIG_NFSD_V2 is not set +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_BLOCKLAYOUT=y +CONFIG_NFSD_SCSILAYOUT=y +CONFIG_NFSD_FLEXFILELAYOUT=y +CONFIG_NFSD_V4_2_INTER_SSC=y +# CONFIG_NFSD_V4_SECURITY_LABEL is not set +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_V4_2_SSC_HELPER=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_FS_SECURITY_LABEL=y +CONFIG_CIFS=m +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +CONFIG_CIFS_DFS_UPCALL=y +# CONFIG_CIFS_SWN_UPCALL is not set +# CONFIG_CIFS_SMB_DIRECT is not set +CONFIG_CIFS_FSCACHE=y +# CONFIG_SMB_SERVER is not set +CONFIG_SMBFS_COMMON=m +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +# CONFIG_9P_FS_SECURITY is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y +# CONFIG_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +CONFIG_TRUSTED_KEYS=m +CONFIG_ENCRYPTED_KEYS=y +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_KEY_NOTIFICATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_INFINIBAND is not set +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_INTEL_TXT=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_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_SECURITY_LOCKDOWN_LSM is not set +CONFIG_SECURITY_LANDLOCK=y +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_LSM="" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +CONFIG_INIT_STACK_NONE=y +# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +# CONFIG_INIT_STACK_ALL_ZERO is not set +# CONFIG_GCC_PLUGIN_STACKLEAK is not set +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=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_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=m +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_SIMD=m +CONFIG_CRYPTO_ENGINE=m + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_ECC=m +CONFIG_CRYPTO_ECDH=m +# CONFIG_CRYPTO_ECDSA is not set +CONFIG_CRYPTO_ECRDSA=m +CONFIG_CRYPTO_SM2=m +CONFIG_CRYPTO_CURVE25519=m +CONFIG_CRYPTO_CURVE25519_X86=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=y +# CONFIG_CRYPTO_OFB is not set +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_KEYWRAP=m +CONFIG_CRYPTO_NHPOLY1305=m +CONFIG_CRYPTO_NHPOLY1305_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_AVX2=m +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_ESSIV=m + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_XXHASH=y +CONFIG_CRYPTO_BLAKE2B=y +CONFIG_CRYPTO_BLAKE2S_X86=y +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=y +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_SM3=m +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SM4=m +# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=y +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ZSTD=y + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +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=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +# CONFIG_CRYPTO_STATS is not set +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_ATMEL_I2C=m +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_SP_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_SP_PSP=y +# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_CHELSIO=m +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_TPM_KEY_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +CONFIG_SIGNED_PE_FILE_VERIFICATION=y + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_LINEAR_RANGES=y +CONFIG_PACKING=y +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_CORDIC=m +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m +CONFIG_CRYPTO_LIB_CHACHA=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m +CONFIG_CRYPTO_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_LIB_SM4=m +# end of Crypto library routines + +CONFIG_LIB_MEMNEQ=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +CONFIG_CRC64=y +CONFIG_CRC4=m +CONFIG_CRC7=m +CONFIG_LIBCRC32C=y +CONFIG_CRC8=m +CONFIG_XXHASH=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_842_COMPRESS=y +CONFIG_842_DECOMPRESS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_BCH=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_SWIOTLB=y +CONFIG_DMA_CMA=y +# CONFIG_DMA_PERNUMA_CMA is not set + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=0 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +CONFIG_IOMMU_HELPER=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_DIMLIB=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_MEMREGION=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_COPY_MC=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +CONFIG_PARMAN=m +CONFIG_OBJAGG=m +# end of Library routines + +CONFIG_PLDMFW=y +CONFIG_ASN1_ENCODER=m + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_AS_HAS_NON_CONST_LEB128=y + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +CONFIG_FRAME_WARN=2048 +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +CONFIG_DEBUG_SECTION_MISMATCH=y +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set +CONFIG_STACK_VALIDATION=y +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set +# end of Generic Kernel Debugging Instruments + +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_PAGE_REF is not set +CONFIG_DEBUG_RODATA_TEST=y +CONFIG_ARCH_HAS_DEBUG_WX=y +CONFIG_DEBUG_WX=y +CONFIG_GENERIC_PTDUMP=y +CONFIG_PTDUMP_CORE=y +# CONFIG_PTDUMP_DEBUGFS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y +# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +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_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# end of Scheduler Debugging + +CONFIG_DEBUG_TIMEKEEPING=y + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# 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_CPU_HOTPLUG_STATE_CONTROL is not set +CONFIG_LATENCYTOP=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=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_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_OBJTOOL_MCOUNT=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_STACK_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_SCHED_TRACER=y +# CONFIG_HWLAT_TRACER is not set +# CONFIG_OSNOISE_TRACER is not set +# CONFIG_TIMERLAT_TRACER is not set +CONFIG_MMIOTRACE=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACER_SNAPSHOT=y +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENTS=y +# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +# CONFIG_BPF_KPROBE_OVERRIDE is not set +CONFIG_FTRACE_MCOUNT_RECORD=y +CONFIG_FTRACE_MCOUNT_USE_CC=y +# CONFIG_SYNTH_EVENTS is not set +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACE_EVENT_INJECT is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +CONFIG_RING_BUFFER_BENCHMARK=m +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_RECORD_RECURSION is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set +# CONFIG_MMIOTRACE_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y + +# +# x86 Debugging +# +CONFIG_EARLY_PRINTK_USB=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_DEBUG is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +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_DEBUG_BOOT_PARAMS 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=m +CONFIG_UNWINDER_ORC=y +# CONFIG_UNWINDER_FRAME_POINTER is not set +# CONFIG_UNWINDER_GUESS is not set +# end of x86 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set +CONFIG_FUNCTION_ERROR_INJECTION=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_LKDTM is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_DIV64 is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_RBTREE_TEST=m +# CONFIG_REED_SOLOMON_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +CONFIG_ATOMIC64_SELFTEST=y +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_TEST_HEXDUMP=m +# CONFIG_STRING_SELFTEST is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set +CONFIG_TEST_KSTRTOX=y +CONFIG_TEST_PRINTF=m +# CONFIG_TEST_SCANF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +CONFIG_TEST_XARRAY=m +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_PARMAN is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_BLACKHOLE_DEV is not set +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_LIVEPATCH is not set +# CONFIG_TEST_OBJAGG is not set +# CONFIG_TEST_STACKINIT is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_TEST_FPU is not set +# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# CONFIG_HYPERV_TESTING is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/kernel/kernel/files/patches/aufs6/aufs6-base.patch b/kernel/kernel/files/patches/aufs6/aufs6-base.patch new file mode 100644 index 00000000..0e894341 --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/aufs6-base.patch @@ -0,0 +1,209 @@ +SPDX-License-Identifier: GPL-2.0 +aufs6.6 base patch + +diff --git a/MAINTAINERS b/MAINTAINERS +index dd5de540ec0b..1b495555a80c 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -3334,6 +3334,19 @@ F: include/uapi/linux/audit.h + F: kernel/audit* + F: lib/*audit.c + ++AUFS (advanced multi layered unification filesystem) FILESYSTEM ++M: "J. R. Okajima" ++L: aufs-users@lists.sourceforge.net (members only) ++L: linux-unionfs@vger.kernel.org ++S: Supported ++W: http://aufs.sourceforge.net ++T: git://github.com/sfjro/aufs4-linux.git ++F: Documentation/ABI/testing/debugfs-aufs ++F: Documentation/ABI/testing/sysfs-aufs ++F: Documentation/filesystems/aufs/ ++F: fs/aufs/ ++F: include/uapi/linux/aufs_type.h ++ + AUXILIARY BUS DRIVER + M: Greg Kroah-Hartman + R: Dave Ertman +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index 9f2d412fc560..1fefc6a8d049 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -645,6 +645,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + goto done; + } + ++/* ++ * for AUFS ++ * no get/put for file. ++ */ ++struct file *loop_backing_file(struct super_block *sb) ++{ ++ struct file *ret; ++ struct loop_device *l; ++ ++ ret = NULL; ++ if (MAJOR(sb->s_dev) == LOOP_MAJOR) { ++ l = sb->s_bdev->bd_disk->private_data; ++ ret = l->lo_backing_file; ++ } ++ return ret; ++} ++EXPORT_SYMBOL_GPL(loop_backing_file); ++ + /* loop sysfs attributes */ + + static ssize_t loop_attr_show(struct device *dev, char *page, +diff --git a/fs/dcache.c b/fs/dcache.c +index 25ac74d30bff..6c930ceed526 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1345,7 +1345,7 @@ enum d_walk_ret { + * + * The @enter() callbacks are called with d_lock held. + */ +-static void d_walk(struct dentry *parent, void *data, ++void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *)) + { + struct dentry *this_parent; +diff --git a/fs/fcntl.c b/fs/fcntl.c +index e871009f6c88..d62e114c1b1a 100644 +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -34,7 +34,7 @@ + + #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) + +-static int setfl(int fd, struct file * filp, unsigned int arg) ++int setfl(int fd, struct file * filp, unsigned int arg) + { + struct inode * inode = file_inode(filp); + int error = 0; +@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned int arg) + + if (filp->f_op->check_flags) + error = filp->f_op->check_flags(arg); ++ if (!error && filp->f_op->setfl) ++ error = filp->f_op->setfl(filp, arg); + if (error) + return error; + +diff --git a/fs/namespace.c b/fs/namespace.c +index e157efc54023..6c57487f126b 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -872,6 +872,12 @@ static inline int check_mnt(struct mount *mnt) + return mnt->mnt_ns == current->nsproxy->mnt_ns; + } + ++/* for aufs, CONFIG_AUFS_BR_FUSE */ ++int is_current_mnt_ns(struct vfsmount *mnt) ++{ ++ return check_mnt(real_mount(mnt)); ++} ++ + /* + * vfsmount lock must be held for write + */ +diff --git a/fs/splice.c b/fs/splice.c +index d983d375ff11..7216ef993b5f 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -925,8 +925,8 @@ static int warn_unsupported(struct file *file, const char *op) + /* + * Attempt to initiate a splice from pipe to file. + */ +-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +- loff_t *ppos, size_t len, unsigned int flags) ++long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags) + { + if (unlikely(!out->f_op->splice_write)) + return warn_unsupported(out, "write"); +diff --git a/include/linux/fs.h b/include/linux/fs.h +index 4a40823c3c67..a46e516bfc32 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -1099,6 +1099,7 @@ extern void fasync_free(struct fasync_struct *); + /* can be called from interrupts */ + extern void kill_fasync(struct fasync_struct **, int, int); + ++extern int setfl(int fd, struct file *filp, unsigned int arg); + extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); + extern int f_setown(struct file *filp, int who, int force); + extern void f_delown(struct file *filp); +@@ -1872,6 +1873,7 @@ struct file_operations { + int (*lock) (struct file *, int, struct file_lock *); + unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); + int (*check_flags)(int); ++ int (*setfl)(struct file *, unsigned long); + int (*flock) (struct file *, int, struct file_lock *); + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); +diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h +index dc2844b071c2..069ffb776c2c 100644 +--- a/include/linux/lockdep.h ++++ b/include/linux/lockdep.h +@@ -249,6 +249,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, + return lock->key == key; + } + ++struct lock_class *lockdep_hlock_class(struct held_lock *hlock); ++ + /* + * Acquire a lock. + * +diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h +index 8f882f5881e8..6b9808f09843 100644 +--- a/include/linux/mnt_namespace.h ++++ b/include/linux/mnt_namespace.h +@@ -7,12 +7,15 @@ struct mnt_namespace; + struct fs_struct; + struct user_namespace; + struct ns_common; ++struct vfsmount; + + extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, + struct user_namespace *, struct fs_struct *); + extern void put_mnt_ns(struct mnt_namespace *ns); + extern struct ns_common *from_mnt_ns(struct mnt_namespace *); + ++extern int is_current_mnt_ns(struct vfsmount *mnt); ++ + extern const struct file_operations proc_mounts_operations; + extern const struct file_operations proc_mountinfo_operations; + extern const struct file_operations proc_mountstats_operations; +diff --git a/include/linux/splice.h b/include/linux/splice.h +index 6c461573434d..f08de3775987 100644 +--- a/include/linux/splice.h ++++ b/include/linux/splice.h +@@ -99,4 +99,7 @@ extern void splice_shrink_spd(struct splice_pipe_desc *); + + extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + extern const struct pipe_buf_operations default_pipe_buf_ops; ++ ++extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags); + #endif +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c +index e85b5ad3e206..db4297f60bd3 100644 +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -218,7 +218,7 @@ unsigned long max_lock_class_idx; + struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; + DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); + +-static inline struct lock_class *hlock_class(struct held_lock *hlock) ++inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) + { + unsigned int class_idx = hlock->class_idx; + +@@ -239,6 +239,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) + */ + return lock_classes + class_idx; + } ++#define hlock_class(hlock) lockdep_hlock_class(hlock) + + #ifdef CONFIG_LOCK_STAT + static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); diff --git a/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch b/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch new file mode 100644 index 00000000..76b1dbae --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch @@ -0,0 +1,24 @@ +SPDX-License-Identifier: GPL-2.0 +aufs6.6 kbuild patch + +diff --git a/fs/Kconfig b/fs/Kconfig +index aa7e03cc1941..bf780967b6c4 100644 +--- a/fs/Kconfig ++++ b/fs/Kconfig +@@ -331,6 +331,7 @@ source "fs/sysv/Kconfig" + source "fs/ufs/Kconfig" + source "fs/erofs/Kconfig" + source "fs/vboxsf/Kconfig" ++source "fs/aufs/Kconfig" + + endif # MISC_FILESYSTEMS + +diff --git a/fs/Makefile b/fs/Makefile +index f9541f40be4e..3a0e13ee39e7 100644 +--- a/fs/Makefile ++++ b/fs/Makefile +@@ -129,3 +129,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ + obj-$(CONFIG_EROFS_FS) += erofs/ + obj-$(CONFIG_VBOXSF_FS) += vboxsf/ + obj-$(CONFIG_ZONEFS_FS) += zonefs/ ++obj-$(CONFIG_AUFS_FS) += aufs/ diff --git a/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch b/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch new file mode 100644 index 00000000..757f1737 --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch @@ -0,0 +1,241 @@ +SPDX-License-Identifier: GPL-2.0 +aufs6.6 loopback patch + +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index 1fefc6a8d049..86f1f66305d2 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -54,7 +54,7 @@ struct loop_device { + int lo_flags; + char lo_file_name[LO_NAME_SIZE]; + +- struct file * lo_backing_file; ++ struct file *lo_backing_file, *lo_backing_virt_file; + struct block_device *lo_device; + + gfp_t old_gfp_mask; +@@ -510,6 +510,15 @@ static inline void loop_update_dio(struct loop_device *lo) + lo->use_dio); + } + ++static struct file *loop_real_file(struct file *file) ++{ ++ struct file *f = NULL; ++ ++ if (file->f_path.dentry->d_sb->s_op->real_loop) ++ f = file->f_path.dentry->d_sb->s_op->real_loop(file); ++ return f; ++} ++ + static void loop_reread_partitions(struct loop_device *lo) + { + int rc; +@@ -567,6 +576,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + { + struct file *file = fget(arg); + struct file *old_file; ++ struct file *f, *virt_file = NULL, *old_virt_file; + int error; + bool partscan; + bool is_loop; +@@ -590,11 +600,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + if (!(lo->lo_flags & LO_FLAGS_READ_ONLY)) + goto out_err; + ++ f = loop_real_file(file); ++ if (f) { ++ virt_file = file; ++ file = f; ++ get_file(file); ++ } ++ + error = loop_validate_file(file, bdev); + if (error) + goto out_err; + + old_file = lo->lo_backing_file; ++ old_virt_file = lo->lo_backing_virt_file; + + error = -EINVAL; + +@@ -607,6 +625,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + blk_mq_freeze_queue(lo->lo_queue); + mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); + lo->lo_backing_file = file; ++ lo->lo_backing_virt_file = virt_file; + lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping); + mapping_set_gfp_mask(file->f_mapping, + lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); +@@ -629,6 +648,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + * dependency. + */ + fput(old_file); ++ if (old_virt_file) ++ fput(old_virt_file); + if (partscan) + loop_reread_partitions(lo); + +@@ -642,6 +663,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + loop_global_unlock(lo, is_loop); + out_putf: + fput(file); ++ if (virt_file) ++ fput(virt_file); + goto done; + } + +@@ -1013,6 +1036,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, + const struct loop_config *config) + { + struct file *file = fget(config->fd); ++ struct file *f, *virt_file = NULL; + struct inode *inode; + struct address_space *mapping; + int error; +@@ -1028,6 +1052,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, + /* This is safe, since we have a reference from open(). */ + __module_get(THIS_MODULE); + ++ f = loop_real_file(file); ++ if (f) { ++ virt_file = file; ++ file = f; ++ get_file(file); ++ } ++ + /* + * If we don't hold exclusive handle for the device, upgrade to it + * here to avoid changing device under exclusive owner. +@@ -1091,6 +1122,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, + lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO; + lo->lo_device = bdev; + lo->lo_backing_file = file; ++ lo->lo_backing_virt_file = virt_file; + lo->old_gfp_mask = mapping_gfp_mask(mapping); + mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); + +@@ -1146,6 +1178,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, + bd_abort_claiming(bdev, loop_configure); + out_putf: + fput(file); ++ if (virt_file) ++ fput(virt_file); + /* This is safe: open() is still holding a reference. */ + module_put(THIS_MODULE); + return error; +@@ -1154,6 +1188,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, + static void __loop_clr_fd(struct loop_device *lo, bool release) + { + struct file *filp; ++ struct file *virt_filp = lo->lo_backing_virt_file; + gfp_t gfp = lo->old_gfp_mask; + + if (test_bit(QUEUE_FLAG_WC, &lo->lo_queue->queue_flags)) +@@ -1170,6 +1205,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release) + spin_lock_irq(&lo->lo_lock); + filp = lo->lo_backing_file; + lo->lo_backing_file = NULL; ++ lo->lo_backing_virt_file = NULL; + spin_unlock_irq(&lo->lo_lock); + + lo->lo_device = NULL; +@@ -1232,6 +1268,8 @@ static void __loop_clr_fd(struct loop_device *lo, bool release) + * fput can take open_mutex which is usually taken before lo_mutex. + */ + fput(filp); ++ if (virt_filp) ++ fput(virt_filp); + } + + static int loop_clr_fd(struct loop_device *lo) +diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c +index fa8a517ffd0c..c18f7bcef81b 100644 +--- a/fs/aufs/f_op.c ++++ b/fs/aufs/f_op.c +@@ -311,7 +311,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) + if (IS_ERR(h_file)) + goto out; + +- if (au_test_loopback_kthread()) { ++ if (0 && au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_path.dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; +diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c +index 58043e31e5f3..e2bfae6f9d59 100644 +--- a/fs/aufs/loop.c ++++ b/fs/aufs/loop.c +@@ -133,3 +133,19 @@ void au_loopback_fin(void) + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); + } ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* support the loopback block device insude aufs */ ++ ++struct file *aufs_real_loop(struct file *file) ++{ ++ struct file *f; ++ ++ BUG_ON(!au_test_aufs(file->f_path.dentry->d_sb)); ++ fi_read_lock(file); ++ f = au_hf_top(file); ++ fi_read_unlock(file); ++ AuDebugOn(!f); ++ return f; ++} +diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h +index 03d4908a6c03..34d356e181d5 100644 +--- a/fs/aufs/loop.h ++++ b/fs/aufs/loop.h +@@ -26,6 +26,8 @@ void au_warn_loopback(struct super_block *h_sb); + + int au_loopback_init(void); + void au_loopback_fin(void); ++ ++struct file *aufs_real_loop(struct file *file); + #else + AuStub(struct file *, loop_backing_file, return NULL, struct super_block *sb) + +@@ -36,6 +38,8 @@ AuStubVoid(au_warn_loopback, struct super_block *h_sb) + + AuStubInt0(au_loopback_init, void) + AuStubVoid(au_loopback_fin, void) ++ ++AuStub(struct file *, aufs_real_loop, return NULL, struct file *file) + #endif /* BLK_DEV_LOOP */ + + #endif /* __KERNEL__ */ +diff --git a/fs/aufs/super.c b/fs/aufs/super.c +index 07d3412e950f..c4a00f620e57 100644 +--- a/fs/aufs/super.c ++++ b/fs/aufs/super.c +@@ -758,7 +758,10 @@ const struct super_operations aufs_sop = { + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, +- .sync_fs = aufs_sync_fs ++ .sync_fs = aufs_sync_fs, ++#ifdef CONFIG_AUFS_BDEV_LOOP ++ .real_loop = aufs_real_loop ++#endif + }; + + /* ---------------------------------------------------------------------- */ +diff --git a/include/linux/fs.h b/include/linux/fs.h +index a46e516bfc32..a0d040eef83d 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -2027,6 +2027,11 @@ struct super_operations { + long (*free_cached_objects)(struct super_block *, + struct shrink_control *); + void (*shutdown)(struct super_block *sb); ++ ++#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE) ++ /* and aufs */ ++ struct file *(*real_loop)(struct file *); ++#endif + }; + + /* diff --git a/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch b/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch new file mode 100644 index 00000000..f1628f8a --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch @@ -0,0 +1,428 @@ +SPDX-License-Identifier: GPL-2.0 +aufs6.6 mmap patch + +diff --git a/fs/proc/base.c b/fs/proc/base.c +index ffd54617c354..29ec720c8038 100644 +--- a/fs/proc/base.c ++++ b/fs/proc/base.c +@@ -2218,7 +2218,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) + rc = -ENOENT; + vma = find_exact_vma(mm, vm_start, vm_end); + if (vma && vma->vm_file) { +- *path = vma->vm_file->f_path; ++ *path = vma_pr_or_file(vma)->f_path; + path_get(path); + rc = 0; + } +diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c +index 4d3493579458..42edd9a42c78 100644 +--- a/fs/proc/nommu.c ++++ b/fs/proc/nommu.c +@@ -39,7 +39,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) + file = region->vm_file; + + if (file) { +- struct inode *inode = file_inode(region->vm_file); ++ struct inode *inode; ++ ++ file = vmr_pr_or_file(region); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + } +diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c +index 3dd5be96691b..40d9d970b308 100644 +--- a/fs/proc/task_mmu.c ++++ b/fs/proc/task_mmu.c +@@ -271,7 +271,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma) + const char *name = NULL; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; +@@ -1943,7 +1946,7 @@ static int show_numa_map(struct seq_file *m, void *v) + struct proc_maps_private *proc_priv = &numa_priv->proc_maps; + struct vm_area_struct *vma = v; + struct numa_maps *md = &numa_priv->md; +- struct file *file = vma->vm_file; ++ struct file *file = vma_pr_or_file(vma); + struct mm_struct *mm = vma->vm_mm; + struct mempolicy *pol; + char buffer[64]; +diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c +index 7cebd397cc26..81be1641c7fb 100644 +--- a/fs/proc/task_nommu.c ++++ b/fs/proc/task_nommu.c +@@ -137,7 +137,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) + file = vma->vm_file; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; +diff --git a/include/linux/mm.h b/include/linux/mm.h +index bf5d0b1b16f4..94b956eff452 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -2409,6 +2409,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, + static inline struct vm_area_struct *vma_lookup(struct mm_struct *mm, + unsigned long addr); + ++#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */ ++extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); ++extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], ++ int); ++extern void vma_do_get_file(struct vm_area_struct *, const char[], int); ++extern void vma_do_fput(struct vm_area_struct *, const char[], int); ++ ++#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ ++ __LINE__) ++#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ ++ __LINE__) ++#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) ++#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) ++ ++#ifndef CONFIG_MMU ++extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); ++extern void vmr_do_fput(struct vm_region *, const char[], int); ++ ++#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ ++ __LINE__) ++#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) ++#endif /* !CONFIG_MMU */ ++ ++#else ++ ++#define vma_file_update_time(vma) file_update_time((vma)->vm_file) ++#define vma_pr_or_file(vma) (vma)->vm_file ++#define vma_get_file(vma) get_file((vma)->vm_file) ++#define vma_fput(vma) fput((vma)->vm_file) ++ ++#ifndef CONFIG_MMU ++#define vmr_pr_or_file(region) (region)->vm_file ++#define vmr_fput(region) fput((region)->vm_file) ++#endif /* !CONFIG_MMU */ ++ ++#endif /* CONFIG_AUFS_FS */ ++ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, + void *buf, int len, unsigned int gup_flags); + extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index 36c5b43999e6..ce93e97f76a6 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h +@@ -524,6 +524,9 @@ struct vm_region { + unsigned long vm_top; /* region allocated to here */ + unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ + struct file *vm_file; /* the backing file or NULL */ ++#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */ ++ struct file *vm_prfile; /* the virtual backing file or NULL */ ++#endif + + int vm_usage; /* region usage count (access under nommu_region_sem) */ + bool vm_icache_flushed : 1; /* true if the icache has been flushed for +@@ -637,6 +640,9 @@ struct vm_area_struct { + unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE + units */ + struct file * vm_file; /* File we map to (can be NULL). */ ++#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */ ++ struct file *vm_prfile; /* shadow of vm_file */ ++#endif + void * vm_private_data; /* was vm_pte (shared mem) */ + + #ifdef CONFIG_ANON_VMA_NAME +diff --git a/kernel/fork.c b/kernel/fork.c +index 3b6d20dfb9a8..ccad0325cfa9 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -731,7 +731,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, + if (file) { + struct address_space *mapping = file->f_mapping; + +- get_file(file); ++ vma_get_file(tmp); + i_mmap_lock_write(mapping); + if (tmp->vm_flags & VM_SHARED) + mapping_allow_writable(mapping); +diff --git a/mm/Makefile b/mm/Makefile +index ec65984e2ade..d59461647ccd 100644 +--- a/mm/Makefile ++++ b/mm/Makefile +@@ -138,3 +138,4 @@ obj-$(CONFIG_IO_MAPPING) += io-mapping.o + obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o + obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o + obj-$(CONFIG_SHRINKER_DEBUG) += shrinker_debug.o ++obj-y += prfile.o +diff --git a/mm/filemap.c b/mm/filemap.c +index f0a15ce1bd1b..a5eba9bbe416 100644 +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -3626,7 +3626,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) + vm_fault_t ret = VM_FAULT_LOCKED; + + sb_start_pagefault(mapping->host->i_sb); +- file_update_time(vmf->vma->vm_file); ++ vma_file_update_time(vmf->vma); + folio_lock(folio); + if (folio->mapping != mapping) { + folio_unlock(folio); +diff --git a/mm/mmap.c b/mm/mmap.c +index 9e018d8dd7d6..047bd4a0ced8 100644 +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -140,7 +140,7 @@ static void remove_vma(struct vm_area_struct *vma, bool unreachable) + if (vma->vm_ops && vma->vm_ops->close) + vma->vm_ops->close(vma); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + mpol_put(vma_policy(vma)); + if (unreachable) + __vm_area_free(vma); +@@ -554,7 +554,7 @@ static inline void vma_complete(struct vma_prepare *vp, + if (vp->file) { + uprobe_munmap(vp->remove, vp->remove->vm_start, + vp->remove->vm_end); +- fput(vp->file); ++ vma_fput(vp->vma); + } + if (vp->remove->anon_vma) + anon_vma_merge(vp->vma, vp->remove); +@@ -2384,7 +2384,7 @@ int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma, + goto out_free_mpol; + + if (new->vm_file) +- get_file(new->vm_file); ++ vma_get_file(new); + + if (new->vm_ops && new->vm_ops->open) + new->vm_ops->open(new); +@@ -2801,7 +2801,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, + * and cause general protection fault + * ultimately. + */ +- fput(vma->vm_file); ++ vma_fput(vma); + vm_area_free(vma); + vma = merge; + /* Update vm_flags to pick up the change. */ +@@ -2896,7 +2896,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, + + if (file || vma->vm_file) { + unmap_and_free_vma: +- fput(vma->vm_file); ++ vma_fput(vma); + vma->vm_file = NULL; + + vma_iter_set(&vmi, vma->vm_end); +@@ -2958,6 +2958,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + unsigned long populate = 0; + unsigned long ret = -EINVAL; + struct file *file; ++#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */ ++ struct file *prfile; ++#endif + + pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/mm/remap_file_pages.rst.\n", + current->comm, current->pid); +@@ -3016,10 +3019,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + if (vma->vm_flags & VM_LOCKED) + flags |= MAP_LOCKED; + ++#if 1 /* IS_ENABLED(CONFIG_AUFS_FS) */ ++ vma_get_file(vma); ++ file = vma->vm_file; ++ prfile = vma->vm_prfile; ++ ret = do_mmap(vma->vm_file, start, size, ++ prot, flags, /*vm_flags*/0, pgoff, &populate, NULL); ++ if (!IS_ERR_VALUE(ret) && file && prfile) { ++ struct vm_area_struct *new_vma; ++ ++ new_vma = find_vma(mm, ret); ++ if (!new_vma->vm_prfile) ++ new_vma->vm_prfile = prfile; ++ if (prfile) ++ get_file(prfile); ++ } ++ /* ++ * two fput()s instead of vma_fput(vma), ++ * coz vma may not be available anymore. ++ */ ++ fput(file); ++ if (prfile) ++ fput(prfile); ++#else + file = get_file(vma->vm_file); + ret = do_mmap(vma->vm_file, start, size, + prot, flags, 0, pgoff, &populate, NULL); + fput(file); ++#endif /* CONFIG_AUFS_FS */ + out: + mmap_write_unlock(mm); + if (populate) +@@ -3370,7 +3397,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, + if (anon_vma_clone(new_vma, vma)) + goto out_free_mempol; + if (new_vma->vm_file) +- get_file(new_vma->vm_file); ++ vma_get_file(new_vma); + if (new_vma->vm_ops && new_vma->vm_ops->open) + new_vma->vm_ops->open(new_vma); + if (vma_link(mm, new_vma)) +@@ -3384,7 +3411,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, + new_vma->vm_ops->close(new_vma); + + if (new_vma->vm_file) +- fput(new_vma->vm_file); ++ vma_fput(new_vma); + + unlink_anon_vmas(new_vma); + out_free_mempol: +diff --git a/mm/nommu.c b/mm/nommu.c +index 7f9e9e5a0e12..69663f2bd4c4 100644 +--- a/mm/nommu.c ++++ b/mm/nommu.c +@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region) + up_write(&nommu_region_sem); + + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + + /* IO memory and memory shared directly out of the pagecache + * from ramfs/tmpfs mustn't be released here */ +@@ -603,7 +603,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) + if (vma->vm_ops && vma->vm_ops->close) + vma->vm_ops->close(vma); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + put_nommu_region(vma->vm_region); + vm_area_free(vma); + } +@@ -1135,7 +1135,7 @@ unsigned long do_mmap(struct file *file, + goto error_just_free; + } + } +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + region = pregion; + result = start; +@@ -1221,10 +1221,10 @@ unsigned long do_mmap(struct file *file, + error: + vma_iter_free(&vmi); + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + vm_area_free(vma); + return ret; + +diff --git a/mm/prfile.c b/mm/prfile.c +new file mode 100644 +index 000000000000..8f820a235364 +--- /dev/null ++++ b/mm/prfile.c +@@ -0,0 +1,86 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Mainly for aufs which mmap(2) different file and wants to print different ++ * path in /proc/PID/maps. ++ * Call these functions via macros defined in linux/mm.h. ++ * ++ * See Documentation/filesystems/aufs/design/06mmap.txt ++ * ++ * Copyright (c) 2014-2022 Junjro R. Okajima ++ * Copyright (c) 2014 Ian Campbell ++ */ ++ ++#include ++#include ++#include ++ ++/* #define PRFILE_TRACE */ ++static inline void prfile_trace(struct file *f, struct file *pr, ++ const char func[], int line, const char func2[]) ++{ ++#ifdef PRFILE_TRACE ++ if (pr) ++ pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); ++#endif ++} ++ ++void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ file_update_time(f); ++ if (f && pr) ++ file_update_time(pr); ++} ++ ++struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ get_file(f); ++ if (f && pr) ++ get_file(pr); ++} ++ ++void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++ ++#ifndef CONFIG_MMU ++struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], ++ int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vmr_do_fput(struct vm_region *region, const char func[], int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++#endif /* !CONFIG_MMU */ diff --git a/kernel/kernel/files/patches/mageia/fs-aufs5.10-symbol-exports.patch b/kernel/kernel/files/patches/aufs6/aufs6-standalone.patch similarity index 53% rename from kernel/kernel/files/patches/mageia/fs-aufs5.10-symbol-exports.patch rename to kernel/kernel/files/patches/aufs6/aufs6-standalone.patch index 49e6ec39..a9a8644c 100644 --- a/kernel/kernel/files/patches/mageia/fs-aufs5.10-symbol-exports.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6-standalone.patch @@ -1,11 +1,11 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN standalone patch +aufs6.6 standalone patch diff --git a/fs/dcache.c b/fs/dcache.c -index ddca6240e0db4..30dec552278dc 100644 +index 6c930ceed526..576ad162cdec 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1390,6 +1390,7 @@ void d_walk(struct dentry *parent, void *data, +@@ -1450,6 +1450,7 @@ void d_walk(struct dentry *parent, void *data, seq = 1; goto again; } @@ -13,7 +13,7 @@ index ddca6240e0db4..30dec552278dc 100644 struct check_mount { struct vfsmount *mnt; -@@ -2935,6 +2936,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) +@@ -3051,6 +3052,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) write_sequnlock(&rename_lock); } @@ -22,10 +22,10 @@ index ddca6240e0db4..30dec552278dc 100644 /** * d_ancestor - search for an ancestor diff --git a/fs/exec.c b/fs/exec.c -index 547a2390baf54..18d51d0face68 100644 +index 6518e33ea813..b67efac6a1ad 100644 --- a/fs/exec.c +++ b/fs/exec.c -@@ -113,6 +113,7 @@ bool path_noexec(const struct path *path) +@@ -112,6 +112,7 @@ bool path_noexec(const struct path *path) return (path->mnt->mnt_flags & MNT_NOEXEC) || (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); } @@ -34,10 +34,10 @@ index 547a2390baf54..18d51d0face68 100644 #ifdef CONFIG_USELIB /* diff --git a/fs/fcntl.c b/fs/fcntl.c -index 073ca6af500f3..b18afdf81e762 100644 +index d62e114c1b1a..ceef001775bd 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c -@@ -85,6 +85,7 @@ int setfl(int fd, struct file *filp, unsigned long arg) +@@ -87,6 +87,7 @@ int setfl(int fd, struct file * filp, unsigned int arg) out: return error; } @@ -46,10 +46,10 @@ index 073ca6af500f3..b18afdf81e762 100644 static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) diff --git a/fs/file_table.c b/fs/file_table.c -index 709ada3151da5..27a3e3c9f2a82 100644 +index ee21b3da9d08..c45ac36795dd 100644 --- a/fs/file_table.c +++ b/fs/file_table.c -@@ -162,6 +162,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred) +@@ -225,6 +225,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred) } return ERR_PTR(-ENFILE); } @@ -57,31 +57,11 @@ index 709ada3151da5..27a3e3c9f2a82 100644 /* * Variant of alloc_empty_file() that doesn't check and modify nr_files. -@@ -376,6 +377,7 @@ void __fput_sync(struct file *file) - } - - EXPORT_SYMBOL(fput); -+EXPORT_SYMBOL_GPL(__fput_sync); - - void __init files_init(void) - { -diff --git a/fs/inode.c b/fs/inode.c -index e7f0c614a58f3..6fe0a92a4c93c 100644 ---- a/fs/inode.c -+++ b/fs/inode.c -@@ -1776,6 +1776,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags) - return inode->i_op->update_time(inode, time, flags); - return generic_update_time(inode, time, flags); - } -+EXPORT_SYMBOL_GPL(update_time); - - /** - * touch_atime - update the access time diff --git a/fs/namespace.c b/fs/namespace.c -index 451dee24a546a..38078cbede431 100644 +index 6c57487f126b..16be9ac1c734 100644 --- a/fs/namespace.c +++ b/fs/namespace.c -@@ -431,6 +431,7 @@ void __mnt_drop_write(struct vfsmount *mnt) +@@ -466,6 +466,7 @@ void __mnt_drop_write(struct vfsmount *mnt) mnt_dec_writers(real_mount(mnt)); preempt_enable(); } @@ -89,7 +69,7 @@ index 451dee24a546a..38078cbede431 100644 /** * mnt_drop_write - give up write access to a mount -@@ -797,6 +798,7 @@ int is_current_mnt_ns(struct vfsmount *mnt) +@@ -877,6 +878,7 @@ int is_current_mnt_ns(struct vfsmount *mnt) { return check_mnt(real_mount(mnt)); } @@ -97,7 +77,7 @@ index 451dee24a546a..38078cbede431 100644 /* * vfsmount lock must be held for write -@@ -1961,6 +1963,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -2152,6 +2154,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } @@ -106,7 +86,7 @@ index 451dee24a546a..38078cbede431 100644 static void lock_mnt_tree(struct mount *mnt) { diff --git a/fs/notify/group.c b/fs/notify/group.c -index a4a4b1c64d32a..86dc2efb1850c 100644 +index 1de6631a3925..3008eb37a18d 100644 --- a/fs/notify/group.c +++ b/fs/notify/group.c @@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group) @@ -118,10 +98,10 @@ index a4a4b1c64d32a..86dc2efb1850c 100644 /* * Drop a reference to a group. Free it if it's through. diff --git a/fs/open.c b/fs/open.c -index 9af548fb841b0..2ff09b709f7bf 100644 +index 98f6601fbac6..8624e4ffa15b 100644 --- a/fs/open.c +++ b/fs/open.c -@@ -65,6 +65,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, +@@ -67,6 +67,7 @@ int do_truncate(struct mnt_idmap *idmap, struct dentry *dentry, inode_unlock(dentry->d_inode); return ret; } @@ -130,10 +110,10 @@ index 9af548fb841b0..2ff09b709f7bf 100644 long vfs_truncate(const struct path *path, loff_t length) { diff --git a/fs/read_write.c b/fs/read_write.c -index 75f764b434184..7582bb3fb634b 100644 +index 4771701c896b..c79270aba792 100644 --- a/fs/read_write.c +++ b/fs/read_write.c -@@ -503,6 +503,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) +@@ -477,6 +477,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) inc_syscr(current); return ret; } @@ -141,7 +121,7 @@ index 75f764b434184..7582bb3fb634b 100644 static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { -@@ -613,6 +614,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ +@@ -592,6 +593,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ file_end_write(file); return ret; } @@ -150,42 +130,22 @@ index 75f764b434184..7582bb3fb634b 100644 /* file_ppos returns &file->f_pos or NULL if file is stream */ static inline loff_t *file_ppos(struct file *file) diff --git a/fs/splice.c b/fs/splice.c -index 55b5356262085..c13ac0fbac318 100644 +index 7216ef993b5f..7ce1f1bc4268 100644 --- a/fs/splice.c +++ b/fs/splice.c -@@ -763,6 +763,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +@@ -932,6 +932,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, return warn_unsupported(out, "write"); return out->f_op->splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL_GPL(do_splice_from); /* - * Attempt to initiate a splice from a file to a pipe. -@@ -787,6 +788,7 @@ long do_splice_to(struct file *in, loff_t *ppos, - return warn_unsupported(in, "read"); - return in->f_op->splice_read(in, ppos, pipe, len, flags); - } -+EXPORT_SYMBOL_GPL(do_splice_to); - - /** - * splice_direct_to_actor - splices data directly between two non-pipes -diff --git a/fs/sync.c b/fs/sync.c -index b7b5a0a0df6ff..fa5c7fba7f1ba 100644 ---- a/fs/sync.c -+++ b/fs/sync.c -@@ -39,6 +39,7 @@ int __sync_filesystem(struct super_block *sb, int wait) - sb->s_op->sync_fs(sb, wait); - return __sync_blockdev(sb->s_bdev, wait); - } -+EXPORT_SYMBOL_GPL(__sync_filesystem); - - /* - * Write out and wait upon all dirty data associated with this + * Indicate to the caller that there was a premature EOF when reading from the diff --git a/fs/xattr.c b/fs/xattr.c -index cd7a563e8bcd4..7d989d57b0f0d 100644 +index efd4736bc94b..ce1a2c39ab23 100644 --- a/fs/xattr.c +++ b/fs/xattr.c -@@ -360,6 +360,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, +@@ -406,6 +406,7 @@ vfs_getxattr_alloc(struct mnt_idmap *idmap, struct dentry *dentry, *xattr_value = value; return error; } @@ -194,10 +154,10 @@ index cd7a563e8bcd4..7d989d57b0f0d 100644 ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index 7f006a47790cf..be002c3a30833 100644 +index db4297f60bd3..9aca18312afb 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -209,6 +209,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) +@@ -239,6 +239,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) */ return lock_classes + class_idx; } @@ -206,79 +166,79 @@ index 7f006a47790cf..be002c3a30833 100644 #ifdef CONFIG_LOCK_STAT diff --git a/kernel/task_work.c b/kernel/task_work.c -index 8d6e1217c451c..0e73637adda86 100644 +index 95a7e1b7f1da..5053670775d3 100644 --- a/kernel/task_work.c +++ b/kernel/task_work.c -@@ -154,3 +154,4 @@ void task_work_run(void) +@@ -183,3 +183,4 @@ void task_work_run(void) } while (work); } } +EXPORT_SYMBOL_GPL(task_work_run); diff --git a/security/security.c b/security/security.c -index a28045dc9e7f6..310cf38efeec7 100644 +index 23b129d482a7..fca4c5707a1c 100644 --- a/security/security.c +++ b/security/security.c -@@ -1093,6 +1093,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) +@@ -1750,6 +1750,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL_GPL(security_path_rmdir); - int security_path_unlink(const struct path *dir, struct dentry *dentry) - { -@@ -1109,6 +1110,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, + /** + * security_path_unlink() - Check if removing a hard link is allowed +@@ -1785,6 +1786,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL_GPL(security_path_symlink); - int security_path_link(struct dentry *old_dentry, const struct path *new_dir, - struct dentry *new_dentry) -@@ -1117,6 +1119,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, + /** + * security_path_link - Check if creating a hard link is allowed +@@ -1803,6 +1805,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL_GPL(security_path_link); - int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, - const struct path *new_dir, struct dentry *new_dentry, -@@ -1144,6 +1147,7 @@ int security_path_truncate(const struct path *path) - return 0; - return call_int_hook(path_truncate, 0, path); - } -+EXPORT_SYMBOL_GPL(security_path_truncate); - - int security_path_chmod(const struct path *path, umode_t mode) - { -@@ -1151,6 +1155,7 @@ int security_path_chmod(const struct path *path, umode_t mode) + /** + * security_path_rename() - Check if renaming a file is allowed +@@ -1864,6 +1867,7 @@ int security_path_chmod(const struct path *path, umode_t mode) return 0; return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL_GPL(security_path_chmod); - int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) - { -@@ -1158,6 +1163,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) + /** + * security_path_chown() - Check if changing the file's owner/group is allowed +@@ -1881,6 +1885,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL_GPL(security_path_chown); - int security_path_chroot(const struct path *path) - { -@@ -1258,6 +1264,7 @@ int security_inode_permission(struct inode *inode, int mask) + /** + * security_path_chroot() - Check if changing the root directory is allowed +@@ -2110,6 +2115,7 @@ int security_inode_permission(struct inode *inode, int mask) return 0; return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL_GPL(security_inode_permission); - int security_inode_setattr(struct dentry *dentry, struct iattr *attr) - { -@@ -1450,6 +1457,7 @@ int security_file_permission(struct file *file, int mask) + /** + * security_inode_setattr() - Check if setting file attributes is allowed +@@ -2588,6 +2594,7 @@ int security_file_permission(struct file *file, int mask) return fsnotify_perm(file, mask); } +EXPORT_SYMBOL_GPL(security_file_permission); - int security_file_alloc(struct file *file) + /** + * security_file_alloc() - Allocate and init a file's LSM blob +@@ -2854,6 +2861,7 @@ int security_file_truncate(struct file *file) { + return call_int_hook(file_truncate, 0, file); + } ++EXPORT_SYMBOL_GPL(security_file_truncate); + + /** + * security_task_alloc() - Allocate a task's LSM blob diff --git a/kernel/kernel/files/patches/mageia/fs-aufs5.15.patch b/kernel/kernel/files/patches/aufs6/aufs6.6-20240226.patch similarity index 90% rename from kernel/kernel/files/patches/mageia/fs-aufs5.15.patch rename to kernel/kernel/files/patches/aufs6/aufs6.6-20240226.patch index 3484d64f..25b91aa1 100644 --- a/kernel/kernel/files/patches/mageia/fs-aufs5.15.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6.6-20240226.patch @@ -1,126 +1,6 @@ - - Documentation/ABI/testing/debugfs-aufs | 55 +++++ - Documentation/ABI/testing/sysfs-aufs | 31 ++ - Documentation/filesystems/aufs/README | 396 ++++++++++++++++++++++++++++++++++++ - Documentation/filesystems/aufs/design/01intro.txt | 158 ++++++++++++++ - Documentation/filesystems/aufs/design/02struct.txt | 245 ++++++++++++++++++++++ - Documentation/filesystems/aufs/design/03atomic_open.txt | 72 ++++++ - Documentation/filesystems/aufs/design/03lookup.txt | 100 +++++++++ - Documentation/filesystems/aufs/design/04branch.txt | 61 +++++ - Documentation/filesystems/aufs/design/05wbr_policy.txt | 51 ++++ - Documentation/filesystems/aufs/design/06dirren.dot | 31 ++ - Documentation/filesystems/aufs/design/06dirren.txt | 89 ++++++++ - Documentation/filesystems/aufs/design/06fhsm.txt | 105 +++++++++ - Documentation/filesystems/aufs/design/06mmap.txt | 59 +++++ - Documentation/filesystems/aufs/design/06xattr.txt | 81 +++++++ - Documentation/filesystems/aufs/design/07export.txt | 45 ++++ - Documentation/filesystems/aufs/design/08shwh.txt | 39 +++ - Documentation/filesystems/aufs/design/10dynop.txt | 34 +++ - MAINTAINERS | 13 + - drivers/block/loop.c | 18 + - fs/Kconfig | 1 - fs/Makefile | 1 - fs/aufs/Kconfig | 199 ++++++++++++++++++ - fs/aufs/Makefile | 39 +++ - fs/aufs/aufs.h | 49 ++++ - fs/aufs/branch.c | 1414 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/branch.h | 362 ++++++++++++++++++++++++++++++++ - fs/aufs/cpup.c | 1446 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/cpup.h | 87 +++++++ - fs/aufs/dbgaufs.c | 513 ++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/dbgaufs.h | 40 +++ - fs/aufs/dcsub.c | 212 +++++++++++++++++++ - fs/aufs/dcsub.h | 124 +++++++++++ - fs/aufs/debug.c | 431 +++++++++++++++++++++++++++++++++++++++ - fs/aufs/debug.h | 213 +++++++++++++++++++ - fs/aufs/dentry.c | 1155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/dentry.h | 256 +++++++++++++++++++++++ - fs/aufs/dinfo.c | 541 +++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/dir.c | 752 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/dir.h | 121 +++++++++++ - fs/aufs/dirren.c | 1302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/dirren.h | 127 +++++++++++ - fs/aufs/dynop.c | 355 ++++++++++++++++++++++++++++++++ - fs/aufs/dynop.h | 64 +++++ - fs/aufs/export.c | 817 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/f_op.c | 758 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/fhsm.c | 413 +++++++++++++++++++++++++++++++++++++ - fs/aufs/file.c | 850 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/file.h | 329 +++++++++++++++++++++++++++++ - fs/aufs/finfo.c | 136 ++++++++++++ - fs/aufs/fsctx.c | 1229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/fstype.h | 388 +++++++++++++++++++++++++++++++++++ - fs/aufs/hbl.h | 52 ++++ - fs/aufs/hfsnotify.c | 276 +++++++++++++++++++++++++ - fs/aufs/hfsplus.c | 47 ++++ - fs/aufs/hnotify.c | 702 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/i_op.c | 1499 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/i_op_add.c | 928 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/i_op_del.c | 509 ++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/i_op_ren.c | 1244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/iinfo.c | 273 ++++++++++++++++++++++++ - fs/aufs/inode.c | 518 +++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/inode.h | 692 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/ioctl.c | 207 ++++++++++++++++++ - fs/aufs/lcnt.h | 173 +++++++++++++++ - fs/aufs/loop.c | 135 ++++++++++++ - fs/aufs/loop.h | 42 +++ - fs/aufs/magic.mk | 31 ++ - fs/aufs/module.c | 259 +++++++++++++++++++++++ - fs/aufs/module.h | 153 +++++++++++++ - fs/aufs/mvdown.c | 693 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/opts.c | 1019 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/opts.h | 250 ++++++++++++++++++++++ - fs/aufs/plink.c | 503 +++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/poll.c | 38 +++ - fs/aufs/posix_acl.c | 98 ++++++++ - fs/aufs/procfs.c | 157 ++++++++++++++ - fs/aufs/rdu.c | 371 +++++++++++++++++++++++++++++++++ - fs/aufs/rwsem.h | 72 ++++++ - fs/aufs/sbinfo.c | 303 +++++++++++++++++++++++++++ - fs/aufs/super.c | 858 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/super.h | 579 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/sysaufs.c | 80 +++++++ - fs/aufs/sysaufs.h | 89 ++++++++ - fs/aufs/sysfs.c | 338 ++++++++++++++++++++++++++++++ - fs/aufs/sysrq.c | 136 ++++++++++++ - fs/aufs/vdir.c | 883 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/vfsub.c | 905 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/vfsub.h | 345 +++++++++++++++++++++++++++++++ - fs/aufs/wbr_policy.c | 817 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/whout.c | 1059 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/aufs/whout.h | 74 ++++++ - fs/aufs/wkq.c | 359 ++++++++++++++++++++++++++++++++ - fs/aufs/wkq.h | 76 ++++++ - fs/aufs/xattr.c | 355 ++++++++++++++++++++++++++++++++ - fs/aufs/xino.c | 1913 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - fs/dcache.c | 2 - fs/fcntl.c | 4 - fs/namespace.c | 6 - fs/proc/base.c | 2 - fs/proc/nommu.c | 5 - fs/proc/task_mmu.c | 7 - fs/proc/task_nommu.c | 5 - fs/splice.c | 10 - include/linux/fs.h | 4 - include/linux/lockdep.h | 2 - include/linux/mm.h | 37 +++ - include/linux/mm_types.h | 6 - include/linux/mnt_namespace.h | 3 - include/linux/splice.h | 6 - include/uapi/linux/aufs_type.h | 439 +++++++++++++++++++++++++++++++++++++++ - kernel/fork.c | 2 - kernel/locking/lockdep.c | 3 - mm/Makefile | 1 - mm/filemap.c | 2 - mm/mmap.c | 39 +++ - mm/nommu.c | 10 - mm/prfile.c | 86 +++++++ - 117 files changed, 37172 insertions(+), 26 deletions(-) - -diff -Nurp linux-5.15.37/Documentation/ABI/testing/debugfs-aufs linux-5.15.37-aufs/Documentation/ABI/testing/debugfs-aufs ---- linux-5.15.37/Documentation/ABI/testing/debugfs-aufs 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/ABI/testing/debugfs-aufs 2022-04-08 20:22:30.608616279 +0300 +diff -Naur null/Documentation/ABI/testing/debugfs-aufs linux-6.6.4/Documentation/ABI/testing/debugfs-aufs +--- /dev/null ++++ linux-6.6.4/Documentation/ABI/testing/debugfs-aufs 2024-04-28 23:21:13.835237390 +0300 @@ -0,0 +1,55 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -177,9 +57,9 @@ diff -Nurp linux-5.15.37/Documentation/ABI/testing/debugfs-aufs linux-5.15.37-au + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff -Nurp linux-5.15.37/Documentation/ABI/testing/sysfs-aufs linux-5.15.37-aufs/Documentation/ABI/testing/sysfs-aufs ---- linux-5.15.37/Documentation/ABI/testing/sysfs-aufs 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/ABI/testing/sysfs-aufs 2022-04-08 20:22:30.608616279 +0300 +diff -Naur null/Documentation/ABI/testing/sysfs-aufs linux-6.6.4/Documentation/ABI/testing/sysfs-aufs +--- /dev/null ++++ linux-6.6.4/Documentation/ABI/testing/sysfs-aufs 2024-04-28 23:21:13.835237390 +0300 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -212,12 +92,25 @@ diff -Nurp linux-5.15.37/Documentation/ABI/testing/sysfs-aufs linux-5.15.37-aufs + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/01intro.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/01intro.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/01intro.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,158 @@ +diff -Naur null/Documentation/filesystems/aufs/design/01intro.txt linux-6.6.4/Documentation/filesystems/aufs/design/01intro.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/01intro.txt 2024-04-28 23:21:13.835237390 +0300 +@@ -0,0 +1,171 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Introduction +---------------------------------------- @@ -374,12 +267,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/01intro.txt linux +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/02struct.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/02struct.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/02struct.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,245 @@ +diff -Naur null/Documentation/filesystems/aufs/design/02struct.txt linux-6.6.4/Documentation/filesystems/aufs/design/02struct.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/02struct.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,258 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Basic Aufs Internal Structure + @@ -623,12 +529,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/02struct.txt linu +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/03atomic_open.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/03atomic_open.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/03atomic_open.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,72 @@ +diff -Naur null/Documentation/filesystems/aufs/design/03atomic_open.txt linux-6.6.4/Documentation/filesystems/aufs/design/03atomic_open.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/03atomic_open.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,85 @@ + -+# Copyright (C) 2015-2021 Junjiro R. Okajima ++# Copyright (C) 2015-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Support for a branch who has its ->atomic_open() +---------------------------------------------------------------------- @@ -699,12 +618,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/03atomic_open.txt + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/03lookup.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/03lookup.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/03lookup.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,100 @@ +diff -Naur null/Documentation/filesystems/aufs/design/03lookup.txt linux-6.6.4/Documentation/filesystems/aufs/design/03lookup.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/03lookup.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,113 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Lookup in a Branch +---------------------------------------------------------------------- @@ -803,12 +735,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/03lookup.txt linu + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/04branch.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/04branch.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/04branch.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,61 @@ +diff -Naur null/Documentation/filesystems/aufs/design/04branch.txt linux-6.6.4/Documentation/filesystems/aufs/design/04branch.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/04branch.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,74 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Branch Manipulation + @@ -868,12 +813,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/04branch.txt linu + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/05wbr_policy.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/05wbr_policy.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,51 @@ +diff -Naur null/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-6.6.4/Documentation/filesystems/aufs/design/05wbr_policy.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/05wbr_policy.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,64 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Policies to Select One among Multiple Writable Branches +---------------------------------------------------------------------- @@ -923,12 +881,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/05wbr_policy.txt + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.dot linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06dirren.dot ---- linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.dot 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06dirren.dot 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,31 @@ +diff -Naur null/Documentation/filesystems/aufs/design/06dirren.dot linux-6.6.4/Documentation/filesystems/aufs/design/06dirren.dot +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/06dirren.dot 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,44 @@ + +// to view this graph, run dot(1) command in GRAPHVIZ. ++// ++// This program is free software; you can redistribute it and/or modify ++// it under the terms of the GNU General Public License as published by ++// the Free Software Foundation; either version 2 of the License, or ++// (at your option) any later version. ++// ++// This program is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License ++// along with this program. If not, see . + +digraph G { +node [shape=box]; @@ -958,12 +929,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.dot linu + +aufs_lookup -> whinfo [label="load/remove"]; +} -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06dirren.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06dirren.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,89 @@ +diff -Naur null/Documentation/filesystems/aufs/design/06dirren.txt linux-6.6.4/Documentation/filesystems/aufs/design/06dirren.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/06dirren.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,102 @@ + -+# Copyright (C) 2017-2021 Junjiro R. Okajima ++# Copyright (C) 2017-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Special handling for renaming a directory (DIRREN) +---------------------------------------------------------------------- @@ -1028,7 +1012,7 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.txt linu +simply the inode-numbers on the branch. The file is created or updated +in removing the branch, and loaded in adding the branch. Its lifetime is +equal to the branch. -+The list is refered in lookup, and when the current target inode is ++The list is referred in lookup, and when the current target inode is +found in the list, the aufs tries loading the "detailed info per +directory" and get the changed and valid name of the dir. + @@ -1051,12 +1035,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06dirren.txt linu +contains two names, before- and after-rename, the name comparision in +UDBA handler may not work correctly. In this case, the behaviour will be +equivalen to udba=reval case. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06fhsm.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06fhsm.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06fhsm.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,105 @@ +diff -Naur null/Documentation/filesystems/aufs/design/06fhsm.txt linux-6.6.4/Documentation/filesystems/aufs/design/06fhsm.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/06fhsm.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,118 @@ + -+# Copyright (C) 2011-2021 Junjiro R. Okajima ++# Copyright (C) 2011-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +File-based Hierarchical Storage Management (FHSM) +---------------------------------------------------------------------- @@ -1160,12 +1157,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06fhsm.txt linux- + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06mmap.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06mmap.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06mmap.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,59 @@ +diff -Naur null/Documentation/filesystems/aufs/design/06mmap.txt linux-6.6.4/Documentation/filesystems/aufs/design/06mmap.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/06mmap.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,72 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +mmap(2) -- File Memory Mapping +---------------------------------------------------------------------- @@ -1223,12 +1233,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06mmap.txt linux- + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06xattr.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06xattr.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/06xattr.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,81 @@ +diff -Naur null/Documentation/filesystems/aufs/design/06xattr.txt linux-6.6.4/Documentation/filesystems/aufs/design/06xattr.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/06xattr.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,94 @@ + -+# Copyright (C) 2014-2021 Junjiro R. Okajima ++# Copyright (C) 2014-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Listing XATTR/EA and getting the value +---------------------------------------------------------------------- @@ -1308,12 +1331,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/06xattr.txt linux +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/07export.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/07export.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/07export.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,45 @@ +diff -Naur null/Documentation/filesystems/aufs/design/07export.txt linux-6.6.4/Documentation/filesystems/aufs/design/07export.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/07export.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,58 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Export Aufs via NFS +---------------------------------------------------------------------- @@ -1357,12 +1393,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/07export.txt linu + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/08shwh.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/08shwh.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/08shwh.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,39 @@ +diff -Naur null/Documentation/filesystems/aufs/design/08shwh.txt linux-6.6.4/Documentation/filesystems/aufs/design/08shwh.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/08shwh.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,52 @@ + -+# Copyright (C) 2005-2021 Junjiro R. Okajima ++# Copyright (C) 2005-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Show Whiteout Mode (shwh) +---------------------------------------------------------------------- @@ -1400,12 +1449,25 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/08shwh.txt linux- + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/10dynop.txt linux-5.15.37-aufs/Documentation/filesystems/aufs/design/10dynop.txt ---- linux-5.15.37/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/design/10dynop.txt 2022-04-08 20:22:30.609616328 +0300 -@@ -0,0 +1,34 @@ +diff -Naur null/Documentation/filesystems/aufs/design/10dynop.txt linux-6.6.4/Documentation/filesystems/aufs/design/10dynop.txt +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/design/10dynop.txt 2024-04-28 23:21:13.836237377 +0300 +@@ -0,0 +1,47 @@ + -+# Copyright (C) 2010-2021 Junjiro R. Okajima ++# Copyright (C) 2010-2022 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . + +Dynamically customizable FS operations +---------------------------------------------------------------------- @@ -1438,12 +1500,12 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/design/10dynop.txt linux +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. -diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-aufs/Documentation/filesystems/aufs/README ---- linux-5.15.37/Documentation/filesystems/aufs/README 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/Documentation/filesystems/aufs/README 2022-04-08 20:22:30.608616279 +0300 -@@ -0,0 +1,396 @@ +diff -Naur null/Documentation/filesystems/aufs/README linux-6.6.4/Documentation/filesystems/aufs/README +--- /dev/null ++++ linux-6.6.4/Documentation/filesystems/aufs/README 2024-04-28 23:21:13.835237390 +0300 +@@ -0,0 +1,409 @@ + -+Aufs5 -- advanced multi layered unification filesystem version 5.x ++Aufs6 -- advanced multi layered unification filesystem version 6.x +http://aufs.sf.net +Junjiro R. Okajima + @@ -1459,13 +1521,19 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +Unionfs was being developed by Professor Erez Zadok at Stony Brook +University and his team. + -+Aufs5 supports linux-v5.0 and later, If you want older kernel version -+support, ++Aufs6 supports linux-v6.0 and later, try aufs6.0 branch in ++aufs-linux.git or aufs-standalone.git. ++If you want older kernel version support, ++- for linux-v5.x series, try aufs-linux.git or aufs-standalone.git +- for linux-v4.x series, try aufs4-linux.git or aufs4-standalone.git +- for linux-v3.x series, try aufs3-linux.git or aufs3-standalone.git +- for linux-v2.6.16 and later, try aufs2-2.6.git, aufs2-standalone.git + or aufs1 from CVS on SourceForge. + ++Note: the name of aufs5-linux.git and aufs5-standalone.git on github ++ were changed. Now they are aufs-linux.git and ++ aufs-standalone.git and they contain aufs5 and later branches. ++ +Note: it becomes clear that "Aufs was rejected. Let's give it up." + According to Christoph Hellwig, linux rejects all union-type + filesystems but UnionMount. @@ -1524,7 +1592,7 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. +- and more... + -+Currently these features are dropped temporary from aufs5. ++Currently these features are dropped temporary from aufs6. +See design/08plan.txt in detail. +- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs + (robr) @@ -1542,64 +1610,63 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + +2. Download +---------------------------------------- -+There are three GIT trees for aufs5, aufs5-linux.git, -+aufs5-standalone.git, and aufs-util.git. Note that there is no "5" in -+"aufs-util.git." -+While the aufs-util is always necessary, you need either of aufs5-linux -+or aufs5-standalone. ++There are three GIT trees for aufs6, aufs-linux.git, ++aufs-standalone.git, and aufs-util.git. ++While the aufs-util is always necessary, you need either of aufs-linux ++or aufs-standalone. + -+The aufs5-linux tree includes the whole linux mainline GIT tree, ++The aufs-linux tree includes the whole linux mainline GIT tree, +git://git.kernel.org/.../torvalds/linux.git. +And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot -+build aufs5 as an external kernel module. ++build aufs6 as an external kernel module. +Several extra patches are not included in this tree. Only -+aufs5-standalone tree contains them. They are described in the later ++aufs-standalone tree contains them. They are described in the later +section "Configuration and Compilation." + -+On the other hand, the aufs5-standalone tree has only aufs source files ++On the other hand, the aufs-standalone tree has only aufs source files +and necessary patches, and you can select CONFIG_AUFS_FS=m. +But you need to apply all aufs patches manually. + -+You will find GIT branches whose name is in form of "aufs5.x" where "x" -+represents the linux kernel version, "linux-5.x". For instance, -+"aufs5.0" is for linux-5.0. For latest "linux-5.x-rcN", use -+"aufs5.x-rcN" branch. ++You will find GIT branches whose name is in form of "aufs6.x" where "x" ++represents the linux kernel version, "linux-6.x". For instance, ++"aufs6.0" is for linux-6.0. For latest "linux-6.x-rcN", use ++"aufs6.x-rcN" branch. + -+o aufs5-linux tree ++o aufs-linux tree +$ git clone --reference /your/linux/git/tree \ -+ git://github.com/sfjro/aufs5-linux.git aufs5-linux.git ++ git://github.com/sfjro/aufs-linux.git aufs-linux.git +- if you don't have linux GIT tree, then remove "--reference ..." -+$ cd aufs5-linux.git -+$ git checkout origin/aufs5.0 ++$ cd aufs-linux.git ++$ git checkout origin/aufs6.0 + +Or You may want to directly git-pull aufs into your linux GIT tree, and +leave the patch-work to GIT. +$ cd /your/linux/git/tree -+$ git remote add aufs5 git://github.com/sfjro/aufs5-linux.git -+$ git fetch aufs5 -+$ git checkout -b my5.0 v5.0 ++$ git remote add aufs git://github.com/sfjro/aufs-linux.git ++$ git fetch aufs ++$ git checkout -b my6.0 v6.0 +$ (add your local change...) -+$ git pull aufs5 aufs5.0 -+- now you have v5.0 + your_changes + aufs5.0 in you my5.0 branch. ++$ git pull aufs aufs6.0 ++- now you have v6.0 + your_changes + aufs6.0 in you my6.0 branch. +- you may need to solve some conflicts between your_changes and -+ aufs5.0. in this case, git-rerere is recommended so that you can -+ solve the similar conflicts automatically when you upgrade to 5.1 or ++ aufs6.0. in this case, git-rerere is recommended so that you can ++ solve the similar conflicts automatically when you upgrade to 6.1 or + later in the future. + -+o aufs5-standalone tree -+$ git clone git://github.com/sfjro/aufs5-standalone.git aufs5-standalone.git -+$ cd aufs5-standalone.git -+$ git checkout origin/aufs5.0 ++o aufs-standalone tree ++$ git clone git://github.com/sfjro/aufs-standalone.git aufs-standalone.git ++$ cd aufs-standalone.git ++$ git checkout origin/aufs6.0 + +o aufs-util tree +$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git +- note that the public aufs-util.git is on SourceForge instead of + GitHUB. +$ cd aufs-util.git -+$ git checkout origin/aufs5.0 ++$ git checkout origin/aufs6.0 + -+Note: The 5.x-rcN branch is to be used with `rc' kernel versions ONLY. -+The minor version number, 'x' in '5.x', of aufs may not always ++Note: The 6.x-rcN branch is to be used with `rc' kernel versions ONLY. ++The minor version number, 'x' in '6.x', of aufs may not always +follow the minor version number of the kernel. +Because changes in the kernel that cause the use of a new +minor version number do not always require changes to aufs-util. @@ -1611,8 +1678,8 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +nearest lower number. + +For (an unreleased) example: -+If you are using "linux-5.10" and the "aufs5.10" branch -+does not exist in aufs-util repository, then "aufs5.9", "aufs5.8" ++If you are using "linux-6.10" and the "aufs6.10" branch ++does not exist in aufs-util repository, then "aufs6.9", "aufs6.8" +or something numerically smaller is the branch for your kernel. + +Also you can view all branches by @@ -1623,7 +1690,7 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +---------------------------------------- +Make sure you have git-checkout'ed the correct branch. + -+For aufs5-linux tree, ++For aufs-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. +- for aufs5.13 and later @@ -1636,16 +1703,18 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + CONFIG_LOCKDEP_BITS=21 + CONFIG_LOCKDEP_CHAINS_BITS=21 + CONFIG_LOCKDEP_STACK_TRACE_BITS=24 ++ Also you will need to expand some constant values in LOCKDEP. Refer ++ to lockdep-debug.patch in aufs-standalone.git. + -+For aufs5-standalone tree, ++For aufs-standalone tree, +There are several ways to build. + +1. -+- apply ./aufs5-kbuild.patch to your kernel source files. -+- apply ./aufs5-base.patch too. -+- apply ./aufs5-mmap.patch too. -+- apply ./aufs5-standalone.patch too, if you have a plan to set -+ CONFIG_AUFS_FS=m. otherwise you don't need ./aufs5-standalone.patch. ++- apply ./aufs6-kbuild.patch to your kernel source files. ++- apply ./aufs6-base.patch too. ++- apply ./aufs6-mmap.patch too. ++- apply ./aufs6-standalone.patch too, if you have a plan to set ++ CONFIG_AUFS_FS=m. otherwise you don't need ./aufs-standalone.patch. +- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your + kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. +- enable CONFIG_AUFS_FS, you can select either @@ -1659,9 +1728,9 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + +2. +- module only (CONFIG_AUFS_FS=m). -+- apply ./aufs5-base.patch to your kernel source files. -+- apply ./aufs5-mmap.patch too. -+- apply ./aufs5-standalone.patch too. ++- apply ./aufs6-base.patch to your kernel source files. ++- apply ./aufs6-mmap.patch too. ++- apply ./aufs6-standalone.patch too. +- build your kernel, don't forget "make headers_install", and reboot. +- edit ./config.mk and set other aufs configurations if necessary. + Note: You should read $PWD/fs/aufs/Kconfig carefully which describes @@ -1677,7 +1746,7 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + available in aufs standalone version's Makefile only), or copy + $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever + you like manually. By default, the target directory is $PWD/usr. -+- no need to apply aufs5-kbuild.patch, nor copying source files to your ++- no need to apply aufs6-kbuild.patch, nor copying source files to your + kernel source tree. + +Note: The header file aufs_type.h is necessary to build aufs-util @@ -1697,9 +1766,9 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + then run "make install_ulib" too. And refer to the aufs manual in + detail. + -+There several other patches in aufs5-standalone.git. They are all ++There several other patches in aufs-standalone.git. They are all +optional. When you meet some problems, they will help you. -+- aufs5-loopback.patch ++- aufs6-loopback.patch + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message like "you may want to try + another patch for loopback file". @@ -1713,6 +1782,10 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. ++- lockdep-debug.patch ++ Similar to some kernel configurations for LOCKDEP (see the top of ++ this section), you will need expand some constants in LOCKDEP for ++ aufs if you enable CONFIG_LOCKDEP. + + +4. Usage @@ -1821,6 +1894,8 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +James Burry made a donation (2016/12). +Carsten Rose made a donation (2018/9). +Porteus Kiosk made a donation (2018/10). ++huronOS team: Enya Quetzalli made donations (2022/5, 2023/5 and 8). ++Vasily Mikhaylichenko made a donation (2023/5). + +Thank you very much. +Donations are always, including future donations, very important and @@ -1838,41 +1913,26 @@ diff -Nurp linux-5.15.37/Documentation/filesystems/aufs/README linux-5.15.37-auf +# Local variables: ; +# mode: text; +# End: ; -diff -Nurp linux-5.15.37/drivers/block/loop.c linux-5.15.37-aufs/drivers/block/loop.c ---- linux-5.15.37/drivers/block/loop.c 2022-04-08 20:07:30.626495709 +0300 -+++ linux-5.15.37-aufs/drivers/block/loop.c 2022-04-08 20:22:30.610616377 +0300 -@@ -636,6 +636,24 @@ out_putf: - return error; - } - -+/* -+ * for AUFS -+ * no get/put for file. -+ */ -+struct file *loop_backing_file(struct super_block *sb) -+{ -+ struct file *ret; -+ struct loop_device *l; -+ -+ ret = NULL; -+ if (MAJOR(sb->s_dev) == LOOP_MAJOR) { -+ l = sb->s_bdev->bd_disk->private_data; -+ ret = l->lo_backing_file; -+ } -+ return ret; -+} -+EXPORT_SYMBOL_GPL(loop_backing_file); -+ - /* loop sysfs attributes */ - - static ssize_t loop_attr_show(struct device *dev, char *page, -diff -Nurp linux-5.15.37/fs/aufs/aufs.h linux-5.15.37-aufs/fs/aufs/aufs.h ---- linux-5.15.37/fs/aufs/aufs.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/aufs.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,49 @@ +diff -Naur null/fs/aufs/aufs.h linux-6.6.4/fs/aufs/aufs.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/aufs.h 2024-04-28 23:21:13.837237365 +0300 +@@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -1919,13 +1979,26 @@ diff -Nurp linux-5.15.37/fs/aufs/aufs.h linux-5.15.37-aufs/fs/aufs/aufs.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/branch.c linux-5.15.37-aufs/fs/aufs/branch.c ---- linux-5.15.37/fs/aufs/branch.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/branch.c 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,1414 @@ +diff -Naur null/fs/aufs/branch.c linux-6.6.4/fs/aufs/branch.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/branch.c 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,1427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -3191,7 +3264,7 @@ diff -Nurp linux-5.15.37/fs/aufs/branch.c linux-5.15.37-aufs/fs/aufs/branch.c + * file_release_write() for each file, because the branch + * attribute in aufs world is totally different from the native + * fs rw/ro mode. -+ */ ++ */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; @@ -3337,13 +3410,26 @@ diff -Nurp linux-5.15.37/fs/aufs/branch.c linux-5.15.37-aufs/fs/aufs/branch.c + + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/branch.h linux-5.15.37-aufs/fs/aufs/branch.h ---- linux-5.15.37/fs/aufs/branch.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/branch.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,362 @@ +diff -Naur null/fs/aufs/branch.h linux-6.6.4/fs/aufs/branch.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/branch.h 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,375 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -3476,9 +3562,9 @@ diff -Nurp linux-5.15.37/fs/aufs/branch.h linux-5.15.37-aufs/fs/aufs/branch.h + return br->br_path.dentry; +} + -+static inline struct user_namespace *au_br_userns(struct au_branch *br) ++static inline struct mnt_idmap *au_br_idmap(struct au_branch *br) +{ -+ return mnt_user_ns(br->br_path.mnt); ++ return mnt_idmap(br->br_path.mnt); +} + +static inline struct super_block *au_br_sb(struct au_branch *br) @@ -3640,9 +3726,9 @@ diff -Nurp linux-5.15.37/fs/aufs/branch.h linux-5.15.37-aufs/fs/aufs/branch.h +} + +static inline -+struct user_namespace *au_sbr_userns(struct super_block *sb, aufs_bindex_t bindex) ++struct mnt_idmap *au_sbr_idmap(struct super_block *sb, aufs_bindex_t bindex) +{ -+ return au_br_userns(au_sbr(sb, bindex)); ++ return au_br_idmap(au_sbr(sb, bindex)); +} + +static inline @@ -3703,13 +3789,70 @@ diff -Nurp linux-5.15.37/fs/aufs/branch.h linux-5.15.37-aufs/fs/aufs/branch.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c ---- linux-5.15.37/fs/aufs/cpup.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/cpup.c 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,1446 @@ +diff -Naur null/fs/aufs/conf.mk linux-6.6.4/fs/aufs/conf.mk +--- /dev/null ++++ linux-6.6.4/fs/aufs/conf.mk 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,40 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} ++ ++define AuConf ++ifdef ${1} ++AuConfStr += ${1}=${${1}} ++endif ++endef ++ ++AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ ++ SBILIST \ ++ HNOTIFY HFSNOTIFY \ ++ EXPORT INO_T_64 \ ++ XATTR \ ++ FHSM \ ++ RDU \ ++ DIRREN \ ++ SHWH \ ++ BR_RAMFS \ ++ BR_FUSE POLL \ ++ BR_HFSPLUS \ ++ BDEV_LOOP \ ++ DEBUG MAGIC_SYSRQ ++$(foreach i, ${AuConfAll}, \ ++ $(eval $(call AuConf,CONFIG_AUFS_${i}))) ++ ++AuConfName = ${obj}/conf.str ++${AuConfName}.tmp: FORCE ++ @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ ++${AuConfName}: ${AuConfName}.tmp ++ @diff -q $< $@ > /dev/null 2>&1 || { \ ++ echo ' GEN ' $@; \ ++ cp -p $< $@; \ ++ } ++FORCE: ++clean-files += ${AuConfName} ${AuConfName}.tmp ++${obj}/sysfs.o: ${AuConfName} ++ ++-include ${srctree}/${src}/conf_priv.mk +diff -Naur null/fs/aufs/cpup.c linux-6.6.4/fs/aufs/cpup.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/cpup.c 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,1459 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -4285,23 +4428,23 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + * regardless 'acl' option, reset all ACL. + * All ACL will be copied up later from the original entry on the lower branch. + */ -+static int au_reset_acl(struct inode *h_dir, struct path *h_path, umode_t mode) ++static int au_reset_acl(struct path *h_path, umode_t mode) +{ + int err; + struct dentry *h_dentry; -+ struct inode *h_inode; -+ struct user_namespace *h_userns; ++ /* struct inode *h_inode; */ ++ struct mnt_idmap *h_idmap; + -+ h_userns = mnt_user_ns(h_path->mnt); ++ h_idmap = mnt_idmap(h_path->mnt); + h_dentry = h_path->dentry; -+ h_inode = d_inode(h_dentry); ++ /* h_inode = d_inode(h_dentry); */ + /* forget_all_cached_acls(h_inode)); */ -+ err = vfsub_removexattr(h_userns, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); ++ err = vfsub_remove_acl(h_idmap, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (!err) -+ err = vfsub_acl_chmod(h_userns, h_inode, mode); ++ err = vfsub_acl_chmod(h_idmap, h_dentry, mode); + + AuTraceErr(err); + return err; @@ -4312,11 +4455,11 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c +{ + int err; + struct inode *dir, *inode; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + -+ h_userns = mnt_user_ns(h_path->mnt); -+ err = vfsub_removexattr(h_userns, h_path->dentry, -+ XATTR_NAME_POSIX_ACL_DEFAULT); ++ h_idmap = mnt_idmap(h_path->mnt); ++ err = vfsub_remove_acl(h_idmap, h_path->dentry, ++ XATTR_NAME_POSIX_ACL_DEFAULT); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; @@ -4407,7 +4550,7 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + err = -EIO; + } + if (!err) -+ err = au_reset_acl(h_dir, &h_path, mode); ++ err = au_reset_acl(&h_path, mode); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) @@ -4795,7 +4938,7 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + struct dentry *dentry, *parent; + struct file *h_file; + struct inode *h_dir; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + dentry = cpg->dentry; + h_file = NULL; @@ -4809,8 +4952,8 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + + parent = dget_parent(dentry); + h_dir = au_h_iptr(d_inode(parent), cpg->bdst); -+ h_userns = au_sbr_userns(dentry->d_sb, cpg->bdst); -+ if (!au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC | MAY_WRITE) ++ h_idmap = au_sbr_idmap(dentry->d_sb, cpg->bdst); ++ if (!au_test_h_perm_sio(h_idmap, h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_simple(cpg); + else { @@ -4980,7 +5123,7 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + struct inode *dir, *h_dir, *h_tmpdir; + struct au_wbr *wbr; + struct au_pin wh_pin, *pin_orig; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + dentry = cpg->dentry; + bdst = cpg->bdst; @@ -5009,8 +5152,8 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + cpg->pin = &wh_pin; + } + -+ h_userns = au_sbr_userns(dentry->d_sb, bdst); -+ if (!au_test_h_perm_sio(h_userns, h_tmpdir, MAY_EXEC | MAY_WRITE) ++ h_idmap = au_sbr_idmap(dentry->d_sb, bdst); ++ if (!au_test_h_perm_sio(h_idmap, h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_wh(cpg, file); + else { @@ -5153,13 +5296,26 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.c linux-5.15.37-aufs/fs/aufs/cpup.c + dput(parent); + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/cpup.h linux-5.15.37-aufs/fs/aufs/cpup.h ---- linux-5.15.37/fs/aufs/cpup.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/cpup.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,87 @@ +diff -Naur null/fs/aufs/cpup.h linux-6.6.4/fs/aufs/cpup.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/cpup.h 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,100 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -5244,13 +5400,26 @@ diff -Nurp linux-5.15.37/fs/aufs/cpup.h linux-5.15.37-aufs/fs/aufs/cpup.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dbgaufs.c linux-5.15.37-aufs/fs/aufs/dbgaufs.c ---- linux-5.15.37/fs/aufs/dbgaufs.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dbgaufs.c 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,513 @@ +diff -Naur null/fs/aufs/dbgaufs.c linux-6.6.4/fs/aufs/dbgaufs.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dbgaufs.c 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -5401,7 +5570,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dbgaufs.c linux-5.15.37-aufs/fs/aufs/dbgaufs.c + } else { +#define str "1\n0\n0\n" + p->n = sizeof(str) - 1; -+ strcpy(p->a, str); ++ strscpy(p->a, str, sizeof(str)); +#undef str + } + si_read_unlock(sb); @@ -5761,13 +5930,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dbgaufs.c linux-5.15.37-aufs/fs/aufs/dbgaufs.c + err = 0; + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/dbgaufs.h linux-5.15.37-aufs/fs/aufs/dbgaufs.h ---- linux-5.15.37/fs/aufs/dbgaufs.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dbgaufs.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,40 @@ +diff -Naur null/fs/aufs/dbgaufs.h linux-6.6.4/fs/aufs/dbgaufs.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dbgaufs.h 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -5805,13 +5987,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dbgaufs.h linux-5.15.37-aufs/fs/aufs/dbgaufs.h + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dcsub.c linux-5.15.37-aufs/fs/aufs/dcsub.c ---- linux-5.15.37/fs/aufs/dcsub.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dcsub.c 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,212 @@ +diff -Naur null/fs/aufs/dcsub.c linux-6.6.4/fs/aufs/dcsub.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dcsub.c 2024-04-28 23:21:13.838237352 +0300 +@@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -6021,13 +6216,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dcsub.c linux-5.15.37-aufs/fs/aufs/dcsub.c + + return path_is_under(path + 0, path + 1); +} -diff -Nurp linux-5.15.37/fs/aufs/dcsub.h linux-5.15.37-aufs/fs/aufs/dcsub.h ---- linux-5.15.37/fs/aufs/dcsub.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dcsub.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,124 @@ +diff -Naur null/fs/aufs/dcsub.h linux-6.6.4/fs/aufs/dcsub.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dcsub.h 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -6149,13 +6357,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dcsub.h linux-5.15.37-aufs/fs/aufs/dcsub.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/debug.c linux-5.15.37-aufs/fs/aufs/debug.c ---- linux-5.15.37/fs/aufs/debug.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/debug.c 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,431 @@ +diff -Naur null/fs/aufs/debug.c linux-6.6.4/fs/aufs/debug.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/debug.c 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,448 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -6189,7 +6410,7 @@ diff -Nurp linux-5.15.37/fs/aufs/debug.c linux-5.15.37-aufs/fs/aufs/debug.c + return sprintf(buffer, "%d", atomic_read(a)); +} + -+static struct kernel_param_ops param_ops_atomic_t = { ++static const struct kernel_param_ops param_ops_atomic_t = { + .set = param_atomic_t_set, + .get = param_atomic_t_get + /* void (*free)(void *arg) */ @@ -6254,6 +6475,7 @@ diff -Nurp linux-5.15.37/fs/aufs/debug.c linux-5.15.37-aufs/fs/aufs/debug.c +{ + char *n = NULL; + int l = 0; ++ struct timespec64 ctime; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); @@ -6268,13 +6490,16 @@ diff -Nurp linux-5.15.37/fs/aufs/debug.c linux-5.15.37-aufs/fs/aufs/debug.c + l = wh->d_name.len; + } + ++ ctime = inode_get_ctime(inode); + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," ++ " acl %p, def_acl %p," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, -+ hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff, ++ inode->i_acl, inode->i_default_acl, ++ hn, (long long)timespec64_to_ns(&ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode_peek_iversion(inode), + inode->i_generation, @@ -6584,13 +6809,26 @@ diff -Nurp linux-5.15.37/fs/aufs/debug.c linux-5.15.37-aufs/fs/aufs/debug.c + + return 0; +} -diff -Nurp linux-5.15.37/fs/aufs/debug.h linux-5.15.37-aufs/fs/aufs/debug.h ---- linux-5.15.37/fs/aufs/debug.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/debug.h 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,213 @@ +diff -Naur null/fs/aufs/debug.h linux-6.6.4/fs/aufs/debug.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/debug.h 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -6801,13 +7039,26 @@ diff -Nurp linux-5.15.37/fs/aufs/debug.h linux-5.15.37-aufs/fs/aufs/debug.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c ---- linux-5.15.37/fs/aufs/dentry.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dentry.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,1155 @@ +diff -Naur null/fs/aufs/dentry.c linux-6.6.4/fs/aufs/dentry.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dentry.c 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,1168 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -6828,7 +7079,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + struct dentry *h_dentry; + struct inode *h_inode; + struct au_branch *br; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + struct path h_path; + int wh_found, opq; + unsigned char wh_able; @@ -6840,10 +7091,10 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + br = au_sbr(dentry->d_sb, bindex); + h_path.dentry = h_parent; + h_path.mnt = au_br_mnt(br); -+ h_userns = au_br_userns(br); ++ h_idmap = au_br_idmap(br); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) -+ wh_found = au_wh_test(h_userns, &h_path, &args->whname, ++ wh_found = au_wh_test(h_idmap, &h_path, &args->whname, + ignore_perm); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) @@ -6861,7 +7112,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + if (!ignore_perm) + h_dentry = vfsub_lkup_one(args->name, &h_path); + else -+ h_dentry = au_sio_lkup_one(h_userns, args->name, &h_path); ++ h_dentry = au_sio_lkup_one(h_idmap, args->name, &h_path); + if (IS_ERR(h_dentry)) { + if (PTR_ERR(h_dentry) == -ENAMETOOLONG + && !allow_neg) @@ -6897,7 +7148,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + + h_path.dentry = h_dentry; + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); -+ opq = au_diropq_test(h_userns, &h_path); ++ opq = au_diropq_test(h_idmap, &h_path); + inode_unlock_shared(h_inode); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); @@ -7042,13 +7293,13 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + return err; +} + -+struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++struct dentry *au_sio_lkup_one(struct mnt_idmap *idmap, struct qstr *name, + struct path *ppath) +{ + struct dentry *dentry; + int wkq_err; + -+ if (!au_test_h_perm_sio(userns, d_inode(ppath->dentry), MAY_EXEC)) ++ if (!au_test_h_perm_sio(idmap, d_inode(ppath->dentry), MAY_EXEC)) + dentry = vfsub_lkup_one(name, ppath); + else { + struct vfsub_lkup_one_args args = { @@ -7073,18 +7324,18 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c + int err; + struct dentry *parent, *h_dentry; + struct au_branch *br; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + struct path h_ppath; + + parent = dget_parent(dentry); + br = au_sbr(dentry->d_sb, bindex); + h_ppath.dentry = au_h_dptr(parent, bindex); + h_ppath.mnt = au_br_mnt(br); -+ h_userns = au_br_userns(br); ++ h_idmap = au_br_idmap(br); + if (wh) + h_dentry = au_whtmp_lkup(h_ppath.dentry, br, &dentry->d_name); + else -+ h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); ++ h_dentry = au_sio_lkup_one(h_idmap, &dentry->d_name, &h_ppath); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; @@ -7960,13 +8211,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.c linux-5.15.37-aufs/fs/aufs/dentry.c +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; -diff -Nurp linux-5.15.37/fs/aufs/dentry.h linux-5.15.37-aufs/fs/aufs/dentry.h ---- linux-5.15.37/fs/aufs/dentry.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dentry.h 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,256 @@ +diff -Naur null/fs/aufs/dentry.h linux-6.6.4/fs/aufs/dentry.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dentry.h 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,270 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -7994,6 +8258,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.h linux-5.15.37-aufs/fs/aufs/dentry.h + aufs_bindex_t di_btop, di_bbot, di_bwh, di_bdiropq; + unsigned char di_tmpfile; /* to allow the different name */ + struct au_hdentry *di_hdentry; ++ struct file *di_htmpfile; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + @@ -8026,7 +8291,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.h linux-5.15.37-aufs/fs/aufs/dentry.h +/* dentry.c */ +extern const struct dentry_operations aufs_dop, aufs_dop_noreval; +struct au_branch; -+struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++struct dentry *au_sio_lkup_one(struct mnt_idmap *idmap, struct qstr *name, + struct path *ppath); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); @@ -8220,13 +8485,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dentry.h linux-5.15.37-aufs/fs/aufs/dentry.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dinfo.c linux-5.15.37-aufs/fs/aufs/dinfo.c ---- linux-5.15.37/fs/aufs/dinfo.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dinfo.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,541 @@ +diff -Naur null/fs/aufs/dinfo.c linux-6.6.4/fs/aufs/dinfo.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dinfo.c 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,555 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -8264,6 +8542,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dinfo.c linux-5.15.37-aufs/fs/aufs/dinfo.c + dinfo->di_tmpfile = 0; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; ++ dinfo->di_htmpfile = NULL; + goto out; + } + @@ -8765,13 +9044,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dinfo.c linux-5.15.37-aufs/fs/aufs/dinfo.c + return bindex; + return -1; +} -diff -Nurp linux-5.15.37/fs/aufs/dir.c linux-5.15.37-aufs/fs/aufs/dir.c ---- linux-5.15.37/fs/aufs/dir.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dir.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,752 @@ +diff -Naur null/fs/aufs/dir.c linux-6.6.4/fs/aufs/dir.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dir.c 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,765 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -9307,9 +9599,9 @@ diff -Nurp linux-5.15.37/fs/aufs/dir.c linux-5.15.37-aufs/fs/aufs/dir.c + aufs_bindex_t bindex; +}; + -+static int test_empty_cb(struct dir_context *ctx, const char *__name, -+ int namelen, loff_t offset __maybe_unused, u64 ino, -+ unsigned int d_type) ++static bool test_empty_cb(struct dir_context *ctx, const char *__name, ++ int namelen, loff_t offset __maybe_unused, u64 ino, ++ unsigned int d_type) +{ + struct test_empty_arg *arg = container_of(ctx, struct test_empty_arg, + ctx); @@ -9340,7 +9632,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dir.c linux-5.15.37-aufs/fs/aufs/dir.c +out: + /* smp_mb(); */ + AuTraceErr(arg->err); -+ return arg->err; ++ return !arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) @@ -9395,14 +9687,14 @@ diff -Nurp linux-5.15.37/fs/aufs/dir.c linux-5.15.37-aufs/fs/aufs/dir.c + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + -+ h_userns = au_sbr_userns(dentry->d_sb, arg->bindex); ++ h_idmap = au_sbr_idmap(dentry->d_sb, arg->bindex); + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = d_inode(h_dentry); + /* todo: i_mode changes anytime? */ + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); -+ err = au_test_h_perm_sio(h_userns, h_inode, MAY_EXEC | MAY_READ); ++ err = au_test_h_perm_sio(h_idmap, h_inode, MAY_EXEC | MAY_READ); + inode_unlock_shared(h_inode); + if (!err) + err = do_test_empty(dentry, arg); @@ -9521,13 +9813,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dir.c linux-5.15.37-aufs/fs/aufs/dir.c + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; -diff -Nurp linux-5.15.37/fs/aufs/dir.h linux-5.15.37-aufs/fs/aufs/dir.h ---- linux-5.15.37/fs/aufs/dir.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dir.h 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,121 @@ +diff -Naur null/fs/aufs/dir.h linux-6.6.4/fs/aufs/dir.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dir.h 2024-04-28 23:21:13.839237340 +0300 +@@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -9646,13 +9951,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dir.h linux-5.15.37-aufs/fs/aufs/dir.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dirren.c linux-5.15.37-aufs/fs/aufs/dirren.c ---- linux-5.15.37/fs/aufs/dirren.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dirren.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,1302 @@ +diff -Naur null/fs/aufs/dirren.c linux-6.6.4/fs/aufs/dirren.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dirren.c 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,1315 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * Copyright (C) 2017-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -10374,7 +10692,7 @@ diff -Nurp linux-5.15.37/fs/aufs/dirren.c linux-5.15.37-aufs/fs/aufs/dirren.c + + memset(w, 0, sizeof(*w)); + w->allocated = roundup_pow_of_two(sizeof(*w->fdata) + 40); -+ strcpy(w->whname, AUFS_WH_DR_INFO_PFX); ++ strscpy(w->whname, AUFS_WH_DR_INFO_PFX, sizeof(AUFS_WH_DR_INFO_PFX)); + w->infoname = w->whname + sizeof(AUFS_WH_DR_INFO_PFX) - 1; + w->infonamelen = sizeof(w->whname) - sizeof(AUFS_WH_DR_INFO_PFX); + w->btgt = btgt; @@ -10952,13 +11270,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dirren.c linux-5.15.37-aufs/fs/aufs/dirren.c +out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/dirren.h linux-5.15.37-aufs/fs/aufs/dirren.h ---- linux-5.15.37/fs/aufs/dirren.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dirren.h 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,127 @@ +diff -Naur null/fs/aufs/dirren.h linux-6.6.4/fs/aufs/dirren.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dirren.h 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,140 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * Copyright (C) 2017-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -11083,13 +11414,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dirren.h linux-5.15.37-aufs/fs/aufs/dirren.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIRREN_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/dynop.c linux-5.15.37-aufs/fs/aufs/dynop.c ---- linux-5.15.37/fs/aufs/dynop.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dynop.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,355 @@ +diff -Naur null/fs/aufs/dynop.c linux-6.6.4/fs/aufs/dynop.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/dynop.c 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,366 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * Copyright (C) 2010-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -11252,28 +11596,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dynop.c linux-5.15.37-aufs/fs/aufs/dynop.c + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); -+ DySetAopForce(readpage); /* force */ ++ DySetAopForce(read_folio); /* force */ + DySetAop(writepages); -+ DySetAop(set_page_dirty); -+ DySetAop(readpages); ++ DySetAop(dirty_folio); ++ DySetAop(invalidate_folio); + DySetAop(readahead); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); -+ DySetAop(invalidatepage); -+ DySetAop(releasepage); -+ DySetAop(freepage); ++ DySetAop(release_folio); ++ DySetAop(free_folio); + /* this one will be changed according to an aufs mount option */ + DySetAop(direct_IO); -+ DySetAop(migratepage); -+ DySetAop(isolate_page); -+ DySetAop(putback_page); -+ DySetAop(launder_page); ++ DySetAop(migrate_folio); ++ DySetAop(launder_folio); + DySetAop(is_partially_uptodate); + DySetAop(is_dirty_writeback); + DySetAop(error_remove_page); + DySetAop(swap_activate); + DySetAop(swap_deactivate); ++ DySetAop(swap_rw); + + DyDbgSize(cnt, *h_aop); +} @@ -11442,13 +11784,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dynop.c linux-5.15.37-aufs/fs/aufs/dynop.c + for (i = 0; i < AuDyLast; i++) + WARN_ON(!hlist_bl_empty(dynop + i)); +} -diff -Nurp linux-5.15.37/fs/aufs/dynop.h linux-5.15.37-aufs/fs/aufs/dynop.h ---- linux-5.15.37/fs/aufs/dynop.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/dynop.h 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,64 @@ +diff -Naur null/fs/aufs/dynop.h linux-6.6.4/fs/aufs/dynop.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/dynop.h 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * Copyright (C) 2010-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -11510,13 +11865,26 @@ diff -Nurp linux-5.15.37/fs/aufs/dynop.h linux-5.15.37-aufs/fs/aufs/dynop.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/export.c linux-5.15.37-aufs/fs/aufs/export.c ---- linux-5.15.37/fs/aufs/export.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/export.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,817 @@ +diff -Naur null/fs/aufs/export.c linux-6.6.4/fs/aufs/export.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/export.c 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,830 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -11849,7 +12217,7 @@ diff -Nurp linux-5.15.37/fs/aufs/export.c linux-5.15.37-aufs/fs/aufs/export.c + int namelen; +}; + -+static int ++static bool +find_name_by_ino(struct dir_context *ctx, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ @@ -11858,12 +12226,12 @@ diff -Nurp linux-5.15.37/fs/aufs/export.c linux-5.15.37-aufs/fs/aufs/export.c + + a->called++; + if (a->ino != ino) -+ return 0; ++ return true; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; -+ return 1; ++ return false; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, @@ -12331,13 +12699,26 @@ diff -Nurp linux-5.15.37/fs/aufs/export.c linux-5.15.37-aufs/fs/aufs/export.c + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} -diff -Nurp linux-5.15.37/fs/aufs/fhsm.c linux-5.15.37-aufs/fs/aufs/fhsm.c ---- linux-5.15.37/fs/aufs/fhsm.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/fhsm.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,413 @@ +diff -Naur null/fs/aufs/fhsm.c linux-6.6.4/fs/aufs/fhsm.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/fhsm.c 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,426 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2011-2021 Junjiro R. Okajima ++ * Copyright (C) 2011-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -12748,13 +13129,26 @@ diff -Nurp linux-5.15.37/fs/aufs/fhsm.c linux-5.15.37-aufs/fs/aufs/fhsm.c + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} -diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c ---- linux-5.15.37/fs/aufs/file.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/file.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,850 @@ +diff -Naur null/fs/aufs/file.c linux-6.6.4/fs/aufs/file.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/file.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,865 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -12827,6 +13221,11 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c + au_lcnt_inc(&br->br_nfiles); + h_path.dentry = h_dentry; + h_path.mnt = au_br_mnt(br); ++ /* ++ * vfs::backing_file_open() looks promising since it can get rid of ++ * mm::vm_prfile approach from my mind. ++ * but I keep current approach for a while. ++ */ + h_file = vfsub_dentry_open(&h_path, flags); + if (IS_ERR(h_file)) + goto out_br; @@ -12985,18 +13384,20 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c + AuDebugOn(IS_ERR_OR_NULL(dentry)); + di_write_lock_child(dentry); + err = au_cmoo(dentry); -+ di_downgrade_lock(dentry, AuLock_IR); + if (!err) { -+ if (!aopen) -+ err = args->open(file, vfsub_file_flags(file), NULL); -+ else { ++ if (!aopen) { ++ err = args->open(file, vfsub_file_flags(file), ++ au_di(dentry)->di_htmpfile); ++ di_write_unlock(dentry); ++ } else { ++ di_downgrade_lock(dentry, AuLock_IR); + lockdep_off(); + err = args->open(file, vfsub_file_flags(file), + args->h_file); + lockdep_on(); ++ di_read_unlock(dentry, AuLock_IR); + } + } -+ di_read_unlock(dentry, AuLock_IR); + + finfo = au_fi(file); + if (!err) { @@ -13519,9 +13920,9 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c + +/* cf. aufs_nopage() */ +/* for madvise(2) */ -+static int aufs_readpage(struct file *file __maybe_unused, struct page *page) ++static int aufs_read_folio(struct file *file __maybe_unused, struct folio *folio) +{ -+ unlock_page(page); ++ folio_unlock(folio); + return 0; +} + @@ -13532,7 +13933,7 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, -+ loff_t pos, unsigned len, unsigned flags, ++ loff_t pos, unsigned len, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, @@ -13542,29 +13943,23 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + -+static int aufs_set_page_dirty(struct page *page) -+{ AuUnsupport(); return 0; } -+static void aufs_invalidatepage(struct page *page, unsigned int offset, -+ unsigned int length) ++static bool aufs_dirty_folio(struct address_space *mapping, struct folio *folio) ++{ AuUnsupport(); return true; } ++static void aufs_invalidate_folio(struct folio *folio, size_t offset, size_t len) +{ AuUnsupport(); } -+static int aufs_releasepage(struct page *page, gfp_t gfp) -+{ AuUnsupport(); return 0; } ++static bool aufs_release_folio(struct folio *folio, gfp_t gfp) ++{ AuUnsupport(); return true; } +#if 0 /* called by memory compaction regardless file */ -+static int aufs_migratepage(struct address_space *mapping, struct page *newpage, -+ struct page *page, enum migrate_mode mode) ++static int aufs_migrate_folio(struct address_space *mapping, struct folio *dst, ++ struct folio *src, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +#endif -+static bool aufs_isolate_page(struct page *page, isolate_mode_t mode) ++static int aufs_launder_folio(struct folio *folio) ++{ AuUnsupport(); return 0; } ++static bool aufs_is_partially_uptodate(struct folio *folio, size_t from, ++ size_t count) +{ AuUnsupport(); return true; } -+static void aufs_putback_page(struct page *page) -+{ AuUnsupport(); } -+static int aufs_launder_page(struct page *page) -+{ AuUnsupport(); return 0; } -+static int aufs_is_partially_uptodate(struct page *page, -+ unsigned long from, -+ unsigned long count) -+{ AuUnsupport(); return 0; } -+static void aufs_is_dirty_writeback(struct page *page, bool *dirty, ++static void aufs_is_dirty_writeback(struct folio *folio, bool *dirty, + bool *writeback) +{ AuUnsupport(); } +static int aufs_error_remove_page(struct address_space *mapping, @@ -13575,40 +13970,54 @@ diff -Nurp linux-5.15.37/fs/aufs/file.c linux-5.15.37-aufs/fs/aufs/file.c +{ AuUnsupport(); return 0; } +static void aufs_swap_deactivate(struct file *file) +{ AuUnsupport(); } ++static int aufs_swap_rw(struct kiocb *iocb, struct iov_iter *iter) ++{ AuUnsupport(); return 0; } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { -+ .readpage = aufs_readpage, ++ .read_folio = aufs_read_folio, + .direct_IO = aufs_direct_IO, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ -+ .set_page_dirty = aufs_set_page_dirty, ++ .dirty_folio = aufs_dirty_folio, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ -+ .invalidatepage = aufs_invalidatepage, -+ .releasepage = aufs_releasepage, ++ .invalidate_folio = aufs_invalidate_folio, ++ .release_folio = aufs_release_folio, + /* is fallback_migrate_page ok? */ -+ /* .migratepage = aufs_migratepage, */ -+ .isolate_page = aufs_isolate_page, -+ .putback_page = aufs_putback_page, -+ .launder_page = aufs_launder_page, ++ /* .migrate_folio = aufs_migrate_folio, */ ++ .launder_folio = aufs_launder_folio, + .is_partially_uptodate = aufs_is_partially_uptodate, + .is_dirty_writeback = aufs_is_dirty_writeback, + .error_remove_page = aufs_error_remove_page, + .swap_activate = aufs_swap_activate, -+ .swap_deactivate = aufs_swap_deactivate ++ .swap_deactivate = aufs_swap_deactivate, ++ .swap_rw = aufs_swap_rw +#endif /* CONFIG_AUFS_DEBUG */ +}; -diff -Nurp linux-5.15.37/fs/aufs/file.h linux-5.15.37-aufs/fs/aufs/file.h ---- linux-5.15.37/fs/aufs/file.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/file.h 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,329 @@ +diff -Naur null/fs/aufs/file.h linux-6.6.4/fs/aufs/file.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/file.h 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -13935,13 +14344,26 @@ diff -Nurp linux-5.15.37/fs/aufs/file.h linux-5.15.37-aufs/fs/aufs/file.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/finfo.c linux-5.15.37-aufs/fs/aufs/finfo.c ---- linux-5.15.37/fs/aufs/finfo.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/finfo.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,136 @@ +diff -Naur null/fs/aufs/finfo.c linux-6.6.4/fs/aufs/finfo.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/finfo.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -14075,13 +14497,26 @@ diff -Nurp linux-5.15.37/fs/aufs/finfo.c linux-5.15.37-aufs/fs/aufs/finfo.c +out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c ---- linux-5.15.37/fs/aufs/f_op.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/f_op.c 2022-04-08 20:22:30.612616475 +0300 -@@ -0,0 +1,758 @@ +diff -Naur null/fs/aufs/f_op.c linux-6.6.4/fs/aufs/f_op.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/f_op.c 2024-04-28 23:21:13.840237327 +0300 +@@ -0,0 +1,771 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -14129,12 +14564,17 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + /* br ref is already inc-ed */ + } + -+ if ((flags & __O_TMPFILE) -+ && !(flags & O_EXCL)) { -+ h_inode = file_inode(h_file); -+ spin_lock(&h_inode->i_lock); -+ h_inode->i_state |= I_LINKABLE; -+ spin_unlock(&h_inode->i_lock); ++ if (flags & __O_TMPFILE) { ++ AuDebugOn(!h_file); ++ AuDebugOn(h_file != au_di(dentry)->di_htmpfile); ++ au_di(dentry)->di_htmpfile = NULL; ++ ++ if (!(flags & O_EXCL)) { ++ h_inode = file_inode(h_file); ++ spin_lock(&h_inode->i_lock); ++ h_inode->i_state |= I_LINKABLE; ++ spin_unlock(&h_inode->i_lock); ++ } + } + au_set_fbtop(file, bindex); + au_set_h_fptr(file, bindex, h_file); @@ -14286,6 +14726,7 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + if (do_ready) + au_unpin(&pin); + di_read_unlock(dentry, /*flags*/0); ++ vfsub_file_start_write(h_file); + +out_fi: + fi_write_unlock(file); @@ -14298,6 +14739,7 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c +{ + struct inode *h_inode; + ++ vfsub_file_end_write(h_file); + au_cpup_attr_timesizes(inode); + AuDebugOn(au_ibtop(inode) != wpre->btop); + h_inode = file_inode(h_file); @@ -14454,7 +14896,7 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + if (IS_ERR(h_file)) + goto out; + -+ err = vfsub_splice_to(h_file, ppos, pipe, len, flags); ++ err = vfsub_splice_read(h_file, ppos, pipe, len, flags); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); @@ -14511,6 +14953,10 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + lockdep_off(); + err = vfs_fallocate(h_file, mode, offset, len); + lockdep_on(); ++ /* ++ * we don't need to call file_modifed() here since au_write_post() ++ * is equivalent and copies-up all timestamps and permission bits. ++ */ + au_write_post(inode, h_file, &wpre, /*written*/1); + +out: @@ -14795,16 +15241,6 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + +/* ---------------------------------------------------------------------- */ + -+/* no one supports this operation, currently */ -+#if 0 /* reserved for future use */ -+static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, -+ size_t len, loff_t *pos, int more) -+{ -+} -+#endif -+ -+/* ---------------------------------------------------------------------- */ -+ +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + @@ -14826,7 +15262,6 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + .fasync = aufs_fasync, -+ /* .sendpage = aufs_sendpage, */ + .setfl = aufs_setfl, + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, @@ -14837,13 +15272,26 @@ diff -Nurp linux-5.15.37/fs/aufs/f_op.c linux-5.15.37-aufs/fs/aufs/f_op.c + .fallocate = aufs_fallocate, + .copy_file_range = aufs_copy_file_range +}; -diff -Nurp linux-5.15.37/fs/aufs/fsctx.c linux-5.15.37-aufs/fs/aufs/fsctx.c ---- linux-5.15.37/fs/aufs/fsctx.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/fsctx.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,1229 @@ +diff -Naur null/fs/aufs/fsctx.c linux-6.6.4/fs/aufs/fsctx.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/fsctx.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,1242 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -15271,7 +15719,7 @@ diff -Nurp linux-5.15.37/fs/aufs/fsctx.c linux-5.15.37-aufs/fs/aufs/fsctx.c +#ifdef CONFIG_FS_POSIX_ACL + fsparam_flag_no("acl", Opt_acl), +#else -+ au_ignore_flag("acl"), ++ au_ignore_flag("acl", Opt_ignore), +#endif + + /* internal use for the scripts */ @@ -15833,7 +16281,7 @@ diff -Nurp linux-5.15.37/fs/aufs/fsctx.c linux-5.15.37-aufs/fs/aufs/fsctx.c + case Opt_##name: \ + err = 0; \ + opt->tf = !result.negated; \ -+ break; ++ break + au_fsctx_TF(trunc_xino); + au_fsctx_TF(trunc_xib); + au_fsctx_TF(dirperm1); @@ -15910,7 +16358,7 @@ diff -Nurp linux-5.15.37/fs/aufs/fsctx.c linux-5.15.37-aufs/fs/aufs/fsctx.c +{ +#define do_test(name) \ + if (!strncmp(str, name ":", sizeof(name))) \ -+ return sizeof(name) - 1; ++ return sizeof(name) - 1 + do_test("br"); + do_test("add"); + do_test("ins"); @@ -16070,13 +16518,26 @@ diff -Nurp linux-5.15.37/fs/aufs/fsctx.c linux-5.15.37-aufs/fs/aufs/fsctx.c + AuTraceErr(err); + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/fstype.h linux-5.15.37-aufs/fs/aufs/fstype.h ---- linux-5.15.37/fs/aufs/fstype.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/fstype.h 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,388 @@ +diff -Naur null/fs/aufs/fstype.h linux-6.6.4/fs/aufs/fstype.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/fstype.h 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,401 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -16462,13 +16923,26 @@ diff -Nurp linux-5.15.37/fs/aufs/fstype.h linux-5.15.37-aufs/fs/aufs/fstype.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/hbl.h linux-5.15.37-aufs/fs/aufs/hbl.h ---- linux-5.15.37/fs/aufs/hbl.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/hbl.h 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,52 @@ +diff -Naur null/fs/aufs/hbl.h linux-6.6.4/fs/aufs/hbl.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/hbl.h 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * Copyright (C) 2017-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -16518,15 +16992,26 @@ diff -Nurp linux-5.15.37/fs/aufs/hbl.h linux-5.15.37-aufs/fs/aufs/hbl.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_HBL_H__ */ -diff --git a/fs/aufs/hfsnotify.c b/fs/aufs/hfsnotify.c -new file mode 100644 -index 000000000000..c2c7766d6cf1 +diff -Naur null/fs/aufs/hfsnotify.c linux-6.6.4/fs/aufs/hfsnotify.c --- /dev/null -+++ b/fs/aufs/hfsnotify.c -@@ -0,0 +1,275 @@ ++++ linux-6.6.4/fs/aufs/hfsnotify.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,290 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -16683,7 +17168,8 @@ index 000000000000..c2c7766d6cf1 + struct inode *h_dir, *h_inode; + struct fsnotify_mark *inode_mark; + -+ AuDebugOn(data_type != FSNOTIFY_EVENT_INODE); ++ AuDebugOn(!(data_type == FSNOTIFY_EVENT_INODE ++ || data_type == FSNOTIFY_EVENT_DENTRY)); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ @@ -16695,11 +17181,11 @@ index 000000000000..c2c7766d6cf1 + h_inode = NULL; +#ifdef AuDbgHnotify + au_debug_on(); -+ if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 -+ || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { ++ if (1 || file_name.len != sizeof(AUFS_XINO_FNAME) - 1 ++ || strncmp(file_name.name, AUFS_XINO_FNAME, file_name.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), -+ AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); ++ AuLNPair(file_name), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug_off(); @@ -16751,7 +17237,8 @@ index 000000000000..c2c7766d6cf1 + goto out; + + err = 0; -+ group = fsnotify_alloc_group(&au_hfsn_ops); ++ group = fsnotify_alloc_group(&au_hfsn_ops, ++ /*flags - not for userspace*/0); + if (IS_ERR(group)) { + err = PTR_ERR(group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); @@ -16799,13 +17286,26 @@ index 000000000000..c2c7766d6cf1 + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; -diff -Nurp linux-5.15.37/fs/aufs/hfsplus.c linux-5.15.37-aufs/fs/aufs/hfsplus.c ---- linux-5.15.37/fs/aufs/hfsplus.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/hfsplus.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,47 @@ +diff -Naur null/fs/aufs/hfsplus.c linux-6.6.4/fs/aufs/hfsplus.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/hfsplus.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * Copyright (C) 2010-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -16850,13 +17350,26 @@ diff -Nurp linux-5.15.37/fs/aufs/hfsplus.c linux-5.15.37-aufs/fs/aufs/hfsplus.c + au_lcnt_dec(&br->br_nfiles); + } +} -diff -Nurp linux-5.15.37/fs/aufs/hnotify.c linux-5.15.37-aufs/fs/aufs/hnotify.c ---- linux-5.15.37/fs/aufs/hnotify.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/hnotify.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,702 @@ +diff -Naur null/fs/aufs/hnotify.c linux-6.6.4/fs/aufs/hnotify.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/hnotify.c 2024-04-28 23:21:13.841237315 +0300 +@@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -17556,13 +18069,26 @@ diff -Nurp linux-5.15.37/fs/aufs/hnotify.c linux-5.15.37-aufs/fs/aufs/hnotify.c + if (au_cache[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} -diff -Nurp linux-5.15.37/fs/aufs/iinfo.c linux-5.15.37-aufs/fs/aufs/iinfo.c ---- linux-5.15.37/fs/aufs/iinfo.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/iinfo.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,273 @@ +diff -Naur null/fs/aufs/iinfo.c linux-6.6.4/fs/aufs/iinfo.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/iinfo.c 2024-04-28 23:21:13.842237302 +0300 +@@ -0,0 +1,286 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -17833,13 +18359,26 @@ diff -Nurp linux-5.15.37/fs/aufs/iinfo.c linux-5.15.37-aufs/fs/aufs/iinfo.c + au_kfree_rcu(iinfo->ii_hinode); + AuRwDestroy(&iinfo->ii_rwsem); +} -diff -Nurp linux-5.15.37/fs/aufs/inode.c linux-5.15.37-aufs/fs/aufs/inode.c ---- linux-5.15.37/fs/aufs/inode.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/inode.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,518 @@ +diff -Naur null/fs/aufs/inode.c linux-6.6.4/fs/aufs/inode.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/inode.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,531 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -18100,7 +18639,7 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.c linux-5.15.37-aufs/fs/aufs/inode.c + } + au_cpup_attr_all(inode, /*force*/1); + /* -+ * to force calling aufs_get_acl() every time, ++ * to force calling aufs_get_inode_acl() every time, + * do not call cache_no_acl() for aufs inode. + */ + @@ -18338,30 +18877,43 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.c linux-5.15.37-aufs/fs/aufs/inode.c + return err; +} + -+int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++int au_test_h_perm(struct mnt_idmap *h_idmap, struct inode *h_inode, + int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; -+ return inode_permission(h_userns, h_inode, mask); ++ return inode_permission(h_idmap, h_inode, mask); +} + -+int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++int au_test_h_perm_sio(struct mnt_idmap *h_idmap, struct inode *h_inode, + int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ -+ return au_test_h_perm(h_userns, h_inode, mask); ++ return au_test_h_perm(h_idmap, h_inode, mask); +} -diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h ---- linux-5.15.37/fs/aufs/inode.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/inode.h 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,692 @@ +diff -Naur null/fs/aufs/inode.h linux-6.6.4/fs/aufs/inode.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/inode.h 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,707 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -18485,9 +19037,9 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); -+int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++int au_test_h_perm(struct mnt_idmap *h_idmap, struct inode *h_inode, + int mask); -+int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++int au_test_h_perm_sio(struct mnt_idmap *h_idmap, struct inode *h_inode, + int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, @@ -18563,20 +19115,20 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); -+int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++int aufs_mknod(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode, dev_t dev); -+int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++int aufs_symlink(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, const char *symname); -+int aufs_create(struct user_namespace *userns, struct inode *dir, ++int aufs_create(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode, bool want_excl); +struct vfsub_aopen_args; +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); -+int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, -+ struct dentry *dentry, umode_t mode); ++int aufs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, ++ struct file *file, umode_t mode); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); -+int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++int aufs_mkdir(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ @@ -18588,7 +19140,7 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); -+int aufs_rename(struct user_namespace *userns, ++int aufs_rename(struct mnt_idmap *idmap, + struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags); @@ -18672,8 +19224,10 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h +#endif + +#ifdef CONFIG_FS_POSIX_ACL -+struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu); -+int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++struct posix_acl *aufs_get_inode_acl(struct inode *inode, int type, bool rcu); ++struct posix_acl *aufs_get_acl(struct mnt_idmap *idmap, ++ struct dentry *dentry, int type); ++int aufs_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, + struct posix_acl *acl, int type); +#endif + @@ -19051,13 +19605,26 @@ diff -Nurp linux-5.15.37/fs/aufs/inode.h linux-5.15.37-aufs/fs/aufs/inode.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/ioctl.c linux-5.15.37-aufs/fs/aufs/ioctl.c ---- linux-5.15.37/fs/aufs/ioctl.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/ioctl.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,207 @@ +diff -Naur null/fs/aufs/ioctl.c linux-6.6.4/fs/aufs/ioctl.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/ioctl.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -19262,13 +19829,26 @@ diff -Nurp linux-5.15.37/fs/aufs/ioctl.c linux-5.15.37-aufs/fs/aufs/ioctl.c + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif -diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add.c ---- linux-5.15.37/fs/aufs/i_op_add.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/i_op_add.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,928 @@ +diff -Naur null/fs/aufs/i_op_add.c linux-6.6.4/fs/aufs/i_op_add.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/i_op_add.c 2024-04-28 23:21:13.842237302 +0300 +@@ -0,0 +1,972 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -19621,7 +20201,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + return err; +} + -+int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++int aufs_mknod(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode, dev_t dev) +{ + struct simple_arg arg = { @@ -19634,7 +20214,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + return add_simple(dir, dentry, &arg); +} + -+int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++int aufs_symlink(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { @@ -19644,7 +20224,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + return add_simple(dir, dentry, &arg); +} + -+int aufs_create(struct user_namespace *userns, struct inode *dir, ++int aufs_create(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode, bool want_excl) +{ + struct simple_arg arg = { @@ -19672,16 +20252,19 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + return add_simple(dir, dentry, &arg); +} + -+int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, -+ struct dentry *dentry, umode_t mode) ++int aufs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, ++ struct file *file, umode_t mode) +{ + int err; + aufs_bindex_t bindex; ++ struct path h_ppath; + struct super_block *sb; -+ struct dentry *parent, *h_parent, *h_dentry; ++ struct au_branch *br; ++ struct dentry *dentry, *parent, *h_parent, *h_dentry; + struct inode *h_dir, *inode; + struct vfsmount *h_mnt; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; ++ struct file *h_file; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_TMPFILE @@ -19690,11 +20273,13 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + /* copy-up may happen */ + inode_lock(dir); + ++ h_file = NULL; + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + ++ dentry = file->f_path.dentry; + err = au_di_init(dentry); + if (unlikely(err)) + goto out_si; @@ -19723,19 +20308,25 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + if (unlikely(!h_dir->i_op->tmpfile)) + goto out_parent; + -+ h_mnt = au_sbr_mnt(sb, bindex); ++ br = au_sbr(sb, bindex); ++ h_mnt = au_br_mnt(br); + err = vfsub_mnt_want_write(h_mnt); + if (unlikely(err)) + goto out_parent; + -+ h_userns = mnt_user_ns(h_mnt); ++ h_idmap = mnt_idmap(h_mnt); + h_parent = au_h_dptr(parent, bindex); -+ h_dentry = vfs_tmpfile(h_userns, h_parent, mode, /*open_flag*/0); -+ if (IS_ERR(h_dentry)) { -+ err = PTR_ERR(h_dentry); ++ h_ppath.mnt = h_mnt; ++ h_ppath.dentry = h_parent; ++ h_file = kernel_tmpfile_open(h_idmap, &h_ppath, mode, /*open_flag*/0, ++ current_cred()); ++ if (IS_ERR(h_file)) { ++ err = PTR_ERR(h_file); ++ h_file = NULL; + goto out_mnt; + } + ++ h_dentry = h_file->f_path.dentry; + au_set_dbtop(dentry, bindex); + au_set_dbbot(dentry, bindex); + au_set_h_dptr(dentry, bindex, dget(h_dentry)); @@ -19745,32 +20336,52 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + au_set_h_dptr(dentry, bindex, NULL); + au_set_dbtop(dentry, -1); + au_set_dbbot(dentry, -1); -+ } else { -+ if (!inode->i_nlink) -+ set_nlink(inode, 1); -+ d_tmpfile(dentry, inode); -+ au_di(dentry)->di_tmpfile = 1; -+ -+ /* update without i_mutex */ -+ if (au_ibtop(dir) == au_dbtop(dentry)) -+ au_cpup_attr_timesizes(dir); ++ goto out_h_file; + } -+ dput(h_dentry); + ++ if (!inode->i_nlink) ++ set_nlink(inode, 1); ++ d_tmpfile(file, inode); ++ au_di(dentry)->di_tmpfile = 1; ++ get_file(h_file); ++ au_di(dentry)->di_htmpfile = h_file; ++ ++ /* update without i_mutex */ ++ if (au_ibtop(dir) == au_dbtop(dentry)) ++ au_cpup_attr_timesizes(dir); ++ ++out_h_file: ++ fput(h_file); +out_mnt: + vfsub_mnt_drop_write(h_mnt); +out_parent: + di_write_unlock(parent); + dput(parent); + di_write_unlock(dentry); -+ if (unlikely(err)) { -+ au_di_fin(dentry); -+ dentry->d_fsdata = NULL; -+ } ++ if (!err) ++ goto out_si; ++ if (h_file) ++ fput(h_file); ++ au_di(dentry)->di_htmpfile = NULL; ++ au_di_fin(dentry); ++ dentry->d_fsdata = NULL; +out_si: + si_read_unlock(sb); ++ if (!err && h_file) { ++ /* finally... */ ++ err = finish_open_simple(file, err); ++ if (!err) ++ au_lcnt_inc(&br->br_nfiles); ++ else { ++ fput(h_file); ++ au_di(dentry)->di_htmpfile = NULL; ++ au_di_fin(dentry); ++ dentry->d_fsdata = NULL; ++ } ++ } +out: + inode_unlock(dir); ++ AuTraceErr(err); + return err; +} + @@ -20048,7 +20659,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + au_dir_ts(dir, a->bdst); + inode_inc_iversion(dir); + inc_nlink(inode); -+ inode->i_ctime = dir->i_ctime; ++ inode_set_ctime_to_ts(inode, inode_get_ctime(dir)); + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ @@ -20086,7 +20697,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. + return err; +} + -+int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++int aufs_mkdir(struct mnt_idmap *idmap, struct inode *dir, + struct dentry *dentry, umode_t mode) +{ + int err, rerr; @@ -20194,13 +20805,26 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_add.c linux-5.15.37-aufs/fs/aufs/i_op_add. +out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c ---- linux-5.15.37/fs/aufs/i_op.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/i_op.c 2022-04-08 20:22:30.613616524 +0300 -@@ -0,0 +1,1499 @@ +diff -Naur null/fs/aufs/i_op.c linux-6.6.4/fs/aufs/i_op.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/i_op.c 2024-04-28 23:21:13.842237302 +0300 +@@ -0,0 +1,1516 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -20208,6 +20832,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + */ + +#include ++#include +#include +#include +#include @@ -20218,7 +20843,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + err = -EPERM; + if (write_mask && IS_IMMUTABLE(h_inode)) @@ -20238,21 +20863,22 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.' + * in this case, generic_permission() returns -EOPNOTSUPP. + */ -+ h_userns = mnt_user_ns(h_path->mnt); ++ h_idmap = mnt_idmap(h_path->mnt); + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ -+ /* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */ -+ err = generic_permission(h_userns, h_inode, mask); ++ /* AuDbg("get_inode_acl %ps\n", ++ h_inode->i_op->get_inode_acl); */ ++ err = generic_permission(h_idmap, h_inode, mask); + if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) -+ err = h_inode->i_op->permission(h_userns, h_inode, ++ err = h_inode->i_op->permission(h_idmap, h_inode, + mask); + AuTraceErr(err); + } else { + /* AuLabel(h_inode->permission); */ -+ err = h_inode->i_op->permission(h_userns, h_inode, mask); ++ err = h_inode->i_op->permission(h_idmap, h_inode, mask); + AuTraceErr(err); + } + @@ -20265,7 +20891,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + return err; +} + -+static int aufs_permission(struct user_namespace *userns, struct inode *inode, ++static int aufs_permission(struct mnt_idmap *idmap, struct inode *inode, + int mask) +{ + int err; @@ -21114,7 +21740,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + return err; +} + -+static int aufs_setattr(struct user_namespace *userns, struct dentry *dentry, ++static int aufs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, + struct iattr *ia) +{ + int err; @@ -21122,12 +21748,12 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + inode = d_inode(dentry); + IMustLock(inode); + -+ err = setattr_prepare(userns, dentry, ia); ++ err = setattr_prepare(idmap, dentry, ia); + if (unlikely(err)) + goto out; + @@ -21221,8 +21847,8 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + * why don't all acl-aware fs call this func from their ->setattr()? + */ + if (!err && (ia->ia_valid & ATTR_MODE)) { -+ h_userns = mnt_user_ns(a->h_path.mnt); -+ err = vfsub_acl_chmod(h_userns, a->h_inode, ia->ia_mode); ++ h_idmap = mnt_idmap(a->h_path.mnt); ++ err = vfsub_acl_chmod(h_idmap, a->h_path.dentry, ia->ia_mode); + } + if (!err) + au_cpup_attr_changeable(inode); @@ -21285,7 +21911,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + struct super_block *sb; + struct au_icpup_args *a; + struct inode *h_inode; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + IMustLock(inode); + @@ -21304,13 +21930,13 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + err = au_h_path_to_set_attr(dentry, a, &h_path); + if (unlikely(err)) + goto out_di; -+ h_userns = mnt_user_ns(h_path.mnt); ++ h_idmap = mnt_idmap(h_path.mnt); + + inode_unlock(a->h_inode); + switch (arg->type) { + case AU_XATTR_SET: + AuDebugOn(d_is_negative(h_path.dentry)); -+ err = vfsub_setxattr(h_userns, h_path.dentry, ++ err = vfsub_setxattr(h_idmap, h_path.dentry, + arg->u.set.name, arg->u.set.value, + arg->u.set.size, arg->u.set.flags); + break; @@ -21319,7 +21945,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + h_inode = d_inode(h_path.dentry); + if (h_inode->i_op->set_acl) { + /* this will call posix_acl_update_mode */ -+ err = h_inode->i_op->set_acl(h_userns, h_inode, ++ err = h_inode->i_op->set_acl(h_idmap, h_path.dentry, + arg->u.acl_set.acl, + arg->u.acl_set.type); + } @@ -21354,7 +21980,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + inode->i_gid = st->gid; + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; -+ inode->i_ctime = st->ctime; ++ inode_set_ctime_to_ts(inode, st->ctime); + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { @@ -21453,7 +22079,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + return err; +} + -+static int aufs_getattr(struct user_namespace *userns, const struct path *path, ++static int aufs_getattr(struct mnt_idmap *idmap, const struct path *path, + struct kstat *st, u32 request, unsigned int query) +{ + int err; @@ -21491,7 +22117,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + goto out_di; + +out_fill: -+ generic_fillattr(userns, inode, st); ++ generic_fillattr(idmap, request, inode, st); +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: @@ -21573,8 +22199,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK)); +} + -+static int aufs_update_time(struct inode *inode, struct timespec64 *ts, -+ int flags) ++static int aufs_update_time(struct inode *inode, int flags) +{ + int err; + aufs_bindex_t bindex; @@ -21598,7 +22223,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (!err) { -+ err = vfsub_update_time(h_inode, ts, flags); ++ err = vfsub_update_time(h_inode, flags); + vfsub_mnt_drop_write(h_mnt); + } + } else if (au_is_special(h_inode)) { @@ -21637,6 +22262,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + [AuIop_SYMLINK] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL ++ .get_inode_acl = aufs_get_inode_acl, + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, /* unsupport for symlink? */ +#endif @@ -21648,7 +22274,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + .listxattr = aufs_listxattr, +#endif + -+ .get_link = aufs_get_link, ++ .get_link = aufs_get_link + + /* .update_time = aufs_update_time */ + }, @@ -21665,6 +22291,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL ++ .get_inode_acl = aufs_get_inode_acl, + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif @@ -21683,6 +22310,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + [AuIop_OTHER] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL ++ .get_inode_acl = aufs_get_inode_acl, + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif @@ -21697,13 +22325,26 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op.c linux-5.15.37-aufs/fs/aufs/i_op.c + .update_time = aufs_update_time + } +}; -diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del.c ---- linux-5.15.37/fs/aufs/i_op_del.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/i_op_del.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,509 @@ +diff -Naur null/fs/aufs/i_op_del.c linux-6.6.4/fs/aufs/i_op_del.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/i_op_del.c 2024-04-28 23:21:13.842237302 +0300 +@@ -0,0 +1,523 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -21787,7 +22428,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. + struct path h_ppath; + struct super_block *sb; + struct au_branch *br; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_positive(dentry)) { @@ -21827,15 +22468,15 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. + err = -EACCES; + sb = dentry->d_sb; + br = au_sbr(sb, bindex); -+ h_userns = au_br_userns(br); ++ h_idmap = au_br_idmap(br); + if (unlikely(!au_opt_test(au_mntflags(sb), DIRPERM1) -+ && au_test_h_perm(h_userns, d_inode(h_parent), ++ && au_test_h_perm(h_idmap, d_inode(h_parent), + MAY_EXEC | MAY_WRITE))) + goto out; + + h_ppath.dentry = h_parent; + h_ppath.mnt = au_br_mnt(br); -+ h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); ++ h_latest = au_sio_lkup_one(h_idmap, &dentry->d_name, &h_ppath); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; @@ -21967,7 +22608,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. + + inode = d_inode(dentry); + d_drop(dentry); -+ inode->i_ctime = dir->i_ctime; ++ inode_set_ctime_to_ts(inode, inode_get_ctime(dir)); + + au_dir_ts(dir, bindex); + inode_inc_iversion(dir); @@ -22003,7 +22644,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. +{ + int err; + aufs_bindex_t bwh, bindex, btop; -+ struct inode *inode, *h_dir, *delegated; ++ struct inode *inode, *h_dir, *delegated, *h_inode; + struct dentry *parent, *wh_dentry; + /* to reduce stack size */ + struct { @@ -22069,10 +22710,11 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. + if (bindex == btop) { + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); + /*ignore*/ -+ inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ h_inode = d_inode(a->h_path.dentry); ++ inode_set_ctime_to_ts(inode, inode_get_ctime(h_inode)); + } else + /* todo: this timestamp may be reverted later */ -+ inode->i_ctime = h_dir->i_ctime; ++ inode_set_ctime_to_ts(inode, inode_get_ctime(h_dir)); + goto out_unpin; /* success */ + } + @@ -22210,13 +22852,26 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_del.c linux-5.15.37-aufs/fs/aufs/i_op_del. + AuTraceErr(err); + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/i_op_ren.c linux-5.15.37-aufs/fs/aufs/i_op_ren.c ---- linux-5.15.37/fs/aufs/i_op_ren.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/i_op_ren.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,1244 @@ +diff -Naur null/fs/aufs/i_op_ren.c linux-6.6.4/fs/aufs/i_op_ren.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/i_op_ren.c 2024-04-28 23:21:13.842237302 +0300 +@@ -0,0 +1,1260 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -22569,6 +23224,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_ren.c linux-5.15.37-aufs/fs/aufs/i_op_ren. +{ + int err; + struct dentry *d, *h_d; ++ struct inode *h_inode; + + if (!a->exchange) { + /* prepare workqueue args for asynchronous rmdir */ @@ -22646,12 +23302,14 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_ren.c linux-5.15.37-aufs/fs/aufs/i_op_ren. + AuDebugOn(au_dbtop(a->dst_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->dst_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ -+ a->dst_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ h_inode = d_inode(a->h_path.dentry); ++ inode_set_ctime_to_ts(a->dst_inode, inode_get_ctime(h_inode)); + } + AuDebugOn(au_dbtop(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ -+ a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ h_inode = d_inode(a->h_path.dentry); ++ inode_set_ctime_to_ts(a->src_inode, inode_get_ctime(h_inode)); + + if (!a->exchange) { + /* remove whiteout for dentry */ @@ -23162,7 +23820,7 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_ren.c linux-5.15.37-aufs/fs/aufs/i_op_ren. + +/* ---------------------------------------------------------------------- */ + -+int aufs_rename(struct user_namespace *userns, ++int aufs_rename(struct mnt_idmap *idmap, + struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags) @@ -23458,13 +24116,13 @@ diff -Nurp linux-5.15.37/fs/aufs/i_op_ren.c linux-5.15.37-aufs/fs/aufs/i_op_ren. + AuTraceErr(err); + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/Kconfig linux-5.15.37-aufs/fs/aufs/Kconfig ---- linux-5.15.37/fs/aufs/Kconfig 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/Kconfig 2022-04-08 20:22:30.611616426 +0300 +diff -Naur null/fs/aufs/Kconfig linux-6.6.4/fs/aufs/Kconfig +--- /dev/null ++++ linux-6.6.4/fs/aufs/Kconfig 2024-04-28 23:21:13.837237365 +0300 @@ -0,0 +1,199 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUFS_FS -+ bool "Aufs (Advanced multi layered unification filesystem) support" ++ tristate "Aufs (Advanced multi layered unification filesystem) support" + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single @@ -23536,7 +24194,7 @@ diff -Nurp linux-5.15.37/fs/aufs/Kconfig linux-5.15.37-aufs/fs/aufs/Kconfig + +config AUFS_EXPORT + bool "NFS-exportable aufs" -+ depends on EXPORTFS = y ++ depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. @@ -23588,7 +24246,7 @@ diff -Nurp linux-5.15.37/fs/aufs/Kconfig linux-5.15.37-aufs/fs/aufs/Kconfig + his child on the lower branch, since it is a bad idea to issue + rename(2) internally for every lower branch. But user may not + accept this behaviour. So here is a workaround to allow such -+ rename(2) and store some extra infromation on the writable ++ rename(2) and store some extra information on the writable + branch. Obviously this costs high (and I don't like it). + To use this feature, you need to enable this configuration AND + to specify the mount option `dirren.' @@ -23661,13 +24319,26 @@ diff -Nurp linux-5.15.37/fs/aufs/Kconfig linux-5.15.37-aufs/fs/aufs/Kconfig + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif -diff -Nurp linux-5.15.37/fs/aufs/lcnt.h linux-5.15.37-aufs/fs/aufs/lcnt.h ---- linux-5.15.37/fs/aufs/lcnt.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/lcnt.h 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,173 @@ +diff -Naur null/fs/aufs/lcnt.h linux-6.6.4/fs/aufs/lcnt.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/lcnt.h 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,186 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2018-2021 Junjiro R. Okajima ++ * Copyright (C) 2018-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -23838,13 +24509,26 @@ diff -Nurp linux-5.15.37/fs/aufs/lcnt.h linux-5.15.37-aufs/fs/aufs/lcnt.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LCNT_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/loop.c linux-5.15.37-aufs/fs/aufs/loop.c ---- linux-5.15.37/fs/aufs/loop.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/loop.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,135 @@ +diff -Naur null/fs/aufs/loop.c linux-6.6.4/fs/aufs/loop.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/loop.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -23977,13 +24661,26 @@ diff -Nurp linux-5.15.37/fs/aufs/loop.c linux-5.15.37-aufs/fs/aufs/loop.c + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); +} -diff -Nurp linux-5.15.37/fs/aufs/loop.h linux-5.15.37-aufs/fs/aufs/loop.h ---- linux-5.15.37/fs/aufs/loop.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/loop.h 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,42 @@ +diff -Naur null/fs/aufs/loop.h linux-6.6.4/fs/aufs/loop.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/loop.h 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -24023,9 +24720,9 @@ diff -Nurp linux-5.15.37/fs/aufs/loop.h linux-5.15.37-aufs/fs/aufs/loop.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/magic.mk linux-5.15.37-aufs/fs/aufs/magic.mk ---- linux-5.15.37/fs/aufs/magic.mk 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/magic.mk 2022-04-08 20:22:30.614616573 +0300 +diff -Naur null/fs/aufs/magic.mk linux-6.6.4/fs/aufs/magic.mk +--- /dev/null ++++ linux-6.6.4/fs/aufs/magic.mk 2024-04-28 23:21:13.843237290 +0300 @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -24058,20 +24755,27 @@ diff -Nurp linux-5.15.37/fs/aufs/magic.mk linux-5.15.37-aufs/fs/aufs/magic.mk +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif -diff -Nurp linux-5.15.37/fs/aufs/Makefile linux-5.15.37-aufs/fs/aufs/Makefile ---- linux-5.15.37/fs/aufs/Makefile 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/Makefile 2022-04-08 20:22:30.611616426 +0300 -@@ -0,0 +1,39 @@ +diff -Naur null/fs/aufs/Makefile linux-6.6.4/fs/aufs/Makefile +--- /dev/null ++++ linux-6.6.4/fs/aufs/Makefile 2024-04-28 23:21:13.837237365 +0300 +@@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 + -+include ${srctree}/${src}/magic.mk -+-include ${srctree}/${src}/priv_def.mk ++include ${src}/magic.mk ++ifeq (${CONFIG_AUFS_FS},m) ++include ${src}/conf.mk ++endif ++-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname ++ifdef M ++ccflags-y += -include ${M}/../../include/uapi/linux/aufs_type.h ++else +ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h ++endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o fsctx.o \ @@ -24101,13 +24805,26 @@ diff -Nurp linux-5.15.37/fs/aufs/Makefile linux-5.15.37-aufs/fs/aufs/Makefile +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o -diff -Nurp linux-5.15.37/fs/aufs/module.c linux-5.15.37-aufs/fs/aufs/module.c ---- linux-5.15.37/fs/aufs/module.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/module.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,259 @@ +diff -Naur null/fs/aufs/module.c linux-6.6.4/fs/aufs/module.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/module.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,273 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -24239,6 +24956,7 @@ diff -Nurp linux-5.15.37/fs/aufs/module.c linux-5.15.37-aufs/fs/aufs/module.c +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); ++MODULE_ALIAS_FS(AUFS_NAME); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; @@ -24364,13 +25082,26 @@ diff -Nurp linux-5.15.37/fs/aufs/module.c linux-5.15.37-aufs/fs/aufs/module.c + +module_init(aufs_init); +module_exit(aufs_exit); -diff -Nurp linux-5.15.37/fs/aufs/module.h linux-5.15.37-aufs/fs/aufs/module.h ---- linux-5.15.37/fs/aufs/module.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/module.h 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,153 @@ +diff -Naur null/fs/aufs/module.h linux-6.6.4/fs/aufs/module.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/module.h 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -24492,9 +25223,11 @@ diff -Nurp linux-5.15.37/fs/aufs/module.h linux-5.15.37-aufs/fs/aufs/module.h + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + -+#define AuCacheFuncs(name, index) \ ++#define AuCacheFuncAlloc(name, index) \ + static inline struct au_##name *au_cache_alloc_##name(void) \ -+ { return kmem_cache_alloc(au_cache[AuCache_##index], GFP_NOFS); } \ ++ { return kmem_cache_alloc(au_cache[AuCache_##index], GFP_NOFS); } ++ ++#define AuCacheFuncs(name, index) \ + static inline void au_cache_free_##name##_norcu(struct au_##name *p) \ + { kmem_cache_free(au_cache[AuCache_##index], p); } \ + \ @@ -24511,23 +25244,48 @@ diff -Nurp linux-5.15.37/fs/aufs/module.h linux-5.15.37-aufs/fs/aufs/module.h + au_cache_free_##name##_rcu(p); } + +AuCacheFuncs(dinfo, DINFO); ++AuCacheFuncAlloc(dinfo, DINFO); ++ +AuCacheFuncs(icntnr, ICNTNR); ++static inline struct au_icntnr *au_cache_alloc_icntnr(struct super_block *sb) ++{ return alloc_inode_sb(sb, au_cache[AuCache_ICNTNR], GFP_NOFS); } ++ +AuCacheFuncs(finfo, FINFO); ++AuCacheFuncAlloc(finfo, FINFO); ++ +AuCacheFuncs(vdir, VDIR); ++AuCacheFuncAlloc(vdir, VDIR); ++ +AuCacheFuncs(vdir_dehstr, DEHSTR); ++AuCacheFuncAlloc(vdir_dehstr, DEHSTR); ++ +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); ++AuCacheFuncAlloc(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/mvdown.c linux-5.15.37-aufs/fs/aufs/mvdown.c ---- linux-5.15.37/fs/aufs/mvdown.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/mvdown.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,693 @@ +diff -Naur null/fs/aufs/mvdown.c linux-6.6.4/fs/aufs/mvdown.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/mvdown.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2011-2021 Junjiro R. Okajima ++ * Copyright (C) 2011-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -25218,13 +25976,26 @@ diff -Nurp linux-5.15.37/fs/aufs/mvdown.c linux-5.15.37-aufs/fs/aufs/mvdown.c + AuTraceErr(err); + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/opts.c linux-5.15.37-aufs/fs/aufs/opts.c ---- linux-5.15.37/fs/aufs/opts.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/opts.c 2022-04-08 20:22:30.614616573 +0300 -@@ -0,0 +1,1019 @@ +diff -Naur null/fs/aufs/opts.c linux-6.6.4/fs/aufs/opts.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/opts.c 2024-04-28 23:21:13.843237290 +0300 +@@ -0,0 +1,1032 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -25882,8 +26653,8 @@ diff -Nurp linux-5.15.37/fs/aufs/opts.c linux-5.15.37-aufs/fs/aufs/opts.c + case Opt_prepend: + opt->add.bindex = 0; + fallthrough; -+ add: /* indented label */ + case Opt_add: ++ add: /* indented label */ + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { @@ -26241,13 +27012,26 @@ diff -Nurp linux-5.15.37/fs/aufs/opts.c linux-5.15.37-aufs/fs/aufs/opts.c +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} -diff -Nurp linux-5.15.37/fs/aufs/opts.h linux-5.15.37-aufs/fs/aufs/opts.h ---- linux-5.15.37/fs/aufs/opts.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/opts.h 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,250 @@ +diff -Naur null/fs/aufs/opts.h linux-6.6.4/fs/aufs/opts.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/opts.h 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,263 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -26495,13 +27279,26 @@ diff -Nurp linux-5.15.37/fs/aufs/opts.h linux-5.15.37-aufs/fs/aufs/opts.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/plink.c linux-5.15.37-aufs/fs/aufs/plink.c ---- linux-5.15.37/fs/aufs/plink.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/plink.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,503 @@ +diff -Naur null/fs/aufs/plink.c linux-6.6.4/fs/aufs/plink.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/plink.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,516 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27002,13 +27799,26 @@ diff -Nurp linux-5.15.37/fs/aufs/plink.c linux-5.15.37-aufs/fs/aufs/plink.c + } + } +} -diff -Nurp linux-5.15.37/fs/aufs/poll.c linux-5.15.37-aufs/fs/aufs/poll.c ---- linux-5.15.37/fs/aufs/poll.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/poll.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,38 @@ +diff -Naur null/fs/aufs/poll.c linux-6.6.4/fs/aufs/poll.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/poll.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27044,13 +27854,26 @@ diff -Nurp linux-5.15.37/fs/aufs/poll.c linux-5.15.37-aufs/fs/aufs/poll.c + AuDbg("mask 0x%x\n", mask); + return mask; +} -diff -Nurp linux-5.15.37/fs/aufs/posix_acl.c linux-5.15.37-aufs/fs/aufs/posix_acl.c ---- linux-5.15.37/fs/aufs/posix_acl.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/posix_acl.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,98 @@ +diff -Naur null/fs/aufs/posix_acl.c linux-6.6.4/fs/aufs/posix_acl.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/posix_acl.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2014-2021 Junjiro R. Okajima ++ * Copyright (C) 2014-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27060,7 +27883,7 @@ diff -Nurp linux-5.15.37/fs/aufs/posix_acl.c linux-5.15.37-aufs/fs/aufs/posix_ac +#include +#include "aufs.h" + -+struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu) ++struct posix_acl *aufs_get_inode_acl(struct inode *inode, int type, bool rcu) +{ + struct posix_acl *acl; + int err; @@ -27090,7 +27913,7 @@ diff -Nurp linux-5.15.37/fs/aufs/posix_acl.c linux-5.15.37-aufs/fs/aufs/posix_ac + } + + /* always topmost only */ -+ acl = get_acl(h_inode, type); ++ acl = get_inode_acl(h_inode, type); + if (IS_ERR(acl)) + forget_cached_acl(inode, type); + else @@ -27105,12 +27928,24 @@ diff -Nurp linux-5.15.37/fs/aufs/posix_acl.c linux-5.15.37-aufs/fs/aufs/posix_ac + return acl; +} + -+int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++struct posix_acl *aufs_get_acl(struct mnt_idmap *idmap, ++ struct dentry *dentry, int type) ++{ ++ struct posix_acl *acl; ++ struct inode *inode; ++ ++ inode = d_inode(dentry); ++ acl = aufs_get_inode_acl(inode, type, /*rcu*/false); ++ ++ return acl; ++} ++ ++int aufs_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, + struct posix_acl *acl, int type) +{ + int err; + ssize_t ssz; -+ struct dentry *dentry; ++ struct inode *inode; + struct au_sxattr arg = { + .type = AU_ACL_SET, + .u.acl_set = { @@ -27119,40 +27954,38 @@ diff -Nurp linux-5.15.37/fs/aufs/posix_acl.c linux-5.15.37-aufs/fs/aufs/posix_ac + }, + }; + ++ inode = d_inode(dentry); + IMustLock(inode); + -+ if (inode->i_ino == AUFS_ROOT_INO) -+ dentry = dget(inode->i_sb->s_root); -+ else { -+ dentry = d_find_alias(inode); -+ if (!dentry) -+ dentry = d_find_any_alias(inode); -+ if (!dentry) { -+ pr_warn("cannot handle this inode, " -+ "please report to aufs-users ML\n"); -+ err = -ENOENT; -+ goto out; -+ } -+ } -+ + ssz = au_sxattr(dentry, inode, &arg); + /* forget even it if succeeds since the branch might set differently */ + forget_cached_acl(inode, type); -+ dput(dentry); + err = ssz; + if (ssz >= 0) + err = 0; + -+out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/procfs.c linux-5.15.37-aufs/fs/aufs/procfs.c ---- linux-5.15.37/fs/aufs/procfs.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/procfs.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,157 @@ +diff -Naur null/fs/aufs/procfs.c linux-6.6.4/fs/aufs/procfs.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/procfs.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * Copyright (C) 2010-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27307,13 +28140,26 @@ diff -Nurp linux-5.15.37/fs/aufs/procfs.c linux-5.15.37-aufs/fs/aufs/procfs.c +out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/rdu.c linux-5.15.37-aufs/fs/aufs/rdu.c ---- linux-5.15.37/fs/aufs/rdu.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/rdu.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,371 @@ +diff -Naur null/fs/aufs/rdu.c linux-6.6.4/fs/aufs/rdu.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/rdu.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,384 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27345,8 +28191,8 @@ diff -Nurp linux-5.15.37/fs/aufs/rdu.c linux-5.15.37-aufs/fs/aufs/rdu.c + int err; +}; + -+static int au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, -+ loff_t offset, u64 h_ino, unsigned int d_type) ++static bool au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, ++ loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = container_of(ctx, struct au_rdu_arg, ctx); @@ -27387,7 +28233,7 @@ diff -Nurp linux-5.15.37/fs/aufs/rdu.c linux-5.15.37-aufs/fs/aufs/rdu.c + +out: + /* AuTraceErr(err); */ -+ return err; ++ return !err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) @@ -27450,7 +28296,7 @@ diff -Nurp linux-5.15.37/fs/aufs/rdu.c linux-5.15.37-aufs/fs/aufs/rdu.c + arg.end += rdu->sz; + + err = -ENOTDIR; -+ if (unlikely(!file->f_op->iterate && !file->f_op->iterate_shared)) ++ if (unlikely(!file->f_op->iterate_shared)) + goto out; + + err = security_file_permission(file, MAY_READ); @@ -27682,13 +28528,26 @@ diff -Nurp linux-5.15.37/fs/aufs/rdu.c linux-5.15.37-aufs/fs/aufs/rdu.c + return err; +} +#endif -diff -Nurp linux-5.15.37/fs/aufs/rwsem.h linux-5.15.37-aufs/fs/aufs/rwsem.h ---- linux-5.15.37/fs/aufs/rwsem.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/rwsem.h 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,72 @@ +diff -Naur null/fs/aufs/rwsem.h linux-6.6.4/fs/aufs/rwsem.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/rwsem.h 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,85 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -27758,13 +28617,26 @@ diff -Nurp linux-5.15.37/fs/aufs/rwsem.h linux-5.15.37-aufs/fs/aufs/rwsem.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/sbinfo.c linux-5.15.37-aufs/fs/aufs/sbinfo.c ---- linux-5.15.37/fs/aufs/sbinfo.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/sbinfo.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,303 @@ +diff -Naur null/fs/aufs/sbinfo.c linux-6.6.4/fs/aufs/sbinfo.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/sbinfo.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,316 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -28065,13 +28937,26 @@ diff -Nurp linux-5.15.37/fs/aufs/sbinfo.c linux-5.15.37-aufs/fs/aufs/sbinfo.c + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} -diff -Nurp linux-5.15.37/fs/aufs/super.c linux-5.15.37-aufs/fs/aufs/super.c ---- linux-5.15.37/fs/aufs/super.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/super.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,858 @@ +diff -Naur null/fs/aufs/super.c linux-6.6.4/fs/aufs/super.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/super.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,871 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -28092,7 +28977,7 @@ diff -Nurp linux-5.15.37/fs/aufs/super.c linux-5.15.37-aufs/fs/aufs/super.c +{ + struct au_icntnr *c; + -+ c = au_cache_alloc_icntnr(); ++ c = au_cache_alloc_icntnr(sb); + if (c) { + au_icntnr_init(c); + inode_set_iversion(&c->vfs_inode, 1); /* sigen(sb); */ @@ -28175,7 +29060,7 @@ diff -Nurp linux-5.15.37/fs/aufs/super.c linux-5.15.37-aufs/fs/aufs/super.c + return err; +} + -+static void au_gen_fmt(char *fmt, int len __maybe_unused, const char *pat, ++static void au_gen_fmt(char *fmt, int len, const char *pat, + const char *append) +{ + char *p; @@ -28184,7 +29069,7 @@ diff -Nurp linux-5.15.37/fs/aufs/super.c linux-5.15.37-aufs/fs/aufs/super.c + while (*pat != ':') + *p++ = *pat++; + *p++ = *pat++; -+ strcpy(p, append); ++ strscpy(p, append, len - (p - fmt)); + AuDebugOn(strlen(fmt) >= len); +} + @@ -28927,13 +29812,26 @@ diff -Nurp linux-5.15.37/fs/aufs/super.c linux-5.15.37-aufs/fs/aufs/super.c + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; -diff -Nurp linux-5.15.37/fs/aufs/super.h linux-5.15.37-aufs/fs/aufs/super.h ---- linux-5.15.37/fs/aufs/super.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/super.h 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,579 @@ +diff -Naur null/fs/aufs/super.h linux-6.6.4/fs/aufs/super.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/super.h 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,592 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -29510,13 +30408,26 @@ diff -Nurp linux-5.15.37/fs/aufs/super.h linux-5.15.37-aufs/fs/aufs/super.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/sysaufs.c linux-5.15.37-aufs/fs/aufs/sysaufs.c ---- linux-5.15.37/fs/aufs/sysaufs.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/sysaufs.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,80 @@ +diff -Naur null/fs/aufs/sysaufs.c linux-6.6.4/fs/aufs/sysaufs.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/sysaufs.c 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,94 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -29540,15 +30451,16 @@ diff -Nurp linux-5.15.37/fs/aufs/sysaufs.c linux-5.15.37-aufs/fs/aufs/sysaufs.c + &sysaufs_si_attr_xi_path.attr, + NULL, +}; ++ATTRIBUTE_GROUPS(sysaufs_si); + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + -+static struct kobj_type au_sbi_ktype = { ++static const struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, -+ .default_attrs = sysaufs_si_attrs ++ .default_groups = sysaufs_si_groups +}; + +/* ---------------------------------------------------------------------- */ @@ -29594,13 +30506,26 @@ diff -Nurp linux-5.15.37/fs/aufs/sysaufs.c linux-5.15.37-aufs/fs/aufs/sysaufs.c +out: + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/sysaufs.h linux-5.15.37-aufs/fs/aufs/sysaufs.h ---- linux-5.15.37/fs/aufs/sysaufs.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/sysaufs.h 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,89 @@ +diff -Naur null/fs/aufs/sysaufs.h linux-6.6.4/fs/aufs/sysaufs.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/sysaufs.h 2024-04-28 23:21:13.844237277 +0300 +@@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -29687,13 +30612,26 @@ diff -Nurp linux-5.15.37/fs/aufs/sysaufs.h linux-5.15.37-aufs/fs/aufs/sysaufs.h + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/sysfs.c linux-5.15.37-aufs/fs/aufs/sysfs.c ---- linux-5.15.37/fs/aufs/sysfs.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/sysfs.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,338 @@ +diff -Naur null/fs/aufs/sysfs.c linux-6.6.4/fs/aufs/sysfs.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/sysfs.c 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,374 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -29704,7 +30642,30 @@ diff -Nurp linux-5.15.37/fs/aufs/sysfs.c linux-5.15.37-aufs/fs/aufs/sysfs.c +#include +#include "aufs.h" + ++#ifdef CONFIG_AUFS_FS_MODULE ++/* this entry violates the "one line per file" policy of sysfs */ ++static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, ++ char *buf) ++{ ++ ssize_t err; ++ static char *conf = ++/* this file is generated at compiling */ ++#include "conf.str" ++ ; ++ ++ err = snprintf(buf, PAGE_SIZE, conf); ++ if (unlikely(err >= PAGE_SIZE)) ++ err = -EFBIG; ++ return err; ++} ++ ++static struct kobj_attribute au_config_attr = __ATTR_RO(config); ++#endif ++ +static struct attribute *au_attr[] = { ++#ifdef CONFIG_AUFS_FS_MODULE ++ &au_config_attr.attr, ++#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + @@ -30029,13 +30990,26 @@ diff -Nurp linux-5.15.37/fs/aufs/sysfs.c linux-5.15.37-aufs/fs/aufs/sysfs.c + } + } +} -diff -Nurp linux-5.15.37/fs/aufs/sysrq.c linux-5.15.37-aufs/fs/aufs/sysrq.c ---- linux-5.15.37/fs/aufs/sysrq.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/sysrq.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,136 @@ +diff -Naur null/fs/aufs/sysrq.c linux-6.6.4/fs/aufs/sysrq.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/sysrq.c 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -30125,7 +31099,7 @@ diff -Nurp linux-5.15.37/fs/aufs/sysrq.c linux-5.15.37-aufs/fs/aufs/sysrq.c +module_param_named(sysrq, aufs_sysrq_key, charp, 0444); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + -+static void au_sysrq(int key __maybe_unused) ++static void au_sysrq(u8 key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + struct hlist_bl_node *pos; @@ -30169,13 +31143,26 @@ diff -Nurp linux-5.15.37/fs/aufs/sysrq.c linux-5.15.37-aufs/fs/aufs/sysrq.c + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} -diff -Nurp linux-5.15.37/fs/aufs/vdir.c linux-5.15.37-aufs/fs/aufs/vdir.c ---- linux-5.15.37/fs/aufs/vdir.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/vdir.c 2022-04-08 20:22:30.615616621 +0300 -@@ -0,0 +1,883 @@ +diff -Naur null/fs/aufs/vdir.c linux-6.6.4/fs/aufs/vdir.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/vdir.c 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,896 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -30614,7 +31601,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vdir.c linux-5.15.37-aufs/fs/aufs/vdir.c + int err; +}; + -+static int fillvdir(struct dir_context *ctx, const char *__name, int nlen, ++static bool fillvdir(struct dir_context *ctx, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ @@ -30665,7 +31652,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vdir.c linux-5.15.37-aufs/fs/aufs/vdir.c + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); -+ return arg->err; ++ return !arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, @@ -31056,13 +32043,26 @@ diff -Nurp linux-5.15.37/fs/aufs/vdir.c linux-5.15.37-aufs/fs/aufs/vdir.c + /* smp_mb(); */ + return 0; +} -diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c ---- linux-5.15.37/fs/aufs/vfsub.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/vfsub.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,905 @@ +diff -Naur null/fs/aufs/vfsub.c linux-6.6.4/fs/aufs/vfsub.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/vfsub.c 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,918 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -31297,7 +32297,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31307,10 +32307,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_create(userns, dir, path->dentry, mode, want_excl); ++ err = vfs_create(idmap, dir, path->dentry, mode, want_excl); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31332,7 +32332,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31342,10 +32342,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_symlink(userns, dir, path->dentry, symname); ++ err = vfs_symlink(idmap, dir, path->dentry, symname); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31367,7 +32367,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31377,10 +32377,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_mknod(userns, dir, path->dentry, mode, dev); ++ err = vfs_mknod(idmap, dir, path->dentry, mode, dev); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31413,7 +32413,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31428,10 +32428,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_link(src_dentry, userns, dir, path->dentry, delegated_inode); ++ err = vfs_link(src_dentry, idmap, dir, path->dentry, delegated_inode); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31474,10 +32474,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + if (unlikely(err)) + goto out; + -+ rd.old_mnt_userns = mnt_user_ns(path->mnt); ++ rd.old_mnt_idmap = mnt_idmap(path->mnt); + rd.old_dir = src_dir; + rd.old_dentry = src_dentry; -+ rd.new_mnt_userns = rd.old_mnt_userns; ++ rd.new_mnt_idmap = rd.old_mnt_idmap; + rd.new_dir = dir; + rd.new_dentry = path->dentry; + rd.delegated_inode = delegated_inode; @@ -31507,7 +32507,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31517,10 +32517,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_mkdir(userns, dir, path->dentry, mode); ++ err = vfs_mkdir(idmap, dir, path->dentry, mode); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31542,7 +32542,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + IMustLock(dir); + @@ -31552,10 +32552,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; -+ userns = mnt_user_ns(path->mnt); ++ idmap = mnt_idmap(path->mnt); + + lockdep_off(); -+ err = vfs_rmdir(userns, dir, path->dentry); ++ err = vfs_rmdir(idmap, dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { @@ -31660,14 +32660,14 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + return err; +} + -+long vfsub_splice_to(struct file *in, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags) ++long vfsub_splice_read(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) +{ + long err; + + lockdep_off(); -+ err = do_splice_to(in, ppos, pipe, len, flags); ++ err = vfs_splice_read(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) @@ -31713,7 +32713,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + int err; + struct inode *h_inode; + struct super_block *h_sb; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + if (!h_file) { + err = vfsub_truncate(h_path, length); @@ -31725,11 +32725,11 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + lockdep_off(); + sb_start_write(h_sb); + lockdep_on(); -+ err = security_path_truncate(h_path); ++ err = security_file_truncate(h_file); + if (!err) { -+ h_userns = mnt_user_ns(h_path->mnt); ++ h_idmap = mnt_idmap(h_path->mnt); + lockdep_off(); -+ err = do_truncate(h_userns, h_path->dentry, length, attr, ++ err = do_truncate(h_idmap, h_path->dentry, length, attr, + h_file); + lockdep_on(); + } @@ -31759,10 +32759,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + -+ userns = mnt_user_ns(path->mnt); -+ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); ++ idmap = mnt_idmap(path->mnt); ++ do_sio = au_test_h_perm_sio(idmap, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_mkdir(dir, path, mode); @@ -31797,10 +32797,10 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + -+ userns = mnt_user_ns(path->mnt); -+ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); ++ idmap = mnt_idmap(path->mnt); ++ do_sio = au_test_h_perm_sio(idmap, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_rmdir(dir, path); @@ -31832,16 +32832,16 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c +{ + struct notify_change_args *a = args; + struct inode *h_inode; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + + h_inode = d_inode(a->path->dentry); + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { -+ userns = mnt_user_ns(a->path->mnt); ++ idmap = mnt_idmap(a->path->mnt); + lockdep_off(); -+ *a->errp = notify_change(userns, a->path->dentry, a->ia, ++ *a->errp = notify_change(idmap, a->path->dentry, a->ia, + a->delegated_inode); + lockdep_on(); + if (!*a->errp) @@ -31898,7 +32898,7 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; -+ struct user_namespace *userns; ++ struct mnt_idmap *idmap; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && au_dcount(d) == 1); + @@ -31918,9 +32918,9 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + ihold(h_inode); + } + -+ userns = mnt_user_ns(a->path->mnt); ++ idmap = mnt_idmap(a->path->mnt); + lockdep_off(); -+ *a->errp = vfs_unlink(userns, a->dir, d, a->delegated_inode); ++ *a->errp = vfs_unlink(idmap, a->dir, d, a->delegated_inode); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { @@ -31965,13 +32965,26 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.c linux-5.15.37-aufs/fs/aufs/vfsub.c + + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/vfsub.h linux-5.15.37-aufs/fs/aufs/vfsub.h ---- linux-5.15.37/fs/aufs/vfsub.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/vfsub.h 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,345 @@ +diff -Naur null/fs/aufs/vfsub.h linux-6.6.4/fs/aufs/vfsub.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/vfsub.h 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,403 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -32107,6 +33120,20 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.h linux-5.15.37-aufs/fs/aufs/vfsub.h +} +#endif + ++static inline void vfsub_file_start_write(struct file *file) ++{ ++ lockdep_off(); ++ file_start_write(file); ++ lockdep_on(); ++} ++ ++static inline void vfsub_file_end_write(struct file *file) ++{ ++ lockdep_off(); ++ file_end_write(file); ++ lockdep_on(); ++} ++ +/* ---------------------------------------------------------------------- */ + +struct au_hinode; @@ -32184,32 +33211,31 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.h linux-5.15.37-aufs/fs/aufs/vfsub.h +} +#endif + -+static inline int vfsub_update_time(struct inode *h_inode, -+ struct timespec64 *ts, int flags) ++static inline int vfsub_update_time(struct inode *h_inode, int flags) +{ -+ return inode_update_time(h_inode, ts, flags); ++ return inode_update_time(h_inode, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +#ifdef CONFIG_FS_POSIX_ACL -+static inline int vfsub_acl_chmod(struct user_namespace *h_userns, -+ struct inode *h_inode, umode_t h_mode) ++static inline int vfsub_acl_chmod(struct mnt_idmap *h_idmap, ++ struct dentry *h_dentry, umode_t h_mode) +{ + int err; + -+ err = posix_acl_chmod(h_userns, h_inode, h_mode); ++ err = posix_acl_chmod(h_idmap, h_dentry, h_mode); + if (err == -EOPNOTSUPP) + err = 0; + return err; +} +#else -+AuStubInt0(vfsub_acl_chmod, struct user_namespace *h_userns, -+ struct inode *h_inode, umode_t h_mode); ++AuStubInt0(vfsub_acl_chmod, struct mnt_idmap *h_idmap, ++ struct dentry *h_dentry, umode_t h_mode); +#endif + -+long vfsub_splice_to(struct file *in, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags); ++long vfsub_splice_read(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); + @@ -32287,40 +33313,85 @@ diff -Nurp linux-5.15.37/fs/aufs/vfsub.h linux-5.15.37-aufs/fs/aufs/vfsub.h + +/* ---------------------------------------------------------------------- */ + -+static inline int vfsub_setxattr(struct user_namespace *userns, ++static inline int vfsub_setxattr(struct mnt_idmap *idmap, + struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + + lockdep_off(); -+ err = vfs_setxattr(userns, dentry, name, value, size, flags); ++ err = vfs_setxattr(idmap, dentry, name, value, size, flags); + lockdep_on(); + + return err; +} + -+static inline int vfsub_removexattr(struct user_namespace *userns, ++static inline int vfsub_removexattr(struct mnt_idmap *idmap, + struct dentry *dentry, const char *name) +{ + int err; + + lockdep_off(); -+ err = vfs_removexattr(userns, dentry, name); ++ err = vfs_removexattr(idmap, dentry, name); + lockdep_on(); + + return err; +} + ++#ifdef CONFIG_FS_POSIX_ACL ++static inline int vfsub_set_acl(struct mnt_idmap *idmap, ++ struct dentry *dentry, const char *name, ++ struct posix_acl *acl) ++{ ++ int err; ++ ++ lockdep_off(); ++ err = vfs_set_acl(idmap, dentry, name, acl); ++ lockdep_on(); ++ ++ return err; ++} ++ ++static inline int vfsub_remove_acl(struct mnt_idmap *idmap, ++ struct dentry *dentry, const char *name) ++{ ++ int err; ++ ++ lockdep_off(); ++ err = vfs_remove_acl(idmap, dentry, name); ++ lockdep_on(); ++ ++ return err; ++} ++#else ++AuStubInt0(vfsub_set_acl, struct mnt_idmap *idmap, struct dentry *dentry, ++ const char *name, struct posix_acl *acl); ++AuStubInt0(vfsub_remove_acl, struct mnt_idmap *idmap, ++ struct dentry *dentry, const char *name); ++#endif ++ +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/wbr_policy.c linux-5.15.37-aufs/fs/aufs/wbr_policy.c ---- linux-5.15.37/fs/aufs/wbr_policy.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/wbr_policy.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,817 @@ +diff -Naur null/fs/aufs/wbr_policy.c linux-6.6.4/fs/aufs/wbr_policy.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/wbr_policy.c 2024-04-28 23:21:13.845237265 +0300 +@@ -0,0 +1,830 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -33135,13 +34206,26 @@ diff -Nurp linux-5.15.37/fs/aufs/wbr_policy.c linux-5.15.37-aufs/fs/aufs/wbr_pol + .fin = au_wbr_create_fin_mfs + } +}; -diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c ---- linux-5.15.37/fs/aufs/whout.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/whout.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,1059 @@ +diff -Naur null/fs/aufs/whout.c linux-6.6.4/fs/aufs/whout.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/whout.c 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,1072 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -33192,7 +34276,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + * test if the @wh_name exists under @h_ppath. + * @try_sio specifies the necessary of super-io. + */ -+int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++int au_wh_test(struct mnt_idmap *h_idmap, struct path *h_ppath, + struct qstr *wh_name, int try_sio) +{ + int err; @@ -33201,7 +34285,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + if (!try_sio) + wh_dentry = vfsub_lkup_one(wh_name, h_ppath); + else -+ wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_ppath); ++ wh_dentry = au_sio_lkup_one(h_idmap, wh_name, h_ppath); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) { + if (err == -ENAMETOOLONG) @@ -33230,14 +34314,14 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c +/* + * test if the @h_path->dentry sets opaque or not. + */ -+int au_diropq_test(struct user_namespace *h_userns, struct path *h_path) ++int au_diropq_test(struct mnt_idmap *h_idmap, struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_path->dentry); -+ err = au_wh_test(h_userns, h_path, &diropq_name, -+ au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC)); ++ err = au_wh_test(h_idmap, h_path, &diropq_name, ++ au_test_h_perm_sio(h_idmap, h_dir, MAY_EXEC)); + return err; +} + @@ -33255,7 +34339,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + static unsigned short cnt; + struct qstr qs; + struct path h_ppath; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + @@ -33281,11 +34365,11 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + + h_ppath.dentry = h_parent; + h_ppath.mnt = au_br_mnt(br); -+ h_userns = au_br_userns(br); ++ h_idmap = au_br_idmap(br); + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); -+ dentry = au_sio_lkup_one(h_userns, &qs, &h_ppath); ++ dentry = au_sio_lkup_one(h_idmap, &qs, &h_ppath); + if (IS_ERR(dentry) || d_is_negative(dentry)) + goto out_name; + dput(dentry); @@ -33882,11 +34966,11 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + -+ h_userns = au_sbr_userns(dentry->d_sb, bindex); ++ h_idmap = au_sbr_idmap(dentry->d_sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); -+ if (!au_test_h_perm_sio(h_userns, d_inode(h_dentry), ++ if (!au_test_h_perm_sio(h_idmap, d_inode(h_dentry), + MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { @@ -34075,7 +35159,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + struct path wh_path; + struct inode *wh_inode, *h_dir; + struct au_branch *br; -+ struct user_namespace *h_userns; ++ struct mnt_idmap *h_idmap; + + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); @@ -34083,7 +35167,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + br = au_sbr(dir->i_sb, bindex); + wh_path.dentry = wh_dentry; + wh_path.mnt = au_br_mnt(br); -+ h_userns = au_br_userns(br); ++ h_idmap = au_br_idmap(br); + wh_inode = d_inode(wh_dentry); + inode_lock_nested(wh_inode, AuLsc_I_CHILD); + @@ -34091,7 +35175,7 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ -+ if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE)) ++ if (!au_test_h_perm_sio(h_idmap, wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(&wh_path, whlist, bindex); + else { + int wkq_err; @@ -34198,13 +35282,26 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.c linux-5.15.37-aufs/fs/aufs/whout.c + au_whtmp_rmdir_free(args); + } +} -diff -Nurp linux-5.15.37/fs/aufs/whout.h linux-5.15.37-aufs/fs/aufs/whout.h ---- linux-5.15.37/fs/aufs/whout.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/whout.h 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,74 @@ +diff -Naur null/fs/aufs/whout.h linux-6.6.4/fs/aufs/whout.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/whout.h 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,87 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -34220,9 +35317,9 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.h linux-5.15.37-aufs/fs/aufs/whout.h + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); -+int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++int au_wh_test(struct mnt_idmap *h_idmap, struct path *h_ppath, + struct qstr *wh_name, int try_sio); -+int au_diropq_test(struct user_namespace *h_userns, struct path *h_path); ++int au_diropq_test(struct mnt_idmap *h_idmap, struct path *h_path); +struct au_branch; +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); @@ -34276,13 +35373,26 @@ diff -Nurp linux-5.15.37/fs/aufs/whout.h linux-5.15.37-aufs/fs/aufs/whout.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/wkq.c linux-5.15.37-aufs/fs/aufs/wkq.c ---- linux-5.15.37/fs/aufs/wkq.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/wkq.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,359 @@ +diff -Naur null/fs/aufs/wkq.c linux-6.6.4/fs/aufs/wkq.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/wkq.c 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -34639,13 +35749,26 @@ diff -Nurp linux-5.15.37/fs/aufs/wkq.c linux-5.15.37-aufs/fs/aufs/wkq.c + + return err; +} -diff -Nurp linux-5.15.37/fs/aufs/wkq.h linux-5.15.37-aufs/fs/aufs/wkq.h ---- linux-5.15.37/fs/aufs/wkq.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/wkq.h 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,76 @@ +diff -Naur null/fs/aufs/wkq.h linux-6.6.4/fs/aufs/wkq.h +--- /dev/null ++++ linux-6.6.4/fs/aufs/wkq.h 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -34719,13 +35842,26 @@ diff -Nurp linux-5.15.37/fs/aufs/wkq.h linux-5.15.37-aufs/fs/aufs/wkq.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ -diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c ---- linux-5.15.37/fs/aufs/xattr.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/xattr.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,355 @@ +diff -Naur null/fs/aufs/xattr.c linux-6.6.4/fs/aufs/xattr.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/xattr.c 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,360 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2014-2021 Junjiro R. Okajima ++ * Copyright (C) 2014-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -34733,7 +35869,6 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c + */ + +#include -+#include +#include +#include "aufs.h" + @@ -34780,39 +35915,57 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c + char *name, char **buf, unsigned int ignore_flags, + unsigned int verbose) +{ -+ int err; ++ int err, is_acl; + ssize_t ssz; + struct inode *h_idst; + struct dentry *h_dst_dentry, *h_src_dentry; -+ struct user_namespace *h_dst_userns, *h_src_userns; ++ struct mnt_idmap *h_dst_idmap, *h_src_idmap; ++ struct posix_acl *acl; + -+ h_src_userns = mnt_user_ns(h_src->mnt); ++ is_acl = !!is_posix_acl_xattr(name); ++ h_src_idmap = mnt_idmap(h_src->mnt); + h_src_dentry = h_src->dentry; -+ ssz = vfs_getxattr_alloc(h_src_userns, h_src_dentry, name, buf, 0, -+ GFP_NOFS); -+ err = ssz; -+ if (unlikely(err <= 0)) { -+ if (err == -ENODATA -+ || (err == -EOPNOTSUPP -+ && ((ignore_flags & au_xattr_out_of_list) -+ || (au_test_nfs_noacl(d_inode(h_src_dentry)) -+ && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) -+ || !strcmp(name, -+ XATTR_NAME_POSIX_ACL_DEFAULT)))) -+ )) -+ err = 0; -+ if (err && (verbose || au_debug_test())) -+ pr_err("%s, err %d\n", name, err); -+ goto out; ++ if (is_acl) { ++ acl = vfs_get_acl(h_src_idmap, h_src_dentry, name); ++ AuDebugOn(!acl); ++ if (IS_ERR(acl)) { ++ err = PTR_ERR(acl); ++ if (err == -ENODATA) ++ err = 0; ++ else if (err == -EOPNOTSUPP ++ && au_test_nfs_noacl(d_inode(h_src_dentry))) ++ err = 0; ++ else if (verbose || au_debug_test()) ++ pr_err("%s, err %d\n", name, err); ++ goto out; ++ } ++ } else { ++ ssz = vfs_getxattr_alloc(h_src_idmap, h_src_dentry, name, buf, ++ 0, GFP_NOFS); ++ if (unlikely(ssz <= 0)) { ++ err = ssz; ++ if (err == -ENODATA) ++ err = 0; ++ else if (err == -EOPNOTSUPP ++ && (ignore_flags & au_xattr_out_of_list)) ++ err = 0; ++ else if (err && (verbose || au_debug_test())) ++ pr_err("%s, err %d\n", name, err); ++ goto out; ++ } + } + + /* unlock it temporary */ -+ h_dst_userns = mnt_user_ns(h_dst->mnt); ++ h_dst_idmap = mnt_idmap(h_dst->mnt); + h_dst_dentry = h_dst->dentry; + h_idst = d_inode(h_dst_dentry); + inode_unlock(h_idst); -+ err = vfsub_setxattr(h_dst_userns, h_dst_dentry, name, *buf, ssz, -+ /*flags*/0); ++ if (is_acl) { ++ err = vfsub_set_acl(h_dst_idmap, h_dst_dentry, name, acl); ++ posix_acl_release(acl); ++ } else ++ err = vfsub_setxattr(h_dst_idmap, h_dst_dentry, name, *buf, ++ ssz, /*flags*/0); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + if (unlikely(err)) { + if (verbose || au_debug_test()) @@ -34827,7 +35980,7 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c +int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, + unsigned int verbose) +{ -+ int err, unlocked, acl_access, acl_default; ++ int err, unlocked; + ssize_t ssz; + struct dentry *h_dst_dentry, *h_src_dentry; + struct inode *h_isrc, *h_idst; @@ -34875,33 +36028,12 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c + err = 0; + e = p + ssz; + value = NULL; -+ acl_access = 0; -+ acl_default = 0; ++ ignore_flags |= au_xattr_out_of_list; + while (!err && p < e) { -+ acl_access |= !strncmp(p, XATTR_NAME_POSIX_ACL_ACCESS, -+ sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1); -+ acl_default |= !strncmp(p, XATTR_NAME_POSIX_ACL_DEFAULT, -+ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) -+ - 1); + err = au_do_cpup_xattr(h_dst, h_src, p, &value, ignore_flags, + verbose); + p += strlen(p) + 1; + } -+ AuTraceErr(err); -+ ignore_flags |= au_xattr_out_of_list; -+ if (!err && !acl_access) { -+ err = au_do_cpup_xattr(h_dst, h_src, -+ XATTR_NAME_POSIX_ACL_ACCESS, &value, -+ ignore_flags, verbose); -+ AuTraceErr(err); -+ } -+ if (!err && !acl_default) { -+ err = au_do_cpup_xattr(h_dst, h_src, -+ XATTR_NAME_POSIX_ACL_DEFAULT, &value, -+ ignore_flags, verbose); -+ AuTraceErr(err); -+ } -+ + au_kfree_try_rcu(value); + +out_free: @@ -34978,7 +36110,7 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c + break; + case AU_XATTR_GET: + AuDebugOn(d_is_negative(h_path.dentry)); -+ err = vfs_getxattr(mnt_user_ns(h_path.mnt), h_path.dentry, ++ err = vfs_getxattr(mnt_idmap(h_path.mnt), h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; @@ -35050,7 +36182,7 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c +} + +static int au_xattr_set(const struct xattr_handler *handler, -+ struct user_namespace *userns, ++ struct mnt_idmap *idmap, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) @@ -35066,10 +36198,6 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c +}; + +static const struct xattr_handler *au_xattr_handlers[] = { -+#ifdef CONFIG_FS_POSIX_ACL -+ &posix_acl_access_xattr_handler, -+ &posix_acl_default_xattr_handler, -+#endif + &au_xattr_handler, /* must be last */ + NULL +}; @@ -35078,13 +36206,26 @@ diff -Nurp linux-5.15.37/fs/aufs/xattr.c linux-5.15.37-aufs/fs/aufs/xattr.c +{ + sb->s_xattr = au_xattr_handlers; +} -diff -Nurp linux-5.15.37/fs/aufs/xino.c linux-5.15.37-aufs/fs/aufs/xino.c ---- linux-5.15.37/fs/aufs/xino.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/fs/aufs/xino.c 2022-04-08 20:22:30.616616670 +0300 -@@ -0,0 +1,1913 @@ +diff -Naur null/fs/aufs/xino.c linux-6.6.4/fs/aufs/xino.c +--- /dev/null ++++ linux-6.6.4/fs/aufs/xino.c 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,1926 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +/* @@ -35330,7 +36471,7 @@ diff -Nurp linux-5.15.37/fs/aufs/xino.c linux-5.15.37-aufs/fs/aufs/xino.c + } + + /* no need to mnt_want_write() since we call dentry_open() later */ -+ err = vfs_create(mnt_user_ns(base->mnt), dir, path.dentry, 0666, NULL); ++ err = vfs_create(mnt_idmap(base->mnt), dir, path.dentry, 0666, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", dentry, err); @@ -36995,324 +38136,26 @@ diff -Nurp linux-5.15.37/fs/aufs/xino.c linux-5.15.37-aufs/fs/aufs/xino.c +out: + return err; +} -diff -Nurp linux-5.15.37/fs/dcache.c linux-5.15.37-aufs/fs/dcache.c ---- linux-5.15.37/fs/dcache.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/dcache.c 2022-04-08 20:22:30.617616719 +0300 -@@ -1345,7 +1345,7 @@ enum d_walk_ret { - * - * The @enter() callbacks are called with d_lock held. - */ --static void d_walk(struct dentry *parent, void *data, -+void d_walk(struct dentry *parent, void *data, - enum d_walk_ret (*enter)(void *, struct dentry *)) - { - struct dentry *this_parent; -diff -Nurp linux-5.15.37/fs/fcntl.c linux-5.15.37-aufs/fs/fcntl.c ---- linux-5.15.37/fs/fcntl.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/fcntl.c 2022-04-08 20:22:30.617616719 +0300 -@@ -33,7 +33,7 @@ - - #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) - --static int setfl(int fd, struct file * filp, unsigned long arg) -+int setfl(int fd, struct file *filp, unsigned long arg) - { - struct inode * inode = file_inode(filp); - int error = 0; -@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * f - - if (filp->f_op->check_flags) - error = filp->f_op->check_flags(arg); -+ if (!error && filp->f_op->setfl) -+ error = filp->f_op->setfl(filp, arg); - if (error) - return error; - -diff -Nurp linux-5.15.37/fs/Kconfig linux-5.15.37-aufs/fs/Kconfig ---- linux-5.15.37/fs/Kconfig 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/Kconfig 2022-04-08 20:22:30.610616377 +0300 -@@ -312,6 +312,7 @@ source "fs/sysv/Kconfig" - source "fs/ufs/Kconfig" - source "fs/erofs/Kconfig" - source "fs/vboxsf/Kconfig" -+source "fs/aufs/Kconfig" - - endif # MISC_FILESYSTEMS - -diff -Nurp linux-5.15.37/fs/Makefile linux-5.15.37-aufs/fs/Makefile ---- linux-5.15.37/fs/Makefile 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/Makefile 2022-04-08 20:22:30.610616377 +0300 -@@ -140,3 +140,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ - obj-$(CONFIG_EROFS_FS) += erofs/ - obj-$(CONFIG_VBOXSF_FS) += vboxsf/ - obj-$(CONFIG_ZONEFS_FS) += zonefs/ -+obj-$(CONFIG_AUFS_FS) += aufs/ -diff -Nurp linux-5.15.37/fs/namespace.c linux-5.15.37-aufs/fs/namespace.c ---- linux-5.15.37/fs/namespace.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/namespace.c 2022-04-08 20:22:30.617616719 +0300 -@@ -839,6 +839,12 @@ static inline int check_mnt(struct mount - return mnt->mnt_ns == current->nsproxy->mnt_ns; - } - -+/* for aufs, CONFIG_AUFS_BR_FUSE */ -+int is_current_mnt_ns(struct vfsmount *mnt) -+{ -+ return check_mnt(real_mount(mnt)); -+} -+ - /* - * vfsmount lock must be held for write - */ -diff -Nurp linux-5.15.37/fs/proc/base.c linux-5.15.37-aufs/fs/proc/base.c ---- linux-5.15.37/fs/proc/base.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/proc/base.c 2022-04-08 20:22:30.617616719 +0300 -@@ -2191,7 +2191,7 @@ static int map_files_get_link(struct den - rc = -ENOENT; - vma = find_exact_vma(mm, vm_start, vm_end); - if (vma && vma->vm_file) { -- *path = vma->vm_file->f_path; -+ *path = vma_pr_or_file(vma)->f_path; - path_get(path); - rc = 0; - } -diff -Nurp linux-5.15.37/fs/proc/nommu.c linux-5.15.37-aufs/fs/proc/nommu.c ---- linux-5.15.37/fs/proc/nommu.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/proc/nommu.c 2022-04-08 20:22:30.617616719 +0300 -@@ -40,7 +40,10 @@ static int nommu_region_show(struct seq_ - file = region->vm_file; - - if (file) { -- struct inode *inode = file_inode(region->vm_file); -+ struct inode *inode; -+ -+ file = vmr_pr_or_file(region); -+ inode = file_inode(file); - dev = inode->i_sb->s_dev; - ino = inode->i_ino; - } -diff -Nurp linux-5.15.37/fs/proc/task_mmu.c linux-5.15.37-aufs/fs/proc/task_mmu.c ---- linux-5.15.37/fs/proc/task_mmu.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/proc/task_mmu.c 2022-04-08 20:22:30.617616719 +0300 -@@ -281,7 +281,10 @@ show_map_vma(struct seq_file *m, struct - const char *name = NULL; - - if (file) { -- struct inode *inode = file_inode(vma->vm_file); -+ struct inode *inode; -+ -+ file = vma_pr_or_file(vma); -+ inode = file_inode(file); - dev = inode->i_sb->s_dev; - ino = inode->i_ino; - pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1903,7 +1906,7 @@ static int show_numa_map(struct seq_file - struct proc_maps_private *proc_priv = &numa_priv->proc_maps; - struct vm_area_struct *vma = v; - struct numa_maps *md = &numa_priv->md; -- struct file *file = vma->vm_file; -+ struct file *file = vma_pr_or_file(vma); - struct mm_struct *mm = vma->vm_mm; - struct mempolicy *pol; - char buffer[64]; -diff -Nurp linux-5.15.37/fs/proc/task_nommu.c linux-5.15.37-aufs/fs/proc/task_nommu.c ---- linux-5.15.37/fs/proc/task_nommu.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/proc/task_nommu.c 2022-04-08 20:22:30.617616719 +0300 -@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_fil - file = vma->vm_file; - - if (file) { -- struct inode *inode = file_inode(vma->vm_file); -+ struct inode *inode; -+ -+ file = vma_pr_or_file(vma); -+ inode = file_inode(file); - dev = inode->i_sb->s_dev; - ino = inode->i_ino; - pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; -diff -Nurp linux-5.15.37/fs/splice.c linux-5.15.37-aufs/fs/splice.c ---- linux-5.15.37/fs/splice.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/fs/splice.c 2022-04-08 20:22:30.617616719 +0300 -@@ -759,8 +759,8 @@ static int warn_unsupported(struct file - /* - * Attempt to initiate a splice from pipe to file. - */ --static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, -- loff_t *ppos, size_t len, unsigned int flags) -+long do_splice_from(struct pipe_inode_info *pipe, struct file *out, -+ loff_t *ppos, size_t len, unsigned int flags) - { - if (unlikely(!out->f_op->splice_write)) - return warn_unsupported(out, "write"); -@@ -770,9 +770,9 @@ static long do_splice_from(struct pipe_i - /* - * Attempt to initiate a splice from a file to a pipe. - */ --static long do_splice_to(struct file *in, loff_t *ppos, -- struct pipe_inode_info *pipe, size_t len, -- unsigned int flags) -+long do_splice_to(struct file *in, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags) - { - unsigned int p_space; - int ret; -diff -Nurp linux-5.15.37/include/linux/fs.h linux-5.15.37-aufs/include/linux/fs.h ---- linux-5.15.37/include/linux/fs.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/fs.h 2022-04-08 20:22:30.617616719 +0300 -@@ -1372,6 +1372,7 @@ extern void fasync_free(struct fasync_st - /* can be called from interrupts */ - extern void kill_fasync(struct fasync_struct **, int, int); - -+extern int setfl(int fd, struct file *filp, unsigned long arg); - extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); - extern int f_setown(struct file *filp, unsigned long arg, int force); - extern void f_delown(struct file *filp); -@@ -2003,6 +2004,7 @@ struct file_operations { - ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); - unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); - int (*check_flags)(int); -+ int (*setfl)(struct file *, unsigned long); - int (*flock) (struct file *, int, struct file_lock *); - ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); - ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -2529,6 +2531,7 @@ extern int current_umask(void); - extern void ihold(struct inode * inode); - extern void iput(struct inode *); - extern int generic_update_time(struct inode *, struct timespec64 *, int); -+extern int update_time(struct inode *, struct timespec64 *, int); - - /* /sys/fs */ - extern struct kobject *fs_kobj; -@@ -2707,6 +2710,7 @@ static inline bool sb_is_blkdev_sb(struc - } - - void emergency_thaw_all(void); -+extern int __sync_filesystem(struct super_block *, int); - extern int sync_filesystem(struct super_block *); - extern const struct file_operations def_blk_fops; - extern const struct file_operations def_chr_fops; -diff -Nurp linux-5.15.37/include/linux/lockdep.h linux-5.15.37-aufs/include/linux/lockdep.h ---- linux-5.15.37/include/linux/lockdep.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/lockdep.h 2022-04-08 20:22:30.618616768 +0300 -@@ -248,6 +248,8 @@ static inline int lockdep_match_key(stru - return lock->key == key; - } - -+struct lock_class *lockdep_hlock_class(struct held_lock *hlock); -+ - /* - * Acquire a lock. - * -diff -Nurp linux-5.15.37/include/linux/mm.h linux-5.15.37-aufs/include/linux/mm.h ---- linux-5.15.37/include/linux/mm.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/mm.h 2022-04-08 20:22:30.618616768 +0300 -@@ -1895,6 +1895,43 @@ static inline void unmap_shared_mapping_ - unmap_mapping_range(mapping, holebegin, holelen, 0); - } - -+#if IS_ENABLED(CONFIG_AUFS_FS) -+extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); -+extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], -+ int); -+extern void vma_do_get_file(struct vm_area_struct *, const char[], int); -+extern void vma_do_fput(struct vm_area_struct *, const char[], int); -+ -+#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ -+ __LINE__) -+#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ -+ __LINE__) -+#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) -+#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) -+ -+#ifndef CONFIG_MMU -+extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); -+extern void vmr_do_fput(struct vm_region *, const char[], int); -+ -+#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ -+ __LINE__) -+#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) -+#endif /* !CONFIG_MMU */ -+ -+#else -+ -+#define vma_file_update_time(vma) file_update_time((vma)->vm_file) -+#define vma_pr_or_file(vma) (vma)->vm_file -+#define vma_get_file(vma) get_file((vma)->vm_file) -+#define vma_fput(vma) fput((vma)->vm_file) -+ -+#ifndef CONFIG_MMU -+#define vmr_pr_or_file(region) (region)->vm_file -+#define vmr_fput(region) fput((region)->vm_file) -+#endif /* !CONFIG_MMU */ -+ -+#endif /* CONFIG_AUFS_FS */ -+ - extern int access_process_vm(struct task_struct *tsk, unsigned long addr, - void *buf, int len, unsigned int gup_flags); - extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, -diff -Nurp linux-5.15.37/include/linux/mm_types.h linux-5.15.37-aufs/include/linux/mm_types.h ---- linux-5.15.37/include/linux/mm_types.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/mm_types.h 2022-04-08 20:22:30.618616768 +0300 -@@ -344,6 +344,9 @@ struct vm_region { - unsigned long vm_top; /* region allocated to here */ - unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ - struct file *vm_file; /* the backing file or NULL */ -+#if IS_ENABLED(CONFIG_AUFS_FS) -+ struct file *vm_prfile; /* the virtual backing file or NULL */ -+#endif - - int vm_usage; /* region usage count (access under nommu_region_sem) */ - bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -440,6 +443,9 @@ struct vm_area_struct { - unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE - units */ - struct file * vm_file; /* File we map to (can be NULL). */ -+#if IS_ENABLED(CONFIG_AUFS_FS) -+ struct file *vm_prfile; /* shadow of vm_file */ -+#endif - void * vm_private_data; /* was vm_pte (shared mem) */ - - #ifdef CONFIG_SWAP -diff -Nurp linux-5.15.37/include/linux/mnt_namespace.h linux-5.15.37-aufs/include/linux/mnt_namespace.h ---- linux-5.15.37/include/linux/mnt_namespace.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/mnt_namespace.h 2022-04-08 20:22:30.618616768 +0300 -@@ -7,12 +7,15 @@ struct mnt_namespace; - struct fs_struct; - struct user_namespace; - struct ns_common; -+struct vfsmount; - - extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, - struct user_namespace *, struct fs_struct *); - extern void put_mnt_ns(struct mnt_namespace *ns); - extern struct ns_common *from_mnt_ns(struct mnt_namespace *); - -+extern int is_current_mnt_ns(struct vfsmount *mnt); -+ - extern const struct file_operations proc_mounts_operations; - extern const struct file_operations proc_mountinfo_operations; - extern const struct file_operations proc_mountstats_operations; -diff -Nurp linux-5.15.37/include/linux/splice.h linux-5.15.37-aufs/include/linux/splice.h ---- linux-5.15.37/include/linux/splice.h 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/include/linux/splice.h 2022-04-08 20:22:30.618616768 +0300 -@@ -93,4 +93,10 @@ extern void splice_shrink_spd(struct spl - - extern const struct pipe_buf_operations page_cache_pipe_buf_ops; - extern const struct pipe_buf_operations default_pipe_buf_ops; -+ -+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, -+ loff_t *ppos, size_t len, unsigned int flags); -+extern long do_splice_to(struct file *in, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags); - #endif -diff -Nurp linux-5.15.37/include/uapi/linux/aufs_type.h linux-5.15.37-aufs/include/uapi/linux/aufs_type.h ---- linux-5.15.37/include/uapi/linux/aufs_type.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/include/uapi/linux/aufs_type.h 2022-04-08 20:22:30.618616768 +0300 -@@ -0,0 +1,439 @@ +diff -Naur null/include/uapi/linux/aufs_type.h linux-6.6.4/include/uapi/linux/aufs_type.h +--- /dev/null ++++ linux-6.6.4/include/uapi/linux/aufs_type.h 2024-04-28 23:21:13.846237252 +0300 +@@ -0,0 +1,452 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* -+ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * Copyright (C) 2005-2022 Junjiro R. Okajima ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . + */ + +#ifndef __AUFS_TYPE_H__ @@ -37339,7 +38182,7 @@ diff -Nurp linux-5.15.37/include/uapi/linux/aufs_type.h linux-5.15.37-aufs/inclu +#include +#endif /* __KERNEL__ */ + -+#define AUFS_VERSION "5.17" ++#define AUFS_VERSION "6.6-20240226" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') @@ -37749,313 +38592,3 @@ diff -Nurp linux-5.15.37/include/uapi/linux/aufs_type.h linux-5.15.37-aufs/inclu +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ -diff -Nurp linux-5.15.37/kernel/fork.c linux-5.15.37-aufs/kernel/fork.c ---- linux-5.15.37/kernel/fork.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/kernel/fork.c 2022-04-08 20:22:30.618616768 +0300 -@@ -575,7 +575,7 @@ static __latent_entropy int dup_mmap(str - if (file) { - struct address_space *mapping = file->f_mapping; - -- get_file(file); -+ vma_get_file(tmp); - i_mmap_lock_write(mapping); - if (tmp->vm_flags & VM_SHARED) - mapping_allow_writable(mapping); -diff -Nurp linux-5.15.37/kernel/locking/lockdep.c linux-5.15.37-aufs/kernel/locking/lockdep.c ---- linux-5.15.37/kernel/locking/lockdep.c 2022-04-08 20:07:30.703499501 +0300 -+++ linux-5.15.37-aufs/kernel/locking/lockdep.c 2022-04-08 20:22:30.619616817 +0300 -@@ -187,7 +187,7 @@ unsigned long max_lock_class_idx; - struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; - DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); - --static inline struct lock_class *hlock_class(struct held_lock *hlock) -+inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) - { - unsigned int class_idx = hlock->class_idx; - -@@ -208,6 +208,7 @@ static inline struct lock_class *hlock_c - */ - return lock_classes + class_idx; - } -+#define hlock_class(hlock) lockdep_hlock_class(hlock) - - #ifdef CONFIG_LOCK_STAT - static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); -diff -Nurp linux-5.15.37/MAINTAINERS linux-5.15.37-aufs/MAINTAINERS ---- linux-5.15.37/MAINTAINERS 2022-04-08 20:07:30.611494969 +0300 -+++ linux-5.15.37-aufs/MAINTAINERS 2022-04-08 20:22:30.610616377 +0300 -@@ -3235,6 +3235,19 @@ F: include/uapi/linux/audit.h - F: kernel/audit* - F: lib/*audit.c - -+AUFS (advanced multi layered unification filesystem) FILESYSTEM -+M: "J. R. Okajima" -+L: aufs-users@lists.sourceforge.net (members only) -+L: linux-unionfs@vger.kernel.org -+S: Supported -+W: http://aufs.sourceforge.net -+T: git://github.com/sfjro/aufs4-linux.git -+F: Documentation/ABI/testing/debugfs-aufs -+F: Documentation/ABI/testing/sysfs-aufs -+F: Documentation/filesystems/aufs/ -+F: fs/aufs/ -+F: include/uapi/linux/aufs_type.h -+ - AUXILIARY DISPLAY DRIVERS - M: Miguel Ojeda - S: Maintained -diff -Nurp linux-5.15.37/mm/filemap.c linux-5.15.37-aufs/mm/filemap.c ---- linux-5.15.37/mm/filemap.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/mm/filemap.c 2022-04-08 20:22:30.619616817 +0300 -@@ -3350,7 +3350,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) - vm_fault_t ret = VM_FAULT_LOCKED; - - sb_start_pagefault(mapping->host->i_sb); -- file_update_time(vmf->vma->vm_file); -+ vma_file_update_time(vmf->vma); - lock_page(page); - if (page->mapping != mapping) { - unlock_page(page); -diff -Nurp linux-5.15.37/mm/Makefile linux-5.15.37-aufs/mm/Makefile ---- linux-5.15.37/mm/Makefile 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/mm/Makefile 2022-04-08 20:22:30.619616817 +0300 -@@ -132,3 +132,4 @@ obj-$(CONFIG_PAGE_REPORTING) += page_rep - obj-$(CONFIG_IO_MAPPING) += io-mapping.o - obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o - obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o -+obj-$(CONFIG_AUFS_FS:m=y) += prfile.o -diff -Nurp linux-5.15.37/mm/mmap.c linux-5.15.37-aufs/mm/mmap.c ---- linux-5.15.37/mm/mmap.c 2022-04-08 20:07:30.709499796 +0300 -+++ linux-5.15.37-aufs/mm/mmap.c 2022-04-08 20:22:30.619616817 +0300 -@@ -184,7 +184,7 @@ static struct vm_area_struct *remove_vma - if (vma->vm_ops && vma->vm_ops->close) - vma->vm_ops->close(vma); - if (vma->vm_file) -- fput(vma->vm_file); -+ vma_fput(vma); - mpol_put(vma_policy(vma)); - vm_area_free(vma); - return next; -@@ -953,7 +953,7 @@ again: - if (remove_next) { - if (file) { - uprobe_munmap(next, next->vm_start, next->vm_end); -- fput(file); -+ vma_fput(vma); - } - if (next->anon_vma) - anon_vma_merge(vma, next); -@@ -1879,7 +1879,7 @@ out: - return addr; - - unmap_and_free_vma: -- fput(vma->vm_file); -+ vma_fput(vma); - vma->vm_file = NULL; - - /* Undo any partial mapping done by a device driver. */ -@@ -2737,7 +2737,7 @@ int __split_vma(struct mm_struct *mm, st - goto out_free_mpol; - - if (new->vm_file) -- get_file(new->vm_file); -+ vma_get_file(new); - - if (new->vm_ops && new->vm_ops->open) - new->vm_ops->open(new); -@@ -2756,7 +2756,7 @@ int __split_vma(struct mm_struct *mm, st - if (new->vm_ops && new->vm_ops->close) - new->vm_ops->close(new); - if (new->vm_file) -- fput(new->vm_file); -+ vma_fput(new); - unlink_anon_vmas(new); - out_free_mpol: - mpol_put(vma_policy(new)); -@@ -2951,6 +2951,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsign - unsigned long populate = 0; - unsigned long ret = -EINVAL; - struct file *file; -+#if IS_ENABLED(CONFIG_AUFS_FS) -+ struct file *prfile; -+#endif - - pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", - current->comm, current->pid); -@@ -3006,10 +3009,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsign - if (vma->vm_flags & VM_LOCKED) - flags |= MAP_LOCKED; - -+#if IS_ENABLED(CONFIG_AUFS_FS) -+ vma_get_file(vma); -+ file = vma->vm_file; -+ prfile = vma->vm_prfile; -+ ret = do_mmap(vma->vm_file, start, size, -+ prot, flags, pgoff, &populate, NULL); -+ if (!IS_ERR_VALUE(ret) && file && prfile) { -+ struct vm_area_struct *new_vma; -+ -+ new_vma = find_vma(mm, ret); -+ if (!new_vma->vm_prfile) -+ new_vma->vm_prfile = prfile; -+ if (new_vma != vma) -+ get_file(prfile); -+ } -+ /* -+ * two fput()s instead of vma_fput(vma), -+ * coz vma may not be available anymore. -+ */ -+ fput(file); -+ if (prfile) -+ fput(prfile); -+#else - file = get_file(vma->vm_file); - ret = do_mmap(vma->vm_file, start, size, - prot, flags, pgoff, &populate, NULL); - fput(file); -+#endif /* CONFIG_AUFS_FS */ - out: - mmap_write_unlock(mm); - if (populate) -@@ -3291,7 +3318,7 @@ struct vm_area_struct *copy_vma(struct v - if (anon_vma_clone(new_vma, vma)) - goto out_free_mempol; - if (new_vma->vm_file) -- get_file(new_vma->vm_file); -+ vma_get_file(new_vma); - if (new_vma->vm_ops && new_vma->vm_ops->open) - new_vma->vm_ops->open(new_vma); - vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff -Nurp linux-5.15.37/mm/nommu.c linux-5.15.37-aufs/mm/nommu.c ---- linux-5.15.37/mm/nommu.c 2022-03-20 22:14:17.000000000 +0200 -+++ linux-5.15.37-aufs/mm/nommu.c 2022-04-08 20:22:30.619616817 +0300 -@@ -522,7 +522,7 @@ static void __put_nommu_region(struct vm - up_write(&nommu_region_sem); - - if (region->vm_file) -- fput(region->vm_file); -+ vmr_fput(region); - - /* IO memory and memory shared directly out of the pagecache - * from ramfs/tmpfs mustn't be released here */ -@@ -654,7 +654,7 @@ static void delete_vma(struct mm_struct - if (vma->vm_ops && vma->vm_ops->close) - vma->vm_ops->close(vma); - if (vma->vm_file) -- fput(vma->vm_file); -+ vma_fput(vma); - put_nommu_region(vma->vm_region); - vm_area_free(vma); - } -@@ -1174,7 +1174,7 @@ unsigned long do_mmap(struct file *file, - goto error_just_free; - } - } -- fput(region->vm_file); -+ vmr_fput(region); - kmem_cache_free(vm_region_jar, region); - region = pregion; - result = start; -@@ -1251,10 +1251,10 @@ error_just_free: - up_write(&nommu_region_sem); - error: - if (region->vm_file) -- fput(region->vm_file); -+ vmr_fput(region); - kmem_cache_free(vm_region_jar, region); - if (vma->vm_file) -- fput(vma->vm_file); -+ vma_fput(vma); - vm_area_free(vma); - return ret; - -diff -Nurp linux-5.15.37/mm/prfile.c linux-5.15.37-aufs/mm/prfile.c ---- linux-5.15.37/mm/prfile.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-5.15.37-aufs/mm/prfile.c 2022-04-08 20:22:30.619616817 +0300 -@@ -0,0 +1,86 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Mainly for aufs which mmap(2) different file and wants to print different -+ * path in /proc/PID/maps. -+ * Call these functions via macros defined in linux/mm.h. -+ * -+ * See Documentation/filesystems/aufs/design/06mmap.txt -+ * -+ * Copyright (c) 2014-2021 Junjro R. Okajima -+ * Copyright (c) 2014 Ian Campbell -+ */ -+ -+#include -+#include -+#include -+ -+/* #define PRFILE_TRACE */ -+static inline void prfile_trace(struct file *f, struct file *pr, -+ const char func[], int line, const char func2[]) -+{ -+#ifdef PRFILE_TRACE -+ if (pr) -+ pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); -+#endif -+} -+ -+void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], -+ int line) -+{ -+ struct file *f = vma->vm_file, *pr = vma->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ file_update_time(f); -+ if (f && pr) -+ file_update_time(pr); -+} -+ -+struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], -+ int line) -+{ -+ struct file *f = vma->vm_file, *pr = vma->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ return (f && pr) ? pr : f; -+} -+ -+void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) -+{ -+ struct file *f = vma->vm_file, *pr = vma->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ get_file(f); -+ if (f && pr) -+ get_file(pr); -+} -+ -+void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) -+{ -+ struct file *f = vma->vm_file, *pr = vma->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ fput(f); -+ if (f && pr) -+ fput(pr); -+} -+ -+#ifndef CONFIG_MMU -+struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], -+ int line) -+{ -+ struct file *f = region->vm_file, *pr = region->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ return (f && pr) ? pr : f; -+} -+ -+void vmr_do_fput(struct vm_region *region, const char func[], int line) -+{ -+ struct file *f = region->vm_file, *pr = region->vm_prfile; -+ -+ prfile_trace(f, pr, func, line, __func__); -+ fput(f); -+ if (f && pr) -+ fput(pr); -+} -+#endif /* !CONFIG_MMU */ diff --git a/kernel/kernel/files/patches/aufs6/lockdep-debug.patch b/kernel/kernel/files/patches/aufs6/lockdep-debug.patch new file mode 100644 index 00000000..3bd461c9 --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/lockdep-debug.patch @@ -0,0 +1,16 @@ +SPDX-License-Identifier: GPL-2.0 +aufs6.6 lockdep patch + +diff --git a/include/linux/lockdep_types.h b/include/linux/lockdep_types.h +index 2ebc323d345a..9d7009190515 100644 +--- a/include/linux/lockdep_types.h ++++ b/include/linux/lockdep_types.h +@@ -12,7 +12,7 @@ + + #include + +-#define MAX_LOCKDEP_SUBCLASSES 8UL ++#define MAX_LOCKDEP_SUBCLASSES (8UL + 4) + + enum lockdep_wait_type { + LD_WAIT_INV = 0, /* not checked, catch all */ diff --git a/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch b/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch new file mode 100644 index 00000000..f6bcb8c2 --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch @@ -0,0 +1,213 @@ +SPDX-License-Identifier: GPL-2.0 + +diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h +index 6b0c626620f5..fc6fa00a3016 100644 +--- a/include/linux/shmem_fs.h ++++ b/include/linux/shmem_fs.h +@@ -51,10 +51,13 @@ struct shmem_quota_limits { + }; + + struct shmem_sb_info { ++ struct mutex idr_lock; ++ bool idr_nouse; ++ struct idr idr; /* manages inode-number */ + unsigned long max_blocks; /* How many blocks are allowed */ + struct percpu_counter used_blocks; /* How many are allocated */ +- unsigned long max_inodes; /* How many inodes are allowed */ +- unsigned long free_ispace; /* How much ispace left for allocation */ ++ int max_inodes; /* How many inodes are allowed */ ++ int free_ispace; /* How many are left for allocation */ + raw_spinlock_t stat_lock; /* Serialize shmem_sb_info changes */ + umode_t mode; /* Mount mode for root directory */ + unsigned char huge; /* Whether to try for hugepages */ +diff --git a/mm/shmem.c b/mm/shmem.c +index 69595d341882..34cdf49cf1d4 100644 +--- a/mm/shmem.c ++++ b/mm/shmem.c +@@ -111,7 +111,7 @@ struct shmem_falloc { + + struct shmem_options { + unsigned long long blocks; +- unsigned long long inodes; ++ int inodes; + struct mempolicy *mpol; + kuid_t uid; + kgid_t gid; +@@ -136,12 +136,14 @@ static unsigned long shmem_default_max_blocks(void) + return totalram_pages() / 2; + } + +-static unsigned long shmem_default_max_inodes(void) ++static int shmem_default_max_inodes(void) + { + unsigned long nr_pages = totalram_pages(); ++ unsigned long ul; + +- return min3(nr_pages - totalhigh_pages(), nr_pages / 2, +- ULONG_MAX / BOGO_INODE_SIZE); ++ ul = INT_MAX; ++ ul = min3(ul, nr_pages - totalhigh_pages(), nr_pages / 2); ++ return ul; + } + #endif + +@@ -1262,6 +1264,11 @@ static void shmem_evict_inode(struct inode *inode) + } + + simple_xattrs_free(&info->xattrs, sbinfo->max_inodes ? &freed : NULL); ++ if (!sbinfo->idr_nouse && inode->i_ino) { ++ mutex_lock(&sbinfo->idr_lock); ++ idr_remove(&sbinfo->idr, inode->i_ino); ++ mutex_unlock(&sbinfo->idr_lock); ++ } + shmem_free_inode(inode->i_sb, freed); + WARN_ON(inode->i_blocks); + clear_inode(inode); +@@ -2506,6 +2513,25 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap, + break; + } + ++ if (!sbinfo->idr_nouse) { ++ /* inum 0 and 1 are unused */ ++ mutex_lock(&sbinfo->idr_lock); ++ ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX, ++ GFP_NOFS); ++ if (ino > 0) { ++ inode->i_ino = ino; ++ mutex_unlock(&sbinfo->idr_lock); ++ __insert_inode_hash(inode, inode->i_ino); ++ } else { ++ inode->i_ino = 0; ++ mutex_unlock(&sbinfo->idr_lock); ++ iput(inode); ++ /* shmem_free_inode() will be called */ ++ inode = NULL; ++ } ++ } else ++ inode->i_ino = ino; ++ + lockdep_annotate_inode_mutex_key(inode); + return inode; + } +@@ -3754,8 +3780,7 @@ static struct dentry *shmem_get_parent(struct dentry *child) + static int shmem_match(struct inode *ino, void *vfh) + { + __u32 *fh = vfh; +- __u64 inum = fh[2]; +- inum = (inum << 32) | fh[1]; ++ __u64 inum = fh[1]; + return ino->i_ino == inum && fh[0] == ino->i_generation; + } + +@@ -3775,14 +3800,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, + struct dentry *dentry = NULL; + u64 inum; + +- if (fh_len < 3) ++ if (fh_len < 2) + return NULL; + +- inum = fid->raw[2]; +- inum = (inum << 32) | fid->raw[1]; +- +- inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), +- shmem_match, fid->raw); ++ inum = fid->raw[1]; ++ inode = ilookup5(sb, inum, shmem_match, fid->raw); + if (inode) { + dentry = shmem_find_alias(inode); + iput(inode); +@@ -3794,30 +3816,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, + static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, + struct inode *parent) + { +- if (*len < 3) { +- *len = 3; ++ if (*len < 2) { ++ *len = 2; + return FILEID_INVALID; + } + +- if (inode_unhashed(inode)) { +- /* Unfortunately insert_inode_hash is not idempotent, +- * so as we hash inodes here rather than at creation +- * time, we need a lock to ensure we only try +- * to do it once +- */ +- static DEFINE_SPINLOCK(lock); +- spin_lock(&lock); +- if (inode_unhashed(inode)) +- __insert_inode_hash(inode, +- inode->i_ino + inode->i_generation); +- spin_unlock(&lock); +- } +- + fh[0] = inode->i_generation; + fh[1] = inode->i_ino; +- fh[2] = ((__u64)inode->i_ino) >> 32; + +- *len = 3; ++ *len = 2; + return 1; + } + +@@ -3916,7 +3923,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) + break; + case Opt_nr_inodes: + ctx->inodes = memparse(param->string, &rest); +- if (*rest || ctx->inodes > ULONG_MAX / BOGO_INODE_SIZE) ++ if (*rest || ctx->inodes < 2 || ctx->inodes > INT_MAX) + goto bad_value; + ctx->seen |= SHMEM_SEEN_INODES; + break; +@@ -4202,7 +4209,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root) + if (sbinfo->max_blocks != shmem_default_max_blocks()) + seq_printf(seq, ",size=%luk", K(sbinfo->max_blocks)); + if (sbinfo->max_inodes != shmem_default_max_inodes()) +- seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes); ++ seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes); + if (sbinfo->mode != (0777 | S_ISVTX)) + seq_printf(seq, ",mode=%03ho", sbinfo->mode); + if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) +@@ -4256,6 +4263,8 @@ static void shmem_put_super(struct super_block *sb) + #ifdef CONFIG_TMPFS_QUOTA + shmem_disable_quotas(sb); + #endif ++ if (!sbinfo->idr_nouse) ++ idr_destroy(&sbinfo->idr); + free_percpu(sbinfo->ino_batch); + percpu_counter_destroy(&sbinfo->used_blocks); + mpol_put(sbinfo->mpol); +@@ -4300,6 +4309,8 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) + #else + sb->s_flags |= SB_NOUSER; + #endif ++ mutex_init(&sbinfo->idr_lock); ++ idr_init(&sbinfo->idr); + sbinfo->max_blocks = ctx->blocks; + sbinfo->max_inodes = ctx->inodes; + sbinfo->free_ispace = sbinfo->max_inodes * BOGO_INODE_SIZE; +@@ -4445,6 +4456,15 @@ static int shmem_error_remove_page(struct address_space *mapping, + return 0; + } + ++static __init void shmem_no_idr(struct super_block *sb) ++{ ++ struct shmem_sb_info *sbinfo; ++ ++ sbinfo = SHMEM_SB(sb); ++ sbinfo->idr_nouse = true; ++ idr_destroy(&sbinfo->idr); ++} ++ + const struct address_space_operations shmem_aops = { + .writepage = shmem_writepage, + .dirty_folio = noop_dirty_folio, +@@ -4618,6 +4638,7 @@ void __init shmem_init(void) + pr_err("Could not kern_mount tmpfs\n"); + goto out1; + } ++ shmem_no_idr(shm_mnt->mnt_sb); + + #ifdef CONFIG_TRANSPARENT_HUGEPAGE + if (has_transparent_hugepage() && shmem_huge > SHMEM_HUGE_DENY) diff --git a/kernel/kernel/files/patches/aufs6/vfs-ino.patch b/kernel/kernel/files/patches/aufs6/vfs-ino.patch new file mode 100644 index 00000000..601a72f0 --- /dev/null +++ b/kernel/kernel/files/patches/aufs6/vfs-ino.patch @@ -0,0 +1,24 @@ +SPDX-License-Identifier: GPL-2.0 + +diff --git a/fs/inode.c b/fs/inode.c +index 84bc3c76e5cc..63fc36b8af8e 100644 +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -970,6 +970,8 @@ unsigned int get_next_ino(void) + unsigned int *p = &get_cpu_var(last_ino); + unsigned int res = *p; + ++start: ++ + #ifdef CONFIG_SMP + if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) { + static atomic_t shared_last_ino; +@@ -982,7 +984,7 @@ unsigned int get_next_ino(void) + res++; + /* get_next_ino should not provide a 0 inode number */ + if (unlikely(!res)) +- res++; ++ goto start; + *p = res; + put_cpu_var(last_ino); + return res; diff --git a/kernel/kernel/files/patches/linux/patch-6.6.30.xz b/kernel/kernel/files/patches/linux/patch-6.6.30.xz new file mode 100644 index 0000000000000000000000000000000000000000..e8d7cb169f6a4aa6903d7592e6616a649cd72a7d GIT binary patch literal 1872228 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 J7})}ZA=M@-?OF8J zNC7J&T>Tvg)u)W-bLoifDsO$%H2^o2t-#Rkc;ftv3Kivk09MX#e2@{_y7h^I`m65h|myN(hF;=3yCfj{Z{9ElEcIj(bJAj1$2HN zv3>xzLn+?uSm1VlUIzctgPqc}OFPGc`w0E>doOB2dlx(2y0 z<{)9PTU-A(-56v-_}zh^$3Br$lkZP&KyRdDov~W8H;M=Q20Zrzh7sQwnfbqnNq#)= zFP5~CPg7h7)a{B)Db^#$<^|zJL{p<8RXh`P=OxPbkJhl)c2mzQhv269?|{L!mfP??*=k_I)ayw#LD0t%ZIS_>9EvX3 zU{Q6frY~f5wnX#HyG`S#RRPrrc971;`W4MQ;?RBuYi7 zmUI4y<~@w-t`=rx$x#z&Fz3hOIDJc$AMvgu9Opc>@@Br#{r+0s1)b7cBTJv@tMaK& z-jr#8Pn!2-xxGLmeg5(Sr+&Wju+#~W3W~V*O%JzcjQ{hxIfd&MhmY1N0cG+y zPuffENIl_PiqLMr5lMk61H(F;ZUveywTljzOZxXquMs-{qk(>pp=Q=bZz4%nK!!;9 z(x=F3cj{BAj~7PDG`Vr%N>gBp@)Xo|_+p#pD{PL`BXTU4!W5MX5UgBf7k{YdMz-ub z0lg9>X%8q68nsOjVSp2{@pZ_y-?1F*oHTJo>;GOPA7r(DnU&h_OG{=yrW7^eBN!ha zxF~%LGI=!?59&H+rs-^}o!Rr>^}{4O1R;$%oRL+^4VJHZZ%O%f{}IP)ool#1ftcBn z=G~vDG|in;O@vp|J3vN+!gZ>+bkTUv-~3MIsFviHb+g#-Df2IoOaE)R^AZ>TwDvMz zt;As{lqv@0J*nsJUmqDe$u<9$!cb;wP5Goule4N-QjMWhUq?rr$j}}iOm)bkwYqW9 zW>JniH<*8Dpn5KyHr6xZLEVZ6^#aC{74n7-o6LRl$Bo)Koi_aKy8U|Yw1cud0t&|0c+wj3@?nW{cV!2ACLG`aOT0195xuy)S=+#R@71H1>UU^Ove-0(wv&l3YgeAb6RtST!H0 zb((<`7OK~MVal)@Z#$1ykt-X`-_h)4(PF^T58;u%&Y&Ei6h%P6r#>)$O;-!Od^Z_f zEhmyVtOn!m*2Ws#3L^YrZ4g4o#>UDMct=hl0GWF~#>D{~5;{TTBFx47wp%w#KY3*r zO!%}t-e8C?vo_j0k!t|}S&q|7L~z*F`b^0}YSae8U{Ae1MS`|&;I)cV(`~M%JXj7+ zPF5oRjUUpmY0riA!A->*1g2ruq;gZ9786l2`-l3M82qivz4mf=igE0H_IoP-%N9wHng(msQ+w1_6i@7f$or* zg^R2?6+&cg#fkpq;>AxSGD$L$&5z2Y@670QGrX$R)rzn>N@Pe<=Fc&4pT2mFkNF|O z6~Ekti$*mjqPJ0h6sw32xq8lzm?|{zyonSswT^c=2o}j*QA*4|F{WZL`lE9s*5l7f zFjY#gWzK92RQ&XTO>)3w;@BAJmo|MRtdv`a&YG9Zz*$(5w?-KkR9BQv$%tyJw?b

Cf}|~1#Q1N2mJ-uXP8YzpDNCF-(F1v( zP^U${;d?eu?Pv%g@LmYN)R5Dd3d=SC_h6e|FpLI42Ru>B_ER_>H4elbAv$J@u4I?6 z_%qE{+f4E_tA#F_jk%U!8vC35I&~xetu@1_n)i#!w65Hw6mW^j`ot*_k*%l_|J!Ob zsV#B?_5yB2RXxLm>2^{MOamUp2j{nBj!LD@fvD@vfERA&zm6kna$zQzL78TZajt1` zTq{)9@WE+SsLiGFKd*zIk&Y?GyO&j7V*jl6?vmV0AaMbu6oBYK>59-Xzb>tBJV$Wb z!LHV&DW7>HlImY=cU&m_%Ml&d1B_{xko|nJ0^idxnv;L85Jx~56sG+;5H|n32tnbe zR|6k>C7Tg$>}0D>*Z{MF6LG;zSbA^ie!%nB(0v>0rW+OS7RHKj|(>ZajjxgRkMa=2izcs z?Sc&m<{%z!x$1<6q3M(~Sm0g&G$u1TF@*eplmZ;dz9Y1GDE3vp4VAg; zDl3a#<`8X#MWHbA#`|sl&TCg|cl6v=TGvpFCWjacS!^8DlWQ6JbNheO@SC-kG!WPD zUti?E-?mw?;E#+!Y@UUcm=qd+%7F4LVPgQ}FysRl9`OZ)Aj?oB=mUYR?Xd$O_{TX2 z$dy-APadVQoXCavOtt)3D)5t7Cx4W+oB*|)s+@N-Q77MvrN7so$R$Ujj)HGsOYzj7 zX@tb;X_`hFu>VD0@5LqZs=Lz)*JX&*$9^aW6|2$w=Ig6URo>`atYkj&3FjVa17M8* z(Ju8|cWVW$qYpZvdHV}#kBbI&8)>EY$%fw1R=OF-0-P70Gw3-=QF^xyCOgNZ!}&CN z5jf31-41=B1&MmJt)%~#&73h9pjOUQ$J8_#@ZfIOK&Q{0?h^uEZtg;MGBBi+ZJ~C6 z@>wCP<+VKEf^iH>G|W_KV9X&X&I=av1&dZ{oRKfG6{c2$+vndGw$x#&>8^~)!~dLq z`)8`LER)IG9#+|Y6vT?ssgKCi83rhmfavnm-+~|H+VrAsUswDr20m>L@Qm$EcgesN zMBLsxw~h4v0PbG~w6YV+rOfD1TRdeUE%R)Dzy{L@chc<^VEpBHXEU1w~W^vC!U9hRi!w4oKup)dGzvhHRI$> z?|G*Ou@V;!dvF8fJS$ww^je45L{Q>#KsKqGm+kLVPUn@P1@Ddo5CGnXa5JwfPr$4h z+l(NmF)Xi)>h(7TNK(EeZ;NM|;)28!rjZcKc$aZx`kr5@lZ!CN)f7dz+Iug7*=hp8 zP<7po)0ewLJ5~|O_(RWs{>8OLT&5LV3KdHr^-Mt;7T!Eu^MitLYG``;uwpL_K*v9J zoqbdbgPW_)`x#b~=SKhnH`=8vfy zB>{bVQG)oW`%|2=DGQxfGiptby_AUAWzYyB>@JN8vHHeH+yLf!CtaL`Be6X0ZP?(= zFudX13tL<^*OFS@Vh2dkkBkH>W=ACrn^DTaOD6cm0-RGu#eQrmQ6`34qR^f0ca;&s z8mfx-_Krr8T)o-LrB|-AL16?9{*ZR8|SUc2Sq8QW&! zaZp#r%XZ~fNFP<>a|x6CFFa%hI?JWOqnFgtsA}TWX+xF}z0)oEXUr7aqwo*3<`7dd zHRY+d_Z57Zbk*JZE>{>A?C>PSIB$_0>2&W za;dRob(FLQT|Rit;Z{6A>?-M43E{Gnagor?%2`3Bd5q>Oljzs@kd-@xy0dH<_N)aT z#XD|_584n@Lhrdg%5|&>1r>)OLxv>&o!uuF)<+0J1T+w|D2_mnFjg(kjVj~45DH63 zJ=KniSe_&i^xxL@MX2H$jpNMs5;e{VG|uVkCxt;L;uVS7IwXD8!wxXv*>TeR4TkK* zIE}g?B`dDMQJ}Ex$`VgNQ)KnSV|Qbz=G(2jc-9bDx5gSWs8kAoY4fAP{W*bK{YC@! z&}=;IQ!LxGS)CpxmT zm?bB0GG6ROX3&h2w6EI-Dq^DQf9BzYo%iqjypeoc7~KOlTFj5Lefbh~W>KybS(Hp@ z=m1#DL*oHn4!k1r!^QrcOzj&0z78M)+cYG}m`;K-w#E|s>B~45>>9x~WyKw5-pI3= zk|*_(EQaYe6rGZFj=AX-@DGD{;xlajaQP9i1)_^S+y_YMT)c@;$Fd=7W7VO zU{u}z`x?`g1snb6rUvsx&w^lArS=lKo+b6l{g`+C&FHgSuc}6IXeHr!X`Dr$&bf3* zSo%Yk$_H#_Kp_bKHv8M9e<%_0OwM*EXVuN6g3^)@^_NQLGKE77fD~eUkUEF@$}#2X z#5(<4y@(}{_(E*OC5`h=ZU(9s^a7p?*T)aTr35Jw)f#kj&R)D*h{Z-h81{h>>zYOy zLZvelwjt)bH}3G_UO#N=Vm~$Xu5xZ`6%{E#1U0D-eh3CQ-FXcdK08m>Y{~3*Ri737nf-Hg!Pj`uPFExDwkg>8G#bG{9NP596|Ghf~jJ;r%VN zn1qE&S12(YG54~Z%US{gH~WHxydV{bglD@?Pa29Sk7;NNr0KG}PVT&n4-I#v&2|Po zKI!1b;PcW^DnzCDDEWx6c3t|^`!;<4%e%L8#!`QFQqPHMU{NJA*{FmYUi+57kFGi1 zi&wSwH@o7<#VG>^;EXZ#%(5oHetWTN-ovC^^7OyacutDR)kyR#T;TVOn)kXB@_=hG zaOkYWbFo5aXP7&TeU>igMb>HVvDatPmX{4%4Utu>d_s(c8Q$_Uw1|yoH=xOK5jd~> z#%u5@rKWZH0oiSU;aCvNUnmmhar_j=Qr!+vxTzE^r!Ll05a|oG_tU1Qmv#&WD$2Iv#3$me#<^PcP(&*lfPH)CY&`H!$@Y`YpTCtTK^HywbphuWg!e>0_Y6b0T6aW z`cZt%f1&>U_S>kz67EUM`Y-XS1`ZoMuafHix#HHQ)~%Y%Nn3urb+^$>8v$UVP( zGc}I*tZ(!?ak+Z++VP|MNgc?KYuj|oIWaM`tDZs5TrgO*Z{BXf@jcfo|H|mpjrSkj z*!Sc?Q7x8tgpMU)rYPV=$5QW!#2oG$*q-OfB%90>RA+^32%ynvE*D>?L~c4^x3ioi zyk)oeQqw7JB!(XWcg|US0pz}p(L@c{(1%N4>4Q>#{jy<4R`zOx8r=F2wntS;nn@!E zIWHAg>}=F+ZChzW*X}gnh;SVNzbIV>g=swMf4?@9b&5TW42KufL4iEKA4u?fCgx9Vv?-@5pK zcONRX4?{6p!c1&)DrMIUAY|>M%Q4_m5enyNGM$8x`4k2*w!xpLds9e|T?+ZI7Om5? z)bV@la9%FE#`GYXcpY4Z$#=2?*>QnaP)OB6Qb8cRiH^PQH^b7le&DRPu`tJ-Yz zbY@5722}YfPkdhLbu_343w+nGOW>uK9b~8t!e{DnYTXYJg@p@MbW#!Aaf?E1(oFN& z#w>=j*Mc@7iL3C1En@yE*x?L{o6nrJ)C<>SZ|~U|*SFWbi|CdK61a_S2h;9+){NUm z8A@_<9-T|Z+Q9>x?(0ARc_3sRTn3OtW}vg$aYlF6rJney<1V%CN?xfeglk0?v7!6C zDb)deaRttdk0(OYcVpZ5g{Om)7T56NeXi-@zy%Sk)*d=b^wOOE1yO%fko%a<6CPuR3Tp|-rBI05~2z07- z3;;+Vuc@Qx?XrNNdzzU~Bm5t4XI_rHf00$qGC<`Nu*b(W&4g4nJ{gywp$|;-$Coi* zF7%EQ_q!)RBJ?hP@83~}ctCt$SkgCTr4_{%giZssdzGm3Vf80ZIMY!@lT86(!!###{hUXLPV~L#7PK<<4&>4YJQ8ULQ611BDb>?jwbv z>_2XWJYE;Inz0%-RC-7;d*$j5#}ML$(D+^7X{p6d>+Jbyxptu69PQ_xV(zK~Rqy&2 zkR{JQ4MX*WhYSE?d-jPTcppDnCZz|9oj^Z+e08u=_hpMT@5CRs$O_??FK?8Zz1d=i}2J z&B#JJRCKXGafNJE!qZB=Q`?T$DI>$DeKgMZqzQ{FQW4k`$mL=%EaxZyWGK4sePWGq zq@wk``7iZ39^xJWbH_!DdFo3JuIST1bR>APXHv*hx&;G6n-fwXP7a*U|3Lg(%HKUa;oc+Vyd2Lqb8!B3aw4K(O#`wYpYm0;X&aTipUkg+Yb1WPvf zon7YAMj0u1byxWR)ZM1+zw7X|SuQ?Y=17N>QGp+h7`4P*rg_6^921zt*ymRYFCk}p zMz8b$eqvK5A|SEL4E%j+w=uNlAo1=%sI7v!84Z^uAn(HLsYRLnq=fZp*8wq&MWpx% z#&-J3h2&mm6SuDdJ83gT7dwwohZ{F$_Q6s_giQr z_|blJ8kccMY${kP!eC8@V)cFn<`Bk04iV)rz*`620tlRuJT6=5Xpx#*rRAWqPu*?G zfrod^Zjt$x*WhD0EOC7x5LrZobvpeYPr5>4Eg9mj&S&l}XI@%T`N14IOH(gx(BJao z68JI?U)OP>J*NPxgZ29F!w)mx6rCKbd``}5&`q%UVZ@3|om{aUlGB(eX`zi<9MZw= zS5M6Zv(dI9rJfSMz5-%sKjSII=>YmxK?#VQ0~eCBO`-zDuZJ|2P{XXt4~P0&i4cV_ z1NW}EuG1XCxkB{I{mCi*eioGC&&P-aU`Z*Z%0+H!?{)@`q9BmwE=%XXd zl@4sI*qA5${egd+{$pB{Tl`#Rbj^#)Oq- zI*WkYO&tmxLi@%0JZK0+!aZ;wad-xYz;w=rTPVop^rY(MgPd-87z06mWd=e0wNOZB zY10lilFGX#eJkiJvk7#CmqNaqGx`Nh$_Zbd7XhPTnk%b!BE8 zfTeJ}?by7}vxII(sg;Slg!RjHq0RWw#`tkVtShDpHFV(8w+@dgWe)Rhg(T;%E@W*X zYRnfHLouXp5Xw;V<8Ln+xBR5-uV3$4{fa3PLH1IF$EHH>)RLf{BLJ+600$jp>rZdg z4(=zv9v&1a!Y)RY>t*J7Yue>w+NOqdpx7FTNK_iMBgE=P%q8MmUXAyVc@DG3uA6;= zs3U=VKXjvsR3`iXM*|1l*qxe4AGh#Vbx&L{oyr++@9iA!(Tx$hR;H$WcT~VNKK?exfn24X>u?&UFU#?WTob1$x_~)8{}?)-K1zLRT(^hy zxW81kDd<8640hkxq`K(P9gYHC(}gsF=SWyeEJV83OM@X1GDKWDtO1QB+B7d9Ov)RZ zZd7a`8a<=aIywhA<8l4Jm0ks%%7v+h)+O1`l>b0&Ab(Q51}^Ffb_LK-p?Wx@(ztb% z*7ECBJNI4c4|CL!Gl4Ob#wyuGCS@@9A?h(|TZuZ^m1%7sgBPk=cV%V#d(14wwA62+ zB`{j6Q9()EQI6>(xNR;?rE9woZxjazZC0ZQiLvc(AUWb8w4+rWHT=Z2s;HK#HyUL7 zI_J&?r~f!=qd#=MXm;G4j#pW2bULL|MT%5Sb4p4sJqYrnxrryz+YIUeq(GKvW-7R+ zu{yC((6AMm`Q3PZ7F8e`%A%j1JD|4{5z4_oJgNf#wB0RzXwJ-g*X{Mu-?=BIXTaRz zv7TTdFnr&T0x3TYCz~fej$LZsrj10d-r5?MPfi9_-7mbtkefZ3Rn&UNV7wPHJB$lr z9+8-Zh4FOyHiN#`tqrw=xEf!d%CbL&UF3S0MMhI_UxR-RB1$izgZfL9xVEg`Z*cww zUr?44Cr^w%1&iuxhWjlHEK7M*_$X^YV$g*zHyv+QS&iI>y;!%?FkTNI2qnYJuWAUi zL)Oy(T77E`tSUj3?4E{zFTN$q~fpxDa@9Y>eo| zxtgF{LiL|^OK-KXyFTn4iM{&^1MZpw3!b9Q235vUPK&^`YxMU;QIJTv*L)+m^O>eI z)pgyFo2&Te&&!jfL>lq3z_CLyuON=x4-DjR`{{b@4+X-9Jt2?+OS#zP*!CR< z4HjR{GW7dipTr_dpZ7Vxf|)I_K*`a(@OtHr;vit{7pHi@8`6qC&g3}PE5zOmUuMLc z24loLh)sJPDO4dIO@zU79dx@KwYV_mdGPbhOuXln1{7ngIgH+(q%dY9DgL(B9bunz!}hLHi7zR0F4HAe7lp&A+G_GX5gXTYpIDlFHZnMt*ZIvlWS#3l?JkWIa} z%k?RzQ2wZ#efKx>4>j5?+^c8xe1y{OJV?_q<(819|3(DmCnb=bmx@HixDHXL;#)N# zMe87OhX0$Lt>CNLfy`G9A9#cocKTinOc4mL^ymXdt+uSjC3;)AU)4QKeK;COvAj;L zFF`9I?cvEp^(2Cv*pk@}i<<=iV`tEo1IIzY%>low& z#+~3!MBahfFoq)lPGot?FS451SQzR{0H^EmByZCJ5X3={7g&7l0&50pN>Sx0q51oX zj@y9NEf|M}1-ds`Cg~~OxX31iGjB={bT>~uZc4V*#? z$45cwtihf)^MDE>A(G}_xSr|H6hTX zEjUHB$K$sCSjizO{6dXxVeRGf*2M*}h#&%u%vDiT@YqbBBTg(o=Sz1+#|lb%?}a`AiCb7|8lPt7 z$|p}*eto#lFdbB0_$;lD`Nc?y)yYpg;A5Jib_^I_oa1!zF%+ID#QcP@{$tl=Sl4UK zJV4`8SZNggJ@uF)7*-ujD<`vA|EigP!xv%e@Zfofm?E|iZ4?rO?j9r;yrYO86%nh+ z?F5-ttqg58VvLyzQM!U06_s+h#@bbtmp~p5V`B-n)?;JTuILia-+h#X|7B!ioGYkE zK5RXKE%DJT{^X`Oos0{b7p(14WY+<{vmTDB`o3_hE-g|s%G+dw!fN>_hYSdc%1gt` zP03oq%JCcTsg=n4l_thUlu}xpJgWC`^*q*uMX+xGE4huq4(grr?WKFG0`!A&c;*jc#+AqnnLc_Zu=Se6%rycU>!z==}vjinTxx zrl*;W3s`t{D=ycI@DA|uGJ7GXKFRwOGiV!;%}v2jfR=S$O?DO$m2|CkIRQ*3hzGOb zF)1WDeN0wMKoJVM?aa~oNbAE4B6e=(W@3^a;j^!TpeUaF(00Uu+zKc3>MiFK-=2zg z8%ksP_Vyb!Ivlc+xz!M=#4CZBgQTNH$IO4j*tJ{>=^8kg;(T8!W5@*(uN*k#Uov>+ zvTK$wFvrIvo=T+vJ6g=SLPs2HPn%KOlDze|C_Z6O%OqW{{|HM)`IzFBI}x`zP++ii zEj|7Dbyg@E(!a!&Ovj=S7b);SC!3eglr5Go%W z&{W4t4gUhM+L;MGwn#_T|0y3dIn^89p)IC(-Kb7;=19!M8XmNwQ`F(`oxi}`nsw6= zh#*Ou^G;n00{Q(EYekDsiBHH0(Y^hVqCHN$?qH9hdZow)bE66Q*JdMOM2idE2sv!k zZM)!tD7()*NO^xR!f6Ncjj?(B3cy1}x<~v$(sQF*3zq78jMdffZyQx7XTRr^2pzJT zc%yeF`5K&{4WFG|l^cJr=KnuWKcy(pv7m7{?}XfbBz=#(MSX!BjQS|>uNy|9q6-;bIv5l?wBeo9 zQHTeW#I{F`DXG6y1Rio^0QsH!VAnPO9XP12jAo^}W)^j8h~=GAf*+;cKd2Jmuzz9Q zAa84nXOn2rlhnWR>R-4jy*0EN2>YGpQ<~ePsZ8Iyj!+{vVr2fe^ZPqH<3mz-T!Ux z-}@pusZ}@BuHTM>3uV)Bf~gX3^{~!%gOOz-2dBU0dN;2&%*mc4ZvmF9(l!H)6b_&A zM99u?reyXVHY?co@L+hdB&~v?H!zq>!MF^6D;9pAaNqNRU8gHMKEi#A_qIc+nqFFZ zXVTH3?N?pDBzny))I^$yE$E=Sg<@u@wQ{Ub?xfsvp~d=Z!GjrIr&lP6~!;p~j)V7y~9V z9NOn?jOf@rf9W?1KR+&DUbpLjX`L)uHT^?TUCVH{#V0zMvKN#eGf>#wt8qWxCtY zShIdh=3gQk?uM>Y`=c>DR=h8pC>!s`=P*Iw)Kj!gdg=H5ou!rL4flTAsYup;d8c+T z!A{yuWIkG1CC;qD)!J##72tu{lBHqB|=6R2|DZ7?uB%5sS z43rGH0A#S1s!(B=Un>c6!XqPs=9S)rmx%{(#Xu2%7y`TbVIPQ6;XfE zsrsl~O{NJ?31K0kqPv3Y&#Xn8cqB^+RlDgkvl{7$%&k+tqm4`g89Q z;dCr~gjuSz)r9-ZJV6fXe52~fcUXVO6{I|?k^#QRmY0cAB=uH|COh9=4}w>k!59mW!Ndet5scpSTzVElX`x8~9FlNa;xBF(E^t0e z5f&Q7>!-2ROh?r?+bZp@b8A5m+1Ools(cKjT}>zqEK6Y-;EV|Ppv|YmqONBNBQj$! zjkqpWap~5Bxi4(3o&b5CMia7pBUPZ0eN0N$sxNf_&%|3VZ7zJ8(_!kZ8C+^Y+Vfjl zdT-jG=iqH25?&Vk4Ge(B!S=sWDsKKq>|$M3eFPx| zF(ozw6DG8Z+I{*R!?os_Zp$XLS*=3d9NhMa12zkvpjTas3gS0W-+=12tx@2l`}Wcv zc)CcE=G`^kFnalFAA;avh^-)Q666*RCE3fWx5tvdj2L;9ApynnXw%OCK|sF03I$*d z7eB_-CE$N#J?p1JnJkZ-hdbzAFEr5T!}i`!`3rG2PS7MJ{+dfLCkUqoE`V;v$$hTk zk05f@T76mDU%Jv1i8cX1(|dm~MqtQf96ZOJo#+6D~ zduK96aIb3=okszdfLfu4w9dN8<1pM1%?%UNA;?~LxzbV~+wLr9HI#sdbYP7^K;2qL!>8F^~ z`$<;%6)-;t*hy~5Fs~+D=*ZkaXRb(Mosi?3C8Qp0*71dar{p^Y+PP03^nmTV=(;Op z2hyCWfezwgtHuijZ}Qe%!IeQdDcQ#MtFa957RJeRK|!RtNhuL`T45+N?&y1x{@;F- zHKmyFFI1}S9^1Z>8sjswlngYKB%-E*r;5n`_ao1S{ZU(7yWs0<#MET4IFXp|V)ANN z(n2scTPn>RgDL8|Kp7tY6N8N@FwiZ&)-oXopH08yV`4T#>WOQaYAc4M$4vdD>!TC%-7HPR7!GzVD2>3kZ^1NJT1m<^&q zwbF$rvk*S2@N>QE3sNI-cM>j8!q6jOm@4$!H}iqaF9;oAt!JXs$f7@LmYhwfoFHX> zRJ2_xxa%DDVEv#8slG`Q4`5EBN^8IV-I0YDybSdCVq(Q=RN^au?_x`3Mt*3S|T!;M5fH$%PVCfIV0;V4k?(PN!N? zzzoj%O|VZ4YLsAylilf~y?3{?xkd5gguY?}Aazl3D`L`UdMo7EL(u17el_~B%SRX< zQwf0N;vng7T`|#qslQpAfE#{B?f`c^hs+QB`k9Nw4CEY^0+a4q%f+*9a!(Sqgru}?-0qeBkT4XyU!eswH125Ii7CTLyP64v8 zaNkbU$g4*rFGCx9x_*5uJD3uhBM~R;+C+GEL0-}=R#3TUtf5+!2aJa*Sg=pKE#TUW z!hB}&hd1H!*&{661=tpqc}ip{2)=}AQA7*1yQ`gRdMB!2yauM}Q?jrZ@*<;24!%OB2_oivHm z3>)gCkdv%#=6QqCYNodmdH08l(tpg|Z9rT>(;GqK191`sj0ahX_=eH$)>Z2xY`=bg z{u(7g@tK2>tCkxHPWtU2ohx2-z9R%rk5xH9c|f+bU)x8gu*mYtwV6I%&Ya@SQ3EGZ zZK9VZ!P3#^+Z{!1F&yNlw}>}8VIB^yM$6YH){!Z9aKkL*Z-b!5W+2k~I=*)rZqdnV z|6<>pHIhe`M#PfCVY|rl+R0#*8hMQ}g!Yp1NW1NyPU8OTSGE81Eg(fQZCaJnPH=QI zQho3E^?oof^ll0H1v-C+x=Z)VO*j+Z92`CdA)LzvqBG>Lc$cTdC&T#YF8Gd^QU}8@ z`{mfiB9Q%-VJ~*vs=J8pnUH=0=T+Tg(L9(ieq&|vrG$lJ8ARHalD2hyH9u$qIlvaB zdi{5$&nm+B)2a-#4P0n^ngrx~d;?cxES76m41I5aeXSwpxr+kW@Bom9t&sB@>71#| zqM^WBi)*Xkrp8mK(fTAS-G`eeOB4$1kU1k)Uf>Q;pKeZA53<8C>XvU@Q8N&cf{n;O zVMClZAOX_LOSjXeVIg3szAWUxzh==%;YORUE;p))Oed{>41XtLOU2=bVt-qqbepu zMyB`7!9RbX&blLF6pgJCOnJY6zq=#pqoCX%Lrw_7Pg%4~{Ui{2qtxSI8ua%96BlM= z2W8oOp#WI;_OvLIHYgN1pjkVYuQ!__`&e5p*>*# zwaTwbEMD*A6MVNTq}#WMS+HUJ7*tU-K;PwC{(q=F+Tm{^uMvuM+6ZAr*Epqg9AGKiC`)9 z`EY>YYZJKLNe7THv_sIi@i=>v+sv_{b~dVc4eZ#zVw3h za`aYah2I2%TdyowQ~voR(*ddfJvl3r9z%sZ*P{9rYc1&T&T{kfJxpiK=Z%Is1KSmQpe8K!0cRn(?= z(K|nJL|nU4rdBQVhq|e{fWNu|I|LHYQ&!J!y;_|irS`LUn!A*o5p>E(Cu|*U31NTy zQG(D)S2v*R#*R06Ae?`wL|~5+Lp$5oIeUsLn;TD)d*Pb?{Wsi zrU@+4Zi)Ht+P-g zN{tdE<4#v1zhq$5Ka#Dlqmg}UJV(GZ$Ar_A*}{9~-IaP@c1%=bP2|a+{7g$?ct)pe zXNBiq=9q6CA+YDJK3hleC;H`s?1QnQY@u`sq*b={85l;-gggKeZ_Ky1GMDix1E4KM zgTzI7jEs?K9})TTj=}JB*7oZhq+a};DBHc2;IL?P!Cn%EGo6Q?BWq*4gn`VF* z3+|(ou}UplMBW$QP|SV4F}-t_0!ft}=)BsU_KJeyVI*7DzIseXz&Rjvl4&%&#ewn#A%?SWh^& zi&^?YSkQ_=v%`T7sjFu&PYsWL84+Q)1u)T)#4%Z0q>^BrIH|g@NwiT^fsji62{(a1@{#m;Mu`okBGhh~p+x@?n$N zaS2Z}2r^t8J6msY77OrXzQVJmQ8J0}fEmHL-T0{^6)dzYbNhG=P~QGKZL)_pCFMDo zemBjuSU>Jew}_c!3GtGVIJ2%aXmp;3yy*TpH3lFep>NKMrcXq=0+=6p>zA-ACN#$* zS(Xe{iwQ2>gtS}^xu9w>lBrd$JWB`nQywbx;&5THy<6es?a=+SzQiF^M86gr&yw=9;rGHJM^)OwpNvo#$=e}W^^k;#C>&AaoOcQ(L`QQI0 z?}9@j`;rlQiOh#cmk12Vh-S~#+f!A7BebH|RS98ZtkxbG&)Kw#oS<5h`uHe$_eRIF zrw-gydIiG%n zm(JgbhC^F{HB~;^1p4ByGfdmx{j$jsfbnC)`?2)dveBQXK683EiLojAW(+2CMGB0= znRJKP78)hLTlb_TqV*!{VsXf8n-A+bA%5G6@X?qU`c+w9nsC3ji!%_RmH#gV#&axm zU}Y}-~)4{v4pxr{tl9N z?OkQ=V4~Tw=2SFxUF*DKF?PLR0%u{ zZVQHC?Cq{i+_@?ab;qD#1p({YJx|5bE_LiP__9zH=-lNZXT=sph+9Ib$)Chi#Hfo+ zRsh3@kIyTrHnE;*9qgB8Me=a3aRxoN*S|8Gfw#Vn_nnMFQY9oG^X=*JWNZ^oHNdw> zN9`(Jv0Y^7*M;nDk!IfVp96|+>JZ{9lG_5B;lCx8{qA5-LHDWOz`dpb9tTUy)XYk| zKVGL3fX!cd;xe_GR8{*GvnoBWNdOFle7+D^hINm9Vv4{)5?*wK;ve!OpiUfzlUc~eKEgxqp)v|6dXU~ihQHYVSAn85Zfq7*RH2Yx z%#QT(mI#I9hJ5lE)AeL?y=UTtSm>vt6z+xqiep)OwYJ7O4joB+C|q;P{BZH;cA}2K zX}%IzZ;$X!Q^1mfVwAPb99==S$g*o9QDL>f=izLv_6SXi;KQyCW|lK5JyXDi+3R%X zGYRPSj`8E(3Wd+*%miEiT_>dqfyrW(kxU~IRn$@zI()ruXKm6nSEx$x zX?pQ?M_7~L1ACli(r==xu6=<(!j$)v5i79%AD2=K%_Sc=&+<||Q>0W7vle*YMGhRB zdF4IuS&FnXzwT3qGq5rUF~wrG4YFh+>ri6_YJ#8TgUzGHrDcatfpZw-O)>dP?F(as zWq9Grx8tKDB6=Y=rHQv~q;d?SToKkHd$BM#hlIcsr){f9y_b?6Ph7VBuuzjlIEgNC zWX_%@p3sFTtfbu)TO)pOi3_E@3?;;cAT^`O0%g%M?p!#xh*dZ!A_Y3h3cazrx~QA- z`v7FtZd^+vtMQK`dL^l_hyRAMMLgq4%Wj*I$9>ASTS~&U#513uzMrM!#}qdPHsWL! zdQ|=6RwFVi&L{X@R-xonG9*4h2Q*VlkKtO{wC72BFc8(Lwqxfi2cB5Kh4k$NEJI3s6YKZ&HJj zZ+)PR&Bcbny^3ptp$18{C!}a1CEL5OH=4mq4XqC&#d->`2BP@Pkmxg;+o#Y4BN-qPg?{F3 z9`+2Tw~05_J()1qnGgVpWT2?fLe&$CKw##1%p{OkC#cMwqq|4ec?!SY5m;Cj(ay@q z>FGA7OO|b{4nG-;81mR80?mq18L|QTQrzcZv#gb^N!kVhlDc887GhU$8bfGw1Jk0c z(Zd=DvYo;H^JMz}*m5MQFr;VXTlbF%W}~qp&d?cUh2*Dh!>&83ve(`REt~I(HK(at z?2259`0T-lSa*&!!VByPinkGkxo36Cz6>T&QQP`W2W`wEs+}9KfPFHbd`P~pk0 zc+r8v@^%GPY&;G&`Kn6(%a*k3NQ-wv+1N^xrPUG^NG6dQb5sYF#E4f*fNSfSqnn*V zIJ9v_Zy|7C6RWV+T|qecVgKkeXw3CHEM&xMmJS+#Bt)_*QnjPT3yFGlnBsp}6&x zZli-voE{C*?0<2OciaC@Sy-fdQ0=B8l**(=$(dYw`>zGDtG`ey`AIE0i|wCw_DoZl z<%L6QrLY`0_{I+QY7dPtFL@O_wsM6fdq4yoSNMXy(wtLDT&M@lv#Qc6_D-?QU)Xxb zenpeSd1p`UPLwAO(!kbfzbT`B6gW%aika&fP~}cg$ZEkEdY!#NK|c7@@E_{I4$ zQL>Wc@j8V1n2=3B3xOcC$;e6>2!)i!q7mcoL9cyziirtab!S8mPaf%#_e#&N-QzqIO7Z?} z=5*yBof3;sxWPX=X;dv)HMSnNeR8dre&^ax#K~`w3qOH$3c3&OsJRLduV`NZ9JRkM zFFU~^Q|?&nvLn08xL}aZTVdA8HQZf@9re!AbK!A1ROMw6A{~j<@O$@nHSQQAWt~21 zDJ^2`eXnQ#smbc&rwREl95_+D7I`FaBI1e?CA#CDa!D89d)nXW$vVgDc{&37H}xvB zz-iTuNlX8VRy$Td6r1krpFg=N15~Yjuv7*eG-6MOtq)qZo6BU_gClD>=zV^oPN5un zx{=5w+X~l~H;%-fKA-~_Rj+W_3PeEYOXI35w>(uyh96RJ3=u~Y+ZJ<*qp3`bSV}G; z%OqNoCtI6X8_a+dX++2zC9@4wFXU^J&$TZKsu40aRO}py0^G-uz&h|?4JvmVaUr+c zl;F;G6uV3jA^36w4I~hH@Hkto65W!6%R5cVN8fwJSgo&1Me_sFoZr##=I45ASN-ST zMGHNrdH<5b-`=r-5wtdNv;0$Jp5-To^1hqV!!E~GPDpv^!FD=$0<1XYz(rW(tShOs^t(M@0k9m{$4MPvduW%a?9dzDF1Cqm*5qxcT|otBOJcLKt>Rq*B7p{NV{emXs9@`4 zdWg>cBA=&U0KjaA(Sv=}Pgh?Pyhwj0Q`vT4F=Ndw9)$8YY1t<#@_OG# z!l%etrP3aKG(I1H0H>QO?}~%t&uu;xr;T_+0NH@wh-ZJ{%dz;?fKL5A>s9A(dhkLP z3wa0nI)0W!G4-kt0|`049rvx=*BuSKF0I`ms8RLL(HM}tjdSCpbW=w4nR5E?KzVuP zC?#*+{2kJcYo_!i--qPM#w52PVeRzm{gP=F2R-*;rMPYiQ9X@iI&HBh2PXBkb z>zY1BQ@?zN+mrHfQ^l^0+T@o?3#6*R)S2;0dF_Y$I)_+JLngJ^rH%E>S@nriiM>HJ z9D6aVQ%axmmQ`yY`(r3V(fY(DhiH4j&c4Pan46i93b6nD!E+ely{#uQFcDw(IJ{gW z_=0%{N>Em%>6Qt+5i?MVanR|NQ-NhXQSBrqgg{8-Yl}2ZK~fI)cVf@(i%(?byd!;! zW%>YeK+l*~&eqlQCVitz++TmoGfePd>*6kB94&dKu&*G)VX8*6+zj@R_;;U>Q{k*K z1TK*n@OU<#pFhiS@E{1@OqY678jv(QZH`>zMxql>sg4`lay)t9vWJN<7kkol)4)_! zEE214)4|mRVL4&JjJ(p**E-Ll8AR?FXdt0WcDhXAy3493XG6Q6KhK~pUkY_g@Hvj* zj9tix!qSy4xlEJ0uP8jXd#Jtfud&%MBqJ$s}$bDz?wD7fOiKcf=2|Ve32e-5)&BJUJe>t&P6Zh6&J| zQy*;}B;v6XxdB1^ZMOaR9a3L^1{a@SWxIh>k9#U|%*7cjcX59jl!7O^PN@XP)6@p% z&AR;My?}+n=CuiOmjr)Hkc8(XFb*yb((aH$<57Z1k+NskJSv>$Jxl{xN0jGLijJEj7mu>pl@%!FVmwWoRXJ1*YO87vBb{ zA?ev~7P1!h28`jylzzNwD)qy?}*GcssQpNtu4e1SCtxAkjdLw#w zLoeu8pZrM@K5FwmW~9yzv#`19NZkNdH4bZR_2AxBe0{R#ET2Z)Sq0+Uc-P&D{Wequ z^#Z{5QKNK!C$I;Jir3q&(sib!$mA(Ef_9EX?5w`QVfg1<-&KffG7&qvOMZR%biOo5 z$^m4Nj!NO~g|6SD-{>=G!Tna(-RZmTz_-@W!Mb7%vscq_qdI8hpEu`00NWJ4`F77k z@^3q*BEG_RUg2+U&r{cn`7ssBQYD}E?nkzx0$k0iO6-ay5+{08@l2fQ^4$w1y>eCj z6C>T*zU95)SzlPCxsY?r&HXhyn3JWqov8}ih2H}}WXrG_-?N}%v^#!AD$`YhW zgf?03aTfc($Zd6ZK}^fsVN^N)lk8>eYw6tp?QJ7;|Bz8LO@JNt@T?{<5>S3xjUIWz zgaurIPE6+v=6a_@@p`NAN_i1aVFI?_^mw}taAPjP!OP`z3*gqnsmC)P_U6@jNTVGh zcqGtN?{uGgUsXhaGO zD)tI=ekl!%6`hB%h=IawDjqz1G9c96NhA@+@uC!gG2mpBfNjlVnoFxUIOYxWmbmw5 zMH^R3vvE(ueIQS+Qx$o82ZwkSzHQz!nbCB5M7h~;Yff{({(_aHB^BI7fZj4EwEsQY zDSGr=fy+Q9w=Ih53qwj*M?7@qBAs?llnS%omyfF3X)gqdsGK5GyNFKv@z0%&BS_QvWoH)6;`$Op7el>FTb2rC87=~rjrW*Wl0Pr_j7=cqP< zyCi{V6^+Zn5q7ykY!x5nmWZu-=i{h@h`p##yVP4@*E% zkCH+UmrT2U7rvXw)!*)Qxv3M~y}XnRxq_zO=WgZV%cZkwsAukSxUvW_Tj9gvjghF$XV zPzutl6f2+6yChf-0d!bK?Dt3-i=i2UUp;(S5NBB4ViAKN=fO6^TI~py2K0VC3}xJ> zmK-PXZ&*Badh}I|r)t0c6&$Be?e|iNK5%0rjD#l46;+%RaKbAo8WzFq0`)UnqZ#Q@GtBr&O0go^6b+Mlm_rp&> z@kv~mjkbbHK9$r23)0QhZgK_I;J7QdSYw&&wV?7w?xq$Ed2>B3QiBkjn(Erq9xZ8c z){Kyg#nTk@0Zwv9Xh*}jQ@vS*Jfu!S35CzPjG=vId$=26d=~as%39f~8)T#8@PEbX zq_idzq*#IR3g>!kV%(fgB7To!fn(+R-u71z>;;*3HHfL6>sch#zEZE9a-PLsxouT2 zt(SdpX{d%dNsPfxs{EjUPMUN?=~VIMHp)1NH(a29jAp8KsgzTJsdssG3p&lGBrG(M z5OMv980<3b1c7%3FZsKSXQ`8bwSFLK1NpbEFk<9cbWiY`vA19R62Nuj^#1wnM5S$G z_SO-(GlX?jkoy|cu@Kr~>huFKp@(h>LwBUU)S9itnNb#5#_B8D!k_h6)rDy@o~9ia zyxGELr{~xc<@1V#i^@~qF4xO!2z~#8(BY6|(ohL$zd@A!XY6K>$_D(lZM54`TvA>4 zr!6gTOM%0L!?V7DLm(^cz8a}13j_L~SAKu}_Ajw(;f_Yc!)+d1|LSQTPU6bl!F7Yh zhqTchN>4Fnn9Ru&afT*6Esq|kb zKhJDw=M^|{bUvH?rR0JagM5eM%c_4M1LT)@^J;riD-rx1&3ZxaKwny)$Aek13wpng zKX$|k-noI|2o%Zj)4Jv8vK=CjoPma*{z%4JW{%C9BL1zlTbTdc8JY#cpTUO}>@SiQ z*MITFe_$1C4KJ^#qLLwapRvwx=B#~)lq%rve|rn?0%@PSO^47$b40ej31^=^RB1g_ z_?^~Dg2+D>e1-FH5#q*=Y)UkY!y6GHA-yQhcR7J1QDaddC|{k?D8gE*GZnG^-LU8D zmns^VDRbEAQj+|OK(oC+ce46)sWa=>2{>**RZ2hP$Zw{vv5kc z{c9XJ^~|9HBDXZJ(-#D96@Zu6bN``GBL9ADg2Uqi^~CkzbJ(F4hx$^S_${gpgTa!l z3xc4r;Y&x+80#yVVC@fg7s(=rn68<&GXNS5P;_91^ds?|0v!2Cu%kH9{M>INshs{3 zo_ebR(OdKy6{<)_WJhDPnatGFL<6th5D)N*j3s*M8M68h4 z1Miz5Iayatv_Z3_UP(7u)TH#OK$&3n`#ANn_UHS=Q|7eL%@K*Q_IVeJKl)hCqqP8X z-zx}R8BKt8$i`?eFs}v;9m^KDuK8{|;1)Qx)wlCJvbQSiLvPv^;#a!lNR})sAG3Pi z`&C-tv1`iw-~VElhZ{xSoTAt6xi3}hqru$m=eT<8jL1FG+*gjqawVDjhn`$9)HSkM znldmo_Oy(vlmiX@-_-WKtv1sjuBsjp;YQ+%-5`krkKBUG)w$CT@p1hr!ig|<4gI*ncqN)72|sQK{89H)4nz8N#2 zveCCXce^ikz2~kKmYebppQ)|!T)`D9Feb1&*W1#swdSvL#Dhe>m5<@nB+O=kz;K2Zd`qZ=0CWM{VL(*&Lt5$Z~985Rt>!J}`X_0E^|zuQx0p>_6CE_f5d8t<4=@7Xt` z+&u!h>Cwh8pn5PxOn7Fg(nP&vsj~wVuzR-0N23Xdx6spZ&5O2gwwuU>F!-Io)2)U+l#w4s@c*aCzr5PkE_D{#yL4 zhG8!ckJ>RcYNiPRX1V>*YbgfYP5nP-e2unNp7InHciGjfkk{9CW&&!9v%wEmZE(TX zQ#}Cns3kD5K>NvaYyR-r@fEc3^1Opo(<>l58%s!83m;fBHYgV9M1iwx!n~8qdeXk!txF*MVy<*L)w?A1~FY z_QT?F;uen+S~AYIy-|&-2{RHr7e{&;s9)$$c##s>BPxR%Pb-?sMu*{f9G!~1F~~vJ zHKrQhLaF;+Rt@@VyLj@T>?T~_qlYpST6rm52&$oKabyS>MHYrJC?~~r!Dsx=@4HO& z%BFM+qaTvM=i7Nv^ZIrZsEx_gd=-Jd}2W$d={GGH=?Drsv|x3 zEr8#yvHbU>w1P{kTcs5aE=V-6=}#REnyfJNF^HG7s3alTpo_dv$1|w7&?X%r?(QP&M>IHBB|yT@>3w_GAhL2;RI8 zjP{?^1Gpt0@4;&(2{lwNon3v8-QU!*g-Y_=4t~n<8a{#J=wXR;IT}gb*^2jjgTnnh zSv;f~4;u2LTY?w&P!S8M>)X<|L5p-zIYsVYrGU^NJfnWfl=8HrzoRG z_mCr~a5QL+c5<0(mr`nYF?#&{34&u~fIFQ8NUc-C63FNY=x2uu?s>pbA?08}`XA%S z?ADCT($K-6Z-vR}@HYgBb`_>svk#`tP=La8)~zx(KdCd)veF&Nh0rx zC%9=U7?Zkp|4uLZM(bvj-aV`fD4%Y+07w*FVHUr75lOY$yQX+a{PwQydn`j{sIh-8 zSBs^^Xh;Big!ncI8v zUO1JR)Ru!i>+=9y-NB*q1tORqniQ#*kveuk7974(qu271d;b$KnYq3bcuM8*8{`(4 zfMNTq*3Q73W4oD6Au9ZBY)l3D{uW2)#Q0cN2e`$lHYYvc2>~?S!43M4=c8ylmwwiC zft!{fsDDYgt0S8yW$`2kKZHkrBytPuQR~?|lXX544@fd)KWVzuDSTMZlm^XCr2eOw zfffzE_9H_1aP*&%K>Lu_R_nY!rI6iqxre}cn2Q!fJ}W+o|8hURN%Ve#F)u79Hqml_ zfG5ZRF9}&&O{{D`;b8s;WSB3_koLSaScqPgpRko38tsfFYV^-4Ac}J*6JKj2JDR!} zkSLJP;lcN|jYwZJt|{N+jNi;#tqbng>Tw43SIHydDe5iKXRdLj?mlkp+F%O`H-rfG zBD#x`<^xYhjRE=B6_}U8w)CoL6VpbY`>AI2mga*`h>i8qL#iJ4>WVW@HyV26TLYeV zVp)dVc+`J@Hc$MXv^xpV%=Or_7I`Kx_?oaVB-n|HA61b;P~KTdRyy((_5wJ?VjI?v z@&FfF?M%8kSYR`8u7z!8@Pe?jHe^G0pOYP@}nfgEWXvagKTaOGAdRQzaox za&s;uGW!V#d{K@HVtdHncrq&SZ@1+^C#Sh0UG@A+#~jL29`E-Nqz0k}`y(&iXZmna zD`><(+v_?gp%{G2DZdWkQOft~X_mK8Lreg)x&Ghs2S8t?${7xqPR`7TG3E9lcB^N$ zqjOLZ7!HGr1=3Iz>vc+77zG)@P~@Z##kV=~SNor2EbDV#;H|F2wncZ>q}>O?uKPz~ zuZ7xmskJKwp(9T3KdGeDp`|{)JI$K*$%rAFz+C(Kq`~@(j=4jS{}(yqT4K(0ZWQ6+CJ25RA>^E|EK8y3unqGgb9ycJ zFSR&S(Ma_?2q2MaM}oiHPqQr)3<> z86f+blDgyIg^Vl=kHbyCGOaD=A)rNN(?0wly#uWuj@t&t@$QVrB^)|CGNZkX&N-jk zI6Gs``QkYEF~JXx+TotvYn;6o#0!~!ePgU0mtQh0>JTTSx>56GdR1t2Nt`lw=${TA}c5+V|=THQ1x?Xc9!of-2^8w7X z{KDv|d}Ea%zMcPvt2Oz%wV93V(qz(7;uAO&A)`U69SbUSYL@H>QlT_VbY6IvfLO!c z{jC_?z&+)>1_G9H?Y*R(UU*jftzA>;$Y#C~VQfp*UTEW_LW@X^HiY`FYV ztRvbV9UX`SM~|=xl6UF0u%80Tx`DhflnA_iqg1a8LAplU#|20&E)am#@!e`}v{`gA zJ%JK!YOj06Tc&!5nYFP}w9k~1+q2i|m)Lk$@N3owtc`KSCUy+u?=RSHWmkVT%s;!j zXIS#v8EfCM2Lk)9mOg#e(I*{d<)~o-UTndxD6waV2C@`&_?~Y04x}v(qR>!oHmPTGpos1p_rt=z^b(5csc+d)#KlO zxYk$4=>_L78UHSKi!Zcx2D%u^tIEx;*8&O(%Gc1MKq65mf1FIfSnwA3NzOl>>OJ|v z&q>j5Zl1hMCn%*UeqCzrm?Za;)KqE=&VOD;1JqSt?m?8E1TU!^8ApG%asYg6L5#oS zcf$OHJn{bIr%YUji|!}F63MtLGoh@=Y#)?RrX1bsGoONER=DbKoZfh#y)B)q^6H= zY-smZDVQrjaFl<$@rmM?J0X*yF$Skpd)kU>X|O)nc_a^N`MjVDD;=5WNf9R`k(3 zO0FPBo(92}E^sM-wMEn5TdPk1egW5iE%jSR+JZOB8oj`M*=PaHPG(KYf{V#+`ICA8 z)agAD$t~B2WCh*(2-Z2r>V!~pI#JupNiw;io|=z$Gy;Q~mc`cTAw_r=X(??YA-pT5 zZf8@o<&+z`EXG@fAd|#{!(Ma$;E~>kYylv49ObS6?nkbd`Tj(OoQ!sE!ym@$C||HP z$be9BAvbqWfX2Sf3Hy}tz@1xq+!83%}spRPw0cYb?JClrl z(O6~-_8IP?(N~QJ@8&B4_T7S~aOvq*lf9K$#22Jv?GZ%oOpdfq8>Ga=%eT+>kh*xo z=4E|05l-~d3+S1UfaLyVajrN4UvSE+vUOw&<+SV_H3}Z<61HAY^wD+_{i_eV#%1bQn!*@$|qV;@n%XP_=h6Uy*6FH18bB{{@ew=%{FT^kWb*(?cN* z4kkEw5pPuLGQd61|CyRka1%M|33#l(DO`!cQ6>fzjgHtcL>P?J>y{B*ZM5DcPTTKw zQz5wuJ*^Ry7`kMyvwi4Yc4tzT!O#-(wUJ+E--Jvkc z#ki=9JgGmxC7)ZI;?>X+dhDBq3}VY=$h+(1&hZtXVa8zh5>}AAe=9NalO~lq9GBU& zv6^oF3ixX;N1O5Sm9^0&$@kux z9B#Hd_Q$9p8N9HQWR;lvudCu~M6tmCG#SjE0|_;~uLh4dFfRr=R6x+YsKRJOJ|On7 zFd3Yq!~bZLJ%%xfnyi6s8O<#GSsNwtE}q+&NZ3HB{de?<18Lb4w?6XA9M9V=P(aQx zG$*p%p0z-C9VbZgKGdzxQ=Qc3x^t{%FbXEBut+Qj%)6hsXo3_PDHa|-LF0dC%7to2 z7?MYeaFjk&_DJgF%Y4vq(lH`L*P0mLTe^>6psem;7LnloYYyk%g6V1AmjyR7E{yl0 zkMspoN^lj6x}NiO|MFYi(S8}7zWAXYx`c3UA{QCzv({InOOt0_XKRBu02AX#GdK$q zPzMfBE#89km8BTl8j!kXxtNsh4ZEfh{60>?BSSE_cjgOqBE9ob(&VqlwmX`Oqmnq* zSvV^^HCSbR`2W_lS=tk?#7nSvclm8zJ4tec+%{uZ3fW{V`argQB*uuK-=qJ*d!y*uY@7&Z;Qa>X9h+P%kR2^dwAh?ry2sH2tWEe+f;qdVwCI(-PHsBOw^Qd-i_X zg|^;E8oII6+H8Q_)~KsM+$|J+>6u~T4>59OT>(8ir`}-PK-yg7YP7oYk&eUUL^(`6^Ed{|r9ptoR0=9ZZI_m@9JwYoqb zWPhE(c&p7cN_ZjwP>Hi(LTj+Ak)Qo=Uh#7f7h~z==4lhB$zRI-q za=zE|16sLi^LdGkdUDd*vz7+q>(d&eLh>H89%A;_{IH72mWkMQN<}HbB(gm$t%;kc zlpGUO{sC zzi6=(==K&s7M^ia$J&3qQbRMEq0pV6(EE_Azt}s%U2Djmj(<*5sj2ix|5y=Y5N?D# z@+iJALj<5ptl)nyJk!2xnl)&xea@BUH;(tS=A&*zlSjRA3U6xWts(U~q{v^B55$q~ zA}wp9oLaascfgzZSSBz{8jA|ygxKp}3dpaaR*}6wKvwR7WBY^WB z4WbKC!kd2K8IAmblMk_&EddvazFW!rXqgH45$HwIZxrz`DY;obXA4+9-eXu)YU<_| z-;>2tp@ZV`fz_fUdI$H`OkPK9;f`wurElrn6uA9ZYDPzIon`rPx^mAx#Pv4{lIqN& zz2*Ic^pn|-8@Jk%e&&H~URurHM9Mo4TA*74frAq&=UO!Tp#U3z=STTW4K3KwDFCW3 z=%b5X7OBy;WI`OLB)}#y;w=Q4gZfs{FK;(akA{P;Qy6N-(viEpgr7=PD>|)=o>uQA zXDm2mm#;fBzgEJtS@Db+_T?mT{jLY;>eb-SVsXSO=nsmmwcMMZP=>Hs$kBwi2m||g ze% z9u_bVvgDX;h<>)w)grhg;&uS+yl}q?C%B8!3ahiC%0w1GdXqA2yNYO}a1B zaQJ4Kj;D_(JKUJr-^J;tg#6_^X6am`nrZ@z8R5Y>C?*27!?{k6$vT>LoiOh3xmyZC zEN(mU>f~A&byFZ}?|`4mj)kdkBVIFL`OV&2S|D@FFKK%8OP%*ccX{%2MgG(N?89wP zcDbOwXR`J1&VSCogM%zQCO)^f_OHMzC7s~XJpH~qOgY{STXe|=dn-8MMHi<+ed(%k zta4bdEb-ievy-Yn9;Eo47@Kr`-2V{^xN&5f^JYh%2%FWE?;jpy?}v?FPT!{QkRPb@ zIzDH-;~r>AqsL8mBLW!nIlNspvprKPkuyDpAClhazV6_%EIO-#_#jv6@GPEC1UB-b zIY8^WDre?xs6Kgp0Y&}$IV)*-7g?K)48tG>6ME6YLDwoqd>Knj?@8Df$3B5+b${HV zq!-jwhi~E65x)LMlRo`8M#N#x=U<%{2Or*)3*z@$IlcobF;BDmZ>C$j_w#brG|X#9 zG(_r;Bsna+3-S4yY|x@9N*3MA7$HgRPE6(TiQd2!%|&(vBHu<-2>^S|y}xpDJQ3 zms^_M+;Lzcw32HpENM#urM+3!(L^^gtd?%@9f{3ZLewH;Wc^weGe&U2W-d7_mP62r zLmWIL{2Lww`E95ZY;gs1p3~{syQn5n&zI^P@$Kaz@^DBF2d-|bo9?g($#?ecAC(N$ z6q4uMKUar!9YHZvlK?|NyuYac78k^E0d1QM?!W!Z^s2{RPsHvl>^OK8xtPBZcwH9% zZ2hcDNdIGz2SL&Y<=mZWT2QGJ4)xlwmr~Zhhm2K8Y`3%!FwL()%cZ1qxe`<*q-1K8pzRnvkH?iPsTML5V=Fq$R8Mz9$FGzJDM(@B0;&6)gAeMm-C#T|iW@u&@o z(u(%1z316l@CdOy)}`;MtS>M_oXBG9kI}8_%6?+ab|Blz9vGX|K?oL30)QGFO_GH% z>}Tu3`D;?_W$4xZkA_4VW1{-D!agFNM2H(8QmIa*bh8@y3!lEeR9A4rbmK`5I6 zkL`Cd(sSmgver{)+@jmN`Kg~Xb_qQmmUbT#$0?<p~(7ONal!7wi0$~GS@ggsAA>!TM+s2cs`?v*sV6Rlwnb%s` zte9q|s2h@7P4#(tl$7<~i3YAztU6Vrv!_)z4sZOiQf`OA;%BvorjowpS-A0zi4g_W zUh`m(ndM`av7D3YnCRR=MjU*8=a`9omEV&cqJ|n+1Zfi`bA@&8k3>iIZ8NqDmhd|w zqM8%5RPV!pLTLl}25-5)tb6ODo&X#0DKA0yfWN6Z1xM!3{K_clwTcQlg1*+=jf6J# z47!5{h+yx8>#yXk9BdSaX<$T&VF#j=`eUWtQInxS2@!`@W+PQt+@IfdP{f<${)rau z^9=Xa4>M~b0xgliCWqxJ%P!1>Clc64y!MBxKc`_nXnuf@DaA%2zT_`)ULb%U{=XZ@ zz~|l~g80YTMO1vXdM?{E*nx}lq&E{pP*40Q%dIHwM$By&IqJmOcb1jkU?s}cIpSRN zOs;D1lygXh@pm-x%0P?gc6J4gC43WqTFPJ$1YJoE!12x ztVVwgDGm1`iQteaT#3UR5zIi8X7eQUOiet`e;rHiH_-aQQu1l z5Qq1ty?`L^?iDx;f?@tQ=uu?O7wsa?&Mon9GqVq{9pk4+3T47t{W-1N`AvN6lgCw& zeAT9YMaH$9Ni#B}=$+iLc{wE`rN~dHwPndYy@QF{WKVW-J2*OtnMOZ_HlBh2cF-8v zby1E*tr=P58Phso2${$YqNS-SB?#tkyK!-c&ExNKQU3>ZY~w<#qlyB3IM^;`H?1CA9creKWbiFsvFw(tNfXc>N7Y)v(s@_R~TJJHrf9imy-hmFSw)7_-d+IMmqz&`U`Ti63C zs*zECy}<+v(qVr}Y9ZpujC+!qs+c5&nWycWU%K4fG3zLGOoG37tdlD5rWdVrr29v} z!=DqeWR_OM5PapOa%W;sij8$hi6TS8wm~sM8NEV3S4V5v0X7+SiCkY1N+PO&Z=>VU zAjuR_li=>CW+R6bUZYWQurL2~ryxdFRuVj43D#)Z(hvk@t`3V7vK`$S1MXIZH5TmS z{zohi65nch(iW-=XbJA(S*K1d@$!$Ewi7D38-%om>e`VBMe5@_iM!ytqdnceAfh{{ zN80*F>@7i-QyZkGIbfP?;l5q7VDuIia4=){zrgym8IOc5E)2-*!`7)C=PxiTBy(1@ z$uqTgP~~={tFob3_~68bZT3#xI$+srpg&}Hfj;DNDjQ<}+It>)#_7!E6E;xRi1Tpg zv{WIuKk5d3uVXES5NzF22!jmpVo&U_D1KMhX~!Q_Rgt`Rwu{D^y39&3>=8{Px2J`)$HeNB`5jbqVeQ0hBE90g{GcI7- zm)vD6Yi0977L&|nx8-hIgO}r&;qMNOnBi{Iv9Pv5{sb7PjDYNodteONn2?!L{+d!A zKc<8kLx#GtsuM`e)%b(0$ke~Xg@kQ*juBi~yvtgN64QceG-#TU3% z*(#jQ=nYryP+>%2dxk*O#CttHm?7CaoUmnoykE^z4ab{=U3@V&>HH+qU+Y|2>-N9} z`L-nGeUwu*Z(;UtwT1jr+EcDhVMalMPv}ZK@kD)UZ%qxZ`G}$7L{pn(tSwD8dm{ly z<*Geofipb09873+jH2$!R8J7hs3b5gs`ayu4J!&4$H!E^B*92UV?;$v8Qhh>L^3WL zd}`Nsn)EsI&S$Mw9yve?X=$_H?sz1Z{v|ei(Edn;~H%T+sq`nWE-LG^wYRIQl@Pw+4FEy;ypV#U_?f;J+t$0_Uu6+weVjqZk|33!M3rxjged@q+nUOTsyM=Hn?gNTd}2iD#~)2mS5tzr_hsgHKwsmREyA-eRN`dh!; zsWhm20WB<}#FzAsh!4R2B6Z8npSp~})@u#bk}5%H3&MRPJxD{TY58Ugnd=)XW;)&w z%>7D*I=+`L?wK{ZHN@29wh>fi-0o6c#RbhE_}^O`xZ&!PQ4aZ`LRbQ$HdNZ z;yfJC~`2u zrs#T6XA9-hnJ=Ijh z-_6DdbjbEsh6hd~96x22?}^?>5)>XH6t>9yTrs`q?h#U)@lErnjjX!DY0%?1Ws2w+ zpZU2BS%2=#mnx>{*D${YY?i`_eSrK7lCR5z7Os0WA;6&bw#(*+Ej-{ku7WYElvv-L zZwWpxU%z-iN9LaqUR0KmP~23WwIJ3j#Rsj>YKdRdK6lQgA38hwP1O0z+Ptg|d~!^r zx4_1EZ|mnx|B4L*RKS2#(IJT4D)M?}ERs_YGOu08JVeLUZ97bN(6UPa64^AbHf6N1 z2L7G%U0Og;&Na_o?YkIu)UkR?m%nDL>1>BgaVLkn7l=q(@avN(qo7Kl*ETN;@pWHU zp2ih%ztCIEbowc=w(m%DZ=3F;Wa-<|u$wAvR4DW|ueXJTFcVowot!L1&?q+OF&v;# zPF2p`nBxG;l>y(0*0q6a3!DhVdahAZ5&JZUMZ@U_%ED{tgtV<>E+GpN$#%cxa9iDd zq<1|;t_!(`tBO0>4s;FWFKh5gJ$uwg2F~%oEc=l1oIt&{v@s48a@Z~cvuXJSpVB+} z1Db5FXAe@WMg=?eamsDZHJrcC8MV~s@Q%Uwb>$+e2CD;;WU?@$_J1 zGtTiCtJ>0-vhLYA_!_V1_}SwS;aI%YCJ%k~;1QR0LV(Bd`XBN=y(_%BjK#T;3Btb6_ymfKQKIYxnRf9LF$!5Px$Cox+Ip zo+D^LJZp8C?`Ib}$oH)gGrK70H4DIyC_6m>`bi#iOx96vhGlC3WQ zzy@PZhxEpN!YE6@*)5UA>*&EAm7xM}{5b;4-p9?@|2HhjL1rp|2E#?9K!g@ta#W81 z_J{xG-foVU?&d${ABZ7Bf87e%oFn}UXcRH~82|KS;o7Z(xbtDZiS`g)lIEL2Y%>gE z>ZvLNjW87HTyhQCn#cY8-!-{j`Df=XMiR;YUO{H;pR@0xO?ncj!83G8F?wzo{WY+w z#OMNv#VgVIgC(H`O&wO!f~LmOrv9Wq(?F`n_v-6~&j#$tWz-@O4LxbD85h&}PtoUf z(aXryjcTawd;3p_SitFil0dn(kSD}*gu^$xka;GSsGMj)3<;^}oG1o_4+SXnz-~IA z2cPPu;ofI%QZXcCgq43jsce{ zvwD3+WS$){FmKWfaD%mti5GUHR_5{8)%EGMCKk&iGUNe3q%J3xH;c?_2LDvwQwm6; zV*ex7hy%fWHgB1E3eTBF4O14XTq_>+mQn06n;?p0H#o|ShRl@?6k0@u%7R3(vbr*9 zv~t@WAg;cm*>3MMrbu}XzcsJH-YY6sxz+ywyz*CyCV>L5yFqNQn5e;;pup8;6=8x} zWeda)>twJGYHPpDex$fQaTaJ?qqoG=FJ{x4k7tdKE;js5&2z1>85EV^##2vUt}&=; zQh`tFYLu46BJ?w)xruSVB(iKhS;-p809FajV<#k`n3z`~f>gPBjHmS_`07DBKtUmz z26S2p&O-N1DS!q6j%7t|9Q?wEEIY$7N*(rkm$hn$S5)47f33tE90J<553n839LuhG zBBMg4qRum;u+oFM%t1Onx@BN>e}5v(C_L!Hq6xJ~&%JM;tD?A+)`OIfX<@n*o^Q7w zANDjAMeLDRH>#ZEbzsd1{tjEQIg(#r`p_e88OKjy(yYvKOD!4!i1-&=&vjSW z<$4J#QK=t0<0GC%FKC35Jov@M$fa(_JsIwp)EL-bq4381>Zf+>Qfwc>HsWf~g( z4MLO>w@vrE1?0^_Q;^mVly8h$TsE7$^iW1vRRFBo=jOEt)d&lZdq)@|g~Mwm2=q{j z0@3J33SKzc#BGx!(_swFJ}!e3!e8Qm2WQGAMX5vh{E@6{P!Ztvyyw16&(Nb{M+)^e zcM)7BSgj_|n1WpR=1D9yEOo^Mxx`hry4Y-ui&Eg@fnNNSf^Ao;9SAnMfgNaYXh+>K zM{`; z+TVE5*WK>Ud>n9tv5kPXOKrJof5Tw9P@8Nx#RuZMU=u1G@Lj_G%;H6+#Fj)C`E4Q0 zZpE>3<0BxS?)h5u4CS1G0tdKd=uq35mf2;KNJVFZp1Iwb%8nqwGyc8r`dXWaF^c~L zU(c%~(^4A25r$;&B{BpLPIHyakxu72oEz5|tjMsEj3YOnSQ*sVBiI%Ju=UuHt{K4Z zHu-Ds7(!LU;KA56Z|8A5o(zs*RPBR(BRf5pZ12&66Al6aXN1&9YLsIgyp)C(qgR#_Eu-lco(QvFsr#tmj{pN zHEZwNIFXBg3Y}mBEI=J}k_bEl-onwm>wtws))W9}xa4a_QOH$?bZ1VgmOF`O(3~Pg zzp7_}GLNzf$5<)JpA>M3*HD)NvZcebElOX(#KzP_$Qq8#2Y;+?q_B0Fg2)Zn`Fc3Tup3zY|GCe2v$@pCps%J$wq* z@?KdBI2B8FlfnO99l!>F0`il+z0Nd#Gc4iRr!47H zJHh3|#Fkk}9FJZ}N>={xn7C0-C$}s1E|O2h3SRDILw{HYrdrpWF1Ri!swc_O2gnNJ z&OH5`2EYD9J=YFT*^NTM*od8l<~2Qw_r-$-F)RNx)S%y07`35`L@)SdXdyJMV(w||sr;OdHk5>%$1HTT%P3_NeXF~d4S#F+3cGE#ucD>Ghlfl&v+ zYT`5>xvuox`GLg&thYs&-pK68xiN9<`6MYUoG(VaZE@2*>ZLdl-%eDg7EtH?+kr~* z$h%bb9*`dG?Ll1j8V>LWz&t4MtkW~$p79JJ!md_{C}uq5%XNL32r%#MAz$9a7L1vox<{!i9AjWG%P zlwBlHE8s1dD`Z#NE7yTVEDT#pt+QqUy$ceZ6r45o)z^N;IhHn&@lS@Fx+I6J(GBe218L>HC;6OjuoX1uC%ncT@)}j*)|YknIFB_h`#Cf!du4htUImuPe*Rv}FzFbp{>{mDX*|7qd2kN`;P&rm0|w@_hbR0zu{xFSkf zh8Vy5Xg-YqH%1zJ{t5}a!Ogy9>@Nfn0rwThvBwYqQ`*Ku5VeY;% z`V<8hV${@uUZE(`%j581NLMRuv_->!fFwh#fCV01H5mEqQ(bK_?eUD*IQO01Vb>Jl z%_D4MKx^1cl>)q^&n6~m=&3`X8E*?>ijGN2x!L`3`bl2PSY3*jEhKF5MGV zo>*(H6)s$Q?g;~E={MtjqZCgVJDBY6vzI=f`}qE*sdDEJP$Z#1{51u-^HQQOYOl(&>` zA`9)BTkknh3Yr;zyAsQX9e9Q7)wa}O`OBND=IEVF=JDQ;i$Hf!*{)N%uTj7GOG^+r zlbL@NPkuB^5C8W3p*zGxa>E9=^mtEa^ToDrOrS*$p?zn@92KDmNMVc%dBF__UnPH| zfH3%zXz)a)9CZs1N(m8#3USGiJq;<{7}nMpE-lhl$opvZO3#bSzz9jH0$bcCs-|_T zq9hq@*Oh#6YOyn(e|o32t6Uy6tfwuj0=-aNQ{=oSm*7Pl4+xeqimj~(CY%Pm`{%hd zaMR`@=~Gt0n&4M# zf=DE)sutez>|ZjPN;I@x7QL-?^ZBO4SOhEB+)tOPRn#MY<(3eu3sbiM1JtdbxAIGX(tq#pg*APL4&xiEQlo_DKg$@g5u?@B;%He9*^$c{d6S9nIlgmwO#6hadbCYYIh# z?YZU)n{FjF#U-N~tn4}Fn1df@oL^`GT z3HD<;kpiqCSyI8uUl4K&2grM`2Z{8&Q~_twgc}I&{s29Xq#$G3T+_21lZ$_;#-`5r z_S3(-e84hHnKJbIJ{Aev;Rv<7%RMxQ)kPONoMo%xYq@+?4zCKc`8=UyS>b0@&V;8#D1_rJUG19SxNsQ{Nq8v{;%k zEy&}6>-*SP`hqt-0tWjRJ))?7{$UIjyW>bSSiRXUWE<;m^paP8YM2b8^ecFAolrYu zmD;5C=tBHhB-6cZp^iC=muf0s-ZF9Mr=}#YR6*R;EPKC@50;Fc1$^E&>woBdV8IE( zmLF1v_4T2n)F>~cvJ5MUC3xe=8MNitCpX+8MhQbaHz94l&;3^}e!F}ACS+}99_%pt z{dNiwO9@gJ`Mbg;?t7y!b^RcP=$1r7&VAdY8`lDQ=={t(8;eHOk+x#H)kLZn*)?qo`U}r z%GPSr`Gy7f`)x4T9HU(po;XI7E=QRj@7R1%n}M5V!m#R468)xiK{3*9+Tb|V+TrLl zUDfx!aF$FC%WRG)Ru7^8j6-mU@SOdq;nWj_$j1GNX#QF%M`((c&YNqB=f-n)2%;Pk zv^5##F{@#~b)qh&=1PW*sZ{9KpV-ID8iyP<(Q83V zq*wW+$?h5&fcsiIVTDsHQSAx?JddaocA2nd)Y4MtV78CC({@5(?89DlX0{N`)rtKhPkgR&4Q@EiF z_2+9vs@;?LpfDON(PML_wxNb(k&drGOvxiUBN;`_QZWAX(YkaCF@-P4I~o(Q!6eT|`$e(?zsA+vJds$rM?`emWiZ@j~wumDL+JpeG%>438c4xa&o) zoZd2k=JYOQF;e)_OXLDWIZ=WA=#vBJsu(L{^ujzHB0n3TZP7yfxPFLJIIq`k{66ft z9miik7ewM#dF(bsZX{?iV|P4?dFJsR+^<7j()3)v+V!8{0GZt3q`+%K1Xw`y(i;;q>F z7@mM=&F}&PT{&=C#8e{yDCzfMmtNCy2#V9Z>oD*v_mJ1S>4OpjDt?_B*@fl%KcNg0Rbq+Rie?YVSG0*N*#0jQdO9IL4Kr|cB+SG9bT`XQgLL6W znsk)+RzU+HFXeIYbY_`i2p|m2AabWeI`z~PFIUA(SQAf)Wg!b`it7mRyf61}!Q}oY z>K3C9bjaCxxjc2#vL(EyY(@gFG;+%oBI;uDIW)ObSinl&f2mo}6xM7OF(6qi zbt(z>Zdm&^NH;7b(|7-GX}LJq)0FEIU-R%J-5DNpUK=0B$n{#f8>h3w7)gE+^9teL zz4v<9# z)d%LWZUIYjk1`A_@RKX9j=kL;PJ!zXjo!>xU1jh2%k8sR1W8j&= zcWL4yb}E~gk_XQPSnXIq3NlC%Ij`Y-oljv{h>1)sM9P>f()Lx?c;C_Lpfk}xD+Sx; zenl0#dmS*~%PRRr1q$dHnZmo%WN_P!Ps1Lp0g<6O3X&0iivVA4Vp!x55tJxm_z5CF zyhx~{4Oy;)gFy);wE(vmcQ5SUOt>exM_TXT#&AeSVq0q5e{5kXdYaZMhnXcF+8&ig zrH6sTNLM*$7J-$UuYv+L`RFmdRtMB9{43j2EnI@S%_wk(R)lP%8PdkY(~4hf2iGBe zLI|5=QcyvI2qD;0FO(ZBKIcZj0)1Uqts#8k8{;Gfvlo9$49>9j#BZ!~G( zBhZ(yt$9%gq3d5m+f<&t(s1u)8ms%+UMk6#%;@FQd*@)~ zp0Mm{@}bY?QRQHCVW*!7kG+)|QBu1B?5)UZ@DHk0ZqP2nTN%kX!()Sgs}=O%k>WK5 zod4C{uai>Z?QOxkaWc6_eAnT75|)F)3F@p8ps_NqJ3*394OmD2Y{V1K)U9ST>S-U~ zG27&(pxjX-fPuMhr(-61);d!)1uFVy=}1TBKwF^-{dw>*Y{nUUASajW85q4GOCSTYau47p%ASYYcrq^|j$|@OSg{xc_E>JB{>T%h2I~^QQ33 z%Rh&Sq>o&1e^_3dJ|v^o2Ewn%*7z~Ohj~ld)?#cRYzi*1));`cUDVhxy ztA6?`gUkr;__-Lu)2PgH*qcUqCVlItCJ}_ZLA${V&j!>z^nk7s+UuKI|3!bjbIxMp zgEFwDAGaKZFtyMl->pAS_(7z!rZuq5hFgn8fpn#wj(kKmw@7Ex|Dri)e1hcR9qX^B z6|D?TjsbanX%NPz)?j==nEf6I5RQNJ{J2?)c5oOb-pZzGx>JBi4s3iC6%(TReu^1Y z!=)O_+lp|Wha5*V$)i3SjryZCh5`XLxR6uL!yAd;J+)uO+t6C|<5XT|*aiPJI=5l0 zH1Ph~`^GwCw5%+Lh!nEaPxUvJ=y{WQ>Xe(8*nwe1rD|YNh-j)|8XW;+cWE1Z%1Te~ zG-u(kREdKfODPB#M#%fk>-Fj4J$Ai@^6Itx$nBOmYFynB{~w%dLp?7y4Ag_ab^N#d z%mQ)MX@r@!yi646vL=k$=W^2X`*afZ3XQ;c%9zgqB>sVf4KywGCBRt6HePBE3Hp2< z+D#~gP_jvZaxJY;r=?zhU@b&}Fm_ZQyYw(Wt4`l=9qEOP7-V0b=^qSD{Um0v;IzL8 zz^f$5G?GF^0YJCijwRc&_@5D0ZHZSMe)`?arU#&y{;{bGgwgLsrOGma8Z&(}i(Vmv z>iwo_k)lrD-mcqx9X|mg4>M(eIm9ec(ia0^$xRnDa}(CFYLOX~Z=0Tn{;V`Xb$nyB zL&Vr0bydt5hpN5prruPx;hb1PUp)sYQTg)5=2b&;;+vx>?$KrQXYKB-j1B_NFP5$X zWAB`BcO7V z+a-1`ZO#)^ZdMl{Vlas1n01%lXnEz!WZzTbxbI?*`~%g!8`Sf=(Z7*=GG3 z=k7wFM*BPYmvFjqS=VXn|4&sC9d;%TSxjS;A!%12>;Iqk6nHq8)#HozZX2RowL|i* zMltHun1WhEjwMR-uP$Mma9VXB&Z!W4g@MQ2_4^i-Q>otKoQW`8EW&v*9R;{I zn^+_O&F74YC$|Swa&ZQ_juLgPPf2raCIIwbICF+hW70foq?>?pDD|7qYy&8iDxs-U zd~4nIzb_f#DCX;G3Ic_S2-;eRCpt~Y(Sj8Ul<^m3A> ze-BX|mhR5(m6@JvjLZ3Eie2W?Qg!MO2;Jf-J zeVdzNU1t6gnJbq#aYSUnElRmu zn9-6pi@<6wxPw~&LY36hTDR+2_m=$G0fFl%ceitTvzyaWEeOyd6dU}v8s{tmAwX{< zk^qqJESuPZE!_;b>-umXNdLw<`@{O`S*Y>@}kb`H4x?{)}bHzrWvMw06e@nW+^MfnSBGJow2o(u# z%uccM6sMm4?a4WL_>ZGOS5|=fnZ@!oqK7a*Qohu5vU=Kc;1Gsu`L2>%@K)|i;iFyb zY=0)8jvuG8XVs-CJ-sR}7b)9Rc=-GATRhB%wQA-yjZ<(i#ct~JV7EoGaeAFk)#yU} zMYvwN^eT-`(G$BSj)xa+zqi(F{gUKem;yp+a?Qfg;akKkf6ilY1rdG_c+C&@^FG}k z`UXGC%5$5SJ>8n*^x)YEwC3O#SYc-JZt!^h7ZGjWbFzS)ryk^cae0M{P%^hWP@ZxO z3Ai+C9-IB-!3LSsxT$P>9Ivq)$(?WKmYH#-SZD9d@6^YWA9DNm|Nc!oC_&f(K^Okys00$p-Ix}B5=Jw z=<%)1hsH3TDpYGVJx~|E^x9Hg#l&r8+uq?|SS%58z1B{J%#$eC+b?)lUG;LN15D-1 z@U)u6xCye;`x)-9{=be*JNhF=dTo?18qTnLhvYti5WI^wOOp!~Df@2%jP|9^xMRez zNWqP-W2L=Mr?=Y2={~(6khCcpC;}n6CMuKrg(<8z%f4DpaLA|aTE8E0>xQUl6?$W{ zEGnhPjo0_%sj^hX*^M)ad-KKvWvf?SF!Xl6*LiM}X7*w2kn`!jJkf|VRbeb4mPFUX zR<6kZ{d0?KliqOjauQT|WBWhOn8{=Fgh@JINE0j|`GIi=NWSrDplXG0LO_Amo}GNq zaL0OCI8QyWlvb<6_*f{)&;SfCk*0G-EF}wCha)~sv};b=AUB9m>-j&9t^x`t3@nC! z0;cCj@LT9&>x)A>N`O)RkfxXy06%rp#Q#4U_SfWyXy_kTC1Uu-pXJTWCbyF4CG8;c z3;saJX9dU#=cGd?jrx5aP~@_Avfs?OT_b0)~KzXH0RRH0`1Vly-^4`InI!*OYLDv9WQO@ z@24BmFvan@yjksGh9U5MR<-}GK{%nG)@AHz2f6x!##+zQ+oaim1prAZG}nkZBG3V+2+Zf-X%ivQ}~aR8Npqqt$A;!FC5 z6)V2(9j;=8in_-NrEXRyq(wg|}(MAT8> zdTNBIH~Ni@!EjSlG@BdGqZcE$)CW-wT+>Vn`W0E$ z7ks>fG>NTlQ^iV3R4{l*z=IyllqAoNqo>5ue}KX-5}~!6KU6z{Z9VWw`YdIAE6BxuE^JPXpW|t2Ax`%M^!1t5Pt29XwY(sDOwv!DU?>0ZB)9USQN} ze(%FB6yWl(){KLMdiwlZ@`;}S)79IWD59P%DsbY6k8jMd{F?X2haRA4g9*X8io zyW4|*W0Jvp-V#q%+WXJXc)`@(t2IghB0kf#t%*=lW^^Pf8pQ5n6}7uo)MX50Wr@+ozPK zhr#;rt zvPXn2o>zj^Z7M%U$-~|CW-iI%70XsDnhN?%mxp-BqWXcBldS z6jQOq3{HZbLNVQ(T<;l#fR_e2Eu2hw!Ucc*hRTOM`DD*&a+PX4>;p7acZ$IKC;1TF zfTmcn=C>A@4@TVSVZo&_L?&do&ZZ@7<0I#2hk|z0(?BI~mRbo_MqK_f5a}kTrP~ZV z`r4nuC&FY~-cfk$icz>dsrqhr;_FrxISXAv5od{1aul>qi~1j>=zo(W=`gPmsK5xUY_z^{xQpI~25D2o_8v)1>!03oDCP zX4*MHh~6W>Gsrpbu@fm^M@ytxWdWWXU3M(th&oQDTD#CBbWoHmx(iEat#gz2qDrsq z-A?UNV-^Y0ckhJ$q(o0ZHSPW_k2oQ(H|QCAm_B(wj*Ad9Z*uIr&W%a-y0JN6An}Df z@3EF@*C=j57&|vpv*%|)NELeG(osG0>h^JzooO#;jtcHAPB}hvK0p z()S&Gy0)^w$YtRoeofMy(LoGS3TG5J|5giW(GWYjwvz;|xH#b#{knTuHl{@T-^kUO;eXGic0iyO<=<*!ik`I zU@8>J>pm7>#c6TW04W;F-lPO2vb`^69#(~C-^Ku+wvHXkFbK38yc2;Ag}m#(eY}3l zLO{$VUZPC8Rp>An#en1bYC_}f4Py=9H*VfGt`TS#vfTa~@SwA`iC)hnjAAb{#m}v( z$BVYZGH(g{k-yA|Y_#vippqswB#m@y%yX4y13xwvF>qV=pYyIhX#hC3T zM@Q5oFb$ci@Rt>>*<**JF-SyJs71MhNlD=v>DAUFrm9)H`~^I=S|A)bEWn&ZUD`O_ zQZ`wD(Zun!u;zKP6tYol5sq&dxV_r%%5{}r1yEa5(5u6^{|t-d=R`WS`bIzbaL0&UcqJbA!%HZ*OMI<69%x>wBB}MpMxQ zeELRZ1ikww=TZrA0!^LC+Ju|I)LTpAsuq?tlwk&Kq}zA%amOBifiKS)%kUQ z*_8Nd|BKAo6HIKJHawPKazwipgOl?)k4=%s)?j5N$o0lC+p*mu%yjOse{)pM2a)Fe zo~sgrfDILQC8|TUAGw4;uGNGWF#SNI_EfghRne^RWgb_9E&EA5pT3PGVph8NW^O93 z!Ak25-f-o*7I%0iQu3oy%r@RsQa4}}Y2Am{kMP<-0Uh~ZjBLa&9SI$&RISYh#_-FX zkN&`Ov0+I0P50Pp$f|qAk$o3BKc_+c-&1)WNi_1%No~#Ebwg~gCx7!EdK+0kHTa*$ zCtm~3Zy7jHSD#O1-^zvhq2XXZnR!rYx%q`hqS147TR?Mzg%N+ zuR$58p^L`LmRQTGvOdeKl&Ys9t*Gv2_LnHDbvBk=1&R2{=X5@UlXP9ZHwvwGnV!Qckdmc z4@Ru_(2K{}zhCC{hFcmtS5k2ZpOk{tZY8#C92t1bFFpNUue}pUmic4Nf zVK!*eGDmHog_#5BUEEvwHnaG$Vp~?&RyR(16Cgu=IaxwEo5wV19Be@`9t`jS|C}S^ z;}7wT`<_8i3l&~BUH6ACUx2RL5paVPGs4;~p+521-2FRcRGvlXF4nG3qaSIo1`lNP zJkQAV0_EebgPBzsn4JjJ{o~<}fW}e?Z;;pjP#PIy1l`gu}}8 z!j|&&<=3CP+&U-7|GO1RVr6IAr}mTd|E7>!3p@aEy8t-9H?MLgYX|aw6=>K)8}0nb zhm;;_!hy8spHF)^aN~bmWyv){y+^NM0!{XxwZjxQ1;cK(2R?H6&ecgN3^U;}4JjCZ zoqGK2Mb| zEPqJ^t>xf+qibbnPW{LB!5PpPUTk|7pDe$3hBCX`6o_?jZNK%pk9>{IRGfwCp1`MqxfQVe`6>ro2*Y;ZifevKe6et(LOY!XD~L>8;%e72|h zouMi9Ui7Wr(8kcaP%jr%Z6k2XSRR|gm5G}X&Ku_?uD~wu*#JdAy1$+Mh=a=t=_7q1 zj3<3IEikkOzVQ<0Gd?p)#K_9_Cco56mlZ)cB!*%{V zv%!w*ZigF9?uO5af#>-7StWRZw$f__Ko3d4X$^w{( z2TpC7ffqI4`2VoR4al)t1t9Z?r-bF<{v0sP#8+Q!HglOr>rI_d7PefNtxQpz9AZ7J zR%$nDI)6AC?8tY14{|r|y$DYtZ!H@Gg@+^++u107ObFf);+ z3oe~uFN;o?jSr)(Xx`u$x5eu(bbzvBEn^&^jw~9rDmR>wEG2dEnmT1TNp;RYph76A z$QizJ+XCggEL4yOs{`WS?dPuN>!L!uvZ&$cyHgdezIF0S1qLAF&wxnm6^}xJ6a-e& zepRi5>bqr?Qbp_t5)S~Dq*Xi2_SB*=Aejzz{244T)_*q`#R{CQndgQT!}}oKOvWie zXSMxIQs-r?AJC&z^sR{!B!xT)UJn8xA&^HCA~}{oY2;)!;6Zgqmn6d}EjwH|iA$vP z)wE@wddEg=Sl%T{(Uux)tVZ6dslM4@K(tVN999R?Yfo$$}t_u%qQAV=^gJ!DZQ5lVgknste)DauhIdo z32U5Qcc1Msyb?|ACGB?l>CPJB_Q%`_U{#}_) z_YNQAU%>mQ5)<5=D74i0EWr2#5g0GhBq+vlfj`>Qu9+V4B-l8q*ai}d88r~@2I4!| zZ=fokH#vFx?(Q8dFxk9X6&^yF*~00 z@30j4h-z=!!>(DYRJD!~m*Fu|2bD60IG|=`$ep_w`L_$NmsIGDRbo<_?W)bLogSsl zbLGxMq%fDGdW%}auyR(R+mX1Y{7?&34n)${hWybGEEO zSC68|1py$NE{vicZ!wKLO|T%{9I=_uTAt?R$e*+Ay!%Rmm~T`zd~OY;Yyjj~ukLy< z@jUV`@fEUJCb&S}RBGL;{ustpF(9x`($HT4`H04%8Thq!u2V|DzMf(xEaQHYr7|zk zWj;{^>c+X}Jl`#xz49!QJ(8}?u%i2vLblZ`xpv3PtIbYQ3y734`CtzjQ5^1cdE(sS z25FTgN-pAgTUNT4vR#|#IkKqPHW)c;Lf?@B`MU5@aNV4J_k=*Y8+uCjZ~~JHp2FmY zAE>SO`y#kqNsee&^OFa621;E|Py0CjnR#r#z`T^t(2_^y82$o_*Qa+x#5eq~WtBs> zLRQjJ+N-R^MPX^KduIfqO0UAoB;X1Z!M>uH1jTmSO~!}Cpk(*IBPcNB1owE~3>Z#>!u> zoU8(gbGu{se^D!Ohw+gKVyK-AjP><+7`Wm*PdqcrJna>CJ@av!zWFANel^+7!7QmV zJ>vhgt{y^3IhdE|0=J0eq55#5`@6=gIvc23bQ9R??Sr*o37M_m8Pu! zqYigwxY(x|bju|duO#>@ORDUHn?F8EZX7IRvIMQl@LBOSag1HIBfrDd00~Zos9sl5 z64T~FXc^n}hwB+rF#j(#6zyTi6-)^7FsCkgpZU+j+})BV3wt`1+HH_bnOQ(sACn@n zr+koVKBDMZZhP6wLG44})t;K)n5k$+MjINOJ{KjEbb67}wckq_j3_1$@I zRKLlQ5lDn{9NOj)IbEazRw&mF$%z@K;p!fHTVH(%m+cJQIv#w^l;wH9(c$UXD-oeB z$kpA+T_$O2s1^oa#7a@ux!23QBQh13 z)1I8NEEj6p!jVa7CAuh#Z(`fAk;a`R)*yn93s#$39uyn4k_oT!yC_9d9;#vgU~AVK zzXZp$q5clyQDfH;H#pYjg ztoT!<4MHFbcA$&oJbGW1fJ_%>>@IaM!+NQuz{YjLksua%S2Ni8UEFa^q6YQq*Jz|` zd^RqRCe3$UAs)IYRI~R&4?ALhcPHojC3scXcg`Xxy4@eMquMe5OXM&fyP+swHUp9Fs zD*3k;hXTr9El#~E7R!wv`B1&-dcv!Xv)Ise?(LNg0&89E{D*0=k7eeyE@ot1QLNEU zmnBf~%C^s?Zn4xBC??sNFY`s=hl0ua;aiWON@$p_%RT+gCtg z^aq$bC@g$YyhL&qObOT~s*C=_xN^@_G$fP@%Oze?ET zyJ-x41`IuX^An;G;2`gKVXI?-oN8c*YNset2|EW|qXjxIlRx$Zcv;(42<5+XW#;l}K>&qM z#oSz1jnbIorQ-I>&CgEso(ymVMy$_1;CmUGL&JP!iQ(+5H=D1k`K!+?L(f8BsHR%o zJ>}{PX>9SO<6ffleQvcU_YXRH!|5!Yj40319^OFtQh1JG6Uo9kJPZWhTy3W`g_C)f z_AU1h82=MtUNTkc!6Z-t^agP6;YRoI>qQkF#wp>*2B&6sb+^e5wYIk}3o^^(g-Vp1 zxL8uF!A)+>Tx0ARr;5H!i!0qaZ&2XMv+BbX$UWmDNT_xL>1T*K6@X1j-AI}gc^L;j44DI*M0Wk34vUZBTkY~?E? zzx@t&^{<-`N3+nS1>m`G&67Gl?3~LdSp%>;cUn>RV@rxZXAqK6(3UrxL zrGNN<5{DLdyytYKfYNiEb;vv1yGA@$4fPM`5y6SyU$*q#3FaV5jl?lYa%rds5&r&_ zF*zweuI0|HmMbx4>d~FgD&oI!nL|-Cq3Y|J9{zv$R^kva?fL49 z!DL`|);pDsk!7WrmQx{z_1X-os6Ouk;Dr zALaCG9|Hg<+@_waSgD{bW~6p}v&J~34c5;@Xa6t4yB*i{0>hR|6id5ij9$|8B(h%` z0&6eO+L1!+)GUmwaC2OFqx`zwjj+?TPnQ^1#?2*1rtzd6_Hf+6^n~oKs*3dbCwu(| z;4UT~gh+<{&&_bQnRTfBLcXN%!TknbTiXqFeT*)@2O5DS?T-|`m|W?)SlvL8GM}&w zh#qS_0-H zN%6j<^h_^68I_0Wki&?6NU9MNA9HWIl70f9->=C^<3V^wJ1%AIJzk&=(?;46N~J3^ z7Y$mm;cgB+?(r|s@uuhINH6VCHRCW41b}^PB1i0WBW+%6o|1iK=ceyB~&J9$9CW<<}X|+YMheI1|v6%`Zll zG-r|$F*Tsc34{M$CN*KQW|$P&@jg0WlYlQVe#y8WV|N<_qZK|)l4R^< zB@P(~t_=TvnKU-V`0vi#o6|s&fIIG9Y}7gbtDB#2iSpxvcwF#F-Ap#ZBG{kz{Jo@z z`i@pd>0A{W0$hCM<0EWJ0mYA!jSm%aQBj$<#o|;e9cov1kh~yrG}ij6ZXWQ)O@&2Z zJtZs2jTS4jUl`jw!)$=@r9^NYQ;8 zqiBKvP^M4z3-RZqxnMkzZ;zcnjqMy@N-yAxV<|_sa z=3Mplhy6$3YCe-=N~nCTzvEvMDer?L=KT)r`~XH)++Q}{ucdc_Kid45uBK;v#-LqBBf(c6rK&VVU zZeFFDj}(YO>?63IjYNq}isR)SA80az%Mt*3XlTYVkQ0KFxci$&*$4Frh}|+!7OIH! zGlk7#5AWYGZ+*LWxdiL`LDg3Ofq3&}I>dfB4o+&lNUcaOBS`U&6)H$nfm=J$cXV1< z0tLy-rZTT&cI0AQP)ugm7jGTGU12XM5SKs?_+8s(rs1*k_%>w>#{@;>Q1HmO_oPHi zqP=^WofBpWm}6C_b-A#5M(cvMYU?@;wUb(0X7(9afeRmo-;>sApo>`P*r=k^``Of~ z>P-88as-UYp_VDYe1W|bn+G(Q3$O5?o8yb6h;0=nP-{@j(v;Tj)yfn&>E@qi+Kq#} zL&lW7y>$uVLG}@R9cZCF8I*6nhRh1Mf(4V%D2V@5W&9k-fIl)wQL6&UpaS< z0CsYK1nj*I5+0|ADFQ29Bu~$qP zF7qUuhypGuhGm?!3}uO&l=gZtP`;ZhKM{E?0C#I5lT*^&i_6AsrK!(Z3_`Xd`V0I* zdsZpfI>XicivA(v&Vv1)5W3@y`nQnp=qcteJA_3pK!Uj&GOS6JoALPzH|H#$sxm$Z z?5pi}xxRcD0?S-sdRy|TRQ@aTCkS6U0^qH@w|h-<6|dy)2@s*CXyNe*Vjs0Q7J;3Z zeU9blFyQz=96yUOQS_xuTu4(X5lUEaQ1d8PJh$Y=-fQm6seE80KI_*OLldh)i;xt~ zr)(B_)*A4`5EDVjRzPdLNE%#Gv_>>fYM>fje18f_$!kMQ*B^zz0w{pqLeVA)&FyyKxKG!dl+=JUYkXmy@+Xf}==SkNl z`B4*ydGkUmk1#rSC}<_|l;$QgN^m9ohH0M41bvVfm-b0I=Y8gwzg(FMY1%GYPcET* zQHb~((9);TwNYuQ>FSw{KmzIZJW3bA-s+)~x+3{p=bJ0dE210tQlP4TJ5mb?sguZE z=53A&(ZLH$Y!HXnpWUdM&YD&6V8}q`(FE~Bp4(xMq|pL>%LW21pyuE+ux;UXH1We- z9*w@Idt4^Kpge>g+XiRlU7dF92mqx|gBv?cp8&-3HEXa_to6bEWR_ei()fI3kvzjp zity-P)K~k6ea0x_Nab=;2^1j89qNkYLAM;ogfN9S8X@f+LP)dLtX%2cc9;>Kc|dWf z7E}bO72I%)fpd|gxMfq2{5+{BksrYkoc&kSkTb|^M!_zRPI{rWVFn*Dmk>FAX(m&L z4FbWSwGobw^m!7PBpwM_VTH-Y`_P(Yy_1>J?iDTTuLFXX#4t-%`-kb47rOHjQjEPC zI8wROrNW=K3^<-3!GJYATk{we^)_!T89GWr)?JOlkUp^heN9XMw{AK}5${1%r!p`y z$m_6gW`E}#p4Ac2*Uj0hApWs+)|l{h{Xo&k{0~^+sNMZ>*EJN7`ukFtKpD@kZDSnO z=p;FWE_iQPK<^O-Rup0ZkJ%NvYH{TSmC4g=DZ?*T{Y*IedIh>!oy-!nmf4Yg{Bw4)5P(rdcER%D_`)mlX>GAXV< z9-b=SrWueLS}VF++><1}@)d9YfXcm~KB*{9q>N5opQ*C>x#;nDrrZ@T1xT0fJQCe&SDB`#U8RaG;I)g4Mh+tIxI8>poQ_3b z4)2r^obdQ$LbKIxp*axcA<(Uo`=JNdA&$r5F*u2vIXJ2@G&`|zX6J`jc}E(Pep|MA zS$@7pRq-@ft5&yJ|uvH}d zW(ky|Wz2+qlbn9@w9EJr27SG!+aXJ5FMT7rL&F>X#lM)~Uf{L}_i!kVr0I^ADm(vo zU4zQcGt5AlfCwN~$#ZDkNF#(Bac-)Iu;l#%Z~$ahRBNwLeesAFP1Kg|Z)>5fqwx0Y zz7mczg0*gJhOt+9V`elsI*ryyT$-OdL;G>js7Jtcf2mmtto|#`S@;|Wl`eZtGGGVs z*9vzo21QBav`dpx0o)}Xc(*1y=nH`T)Vy_e2(t%hP&^F<+4T}@agt9tpMrarI{h^9 z{1?lK?hmbbiIQY%*aM_0t87pXXXj)?A~QEeya?E+Fo0aZR)8s(4P7CsA6D|~dLRdh zYCTNLPvT`OI=!9u`aA4!T)BrS1jgM1x4a)6)1{_>|ty7NT1lpxGxkY=}H48}TA& zhb<=UWFl+_Pkpa+pp)*RRG?KqNAO(Au}F zX`bMq`tlFl!<3+$A&J=Th+iG$JB*02Q}necy=q%E#VK4Y*a|HE)498pk@xeJ{PY`Q zE8r~#O{1l?+iRx5@g&0FZIj$>b@-3<91ooW&zg-1m^7RUo-AR7`x#a#re>H9F`|Hm zX|$b(_R$et>}N8^6#|*zdxd48TAd>QJ(M^BLS*vf+t-ZD-wN71k?R&Sk4VybRAC!Lh` zRD&$$Kc_G5c$k<>=)voAgu(23%EZ7y0WeSBmmT2kq0V4oyA@-1J_9j0}hJ zG3&P3i465m9Og8UaBTK+>Cf=ei0>oDN|6=Gp`WLgXMIGBB!mJecFUOMx9(2)6mKFK z4ziy%%Xb1ZnRrvOajb}3x~7QoB3kMDQ3Ww|xSx*u@LNZPzyAb+7f{f}EGd0iovQWl zqIBOKgQN8et53^vDASO?A$WTgQVy;Ouq?ap4?`oOZ1mW`V4C|{w;Imbg%#0|OXUxw zqbnht8w@RosPi8#hX;g_-|?&{41d2R+{czkPKT>0wQnst-oYifLrOo-y0{~%DY&b% zf3%k(76m%+2ORBY1F`IJ>C}4NkDmHB$((>KKX zQaRLGdw`=X`sf=)$YiDVYcI~SsvWJ&#o^V3c^|((NWrn0Ii*)LLVzBQ zqS3&cEPt^7x&N#MVFsTUJqNQbP_d8F z^O46D3k^SYIm}XMiuQPtaxpRSL4^^J9f6%?-5 zb%^^$q{O~y-ssaK(UibAn07dJ;R)w3;vN`K*tU(Ix?RPiyjiA4F>@8B*KkZ7^5u=A zz!k2P7~tw#N~4VSQ3p)C3x)7!GZ`jO$z%ZzxCUis4;R)U(FS-M)WVv9Er6dc>Jqc` z3#su7TC$W8buC10B=fI%c`?Ejy;ggetjd?uFwDD$E8bEcUrNBjw-dUOhzJiK;)joa~(R~?>-6!Ixq0B`Yv-4m&BpvD6II?wqFLhg@b-Tq-Fa_XyReN)V@cb8fmMeUuxuNT5u1oSJ}M zer&c4m3C&W46~#{c2{;_x@vKI%RIu<6$VgOM8!4@=5(h2If&+x9y=l#N-Lp|`#@0c;ns*KRi^Ys+4-M+W0sjL3cs8&O%F?sb zdU$9 zinbK8*oZoEvOoYAawh>@*n{PavFt&#Pt4>+P@&s8Pu%tmjZnYl3tKrb*pstVc(!M0 z3&3i`E5=t&Ou|+@{gm2KS?jp6HI*aGio+7((b{aiazh8})!lRgOYpjMZS)1ziS#ud zNA*RU*s;@z9BwMo`$vN`riyhd-ce|lh>mh#J{WI0AZ^yrjJI= z`A}iR3&~X^&}!#0;^D2!V5L={4zRe1Jo3d@*BUsgwJoMP`^A-qS9v%;42lYNQ8@~$ z&y7fzdGj*bt|jZxgAY|6)wxTKWD1?5A>s;%?bC%zr#>pyw`#5T;XWxiihV(x={g9> zYFpOKb%@=6GclWt0@lVYM3DI`8Un>Dz60OkoX}Up7@z+2On{GaizD_mXyd-i4s%ex zxoV-c-$y+S0XZS00AkF7{wr_X0HpZ%6()0A(W8h|%RrdZ*#vKAlS^m!5Io2X!SW1E zfpuMLjrUBU_yD9Y0aBiqaQf;Fu$FqT=z{j}JC$~^z=~26>AtWrZkD%c!FiM{n)AHR zfD4Cw?l}WlqO9glXA@ivHo3wv_tV`$aw&5ZcC$vSn(Q20pOT`&@puRXIPP_?g1me& z&o!?tM~orI*O3zW>WEb8&`O44XUA)X6)QzmE&T?v((mVxT^oT;jYZYiAr@>?toVHc z(Ay(pas9EQB)_&l;L&X@`79-b_xsdxyK4I2i$2uCQd+&p#Sv`tCGez*lW-{!nWRDf z2p2*pJiOO9hMw0OKyD)v+cq&cI=MQna^yH85pI$Ik*0&{jEn}eAfjRITB&!0ha5XI z1iXX1c#$7=(UyYl zPm9`&j}09jKTqXTlL&0uIRqi0$j5y}N@&GyX~RtsUK)qGc6pb**E3#RJ!DY5wZG1) zY|pCHm>ZlrP8osVXSy6uiMuzFj3h>8u2v?>3y>yjs6*qJqg|-;d+#qxPBAsb zzDW2M!IM~>D`eJ>F7AcYvx{20mozZA6i)hR(t>qP0yGl&4t28P-TQYc``+#4R0dZ1 zcMJupI+#%*|A*hCQXv*pOJp6sEElshAXfGR!z`BD#UAAwXK`@^snu_~eU*^7{uk)p zg94ot6pMAaV8&;O-ocoKB6@>#C$+#|n!cYnjCvp-vZGp-NH7r(a^Zko7R)~#oJL{P z84q)~B3ys65i+n)*+K055gMY?6|$}Kz$wH=tMJ2I@;}VDCMs@c{4F4~AAd#5je@R` zS{`vqB4hXrP^}5*UrQIka^h#@0k;td_>*`_Vqh=ro_3T{uWY@r2H#P15gY^W>~uvb zOfBU&$pR__D~uUyk+}x;i#BinelpXKT#$lpF8`-A?hWF}iA0WD08{^jFC(i}ToWov z;>@pZek-$?t-dXu+ok8+^m5pB77m~7=>mcd*`-RY#tgmG!eGITV|HmO=zkee3wD=N zk`4D0R|X4Ss;lqaBXFY%q%+?0dS}YM>xHzbAq;ku#%Wt@gU3T1HJ`vBn(>aZZ*1@0 z3FBdIg46Sh|F)jN)epzg23IeV`98#-NUkh=Xn6LKgxw+)=(*5+D&zsuIb_s`-e!jl zT$yp&o--^BG~yOjFwRALZQ$m+lAMO|hK+Y8;!X*jO^ff{27JQGDGc_`n zMq3jFUwV$PykMWBnkE{)Cbyvmn-7Uw(tLDhmts8aaf}W&*)tuLa0*-X3d(jnn2bOT z9|8O!jlFxORJr>bUZUqxonfSqKdW&T2hs`D`%RLGlX3)kklxf2lEt&iPcr<)z#kx@ zg$nPB*(l88MBNUPw&&eaJAT1d(%cOV1dr+hhD#M{`EF#bm#boWcIQ-pmSPMZf2YeBJ)HewxT7b0BLTbv#R zBSvL1+oNR3Q*X)*8kH&BoeTs6u2pgvV9KuYD7(T=#$-jATuwyCY?ft4YGpt7`>WfA zZ)q(Z)QDbRHW#_8vOvl`B6Xbn)e%Kf-4Lx|vJ(qANEr6A&E??(g-#vpKeUDEn3Kbo z8!e+u2ZA0uCuOc&Vz&#RY1X=QQ^12rGEsOE;t302d-X*nTw-|`#1(HLS|1lt!NUDh ze>BH6-!y>LI{({3U3Z(l!Qz&R5F%r?WKEbL>nna1OnV zZin7cC`q3^3Ed9QqxU2uNRY94H&*{G#q@WnCaurA4*uPZ$Y-eEql@tbKtQ~! z@PYssF{$+Z9(m%NcV*`QFuVTNfn&E`Gcimv)nN)zNPDr5T)??UoygNEtt41A+`%IE z3htk(DKHs=z`EjL1%!Jvv|a!h{9n6$u!?{R_NUvVQ_}(ddw%`0(*1Q3FRs5JJ&jUF z$kJh&cjQ40xRTMD!GWJ%MH+{y$QGPzbSpqpj=^AmV$`G*A z_{qe;IVp9E2@BAtCo-Lz)04;$mKyYbG7ipXBO`&K!Q)fS6UAI@a)UhIg|3Uy`0;Az zcnIO?o;y|W)+6y(Q1VeATGK%J2FVA{6+vFjmpV_7wCsGW9*NDlM@LSR05s6m;k5f6 z{&umZQzuOMTeZiX$9mAohzi*6en-yIAAL>7O*SfbYb5_W_0m3%0)7viusX|+u;xKV z)=mJ|D)!002_LZFRqp0$p{{Ic+k-o3(pEirgYqLRllrNf4FTzJD#P&mMm}NldHpn* zq)f;ggN1K(hVhZ)G{sEb#*~-ZfbG!P*mK2J3Kk~MPY)BP7c8TEDR;MKGE4{yk<4sg z3NxKH7KI}9AjaUaG>#cbmsGsZm0()gh*k!>QAl;TK7i$4V5gT@LvwDm;UfaI3)``J zZF{5{SB}^D(EgmqwlI#%RB_BPFP=e^pIG;E0aW6F_ygl2mzJFPE+_pH(M3frbj$D} z%(rP@BbhI=F@fAcHYo_d?;t{s|DF`Gr-+{lRT`1nTpB!5SF^UZrhQ+~ExrL+Gl^_%& zc}^%Gu#ll@4(t=LQ{t6bMve1BWS5FGG8su5%3Joq-{&H=$JJ0Y_i|Z%;tM&b9yRpi z_bWZKYKaGDk5KQ@KHk=rf;M6|URHg~){BjiIv-cNlbW1WWOJ`UDk6HRlR&)lmz~F= z4lizfOa<*0OiW5gjTsug9u@Ijq8ySfBQeS`k;-sKpB{=;NcNMCF?kf@%dyLxSgwA3 zAAvm#()x*~>F;ntsO*)L^c_yqun96X;I2@Mwo2E|?A8GlfMU2iQf5gW$l{MAY}$|P ziix=}qo%^qNAeSLJ^cKn_raUXRvY#*ycu7>jGs+~!V#CjFY=_zr0|UduR+C~(7>iB zt1P9N$d5`xrx?h;SPVxO+yN5hmG%_656RhEI-Y{^mm+mE<2mSkndE|y-??De`(sK8 zy7*$J7+q1o#Brcdf??KfkO$7v_1g#iGs;E=bTu3*i%G>XKV1969*7>9pj-G5n8{OD zi%Y5%t_B!sUy)?q2WLS7P`8$o>tT5H1@{o4wo1Tozl>OUo0H-3&{U%leY&2kD*_8=y_km!NM z*PL^RLbbN<;CZ9^V#OtF&OCd!b_Q%tCoD?%al}oGGb5^Cgvqxehe?!xb42sRyqcRW zNx&Ow;jAcSDl}?mhEiX^{?ussex9936@N@j*6mn+0WYuHnxbQfY1jmG`1bVnULx@z?#S zwzD>oI=bK&66p#0=tw>kvi2oxu4GJK11A@)ydjVi(a~sY>?e;h!95f^YZMXJe^ zr>|`9+HC26`UM*)qv}C!-;3SjN`-$3>W5j2EIWVjt#YPK$`3J#|9qcar4NvsyH7pJ zSyja~O<|~hqj!y#=Zy@f9IA=>nksI|u)OW~1CI}uATT-!_y1;B0Gb-dI3$X+SS=NU zO9XzX7ropXTnX|Fha=bu4Pu1m^1eR*$`>msc)a%&byq&gbxeGu$x$uKp9 zn93F0$x^ua8nT%?4{gYotnKnHLZGHngqnK)HZZ+@ipM+KEf;6Sy*-ajJST%l_e7(E4iMs}F{6n0y4tzj#r>;CcV}s&rRxl7=ZYq?>Cj{11!z-V5 z1MiIaC$|{kq2F?Spi0jhHz6#q#@-J74WB~Ar1PK$KcGI;el7W0Ols$fEmj8Cl zW(&7obP)4!1$ZU71(g3MVZum5CQAv*rSH(p&hg)R5p)jy);^WdxZ?Wafl?9v8quLu-5F0qXpKrYr~ zJRrp(OHP&J$Y{+ysAE}2@*8m@UK?GEc*LqH`reFo9dj~MbVdnG1`(j{{2Z&JeZb*& zHq)AaZ2y~45EAl}B^h^=onb&Sm=)x<6ikM5xxhT+cou4t^07)o4#<=Yo!3>9rU4i` zc%;^Rxd>|0knS>9O@t<=7^ACval^l<<8 za&RNu9WyXUI_VZpnGr}k5POs$1bJ}IS0V=XB(IjxL082c2`WkD^VSv&rgVk!;$==U zs`W)b+m*FipUNFckl}t!z?dGuzWAAy_h{~v=aL1PJjuyvVC#$jNHGwzkT1xrwm8un zS|AE4oQWXo{pIXV!F%ISn7=;p)6H5YL0I<=20Ozon==q~$@T= zu0sd2u1fNSv0@a6Wx>=Fr=N zZ2(e{5H)11c*(-va(c<;sW=Xd@GZeOZho)hZk=&3v6}Ec)%+-@dCkQbe?sQ_4lu~f ze599RDqarrUwWxlpJ!6mEDy4>+cn-we^?G^q`ywsbfe9rdnBQ}&r+k*bO67%3`!zR zN55>^)xXtF(YBy2pVKcV{tI(YwEWpCS8GhQ7D8+F(2f7|;wA}>%EEr;iq}gZ2n@&Z z*78~JON0@(dodOR=2ZP3Ba!hYUfxUsd2xHgih)>(EqCG_-}gU1rOpNr#sB%w@UoTnkm_raWgZ*XAtp6tR2qA`T z-zBXSoe~geOtfNK>76Z4l`0Q>b|}*Iw^U1!zw+dgb$UAeM5$J(y=08y@pMm2l2K|+ zvek`@2GphC$)CCgf0%}v_CrGHrd&6r4#Q~&x&$GE;J_#a)cb$LOTk-l;{v(RzkB2% z%*X*~ByhcSTUkJ{6;DOe@rp#!Ad>7#W`X$6BK?b=mp~uXm?=jAH+J0ue@Qx2lOb|H zzW_hVyfTGK=%)lFsny09*!{L_860|k&n=5(DzCXp`c#P7>?l}K*$biB$DDD++KZxV8Zf9ndgd)pXz2<+KOzFHqq0K{ZN5xH zCP~W%BbEd@v73Mwah7b6<8)mRt11Pn)re)l`CXRa9N4`==S8ZPw~Gpu8nw1P?l-a& zchzJWA)B9RMkF&tC5mV!th(c>2&i!L_rt}!a{#DQU*6nLr`1xvrb>jps%V+Q8lo}o zX9othzIl**)b{UwwTK1O;JYBqgM2mhz4=Xv@JD% z-mWKnME z&U*lJzB&qV%t5kv6OFmL{>=RaJCAAUSkh3pt{g~0P-|_8IQsy_DEQ)55e`0BSdetp zQv4lLuJWw?{@{!gYNPkbia z00tzrAz<9H{CEJ|?56(4oEl*ELS_Z`XPBVT$N(bSn5bUcU=`B^ze1=DH-PSStFDyU z?>|z(dnwQ=^{D4o5EH|wNap{&I4BgZ{?IF@(2&&9OLv)`Cj_5aSTa%_xkE}Jm{mJ6 zaeL6T9s!f1eeR`0JKU<2W66OU>YvYJV1bV-b$}xjD>dkic0Tr%VNZ1KKjO~9KI7;x z=F;7gE5Jbu{pe#EB~T;ZPxZ=CnHFU%R&#dkzqknS3BR-0>}*NV%DaTRFXulyI&kaR zYu07O^U<6qr*+9~`5y8zN#(3(ojY(|nn<^h!(^xs!D)N}r?~G>_tBaC;gZAO-Qml~ zHVUKVr5c5udxl^E3;WNdn6;x?CO==6b*><63CgQ-6Gcsnc?0Su> z=vqDhEv*2B^PvC$qQIH;fm%3nL7#e04x^`-LF`=E9_upJSR4E}Nb-arfI|baPBlXO z81PD6M{ihiiIgH0*2plMqnSvU-5{*jX)~r!?c9i;$mX0On2&W(=mxp2+&DG>*E?tPU{DT-ie~$4`PE!TK|E^nXpYiCoc^nE^*JaRwzh- z^L5m{^bW%aaHVeX&9QeFZmJC`f?orVr}K__B1ilDnR)9AD> z*hKE;2n)vRa3+ci;oJUKK-8W4717bj005ZwpBAQsQH#u`KDQL^Do5{$e=g`;gfUC$ zp?h_EP3(9qCC6c05s8Q?<;-^KQ688RPmfeU**YQzC*wW^}AsY6>=9pnYhVJ zhwf*3X+4|IaA66J8lq&`1Sozty_!K>f|?InPAtNms?2#`SBy9=zOiLmH`cPc^{cK6 zFs!{}eK}DFd@ZsCk}oSqW)a>+36D=eN+*?WM1GvyoKH7Ut16*7n2ufR+~G=(FDCSg?v2Cj=>UfIcQbn5 zkH?_r&8DR{;6=tP+3Xe+z-jf@gP)i+rR0TnSrk=UE0N|5kmq;-6aC))cSIl2{02Ky z(%P#=97XfzqFk;$kd3b3%SUSt5cl;2V+q`JT{<3!JlB5`J}W&!LPH3U-ruI1|2*4{ z^lJ(w-|S~+s{oXNIneJ4PArLg@dH0L&}odJ|1zoE!RHWqJw8y{s;n{6Dynhg#Ath z&RTaLMwyv(fGqQNaNGQ^NYvG=ilx@L6Iqm13ux1U360?}x_!N#_Y|3YO85ONFp6b# zt{>lbd2Ww?F3BYJmXYIb^GfD*LdxphUpMpotpgS>s5{t~QsK zC7_+PtrL5Q*{^SQM;#vzhs-@k0=WideY@iWDcK(nd0`Ri*;mOfr!xja0d8M#DSqE0 z)~nQiy?{|Pcq-e{{KQF)dj~dfz2k}u31^|Bk3&-+9d(b&c1+KS)G;Fxuk5PJ#Wr3Vxa995PH?Kizi`;@J1*#FvB!8Y!j3_maQ;PUM zS-||_y~@50n2<&WCp}(vkkFbK+MKQTLkY8wn5*H8nLq~Z5mQjzY-hx2PMBCBKZ9{L z*%Pc5?Jc>Mv)&7Z^}e_P)oBKvd^J`HSC1O`buf(BPkDB^2AhpA(_V-x=CpnVGds8X z)H7Azjy)<+ZGzR<+}J9EWGPhe-7aEd8&o$0amHHz0su!L2p8tskMrK8~g1a!St;3p%&uS3p4Hcb>Q%}L7LsxTZS+E zNU#$mey4!J{57hi$0*$^bI)=w2c@;vcf1n^AsQgn*4g=_9^y3i?1Ag3n&YRaT*LLC zL1Bi)`CJiNq$^a&aZSLPg=igBX{oGX*2`f!tm7Z-AME;84H|nD~bR{WzDkF>I@>p z92KIWV@}C0!_`5iFpY%SZEkdu$w2R?U{oq7Gn1FYU#Qi#*wNh{a8Oe;IsV>h+I)S2 z<8E%tyxB=@YzCmm8{fpeNe#$^Oo$Nlrx=XwY3R_t5BR7(X`gPuE65D3% zA;o-BslUssJ}{>{q8jCPe$IV4)FgbOrU7quU34&_P&~14CUzcGm$P%S^?l|1idxZi z{Z4=Uogu#Pz%gS`_>OY@G>Wq^dywKlo(>5_ItngJDg|R!g3Ve{$ebUBUMcIr^fhHs zQm8TJi4|@ot`BAp15zRy|UO4_Q%O5I(O1EYIXt6^|fVg!V8vZ`WV+ycF*r z$lOHHPp`0<%NSHmq$R_(;3!HlNb(mf|2)*L`v;2LDP@?s0J;&=mZFi;Gz#`~@(~&D z6ul+6&pgh%5FoBu1UuI2#mJ#&Bt8`zlw>+?jd^u~d6u($aP|?Orc_vZBc`z{IlxtF z0|;LWYb8^)v@Eca$PAeP0imuIMw8}4ChTLe?tVG31;xG0L_v{C6%dlZmakeI95A&x z=iR4YQe+@J>ddUYkw;b2G+SU=vez%lyAe`7YZOM$Gag&uK>{nZvIjJWk+p|{JhWjz zSTIp~@i7mqA}C4^>Rlm6;a~9+~se(e`g$~MV{OfBe78EpDVqR-i6Mbb{y-z+P9pyqAkK{vgF)Oosb3nFne8qW; zKmKrzL&bfjP8+WpO1hHr)nS^?oDPzLais)Wh8hRGfp`-NL1EW^-VzP;g*pW&rnmU4n|0)eAg8y#q&Z^&dXIQVnH}m@yxh;x0nj1AWm8jBU-G^~_UD`>Beh}pbWaai zLcEMbkCwAjPr3%Q8ML~=dhe{K{UAy7UVz=o*yq#fp1po1b>$kOiS&cPqFyOQJr>_ez`zwZ_(r{ zm!xqRq5ghhXDh%?Qj`<34jDZ&UfZ10lpTJnNP&1DNUaT|wWnX8ZpkhEq_kGtsftBu zis07QmQfYrlf~t?(dm3WDlRu$VsD?(2VU>N!966iB4#+x3PTY*Nq#1J&qe&(7!oi? zCz7_DA6`*3r$D_>!p|4FN7A6%)SK8p$Vk(`V18qan@`kSU#TBovz_<+k&%HU`&LLb z*IE8JQr$rjBz?qK_=swB)zX1*SE((#pL(LZND{iN)N)Y(O$8mTU2Su2i`~e%Z5Eg;;6h5ll2jqb;$VIxQIN`Cbeb`-nS5E6N$kn zNE;MerqGS-Z9zsrc$&@a8y4mJF#>nbU9$)u*lK6B*Le465sKinG+UMY5|+3c9a($A zWJmE4r3SmzT}FH9jg+v_0)j-JKZP;O) zqN{ydCg{7|gU9&gQ%KA6$vF`w2LRaZ$>$L=miM1G#j4(O%^cKwx(*MH62~i>`pizr zGPHT`Ia&G6j!^y`M~p!pIUwB-+${ zm+6ZCOEgOv3o772E+Hj=VLIKGFmy`DcH3SFGNgn~CrNnJu|G%GrpQ4!dWT9JxYHW1 z)H*VosNy_D#r5g>XdKV74>Q5khq1=xbhG$W9Gu5sq+=cP=YHrP*cCOwQRUyt?_noL zuK~B}KAn9h?nHJ#v0%ROf=>xX3D*4tvv6H@09$h^e%WKFRFBz1?v(YOVfPo*|5SOC zR}qXwm#0QZ)}yxwA%-jUmY{oU4EK1Acy66SpOZMu1l~J7ngw<%)jiUyX@&j?RyP&c zqBARvf2dUzGk%aSMyrKm6q4k-lux=ESUz|&5)lYcNj6<1J)6~hBEo@8J5_N`Qo$yB z*lNe3SL3fTqB&Wj(VkHsUIymL4aoi9H6(?_)UUnFP{2LUe{d({g609eO*X}jp{`_~JPKQ6q6@ub;~uj70~Tzs`nVl0;>t)~4)l>MVh^Ry_NNuMuKCS%Bp$6 z^w_e7+d+I{4H9d|RX{PFFlVe9UuTw-&2+H3<^3+@{*ri13m1nL8b|smi>p%g{rAPj zv%H(=k(=0);`>7_vA_bo14bZ2_cNH$M$UerAELEzJGBOP#0xfb`u3pAP7JUa#fG8 zOiQ@1l`FcGIi2g%nJRaO2LWMk#-Kz!VSib>4Qk$q3~5M5ky&tJg!!I3YoYl~xyQw05h1(Oj97d1pGx4Yql%CYTg5KECD#P|*o!W|kJ$)S?chRninh!I5&Xig zWyqzxNNXnSihO$mElRJu6HS)W>fgY;O-0w}J}R&pPGAUFLpyWQ`l1MM=iB>uy<2}a zD6DYOQLkb+^)7Q@GV}YX`qCjGTTkNFrEom9W9^{~>#PzK(mymV{ilHA5wh-Gs6z;T zFS0A1UNndUSlt=!WKb2M7F}&+vp0GVxR`~L7WS}c-xS5lu$l}VqBr$@hb-@6Gu#$W z34tj#Fw40qTG=0}*IJFF^46`EYq;Ou4{*Q6;_T?XeJxQgBXjB7eS39VginJsA-TTdIT5uSwJfbUt857v7tY8*9xZaBpdwy{c9EZhBQFV z7REqhxVtR$#Wx^(7qqxL%YmBRTo&J^b`uHtt-+Bw;e22w-IpiNB^wX*n4S;Ex!5GWWiNgAE-DReQg`Ua*lC2*3=*5bYqMC)ekzA}m7|W= zw;B5684fVyDAbOSHPgF32f75HO8Zi6pmhMirD$WS8$A|yWWf!+g35x}>+w#bCW!M= z^ZNm_e;ocU=fTkm$sK!InMGu5K}NI@!RRcHQL`(7kOF+`WL>6>;qu{D^V>xt$)jH| z@{En{{eo&t|>B$OBxJFr!vTr!wqvlu5%9h5q-2v{%gS#GL#R}7gbwdQAv!l zd(aIFMDOgS(}Md~*3hkKXh`BStCwsj71R3VA|DaGSeocFnP8w&4TO=q@F#3H=*Vd&_$1N(R zMiCVw$An<+i3sP9>M=;p5YbFUQ`u8tOM)!iL19P4><#ZW4?A&}52=9?(pzwc{c)DB z!`as5Dkl~p=MIe&F6!#Jf@madQqXj4M>{u*3DPy-=U`GUQ9|1OBEtJ*J|2rYG6E!4IbN(Q+r#?g$wD-(Go^B9kilsw zs6epD!5>rmgZl}5{2GU@1dwTEan3Lo=%`DpF~b#P?2Iisb0?CG((-x`XLO*e;+Itw%t5e>|qQ1R?wF z6YCJLvAC@6@N3{z3czmdi9I$~T9?Rj5B=dE2*AFGZtvxdbV?QIpJNgbZ$z13DmBkq zU?Edtjd~AroWrPD@9ZqGroiW=fS0Qjdczb$%GT#9+jTiUi9 zm9T6EJcEO(x-xbCi%r#0Xc2=XRk?KjYkXNdSb5=cmK_FgUYh4`~sN4etKs1W2` z7Drt}$l5v=`-0cs!Ukfz^05+d4TA#`LC>%bGZ>n_v#2t0wo^Wv6*oXn?7>K8POQbj z8skPAN>jSPfu2mVwOZ=FaNHB`#7hiy7&U!pMT;?==(kTB0+X#OXqq1GL{Ux{rAQoD%9verb#cJC0+BLhk0hglreUY2apKdd_HX*=dJPKdC zMiY@dz2&2t(QjjJun8}k*{P_)1@~v!N{>n-R$I$0?W)yDZN0C$9l{+QS+JmAsqo(_ z&WRnRj-i_be%tfhI_5Azns-%!1e@N)GnvSCHu|4I;BXvVCN`kes6ewijnDDAmOJk% z-_`6ZGHNvyeJj_?^Q$97ucUDR22Ew79F|kSf(+W9^ME8m7-!dP^$s_Ckw}V! zB;w_U-pwi8LYknH2b+s`*-Ae)i1sCm>eDOR>6SJ=?@T9_3!JHP?#-OROQ?01OZdOa4lCy%eDu&BxRp7TQ8(eeNzy}*uxVZ zu-jG5XGjjEW@SS2lBg8n>!UnzE1p-WcxYni_>~$h{Q!){&7NrFA-vo%>vQ(oyJS60 zLF88hWcu%YpdVb2c2knuXas1COP&- zX&xeN;xW^qec%uxDLFNFI;Su+hsMSOyb)boBdoKG}c`9?1m0%}>GE;rU-m$|yYo`m4 zG{}|PF~d(6jyITip=t8?{93tcjK$rcRH1CqhBM$NCHpT%_zZcl=mF3Ci(iRl}gjxR;44uSNJj|JMT+crulQytb@Vf@+%|e87G*kS%ukOwZM97^;a~KqJZ1 zkV)PEf{OrPao|V~Ph*}1cHDKuPcOfA(NK-WDTRH-G2X5CvKdOrz8w9G}8g?haCr{tb5^y&-V2{8euq^FDdN^Ryl9} z{dn0(w^F(O_F=}gp|`?^{Z<zpbK0 zT{ie}QQS*Zs|#6%M~Bzt9KaJO_Jg`h*pZGZuf0u8#UNi6-tnTtMFoGe4fM9=uwN5G z6Nv)+H^Q5^zw3)(+LSe4&{T6Jz6YY}I%NZ55X#_({+at%*V+cfUE#3rcK; z8jk9D)?Y?p+*hTyuDwmFY)&P}uy6>3llY1@r}c*|4}GG)>#GBHg}mm^l%$0TO|ukq zW^BXp{Sxb3(ZKSF#6S>UApwQiW8a+#*JY3k6=wmdssHt!zcyq6iv zGJ4-p9pd$u<4FvMxcx(V_5R{%j!31)74thVx#x3sDKj?^<2XwgZj53M1+!G!i#=0* zFd(N*@L$}u|3!<%CV|=4#1tp1v#g)rr4s6sx~HvpU`4Os5qZr}*Hqu(*E1?%-Uy*T zVa{f~F|{;mzTmfVxrWZZP5!eMqz$Wr+ zKT8;zhuE2J{{$kb6`iiSSFgT^`UcEC!Lb1}O~DAKQtD3lvBkk+3duWWNm}xwmr&7XQMYn<5vHpwu1ffmWv;9eT-IfgE|xK zwU@hrmX(o_?Pt&u5EW@*7V(=>G{@cHukW*zDuZzT08nyNm+9%+ZZc@aGQSHl`&c#4(EO~4$+3IMb5nzfa$Of-lJpd*q^!3eH-F&c7frVz} z$o5!gY*m<6UtVQr@Pczhcq}v@u`K_{0Sw3xObTJY_dESXBjwZt`_INdtVufr;>A+6 zxMxVwWJY)?1LZ2`^bfdYG0TGTm%C{Hldzgw%h+1ptqK5U%Dln%^v+m$Sm*hUCD+&s za9Up?7xjTe^cnAR(cY6dhu?>l%n)(#(p%dhTj~8?X4F0-taALy$Ew@w9HFKFMv0oVgJTxKRTxzd!?b6n@!# z+%)A4x;`%@QUB1$E`9abGrx z*WCz-g3g~*@ZYsVm42{F zD{Hz$E@57c;J|k5F(tDLlMw%Y)PU3Z*0q zg>ho7hdFbd9YR_hniZoHot@tqMtR6M)$#sTEvKtaZm`9zY^!wlSc~pE#iZVAZWM(2 zo#S`>RS6#dpk%lcqr-xu#1Fzs1tL?JyYC1b0j#5M4BEAbPP$2=;2K5=BqwnI5JT^n zf(n$$RUG`!NMcI}el*K<-<#Wk(;`?16WYt5n|~5bG9r7ZzS;kIaI}Tq3Z} z*IPtE*s{*> zVA4)|l8_szeDu|=bO1dXFz**D^p9t|pLfX=i)1v(vTNC1CO@)>%+QJt-vCyh zqcX1RYSV;@cn?S0zPC%urA05yV(eWrb5^f=ntOoerWV`I=9wtx&J@W2L;&879}T8^ z5E65yqunu*6Ls6j6Iel?w%&*Ga6gqZX$Z0GNHXbzsjF4${^QYhqT5gdTV^uQbUlt5 zh(O~9i9M}chM^!64pIg*X^cl!1?E$E(tB0WjSa)in^$(pkQOEB3olvA)NBQ^Ykz+mwnlGt5 z%Tx+V4C|k@2`!EHgAZopj}oa08!gfr{>PRXQPf#ANb9ZRB73S=_zNXddJ~wR4GcrJ zANAO?{M+AERS#-2PlpP|EcHN%EQcWHx_DyBC2YK_+9B)aU4Nfb5-W{k8??}H=J!<1ANJ(565Win|imXh+FMe#diLh76uA+9#o}*mzkJJtFRcm zZj~)Qk55~Wam#dAcju!!$gq@#5D{4LCL$uZ$Zfaj7~ko&P}9nJyqb5?b@4VQ8m@ut zbpg5nt%6%CmCGdC#2!{fI@t}+% z&5n*2{8J4`?X5>To_lZb5m_*$9(-zA;gE_t)Kfw>l!9Vee>=@>8YN~NUZ=Q|3Yh2U zZvcE>R5-FR@`ttA{uHbZ(1RC@Kh=fq-RbWC(qEhp{>*jD8nQ>nT0{BYWdcm1UD2+QNyXT{TI|JQUt(!s*1NEd`h19vb0Io;Ns zI&(+`?LTe?b`^9O7G+zcZL6XJ%6l+k|W+wIl-JE~fl~ezdwprBa`0 z#miIw_6$v&UY4--aq3y?$H38*-C|+x4s_j8oXy`H1;zz`i2|f-ge|GGEyeK7stbr5 zXO>ndbolj}T0bT>$`b>ZXuQJ4b)-g3=4C}^4n+!maK!?1$f^(PJrA*wf^35WOfiuh zJK$A8nchV7 zmgfWJ>1-0bJX=Q&SdG$^ZhT8X4ZH^0BAxoR5r!+VSOgdvI>V^$KvF7gzny63Sw+2aXSl5#s>q-5xg_MY$^l` zFTfz-8T&I%Fv9k@x-U%t)hGe}M1qA@k8;_xXqZJCR=!lZWvNkpWKINdQsq`aE9KJC;=Db=au|v8xtzy`yj~HZ~1??B;wG{vHXS>8QZ&I4ec}uFd{vB!rr1Y zy4vB~u+fKIv({#B*e9y+*OTMvDtmI3)gW7_WDe^kLLZ^?^$5(y;e-emVR*KX4o;Q) zgMFm7WMVZFecHyfL<(W6q2<;*>e*P0X7#3@?qi(FZjEtz%k~HPqS@gN>53A42@|s~%i}9s zIbcbzPYpYvWN?j^R7FimfQDD)H}B!%KA|b-;;FL8KB`l15vGeVf{%!2+ClP{NBaU@ zQHk|9;yt!NSSlijO(k%XxDC33%y;W|+Dfqyl-LG#;6fVM)iFQc~~Df6MgTls)9AWlTRUHT6_<(q{AN z?0H0G%D6|5Qeo& zp!?+FU93;bz`QKUr~4!Lz+P%+lbOrpIVoecqu;+j*&~3QR8BspFYWsVZMD&3&d>ex z&Drq?N4VIiz?YL?48~MXpn=6T_jl-npbC<<;Hd`C z)Z3D+g_I4VsQA1MTwp0)9|yUW^kF@X5S1+uRxT>gl*5?Z_r^g}z(-aw%d*aNP82?j zisvrhV`*>fA0{oe#BoHn)5}gjM>ipPfS-t?hev4|9Z~hkOh?<`V4d!e=1jj4rZ8Z# z?!uVoa$em8X@pRuXH&5y`M9#^C{YL#)35YSEM9(vC@Qk<3NU*dy7aC2tCR{=y5Hr>v;0 z?JKS{sCMRRnrb`6V?*%qN}LZq%V zXD&JW?f01`w*|%%MQ^Jt$MW1t_jX>N4P-w+?Iau~@|0Dbd=Bf#N+)818k$O)(5UTD zSEs6v>E60^bgVO~M?mf}1tO2^Z%b7K4v_X&-ogq8oTM`dl?ud<@V!DU&|VIU5yOk6 z;i1S_CQWJpH^Rc*j|*`R^CjEJd;$Q5S;!w+(|X(SdS0fxXsTzBG7q)+nfwn=u=~yk zA!}4A=e8I3+c{V~S@OH&my(C`ak^YIZ~1+mX6nG9b>rzzkj_(i6%kri2=9Oc0#BSZ zA)VehFWFK`JsD7v`$1m_`10hN7&XhfUo7Zko+|`D|5rhpKbL+mFy}c6*>D7u!iOn6 zQuu4|t)*Nmkmf?G*q(*Nk3Ln zxnN;T7YsF;dKn=DFyogC%Dm&RZ=hEC1Qf}Q$VOqNCaSTGFg>%PyL6$!L}VerL}sQw zD(ygTDTB{oY4S_PJnt^eUL`49We#s>=uAEnl*02BEGL)Gx1ALS$xqq@6e{6J47tRY z-sFve`=r<0K%!f_yD=Dl1Mf$`4G0zDJAU7YU3Essb#(qoY@av5-c?oI;A9P&*uA0C zkZUS?xT0*?k%IYG_T*^7y%sVA54Ab-L%uY>XL(eh3k{Ncf^o7d5;`)9{RrnQF|P&K z!1Y5ORkMKHo|pR#9*rh5(1FP!gVOiaK+-ABozK&Kvlx0>_5RA_`krfT-4P>%cidwp zOh#i}-5%>&eO)0w_LCWj&>;!5m7q?vPdm0Dt^go>5)i9jMbhZ8H)1(oddY6BH`zx4 zX72LQcj6DlcoxerF$I@EJgw=I6M9#RX>2cLWTznkEY-#sb{Y;F)1VZ3tAv-GX!DIy4+`Oi9bY>!Rva45OWtjTWpi4+E$hCXrfS&H(F(ZW55897;=x_A>K=vMY! z^4Dcb2FncC>Lm#TlZUVj|5IdHpXTQ8O;G(gE7tk6j|8a1&i4|!n23i1W82}yAu|^E zMGh-O)VLn;ui%!n#dxM7e%@-G27CyVh|#JY!70?d&mYiD#Z0Ukky`kBOyAX8=9>n+ z)(%83$}Kz@R~_ZTyHiQ2R6Wx;-D=a(glqEs!A-qRqpHf2ecU)|=X&2mteUr4TFz)d z5jMVqWU%7zY@pP|@xSI345;w(h@Yh~^7qK6u@9V7w+#lzyS0Rzf*n)gXq%t|1XL=H z8``c&hK#7jsrxaq%%BxmgAn6R4-@V#B%QY*mdI+}Q5T==D?%}9YBs)=c-=*8shW3d zSE{zK)IJ9i@{z}RuEh;ouXq497eRn`_`vl5V7ji+7?G>vesT(^kb#;6w~`At)Bln) zt~{DSGaHxkoQ6<;&wq{D6zm;2^(M+O$VgVDyX5eDgG`br%IZNXNwb$txdr!yC;>)w?O(Ix1y^EOugx;oHVP9=GF61R&Ik1vnHuNx zyYWDOtqgpcUoTN?XeM)e?;=Y%>6%volOxLA58}vVgl+1nYtQun#uHl2KujeCP47zC z6hT26c*Mj$w`f7KfY%-WNZ7d8NPwNx%okMQ$mr9}G%qICp`b#8b5LdCI`s(0j9coS zxaF?jB#r9!e(T8VfJ_s;sq)w$~I z3MPEe8>iF!$`J&<)hv8=^W9_dlx{4BKm@m#)hPnOI7mTi(s5oRl>r| zh&a#|&GzK`Zo&xOy%y;N{j4G&y3bxwp(}#k-l#-@bcWk`As!9axrjoY6$Wa`wD4DD z;Z1Py{L9}^YI--$`iE=sa~kMFh<)S8ERh={{1E@F{KlZVXJ9le9zh)qmz1pX1autW z`xAwkb3;eWTy63lv@0s|Bx58^em*TV>#jW>^)Hm1qd&jdpu@yxsJyJMm|SYWvXRi5 z*_-rvSHt!cI=jg&oooM(Ts#s?F*a!Gvp7y!g+3u3|P&ZCX^7zrDLWj7z z!Em{V0`LqiIqUr){M?=VoPij)d{AyZr7f*#sDUe_y~TOk0s@j3$BEmMq-Iy{aly=fr~}@tw}YNORLxH`E06?q z0VEazqN6D3`hT{TI$~Gpa@|C{R`WR$*~y^o$n^N7i6ecF{fyQVi*>@P4*j5aO;8W9 zHor+YassU&g{vbR;%fw-S=gy4c(vBM$4EGWA2b2)(n=5;tSCp@jLmL@QYzbz z7k`_-F6fO^E*%2Vm`zFSP1K1dz*6G6COJ&Dd1j^Rvye0gsS%AyzVqaEsR!gye}KkAdK(cr^7faJk*$mdmdWzhL3-v>brhLO(k>4?$;Y5 zqqb|)GyP50w52#iHu?bzEeM8yD!n+j{Ut04HSWpkLPx@6fE1+b5O{PRWX<8tA;a(?;2{c!r>< z$5g}+!zlJ~&n)o3&-J&$&yM6G4zl`oX;fVdv8Y)X6V?loZUhg-moN7@B_^Y@ z%FErNI8|c2^lUOcDW8LLs``V$HQB)-k^^2+^Pu?70~QkG`$5W_{8pG?i{Bn8&9{_? z1Q>G#2L1^3w!Nv>W&(-A)%5Cr1d7;ni2@NQ3FsSdpXkQqSfJ#+qWs(G;KBE60HI#O z0xlym`HS~~5W54R-vulHotmtAn?8C?hqD2Cg~*GC;=>%lct z0#ZCSppb`4d)82AmoIkG!*vWehwJ&K(9g0_Z})4mF`U-EQdHN|0;7PR8ZeFkZZx+W z;R8bqeIBUUGam1B5Og*=dmxZXzxT96J(UuCCs!;ShcC;vq~#VddXdhn%h=|+@GM25 zJ6tc&{uOg#p#uW>GUSxx?w67(Y@9X5jp+|N=&%-t$LM9ut9$6Dx_3wt6&opOFGu<`ja2GlT5P?J+9ojypp*$2+hDVZ`C@7Lv@=;oq{2L z^ZRLrE8GN{nWRpCI*0tPYXiSrV9i<;w*Y*H*RY6KRXX+?1jLHk4{tI(D<%UG!N=KmAj_Zn628$?Rh0I|B36&IO7jT5);!Cd|M-%3xXfY^B zOAvtJ1);0lBhn@w5a5ZUn&UAT&d(BO_C6B9N{0>Io}FhzB;>RJtjB+DZ1`MzIw%Kn z%(BFQj4xuTJ$63TiHq5PcmXNzJe;8JYCAZb(?Lcj9A={rx~F>R7UoAFUxh<-z6QYS zxV6~AtfZ^6LZYY}+x!pH7Yojtm9C`HHgtvU0Jn-y*-zSSYp&d@-D7+}3xNHexArD zfum-?K7L1)os``Q6Gb;y|5}AUyia;ji!R;;XQ&(jA2}*3u1qOSE@%g~OyvuG18G2C z^L|<>b4dpUrmryAhZ%A7cqT6C5Z_QxlVrK8KlPaM!*PSUFed$e>9cQ`HdW!m%0^+3 zRAG_rFdQ#4{iR=RGru~qPDV%2W5#g!s^45xn-`V1sLH`srs`N2DshmVUfJWnLNS)Y z^-FuPUyj$vREe>jD{_wY)urFMe!i%Hlnan_0XDJb#4Ov_0Woaa5bS4zi697Zb8=5GBI3-OGhZpKC$vFQrzo$kdZXtrlYq9fea`ozT--ykaXGvPXs?+ugJi3`$3+96x@psXglq%R#|P zoO7?+F^;oVR6vCHQ?-;!&6`Y~@SgR_VF0i-y=y}bK?wn*T|S9xdo9of24O0Rf9P z8^22vWj|)F#qiiZ$=1{ZUfm&=0-F==e;IZe{w-Jw5_9SxZQ% z)~I+U$jf5)+9|GVcHP$}Uo!=bU43aPd;l{*%)c-C$Fll0eM<{#`h3Rb))ayp_f6Yi zMb})J>gx1ro0T}Jlwh%8@3own>6!VsS5-S{lK{02tGynISf){CC!opO7W_3m^|VUq z?L~Xd9f2@?Uq_TTiO7~8K(h&3pZ6ku78~%j%5h>%-*I7!4&;c3kaq5=T4yXZ>ZjbZ26mE)Q z;vCeg&=v}}99Yvm)g?vzUWMfLRfjh@|8~N|Sp@lv?bTf`5)P!P>E`$rR*qm<#)1x) z7B;0HSD6=avgC&m$aKSeU?BDiSg8XAXCg_F8p8b>CA9dH8PM21tfaEy+HG#NOgTZ> z*I&;~7{u~5<`QVSSavcQ>ENgTMXjEJhAnG%W!%Qp?EIh92Dam5x6#b6&0S0yLj(qP z0J*;jJZ-PH9~2fNXVT?!%#Hho8_z3~5$uAz^_Dz9_8p6&y+@i-7R#-v^!9%e(lYcg z0cEhgD=l|m*00_3`${;f-iXkb)0;{hUOu0l?ue;(dJfAlD&u0VCL zw~XKLv!}3i(xc!liovma}Rh2?0Z3(tj&XAZ-1x`k}Lq4{uKlvpXta=Oz0J$WyqeD zOgf|GX6uOb**-Lgr33Vk6(!Q*^z`AsvUZ-; z0xZjB>u@Yc09q`z>)J`n&tNiNsZWBnqtCF}I0zZGYju=uk@<{CbI19^*=d7TOb{oZ zHj-k&1OK=e@)a0toLk=kW!a`J(GKam_Lnn-0XH~6k;fHJ5#7FeUu~RrC8J%& zH-@-?M?zbBzKJ+(sM7hU2eJz_kAH z9KFSZCN{$;h90|EdBH^s5Su+fY1Kpeurs&X00EIl7H;j(v|EEn9Iy zGw^wjv(7$HAlM?&o9W9-kWR9%q#_%uwca2Z5Iie>rNw}NE@GH3A{Lv>zKy4Tt0^Qi zeEw!BSHL>DkerOZd_q!)u@KD-f~^$>U+No0R9}uztJt$+Q0o))oK``R77wS0bqYdJ ztrqHpuxC#@>|f#63iTFwU@wjio_;eUmU>roAaf6+O@TL`G7eX#i>oRR@^)OZ|7Xhb zkPXLCDOPUl&^uBItpQF6Ln3v5VmpPSY`O80CQ~fr`>%i*LA|6-Hew1TL9&M8-6tEx z)x4}>kv)@WaJ}vZU0h|}&hIj-BzGSl!l@)wg0V&Q)n3w}OO~0=>f%Xcy&GOCEm8O} z!D)%t0~~mh{vFNjtECX`2f+$*m4rk7%*wC-KO4Bk%n04&Ul$^UfO%3oY*DGJWeP$^ z*+i2Dcc;%xc2@wynkU2lrZ*?N+_k%8kdiI#Gb9@IsaUVJg0uhVx(pA}H8uTXVPK?Z zN6QeSzZ%2f3y{{IJ5@8^rMT3-`C-|c6Q5x>t6($_`c=1U?!<3;!TXBQu7lMx-rtg0 z=?QUkc*)iUIP94^dqNDTm$`!ThQo(Imp-V~yL*#_K9%AEf$(b#NG-&8N;0@H{%Xb= zogVywc=1o0L!o_$_s}x@0&rKpQMml)$2*UDOy`wK$bK<*^*eG|y}U33=K;IQ(#xmP zC}y-IokptOjID|>${YW6-Ui6h?y9X?0NRvMJP0-+EIL3cI^wX^8wQhUV8_20;eF52 z2>MKK&k;+qZE%u-vA6CRwhWKh2&?s?BL*g;e%-#=D73itB%t~d0^A>oLz^~Q#m}e5 zEDycm+`c#dWb$2fwS#q26ONcRRooW6?Khdru}t$~dI_6Nd**su?U%jY>WqklhTxw0 zKzq<68c z?=*%58WE~edlCtMBOg4ki!Y`w)`+TjTegl1!vTZ;rXFkgS<2vayVcFDQT@NZzYBxU zYpG_D)QC}SrI>J5)gwDwaS(tO8ZRj@J)C8K-Pm(2M@cT7xnVc!C!C_$!-`4Vl(Q;6 zcvuOetH>|6Nu>~g8VZ8!SiXx<%a7{{D5tt+y8RHtdUBGcC{cW%81|x5+!g^@MM@La zry|*8r}a96904hlzEcKTgqFOdL809GS3I`J6_TtZ{NF#XOcrsk)LnsidmkP8IzMc| z5O2oiZO4~shXYgR+q>`R2C~5Uri8iK=Nq#OZie0x=F zysH>={@d6)F8L4-M7uL-Os5v*r4I?;^^{qR;0;ykhdEDqciV1xJ*HD_OhB>QSTXv` zQb#hb^1G-VP*>eg2L=Ic;mmFmZ{}152B>FYidUcypc25XE_zqO$F0B7b868^;QIye zlr&*V4fsPN_uQb>0~7;l)G}c+R|~70$EC;y#VLE(v-zg!js*Gn=F^|E{D~T>N|=KO zAMe!FCoK(T~fiJmL8Oy-I;QVfenwjnJ~fW zUr88fS`8?fDs;h@eE_N5HTO)!a_eBNK*)%uC|Kfwf03k5{pk5yP6Qx*pXcP!#cB{G zXVXnt0byQe#D}=|mA@ey{ z(@G_{|5JkC+@dg{K$Wj}yTTN-iB9RgQp~w@zEC9eH;7j1CJ+PL)PqN;V-103Ih)sD zdkPtn_#6Sk=faOd6tHynO%^(KjmN?_qDmAvbpI^ z@zQH|r*J}hLiXkIYYToCCBDIp>|g*Zwvy5^khINB+?yTuvWsMwiDvpj-{!v(z1udP zba;=s|{NPb?SrC(>;8MktsZtA5|KG}5L@HW`j;nV64=L`#>Gc8Cm z&IOv+8)7j$dpge@mZ<}hL`mf!R6)`rEe3X7 zvLoZ(@E&M96gte6(u3W;8p4?9QmxP<8r#^~_NP+0(dXoERm9t`vAo(FPg%9s0US4zfPW5W;i&%mE< zPD!uGgBLrfcz|N6eu0I(=9L>UwGI&Le+Lwyu`D-;hEL6B3ILI%j_{Nk9v>aGIPGBE zcqh1#l-GHGBqmVabf<>#H!OxUn7;jD+kjA{S_l4z8iZiXHuB{^@*6wa#8%hZJWkYW|K=0<@9WBY#=szNo=u@!K*uQq#sS1gf+1U%I62axj-F?;v z2=OT*=7;7Qze>EvpNEU&3-N@`ilB60P6MkGZhztc->T^o7mLk^a`dy)TcN~aCyfu; zrHB5N0pS5v%^>$8B`HZ$nE&ct1?N<0ol_A_t;yAzw-2F74Y+kgYJg5S9FnS?;||+d zWYC(hni2M{FhsFWPV(M4;4`OTt#)@SB}72#vnbHwRUcaFtqArE(FZ;_HC5JVnbfG+8`+`0 zO9wEl`X3-e%9a-7_N2&qDi_&m)^D`tMB#U_VU_$Mg~m$`k(jhFkqr}~TmU%hJbc#C z@BqBkbe7hEE-eh6R@= z6$M9iIOLN?LwhsIX(&M2%qoav%$qU6${M+(AB)tTo1=EcB*@jp5(2pDx^~gVm}bs~ zr_289RUU#U%TA6{lx(8HLw2BkCG(J$fDP^>uQduKZ?2_zfJ9F1<#1G4f(ZTbEz)&G z4Nk~F!gKPctkiKRI|7w1eyFv-2oA8EV9F7H8@{lI$V7(0N6JisD@$Wo5D{x`@7#)I zmr5W%$a?Npf9H-~Ues=CZ+ggm2sexoO9CrWnGzWMW6Q@e7P!~DIyYHfO)uTmz6f`xC&EtklKSD|pU)@z$ORrV^RT54D9F@)A4`q|p z6dfU`#cBy#$&Eg8H6@ftObY@;x7--O!1ErA4O;nyc&JfvwS^7q>8cpK> z_D?O;TbAtLvXEJYt7i0EJS|;A0byftRcafk`Tw)j{qO|y-F)8RYhPusXJ@{YN zeS6OOP0d>DTYuM|5h&@Mjh+#(7{RF@{%D2s;#j#LM~R1))qTcQlPvKrMiS(^e|jan zr-WXvj6&3iuP25GMU$xy`#&W)Vr?A5Y-|N0TG@w+YS{vQM-d~j}o5|)o=5H|DBGD!dQ#FDW2}dzMonkdwZ*?x9DzAH@ zRq$C0yq4xXMjN?~C4J5yVSq$E4&$^%0=|58sPynWx11ZxNhu*QE|zi3EHI{HRh*U< z3iAmNQeyAE&!KJ!de=>Bk>`ymZ8I>y$+c6@(cO+~D?e)?ZS__JF;Fr)Y#rBs-&_7E zeiria<_-O(sG17+^txb?CXk`bj+~LDCetBpA>Zo2^^YEqVhq(oBl8Sk7ndEwt`scf^H!qdS4ovYKFXbP;2ca zhZ;L9uL{qca^dda`C!ehRhUAL0*w=AIeaJMoaxn-HUR0r=sIwC3Tl*pfyw6PcZdj7r1 z-oOOoSF{7%{kkD0jBeIZE#&upjP$2~i9HcX=K5aA+?=0)o8{y&*JMD~)p0kB@`GO{ zodOcE7@0PGAnM0*j*gPGd7eLQ36MG zXrLK>r4#fuGk^vnfgA+1*|~)%99glcaI|EL7!auL#9heYWA>9jnOJd;hqjO88;uXH zJ`C^U^Wl`g0f5-zwVbry``XyK%BFvvdL}kN*Ia8Xvu6?-U*0$K;T#j9t?NugVRWiv zXL0v^r>X~B*}I5YA8iAD+n`q_6-jwy)vqHu3rD5f8K{D}os?Aq8Rm z!1mxhE2^38*h0VS@o_34lXyydinG+kXgZ=noE2KiyD0g0>7C1TWI-2C_|%08GeKu1 zO>K#=iQ2Spl>j_a%k&2O`N1cEY-`zsB0?=unG1ca6fh6%r4z)kid?4fktis*laTXb zv8DuuuLfO!y}WU%g)mqyZA8tfnyi5g=^i7j*c7t7b@~G*LsM-{H=gm#FY`qJg_p=o zk5AhLj@&GAK}W(5r``6v_7Yn5i2C4^4hM5dO$1`sqhN48eI|D?|K((mQCIgn7a6xZ z+M9J#h}}19u#T?oA=07Mz}*VDvL zactiFVk;g3SpII+2KFH!jUQ+|qJ-yqOnaAn8~4-tvANqq$*F47z~Vw@wLCf0MB7G? zMZE{z(NQ2dy}ht{nMx36m?ATBag>eO&DuuYDGiT=SLB?U1qU<5H% zrGro4dsRN8-zcbL3vuTi%GaV3sjSc`=LFEK!*Hut7)-yHG&B?Dft2h{xy za%KXAoXwd%sNRhj8KjkijchezlrPs*cT?hz<#p8v?wYkjHF_TMmx@xH>`p2c-Ic|- zBTU$!7glGXk zV7`mY;Y)nO1_KF{-F*yA=&4I2HCpdp%CsYX41efrSo>yDBZhpCPyA!rJJ*c-73y%p za>c58b%5DnpN6C~G87tQR@!CmJx994XBAPLV~uTCi=uBXn%yckc(EKO7u9D~Vv2Q8 z^=-XN2^Jfj%uQil_sb#*YusF@9vRrWmgC2`MQm}>48$87L%&s*Ir9U0Tmg}4OB0do zGkE9mh#!KcE8is$6&K%VyCg679e}D?x^!AOfzmOd1RsJI8N4>)$-4*!GTUhuiw~}F zZpI%T@s0VA<1tI>m-&A`3-H#K12MuKzhV{5>hGyJekwZq8mrGG711r+uangfR)iUx z-3ygWKtSqV5YbfN7ULy{Z#mlfUU9QoCw}sDf@8EKo29hXc(-IFFP%|l&;Wfx@(3tg z9cw_T)QA{3v>NH_eqOwrqz*dg7J$f-C_pr2vok1xkyH$hA6g8EQZb!dDXCJz9piY7 zMDJN?N3pHh*)0dox2C`>3|eMLsN@+LEr{TSY1ah@u^hk^&tES(jIPbGwLJ;(k`Scl zuFUy;*&|qXdA^kj)| z^pGK9ai>(xRU6D}c+)}cZG@UsCWPT)_#=lbErib%NaTENV;O=pD~H_HgqFw9_Dymp z>r$0p`IW&bkTW1Sr*$V{?Wo}D+Ye;V3GshiIzSEi8+`UjtwrL|pomPf^UmP-0^iG? zlJ3k#?w&H2);H$lxV@FW8f6G5enk31YlxszC=A?`S zi?um6^AqRaJvFz@=5%qAsGYH}l>-s1hiv?o+f;(G*|K8>v5#50BGj(9IQUOiXRIRc z0x*a5{#&xOIoD~xx@tHKy9g)u7U)@k5xraUNfA6^nzWHS*9|W(e$S#!zr5upbLr>EjwO4 z6;nTwVQC!%?-HX-99OA|of399{2uz4o$4DN4+N5YIuQVgcXgPL=CU_Ea&)a#7->@7 zaqTM55=o+)`j7<(pvWjnX0L-*`Aq|jhnbfLR}YvKYqX*bxaS!7v zig=f$!e}#3y2E=Tb3Nh_VZik`JmIxYU6z}Js*EWSeeA$RLzkJ^cOfHQ`HsKLD5XIm zbAU~$f<52&v22vGeZ%u+!({6o4DwEEz^~Ep?Mu2Txdl&CN1p&3IYAEBURSdT9DI`Z zoM&?450|kHYDe!qc-o&)SbHvSU@?1Q;{+%FiBp_aNTY%1l_|(xu0WJl^Z=-8miivATy|ZK0QwqAhBvd<3z8==6;8R z6OHtahU#iQ%unI|mfkwOXCR`EJNBc{wg#HwpBRwWZu>nc1i!?;)vCewA(8Ks z&en;+#kVb!%RH8*Xc2p?w>}DaLCEdE>ALSVk#YajnB(s0lLvWYajNsh;dDlkmdF44 z0M?s3r7iXS9%0`8Zv)XhD3;_ay{evMv85?h&B4;BDs!eqcG)K2{9yRqFZXr^Mv zDUEPcmJ+c)1B{gn(8I-426@5))H24Uuk|*3nM_Ss>&5;u!ZztPVVbLU?i>;2Q>t)< zBZQ#Ri&!Gyd~3PhqC2kRw1mrw0(-GoAE)3qUHT5&0+t@>jJDL+I=IgEt_Ty3q`JoK zJ+uCvt1J8gT04%mjwM-f+iED{nAs$+JDOlTIBDy7i7rP4A*)LG*3IS@Mudh3k4Pl+ zc{I~@Ag*;p&0#m@i(s+LRC;XoXO57O%X$6y&2*o8$@f{}&2PKfzzUl=aCnt1srv4f|0t0BMnPN=U|E=o=mBwk!r9?B2kDFUO)lJ$%CS zP{Bs+C0^ZGq$;h7J}TIZ+evd?RK7-h_hTMa8Qb^Hw3LPIv7@Kl9hh4$Dr0ns<{7P0 zw`e?9;D?bOqTu<#ba^uo+kAJF(2RHYnq>?j_73CJKESFC0&7}V&ftJ~v|Vz+g;2SA zXaL%v);4BXoj$n=7MmMT!Vs--QX#Vl2bc%+)C`eoQt;JrR)asq=M(f>AdlXAgGWg4 z1@fWIvvZ|FfgP26oTVw&gmSCqrr<<~k5Wum7Hj{+#DnIZBuqjK zX9OL0@{LMjT64Mm^2vTXNN$Zl8U@C$2HEG&wK(q6e~SrB zv>PZMOT;GAp~t9P>Iyo7cWSP85i03(iXDVGWUf(*OOt8E!z?1Q8v!Iei1&gOwKkjY zoWLA^%QBD+_u(5ZQGtFQH|B4wp|-g)`0w$Yr#E>j>`0q1PxB)t{>si@S6?Ab%$@c6dL0iQdaG_zC zFtmyVPb=UOoA4Ii&Ng`Nh^V5f0K{(@#~hUvblmD5^J)BpHM*Fbgh+HOdU;aVagA64 zZ5}xEb74lXy{k5U`6%!e$eKOyAmfX7mDZC);{?Q6>At5@)DlXTUOk+Wzs!fbLkY@y zhBW>ZCJK^NvK%L9KI;Brbaw}N^UuG$>#rSQOru1o1z7iEwh@wEZ*1GDZx0wHC0oyiZTM$a(@iz7UUS9Y(wH&Chip+g_*sg;c;<`DgHSO!|En{lWJ>8S7bj04N zR>d%CvIkZ6o%A%9)V_x&z^zY$<$>b2XfoWJ-9Hw;=a7z)wEc!^S5ves3T{NqNeKrM~1W#Z0LheCAJ`;hA(u@`;@#KrR^ zQ;5CcNqoiBKeyH7xH|kpBd@I@=G7bbB<9+VcRu@xcdOyXq;&v>XdN0|9yrVYy zEKLyc>Z;zj?0W|36+5^qi#8rtNKPzYL)6ZaOqI1+z`=zs4b9+qMSpv9{pHG|wbdRQ zO`Tp;dn3?_koFn7*;IArNVVs_CWQ!OH|y`uJAiZDjTu%MfNyBvO4#;S=UfPunp=$o zjAtqwVnUxY#pS-XUNmya?j$B8?jK{k~fZpnuH4uv*l6P$_MCr0;^0KO$K;JERGc;5Zyegz2{F5=A_}rMQ zgYZX?FtP}4rV6`OS`PKqLeB7cP@x}%<_*!MM$P3FTM_T_nJXx^c`m6>AsxAwt&cz(2!mqab8v?$$tXRzbrUttH&B?%`+@YZs5K)a4jCjjh>0tz|} zduz%8h<_yC|+f8HgfK?5a7f6AB&Au1wf-@^eaNalg^hkMzd=>(pPeK@ngcGGzEw z6{+s4`EGc9c0U;aT&2kIKw;)Mn(yhG+GEFjFco~pGRTHj4j+XloO!*_=nHZi(45|^ znxt)%%_yIP)aDAb3;~ZP<**CDD?^^l{t+`DN(MLy87m>JL2AN1bHy=N@#pK6 zl>R&NMM#cy@b8=?d42lYLZA(zK?w77u%Z(M3oB2tV6?ad^S0notso@e23XOq&6)D} zBz@&U>5V`8A(xr>P&38{oBy0{0cNS?eTEWb4^i08qygn_7c#k3e)?DBZCr^eRR(RR zxf5ZL!mRQ?)1~1q87$q>Ss-*c+m(gP3sh(SDzAxJnoyBS{ZYhwvPOxnZRCqrRXBxe zk_h52#e9GilUSYo{3nadX$o`}Gfw!*?i`qqB(53?fv%9m40VPa6H4`*PQENc`=?uvM{tRCAr}?*n4hzDn{bTc8>VGowYmHijF?e=S3ehU{386~1YWshx4s zT$TVD5t0tNh-_R$M3~~8(}fRL5iDOkj(E;ha)H!QfzI9uoMXOO-{==Y++CU*hacVK}c}7HL*u?h$Np!(MDn ztG?wnx5a*bG@;mvH{zn~rn1qR<*vMC_^RCBO(D$k>=?ZL~l!@`MRtp1U!P)a8siN!KbCl2DFn0%%J zF4=1T?6FE3kq|5|tmT70rC_Eanu_wv(2iW`)2T@Fer(cH3EVq!5Nj|qR54W@T?NU@ ze_uwJUnKP;2SP{~{OG@qrotZ#YU!mdHGfb~H@{d_UwiYfpISG?m7wdqVfNn4-r>rv zVxrbN#4#7O8jvF+O%abHuY5<9RN6en=fTWgFuX%(h9j5G^9nSprkN2qq^~kS+8TB& zpv2=8=Ui7Kp8C}k^W=FYp%D}9G52-i=asnGX$J4L0AT7D6h%pB3%TX_ehSAm({)kL z@)ivJgA9t&s;c~t^|yDf93YbbmPT3= z%x_Mxke(s|FPc7Ss)s#?fka8p*^<$s=<_h$cW#-l`0*zr35`RxSDR37`u#}B(wu4X zo>%R5Z706Z2g#BEXhzC>fvSi^iVl@gfX~W0j(-{&>9*=KREa7d+`?i}XhEE+qKI^z znU#T?sd-z9BNThv;(pP%f>Rfcy&W0LvzDd>s*13#81;Z?SbqDpi_oyEyHctwbb1th z?s4YU>%>iHVw4s8?E9eJLvIjiJJjVEHBROllb^%FJT$qUh58&S?`H3!H9|eBBU498oVXk<1Pfjjp|DV7g0U& z5x)qf%2w(wV6R#P#EWg)XyvF(N>)1dVmZPoyQZUL`+iTjrKpH?Nsf>#LkVU|@4Bk_ zr|GHeY1UqjF+C*p&XfortvkDFFuf5k(R1jOe!u#jR?0q89lWL8MHN593W@ z=1s#6$AHLV=5#m?vIi&x3DG6^j_jdP&X=rAgp-z&bQu1ZqHoM^UNU1@$OV)GyK!87 z@mFwAZiT?i+_ID&+V@r&*=SNh47cTZ#Ib+%dq|x8$RMC8vM|z5L||C$f~_q=CJrfw zOLDQ|A-a{msQLK2U}3-peBq3Qp%AC5SCWYlZcW3 zmwaGaQ*!mgfgP+8h&ro{g*>T)rSZTgKVG16bLtL58GpJb&6%B81ZBE)ut$O#^vs=)*Dwg<3Au+CUNCAh_`(%jFFZkfWdJy2ca4M@N+%FnbxqJoUW&FAD z^R$f{p&TJ>F^kFpKvilG1Pp5L`)JeRX9JG;$SkpFi`}5I6OI}qK!hevENR9bKfXg= zoqF)NA%2@&AT>+QUSMB?tm(RAAKY*&0aJiW-@ZKPwsjSiRlImkkttypq?}TWQ7}0d zqvq!4FIefEj3BKKluxw=yfPjbDqRSwU>#p3sOd3-Q_NljXbh#|q?t6=taPk9{uhQ5 ziXl=6Bg%!!zRja)Jh71BYSKpoXPzj4Zjj?M5GJXd#!E+Mg4y1VG&Sh4>1c?5prXNn6Uh z%NXE*O&IRuu@7PyED$E}WEtZl6B)6Pl=k}Rd{rpmjA(P+%+`Z*1u64KWhZxHunT)TXtz6+@`C+>cuy$PY8X~kEZX332i5uARnqhC zu)R5+_{4VJyaQ~Jy}$hXN!W8GFm2j}jb79nz=BNpTa&12sIo_FaFiMaJp-)qI{d!X zko>R^qv*H9LlgTkb{YGV`F)LTv$KT0K)AEDK6jTB5^3xPtHamhka=Eq_#5-)fsJ&x z+ihjZ3!V89A5B{qwhpG1o){Iyg$YCk*=%DjEw>yo#@a#szhOKuQ5SQ4$e~-i=gM&=v7+e+l3e&>a%~TB`G0~& z5q`qo6I{0jQl8sQU=rwJ<_)rDRYH`evxL55B-@q2VU7}`Nvbl#ALz&PZurX{BaV?J z`qlR3^0R;$!M2k`5vgqAcHkhcT)p~Olp!qaobW}sO zxr@r~nLmyYUipd&Obef(KQ6yWW2_TMHD3K$=+_|;8Vg+ECP3^Gc0aJ9uI&Yf=T=L0 zmV%988MWN!SlCJ|wR%!w?JLV;t|UO{EIjzUx)+&W3*rA{qSYtNv~z)`!yR*oQY81y z$b#Na7T>pQg;Zhm@#A5Dgg(_7S;Fj(ENBKdM7SsU&szjV`4^iB4~E4Ez%;UYf%c&4 zdc0!YZrFYMl~rI3op|dS_FTYW8k&~e%I0y&sR!kPoL*7Vp%kT8S}l_2jKKU;v; zfjGNXV+R5FtY~i1PSpN_4z5oPl|^F{x@!&VT&0DA=_IAjCh%stWG(AJ5W=Z)zG zWRY*;(p6gu5C4ar@gCLbSBj#wiJXOQd0;G_3wk6Bqs827xw_b@S>0cMqh|ntsi5(r z9d8t`u)PFmKsj3_6!&z2&RbIBdo}#r?f>X3TdIy;T7>*o_8pdFF2{uds9sAZzqgEC zlqcH;A*B?T2S_s-_%c`m1gWN@CVKgInOIa*z@aC5Dun?dHp3E*fKUc_qGHQw`no~d z?l<~%U-9|*&5vTd(_166aD!lh5~T^UCcOc zQ3CHV*7DZEI1(SM-BTO#)N%Hm_jVS`{hullWtYqc)9nq+qHq}4e(&a~cMhz#Lz0d$ zQc-p;DB-8S8lw|^_wA)B)<^AYpZ<52_*z6Tvp6kFVHU`OI4o%fjLn?`97H9-AYzS} z5%$rT@_Uo0PEDG|^LY=(u4x14rt5UTSkr#rs_tap?a)%7jr5`0tY!kl z!P`iX?dIVYZUaVg%n@Jlg>wKr%BN(^$Wp5in|y;ddO4m~)8uP~7Cc@Iji+a8Rr-j3 zG#379vZJs5NuZOwi}Z9Me7<{Uq9WZ5`WUD_vI4#P%6ptz zw9wsBp-M*qpv_#{SS(TF!>wvmx064au9`v}Rn4%3oerKG_GNw6NB1~*-P>p^;FlT>|x zX&TSE#ZAPnjv#B`oTP4=Vm(RzJ{aJ_CTPpfjyM2FiB}{VdS|wmFGAOlo6n&RNwq;E zdBf~C8+3YVQluzn|46Ojz$pL;cYG$7eGVkP42||JDn(|3E6EH+mZ;Uu{}#@-O&{mD z){0?b?|o&uv;CW(B;%}I`@X|Js6WomI0C6M37Ve=mU3I=)&AZFz>biIi*2E!MW=3w zr%Q3JVhJv~E7nPEpOEKT@qUu6QZqBL?`~ZMt)divk_o}RyfT2q+YegAedAa6+5n`F zSH%$PZf)>A7%~z^0t{)qc_-R|t{6j*E4rOo@y)MnYD-HB;%!fC*^u#NF&4m3CJ$UL ziQ1(6&jnw}*Y#Fa7w0O&A8+maPlo$m zMCjkB)X-k#&VVUEStIn0#{yqX_vozAdPDqm=PL>BJ@87p%$Uwwc#Z zlKm3o#3bZ@z**yR=FZGV0#S5bv42fDC-`W$Kv;yItw=NnXVAbQ;;_6giPn!TpZUR7 zpUVlPXQ&C$&uIx59~&9gidjAAAJOsNK^d&cAB=V}X?5U^(6auh6n=56W;e0uG>rOe zJD$`fZ9EuNn`oLSom~7gEzU)|D5e;A17rg0NNtFN+=^6&EpC9p#(9Q6)we&?<#WOq z%RT9YEZU*nH7WTe1^3j0Wyr)~S3%RinL*M>J-+IYa&+#VN<$XZWEb$*c#8nAfKw&h92P^-Cj?`gUZoEF> zalAeeWh75f)vLs-5K=|?Ggh|)f|)%VRaqn zOASz8PZK5!VM(nc1_B8+6|Sbe=Z%K%nYz7s@|lHxlT0<_Fl>53XU`QjsD)*t)}~&@ z8O?O}M>~OsIY0nO8c_(gc!TJk9770NMs)&b2qgc0N(sWG&;^>YhBe~vDZr|83-E>n z@r(rW1En3|`t}Zpz#yfT6K3yrW=A=Sq^P|c9}`O+1Mv(i;WcFo&rhf0gQ1w+BG-_S zTBzW_=8v*x&Qj~d$ zXM^^2x)Oif-Z${N*8AV`Hbxr#eGLQCrl3?h(KY^$gX^<4wSzq0aMJevV8dcw8Tut#t<&OP5a@*&gromuy% z4-FIU7E9MW5|X~7&ia#vOwgP3iCKMI*KZ{aD`7HlimQFph#Pk)0> z!p>_r{ETzqdQQm)!fWls5Mx(|cG^$)=9A-$w|}HXe#XqpsAW`0i>+w}1lBG>ah_i8 zJO7uPCzQ^cv0Dxk2#u&z{4HzPbli3IeJN^cge2&OyFCY*yI;!K*XJ zuen$e=)#|ywM0fGtx?M6O}Md6qC8WIP#_4dkD>FVsxvb`1a|(8Z&!yq3maLua@D^= z6A!~C?*ach-w1!irX8oS>RO^%CojxUmdKTb<_O~QsDV=-BF8=Lcfd33tPVXiG< zy7Cxz48d8rV4R?4*FSv_aWdse*8MK4Hmb3%)Q}``EZrs@$A6Oa|1=waa8g2l4$jt0 zFFIp1MwxI_xpFrRntxA}K11fzS{o9QqLpTv8~jC|xV8-%r;WPYc(Pjr`tWszno2;s zlwRfIswxVzaG&$SIA?qA8@-IzC?AEvUdUR~z6o>I)HL-MHB@tkdycy<5!~$`?BVZW zsCXwPHTprW6Ey@Kd|Qt&5flh3p=|%{bd?f@87vXg&bh-OAnJX(~1Rs0D(H(m; z*pm7CD57@lD(@ar-zIucs_rDWEsaA~>eNdqHkc#PrNkZa-vU?f0#`l;+v932@mfNw zqLPY`E}HjVcp`v*I5z{(5FC@`9PGJMK24DLou^K zJanPPPM1!D$3UrK!E%LxjeFO)TgJ5;0$)Ds)y8js#|FNo9e^V`NF|8`Kq83-@4ct& z*8NB9cB>^ZTlKB{ixY+Tjh8o*m;u@i?e>F3KtzcF;u&XXc&PrFqgwpAF?^5pyu}ps zrsVSkGh=jgrLKNSW;tCW)5FH5q}IS&zr`s%vC@D0&gS|RB_N&i5S7&K4=JPTIjRN< zViez75+<{eIT@Dn=Afxoa0ZacmvDIA z49iPp`!_^oSvq}qwXFRm&*;RqVw`w`seAQq#;L?HaiH@gY({Ac*v{S(1sw&lbYLS3 zv^Qg9Kl7Tbm!<+HD7K_hnD0CzGjQGcdu;V)w$;o@x{ak%`2I%kb4g}Gx4+b}@XpW%Jfy!NMMIrg z0$FZFPuFXf9^;G+%=qED1w}atbjiDK<$Rr*U7ntcddLx2n=-U`+<&ye*y2t~ZXhpm$6?L9>+v#J<`gM=31a2@&TgP)aI4 z42Uw?7&lR{l-l#HoPN9&iM%5*zaUEAF|)0pUqCeap6o^n;e1uT-Ry~ey&)gMxA=hT z{DWnF?0@Pen;1E=4`MjRp%3iwV>MO_6GO&=5bM|)%{_5(E*t@U`~os%{_(PJ$8T@! zLF&9*5%4dS&IcE1*%fO2l>G0oBIUD-MzM67uEiW)QEwE3CR2dhv4vdF)-@G^haYjG z;wPIaw{eRXX$ipI(JJ;kiy4?F&GwD1y8$iki2T{cKQnSSsh;#R*v4@ZCZcLgDl4bfQsZ!Yue@ZG-dFQn zmWrpWVT@(win3kTx;T zcG+B}fP)PE%1T8t^@QP0snEWQuG1D zy88230*+uOpsS2&rB-Fal63wMZIZUL!pLX4QFz^?4PL;mCnD%d1rEZbFd4qd{iX7-ON3C;#9mZb0eKsBJZ19*v!Ns!Cch}o)CCkVI0(n8@EX3CRxsrX^)fMkZF+l1Qc7T!J5 zE&-i}KV1E$V`hmle5eiC#q%duH91?*5k2EH3dXe(1Mkb0(UKNC_TrdUed{w{U=kIN%w4B;9H9NXSuKx$vb~ri}N2OZHgz?pN z+6yUPca=4kbw?EQN`G}^avKtH9Sx{yLSTn0CZ7+Dbd{z8n^j1%Y#OSJs>($C?R-`y zVwOGK2~U#oJTxH^{(K472pNNe6TM^<>R~CvcFZ6nRq?=PfjB~g#7WMG8lN(k7xLQA?|Y*uNT@{@o6N z<6Xo}+&6Wo8;lJZOTuAjk6}>g4UXeZ^=Qo!F+(r`?|PE?CqEe52+tLD4O?@GRc>gL zY!-0L%X)8TAhkiuGh?Od63wW;yOco4NhnB@tcnCJyO4RlcGf0LjxglZuL9D&5!d~%hH2HVTJGa0$4R+%r8MYwJ?hk+kwxp#8QStNAOwvma$wHeU|EH&(2mR z^2{S#x**CwBr-CFZ5unEZwb8hjQhLd5+yw0Ld7=vNt`{Fkt4dko$$#o{gK;E;X1Cr z5Pa&XQUtwtwd&Yy!sX$Tcl)242Uex0U#jBf9q-yx%0poa3T=Xdoeo`Aj?*G9bK}8v zfoOD?EP7v%u-VlhM^Hlf#2V>y!1poV*=74%nvrYT{Ho=h7IQEM+8qMT`t1C~IQqS=L(j9KFMF*{>IK60-cb&4(L?!G64?{lX>lOsud5yrx&qy)CMVVprQRo zM^HYdV2PH&Fmr==a980u=t_*f>7I>U7TYt9P*KwJBt;(;EuQZ>t^#L*OA?Pdla?a9w{G(0Jxy_#RC2Ca5Di|CE%&|(7<{rw z_u1{%>J1svPID*LF>Hd;A4R7R0{@osTe8?WWMAlujmAr6&$grW1Mcg`3TA9FSF+{d z0p-AOaKoVx{WD>pDKRXmoe|T$)TtYkqpr z`j|rVIqQ=0Kry=NRc_5QO-;)gW=s@PCb9U2-Kc$)2!;6`R4RT6tl-Bay%jd6BpavD zJz$co%w#10Pgk(<{oc(g1S+Ymp?8|>?A2b=LCwJTY7 zUM)oy14Z1wAcHJw24g(3S=#GNM+c_TVgdD=_1??dx6!!K_eGAp&>PSTcbmbN80w~F zTz;w=Vjvbbb^Q2}wqAHpmlN-& zfhUq6Sx*xl5W|3pg?0+~Ms`lg8lKJ&x8{0{?A=8pWi}_-6gz7!4a4(`F5JE5@T97O zX?q}ANqCf)4wd~{JBOzHjVbSp775k7Rc$d#uX`L=ZHpWNKna0?KGbK?&khvgaF(jW zE!et*UFqP^CyY-+a$wwp%oA`Kj}amG z-VpP3b@6=bt~)_quUGO+xDyxmRO9_!RS0`z{>X{;`I>x?>^2AHoJsZK@pM83NS+if zKl&@+vN4vvGt&%4#R1|~f{;NblGYEQ00XVCE@Bo{ePRnWzU6Al1olf$tb=5DgTE?0hjxMTuKUJj0iB+Hp7nH**|sPiNkRqC!Nn}QTWWCat|W(9 z@bdW}V_#Be9V~cy^1G}?JQc#WFxv7KQ%yK%u4y@7aFqi>yu0xiL9bE8;}QGR`uG#( z@6`agV)5O2!0b_yXd&$j7yVl{IY3~h3!N$a=g53Ia+xt#J7|@qTosBc7yy%`XvPBS zajg#Rt(NrHIhy&)RBis=SFBg7wQkzGPST>DW2D_DK_JCw%Cb&nw*^41Rci7;fFT{*!B!Idl) z>*#DEBK5W6lS}vt@M;N@017Iw;vlTY97~;Sj|EKwux1r_T%LBPq}AAsy&8R9ve&ZP z!~{|nB=;dN)1}7bht27;ZyLO4?@ZRi*9Fy$Bh8%a0_e29ZVHLcHr)LGpfeq?`geIr&{{XeP63jW&Up^Uy>4iNlV?~yX z^>v^Q$zV(HaK;#_3J~i4;8l@u%~M+X&68HL*Pq-PEV}cZsQ6+-j2ROcXc}-KZSZ!Hj(5wn#QU-YxtfXb^e4sP3Q-pV zI#qf^;_1Jdum#Q_S&WQo&dQvlb}{(eEmTpLX|m?ykN~!5jFzOfN13{{jjd?LhLCh~ zRYqM9>DYvWYJOL@vYvJz|84ok%<+#)MT58HcH2E-Rv=4{bRcxv%HXpn<3I*BC==Ix zJ5@H8!l%)d_dz_MOnCMsg<*|KxLkL(3@8f;oH#4q9*>`SK#3=_82qZ9NAe^#kQ+TvFhTyXhnT$5p?(=i; zFi^Fv)+DB;q5bz#=^YOhOzJT(zPV@Do~4d5(_yAMo-Wr4iKKCi!c;UDFu})wBPr0< zkj?|kFTS_3J1U7*p?uZuPU{IC#G<3J&InE(CHAkKg(Dl7ih1H0dUc9=q8COU-O+w&76Z%2lP{KSOfG)G3XibB& zJbfU4{e^u5G2@To7?rTC%UqdQQflMf1@9>hY`cEdcvru&U5q%Uq0s}NdErhBIXyG(yekbyp+JWEDgezm13s*%;;^8CC>{tc1l~pE( z5eTdX;J-qqVCPDp42Ta5@02DFgsr9g@H2&1W3(0QvyHHaN;+d!@_K@k<9Sj5c{_k` zEiPnxo&DBgSniN@+R|WesEzF!e>gp}}qtF|bnWJiRZyt|$Q{30|-{uEdcfN&M?x zO^cPR{8$sTMMX3x?RX=0nQooY=5<9%D!UiK5~M05=q`)}G-}3`osbux?g^>KqYj&D zMK~fFugCqw01L7ojiOw*)p$o#&j*eqe3yU-{uf=S@k2C|$}B*vDc*Ec8Xc(OeIP-T z=I1luHBg?24eR9F>`KR+^S9OReU2RwxKvwAE|ZL8hY`=YcN5#sJQOgJ3Nv55_x1F6 zc6m4i0M~({j@M*+`dSm!+G=th&grX)En&j`k+__< z^8adRkL1w|;5m};E}mjRthk`-li$Io2-Dv~P01&`f#Rv^!xwxs=|ylR9urH!uS$}A z^)Yv+yhxSvFAe?1NgD0VPl`8kjLR8M0!emBq2Sf=Gd~ws;c44rbHXVpwa&r%f*o2p za^0l4zlAc)!g+jp$2+#*#$JIIkb*Fo+KzepF0u6 zfM4vmYlp;)L!udcONu`f4tj8{LWSk(3t@SHP)J|pyN4okE*^9!AvF6*ZO(ncRs6Nj za}*$%AgIrIssE=)`ur_@48Rs+E-KT1wVH*blTqVRgYwbUS~6-+b^d%ocdqh4oB5S} zmcBS`BZ-t{R!;R+8dkc>EK*#$IJ8LrO>}$t-RsyCvHUn1rqDpPZ4dm?voi$;TBuOFL)*Q!SBQsWCCtNanJus zO;rqwti$IubijFF~#=OZQf|}dB8Mi_DY-N-ol&4~h2tGSt&kR*c(F`9L zK)u*%R_`Dyi+tla91?znQU>zKY^MB$R7MRx@?zATGRLJYD&2pCq2n%0bM1J1;x&^w zCVR6h-6O;t4@WA<%@hjgGn#FOK2un5*!I`()&Ra)WlF^Z;YyI^SG=rVsEgOZ*fPw%-t{r|g+`iFXo+cKvgSrZ3?|XH}i8TJe@PxCDz_$sd@oU5gtrek5)0 zl-phv9yQeU%VlHkKsjEJSuzO*NEKs~BSf|F&pje4ugZpt`tXE>COzk~*9x&+^q<8or?mqdw_?pcaw#eD)u z2^P%FXBE=e{;t@S38P|@z`N9+Ob+%IPMigzIGiv6%^HONU1LoOs}3 zxgX$B7B5GLBNias&h1?8dDo+j|BTYWQ%R})!3Hg6>3DWh|3ltlnCWXCsuA0CP<{V z$y6kbM>BMhY`JF&*hGaQkM`T?r=m-*ZgZGPQ(kIq>CSB;+u2KuVlFh87LEu}QAlI(>2Od;EtMmiK2^f||I8Q!j-i42-Q9o_uoN%B()n#RXrLmO=QKmt&P) z>#;8O1t#1w-r*Y>mofBp4fGP0sCEcG6T~a)e~?yfrJJcoCDv@fSB*}?f!BqPNZGih zDn_(!J&R~h$47iSfi(f*#|hO(Y(DU@`lz)U?IOz z3!Y5g!u?{OT%+D0>iZ`lq~-PaB#4-yY`=wP6aM9p2Lh9u!D5ADX297?k_+>Z+>nkG zk)6%Am|`1B*l$Zc_0LHf=g`>w+d;<_ z8-AN?VUU#!KG*qPuQixQcg^d!Fm-BPfRu4+|T|GDTj1jOaD@zx(5Xn0tc$Dc(kM~?;7RDO#(P>aQehdui~ zDChHe+C~aQ6Rv*5Vxo$G<<9wF_L`2iBNK!}NKdlF5yyJW-p_{ZJk0SzsOoGiqnn02 z2?75c%6m=>Rb0pzwR{cJFL(yzjaq~ zj~?#gE^tx|0AEx^1((j0#DN)M+vXsRf^b7Qu}Y(VGb<%B&7~DCLj~e{F>dfXn-2b1 zu98hVJD%e=bNbQamZyTdOLV1hSFpv$8S4ELYg}jEnPgV9%pG({5QvHpFs78a9!UhM zwV%&~;JRR_=HC7q+0(7%u9|Q88(IfV$Yf6jr131#^2GRs6)8}-@_C$WLCx1&E|L1m z+||#AG@+GAQ9=b+T()iM;sbo`bRBK=E;y-n2@qd9m*eyzKV1}Xu-n|yjB}u?69X)! ztfIpCCT-6npY595=YEUn)3|IcN8a*`>{5}nr7)0gRAnzqdveU}-RZDQ*MaLO8qEY& z9DnfZpT#0=@*2OuyTqBn64}9i;rZ)37_r4^!tlfFz}e2YF(Hyp-_1n|C{n8n&Ka~3 zaH;Y2Advgtfy_Z11nKfP?I&bVI&b3wEi|QlRCDlvYFDOiMc`+db*oQ=M~)=ccURnP zq^ohbPG>KrvSX*QL2bZj5b;RO7;N>Lyxcp(%02G+QBA>21+7MqLhq{C)6JPD`QQgo z!N~YQV$;>i+;>c{RtiTkge--q&j52&J+kvaKR4;zLej5ERk7PvrncoC|4|V?$&AZDS{F zY7p_vP6#w;4IFF!Ksc|z6eE#6%tHP?%Ylgf$Wz;=vu*6x38Zp^Nx!Jv_O`>6F~RmJ z0oWQle~YPbL1l4!FkdNhNX5k5=E~o1EpOcm6A_BZ!?taiMAk8D2W)u@=%OL==Q0-snEL(5Dm{05L~CWkrbwwGDzVF< zLLV1a0}U;i!Em8b+f1F{(WRzaC@)L`X!6k-L5&>*@t`uo)k-in)Q4PBh_T$74`q?! z1tjNwhC`p_d$VoQDZ^*{O=bvcY%AO@aQ}il0C{6Fr4K0`cvSK8BHYb(;JPlEz5@Z9 z?p8rP=P&x8Bx`7TEA$DY&`9ujjoXVHlVRQwtkTcrnOKnJLV>zs{raVqpSS+EVMXsW zHP}mK+fgRVjzA(N=5F>Lq2#!-%Rjj=aD2il>NO>gqe!VcW^{}IMI7{x$$TqLQm`rC zzn3Yc3UpN^TbBiiakb$e5y4IK#m`%v5XUB8x^)}+FH)+vX(*VG2sRIr=090v@|+KW zYvwd{?#0m#16TP%iS+KSzxs%C)i9wnaLe9cwvr@Kd~7;BC813gR&r25u5cjfWL-E# zX0!#!389Ne=3ih2yDU;$Z3F2X8h~J>j3%E zAFm?&M9e7%ysH`4%gck0P`gzuM{tH{#dbG4GOP9gI>~S_wGThccA0E}^cO;$5%B57 zonVO_Dq3;UcM>Z}Dy6Dtgo#XMF=jH)*ZID?o7OaIa$!zNDs>mhK_y&H?2AHws&%#` zGnogvctUqgU_STKVNQ2VLe;@h*w+!bNo{0L?rk77$y@-HIUEePU$Yt*kVvaObe?1b z7DeFCWNi$zNZ1hc|0`6MN(lO5yk9Eynwz@-@K;5pmGcl7gy7?bCb`eUt^hjD3V~>L zP4%iPDa;-&Q^4&toicrj9j~#(ty4NtCfsD-uVu}$-PVoIAC*W@r6n=^4o{JHL{ELb zQVW8|AD7Ni^!__rR0wZ_>;axI!{%qm?iM13Sd;f24oqkk6&_gmeCJKs_1f}v3PL)H zX~Ycpz$eu@=(F15)xnQgIO^oENNxw|oz2W(>wNZ_-{7US)VDqjbx5m0Le(%kLZnv5 z-UgK4D9DSpzMpgACsBcDTAKb3hd*Q->w&lUz|2O)_A^yHCESF${XZ;J(6h*y?Hm!~ zRhFeQ;8ZV(y9o~}WbCE&?Ti04XMmOvXeB@>2jm&MZ=XFE4kqv_`ZZ6cvxD&YJwSCMzoU` z2fVlMzJMSp7btZo#_sT(BZeGtnOWTh7$h2gV8v)K(8s&txX-E&IQ4&Gg`b`jYc;*H>RZ~P7V~o%$I2(4);SJVed+(R+kjq#_q6cE0YQn zjEqI?7+9vZuGBwE3{(J#S2v$uwKv4 zdIMQS8NHEI7Hb|4FRDv>n*RV0hMDu;kK08+s)SqvhMNO39U1#Z;`*-s@vvLxG!rK+ z9X0RK9X~-fQ+=84nreb66`;{E`d6{&X=V-JUaKR3qs2LiY%lVYNv3B7=m4=H;!Aay zWUy7tW5hk?L<9-eD>Ut4zsyU6F6qdbs@e5a5M4c=oZ=JIG#-whM7Rq9Uk8Nh9Qh|& zmZUrRTLO>lY)0|2l=LZ%+r^ar0>KoS!_UoPCbOj}{|#qlzq*T-)+LcUz8mqb>&=wI z!a(3nrqAtvU?4x>FFD-JXkT%ouw^u`0QH-=^!)}wUfC`u^JUNoKV7!Ovm zR#*drPTg{u3O|}yyGP?N8)x4uEK%hG-I+?q5X?o_N9GIdg*v^LPv?PYzg_ zw{W;-Tl0}CFL+!Khranzn-$y-X|#PFp(}pLkw29Kyx_u5}VPW^&X!ABCY8G4?BvpV&M?}!?@2jO`stfoP|Tqj}yu9$bU{h?$0Mj^a?k! z5OR-T)bn58AM-)ls+5D!hHFc~yC>`#xtAi+L8$&@E;FrSY&MvHQ8<7n+F)+bGKVgt`MGu`BEt3WIX3oS?} zur1U_mc$+I(FUF@JqjJ&7(YTBs}2HjL_NbCG+g#S06kMkpdMUkM<4W8!|b~Sa9UH^ zX_rlzhs|yqv%1B7vdx07TEvje*X0#*)o);|Ux= zGF!8N)-!82)+VVWrAfR#gx^C<&(VvdM7UIu6rCPz_x7^Q@SUfWWeoYqWzf}=HX)zQ z>)=oC#ifGbPBeW}Q4q9K7CX*8byfU+8#VE#T4zSRImXZ)$l0^791OuTsc|X;u6p9wp`|?Cb0qig|L1odY>b3?ZbP{B zhPMw?wqAz2dmakgf-B!5H%Da!n;lGgS}lLg4a_96P+8A^_3lv7v;T3HtO2@nbZL|~ znaRDq{9YEIC%_(wY?r#jTFWyb`_zDtcam5P-!+7s^x60+QB@eR$kGrQ?jq3k1>$?% zsaCU<7b=R4+FHqEVy_3x4MkNv&D2$|RHl0E2k5~-ItmIu0}BeCiCO#t!#i#w z2k~_J1lJt?{79uy1u;^;=nzNCx;sb6e2c&0|D+a47Tpi)x@|hTbzh*bWbDV`XS;wE z5KyByPb*@$&kT?{x00dzm6)BIE@Z_I1w}b=z;-FZ`a*sw=wFt56R^O@oBmD{&+eAO)DgWG_X4qz z=G42d9NSp>Y^@ZzCB@&P+MVxj@{=GRCoJ}*?oM@YY7TIvyeo0f!go4@`pW;5pNgb7 z2v1nJA?fjiWU!^XC>rXXQ(HTQ=6o-p9!(W`hOnYmQ93AKaDQBT3->XlFj%By0$F0B zh%9$+=F7%eFnV@a1o*-pyP~Ags-* zON&EEeHr4-{o+2X0L!ZE2spCjZ+;D`fva1gECOneP2$h?WR~$uSca^DvMXHAJDNcjym@A&-biyg>h9ahvexi(D-+HSv&Pt-UUR~ ztd%luGM9+0`K6wCYC?cACIL?oto&}+IF9vXV>arz!*<}}W8G$KW49+bO+~02_-2JP zz9|W9M0N5_w4B%B*VG5;9&it*8<*tf7qQOzXhgx>-cwV|KL>{hzJ*V7;Q;OXqlE;|VvXDM$;BXq7;ER0O#z*R zxcVCtd+O|9;o6qLP_P?`$1$$J1a)*r{LqlMIgwF{eN5N4R(`Lea#`FwJD-3Db0}XG zT2{b##}*5LLC8@u&HWP1AnN0{Qf1$wZTlt$sb7Kb9l_Zv5tE#3AYJ4*ezdeZMMt`r_WUqzer_q> z&rBop4P#`o={tnNM02f=C=wiZ6W*RNGYX^cig2j1bOfQ7Bp(zOZ6M$S1glP5ncwW= zdf^Q;TnFf2FTFyBNQk(r3n1t>L^uVQ2`1tf$`d7tKJwag1YhA%T(T-UfVV~9Frlvi0jry6ulXI z&EY!W)kP3Nyqtm$b&7Oi{?SW-N`nX=jm^hoTfX?|jetc@NV|^(%O|wO#*B8Z>Q6bFz1g&cOgG(=h`HqQtKCRvox@(ioRCjUp&2 z>>9hyy{E5ZHe7bsX!Yb++nX|nhh0z9+i3B7>G~C%v=!Q0W5rm@!b=i-d;K#KpzwD~ zzl*p6sSXq*?WFA-iuz2>1bG@ONOe)t@b|= zzNNtWjM!23xIBoL9I({9*yZnCFJ8-69!7k(#=oTeOwFcMu0=h_+Z51<-Ro@I)70FS zeGaCIt(W`VkWyJ1iwdCM)`-#8+Twz0)GZ4;uIFrUzR}Uexrb(hhoJIw6{obJsaC;}>vI>AzJawN`^+odhgo_SY|8w4g z)B?4v_;;c}8MBqBTD+$^aNn4tUNn}*5n}xE8E7%@S3^?mN_FGEL44CdgM6F496`oX zCyCNuDw4yxx@_@x3=kQ#Rx>ZyTP9wV!&~~8M|ThE9Me4cm9nhfpjPz=L2_JNGXPSVp8&*$@fKwvPH!eJM0Nd)P0TWR%lOO(m#do-VM5K;+aauF)Lt}mmoM3 zbrqVNGxtp4kXOe2(t1c8U+gk?(IuVK9UX$MN%Z9jp%ichF25#t+342@&=(Gf%0Tiv zxdYa_Lj>E}H2)@%U2Nec90Wa2AFCtvEL1z@Zyk9hGN`gH;qFLpvD7a$7V+s zX4NSXy*T1Fz0_8bE?`a$Pmx$+)wA~AbVH>2W2K=lyXmtC-Tuy8L;{|y*Vp2ex%^P% zYMqztfkQ#Hxg8jSxfr!?di6R17+E5ZPmiXU3cuqJ>|IIx2&;K!t zpH$L}t#%qa+d&zz@c*iA5IFHVk{62CPk75FfLVOLgLNdm0G5rL{)Bbq`N@s%8ViB~ zf}b*cwJwbjo%eKBD;H`~cG1Q?@OC@wU}_^Y*BD0|;M&@JYD*u$RC9y)Yo=TWbG83r zq*>nlw0?nw>)%Nxh@)LPo zm3l1Yx+w2}nv(SX!vKM9k&T@`*>2Y$;waT7(5+}6T#(PsIDC5nY8J9+&VZIiBly>#UigCezmkiWED;4f6xBhin=yj zX5uotuhM!ksMgpE8X2C2c=Z!sfrUog2S+CC^%}N*v zv{cmZ9x9J-;l0bvpwRuK$IfM;%U$)wi0xOXj&F?3bVEviu1qNl3aP_tv) z>TQ03WVY|2({hW}qsNHFuVPNBMlCn1958`dv;#tY5w9PgsGtuZK$0MzuOrn#x`Y&n z4^JdNPX(dhAe==ZyGNdC5%-4=*~}$%;%wQ%FO>ZA)FBo}RZH;YXl5@RYAHdl{nb7M?< zaghlM6sI=aSe}HWDmSDEkl=sAg?x6$gih1)E(m5%vaytQLp%}>^?k4+JLceg3oS#7&2(N$+j?|$lOB14)a8HOeL^k?LKBcw)p8c&)Ob{br93lwuMlPV_}TD zmR0#2Oy%DefA0R7s5PyuL{yMbOhGYhL^w!c|Rroj08>vyOrRpExu2mdd(FjP&< z!NbRB_XZ{a>G=L>BnLE%Pb}B5o)}Un4K3luU&C-*Qifg_bx8wUL;8Okrpd{7AWXS% z{jX^U)cnPhj@UIs+d%`~@n)@`7LWJC<=(z`eu40EGZw}NGg7^fvrcr;0~Eawo6WX| zOqQy+As?6dM=TPgjL?<720ac*y|A^gA~O^5c(m8qNSL(lw=ZcT5T|MKssT&J0>zKcP-=+}s5e9N(pe$(^n>vZX zQ*ncxGIy0Ng!P@eAmFZH3<(Bvdq1Hkv>*b^by?ksZ~iMNo@;|Z? zlivqnx+)^YMx~gaJ4;zh{?SVspu=!~xBdQPF<7U^((U^ME#a=lpu|LjlM8hgSy*YK zp~3(j}QX8;7tC({VG z4sf~yf>@O?YBfIdP4W=%mK7Cvy=v@%h~AVA61X4MBzN-H@=g+a71)ebmBn~sQ~vdW zA11tHL@Oy$B#Qq!qE1YM_PPeNrP2hg+4P@P0kDJf59x5ThT8BtZYUk2UDvRQzt>-{~2Sm%~7n(cnt7I}` z+MVC4KaY^+`jm+GaVSyC8&(;=CO6`97>2IgR_9o3Q#HTU5EK3a^a{~jt(5oCxE@KO zvh4SP`I@FopQyU6t$`|!Wc6pT9UiMq=m)L+J3c4v-=I~XQB#5!E_p^c1M|z5-sTo& zm;bWcX3_#uyS`yQZ#P^|@alIXjvYJySLU!;P?GL4AH_IXUr^Tki~%vo({ekXyS+3M zm!6zMVEnI$@ZzQQLGO=wX#8^6?=E;3{eEm5Pw6Wc!txZZ;VEtQ<5 z)d=(Qci!R)6a&HDrko%nWXMo z4iRp^-tO`HlIZI3#~#?J^<5rG?V>1hL|i1-A?_5u#1RD8=~H+6CN1Eu3CAJqWF&M! zT(yE{sWTz!pS&XJ(h+))DBk>ytCP?@Lm(a4(>P63Wu~#tRmE+^QN4h#!=)!GssB{@ zAQ_O&_K4AT#IdD?`sS#nEa@=x93nMB@!ZrrG%wNwz4ikP>C~CDfyc42>apR^xUO2_ z{)_($lN&@GII@VdOJN)5F1dKvEKz7vo}%jl%#Fbr8IT^RuN}5tBuNrfp`9XX1t>NE zoQU~%3y!>0ies736(;2$;n*z=vNX^p+B9-Z7z8Xs5@n8F2yyru))SoqM|klCv^#n-Ghd(fNd88`c- z*-|i?sWX5tm1wE8%B?Y-Ja=zcP0(6&2#*0>%MvNVLV3HCRPI^qyD?MiD!IYwK=?t0 zV|)r|*KKehR3Uvt9m218&V2UP0-xyJB_+G1X@ z@-taeoYy3L(foc**dC4E9T7p)H@9rsDBz7iWG#g*jHofdelx?VT5H?Ihj9TC@#)Bj z*QZ%j_*tgns0#X&__=tmfXqaUfFThvsx_ZwZjb6)gfs>lToaJAArtzF;X@~lViWy< z%=*P?smwQ#0xL>aUe9^4^_W*=sPNq#VqSLtGQQaj=va&$KpwUMn`Y$`{Y0;Ol>#GH zjS+J}4Z2{q$4CmC#UQ9P6j_pF@)Y1Rx-rm8j4H#(V$6TB ze_TEZ*d*j`?h+DD>$t74rB&}i;!S>0ytpC9y}AZCuN( zdu{nGa^aZJ@`5~J9sUGLSAcUPUj5e9s$0h(A2{D-GEF}V%Sf^N(Oy6{&6X{w-rcP5 zG?`^ZgXaPm1zY%M=&{Z+lslWnfAe^8z!dO`{cat_sw3-p7!(865)9wJcpe zXQIwYcay&HUjPKGRN(jK&UXZ%Id!(;um{5NZ}_bqHflq!uT}HdPS(18Y_Kht&u6>o zb0EdhE;VEjZ#qjBE&1=s`fgH^#IOo8m@jD2hmXf`yez6RVbl9X$%QQfBCE(N5NHqg zxbDln3nv$^8n_)w#Y8KZC%HSE!?xVMw%)cPC=%)9q;E(YA5UZCbcV2%vkd$&I{K~% zYLy&rA1p;V?aa%WEw^9?K+5u5hdK0ekomPyOpR}kYL{#SSHFJpbT8Bh{v={7TGysc zl2(I!rr%w3HYxgZq%=fKTI{x@IT(-*oXjujQC|dgV!yV^>(G1xOUV@IMP8=vz?Xjk zM^#x((kg5sUSmQiI=wn&kH1#927FV-Z+C zWb&2NfwMHh^u{~Un7;|GL)WFr|C~i>CHA?`ow7CpVrY1t>BdC$u4GP+^awRo!hgg- z`!1%!=U7Z>Z1vp4cHZq|-_&e38jjvI@F|OfOPVM9kRTI7-3oZVdT+!UAp=jmrX|&T z5^s)#RA9CXvxz|MDoy+2jDh?|+A*N@ZQ9b*;T!g%`qb^^^9%@C<1Y1IKYvY z{uVl%(XgS{zV9~(|BwK-GWs#8JE+oj9Qex2OLN#Gah*g6PEcB1{vtQIpP-_gPnyv8 z4@z7u!7MPgPF4UxK)$~R(0?_4RwM&d*%%1WVEUjeL@>6AFtrEViG8+1$hLPBS8XYk z_M^z96FmsTGSF}gRSwWxas+nvm67LON4WW6*ztF+k_AjQKB9)n(FXy@gD;GV2@HG{ zKq+yKYAhaOmGSd+<*-uo_X)9vlS{4~b(aA$Rz$wn6W#x=mbZNRJLi#mCZnIQ9NFYW zXLJx20lz$w?XI&D5`kzvy4`xPouss03#egX_Sw((e_Gca3z zfsCi7(jWm)f=Rb7=rhv)pBJOYF+6WdMGgq-^S(Rqyx3wQQ&`s@wn;`7Y&R|IHRw-h zZtX@Xx918mG5xtX+w(+CffVc_6{S&LLS1@14@0vH_ghKvxH`KMS3ev#Y?6K^UU4=m zlJt}}jbb5`7k?$q60DI9m7~J8*hI>jox9leX#M+eHZ?kCwqZen@Yl1i)EZmr z@dn$lU}bj#RD?L4e*uJKp+7mVSc~^5vpu`8y9P_tlgMi^ z9(L0kxA1C{JQ5Nl@TbbFEmBs1B%z7Ya#JMTQBu;W2h_ zn3pW^#E6^Gvm=ioI?dn%7I|^dr@?8%L(de0Q`WxR>pI65lcoQkxa^t9ecP?bj9@W9;Uu=4=;o^8VVMwc9len$oay|j^f?!oIh$`m9f2eP5Im`fLB`1 z+NV)A6lzLatmUy(OzIZ~n!#nICgm+WOl?@Q`5U#97eJ?epp0bACc@;WkGYJ{D4CIl z-RR9S$9Dh9C{i}{kd{g^a)Zfa&simUmj&s3`M|BvKbi=>;AKv7X>l>&%EDHwC%p^PVK| z?kloOh6liap5s)GHPh8X6lx0UKbX-7~p zB5MhG9K*2l>>_}0q-Vc9gWUTG?L~|vEkJgMo3faB9IC1#Hscf>;-3%s22+>(l;uAcffX-3@8F*s&HXj3UlpN}M1+^s zb(66`>FwptcOm(@Vf)TXyM=u~!&*+(OJ46R5n%oxhrrmWMVmRBdq<*$;GUvEegp1cW@y#mNDkV=t82M!fF2{r+UPgT6B> z>l}7WBjSQ;^18YFUY1~OElb<<9qqq~ipSYVfwvE(@|^-%RWUZW!(;TNM=5rY-5z=H zi_;3aY-OFjYlJxy3Oqc`@v3ATzs5dEh-fGEZ(v1x`f-xkCPIB;aJIF6#BruBJb(?} zOkXo=YCCm)-q#rHn(Y)lE<&AVSMFI2)FvKR$k8cpTdQ^?8*zX=g0dd`ilXYg1HIpb z;b|fC)SKJV^cj&2l)dV%ZIO9Syn2cOyEzY=RJ{4rH*}`#gJaY4Lrw zfD=-{g+$VBzgn79=7eMFc^VEs-VC8$)_#GR2oYPuJ!tB4EyVIFFXM!y$`SXrZTAZ~{XayTn+Ws2CFHP?5;JwEB50mB zY3239M|EUT}2mIXM*>w6u{0^P8GY8`k$ zKDq1w!xy%abo7~slfi&W#?P*&0R9%}fa(kwiTb?!ZLlVplxrQs&WENnVs2EKArf+Kh$4GlOXZ>E5r(uIaIDQYAUgW z8DdqF9ryEB5n`^Jo=9A?mlhC!YMWkv-EU1m2;(K}`{}0D!AJ|C&>y5w!x?jdbre^d z6na{|cF^3+J6mXZZbKED43g&hvwFXgric+LHYPTFHI`quM!IYCJt#kwt}YAV5BiOC zIV6H^^vA=%_wVYCX7dh2Ufp=qc73vYaE09K_!O^)TYFzEbuHyX)bmOGH{c)@VEVf9 zD8W7<7Wn%8Y4?^}GT6~*I-v2H??Re7t!au1%iw&^YTsrhFe4I}e(LwwmustJhR!z= z{2msmfa03E!5wH#X!o!{e)v9i`g1Hmb?nuqzLs~?-^z8YtY`~QF(^TujW_hBq2ITO z0BWIw4jkaNYd=t&d~MF?i~j|3s-1Cc*-dif&J)#rtRArM?qs>r2on*Tak~@jpmNTbH(#*y59UN=b0QyecDfSvEvm>N=agWcL*G3G6gzqCr5@y`Nzl>Qj z;`dqMzw3~?`;U@C+%(Z+fLx>|9CQmB>W_0Xp9-2~p=cZ|D+%>*w98oQnC*ITL0+ys z>?ueTER6mIX$zGBx$ENdv{X}!K@8qdJ@vI(Hn|1~+!4vl+=b$^Bmp=}^m~J#W2yN! zy!C!L?nis1#Kjf_)g8Xj)m#}74lF~g+AwJZgB(5^&xoL`&?Yk>5WbQgH>Ez2-mX6_ z#23WoYCTGXW0oaZxe8fB$V)dq$9e_$W+U=W^(&*k9&^;zG8EEsR6G*dc=p@#GW8DC zYs@c9V+y^LC0&;-NWu)wivMCn7gML-=urh2e1bZil&%{m^d-1SfAp1u+TSML0l&ZM z$al-FUJ==j|lkic$8JFX8Zo*=TT-4ShH;j+rJOqp50%a|JclYo{*H*klJ*6UiYPA0axhj zKr=mo;;DO>4JJ#_g*CV{mF7;OpE{U(o*b(=C<>ZrAE2Bt2$4gJkdfWjp{MP4oR zrS-cdp~nkoz~|l~?P$uX0bgj#z^du5uB?7~I#sth+u?>|ZA8%563XeiUJ@tmE`-e> zsDlGsW-ME>jS7m*iS|k5wH5`o=Q=pj3KivO|JNCWU~G~n;&`6A4-cC;X;`?!T|+%V zu*uPcW`+RJriZtd_>X$Mf0Q(oU0XD-$6elz2L|yIq36;>7&FsC*1#{ZuDFc@(9iTM zFBZ2$A$$^}5!r(Yf4}`?Bi_cEVggMbH;|MFjQo++-*>s6KqlY*+&@&po_0JR`L!L^ z7KAR^@@3jK{PRC+MjVvq7>+6pil@6H^;)brGT*@kPWGe83z>v|`alh!GfC2yl+V+I z%IL(WyPbHofKg=??ev@*K?wT~Zt2UK-g5{%COCp;4c8EK_zI@w6VDL{aFmyFbYmR!Dl?`a@^Uv*9EP7382`P)0jJ z%4D?CAq2U6gMb>fFu7%*^X$otK>D>9rpOY+y!y0}HwVMmKC*w|_b`B#L*u0Pz{tDa z;C_(w<6%3MVgT!X#KVPpDe=l6{`aUEDCrWS=oCl)OFOz)bEjruQRYqQZapbG8`f^w za0N;t-=*TWU|lp_ftiF&l6YHas!N)2Ko3z7+D*1{*JnZD(?+pNg!$vG@9!f=#Bj{J zSdreN;-!wcz zbxw>IcSY5=i6wj_Zu8iF&}+)Qo$M?NT2>SrvrFF&vGw2>OlW&~UiL-**Dxh;%}VPI0Ede78>RIi+hJ76s=`dt@{yKPQfp%GxMp_=t>Gd( z7s=c(54-=82A%q(w7zxiKN3-MaNJDm6I|nE$`9>Mkt_GclU5dA+s?n}2s~)qFvrj2 zo_hUlx&7Z%`~UIRIFPPd-gx6f%Dnj(O9u=|!?9kzz z)+AsJL#|~NE1duSBY^x`w*GEtDBL+(s07GF>Y(>WD+BD_#F4;qLQD>*uaEx2sTXIH zD-2`d(Q>?us?MdboAZOYYM_h#CUi`AQ!~rgl0<^rRMh|^H44HwRT zT~7l5h(1Iy3)cNcT&N;b9w~Zu>CM6;JEYJ)KUYK=pZ6BYF5Sr2rJP_^iY%M>EH}@% z+NgvrWd*qm@6QDNSMaaagY$F|@z>W8HjTOTNL=}QWH7XlsVTUne*h6ELbNxr2)}jC zS)2G<=f|eYokQ6%eHfgLl39Dh5pt0&hoAGe>0A~1?uV1)Hjdx+r0f)-3JM!f+*lHa zCvF4N|KNrb;Ir|T(z*vQ{ce-nQO!JL-lyA%ybi+PU-fuJa(LNyKN8qSdgoRmEmDEZ zK{&f4Mx;KE3LRgUP6%8r4V7L8w)oN&!T&uG+7Im*YS;-zPoy|{MOaXF=J`gX+kR2> z6Dizh!k*}ppKq+|C<|i65RAVr>WTdSkwj|(g1`lJV#R0H99sjODFBRqb`koyK6{Tk z^MQ4oacrI4#3g%tC_f4{oU%G>us5$B8{sL|J8<6&L>}}lg&R~ZIjkyhazZQLu+4~r zYOs5K&(+6O#jy-?jV=r-ROVpiWT;_e?wmGFmMw?o-&!(iZbT5M^Pl2Xwog|OiWmF} zxp?buMff~&^DnMWXB`mm2BTdJ2&{hrT(E!S6Ri^AC9z;-ZTm}mNB5q=3+4GhMbG#? z5KJx|Vi~F)73-lTHZ$Heinea|Lrq)?5VPYe9XsG4;8nQMIbHM68WeRx@-Fw9c-=b` z5>LDB(3yx5EpbrsG-wK(l2Rc;8i@~>RKbSIGpwXtnT|@4K_|J3)Un^ubmaQtI?0i{ za>?Nul-3UR>Dp-!0+Cpu6t+8v?Z?-^FnW`ydmCU&s)+r@w6_D^YAICp5mn#Y7~t(k zqL?5*?Hbk=&BkH~wEqOztRuX*nk-+y!goUhf8Vok^V+}m9_HF&bt@gE*j(y;8)2=^XWFpqxTST=~`!eLeN?!t|?j~2JG$E4u<&FHkieskkBA~ z)9-UJ0umTjVjh&Mv3%$-Zmj8;4&+oQH*ZsVhYaXLd7JzxQ~M#{t(k>gGq@L4{gOcB zuQ9(1Vd%}dNqhjR)~5hs;sqVqCn=3a zUcns#u{$%kamX*}G{v#;XQ$w>18k{3=AN;Jf(fFDSd@ivtORi^!4Sr)0 z@LozPe9$H)bVePUM?)8R8oJ-0Q~ns$(EEu}u?2r1muEC8z>xsJ;=VfA`A(TnlNb9L(%T_DA=qmCFWx7xvp{novp zoo)0&Bs&9pi5M}k4o}TBXxnxJKjj#lyX*vFKNeLw`Peord#+)45!#X~v<|o-uKy_B zuOYoH(F{Ll->p)}Ik}7bg20BuY_zgeS+c4IA_K(iXEOpK`H;EXc-WsZX1h`9b^*## z=UBRhh&x$t_fJ8(ms%R(JCaENPPav{#LhT#s_9xUs3bX<3iUY5ok1d+$AK)I#$J%6 z1=hk2aSpRPvD(N&lp||RIicKxRH01%{Eo!BwgKP3m2X5flCC$^Rb@~p01=6A#E#$p z3`=GTL9!7x&~Og<7c~yK#QM2RQA6sJu)?s$zyQ!tY!;}jL7am(<8*-OrAG@GA}p1N z!~1kFL2GKl=vpc@n&w~vfZu`}>j+L96U(%(2Y?U+8{ZddUS{dgqP&8Ax>D~S>jreZ z{dTOV07|s)zQkIqY;8o#BD%_j77>!w*IWR5q`mOp z6a+#NCaHpJf5>a1&R!bC@UOLzO6*F0%kbOxkAt!1QmkZjK zr-m*=Q*`G-|2^K~g+rkBWu>1f7u|i<4AYxyidxE4%L6keeSig{@n$(iA}~*G9RGFz zl2I?d#EbZJ4!0!7T2N3Q#IGJ*TPdz;17MU06Za6%m{~S%Dg)tN7X9BG5?n!u&lVsa z>aqhY&+)C#$t@Y&o+iNA)fIy5=neojV~S;nR_bA{vv;XK6d%iJ>qk^QwLA*lDDjns zJtQiy36bl-cdR+s@HKps#0Z)w`ST~0{NjT$OXXB(vrueDHHK7UF^13@ku+NG$n>@B zwtBA%%-q)Srsla}m)Bj}?riC!iSHM8H2qum$1`IZ0^Vp>F%9d>Z%hiIFtu2spUo`e z6F$o~tUn=m)mM3VY)RpkO3momZqCHrVR;h<0SAh407M#YDmCb?h0#nm-ORoNPmc2R zbIgvQ<~iHU&v>~cX4rOdde-)Xm?+WG#6^xvB0`V<{?d;lS2ud$h!6I(W1Mc$>V3Hy zG&0@aS2j)QogF_RPspbre5xbuT~3Xv9uqo>Ga5&ikPsXTy zs>XIg{fSC81Rsr1iJ&x~tg=8Fg-z7Ak)>4}I=}C&iyj z=jUO?-7>CAD{9{^MuK%J^G)q4b(Y|>1eDDqD+G@Lw5Yj?Mk9)hl7>?H}u zsDZErNYorOaR>FnAtgnoN)ltHe_NtcFi6w*#VUtaNZiBq3M0cNx!+I9XS7(jO=}!k z1J?{<>b&y)Rw%d6(8GP<2)!aDL{XNmO?b00PYKyJaBi_Do7y22xzWI<N@}b3(l5Cx1)ze6g$?jtNgvlqycxaURJ2B(X?3CnES zu%2ckHWY`ONkN=24x{7@7)vtoE6>bQS4}w23GIgYxv5(fY@WDnPq~R|WH+R6-4a(6 z&HzBWA`@zTqoCVeYL#yW7LG0cSI07b)ya7S2>a+9hfVi`w1>JYEwrQ0^b0lrt**eP z&T&7%_mcf|e?S@JmJ8BMW^lY=nnvTMx&Q_3+WU{|3~vZ zcIyjC;t&>C76rfp0RTc)Auxh7&RvI+OACqD5{#44Ga(K_{WitcaqU_)!aKi}F_${pVYeCV1p zjYBcxe*hct&0i3n)FpC_KY6@~0!qK^Od!E?oOrTs2Syv^CkQbj0qruhsC$(jo^JbX z)~(~P5zjdj-%~KPveNtv1$=?%tp=8dSJE1vDM6d`I-Z;ed%Ro861MXzHaV$GhPS{A zXsKP&j5#R$tW+4L`BsEvCCc}OAbhCOr1A4HPdiU;glymMswOKjKKvr!)9$2+fdt#M z+&)NhW8rD_J?96bt)!C=cxPy7r zJ!VO>4ksau?>S^Oxq9lE;4UwN+gJ0pGYV^uPvnIL`Jp~N^;b>+28GPqwE|%Ivzo)^ zaov~Ry7pE~q7|!T``eNmF%!+!bMAVL8PG%FZY{xNu=auKnP$Mg1+{K>FEXXPlG{o7 zn8e5`gN-_ajMfVc72Wx9tA@dwpyK?YSy`JZmafR)J&yk$s+(1FnX6p7`2wx^%sIWf z5hIrWYFIvtMKhwV?h8LZjQqwyzRL%}tn)>7s^1PXikyxFw*cZ=W#0%MW{b$m;^qL- z^n6q)btyqO`5>%sM_ZhNiv_3T z^0ESl?rS6C^&nyV#Ee2({s9&mhEB)}rm@Xk_a?+cXvKmhnG0L@Hs6^)pyNQ@i?G4> z8+@9`mqI2WIFs1t>AD6Fk0zU=pC6X$$hn?9KC?eg@e+L7IG5~pZVosCxU6wb3mv}Q z#hvc)yc75#_Z_6^v4VPRjCR-V72TrCX@jCE{O>vx_ycBb2agYI#O$n#blY)l(a2%{Be#&< zS7hk-d-+uw-ABkWPM=ivL=!vZtNT)n&neB+0|M{Zx96W7wi^hm>r&oyOHbrUV}LX= z1NnBtffJ7l35S?MFs4}sF(SLIed+LC^yOtg*HHmf=}Ey_5v)VLqKWXGGXeCFn7Fu4 zS9B-on5pjz@W4VJ{$~C^>zh{*-b*R5NEq+@(1;$|y1veRgdx_^zp{dAl7CG2k?+R1 zHVWO@{r^;A-s?5xb`!nA{Fa(UrflDihHJLtx`woRV&OIP7l1e}WR#JU?;r!PD=)#n zJE^ZE)9zcL;GaQDCeU;MSoMLh(NLb-;|rRFQ^bL9A|h{d6DpLVdxW2%fRl_7MD*0G zW}0@RI+(6ztpbK=+?ET@;DYy?r=&l#tfy_UFO(mWnt%itKQ&x z;~QjduM?-iWTdAVoT2#GPWbiF54D{jUkaTRztk?-bhh)rNj0QQrnh8Hn3G@!vY)}I z@-WM9yZ@>UUgz?}LwViN`L9^go$&%aDTJ z>II`S&JUU#D3IU@kHs-oAjXa~Qvu8yf<=-9tpfcZpCIIcx;MXr_e_HSU&Qfk@{%Ev+hwGhUst!en%(sh z^<3+BvlE}IEnT*eKuUg`=K^f@Kw&_CNW@^K!2%UfPW9fyo%ZAzy3LavB<#(g66t`n?GU>Tln zI`$%$7rJlR_SjoiENC(2MSGJ7G`c!?RaBTKPA&Mu6XW$Hbs?YwG=ehGDWEv>vV^)uKr2$?~mbw{ilwm+na#zfd)>PI{RQ?(2|FEpU8@(M~x;Tn<^0!?gSd z5Y;J2!#U8vK-^yAoB&NKp7+L>8u((J3bCo?N#I|9e(l(*^&%CgPle_r=+28tw8?%; z21F~0c+i03l0IL_O!R<4;p#l)(5k0t6VB=ru?&{Wiw}idj!ZQ-2)JSBy3<{Kx1%n0 zKyQ~yodlh8<;^Z;+iUMq+)=H8pSQgM^OVgj^>E-ziz~lukn0bKz}kr92YsokWJ(;{ zyMImE{P{ybi+6KHCzZ;Ab)&ZN^Kt#yrm7u_5o_d4zPRT+LJg9y_U6kUBU>}HgkwQs z(x2h##Pd9_p@3U8lhaHk^}dE~%f-q3w2GOV$XqWm(0ZB~>8k#1!&Q9I9Ll*+U_n%K zAC?UpXy*v(J!jA9^O076L^9&2QSa-67MEcM(;2zcjR{>!LwOs6fV{s|L&`ygWkGzw zBFewO(N%)x;_H6z+=Wb8avonq;0H;sxV%vUU!>jOy&0Ax|B#V$|7vy+tlUfMrTtZn zYNOQ8(F$(%h?9_s#3Y=+*?IR=xS*Af* z6F7K1N6w@EYo2??YzM&A{zJtKT$+1NH?YCed(H0ea*vrmKhj!$V5MS9*0Vh~Tv!bD zv{PKzz%_(i18v!m-FY>NiyT9wTy2OOw(-A@*hlE^B*V3(x^E->D9tzdNYZ*3nc|AG z^11HkHC2ZnezBv-bL#;%f2Puziq}0zbAR9lTFxCB9-ub}XVg?*uqqA$h%uKruS^c5 zNA&u2dNLH5K;|;|l4HvodXEp-p!)8%V5)i)UzSIOB3*@oolD{t#_Yda@zFq4JN zMYD#?Y~stNsNvT8z%pyuJw5d-7)FVegZ!2df?Sn&UCTX}&#h^eNW{4P3>}a+0^xBI zV6_Qq6tFTNIQCy1JAWdwq%Aj-PR-xZv%L#LiOsOtjiXNgkUeZKOZv;K>vF@u(n-ib z10v583mPt)fjA#`%2@8C&6(k9K#B;UGC>Dh8L8bkFM!YJZ@B5I82WuK{wC_EW|1AH)Y|8QJH`D!;wLXu3&7L&%IHaNzNuD(zn2o0bgqP zU{SNt`Ty0s2onPT}F+3Bf+i`5Fs56Jyzjeq^2thpKZkJIf$i~8W z<0+q}3%ymHok;X*P#&oF^ynwp7G_TsS@?}kN-?5n*Jdel!!JBN#;*F;sPCq=ps|rwvSCz-oV6P zSP=m0;ttf7w3n>5ALyLSm7aDauH;9n<9P0$ ziam%fquC{p2=jbePa5oeWY&Ef09c52Ly^>3XR(@zdBma(-qn^~1-rwwDe$tAJn4d! z+E*p@3^Eb+NENJKptA%D$_7OQNwq4yqlR@zvE{13pjyb-8R2?he_7MFY*Hq%%{<>& zKeBJhG24)@`v%Z=5U_n(jo6ZnJ7$e2%w@0gWBZR>EAs(by~gRuAMc&`woR(@hZZ&P zHL$E`@CzM~0%6Ed)SZ5vz3)G;reX=!7r>OtQAnp8_n*P=Gn(;Qp;2dTof*_lvFo2; zS(_7KN<&L>aj(d|#ZPJomS;~A1LwR3v5maKb_H0cg$kwPkWF3ZMdQV%G!Q4xog}Pb zbP<;E(e4cx$bGmnKqmrGwjn;YXb-#M&j_m_|44>icy%O4?>Mz6imAR>Q_=_6M3F%x zVqSSROjjz>pIjz~Xm6^z&L-HWu<7Z|Mp5LJ@umeQ(pTAY9o+eaRN55nhJIuIj0?}3 zA?b?fX!rJF2_ltG6T-n3NWGByw2{R0O5(c&snZ?Bsh9@y96V%KDTOuX8Z$crV@;JX zit*nO56Cwa*al9G{%_t7V(~*e=G6!|2m*du9to)Gffwte>j2b6?+q{XjqP8hu+o)$ z*om|TttElB@P7+^&GW{Q|g-A-6u8KFN+N9ceoXarc#)1jvoAUC`$= zCCcSZpoe9M@pj6^+QE#vF}&jxLIy)IF6t9auae@!+~Mq?`-k4>i@VlH@_W1K}&NQC#7x#=1+nz|#RNO!3j zG93A$g{DvURZg*d*ba~;hR1PN>UGHnL?6~$5=)`M0D_F0@a?Y+G?zZMpo6l{2TgKA z2GpK65cQ`iM$>;Ra7rEq$&B7Tsp|2oax)&>UE%da#(;$90M;|21EJG8)Imp5K~ZSZyzKNux1OVXB$k=l(o!i*V^ zkE5)^yMyTwLDy9RZ#ME*(AG6=Aw>bPvt_y)I0G>NwkvLJG$6cp2icGluGsbq$78J$ zs$&TAust9+oDkX`gZnCW_`~zJIT+h2Bq_duLI;t-kcrKXL}2J9B~ahLV~)K>$YOJOLJ{ZP)G(4(h-m6J6Q{x{swqidQ6 znx(Mu7r`8_hK`s;%ZLAmN?erZbp1QeSQ1M_xt1%N?)V%(v_riW_m?_gx*U8am>s2M zIXg2O2B2xHd^x-5u$3=D2^nJ?%ts3+SQx>w6CqVsqj%bXnxKu99UYH3UO||2*|1i> z9H!gV_OiqQf%16uWuPVox=6xase4;5xd@j}T%4$ZpQQ<~Lt8UiCiB8a;}##9Ml)W@ zC_%k(*JL)Tds7)V{5O095LUqiQ_k=HjroiD${W{Y8@k^o>^EHVHk=XPz@bXKjJ4KXfIrqFu6wV6QX*fy8) z*tnMBvP}nx+jWzbR&I4XFO5{$D#!se|6B1#f_0pFrcFVU%z4XxXFO?O-%${wC!HH_ zWV!-DngZsFHWH4G7(YOkKx_^*(vboMVsV&#mm|voun;zoe?CeZK?(shHy=^s*W&6& zd5VK{mLX13aP*3?5+|F!6-DO+v+7yNA==v}+ZJF8D@!pdZ~5gpH2w;ZS1~Ao?byAa z^DTii2K=aQ@)0LEwCSp%%(y>Ej3p@`>RP`67EtcX-1<9%du23N@jZNqg{R~z(sPPe zFwR3V%u&t>co}Dy3WsNxy8pj|8Ch7L78Xbs5roAl&U`aOOz@?nAikp_O_54tob}=P z&Vh2b5PlHM0|?1CmdVu?h0%pfk0%QZ$0gS*sYqM_Qf=ue7(;(?TsX(w-J7{8Nwi=D ze%IV1+?Obbb2k?y5RO|zpZ~l%#GD7@T{{vKT`9pU1mz1N|LaXw3#(biTpj>w;v@42@liHlzM2DY2wr5cAl6dKZ z*98O-qKO@%h3S30uQh@N&Dna^Sf0wlDJx0cB_N9>!#^}dcDj9QfZ|z@5}OdoTvlX? zO%57ZAU%Z*5(W|gjFO3ap^0QlbXkr&{CvOkauD`VbO1d?0G5(c-0@w~8ftzphS7g8 zHiJqZ{0eWN$v}{@%R1-7rD}0d$k;QzVzyk2eF-$e-a=NE9Pcr;_}P*^nS#2NxEZ2! z1m4GFn`DUd4ZM12R^C>&nk!4PUTJ!CUObg9t}1hry?JVPl} z*>0$)=Tp?bOvcR5Cm$!8Sz^!60)*s?GZT?q4N%wzZdebIg@3(Z1f;{NNnD|gONJ^H zZY{piO3&{`Vo~hrH8e>i`mlx-)hN}%1U1)p1w9OEV9TZ-yDn2X`strr*XZR(SmQX9d%+#}DrnO|u@*HoVO( zmFv+F%=r@+I`@jhFFdTP4X#RMG8gdekb|VU9QaQPLqW|3zD$|!M{3P{QmGu3_qZT< z->nJn4UY`Md`VYhju~TE8jU@aagzlAZS-ZcnrX3skq`dRCqFgONj)gZf-c43>$bQN zRH|%*5$=t*rxEqKA{D9v6&58OLWPgO{%?CT6gM>SR4~5IjobtgpfX@NmF+sebtcl; z7^o}gTAyX*Kxyj0Er2oior@EeVQ%WX7_QgaL-^*~J4)hJ#05%5ml;J$5^i+asLs3; zM^1W2t2BdyFdQZ$#MkPDSHss?IaQOl2MA#nNA(*rsZ89l&Rb^3@uvjL5rWiYq=2(l5=jmd_hIYePWi(e>_n;6y*ajSIwmPc3+3dD+ zwN4pAW)nINQo1e(aNOx2UbT9cRN+>nq_Ds*=vUt+Xe4^AA}TEPRYRFIq=VaBU(6sL z8>o2=r(M19*I)?c?ZLhro=#b}5~$vAIBLl-Mb;Djm^Cdsqit>Qa0*;!bNKu6YDU;-;!VMJtY*m@xE%nQaojZGv7lLt#+aVFToQ!S^+*U%%2LI9-_ZSL; zyP}{tQSXE-TQG``QtI`~qLkp^wvuU-$J8b1efvN+Gegt^xzfwQQI}RXU1WDKA~`}Y zxk6K_^Cu+Wa_qjxseDykJVZ>1k^O5Q3S_QcA5(D@3S*A^c^6>0-+udo|A&D4beU8o z*~u(hPw(Gb5v+U!0fETMUz*xG7Ce4ll6NgAkK@eptKM1S4(CDChY8Mcg<61#v5ad= zz=ENf^83h?C2QkP2umD4k<)k{IRAnQiG`zFDQvaEL27bC zRm~j2n;<|gi(($&N{)NbhWpjixjn7Um3LmeIbs#-EAG4T4xBjC^_W#7FA#hgQ`D2r zfU|odm*py1TvQE`<$~st800%)N@52Hl?u@8SDS+4^K5QFd13BSjrJX;Vy%i(77OEP zwABq^eHXY#dhcDwB6J1H*iqfp$B=o)ipYk}%F_C`kYRW$!UCP=Q)k;IsO!wVV$)f0 zTWicpnZqD)Fod!>U8TDVHv919-Zz4&h0CiDhj(Qsw8v`HNSax6++dD#tqjo+b`YZ? ztz6AWfo`|XnNmT}=c$ME8o8fQ)~b+Ozac;Uwo0j;W3d@6|Ee6A2N};n+=7$={s;gP z!how)rj0s%&zuM`P>>b56ORnI^=8K?(|6?fT)%AoW{kxle06UKCD`j8_ zBMIW)zQ&B0vuY9mZ>+H+2kwdyqMRs@8G|t?RxSuBzQM^(RC%s8JZ;4)F^-qY2IF_A zfh8!RfCFKHVs}bTJ#uKAtxZruoEvCVSKByq`A97SI!)KFZ)?br5SMi}!{@|Q<&9mj z9dA@W+;Ju@M?-LVVfkOXuOYM|f5)E>l;&rq7{Yrd=I{h|mv(mX?9x>|8}C1}4EvVh z`y~+Vwxt;qz89$N{`A9NeD(cTYlc=hcB4X8V3Q3%ZS4Vg;5l!MSNAd*>S~9&eyE9X zU$c@mV~miJcftG3?IDA?{{5Y-#!b$0fE8+@_x=3uzcFTa*jWR<(d4wdT3l5fl5ZJZ z!f9Xll)E2T(A9Tww0K|HyGP$ga+T;|LQ6udJUmMN{l)#8FKP;W>=j-8tXwS|a}+ng zr_nPweLmS`ug1Ptz7Cvq^aZ=Y|vjG^~<@-J3%#4_N-B?=Xl52Z}uLWoQ=_m zhz1{#g@oHFt6{;?)+)qOIhHNNx2`VrFVvX1Ml}HC6y-%*Lm)a8Cqdifm4&h}m60|| zE>7QB%-p3Tykk;FZREGt+BirusML?e4{c!BG{m$QeR9vEMEdM*N#fLQbeD>qi~)nT zopA23!Oh;>(;TIA&{7LF7^dUI6gvZ zW426Lf}z|$Lo1T(UwzGqdaf8-%#z_Yck`JRPRV4_5q4(-$zMT);*2kP(vRfKVvL(j zCymuMzVmA$f+R227N|P;Wx!2c{uvs|!!vM*Ztt#!(r4;pRwMH=k7{m8y zDCKLRv^w9dbk*ZtMlu0{L>7&xgZCU`Z_zZ7Q+}i_Aw-4kIgzUFK&$r4e~WhwpjW*v zGm5J2jyS1}Gc%IZEk!52uS_MPVfqDueDa~wW^{P=d2u?#{XL8dm;9)xX49StkLQCm zsWD9BG{z3{^yk_91eN|?@231G<`YpRH8MuD{Q=~+{(VPdJ8y>HyY{x>+AD$Y^ge z75JH-N8A+MXC0m;d22UI8G_v=9-3HG*k-E1Qa1fkY@(W43E-ceq&2|Y>(T|Gx$KbN zwp8=7=edpr*y*a_;V);&*4u!5!Z~;8E7trc&s_HBFA0 z!d-jrd&gVFqrhch^S#XfvvOqAlzxs`)a2`G;Co(6A&YKY_%~#xMWV|rIa*j%7_%_Y z0@de#RoRy`#gB%rEnT=j-3JtjTHx)C7H<$R(PQgHOM#eI>*L$ZyQTpQ{38ol5P?WB zrJ*^9`F49Nu99Z`h729N-SFs=^}#dI{egb4026@74>G6$$xTu5EmY;NAxig?vrR4#$iJ<|teEu%?46X_*5W8rZ#r zu0JFA$tLUl<|q5MUo0wOZnDB5>|lwY##4FI%ybt$HVr8nt+zh&s&Vcj)acTw*iE7@ z)|Z%r_iO{)A_kgQkY{lG-S>OQJ%P|ub!_4PhTacAdycm3a@1wOK}E4gGqZW9QPp_V zrG0Fgxp|@x>v`rYjnJ!ogdw8@*RhVxvt<$n4rcR{_KfF+{e_qKs+}fV+bbKSH(w}y zql zYFc+3*K$g4p_xd*Wykw?%xrHBYF`HRwlHwhtf!?ML+83hnR}*>PSte0oQ-}}OXU3# z-y#&eN?fDFN!y3YPX@xjfM}P+Y9OmDt==z;JjNVXmvxl>$r}wax%HyZk+UthL9@+o zQ7~^eM9i)xaK@9?7ye>4{nmW|%j0pZ9HB)Yr9KNdiQL5HNCI>xMim+tf*BOg4 zY_QwA`8CcX@IvAG?YJef<6I#rh3hV406LPhs=&=j*Ak6;9Mg@nrv(YOt7JH90S41( z?=ba)e9P&n?frRfQi00<4yYlbSiAc83brIb#?O1U|M}OTDVhEg&V)E7ToI%KOWa^T zT?Cm;gXGN%)YXDHsY=qBi0`brc!V=x?sde6hTXPZ+~8;CfPTc&w)*` zl<%Qd)hY?GcDOibVN*39Tjyc;P>z-S;03oSj0q zXXK`c8mz+qvUBeskBX2RC>RKuO77d`n~)A_yokEV06jp$ztHAU?ANS*`0?pj#{KJ> zo#LJiDIoT#x#j5Qjm$w^O6`7Suc0{twQLyEB>v+~0Z}~=%DAq|afSOOqY}{EdXH+y z7hg8yGJ{*rB>_!d1fJwV7a*zSXNb4U+sBob1UigR0PAArd!_oo=_6t*wp6IY_Ut}{ zz!Ttv`5^Rl$v!0~)jtA^nBU53L5r7+QE^bcodM6iusa9$ZB4asBd&oQA)h>l>w)$i zOVq2G_87YeQ*Wkkqsu>FHvA?j>7-IZu)OOtSp3vF$@yRC_#fn6wD?&oD0Y;^i-VMJ zEM&cR72RSB_Zf)D!#=iAf>R)=9UPc+*2$fVOd=4&v=>s0LQQEtB$~175U@EEv^PbP zJy%5{OsWd@5}dO?%on`QN*_s9|6hHncu=5SLNQaC!WOjA7Iz86g^mIkbqX`-`JJjE zX#~W|dt(p@hiH6Vf{?zBwE&Ky*f)Wmp_w{yHeZCORM+t!6(=5eCd1I>F^Ug|rKJZv zvGY)_w)47%MHH&kJ>4VRRl4?=K#8Jqy=ddueJhL_DYP-q9*uj{7E&m@Pf*Q&Gndob zyct5zxY(8S$uYBqHdm_}ujNy&v`$@q-%n`oFh<~%vV4F-lsYpMfBq(MMWSIF(m32)}tc!)%12EvRvT?fN? zE!T$<%P0vw`)vFm3Pda8&X?<0A??pY6Z{oFotIc_11D3Hc(0}T}{u@Tg=AyCpz>E(NGfHN4XgqAS0|>kg{+^ za9#mY&F;;Xnk)(u>-@CSO|*I49kh|XbNe#mWe@dMZ5S)xLjeUNWMW>$lohVcuYAs0 zZ_**NJhxayooY0bHO#8B1t6q3_@YebYEwX{_0r$xB}E%Bi4>U`V;$`nw{zoyVSu9qJSO0y=T29{OMZm`Lf1#ypZ_i*QUlw<8vNWx{;4T;dh6Q$(v zK$i$y`k7GjH|@ch7?1sb*0w3*$Z-=m)mML^^N*3#x)g?UR!T0Oo4O1+|FWe1SyOh; z$w{>U^+}CFoXtwbG4tp;Bq-l`?I)YeC{*{K+Rqd=>wG<8cm$&NPvKd@XBJJf0Snva z5S{Kco2R;o6h%thO}w{5h)s54ag|`H=|H!3wnTpl_zV>qC7odB2X2pDl+h-P{8*KM z`k$CRoJ&-Znh6c@E5fC9nx1E=Uj~1i-+1SS)SK@!k!Um(lMrX=39IN?9PF0Cn*gg6V1XQ3-RZg84`w#J!`Hi6ueq_U zn3EQ~Kxc!}oS%Jg{lK7_{rr({D6m^F`EOclO`;+lE>^ha*;#kQJ7xE=T(=s7%K)v6 zo`0}*=R*;CJ+ao)h=l9)ncNVp+`EeoFWdIZt&IlCI$}`6g=nRuDPWj=y7@L%v4$p` zb@W=*D-R-<(TF$JYTP@vBwl#9a`+JyZ7#{Mx{$`PfXN_CaV$Pmw#wR{bgdrS?*f$V z!jw8HX>0R;3Kp4p>UT^KtN_6GcvFMu4R2Y0zMRVPc$UaJPbywl_-uaJ5Z_vg(H1gH z{d^CNS`!>yQLxjeB2u>OFcSDE$@=axk&-wcXbm>sLRo?LoP^~*YeO2i>Mul#^!;^W zTT<@b{1)jxJ+ATSUeunx^#&*ftDJ|}_r;>t`eRfzO9@zgg?aeOZe3UgjuV9$9vU?E z4VbYu9mU4tYwv_$+))i==A_Df3$zpBe_O3C$}AA^R(%orsc&(#+QL|_C?o11F~ObR z+%k;F*RQD**Y?`~rr!bx*(Qy=u}lYRULm@Ap&4e#$?NA5(C920>nel{(@1`ZQKQU# zm~SI0b#>ss2dDkV$qljC+D4)s2hMLaL+U#Yw07&vUgoMje2Te&M^HWQIP|m0j8Oo+ zVDdfWwk+u-@+s=R%_+Icf#<5a_-R%oV4fkT;E(P$&Wa5 zN-<-Z`#$)4rZS!8JnG?o2VTUZ!SasTc^eCFfC@m*3uXBApHSbwQ+oe^^G#P;mMFck zBwpDL;h5|pjVX3IeIDsmx~ky6iXk*x{SeH$M<@)q+7Vd}gpl!f6*~)W*M0arQ!i=f zuPIT+Q`AzKpzOK-3x1Nx+?F?@UQi*j$t;Js9Gm8)T0Lpopm55@wl=V$tCvajX`8ce zDPPCC(7@}6L%#|j5`%07T5`fv0N*VI|uSxM~?8ha*;Bk#lu`U%T! zx26co8f4s^}-6Y%@YqriUD=CpV1>QxFTV5I11 zx7x$-foX-hry}S=YNrrLGPQr)>#=ZL!PKa_>!;S{4L2C!=Pu@a(^=M@s0h)gQv%;I zikQt9k(Lqp90Q^p5VFF3=$Y0i+<*>M7R~Dg_q?^AB;+==Y&eT-EF* zxhT}~J+Skqu^k!h_rJk<+lgq+NpVx_*EVHlolKL|pT(Z!RG+Q=pxn6=d%%iFU+ z*JHIgx$jk}b7WDlJFa&2oe#Ii%NvHF$;=p-&EXg9^K0PltH1i>hm9)N!)bp+%`gKK zp<7B?4EN;%{#E2NZFFjoM6?LoKzTF9^F}oQgPX=Hwk{kt?~L9zaahOlGj}?(-nSxE z!^^OR1(bIP)E`Q)bNPPh^?Al=Zrz^ii$G3QZouKy3*bR%A#$!og=^B6tsZivv7H4v51&1%LGCpsk}Q{|Ne?dQ9=9V1Ogo>XPZT6eIQ7aT4bu3I z0|E1*`!gl%JChxlc{-7+KE6R_g2>|riR zwVMg*3^%sNvwE~fOZ%T99k@e)HAuNiyl#(>@Fb8qj=#)D15(1e#w*JVdgtiUKd5SpY#jlep1 z+nk!!j3Ok-1(3lJ3>J2e`R>vN4!Z4qG*Pc%d%AgjZb(kxS1?+k9{9e3tRLqyjCsZ* z>id50K;J8-jh3FtR<;`m7JOil1EE{U%x6L?wlVE>%US)P6J~N~1c}785et-jYDipe z?4OG!g;aC4f6pL%U@T{gwRY)3&ZZEYIp`wW8s${F4seU@MRxfUU{yWX6oiGH9 z@3A1i70X(c&%4y{`8xogLErBEpYKxK()LJ7ms%i~99yCV$tyKNWYXUulkB3^V3d`E znv)t=^iP?uRwe|a1GGk5^zjU^u*dUe&Fv%xNw%BX)Pc}ja?L3KuC08Wyzn3nssrEx zJI&{4X8pTvjoS);1b(?miNeAB;B?bci=K_Wl+!wUi3*zy=><~|O|(_* z48Z`SNVDND$tkXL-BO1TJ_zBB3TuQmi@0OqQA${&g@K+nA@Ab%F}3`XX)$;eVbu35 zrP<`XV~l&G0B!jT_p&1(Vc2M#Vp?QfGNlB{^MI3l1f$S%uNJ^VBxP{gdyo1Fd#tbL zis|2{!9CEo+1iytClq&({X>JF!*hvXFt}?#gMQOJ<5@q=wkX21 zn7=(H)QZuYX$DQGd#jzsGc%8XJU>01G zr=$3X*+=TbLEnYarVMya=vESo5vs3p%N!pizNDheH&V<$O#;+Jeqa-1wp+5FCiklF za0|+CW}xCsf7S>~Oov+6V!1kJP>HT)a5ySn`;XpLzylBw#Ez!2VxMgeb%-I)>C>wO z+R=t|F6nEvSueAUXWKez|*!_h|Ke8<`8Tmcn!HsW*Dl z;kdfh7xRvVfI&ONh59G2-w91JPbKvjA96&qyGc}G0gOs?Z6ZZQOGsH!BU_}tng)r< zG&P|SR+I2}B;S%_8uvN`Fg${_XWQO>-EM0Bv_}+QY(>f{R>O2o(N?tC29QVz8dJ`V z;$85ii}E*&DSIZpyAk2#F!x@tS%r1e@n(R~Tj*}Zb}k+|pX>1Oh1Rr$`p4*C6a&BI zu0*pU$5(UoBAQ`GHwtHo;DK4)vmb@`&;1m-Ez16(AK9?Ap^OFAnVb3A@YMvcPtUdw zPR^fYmcx%S3aN)Ma!sb*Inc6&6S=|uyEGFl2K7yz8+JXm`TpdI`HuJcWYo|{SE4QW z2vQ+a6|>NQRp(k*J0;sGrVwioc-I_vg_+`Dh>DGy{SX)xJ{BlkBN6 z5lKSp10VUFT=o!1Ao>Z!!*V4Eg2G?(h)W~ts)zlC(@UYixf~OKO>bcWN9Tdby?P0T z_HN2d1&4C(N|+vWf6~~8KgNh0UrA3NVn2#5Q@oQ+Zc*Z`Gju_k6R z1XLE+O@tw1{n&yd`NvDHqb^(zB$<)@AC_CL4Ze&B%g)oezBjdvBL&c45=+5yW{{VI za|00A?GeXM;bXbxWT=7DshdO~@Su>iC}#kyrNH5`DU=w={8m!=h+rT)xvva7^=prX z63QHGuGM*yDvSvj)9XDu_D2@k)ke)&tj^w9#B4FwmYca}9qJy;(7(0wux@S$kaqZy zYn_ung37!-Z@_{bLEgfeaQoT%Hx2yb_@i0dwH>;=X%CPe$qBg7IC@PiQc0G1Isc?`P|G61(C6NokC+Db z4OM9RPW!fsmXOuFcT$^`Ig%tPcgs{DT0E2Vn#y`)H432~jKEg}S;27nPNEe8LHK$g z2fOA(fp1&0`M$bnc0?E%jcR4*g1o}PJVb&M1hxYLOxknbwzL5q8NG3i-vDoH#I&}C*?m3j_|B9 zLc#%sgI%Ltnpz_&)B6b5We(g(-oH7al7aw1P^sdI`Q=hp1C-_`jfM0I z@n8`|WDF+@%-D^zP|NxdGeIRN25dI42JvjodboE=FgevV7e)+30X3^MuL9W*{Dg+6 zUGB*_JE1G=fi~KFh8#*Cms&5mBqWQc&Oq5%fj3XJ2WLJt((_Ra5jt>zbi`TD-q&VJ z!*pt`KRcJ!Gt=M{S@Gu6bKk>8LQ)rCqFdOZFBR7w8@Y_KD4&rWV!Do$u$5i%2sx_K zbeYVQ{{^VRjUAk&+3&r(t<;(v9}Zp{UQp0)If~c$T&~?2peV5ihCVq+#{e^uomEay zUF@rT<}BeCIZWWg#GJObJN^jq#|)cukNX;9m)72vx(mEa%rbF zgFviKLQ;$nZ)EYfksmdW=kupIBFBVKqmtme$PEDs*On9{c z7J2vlJhgJhm7RL^&_W(OMx)ra9S4gqyWkj;K-&j&k-$k%m&NRfwY0JlXFgVzEf_1= zveM@Wm3ruZrQZ!jc|c}bu~l2K*FZ|?5WAMb0F-eMh1jFGHb9TA?zR`s@~`k(03cwK58QfU72sVyG$Eb zL*z}$l`=*%xeV9fo17RaK(l|B*o)!=E)CSUPS-q!mSV9ZU{~jrx?d$h2CT)br>6N% zO`sz2o=640{eL8|C5MHs2Um_(6_=$9)lA6~3Do5P^5+dqeBTz+r%DO^V+yY{DMCL( zJo@$2FLyl#{Vul&KymCEZ;B2IR$9ZNW3p8&6g!WizsrW1R$XTiaC z#GJOPE%-xXVLfskTi|mw(ZE~zqF;0eYGwU6XDO>Q5J>3YISP5zq2~Ry1BG$P6=6Rh zO%Ak&*B8RZ@g>p9r^myd{=4w9jMpY2P=@ZU``MziEJB+fgZ+;EftxTiVaj@u)08vi z^4Gx2>j78*doF4%jH2wbyF(X|K!#Io26B&CybiY*URgdqsN(;U+Q*&lA~5ftb-$EU zN};XSL|H$y^7Oa54MJQF9hVb85J?&?B8odr+twM0KzB5ViPy~1Dn#)!MuHho=+g^| z8t)O`-O3)ErK!P$`I}L}HAZMOBHIshYyq#*HbW1w5B~elR38n(mi{i>sIkT5er`-1 z7rm6TlJd{r?Q{4nv|fQ2jC<`mFfKk5q%TlnClBj+xImvfxBW8;ontVk z5CaCqj*l;DD~@SBFC#}p3@iB+r<&;-$_ItQxg0#3p=I9)maA_(bne=w+C?%!rB@d- zq1x=X?u3~>j<+c&03dYF&)Csz=-RXOp{WcIBfWu^(3?F&W=!bVi!FqEld7g(9B~ zVBJ|h7C6WLo=->sD)=Qdp5gnElD|R?4p{Ar_PGaOE5uWuW?Rg=oH(-;zV8wpyCNsYxGuqP4 z9qg-3`k*?Rz0nb%tLR?iE+PdMkQdDXjy<6Q?V}f(k68)h!K8`pg zfBv#3ddb?|z=RS#ej%w9(%pSiM;%kku7%-*;@xgEwYsxjwmpa$3dYSgP#l~Gt!4wm zaNA&^z6_xe0ivxxq{JHdl~7=Os!ECOQW)}%DZ~I{GSn#MM6hD>H;=>P+mCbUF3?bqN&zO8(74{0HS)}J zo3qV}0`kFNZ#Feg22;mz9HDLjk)&^VoC-vPV2YVU+a#As_GuoF6s-)kb;;n8Kb|cw zJ%grYTQKMvGDn0F6fd`6KFRv=`vZA#fe?Hpr%>q7d4EBG8)o!jfiCB@56CJ(T&oYe zqpN{*i`QPOu|YqN@7Y1!_^8a+MzNlouyZ+t5}9yv|7K(-59mGisZdeg=uR<;!W z@xYa!fZx%9%=M&@Ux&8+NnE_5xVb|p62WnQz3bOHlRIt>;{P(b7yOt(YmGSrrRIy% zm2+Y5u!Q>Qb_AGBX$KU8cgfpbBXWx63w}8p?PHLR=BHXew?GBsHgW1n+;ITL12~ zUc~qyBfd3lE3j_to!92fY;T?xyyr%wLcYN*Hnc(p4|LLaGQXYYD#X0t8(=VWx{vNH zR?nPg_bmY=Eb9)+n+Yzg+oc?Hd2|Kq~P^(2P=mA^~I0JF5bPL1F45eK)5f>l5bKxXN)M?U4LqR1CSMB&u*h9p+@3hVS)bXi4xvY7Ai-|M@-h z6||6}Y=HXcYkoZAg)Z6aRnh^&7u4TyjcArD9Qb4zuvaRLP2`Te`Z(~Ef;3WG!T!b4;0>=#pAVN9~2z0>FU0ZKdV5N)T`F?BD z`ie4x#LRCows5P>bXOZs9*yCMV6;@U}enVD%+f=FK=V z?>P7oT_+$yr^-0IvG=#Yk5;54OK3>8Vqw+jkdT3sotmQ(*r^W2 znVg7&s@z8mk)FKs6<@_}MGn@Y)M4os;}dr#ObdWM_5#AA!!C!75xFr_ium6Z(Q-hQ z{1HttkUm$}XTK*mL^M0v)6}sdE#*K2fPq+0kCvW7G55Z6r9z>DVO(B;?X|j3+_v~Z zl;ArLuY4UAgP&T0T3R^R3Lt7~N4e~!ft2iE>QkVs!1?~)>S{>fBr>iEPQOhDM(9BZ z1z@P;H9}8#w$W~qG~|ZJi3&*4w6##0;qPIk&6Uw(%oP0co|D%`k9VCx33I(J9ue5U zrcqC;aszF8hSib>=Jo>gr+eFTB}18i4mJDb74R~#V5-qP-0Z}7pB#|lwFQ0Z0rg8v zM&>FJ%hkqsX<6;H2^3n^7zPAC`lD>Aw1+OZrHRN!$6%Eq(VH3=rvIBZkCgGke$($- zFY;J|+AU#+PgkTmZ+f!fBS=#Kg5mVdueTyJg7tAoo4@^`_JdnEL|Aj(Sqmda>Vi0^ zt8;Ljs>W~!HE(tNHR*@>Wa^4vZWXR2$1mA$Fl2~-R{%v)geT54J|>yyOyMcncb0bw zpP8bKCzbLXBe!ARA_sWRJCEtAW0?|N7h=qY zs;04q89L0Y%%YDd&G`E|E;KJp7oPa5cQ)v~wnMKXp`h$8v}ga7D-noEgrYU^+XOTA z#0PkUBS_ET05{bfmnde7}KivPr5+Z>Upsa@@bi<7>7s+dctbY0G(7a zM_77abt@E2Xn%ibxHsQ-E~KrdcU@)dHlx$i_oAXZ1ntZ+AKU@r2$sA5xbOeP@2?Jo z#nr6t_?=DTdwVN37Hwf%auEjlV1kJ-%Vp3;7V^zSCAh+{lNledeK9-g(@(_5BJ@`Y z%?c#uc6wWrOViCaR8h7BUg{$a(2j@gI+Sjf?GnGANY{{AWC|>N>*nYO=yxx@xroI) zS#tl>?IC2m3a4kF6i>iJVHwf)Qd;+BZbJt>FA@g(!VIKaf&C!=5H^Z_lc>q*i@pk_bWb!Itt`OugyPXmM$ z^XT*PBs<_-Z}M2e$6J@_h-L*TL}&||1hc-EiX|u=GIQQmqOtgZjr!tFYF3mlf};EU z68jri9ax`>g!)zL*1JE?0N2np$26t_w7fGjYMue-@;$iH4mcE;uS3A+eY))isJ2hV z0(bgp%>Dz#7j}>$KxpMLpXGKbYKUk~vGq&eY~;mVj|v6K4d93&9aXc?G)m%0SYJ>w zh9lCy(_=Y$kqV4J<2z6wc!AsQwL6+88c9-{d#epQ3919f{mDptb`pRYp+hbrxa`bm z$*3RJ`$0->tR5Nvm-=^RY%NSC%3()?zHP@&ONi?h?qE`!VWjkZ{@{DRF+@Mabe=HF zZ3Q>#tm3(Qt}Jw29znMzVu;<~W)aTFS#fX|7?aEb^8Q)f0TJ+{ndt0bY%UX)J}xf< ze4x1R)`TSndG*!6?5u|+m07W&A7L^KGgdyic7CmatcYwnh7>eB&YDm(iNKOF%eW|{ z!(XDP$jius$a_p^>+79T99F+6ry^0YXd-TT!h^F0*IGWTA5{~LdcX?Z>@Tdx*c-_! znJ?2Q^!y_c5E=;-=4sP}d~*L6XR566PSPcqNY4Dtp5HEx!VT$B*NiL7k5{}T6*@um z(mWTl+aME(9uH>cwIb2r8xw9q9bF%*Kv|YAN?z|LpL{2*`pnh{YI-sD z5~pa}cAw|d$$`|xu&bQiE)M0S2Cbs|wSM^+?8r|PQ=G1g=2 zZ4KbR2Qz(uHBpxv+$A~*Yb=rpBzzfP3;FtGwcWIaDd`%oHW4k~ ziTqm-QsIRFdeVeedu0RkE z+(m^!;YxnYx%*hiLC+R`!9i;iwhbzb z6L7(3&LS%F?q_N`J8$UZ4T3>l2(Sp>rY?Z2*KR|#`PLi_UNj29R&`8u8{AqP@y;DT z4#uRT+iD%1cn1p$VZ2X>u@c#+!Pidxpv^($7$5Kk5BY91q52Zx-xQmOe84?0W}9B2 zI3*CV6S4e9u+mktQ;@pui$%j?rQF5LO*rDG7kvq}!f30>SR9>r8-YtubcI{do3do% z*Wk>7Y?nLN;SF5?cL6u_$o~Sfp~G}#)tHm;45{-w{fhK3^U6054K6IH9N3zV#(cU? zk<7WUNr-LCew7o?rTZX)I_xDhV;HXRprKPn$6-IEcXP6LCs5*OKc{UHn$P4RA%yO2 z*r$0m8|+$NS%R7z(=Fl-2SUWChHa%hyUcGW|76jmZ7f1FIdX+xrHnQ8Ix~Ht}$fzUN-dlQeRM1P4^qobzoEXuN}{4* zy_DC%kS*R$yO(bh*vvRaPp@Xf*EM#biStJv%=0_F)R@52>xe>hF8hS5A5_t9~5c;>{ZZjteFMwm6{>vj*$sIWy!^t1*0&}&V z@Qb1}GJ(Q)VW>qNIN)!Q?XK@JMAqb+<0gGFh$q{h(N3mt7i0-twE4%tk+UO}RXqHd zFx#2r@_F;wZod+sFv_iOi5ov?>hVtTeFx}y>x3IPwy#HB!-5{8eNON-s@@}KE=!gL z+~TnHuM43`$0(IvkHdeh^$Eaw;k#-@iK=}hSQANoUp>hz8Nw>rsgVGg-^C{tq4jCa z*xK)1x`K9OJrzvHI-We5xz^X0S8n1EvKI@vQe)`Y%2Tn4mz%!4t`%~tMGk00vuuL! z1NyFn64@5@(*+9heCo?Su902xjRy8((>gcV}34O_Gq3V+FZM9*7N z%#1nD0xfDBMx5-2Um~&5kqXW-7jR7)4YZLHBc9guotW4vg^oxN%t)+x3aZ!q30fyy(%d zNllii5W9u^e@pzlBf%uKQ5&O=wx(5RblBgt1V6)zDq3 zO}np%ci5Jgk}K9GtvH3-uXz#)ObFGSid>D^^hNp#OOO zdb?TXw20Ph9%jC<2iVnzvb~@ND4w+wXVK6MY3zcLH)^xcydjH&aZzi`vd%Qn2p}M7 zSyqGuT4mzw9PxNjX4(Dh+iSE`CBtChlnvQKNI)?tX5wWoIXnE4#fg0M8z8rB_(E?^_x1L5*{Lk z!N%rPfpQt_Wv?bgFv5y548M;{7%{KlcOt+ISuu)cDE`wW54`1XI@}anXo}Gn%bV!T zF9g1mU=sNB&dEhtqF{Ea%`h?3)!V41t6+e|9(2y;tUWLx7gRVx53J%4wutEq77-`DexZaTmn#RuZL7-e*vQLXHy~MwDl{ogWf@YsDGM5 z{g%h0r6A42o(}LQHv}sD+wD74G{xw4xMA{#Ab;_au1v&f7f3dEkKv76yaz0R?6A2- ziP}jW8Ut^!=9%uk7|~Ck#OQoDd75*2YtAeEU>1VjceBN9Z#4D%U(+-h69NoxE83@EMDU zc3fiut;i>^pSR1Zv4l;!664Roi48wY2FGV{Q*^g#u?_D_H4hkbXH15g)pjF3ip5m< zMl5d9$(1x~0fSfI8yj8~z5ZQ;?&r`LB~>g1{c5sN4oCU*c#nVxZ2LZq_M=t4%(B~@ zXp8*c8Y2bGES?Yt7hYE@66!RyuymxEu#ee_spO?oJ0Z_TZ4>z7s34CBDUZDG(4vY| zFJ&Tx4n`pgaoH?R3-@o&F}Ym-1>a2LzydGo?iO95VPP6Py~3_F7$|7lu%~R z4esfKfd2`vg#^rSu>g7oQdQ`Zn`!Tl7W|mV5IKA$w~?EKxG~VvBCZSXz<|{5$c6 zZq0{RDIg(HL$Gzb3f?nDma%gYX|$ULpVRU=f(>k*G8sJF*y)IA9Q=V zX^h3BCBIiMtwFTTuU+_TD+(~f0EjjM7%H0;(f+I0N&+r!XU$NXjW0rt>oKHbl%&7Z z7MpM5wA>E&=|&cD?a4^?7hyBI?4pJIiE6aL1b+^0jJdr0mn}r}M>Dv3v__D1*K@MrK!gPh5gzB(X#lJzl94hvx zwTs}1ABJ!`I9R~Y>)ZF4BaA-3rIAH7R%GmIPsND!M4SYzKe?HFTGoyYaR*{Oq2&C* zy(m=8a3(5xsRcA;H+{uc>ILQIhi^@KX*oe0;V|uskf@Jb z5y_6@R25DyCby!ODgP>S*3WmbzAem$!mzO8QtfE&bykIHmiD|DQrvoWopm9J$e6Gq zMxv*KQ%$MxHq&@0_bIKY1uJv&Gw%~eJ;$knt`T${T&9Ezbs>$sX3r4z{KM-&N5yX* zPXrTeCQl7eGLjxRn}d0z|WCDK@LPwyeO zw2A7aFB(A6Yx?PX<7*QSYvDg(`j}D3RJflAx1%5<^Do@E9zgKZh4+pH4oW3>$NG;l zEM=cib9L%WlQe4AM8fFJj}W|ybUIajrvfFb=b^y1N$lCWh`_T~ve>*sNzeZyzNN8O zk2p2!kN(55v%537IS9M40HzS++Ilna3?;kSYhlE}-pqL@ZCgL2O zKj3`a%vuzADO31wwcncKswH$lC*jc2SfJ`o;hpty%+W^W2{?~F=)uSQR<0_$N_Y^8 zlrL2?q-5Ybu3a;hud1*mA%fc|!*un7Z+Kh;8&e#Nr3|MEIE|89j0^o&;Q;U(@#?X6 zx}reh=Fb%qtLvj_3VknqM-OwmF-814ZI&0jsd_HJ^8Q3mwIX43$J%*w*MZq&!cbHX z!PgM>^qQ@Qmhgtf86Gnq{C73nM5=TB|5l(@K zP9zg}ICGgoj&bRQUIT?4s&e=MFAJdYqioE*NMHrqy;gCGuO0#?8CI}|R7Y_Gejq}3 zwTRnqIf>|>XErYDJX5kMQ%!NAw4A&?!l^`L`#~akFQ>3S<}hBcL9ozSna!m?9H2_z zvyNC2?x`>)DVQX>T((+B~@lwY!Zt%{FRo#1%^F1B^eWL4=FzIrK9t1OTx(z&?3l~K- zbA>9V&CE40-vky$B!d)QAaqpqn!Zv7jnOCT7!Mc~f!Q1PDa7$VKy?^a+FC7vjkPuT zMLqW)1c&bwP8sX`aI+|ZE1XJD@h!g`vJr|^u_xI6)(8W4ZdAD3H;vTy>=I4<`%5TR z0m3<|Zy>VhdL0L`L@t#7tbIa ze~!J)N#L&GNHk+G3}wQECFbpu!(+ zks!aWF>c6QEK7G#2TJBCQZ9gEQ59!AReBwTDB)i~$>@n`cBHDTq?QCIseYRXcklcxg4`11A#Wi69=c~ znoPh(Bl6N%_<-Cib|sT3MdIqWzDi!@7RWRPEqjRnvE89v$n_Nfmx=)}!JWWal)9c? zN`wuU`W!VZA`fjNx%^WTd3lgg`4%T-r}cX(3QsLhq?)0W_F(%ZPVTP$r+`Ug#qGQ% zE1P0)DIKF@Fg~Ej>MY0dd(jZjX5X@^gV69ij9L9UV#lK9M^z=E0UVMQ^qb81^hMT? zq58>q-n0u$sW?aVj?7?_2j`V+%15cjUx&Y`u{tS{F(F*`^D=r%D9$cb#n&XFRn-BYU??$G7xFbB%&rtcatJ$85VkT zefXYoCzf}kFq?UUd}z*4~oOW3N}5{sjHMpVd_AmMKR4w(sNCS z4D5Iu1D*!kG5!oT=;_#sawPj1=x{rdTCM=N4m!iZtclhsaKmICc$5!{m|}(L{7d7Ed%2WMEUSA=GCgoeGH8vR#S1+1|BXmzk8V&|9S?O>3J<0< zF6mSe!gU%bDw7p+ChUH2P^KVC>St2fa$@c_Pd^SymecMptMcIObN) zXrhUjf(CGhaB@BjY_ks{H6a$&9{sOv5iKZMNFGUR9owm9%TT=jz!Gg{g1y*!Ft?BD zk`bX;gLPWxJXpj%N1sT!ELQLr%wsyCJ&#>;L&75xk}@?|w@AJLq~!`B5YMNG!qUys zK&p1qzwUs|<81g3pw@QK0zpTWJPcTRJ`*BT?p?G~M=)iwMO_ag|a0;Gigp;H;XZDcKO)Zdm!&Y)WN|l+%YyAjC7&Hy7W? zA@u{TemRWzf*oy1Kop&bMU5+W=?%gONxE2c->IxY5=qmOpmevFE@B5)vn zyRjwb!rd5!747aIsNH=ojRvI$u3|W`rY~VogQPgJ#9%smZ|cup97?7f;!o6=ieo=| zQ4Hb)-|vEE!)q155>k3V*nnZx>~?$F<5b_8bsl>VA1@3mmqUFZ z#&*#?{amM%mOMRS%*wZKlmrJ{NYp+(6b{o~_R!dCbGCo&Gq0{?u=}Q41|{`RcrX4i-2G}tp3jjYST(h#Wu)FmxDbfhrUX3I@N{S#>4GtCUFvl|VgDy8#( z+_wGgY^o~&@#8QO%wTP3IHcfU1|yTUS?9s}ue>=JT0avKa?9k|b`~T=-mrq_5xhF% z*ZeK^!-&md^%_AVS4vMY&-)mcsfCkA@m5HNyf2n&y(zWl6z&-cyX^T9k*Eql(bw1G z=*${qh8O-IL#0t4v5vlp)~x7kT9#!Od~yhP4}%uyLepP-KNl1Ym?}X{Xvhk_o9@2# zULH+H)!6Ff7b2a*Tce00cgSZ~l;fK27V7tqGz1Ih@H_YJuaCX#lDwTycc5x`W<`WH zK10;$;qjYaE+(BI z>trtOXLl6ehGVUVPTKY7%xVGvtK+U|{()8SBwJ0M$0ii@3~NxnX`3?94-hW+ELDfb z)+?v9Rt47*(GplYY?=3?4>tu_(3rq|Yi)jQ=3gK&XOX2IT|CKWSs9n76stUpSN-`t zj@nPo)~@DFM%h?~hNjA9{S7!H0&PL)!`ltX`JL44&X-PF=?)G(n*IS>k>n0qo!Jjz z(&8^>+{gm{M`7uvg6-U^DQ}6#|DZsoXWE*RK4rB`Lke1uty!B%{|a1wzOQZRwQ3V& zuQqu_JwI(`7?yor4PI@Y2Uu4u%HdrC?ys~sH6Sa=QX4lY5feo+NYsNv}Y5jC2H#3FIm%-0N8!(^7G z%udnII-*BNjN0${OAL6S{sH{aDU3TY_E$Hc=Kqm8dvY8UXLG%FfUcQ=prj+Z<7s=XQsTg8X4Z$#7oV+9SdIsPQDSjVr^dXQlSan~{U9xh_BRGpy$Tbk!@|(e5YF zRW5lQ`|VZT_4^1x_%+jDIkU`Xl|f|F_mh z;C?z5VS|cB>wO0;+~k8GokxsEu=4y*l;_X3yo~!qqrB@>b+c>?fL?{mDez|{eTkC% zDU1)}GQT>mGXqc#(19NsgtqE|~N)z-Yac|N4i`+Y>KP)yoN8UmhiY9MPw=l+D)Z0OfIkpG&?HR{(BE zTzuzz)6PcB1l1R9(*ue#s4=Yfy_XSJ^$F4Oqlw-1aUfi#r_P_QlxY|3Oj1Xw1?ElL zkC-#WeG}%QoNNTaZ%Zq_@uiz+xv(LBi99X9M(Sa_jZ=ZEid5p0nU2_HEm$@a$A_)l zI*F^W2V5ylk~Ap;&EQ@cN@EVlVJLm~UFtmYJ=q|cMtnjy3|+ceS&&aQaC?GcnF4eq zZR}Om(_C07M6w%!8^^!DMgFmdmiz0=J!QH<>VSpXvHP+ZQFh9iTmXn))j%AQR6^;t zjT2q&&_QADb%v@F^`SHg@}sZVppZuECY#gnjl-sMyzviornI_be7%~oP3-;?F2Vbz zJ1mMOFVQ$WyAa8mI5X1Nq1fFY?Bygvi@L z(W(KcIV3|`2p^_HCc!s{=h%@g4zO2lzj9M*Ycc991L04!#&%w}<=G|#n! zeQ2xO<^2suRlNAf_#!N9CLv53_hhogWqKM|T|z=D?e< zI(#av4K|q+Soas(M5xYEJCy{d)}WrinQ76T)~5M%$`%NOaymmi2^m|~9tKWX&v?a2 zSC))%45GxK5UZF*p2dJGa!9%nY3o6e@=N7|0QqGM&VEKmBh zxI*>t+3_m;g)mZ|(1;dDUH#Fs5bovpSV6GBTw53k;KgMe9B z1CzPRmq_1JXlllaECCC!q$oCzQ$E#6pUJX19-{F&5`PPHYe>|@iEh<@+S_nGfcnxW zE!V3mXeL~<$5=xd{K(WTimZ#|1uYgssrC5Qz8a+F5G!~oBD~tsdr+|cVKPprW$ZKH zwh$T{(fiEY<_^fRv6&S zi^T+1UTE67jw1f>Q_qb8`!}THPBv{jh=Z~fYnCER^}-sNg8g|xFkith&YjzPm(*UB zVvQa3#*>8fI#q~HKJcy6pcWneU7d^a;H@n;Q~ZjBV}O1T9P8W=b(PT^n+ciSIu#n0=w<3(st4VD(mb6mK+qjdH3dqX7@MjGT1qMJ!O&2yF& zb=pzzH2tNH=2JES@dc@s`rS8=4dP<-U#XeC!)uyEL@y5q6*PfnlVU*G$p^aD3xYBE z`M*pS6jqV#n}6+V6a5W>T#L_Fp+C>~o_GycwWgTLb}nyyZ{@0EBj6S@3P{Lc@i`^QvGnwT~gNXVgWifdHTuBteRa}40>43)5G z`mg)0t-H{0?6=qXiZsg;kxH%$YQD~XgO}n;~6g|Wd9zK7^ut=cw zw&<0mu;R9hu>Y*Y$z*T&nXTk}#P!A>8!LCO$5$v=W4A750d~dg<(oO#%Rin1I}$Ve zKmRI*R}5vs`X{#>7Zx(*zcMlK?@|1gu>Y{<@M-tuTs7JJRME1OWQu(Bmb$$fr#P^N z@BEZ~FUt_$y-UsC=F$JcLrD;kYx9d7A5z{9W0axe{*6!-xvNr)-&v9n8-~EReZ_UZEqSaD^Td$^sj}&j~ZjclJn9W(669I zXAu6YniZv8Ko}J)?Vz!&9^Miri?&ZC;i!yTmSqX+Hw-YB+(4btzT0>8torBgOGQa} z(ul^-A{S2v6h0nF5w*Mk5wK*tUrk(^4(MBFZ+OpBdse}{O8>v7BEvS<-V4+{a-ts> zo*|4;p<~&f+hc_GMEzYbj*T^k3ApA_#Q^6m15~J8_Cz!0BFWRZQ12vN?L|v!GBi`e zxH*p-(Gc;s2L~(|5a}MKu2V z>1OB4*d{PM=gVcD(e1x9mk$I(41?rh;F{_=yW3e`Rbo>;8CtS*&X`s#7k^}xeGgPW zri#wG&z$Zitvzv|pUKf$9PZ;fnoP>zM=sHzABYhsXoU3cNo+1Ddc*${M1OC@c0g9a z+puS7h8s%Jlc7t$N%x8{IuTAL`c(V3FEW1IlOp8*zZTS@+t-gI?T18ryh}~3iaSVl z6uEJR4F{)rSjxflBQM0pSpO>GRy^8*WxlQ z5>G>H3lwY>U&;u(lacc-EOY0{A9kH%a+xv3ARIS1DsZ-eN{wGLFJfvxky3KCrX#S7 z+)^uIsT6U9|2=pU2OKzbxkVb*F0jN|9ro`u*7oSciH4}^sX;?@qhF7nx(IfoA;WILF#Q+eC z!SRQ6%@7fY);${A2f4inpnQtX2T;gxZ{kFmep7zZ{KDcf&*L$mK3A|^{^qjQlA<_3 z>hh=xl;B^Al!SjNbo5usFkB_myM<%%g>=At;NXSwKv|_)dm|7m7k@S>)?pnLbff7( z>B6K&Tzr+tCEyqjy$*_atAE8a@AELL8Q&42j$=T18@c)o(lJLZ7{g@j=nHKt_B+Vb zp9m$*sOx7GTHdq=L27zkn4$MNiMa4=^*$qx6>qMgSmF}3I90kg_o2$udXXzxYeNMW zN@Op-O{FYjeZSH}`9eK-z3aYp1mg|1F}J-h;|jmW{@ZjqcdQ#rFG;!|3z75x0O-Nb0m)TDCiNG@Ik@ z+6Q{d7`d`$&+!8_p40T!G4!HFdJ$V19P9GQm3!osMa^gyP<}Kxk-NMTsIDSWgo3$2 zOAJfH8EuS6DTttt0dYws;{k2bKah{)$|KFrVLVS#M8cD(~N=m&mn8x!uon<#{| z%y^*_%w$)${O}6W%D3(&473dObE!Zu@5G;g=$K^oysGT_wmMmc|NqZs^osR(Y1rQN z!F_PKtMe1+ParHhuo}TDpDgc(Lru?d?JCS8K76ji_2vooT`(2@cB%zevoUKuFops?Xw2_jw zp`Q~y>)D8TE(a}&DXbrWl*aZ5_HBB60bD1yj*Pn%cQU+vVIDT_bQ0oqUlQC{Jv|?& zhd3(_uE)@9`9!>NXwIYxLZ6n^IlXgs{&;Rk4fJw)=Zd6K`p9l9!MtXK;mg<)7p?U3bRU~XIs9Nqv5mhzsY)OXPB}+zxj6O!KE7dUORU1fW z4EP>8+laC^&n{Chciyt|F4z74axge3JagL+ZoYoUi+U?B3MQ{891dR;&i{4pJn0j%vYpCjeMlZjp73h#?YIi+2RMl$jIUSi0l-jc|6srXRa z*dbeGq+!vOC8PM=<*&%dE^5Sx?s0DVv|Y2w%dD%u@SC$52OPeXM!Z=;!!7WH&}ao_ zFK&K9rjFNW1WjMTX&sT&rq@VOdVWPl-O6-asl1T1gIgTYCXTv;h-ccjAfJXU| zXvev>qNPu1I*hoBkHF+sAU)wI0tuA)A2czUcKC$`VC8CbRwu6!pahV^vZ0R*p+AWB;x$-fvBX3{7tXWn zH6{eAqY4FTi5BP-8$Vn%Ui57q8`tZDel`;4*V($o1L~YJdO^)rMYDfFn61@CF}4QP z04kSC>>gKr$}Yn4SEk6_>$4k~PXSo{6uS}ZW!ygo zDgQ#8Wt4JdthEqel$R=;S9lXwANO}FF>|5%?Kst;c}a9oTu(xY%t@8$d+yZEphss? zjhKWfwmQ|8m%=GcFj@5$VPi1jh9#B-NmxV*+Uej!j0#T8s$Ia0ZrPZPtU7by^8T&l z>P9kAyFLL1x5hEZ`%*5X*u)7If5wOzo-{vLqeufIhY!C!!g36Ygnx`@aO5a66mYIu zLpv>|t4eLj5R>_nITenj2qta^+8gY|*e+CZFzogFves53Xa``Nue8e2l1M|pCG>jK z5E3L9Lpl(-_dn2cWlyd!3%oiEcs>f435+}CXi&f+JZs>W-k@msvja+0s0}%ngZ|%p zN%6_o{;BK6n<=!;wMlP>8KnxCHsvc`g5^F z)}_+EtiL%QHDch&CjOhbEURXfhA!IV{Y})q*|RbreHU|_`JGpyOV)s8eiwCqpGa)A1YR#F6H2$UV+m-woBBNDzKr+tUizt|2f z{a2_;_Axsr#s3h}?xO}=9(i$*7N8N(_yOLBd}ANQ0FDeZUOi;o6_b6lGx66FjTubo z9iqtfYp>Wx$AqQ#ZjlaHBwyR&l1^))#MOz>XbTaxsmu#NJ%7R3Gf607v`o=6Q7FC& zG*X1z%sRc#w!i6?G!qATupkgDj>@`4mYIj|iMH$>JEzr>btz?HnA)Wv3u)YR!9@fH zVhR%DINXwcuI&X4&4t2dC^WD_Y11g|l%7Rtw-=#PJIRw114bfIrso~pFi-nhaz9T*M1yS&mEK^SKLd^5 z5wtGxRa2dlI2%KR;c7a1RO@npqW|}FtEyEbctyBJ6zV2&!zGRSRYX6Rm&z}a zXDO?7hN(CW#DuJ@y4@K^!-!E=Kp*?$sD2}phC%rqB z(;*fQ`TW9QtExI-l95>U&DHCXo=;6YhZu??$$cr{k!*gOi7=;;Co2;#Of003{-`}b z@*3yUd7vl9uk<`oY|^!;($6uBt7XIpmj!dkMYRjuv5q9fQAzUyL$3RKYVtpdM_pVAzW!Nq03OK3suHj6hOJGLYn% zTv7iE^Zr!-ul_y$rb|uXR8I2{kUD2MdvwO+R9}jiTPKG=(ubs<>CpJsp;n;a5PN%D z{0le*#51kAI@w5f`D@a^Dr%I+50_z$FJ=~Jg;Ll=yE4?MfB7s0Yj*e9wud}m`8qC$ zq_MmMZkmQ#wR(Kt@IK?@8lJ{j)5j`z)5_nzP=7^Lr7-Cw5-><1MXC!(NNyY&L@$d)48GIa~f%7nUojiB-6HSO_N15N6*S1kdoM_^+L6>uM z!Jn}7&O);=q^G_eU4yZh-k20Zy4-ExFzBztvs5cbjPCDr4|B!Swd-!BPcV7wW+)X# zke^S`Bes4zoctA%;ceJnXrWY89aDiYsighi{urFz-QHYsTR$%b71t77Q%2qFZ>EW& zq3u7!#$7Nw=;Z4b4t^fW>z%!ZHwH|nGXsk&M&>~sdd97=ku%HlbrkubFb(_x%n-9@ z%L^#LxF#SLW3WxS86h0}jeJpIrx}P_7#Mf~hOSxK?S64xIzZQRruAD5jZ6sS?3K1m zx=g+?^3N0ieSjt^B+VA>~8qG!Gzs8*bCBW*-E0wbb*!z>P6guxuE^Ze72^ER- zYRzX=W+!v!>HYK7(B^?PrJX6=wePTEw1{krSxi6?0lgse+(fxMfGd8=q!6bz+GlA> zC6x#f=M(AYAB#`WQ_G2NLe7BsRMhOV8NI=etTZ0RsqyQvb*YxK^M_?35e|V)J4^dv zWO{Ul3LU?4`crEUagyEgKpm6vo0a*t7cfcBBa+J$E2?y$0^!yWJKm zCU*F-3rtx@Nlu@dlB?iP-U#dO9NyKZlI$d`dO0L(=WV2S)d+kMxFyN7xY+Tzz+`l( z!eYG@_{%rOBB%=)58tm9s)VNvBx#z|6Dwb`5B%3SX*K1eyyc2J|2#_mjV%33(lsl> zXWf^HhueFOuKx<_b_50M2;OeylTpwBs$=2vnBPnXcvB!9`#Hktlg9mMW?Sgtt)JSr z%ngVic`I+$+Ir!RsW?7FwU6YEXf8_QQ}w=EW*lD;?!~#i-C-3U30WP8v{1LD>zqyK0Hvj^EqG4Hgl z{r-QL1$%}BjnhQNoJ><92-$C4!#lcyF9a=W@#lsS`ZTeVX5|HY)bUb^D4akeF)V z*BD+MQ06wrSo}yW-O+vjj6vs$e-pmAiCRj}uRnkTTN z`RQfQpNMq?%5Lk#T?)Y$NvY!3w&^mJJ@-}-;&IQaw2{+@a-im~R z0{ce}`di=W_6GU=Zf!gR1iddw*vXBA>Hxi}bNK>kpcqk)&A(Yg&l1YK(DW$U{Yvx9 zdSf@XCpv-`6wWD?$%~0uxJ{am_AJead4ioK>x-gs`JU@D{x|ha6dWwdB{*dRfPU!> zG8CC0Bpn+lP69|?ge$9<*5V*xS|9;)#Qd>%ww(I*l-N4tOsf_*nflJZ>|GzoUGlMh zjdSf4yzO%?2mY!cEh`wP`H8A9$6>ZFQy*5_pGITKsyj`^05Gr< z`r~>w;s2ECzExW*Xn0BOEqyX!3#iD{l!CXY>=am%sgzEXcB*k9J3g#duIRZkc&Sh%xL#X%@ zp&*eXv(fUvQ+8?J8NkAhNoqP*!)dymg^Q8Aqdli0YLK@QaGvrQEml)oSDF9%UkE$q z-}J@sno@fqYE~dh-t@BBm)YcG@Y#EjOozAXSR7t&{zCizZ%AOL6pBD(=s^yKS=pNc zDWPXT!aEIQu>z%`$>TMF@OC3VpVLu^ZEI}y^;~RX*)Z)}%QJY1w4vT+uc+(r0XZX- zx9F-=>Z+;1C2a|LC;hu%+q!rXUhLzJ)2@+h?b3`kD!vnwMI5v0dzSEDlW_^(W--%< zqxeb|x<4c)KvKD<9^sEkdd-O!Zt3uSzUO%=36FJ|MPUi5MM?R-okWAiktd_xd1G;} z_gTs3`r$E;5q=F=S--PMn5(F8)Q%Q=T{O|!hr$F}2BrnaJmvuF3`rYTk>tupNi^u* z&KuV%scXh2cjwkKHmCE-6iROCO+6s&E?G!YNgi4g=a+d%UD+bu&+TDOC_afr-> zkzdh|?|!`uvQOM+hO6LCLTfzq*#kIeID$3{pfaQp?>=;i6H>$;}V|>VyCLg#B&RWzrCTrfSucOGU zVG;u9;7Jer!cml&^yjaBdlc*-SbX!%2PyH62{}1bKqeW)2UYPq9?q54{eFe)>l%Dz;(J~0ca?9A5cl&5jolecmQ5bsh? zbF%26<$EIP_Y9PY7-z2rVSM{q9s?jDK?FL2N3L)`kU0F~kBJadj#rgut0j_+a;ApU zG-VWveV8%z4iz#Uzr{0;Xm`{2*gz0w!j<%>7W{^r0*~H(-KH>EdV^3Gdd-!U3NOK0 z7NIi4FMp%oh}@p}#gSQLqZbQ|d+es&9%Zp3s=O_PjYjuH zSA?5?aUIQ~`o`s2#M<80M^N?-b7Ao=;BhGn4+-U?=d8?BynndXmYmuYR#&;a`RRqr zg-&Zu3k&392(k#`-mK^A%a z%>ljue+VSz+BxpuLhT0Rcpr#-H9Wh|2$B@M0mykQZrxK}$6D{0Qgw{!6gJ{78U}~h zWk>L0ZZJRo$3Y(XlS6k607ty~pJZ^pY#e2`EYt+OFED%9^^K2N9FGZI9(vCu!M6KG{8PVU;|G1Y z5gtJ;%9~|0w*&AffqDTxhGosRSyfQb`@*@qLa&OCKHv5jW8P;~c62){77XuDj(x$L zFGCTEyky#ohqpq^GIgsBoph2UadA-!S) zlX2hxy+7vSMp)5>yxvzI{;NsAkod+|`@`)cS+Ricv)~jI$ru!!umM?f98Tt2d2&1< zyge4k(995FHL!4?EtYz+gQuNh|9qbudUU3rt&rOZGOz|Ayc@EocS!Q0U7gTVO<-O$ z+p^uLJr%&kUZ^0}T~>@U$^1<^ryfmD%)f2c`7b%n7ynRD*RTFnA*E6#QiHlC>R%MS zd|xf{GvSga!N3e2#m5>Sj^$J_eJK^SYvhPpEJEGV0}usLy3i3BLSyBpdM(F5?#=5!!q$S%TIJuY1(Le~dhxNL{ob{@SZB zE0}-c(1%|6ygl;zy0`g?6x(R7BN&HbQFqYlUvI z(Yvx<*o)GQ~mb64ew1DcPB+;T#hkY+eAVFn$l&E1_AghOuXO zD)9ZL#g2MJH-ix(!XuJOoS33W5e~fgBQ5`CT6;)-PGKY^8JfF@xS?UW#U1$@r-w2} zPmR{KZV!@wj-qJN)bYuyXeMsDie1IJxU@@T0y(kS+Y0{Y&ole>HcMjGVTO!xknZPAIQSuxHl5VP;w9)Hn!|n!EqRF_4rcqASFq8V}UHHdt@6 z?jN*0AnWD`_=5Fy*8AHb9n_$5erH8cidO=rrpL2a6Xb;+>%id4?KR|AIDYTowqo9q zrCJF5P>!0V)r7~s3syz?jB+Z$38m(64YW1H4cm4~Wv;S7Pmn5Om>$-CnU>`ve5Yfy z-BexcPUi+C38L*i}nk$={@zChBwt8&*_WLoRRG0^b4_NW28gYWT8BZx7= z(xNQ2Z)_n+gCBkGyXJJ6sS^>K4u`uziY@BHJ_G^L)kaY1Y`D`_;Ij3WkuLt(bNx!50~0kgJu$p#)1JU>W8St;d6rj}IA}vLPa0*6KX0`8oS7tw_&KhHRevG8>n0#ulWlKz`-GbWoWpGiE(;1U%VK zxV{x>-+rwThH{6`80c3~UL&s%G^K|H9V5xWwI+k>1FaseR5Q6fTBO1gboJm95DRx` znkl3NsG^5v@EbefG`PdnteF;0iu_WvFlYmdHoVT!8y};QZ{bq(Hv4HBzFX_xJv|_? z7jS3eeI6kfj0TfUYk6>wImOJab1wk#H%SJaWU2(LrHgXZ6y?_Rd@Ps$(fFPJZa+=zcXZQe32+lOVpg^WwC z5dj;@ope|25_v`|xWgR6MxNjlR9Ykbp@d^O2KYNQsNS7+x#wR`DavSjA}UzR)l=zH zk~(+PqDFz4?w~h@TF8gd2d-$hUYm-IVqRjZe~q6~KN_iACvSm~LA-oV?XAn~Tv zW27Cdr~H8(xhqzDO^uU*2%`v*HoY5T`6va>qGnjxGW6JfsF1SuAj=xXCSg;_AQC|g zg0v(-mk2!na7vh0Z7bf+#rLHLN+w~M2f9ZfJ(gOQ<(-N#=@x<2=UbTf0E*+P9MwG4~TqoTUH`j zu(k4(Q|+^GQQj`MWv|^qH`$raEhaF_W_jG&B4LT`f_4P^h~abWGZw6&{qaPlH_h=% z;nsZFRHDT5|IIb(zL&;Ji7|}FCqc8^PlvYFT^K{E=nHXa_caqzELs?MSAP-7?QT|% zhwD?~PtKmZZadsaYw%j8%j6JxAr#V_V;ex!j&q)!Lbk5I9I(DY4h=MvhU6Z*z`L+E zE6HN;lTJB_d)jr^Q(3UAvlA{&a)Pd8n*CW?$kac`{yPnnGb-Z3q9~2`M#-%cW}a3V zZ)>Rd|DW=DR~bNaa!MqIlaaJXU(BOU+99qqwWkU)^K{x431Llq6?Lq`*HJlG72GUO zCo%i`oqn0bEPbsk8_3R?qWM1hjoI`YrcJa?>ei1KU=t{5I*f_X27~8e3#_2N`!sx= z+F*^(^05UpE)}6S62$D8r^(vDHN|Fl;$06b6e9)!3T565NIdCvx&eH5jIaSNbPlD7 zB(xLss@R8a7lzUFE1@tY2x2sC2!H)d(O>Z+6M0M@EWP@)_D4Y?z_edZ|1UraD;9n zwiui8_x~laK~21bSjQz=`gXxZ+YxcvnP>@*>W(Y^ot5qFln#Vqyvz#u8daEkPnu;^ zpV87Gk-}K&T>L%$3QX~{5{WmeQOkHT>yAITWKxC9+yA_v%juM4b-T0d`3Vh0V5sOc z*j{G$5N6|;_NidNpNO{Ynb^AJh)(yvPt=;0G5LNhU?XTnD$veQM{hQdTkl?9vAH3} zY6Oyk$tsBCr-Peq*+2e}Z)>I`vQjdIQi6NxkBUzzWwkvJTh%1tn+FNlx5c^O?H(S~ z*0m&M8U-=o&l`s}aPRc=z6Buv$tHTc#g(q9qjK73FyN%3;RhsQAEx*+v-~A5M*CSm zcDW}@U2QM?hI^N1E$Ao=uQy-qCrHKIb;VtHKdL&|?6!6t~x@TCOEbor~ z<_e7@BOZBCdqJBZFc_|sFJ3RAS5ekEi?Bgllj&s!_HrO2dioch>hxb++q$6w?-`WU zIwUj)@5NFW*4AwtE(bNT@D11{-ByfK0T8-*a<$c`Z5N?Qp}u7rp?CWBb+V6JLMZ?e z8p`$0eW;extP;CnHG4?4Ac#`RV8vcd7ZRB%M@7Zj)&=CeEZEAZGyFwsgfhQ*kt4Q` z7;ZF}i{EZB%t z7dWl%L7j^X8+>2#YvU5=8TkcdLvT4dwBuY?@BJ8mT1l@r$OMY6@nEj=3L7+ej=~t~ z;~gT>ohCFr8MqFwwwiUR;z0xW9+4>t=IIYQRruLWoWQIY2SGj@r&~@2hknGLO?QhT z4ndlZ7ix{zD1h@s;;yEfUH-U`?K@8h3sA{?Gq7+~NQMudpgB0$ul~&9lx1Vhe6d^> zYyE?oNA$Q3TJm=YI|19tW*#r z|ILK)!0hS z9evnNZrtR}Sxe|Rw>4RWlGbF+ge8>vGTa^E78QOSf7bU!zE%02JinUf6cvwfnYg>R zAUyJ?#_B3IJFs6r*{cRZQ^HXi<88dbch|zyYxz33ji731`k_|~36T;eH467*;oRG= z%w@{2;*E+gjdo<*;z5sSmI1kxJ&!2Rn==$!#%sUhGtKIntk@t`9%E)`Crrs~9bGiu zPgJ2kb)6ZtAtHTWptqXn0svTQ)FuQUYVOo&dPq!H%5}kZ<~UnXBaC#mH^k%F{(=dQ zGUuQp5~;=1zN;zGO{PD0)VyUKY=*ZQEyWZf-DC#AzJ;-O@GBqMC5cJQ_k+~y{c)&i zUC~1ns(@u%hh<2f-MPgFKRsmxRHVs{0sA}@ibIw}zg)Gtf}KYb$v!-oPu9n{Pq!4A zBOOS-hk4FGqSCDpl-X}Y8ii8ddJBRDrNb~l2NHmq#*3~pLr1p-D?OuR#&d|lZZ<-$ z&n-_trTL(BmS##KZDuVNwdBo42h{^rrNW!0jke7Z7hf zYLZIHl)Dq56Fpjj?3<#f)M^7}AnX^9OY=f2PxkELqhh;PIKKaiEjAVorMdiV2hdnK z390_uV@2&pHZalSv9ODY!xN^y7OA+W*z0agIs*+659z?y-H=>@b%i4|3rXz-*~7`c znnBO}whSClc4Jnaq?&>-ulg}oZTD?kw~jQXMK=-_3z}UoS->tM$Ktf8o$K7XMZxEf}i%|Pq;>nO!6=H)< z-z-R6aKNavbE85N<*wzX*n*!{;o(VMrETVrO(yvAJY~kznDxM=xLCNh<7dco9z7m? zo3qH6P(FR&36p@+9F$u?|B-JnY)wvn9|c93L-UV_ConRK$AeDAASF#9xJL}`@;vZf z%rPC-+=m*$!G!#!>V@0+ewViIPbgK4S3l-zdK4m~;O(X;H#L4e9^cV{+%I%EA68zf zqA-WTNmBIO&M|I;0fY;yobl!bDso0&7kARO!5Kng6{o;eE&M}+bzq`z?vDur7XHY| zrhT|ha)bqI1`r|Nt7hGkyHx*_$qw~JfZznyoa%sZt&yL;4o4Rp?;Y9!1qp#WNm>z& z5Bb6Vo&lub*DxRruC_Kbc>GU`-Adb)GnBM3K9YO64rMEC(u*qLmKyi4+B7DX#!AMQ z7?O+4xo>Sdck=YYc-XExor9=>xjF5h0<>BSH{|*g*7$WXRhZMeh+`r*nC0P}R|x;i z^Q!<4_t0zq%gXjfQV|z%DvKc~_%vPq8#qdT|HNHjHmmsx@%H~5spGa5KE5Gv!!QIT z_l4bMeGJz?mhKKK`&9@!HSn2z1bK)ojwuHlC|oj5Ufi z*=(>Ysg-PhJA5eOs6uW6Zlw9*FmYCkv8L+9zTUEmotq+fu(zgAHVJf-J$cN(0JsB+ z-vg*ihpKH_ix0Otzdub)7dPbiRrt1p>bAhwb23g?p=3QfuN zY7Qyc?3_GClr#mxYE6}5=+uU0RC@7-GoOdS#U29K5dDH9s*V;h0Y2X}{CJyOap9nAi3+3KAoY z?hY6Yk?JgP`DWeb2crs%#Nc}+<&jZ>u^U3JCAloO49U`_(>wbu<}0Wr;o@WUgMP;FYB3`n#0Sa4B@~j3!Y}r`E%raf zhQdVfzrn#uVarAnft-wbNn;OR@cuD<2ZA*SB6M+67>T4yq||*6CkA-?QqFqQil2ga zP)uvb{EOj9vTZ@?@bP$x9|CP~@oEM%@?iv^H-N|^2rmy(yN$a= zeh%F9&w$z<8UThDA1jjtr61bt>gV8`3)jdknk)=sW)?hS7nYR_w~=y0MLlBifYysp zOdD8*ooVT8K;^dwSZxmiGS>O#ZKN20HRJu|GVL&|0?5IFQZYngQmKRF!F|oS1HmPp zfHj8dKI1lP%B?nYjIqFe?8(FMaa^539D}6}1WVeCdF<``dBis~=|?Yx45%!Ap?~ua z9GGh6vHr*_p&XjZh$bra$~FpTVw8iMJos7@EVD%BSd?c4!o5pd40qv9m8p>EVcF?` ze4X@=Dn-K-@O3N2++6$~qr;iVSu`f5lvtMB|J8?ALU0om0{*c|e!^x*X1dfJIys+x zas_l7{T51Fk?>s2)!z`+QJd9>L?}UrgulY?{{UjIbOemPB~N|ry7?HVauEW)gbAFU zv6@EAWh7XJuI8HYM|3d>u75gvHYPJ&w6eO5r%W$I!uC;CKG9d%rH}_r%#`4QH6A1w zJb{$Uc!b^HU(vHG7$V-h=WeoG{$rqa<_jlud%E^3FA^|j{hDLl0|WMQ zTB?2!*D6-sP!(JX@T~PIBT%@>*H)7x@@AUZk64v`c62AVgTUnRA!uv{qF4|v3du7e;C&rTfkIa2C)BpH z22yH!v7Y0XGX4DLjocU|8XIpITDq0U_xQLs|6dHlg%{jBW2tr{ys=`|Xqf>7!zxTv z52~#)kY6Kci5dAxt>=#7)d9k_&UEaHKht0wh`DGP_tZS0J8^;Yj|w?EG@FIuu63)| z@C>i2V9u|#`z?eV{q_H0kd0mr2bMcW z+%Ta8!X&9-mvh%IaS@z`W`Wn!6$l7i)Jb8|7gyrG{aUe&apfUW)u>26Jw&J}*tV?B z>?97b#RP3sOC2rW_b9nzT*1r&8f|8x@aD}BP1jX^0j0Fv#cns5eYe zB*_d3u%%bdyaOpV=L*v1t8ACc0XRjU78^yq%S}}NQISE2GkBLH1PLp}dWi~NB_tKO zTwW$=Vpy00TYGxXUED}Z67c&Qn*DV%&4%|izM&)2wrsj| zG5VT^?yW-f?dmS6NkY-7%dv)fALc#{tFSbZ`r(~x^XO+_c}gUI;0l4NCYo>HhZ|O> znP^U!reE9JKA+q&faq*?@Wn>uV z$E)~9;fQ0mZ1zK#l4HLMKm1_zF^!O z>y|q_!;tlpCA;1HXuimQGWJ$zXbuKY7NEgsJpeO6%)iocYPQYOiaB@E|IG`m&1fD& zUAAMxF;dfc5HGL~ar&#<)0Zn!wT?wrBp!%`+;dSYF-3=1d)1S5dXW;OmUrFu4X{V5 zS%t*RI4g-i|FE_!7jqqAR~X4m@JR5RtG2ce&mSMDnKqg6zc;TivD1wX(z6_)HBd&u zsg~Z5_=PBk{%TUkD!Jg_VNub{XnXf20n4fO2t#1afq$$+u7jL-TgQ;vnOe~YMsrzC z_e6_hdO_cDr}XB3(b%sf&GI+3Go8+-<2^?X%0bFTQe(HQX8v_eBkyDk8JdIa|he)*;d(8!Na|m1(%-LZOn1nQ4%8_mtZe{gXZU`t(tHof0nKl?@245V6hll>Kq|;pr&PxA9Hw6%zIMk$EShUMhK4kTRNoFElNJ~R z*P~kp`zIW;|B>H78>HB1aj0;(>cZsO7vtgCc0+l}pSsw$jSs-xApUCA7&9*2#Q56; zPv*zD(s&_s3bo}+$zfA4SmWDttjw~$-$|y)+h7S%JwvHS-dPhqY9W$kK%)6mY;)GQ z@Hr1ZIjj_sJhl5Ue3mz}o-M`xvA=hew6Y?hwv#h$ppPE|n;ZR*?WD)Hih zlu&*+?&8m$0!`4gDV$cTdr^3BbF%Fg_ei}A+0O6Lr#wG+qXdg$nziR>u~*~|c^f~n z(pc{Vy`r6=vkC-R3O^Bu9_Dw~1`IcLG|~w@SjI@4ml!*afEq%_bO9ZpoT~XQKLXSKWr-WsDb2nPM(Yl_l8d7ut+FiKmFxbFAmXuZDqX z7^t+4raM;Rcq8_5B&B7>Pi2G~DU2)c=5Ak(uLY;)im?k-^$+DMN8Acx$MO6&DX8iL zeCm*q|~Gq9N(uI^m66W!Rl& zF1!ojGU1DTkcUGh);XUq{LtdnSL$2HSFyDIph9T}eDj(V=1pr=)wX(kWO(E|yC&6N zKM@GB`%SiJ`K>PV5V;a$vg!7fK*c2=66aQ@Wi4e9xwqDnyXx9{Fv63e!s@V))Q&jyd={{GVxbB5B6^D;HgJ2hPl`(67kU`nZ zKMk|9sTR&TS%z3|3{1gL=6<{u4#KZX2*5h`^B8K-s|+8Pn~;Lki5Y;^sgdASg%sQZF(a9 zXq>@_J7H0Yz7?~a#3}^FVLLZeR$V^)X;?#!EmKGSOjCYh2g~vSll|y&ND4EmkwF1mo z<1bxua}EtF2HwJFPUvKy|6F9%En6QgqYMjGn6B3#HtDOrP1qpRE-27V$h^|Y0&BES z{w?%nAQ)S9*e|!>Z&_zvED%Dq8@+*tSIK!(>#O)*UtwMGt!lq;wawfJ6?`skAOz!z z+0bTJ>sxvIYPP2QQD)k|#%+Nz56QxfrjzNXA1FNj%H+bcyfQOWy3I_$utKWL=mK01}Wa{e6~o*f8s5>Q3@rrAk$&$ z`)(^f18ZFm1__wHRxR#5Pe|4TmB`_ChFkPJ%392_1vmmA8 z31h-er;ELP@ScE*$_UFgd=h$Ollq!AysAQK1xNkyAj9Vu2qY$AAOACZB6oSx#ARa5 zxOCC433h&-s9AwRLg#e^?5C-!HJGOD`7vm3vkshgTyx?1&D`c_NqV9duzW5xQ2oPS z2>ris|H)zoWydDoVzW>-_XK`7FJ9v;@@8cZ&!y#3#Z5i%1+hv?tRM2DlUbDfyCHrX zf~0yY>)9tL;MXZnImEsl(y39y*);X1yonv}Rx}Y|1g75fIk{0@Ri1tU1F0Yo{8ZwV8|8(;g@$qDF=7&+%KH8cI*_NHXI~rKf0f zYgjkJM@;>5j4zERMTrc5NJzyHtlNOE;Yim!t+ltqX> zl%P}sP%g_2U5fkFTS$a}S5XoR3-LA=0-Uyy=m%uwsK;l&YlZw!ZrqHDBaFslMjbo9heQ^t5|45|;}DAFJav1Ln9FQ1Q}d%riGA zU?OT}ReL!m#=L@w1zrpYE#37o^1;0_>+v)p+RdA(snrU#SoJH$IB_c<4rs?{o8L8$f4B5mY*+rPD> zNV>)k_beH>j7iU*x9I6-3J0UkyFExQ$bDIQ+r}#px`#{D@iMxGN(6%tkIDb{IZzr} zJ;)z|wd8R5VrWbQmGP0Z^-!-(KJd{c(ogUqWNxL(O<5f!|V_D^u6p-#MvC1nvHuN}1 zdaGAEcMI0A`<3Nf^~yQIt9?7jpxQ~isJ+bRc5!scOv~Idlocz#l6BtjHKBP*>pUaA zGn|z^f;lhBvm#)}rl%~au@wp+H^|j*?PG(mdt%g)>kslZT#Wa!FGO6AP05p@)roq^ zUGu*9Wnyypfe*S+A;L3J)>^u5H}hNEIEMbvGaZdnf_mugt|H zjptDqe#2KfcDCNDw{kD;PdAYrMqd|^)UgJ>Pl+zmBS+2U#-S@s-^p?_Y2~@e!$1Pc zKwd6SFX%RvC8fd!slh(H^;xR5!zkNhiViySLpjATS`dh%g@mA63U)=~es(prsYAXr zojS>ppXeJW(^QXS{H@D1=Fkl zG8ElEniX{zGd%BO@FHuu%BSMY6TOs3FA=M1P=#C`9Ns?QSjW#j5%kDnkB+p^W8DdK z*Kz64kwjp@d(4wkeHEZ>Yv)7N0T>@F{?)7CN!9^M=FB*(V>$P9>D3u`oPMx!k>Jj8 zlpb+unL#Ij2-Zk*aWF9c>b;!c<#EtUuE5>mi0OMQyhCa+eKd2d>@}Z_s}$A&^wDF- zeRgfF7`kQGo2lH(%=rFH$tTzMmat$80Y=XEg8E1i`C!-BoC#ZuL!lm{fCt<;`G!+; z+{rGM++6%=^JrpgpI8H-kyHfrA90`~4m4Nmk@a+^FdcUCRc3L3B(gCkt2}h)I{o@q zIw6kVm&@ri5T7z({=)=dK$j6qS!sg+XW<5m&?yl+n2Oj195F!UBWc&s_uOIx7b&mOu2T84B00(91gw^zE9&ml` zznNG1oTExTTo0ZfI`bVf$~k1!G8Hw4mTehzvK2MF9`I~aD|)~Q)(i^pHYvIp$RVbe z!4rjP0scvZ+@;tur0FxhRqDg&wN5VA_vM+cbwQ?0&!E&TGk( zPTD*7L_Qg4k&sS$S_%!Jh%w5wYbcA$llk@E#%N!&s#9wD*759A&RoXC?R*NkziSf2 zJO3@{d1&x?bCp_8i?+V;Wt<@_3jfRLD&L9nnl-z&a4SkweHt!kPU99}XPKxBX4ueB zm2Bb3NkuR`c`=&i+uac12}lx;nIri{%{(Oc=-5d16)M@z4pYlLmUWWLbpzZ4uY#ft zSxA!HOxTGP_1}qPZPjpoQC$K{!5#=k_0VDHJj?z!;u?1jQ0{eP z$JWAmg>5ja%66Cov64a^=J>in4-+ili3p0Cupb1YNQJxvY?&^5z;8G_%6|O0@oe;x z3+sON#pjg76<7+N0CK$1kBoR$qsphc))x4{c2T~1 zQ`bdaaWwV{A4k0iJ3zAG;hkAo4lldI2*4d4H_ksuQGb!^{w0{l)bj@on~?OLyfvx7 zlFDXSCddp{gzbgDm6)iUQVOdso8LXLOs*_R-aQwT1uwOf_@+X|DRTk`f^6Sw;2ijB zj{j2)wC2*$w67ZF!sR;4+*#+e(2HQetjVrC>BKXmw03B=Ss5r%uF zPTb%YkbiBpgcNZDKz}ndz8aTYm%#O`OMN1O*g=uDt3KtwS*zVuSDdegV@^lNxjX2Z z#n5A2kioi7A{W4^v^o%7t_KhP zfgei@zd_lB)P>+o-b#&O?9}&!8TYcSMhXe6KcSnR1?qrjGG z5<4;}E;Fz$=ozfsb9`-|R|a>7mrWdBA`N~EO8pn$N71fH>wr)ENXTS=t$#zB!(wKD6=-6DG?{V!x{t{8 z%pZmZ)c|!kMamk5C`{&0{eA-+J0FXx^?6&elIGmNLU#IC_YT~uzyAUYBAi56$L((k zOBYM%X3mx6rI#U60PC9Ij2`7EVuLKRa^ukbtw72CCZoO7BN~^^s{*TdI{cOVu?Np2 z@E#BCvCO|J8o)f5yqbp-rcBF9f`jCW@z83vUNW}sj2E951n>@0w%D z;3)S;W7SMvkyTv*JYsC9x}&G?4B?Nitdajs9xpnMxvcsYgj7qNm>?C*u_Q7SoTFa> zxTu*c6_ni=v@P~O>D7l-{su{vF22TRD-V39LoKHV);pAI81Gc28*Xr>JPi~V?|gAg zv3XTms17-?ik!1NZ|;kI&|iA_?2ci*Nl8mYAs`=_QpGOc-(xU|^5tOwbc;NI;7hoM z)1@|?3wPH##gb)AueONpmar&cRu>M>niOhQc=p{@V{zOs79=wg3GolnJZGJPYUFVi zU{47T0QyX~Dg5*TY8ThB6b$!m0;|5#47pbQ|9>d7}~- z^zi*C-XO4(EsQrwkKIFI7T#BQUf)XJGawh*V|loSOk_1gf{+p%1(50>Ta7lkC>8SK zB|VBlTe*SV87hC$uoVOXIs3!gVVIpljgq>60V^lR_WWeno$2|T6hRnG}gDqj3Ld_&S+LsY4 z1<$(xg~a%KdUs|V!y~s<(=A*Jt`!;gos?3Rj=72I{QMhbPL{uLklNrYM)Z>9ISAuL ziJk>g5^BXwH6Sl1O1Fh(lykQ~BH^;&>ktsIj89Zh<}Wp#T(z7GT)xKb@7Yc=qc+dL z7{(@6SQlN%ok~-V`L$6wil;n4^N<@zz3-e9_;e(Aw)F|G(at*aXJ0@rQKC}1iUlfU z@eQq^)%APRsqscVx}>?~U1FRTLfE$g(!T6G(P&WWi)s%B@}0 zYysBQt$?*YM3=6X`ih|ldF5XrcziPpeXxHBm|6e_g*BZE*IUE{j^7o;U2%{c!X3z5Z!p}Yy8AUqHpRir5w zpZ6n!nZPF&q}uNXMPY8u+i)~_fpx_ws*-N(Aow&C|0utk)Tx<|A(0w>l8aI#P}3?x zxi6g_rR58f6SuUc>O)%joKn*N8p{yGQ!y#k|W|$eB>gS>pE8mCx z-{-RQVba-*^$UQoa8YS;`mrv}DM}v3%+PU+bw#b_eK3&z;1mD~#|28yfD?qM7l6GQqA>RYS7-4tXfr3M6Qgb2628tfa)e9czC-IHj< z_ZKc=Y92D=aIar?r_k6n$4JA+-X3~UY=R$4uj$m;jA?4JbiU2y*;i`@b_Gh_y$Y3~ zM`+?5TA{)rT%zxe=OPg?OAEi&6S3xe>^+L)P+cdeU%rzO>H|{5|I8^w@x(sxLwknw zN9^5w)Y&$0t0q(?66f_UsS`Bg>>lDA%5_=r2&F9yx9gtRPtMv>ZqWJ$2gJxIcqp@X zkyhe_F=^>t*MhpuVVeRtXeI0u$R81&YMHh`;=BeksZ%}cVHfY|k#L~?(Bsye{6ip&AO>YLAnn~fTV#sC0C zE!4Dik+YnUt0Bg+k*wW;h&1Ik0;DaRB_UBRD!JRsLcITavMT&76Xa|k zT~)63P3*WR3ZnvPy=>gXimqGXIS$fBkOm+X@>;6q<=;s1G3Wl-c5~vQmVG# zzSy-je&C~`XSWdNRDF7$_>&_FesT^_G=fczxl4J8A>U%s?eSPc@c8&a;1Vwr>@?e} zkax#()2zJ+zm*EN2WahSFf zuN6c_HH0f#l2J)gC%TDaU|11m*u9^JxWWd3#(6tHLu0iMoGH9HQ)$9s;Qg=MDl{;% z@hNP5b@WoM)JA+{WwR>4E0a+7cOBJ8v1^0p;?*o+?}}?K`avynFBnyLkflj}l&07O z?x4wcjPj9*Dylo;#d}z~$AdfW6KZrxw#*L7U`8hTxR9bmPej+)3&(p4<;k9LZ+Crk zLS(rx0;~paPkJ?tKRsS4I}D+!>UK~*!6`B98*sf^`SKncETse5n2(*i`gLJ)Lxl4* zPz8n`0FJ(yo*wvVg9ria3vKMeUpWY0MOtvyG~(fmi*=1W<*OtpG8b=wI*Dm8uWa!G zAok@l=N4=~J3y^LFIDn}O@Qd^k*pKKVdO1&2vd>VY=csB*GL2Rij zj`ySiHhNq*TmHr?py`j)Xk!j9-LP6#WD{BiWT3-ST7942n}n$nprs62G|T4hUUsEa zNhXqKq$#|_4A{=FqXvhp^;b3epZn_pz)!32t3nSHo~j8)2|9y3Fr%5@7z<8x{g<%r zJsPM84tv)zk-9H2%dWPjI_aFZnS|%){BzP1u4)lXb5#K+ou?Bz2$plK>7NblWmj`B z_*2D*&$Y`Yh{n-SC|a3SD#_`4Yr#Rrv9#qw(cm~yy@`rr8EW6A?kpPmiFZ!;nqQaL z4)@H#NQf})hMLr)pj3=XGIh}AB~_xJ$`V=?`p?}UN4sxTK>uXgK{o8NQvJ(!NaPo! z=l`uSJGk5wmN!w+mMQO+DSD8wN69I^$NxU>5e?CFqxkdDjLu*6o(oe3YvWm|JT37@ zqXesNLM5m9tfTO-QnQI{o_7s>m2zJg2e{S1ZLLK}w_)d4EJ{Z3Z>1J=x zk78{gN_`%HIgAbaO9{~I8Gci#*kCH@v-$qweorWkuz@l@AhIcDX&i&F+Y$Va$>WNv z!wFqFG?cC6ROCG+)SY14`JbmA5{Bmarm5EBLlsqh*Rl$Iu`2x~BQY78rvy-kphFUw zY#;dz&Gj?T(hEl<51qXu~|J!UQ!A1}9zA9ZZ623bw9(0!<$ADYph{~d}kuaM?eQne#BQmI*m zSxCPUmZ?(mbMMOxx4L^53z2Q;0V8K-1+@fyWeMYSz-CnI@2jMNt9q4s`vmnyD%NyI z%HVz`{c4Kj3;>pZ_b(~|IM)w$7q;)2VdwL4TQn=MLWeAEbk+|xWpG86WjnzHI*2~y zs}T*?dTRUGQ8OyxcUh&+!(G_vv&`Ih(6R$KjxG(UK+vq-^s47|`Mz~CNhC0e_U#-) zzoYD?xg#FIot)PzXhyRmQLPgNF*oxR;C~H-$zG;J`Fu63E_>|Th?#-Q$3@kF@2S8t zRyUT}+d@Fs8k7Xc;Jf3`z{W!HN;UR)~_H|l-H29WeMeR zPzt0G8y=%5vWv$VZlwKBfwdMwK^OPd%eSN2Q{M)_-gCREy}%d-zJd6( zNqFqB{-6v}F6$+UBB~=%v(X)^ygJ4|UtmmO|=QJ5&)#^hTCAeS$4fMwGJ zJB}H(1eH~2)x1$c8 zFe=^?oz4vAyc+fq-Qi|9HpT#VkJ^OTu4#}Ipn=(`1JS7j*h{f1eyFhaxHs}1Q^edE zB=VO+aPxs!CR8~tlBHpU_uQl*j3p=!HMxJadnuLzM$ORoX8=bXZ_Y=sDMIW3#f6Kb zt3E7`D$!Wo&Un=}m^@|@(qp&ZSp+;_s=~cVwHrM0gt5+~YkC4rbS3GTyJtm~h{)R6 zWgQ-LlS;7=f9g0;{M4Fu4jxa0d$llTI^I(N-|({H9sgfauTflzNr#Bwi1ujPSv5US z7KXj?XN1yJiI+TxJh~7VA{jVUmn)L#oUQ5#$iK87L>p=LJ(iY5;)wwupTtI#!{pu0 z*;5C^@c&JJ-?^BO;c2PJ=saMxjjcK8JvW1Xll6vzp>#TaFmx@eZhe%g0vU2UGh05| zjau~`o<@T~@im)lPXe>?vOs1k_H?CZ(J61sGlRpIFoE+EZ+J_vcubwGgG zAO7+Cu!4O1Nq`~UdzfhVp@aG|Wiz;iHDiA=gVa-<^V0%VPqSJ2kUnAvc99NOEw^&L zrJ3L^Ml`C2(p%RCfi52Rez5f<#;Y4fJ&7YJ5UJv*61Iw=E_ZLYY9>3vGoxD+PcpoJ zW|C?q7Kxz0LV0&2k+5Zy6cs$<&#K`2`Ig`3^W1j&>Rsbv@~lF>9#44q?P#fnXPf>& z!V85UI*5&vzmVHl-(;@i&ZJAFr>w}PP(yoDf}c2O-`FQo`||!OY`*3ETgbQmmF6yg zx}yb@6p1-+%66o!#aY!8O1Mv{(!E8|$p23Vj2uwXM5jpEW${rPtpSao({`@~t}Jxo z$MrgFiq@IY`MlQNC&3f)R}Y$L>_NkY#W{NNY>v<4l9A%AE4EW59xDX`-6N!E+5|Q3 zlg{!L4|5pew#Ygd8WGX|N?dJ8>a0Bz;Uz7!1|aX3#S-I16}la^r3p1=6qA_Fq#w^GhiX<_!uRW!7!tF3xM`9D?f(ZpPaL31l*7m+E^`VLK@+FYrs zvQR}JuVG$2Sn#Yv0gPXDXO&y}nSNhTvcWBWcmyPEVcD%S9_Q3HNU?eYjj&`F_yTC% z_(TI#HG`c5{Hk2>2rgY8^rCqg5bbfKi{>XPO>xFuRR9;rJo4qtHNKckz7Dea?yTkZ zVrCn6isA^z?YbA{F@YG2vn?A;^E;O9jic3dx6T#>4&FcVpVNyRILAigvaJ{M7~Mo@ z2rPdHIYLD9l8Z^!xahyo9AXCZGaO5c3q_~S%J-6DmZA_{k^(N0Rw1soa@ppuIdX(N zBc$SDI`z%bRFDVN&xZo8LE91KX;9)kywg_|l~N?uNk2*P%P##B@G zHf6tj6~)+hxsnLZ4<_p;A6SasD7m9^%-+)S;~vCj+2bvi!GTU1SgIB z0|P8j5RhR+$e{(@AAy_ffpXePAD|?48g=J5KXMNjP=QVOq8?)o4RFc^YFp}&Pg$TwOyPPH@H*;~9 z$BZc`wQ`}zvM9R~Jpv#5#SiF|KD@{h#mk7dx%)Vp+VPNPV|CrJXw3H z)uekX?!H%H-VEbJV47xYXo$EG&ue*6$)t5IAU4Sdu!?LLC>y z${{YShZl1o19#Oov$MpquGwVOg= zEKoVVq^^y{yF9d1kJd? zcEzcVl^zA~vp!|Tq)nUAvO7`rZbo3iYGmzBS?CQ*gGoak40J507X3oe9^PgQqfKrd zo?gi9z&tf~pQraYgC;QZq}1rGf3tPN?!lFqPl#l*vHq{ejrMcuBP|0WQJfF)@hhLJ zt=?(_`N556YA+B7+g)3A1Ns7kcC0eYrq)O})|7C>4RTES(^5S#ST?*t)$zdgC3kgM ztPg~o>MFX;fI8JoH9bg%+ZkF(`vIG*2&pSLsp7YXgrp3xw~6T<(JE|cIKjmP3&oi& zj6s_@i^out2n=w^|Jb030LJqRM_#Si0v0=n7Y1IAf1?cWi+XfYppQseCyGvXXIm1E zE9g3Ag=BbXH^^=-9I5hd*Ww(qpQ`PU6TRPXA$d#xhOeYiT88J|A&<{<#0 zUkO|{`?VXS`g47`_&G%j6KWct(TBy!FUJJw5G{))`;WmKOT?2-@J7~dM&>R%S#wTv z(IE+hIdE(^egCVGyZQ<;709l_(rn3~WFic)Wvo*Zcm`|_h3{%MB;q-jaYey-&#U=V z{KEbM8VZoa$-;Us?ajoZF5shTrg`BgOnp>V$kBoR-7|ks>HY2QJx5x{R%QxFE2-~a z-R~NQxRbUypPVOFTJ&{z61Sh0FEtZIW1?Cwx{*W@`+AjJG6iTpent$G-ivHtcO8OX zEw=|*V#472`1J+dT9z*tKnq;fKAk3|Y&M|c9KF~4sFs#;i!T+Hi4=xGD8g)SP*=M> z4V9kG{l5zHR$kDUP{^q%rxzD`OtK!&qD@yB^@AW+#~u&VSBA3c5q!ZV!ExJEh^n^K(qU>Ih&xgO)Bj%k5?# zlGD&f4FaDv-Nk^5RC6WY#dAy{X(M=sFDR* zeN?BuiX{u8f`7nY`n4vRRPV6P9WWyD_8fXoED1^c#3ps2hzeBP1+TH^>QEkkQvUw0 z+BzcDC{70CmX}dQV@N0sU%$(P2GUh2zjcYx$`7|Crn9aTolvX-LlA{2lkk^uHQ9T1;IiH|F?H6X`nChp`!gH(ZyPDG~}X-C7!pPZt=W z?(pk~#~(e+ZxLTQeihu}xBlvo*w)fyVXg_sud-0j`0LsLurAIF4=2NX2LVtdxzR6q?^)@4LVoRO4SyotQH-I#nD1!@!Xn9`T7 zr1!}nfsgwgH=Pi^UQd`$?B4g=SjyUBK!J*$gA=rG*HV#VL|hnT-;|5C@KGbGb%6@p z9H1H-E~mBRR80^gP39TmgW+}R3eL7EMKAE{OlVKVHuCdTCqe9*)_ZXgdggJAlZx!d z#G$CGEGg;c{Ks}w#Kp6Y{lY4)24eNUBMKZbK>ragOTDimh(4b*;z4Uwt%$LKOzPym zu+=rU46@4)k+VG6)I#GA`FXf{<@=krb@XIN3>JJ=k1!Hvh(Wnyl8Sy}tTq<1 zYrcFxwI3Ch&=j>f`iKu2au^H`oM*2fuCcR^3g;!04#SgA>V@T91>AZP37&?fjuJ{m z8mu7m4Cc}&HSR?#UMt(756SYn%~X_TD0+H0C(96iYrP#|sWG(e)UJA%HXnNc-Wu+@ z_@_lZHI@6462j*9ySNuu;^?)P?|I3U*GRZ&A$;AWTI1xVUtf*8vjS$XhR>Wk4V^}a z^zv}J)X**^2H9MrFC4!eRKK|pDh;qgGK94tjt-~ zr&I|Yf60VFI{ZGjJ&KuSo-|H(3_%xfS{L^~t|cY{J2JLJyR!yy>Dsp|>DLd#=v|4# zse&5;`0#x&wM@F}bzwICb^eAizTN&vzoKuW3Sb=IKGx<~Y5tLl;j z9v%p1T3!c5QQyGRa_H5%rg!>}gDtuZEV%Q4_24)I>YcPBt~-E`C~;vUVA17~MG0y7 zlb1%iZaknTtv6Q(#=vUr(((L6LCK`xP1H4O-c~F(+ke# z$1nu-()5aCvY|AYkUdwSCgcjK%BS|I6YbT+Xsy6AG3Jt{7I)TfN%txO4Hx~C8wc6o z^0VA+pi9x_ze0BJhnop)@zX5u@)7lCMQU60a;j=8tmya@O=vmIOR(3j`VeLM{8^T> zGP?U?*Y!S1tyX5M{t9ZDnQYUAuw+)y`rTV2&?maH1qYE`y|99B%{az2>xmRLmyGb~ zCMz@Xa{!MJswm_Wd@x#5DwYtJQ@ox2D3T5%{?gmX5YXo_XZ<&WZ<5!`q|HMwpo(Wq zur@iwIJOxVQVWcvwIoj>a~>}nA(EXymd)n}dZ|*ZpYA2-4u@mGB4-eVR}v;csu8kT zu@x_YsLV6as zQL)IJ>@>1#PrTHN)+o^H>mY&SqbHs7Lvk}q0NnrM?O9rP;t9A{SchlCj{z;dTq1jp z*8;yk8s@(oF*Zg6fFpNbLP>_!02EP1W!< zB2lEVAxs{ApeUX2Z2ytbWLTki`|IK;f%Gk46f4N;dcVNI&r6(zBX%iJU8M( zLlgkkD7DYT8S-AYt>l8Xe^AZ+JO80MoR~h5<{xgjNIl(kl94; z!I>BETcB1|!XLh)_tdwlQEUnL%4TDdHzZX~Lnf@iK@fc{SF?bC#bh-O;*yEl5-E$t zR()qIig0(b1KI09nsG8^(FLUYjP0j8S%-K7V(O^t{TFXH(bUrI7r)mUnFqJxHQX`r zgWUNR91b#p$q~P}(MbTm%ILS`MsG@zE2T>F>u`C}?6U34NgnzMx%9qAb}?@GYxb%) z>%sg9pKESY2)XE78J~2_*0tJ?1@ro8^o#4-%bhPKbPyrnimI=@sm{^$AdJ%X%^Gu& z*Z1?oX~uuAU7UcVkcFNE7CSBIZg4MqH7d&&lIcx3M9tA7YeD^Sbl20hbziNiY#r#( zDHa}6;;SrKaiO}zaCb$z*VvPUCv(FvDCmCuXgMR(p0C@QBJ*)ahnu!@d~WmSr&ZIp zgc)tiSw+LOi7~Y^dOk17TR(?dlA;kd9?|(cHJ$uU6a$Fmu`S8tS%B{j-Nm^cvq<|n zF5Jv@`rcp;bD`>h^+g#c!E|grYO~`@Cueml7qRXE61-$TrYHGOPnCP9z}HFnxOlN# z$nEf>-fxN|)*JQ`vl&_qWKOI_ygz@TZT4Bk&7lz>Ojk!@|K1iS1rU6}_WNwaH?n+@ zmevA<=>tETlaEyX?wpNHV_lrP7go`} zQehw@V@WZ@>}mB5M<;7xsvG{MFjMYdeRhd7!Yy@SS!`SY>EaQB+z6_WVd67O;Sw)0 zr&kX{*IT9+;pY#J-Hy*&aH;Y87e}B?j_if}vN!Rr{1Q@YL~B|5P!ZC9Bcu#_SQ)2d zME^)O_Vp@cZ_UE5$VHsKf|??($pyC+oX-9@@2{qR1r<}1EJ%Ht(gaZ02PkaZk49g6 zAniVC!{C85OF+q_YwAjl&>zQy!O<6lihLQBJx^6LQzPY|UoP(5HZ=QQ0K0q-F~J=$Towrm+6exHwjhD^bkUp5a^baw zwcRgEOc4p4bn&rJwA&2BXV_z6z5#l;qnLezn_*p!NA#tTad@3u4WE^qA>^fwYtF^qH?}Q$o~sF8nhl|A_nKnwp)! zSDx%tqsY@BD0Mvr133r!+E3g$Ux?P*A@wWvyWh;1ayk`4_GshtFF8i|!X5wRGtE=M z3yY-L9`hAth5nDY95|AD)AgR*-&y;;?Ywp-`kkP!b=1MDw3mUHE8Yr<{|C(yr_;*0;!)qMZ*!~|& zS|@9DA{mVFI_N#J^hCywb1papxE!3UJ7Jw};FBC)dewcVU0X;S&ETKw*L)g0qFB(S z{=7)<ahNXc7T{ty4 z*W0E&bP4{L-2a-F4@iuks0{vn!*+U;P=SzXlh<-LcK}+t_XU=TdzpFo7>TeX_zzgG z`olA)TRf|)|13+y{x$cUt&{d>B z9&Vp(Uw~ujfZWL3xY%4s5SM_h9lV2%ax_4#N3f)D5wy7??ugCyKhXKc0Xz{a&>WH_o}o+wX9(5rRmathv&oIV$m=SBvzUbfRyZ5Z09%S5ROfMQ*S9}2{G^LSKba|;;~ zqi_sp!R-GD?JeY#n%Z>8lliB=t8sVrR$6UnQ$c0jS1x`2fMrc$9VE?mYW%z0?F{F2O{DMKo|0D$7i&a=8{m3&F)0PuaLiikI{xcrI} z{o%Iu7?D-O!IOM;>a869q-NR%bJP>fl}`XPPX0xM&C>tK8^_MHX~_;O0z#b&GR;5Q z>Lr?fpZNFi;~IJDQ{CoGDEN`YzeW=7hqpmLEl~kaO&bmLMwp$_2UVA!h9ROIh8NG; z+5AWH{<-Yf@D@*Z)|M7>A%J>7Zp_@lis)GL0jN4SV1s!W(>T8^^cYyg<7yVh!cXcW zs}2*aVPE}V){4@y06``E#i4YuBP!L(o@l_OKy};0qU%5Xq&Ru~C>SI(kwc>JEGJV|44n;4<%w zP;Be0S;|_dHfJ!0m-_eAMeW8i{2N{%k1!~cc!lM`Wgzx*8dItNvkLS?nCA>J0}*3^ z2o>PD0I0gL(M{=?88fn<%QKS}Hp{3tNM$y~uriu``|2PHKImGSiB%h=Tom^9APi0w)aWjHD6gIX;wOyIsm&`&jfqcQh$^J1 z{Vw^TN!z(SMS2)X(YB$x{Ce1(`XxNL3S}C`fn;8c64nzM4=K4QFghMW02yh!n=8!e z0HCFMh*ciQCObeJb!E<2wmzl0b}lPFCA}vQo&=m6dDyUKyWdYy?fREgf;6_RqgWXW z5?UluL;qhXTWvDU8LBGlySoK=|k>WWLXdjH>9* zd@o*#$em#WWO%vAfJkx-QG`u-nnv)ZNOn}W6BSJT-(lm24E?j2yug|VwIXH|gM3Qc z@^tqOmRI@u`yL5-uqlF9$WO`e2u>=AX})cDV&fJ3sGucEw*9#u?vJM&yl{FJ{KhPD;t#g61vLKckc95|LR0pFgd1cKzCEDwL`OwZH|SOA4x~ckuD`E zj1^n4;;;S3sq}8${)HbnO7%$l#98#%_9HPp2q1bHtAoF%*H2%W+8V`?*Kn~}Em*!C zO*q_VVrG`l0sad?Sqz#&P?D2Ml(JSc=&rk(^JosxXBDiVHe>huT@3|NV2oPa1n6b` z{D8+0+C9g>-++Ws^%F+*^lg(K z2{e4FVX?6Qcm3u2CTTw@;>ZfWQc9HqmW8jbhr@LhfUL1bf&eo>%)bYM==w!W4r8*^ zf1nsT_9z}^LerSjn%%JIQGPgf4f}7$7`T_mBZc3mPu@#xEk?lJ;#D+FcOvy-ujvM7 z(O0;Wuz}u!o%lx)WCu02o!-`&57@wk$T1S#c-FAOLe zDpl z6u)tP>RoQVgSUfc8WF@F;WSh1mXVSO@BclN9cIU~gyfs(&aV+rt>ns?7&hNt@Q8&Y zyN$O<)F#Iwo1fGeL!|3K)Mta=bhJSIp{gyC0S|x2ixGUG`4;Y!hdtGM*TW2hN!zTR zrGqC&!blCmNfp(Lt8|qn=}V@(ByuvFm7+D&axZ)OWz;`9L0I5hzcOZ{pI2V6X?-~^ zH#wmDP^ng|zf#BjZ@fxeENrW?1ruSV*iFE&mtf}1Iz3(mY^>~&3~`L z0yrWUSZG|tb!k$$9`v;OpARAq`i9b&3POBEdbQ$1cge}8NSki_Pc038my*sOED35w z&N!<^-`x0#d|8-;VlNVT{Jropx9-x%X+Wz~C%TMyzJZBzU4vv3S`xhG;#P`GR~2?B z5CSm9n}6eVhc3`Mf7GURZ))Mko~V0XS`t&CjUNTBC?#PYQ#tyvYmcmg=GAg0VO8Ln zWlAb`yDnFf*3Qs%gu<;_Ehf9y)0q(k+*f>Wn;&d+$tjEq2mUoaYPtU|?V^!hh4@&@ zF?jNzVq_SH6Sw{&eAH#=rYPvL08@Q_lVN{W0-=-Z%E+l8Z!DldU+xUj{WpAcsR@<(@ux)77du@rLT$k>D4%RgP?J~4hSF}(mZM{< zyp&?|%lW4AYcJJvA1rkKCFw6xgF~5LSN^v|hv+MLZj=PO_g@9vn1$!^lm;djcp6=Z zbESq{iX55ToXirRo?!5VGF4XnwKjgc>Q}>z_GJK>XLtOs(C9ar)IW(@*f9y*cp|#Z zoRbnisROgP9P*@SU{Ma{jCwmCQcsMHyWOrlXoEOmn=rFmL)v@ECKh}+ghI>1Cy}8o zp={NTRcf>b3~T7WD^mA>XdGqZ=?v&tK-*E)K)O!a#PpPo>vSz>!${C;f_&O6YpgpZ zhK{vlpA9?416*n%)M%)?_Z>^EMpdA+zWap@S~lp+)Rtfs|4Ri=WNPP~eJ7H<#O89C zm6^~5{;3v(^6nQzFk0Sr-}dWzcI;>h^GY+1KC>=W5QFOx3qwgo=4|L2ml*Y%K14Lm z#oe|WN%2OpmjO7DJYs4UW~Q`FoaV`Zb3VUv{dL?Wg~*4&&uh??ajX~Sm9D?my)Yhh zkgKkoz3N6c2N^gP3({yjro^xe_FDl< z2mw#wc$JAEkp5I36~7MTK9x&V2!KGX^Uu>Y@H)gu0DUABhpo`W@o#t&F#0vg0YeUc z7-kN=0LHlPJ-j%-GVo(s3BSx2igh7Wz{Yu2f&*cSnf^O^0j_gTHGUl%l|@diL*8Nvp{e(>ug(5+8XZ)7 zK`BwQD5iCbEv<@tg@|)&FN+`(lrzL50A{q^EJ)sS_*2t*>)-ANhSO^@0NAgpAdM-5 z2>*$>2ay?LYBj7p#q#enG>}69==E`pd(U^(cf6}6rXKH6Bt**fOUj<`eR9$sv5MoA zpO9+(vCY22M2)?g`YR=F#%ZZf+4$9`!<*7>5PMvjH7$vqn}dmO>wZcy+2-<|5dE+O zq58Vw%s)$AE8DLOL7b1IQF~Zt@*R9+DQ>`9-kIF^zmssS@GvhFNpOJzl5cGAh_ZC! z;E%zy+EeU!07_2d2o9BFBl_CHl*uo`>FJgn!fE;ixY_Nxr=l+!C}xMrp0P!&O#-TB zF@wTDXmFF`MfakQ! zEEaB|)D3;hsKmV)i=|VGQNyFHq{25+)Z?yEdeqZd;%M&0DzQhxgyd#DQ;1m~36;rJ2E``;f?+Ygg%6T3%OVoz}%?iZeXJ zG3D@OA;x_gtK*1&tdA)j*maec)GBl~*duyMsI94VP~l)qQc`Xli`oFHkOr5d$~mu) zEE$wdEa=bXyd-BH?8+tf7Z^m6s61RQd$bWfbaEdvLbC?G>51o+A1y-szNw7in z=6b5|`L&chWVEyx4+$IJtfP;6Xyeadi!%9Kmhy4jTL0e2(MWBAB~{3uh8dVjVhlD+ zL#>-@{F9L>KnIYWEn*OQLISC68`JdvSnBkqlNEk>@_V zJjxk7Bz2wt{RDb-ix;^&r$$79K_4D)j{86|1N!H2 zgyT~$MzIOpb6*vg-!0SsP(q83u#0Z!q|?=2&na5*jkY87X)JDWz4TZs`+svydezX* zVJ8HAfW}2fmEs%#r*o^9MvOhI-ieS9OO_)d<}=~07s_%b?h~VLLP!p~>Kb{nmw(p7 zbbhTP3Pf@H`>kDu87BV?NndM4!y9m&gu-$)$@R>?Lkh!wogkZ&Q<2EeRF-5H zJhh!6Dn&}&p_a7QUBq-U+e6-!dZZ&WSxZ0b@H5k|Y$}?w4-qgG_EtWgOPr$c0Gk)^ zoeL$g9?l1WoZu{6_aYO{hC!PYU^o*?JCeFYjeV|(=t~o!2UaOMc@kV!+=z_g3R%PX z9LBDG$iwcw3uWCZhc%3SCNN_GSWgC_`ggDofs(KQf**qXlZ!T6&7SR)v8%b~s##bf zyF;|FZF*;|#}svu{55^zVgqFx!@)fnYQjCk1`Vu^zlN(6fMR39;q%N}C|m2ge}R(P z5O}1&R5)ww7!FnY&JG~zesGzOVya~c=oXC-z^2QUJ)q-(em)Bi~1E9Uyug8ZqAz#%q3Ky1yna35C7#9XUZrp8}x(4RFA_Hr+& zpdueOYMbkyb=@&zCur{c=DgE%a96N=uTR|M-oZ}!uIqS^eG;yhOzIo{2&(~HHy%KC zlPCqjvEUEG2D)%?+JIaR12BlhwDY%?Bsx@6i!amt`W4F`?gvwiTO#JIcLvanh0RrQcO0vA3ER;| zMc~Zxs=C@?FOgTo2EGJ{Y`%Xxf$n(QY=Njo`Apy1n|##|Uv_*tuE+EK za{(W2a7w1&uo1_2VG#}tAko%jvud#xZpyr-=?skfj<9F>7!eebbpE-3+0TYf!L-Rf z-Pu#l;z$D*#C_!-pDXNRMsmipnTOwi-PCGZXgggUR96zC#))e5y1`RUX#zY7W|oR7 z%u;5BE%Z!DNr>#z3;UUe*cfrx>SAyE0d0+rpCBA|DR8i5WSPNXf#iU1*fYb6;)A!z zIx3h1t9EE3z^PT*lu}DA50>7V=y%IvVV(w?7J?29dOo*}k&(M#)AS%{r#%Sq63ky>V^d}HGD=Y=FwkQh@MLCMwqQT!uK}N z6c!Hu17_~T=9emZsJQshc{hkPB2Hh$o1h0>>6L(_HGHee-QSd20am+@VTS+%gwpHq z2HiZBegq@nYF<4D5gZTT0Z&=~(IZiB(;xAA^6UaDiNYVaD=Kt4{PU0p_|VyZLFP=V z`5TxQ5*x{5I=)C-(EnLwjptfNAia*hHMy)z(hYZWj*y;;DoiRn`p$$1kunwzCGV zYYFqtsTp;f{#tvLfI-m&yfY6e6Y{cD9=7?5Tbt#Bo_gdQu)MP7eM0@E?WmaasL#4G z>Tn?le(|ap|5Avwz~DwYckisXoeojf*M6Mwn7czwx7@ru$T~6XW=?~;l7hPmV$!Qq z1UCgjfzS31O_Y=7iMlxdPvx=sddUToRoN;`+bdwVDgyR6oC>~Rd8sI^aewQ`G)Qv8 z{Wr_A$--H0b#sbM1r(5=q0ZZY0*HYxs5=sX!y$p!v+i&`K@(DbW+I8wOUqhLU_ zlE8t1MXeG~xOG6SK$sFwwPc?)%}@AN$oWMQ*e@V#xUmk&u@hV~+P;L`J(_Yh+rjrvY&erwCsL{NxPt*9G;}{-$$>5g<43+&6lTotSQ!Ua!z(=G1<{ z{JcB21kckI@j%1%o_^AEB(S*M1hI^$BE@b#8;q0=K()*ME`9_dUhT4}rE|&d-wZ`> z8W4^V3M>SMwjSt_i!)ClZqN5~MJIi(yGL(g1EPIVqgIeRy2M3`5?ATuO&|ml*9(S% zxwxSi&l-D`KKwLHp&K;=L94p@*Bl=v9Ny05ruXE%9I;*puG&Ko;FTPFuL>*$vqm@r zZGGL%l?}tI_1TPpf4`I!S7Hu5f}IcemvBB9rcyIq3g@d+4nd5>RD`F+MQq3XRnTt_ zn@@P*Y^6W4i4dGlAz<&kjE0hL&PpjZf>+4mB(CGpIiKf|5F>q2^G>koCxh(g66eo} zcJCVLN~h;(k}2Ay6Y9Q_YSq6rTg(n?O?VAd!JHy@-of&h?7W1r`N-bEg||aWcY=bSN;? z@?Xy+b0#M7Q4XCe>A6{#4@(ax+Y#e?M)L}3C8KPemfdQkkZ zOaBU(7yCl zUoR$2?S6A^(0oHXo{~E}I5LvgX!Qq&LLW6(6d#xVqj6Li9EhJN=`Iyu*k;zwiRMJo zG65&7^28oyl3ZZg7VEUI6w@CvJPF+Rd>(n+ij+ywl!w)c_4+e1swEs0$y0auzhnDD zHqx5pANNbP>owxsn(Qzoq6%6F*m228n4fs2ZUc-~?#Q-Tql#j)^V;3(*?}}l2DWuN zpMPk`3eL+Tx`3INcu?qC%NM&5=8SC(Z7Ga@tjb%pqH) z4Uc8XE~=3{zFSmG5K?@;s(rb)t(I{?@}&qi{}h!&@0ox?syf3)%xT-*4O4L7M5{BN z!&(5%aCO5C9G4Tsk$rCJJ!Tg#?kv$t|11}R84#xUIM5Y9&|Jk|3ebZ+*m6}KQQAqa0$-cWvP1+|h(tkdy&)>prs^BcPA;w7sWki>#do}kfNfNah zR+vVnAQmYKi{edOFAFi&4ZDw7rK(q(JE+yfbPz>d4xCI-bw&vlw zNhfM9UP(3Y5eT_b7Ptr6#N0yISg^kxJt>o`e6QKEx_@2j&e^1B{n_=N3(;A+yAt| zm#$P2%nFHAEC!z9r%XY*$@J?Nv$`rHPlib6f1v0s#kc@O$}RlH^lj94FGErFPbB_x z$5W)C7Xg&Gw>fS>YJm@nfemM9qBQvRBIQf5WV>@P$&tGs+>pVt;5OQmO&j1kHtveM zTygVxw&&l-4q?VWr?^R;i4vy(`9~*$+wzF``$q*CQNZ84=j<`+j*hSwbIlj&uzgll zZ>G1F@}mTUcYtKbZNOn2Fupy`-(iQjr|bq|8vok=*O?si-wYI<;s)93$2Bp{yzp*S zK7CW~QJc}?Fe#Z6}S2>NomkJ-sM%OYXt$2*m{5(!}GxF?Rpj_wGDK(xC5-jSq}7aznr zx}VyCfC2D^C*N9BEoof&2Nr!f8g91)Zr>*coyjC!G@=e_z++pSeDT$EKLOn#Gw~k4EcCJJug@MPb zWFWIw>-cPVc^>5`4l~R{k@?4_dF8A#;-+ws(GmOD9tK&nS!|jA zGmq?-NI;5j9!rh!db{%Mpw0u?>pnawLI)^`MYp8eQkpD=Uus`TELA9{qH($<9!WwX z04b=mb_R_N?>}e01A~B*Ajl(bOP_l&PXfc23pFGPVeC1y(r$-23V0FfM7mqPn*GaK zy*Cm;JsaR8{9pvMrQJLuw8lX=>p`M}G$$RC>s#;BH${bde|RCLBbIOF_lg2S z_|3R)kRFAJ-rX##c0qA=KX}e&FcB#$=u=gSc_wdVC-}-Ov8J4(sp<<(Q8HiR9wM~{ zXj@X3PmWpYUXN}aY` z=PDK-G{X1M2sK;ubbUM(6Y7239S~3)6gbyPu3-%_CznI|VcXEN*2Ig9oz1bql<%EO zdb>OTj@)I%$)x6x4ldy-XhtZ6MqXk!H|UpB*(e51>pjl-4;o*I7I?R&suM zvuI~a+IJQn?e`$VwyXNqxn=^97iH<{RX0e7_Fqm8c~roPvGtL18+|Bh*T^B)> z{?8;0D?rk;MG?=epgX`wH}WVoEQs7-zEjGg>TIrElSa!>OYQwEoh1T4I9fz|aYsa* z7L|rmF1d=_03crIOiw^>Lw_ui>4^u+%X9+?2VitG6kH|xU`_9FHHMhqCqEfKGc04W zBLH!Qq#Jc-Nmu_8!ikvMCtOrfJbxHv&cRQEZ~Y8+5z0K$-Qievr5rU;7FL+f+Az6m zLd7ufmhUvK3v`(F*qkm!4#nBKazZAb5IhlX@66S#&)Mx44B9l*!nA#H5~?gq>I!fz_;{?Ei%-*Sx&) z1bfe%1VqO(DZ|Ap1>dVP8W8fk8&e?ZWFaIHN9VxE;@o))a2KuNDH2vZBM08IA4>1+ zYV#E~H*SR(bE8GF@t}*YqJ?9eh^O{lYmN)%1mtxz_#KQEdWluV-w?r1>rq8hXFE_j ze8)*9^7H8y@EFdn9D^%*UA^z%s*a5Y**QE=4hLE@O)_=2BoOP6f)w=LJ7|j-AnuP$@*Yowx+dMz2D7o2X|2}hYUV1Yuev$O20ej$XkZ(^ho$|>719&XMbEWe=@qb#opu(o5R-~ zOv0e4R3}xgg*u~KmfY_593)qJvFNMCffQU|^lQ4Eb_Aq*p(Blq8pc=+!!a4A7PxT| z0yHjW$;Uq)evuld(y)C!T^^B|`I1DroR#^Zqp_SZNq)q`^fhjf(#2;#K6PVlN~607 zs*W4JNRfbu-w-1a-zU?SXu&h+YUU$A52ge_$vrs80+HXTVQD-^TSj++%Kmq-$9_gC z$=cj2uC@$u%R<2tInFtjv#{b!WBdEd?v^K)2amEj1lEO$HvQWLre=A63Hhnp(U@Ix zx0?r_T*klRa%Iiz_*E~NkukNrYYLdiYsC2iLI}h7qGcMfH*mRY{px_=6QX3#H-9

N5cFqJo}XLzo0=CZS@!Qi)v(zrb-o`Z(oWu()290 zwtQI8IoSM;-dY#^^Hu7XoTVISd0E8;*JsLMfCJpk`9H(~d6_S0qfBcMp#nf$CA$65CjR{G`MB3)WOv%iz5BF`O47oY54T>ct|<05u}a%m$BcVFqOA^G8&4A2SpX zG0WD6x0O+AlGbY)D~wmT-whOR^#4YmW?!qB&`gu9`@xM%+*V~sox25&rh!9sD^uIf zGBSUc=)yB6XbvX!+zS`ypTLSmebr&^8LiatsAqJPkTB6+!tS(=IZp3A$LuQHHDAs6 z-=U}m5N$oVc^Y3{SwaLO&fHx#H8?273kLotoLeIK*iSKh(knF^N>ngiAqbklLR;Lq z%40VAWhD;ItK_&fIUtNi0Z&Qy$!MW)D%8$pw0abX)6O~FW0~fvbh9m*Jm}qt#sm@b z#QHJG&gvr2C9R?)`l0hK`zL0(bpuf?I7<>{LE@HD0+E@n_pG<)Yup%}E_?m=Qmal_ zp%_hYfSIM)r6l@qyte-vH*=y%gYQ~{N=sS}8GRL3!5j&Zd(t z=4a#3dV;A%@%amgu*JM`*cGjW-JY5*rocwoI2w(`z9f;RT`ljO|B0}9W$UMt=rhx+ z#!I6n8j=DFs1`zX^l8dq#&8-`5Jm$N!CDI1sJW&?N~_H^%e%+HSxCb(Mvl(c6j*WeGDzeJGHvT_yr>MH%EZ+QY_!xt z!_2Ee*DryW$fo=Fk?%0>qBas9Kh%JDJF-GMY{?)y0{51LE5 z%Y981K&(?N{!lZh#phuZ;tb1cs<6B2Q+eDjM-vSB+l%=@8r$vrZy+z8CjQCaKjr;m zHht5v6F^|H`Bm0Jq(L0V^&(y`7#QKX(<+n%s4^jHPz>++L69t2|1$BIHI1#V6B}P( zGp%mCWZBrvm(skuy|J)lGU+>JKtF5tZ{2?X@)S{^Q<84FOnp&(BK~MgErPp8O!~XD2g-0DMuZ`>w+oV}Ss|I3 zmDn;#D@cvW-wK(+y?S+%R$@tz3-oNm2ct5lgZfCg>98sGqev;4PUj)d0G6K3Vu{Be z2z;^&P970#-mgWKTC*NYsW)L}wfDRo%{cPm%j0Ym(zK*RvqYquS>oEqHXlxCWCRbLcUSm*7_4;wcRd$+2`dM6> zq(Tiwb(P{48qZBdxJqh~T-uk75WpVGsYx^4XEX_>_%E*4P@@;lfy7c2POn1s{Gh5T z?DeYfQJ%*?OYv35A%p*!VG^m{NEqt%*O=8~#FCt(eJ;3(ui_TA(+}mYC5JwvJoYWY zmTZ<)G8IDtj5pzOUbhTO_n3wQbS)p2gQsG-t=zp%ZNF=PTb^QRI@LtR#JPqZXD4#B zwJ(j*1F*0>o;Q}pkG*aYR5Z{R`s-m64ZfsT)^Ad_9BjYPAvU{=7R{4NPKGSY zAg{D=>EYn%U^6*bzpa%Fv74HiM6hC&#x zwo^Qcqeao*JyliYd@ZfIwr9fF?HQjj;NSyquHjn~y;UQ~+plTwGh&PE_e#d10Tp41>E-T_hSl zXk16jkFPuzdSq`R>(VwdpsOy2^jFlyBCr)XD{zM@tR4!chdBZclN*C%pFz%_@7EBj z9D><`{SW;(PB2ec{n1{=KuW@TrN?PlLnGiCXDQDvx*8I#*RT@eps!yV}tphUyj)PrZn?e-dw2eaFcLE@xH<^wjf6Or+!O@ z#mi_Qp|B94$qXpF4gevuGh@Sj8PnPK$O+3}JfP^i-SR?E_Bv##+}@ZH$@EfAWN6g& z-;Kkh$8{8}cTakN3*3nT%GMGLv&e4n`lg)2P+m@GX&R zOpZjtZY+jL1HN)PsanmN4}1w40oP2U7fqp;M5*!YKkA1U zOLQRkxuqPmT(wdYy%#1f#i>9?;e$jI>nh;&nj}26$2A({0IKcP1k*%0PETCnh4%G!`&l<-QGG>ILu~p90!VByRwtm)+p#$T%Q6s z!z+)kNPR$L)t7>bAmlHdUimgLC*B&ie~anJqd6}o{f>qXn@^Kky3HFqe-erb;?e@? z@il@&z2~v+h4- zWh#J!*1o=m1ccGm=%kh!$ku~mqPU(x%1s%dUD*pA64Zyb?#$X9TOcQ zewep`$k3iF;agI;X)ubkv{jW6GVeIRTt`D(yYpe0NPGyDhn!CEe<{}@-viX{JhJrE zyVvwe1ENVao*T{K5e4p_Pi_%8+b`yszIN^GBLBmZ9P-_w@$@pwYUC%-Tqh<`3uT^G z6S>Yud(vT#co_WL3D?!^1O+X*DW8b!&wm`)eHXs>h8ez5ImaXW7~4?^2VST!$#YXa z0-5r?#Ob5s@M90!F%(Llva`l%%;ESmR~sUAVk}PIL^QJqzJdRH=0F&cbRnSW&~OPJ zRC;0yZCX2&0Z~IqM;V3Xcw9<5x2qi+Q@L9dCMw2>IKGd=0)f)_eIk3b;{>t`!8AVB z%*o|m8E%+rxzm;4``3c@j#9G+`~2d(W=i+o;gtON*z-#nvS1m-qDRfI=3fDg;i4tv zactCGy^qO=UvjQZ;rmUD>vPV~q-ly&GQao=nW zsYWh&LDT^FnK)>XvwGrV1qu-i_hQgB{K4sZ!qy>#;_v(y6}sW<-ZP@Coe5}E;Ni*o zenS_0>20`)sO9U*D07LL(T9DYTC}ZXbMOMMEGiI_lYuU{lemA?Ve9s35;^!8QX{7T z#jPhJ4tcwFMF@4dJgJ7ihu{Rk)B;R6ZW{dxuC@|m&JAwC-_7MPE%Uv>4fwv+d+9>H z{gSw0;j6hF8OIMm6t>~1wQ?Ld4%Kjg8Pq?9xKki5cT4ewN-Oo28_(PvMA%tmV{o=X zx;AASnf*{!p|D{dzb_wfi5zWZTsqJPpous$5uEacsd8PjsY^Cyv36lqDGiX2rbw>| zk655M*7;yPs7jNsrLEf+CL}0G3PaWZ7gu9Q&{%-ko_gGC`ND}|f0RsrJQI-1qBzIPjoUe;))O&D2LbL^f3T_0JwkKh4=l0 z3op;kjzyU)TF1w1^9D(q7|aA$Wcu`dE}4KCsejm75^r|za*dG5X{-%1D%*Z4RMm8w ztc1RXV4TgH1cK)KYGp?hLT4{a0<`SHly8-D*f&zsHy=RqTmVk}zR$1=!1*9P>TNrx zzSk*@HmSbvhP2I<3V135W+f<`m&uL*ag~nQu!+YvB6rM|5eZx@1b3Dr>b|RRnm&i% zX|Sk#ZD8EM%pbV0l81!oqKVBkN5L*4;G;^a(#6s`b%V*KKm+nhp*J_4@&snGRae%D z1acdQk_2dlRr=v#q}-yMw=WBeq;ZSoad|8Q49@5`Jt(8DQ;{EL`gSt@6r{8bpXSXR zG3NJIwYNSuBXLIGEox4sbm^*UjW>TRn!( zMUjWUZ}{V^HK9`Xh^7%74`!2v#`Qx2W1_HgoSyFwX(*9>@iT^_TlVTRDDmu^KcTRN zEGo2dh~&Zaj5QPX)ZgURg}=7l==`J9aI7&j=dfft7UKSfk1X7F{Og{`sdDvoWF|D2 z4XR|J4otUTC8%=`VP1(bWqlwH#;(A8NQ#BIV=Mtts=n=O)+GB=SuVaw86WEif*gfEQK=XaFgYT_O6I>CT=bwOf&H zFFKdt&c`mcauo=(#gX`KW6?ZY9MK{H`sXJ*pXC&A0a}`@^@{fUynx*Lxt?>1E+c#j zq@P+LK+9V0R|9+rDdMWBvnmL|AhJ71IA54S_nkUSi`(2hnI=hQMa<#ByaKudlaG%U+#4$hB4DbuwE<;scLlaoR-R)ws9Vb1s zE0Eg*d4MCVfJ>?E%`(ni=a z(ChuL2_?0iudKMbp_$%OvXvO!y{6=3STRN43e0@`=t$V!xML)=>6m5YwySjDpyqcJzs*IJ~ADz=rNYlsc+h3|n>H7gDIPR8)4J(i4j{{VNg>&j`f-o$DEjTp6f135c0&6Dlm37*ja=Q=$mYX5|QgWjtow z!m901y3IAfcl{nrDsX&$R|Yj&oAcIQQL4N2C(*@z|CA6@O%9_E{yyM~?9)Of!GM3nOKGkt0DO|##(g@IzIqHWU)w9Y{{N7V2U=koO;gR|p+H-cu9YUUd1)~oQCk5L+jjFY%M#D} zUU3c-5RjTdZ-g65+x|D9Dw~y&zbOX!1NDyp>d{E0l36AY{KWnqSD{Q0XLboBUfHK6 z>4aKh>xq{PA3>ems|;wRo!QW2>YRyIP!wI0tl)<{cRQk=fP!UlXTRCk=KAy}yiib!hJw@? zr&}9)s*K`cP7MEjHpx6zizqorJaJ%D*JmrTVz(HORQXM=UG5>iRg!=^CKii(UpqRYqqtUGfslX90mxF%QHkGq1k;Q*hGwp+bqYT+9 zM30})S9-0MV#tfo)S|~FIre(Itwdio(Ksxnv%c^itiHaQ$d$klb8#W3m zQgNkD6d*j}ueW$9xvaEb@ls25W?Qzwipyx0XegOgqau>v%+&$srdwOnV1D_`4mMC# z#DX-T9;?9tPCtbu|J)h(NZt^i74;8-w^hE}MLg-#6VN#3*pnE29eG=maQW?-foT|z zUap7DTM0g<-4@D*4X3S zm0WJw@3f>h{}RGT;I^7~f-hi9xe`DToB-3Qrnvc_-FG?HuS0cR#kC%OtO|WUm+)Dr z3_Wzyr>2V=%rq$%!62~9%Y=_lI1tXmTF`8P7ypQ>f@P$uufemLov*42*XuqYp;w7G zv}_i>IwnVr?@rz<>o@+I0vrOSL)=L(VO=itvO*1>Bp;ZmO%ed0DA59Wy{P5rL@>v7 zNlO(7oHqTEby8b`Id2w~S@_RP|FW17Lrvq#Q_RFFZB#kKjR5utK9Aqn!`7Altm3!B zU^EylJeXXF?Vn!n!diEFwPx}5n3OdkzwT!&tSy;%CQzFxvp!P&?z?jE1x|i?O*Z#< zGz70Ch1?GRGVtK@_ITpQ^lv(J(#^A8V@t`-nFId77Ajhi4Z$ z*)Y1+o+7dXVd2l|PD{T%Vlx&hW~Z;kOMsV3%R;W1&mKK$5Q`l!Ue8~7^5mwWVoRRA z$wcb)&ww?8%J4oFTX07R%Tt5z+4iw9yZ{=$mqx^;xUD85F^)x6+TX)WEaO04i6FJ1 zOY}^5%?n`Jl7GZoJo%b?*YMJBqak}Kj--}_$Ei7{a=Vb3(o&v8IqPnipN+|*44Fn( z)j|Uc)03-7^dc4wZN01v6CwIE-`TEFN(rS)KYTI{y`N3{UkY31V67#qCZfL^!bX@# zrsYI4HkGFQRVs3!%GvbVctsJ{F1kY7-{Hfv;t_t5q%zho>6Ds%dX1ov?tLQPv34*? z%2cl}l;C!OVlKiJy!@1xQxppZ>W`X%)b#W%K#9R0()@;^LsQ3VG42dIgM`u;h#B)9 zTjuy%;XtxTUBP=hE^=yBuV9=f=W!vb)0;!I+IEzv=ew%u(#Pl9D|&_T?J1%}B9+;J zb)F$LIs-M!;WTU9t;+}Wf!kc)*hC}mJO^tvHr6%94LWf=0vZ}_Il?f!HwIF) zeY!4DGGTDf>ArV)K%4( zRvS;5Io!Q`_n&Imx+NJR%0U63Z|<+Wb9S&?g#iBCxv$g~ZU`=*f`5(cdgNe2{fMDR zGAzhama%Y~lw)Nde?C_S*V0Ni5u03X=&%&w2cCBYH)OS(=e|Lo@nw8WY7o8eu{%qo zIn%lULN66VajPJ9*>_g-?jKX0H zp6ijC#UNx_S=nUl@HVK^7GT7H{Dp&4*}}+^2P{f{e9$m=tqT0UTfC;YNhphhAX*V2 zX?`iTlwiVzg#oWuvq4L z*Jb9cGzr^Pq2|c9x?$oqqe|KBh4|pqtyX}I`9nxP(VFweH1nm!O-X|4%E#xgKz@Q~ zfmXVJc6AlIMO~)@-Y7qd=0EE_Ds-mP;!t@GR2GHemn+Vv184a7Z-j)UZ?_!pt3* zS@(BH%N>j~cOrW_wX)K%khZvNQigUFY!-I$xu;tn@sL11_mdt})}tMqE4zCw$fa&5 zb+)8SS@1>y`LWjLao+GDL}U9F%Iai)#*gHgu-KPdMO?f=R{*6XIA%4Q*o!b9Lx1=x zxD69&HthysyHmR|(JY`t38w-2$Znvx`fc1g>n>HNNvYyOCoN$s?9*#!e0xF+P?SGo zJVra7{s#}}sz5~av++b)L0W4@V{2K_vV?JZ6s7ee)f^~3!(=f@v5}1dff*G(nq0se zrrNt?1wd&tphMr~WUrb0EEd@LjTXaM8ijmSdO~h#FVdF4&{hZdnn|{S&d7ahQ5AWB zZS4%8xl6S5KY3Kj3?;*hNN%8`@t`i5;^D17q~Xb=f7*)hsMY6BtlkDY%zx>|-Fka5dPPxw*KL9a6&cEg$ z?wFc4gPu6>6#S%PqXYODhuIo9Rqlzh5=VIf z^V9h#Fb&^1CXbBdI>TQ7+D}P^AYB0YxZ_1keA${=3JGTKXj|=|o`IJogny~YqNT+Y zDM6+mxC&7b@GgHNB>F7}%SyXNr%cuLWyf?K^msRQz%cqK)(}OQaQG6M<^H0RbV2SS zvjnXEfJA_eTS(9DQ&QIZDm0j4JOrEGPoQ2nLh#$KHRPCQKKL*?@S(THBV^sYmn9R6 zg@7YtwN|;Bp`=6lGtm`KTHtCrY5WcCZJb+74V@Ozg4nDJsz`&Vl81A;Bje&9w~Wci zcj?lijR`)leULY14=8jfM)Cw6XIkZ{tl{P~FR4HaQU%67x8)N!A+6s#d zaQ~8qR*A#$?iJUwuHYx)#hE*vl~HfA9Wd6iFX)3oH%GCGA7fst8(EvjnOzAcdNKx@ z@7*{2V7QJ7;Sq}E=~P%8A&3;jf{)$)8Y*y3L_u_cMVHqE4Y(ll)zh3SqWa4D+sfBzOA24cwN2q~~DoGPMS;aPg>cN5%-u)Hq-j9sV6s zlVEMYsNuI+i~rNPGPGnTbo3M$mDxv){tK6g0e6@J)8d z9o|GL%UQk6BI;;kL0g}gJ9vRl*0dH@M@G6^I@-S;$E40VeR(1x@mc?G%HoPi}C1o+)8rld6v~t0ybax~h;8J&r zsrQNPOk4bO0ln6;FQpYICcLWs?o-k*mZe0?x{|(f>{2pGIQgx^k@BVyq#*O4B^Fg* zyuxHDpDJ+)#w5}?F@K+W38bg9u--zGwf=BECF$He0Tiaah`T!KiqQh8EV0nxF6@m> zkYn5$I0*2OO)wEj+5e|lrWNLH=#a=H2;pCKBx1`IQ0UWs%rZu7YQu zc%tlFFV;cZ#FB_5Uyt@AbPT%$I|_R~98-8YX>XINUnX-Y3h=EU&3Rv?Co&x&)IGQ+ zHCB&2C>`Q{*UfqFV*g#6td_J@aU^y2y?NJs$#^HD49rZrm_}!~a|gz;nfZ z`+r2!U;&p~AEWFhyu(Iaga)9dNk-6z)-$=Fx>i{#FJ@+4Rst|P!XXMGR8d)UEjWFO zoMgrn`LIo_PZBeWXO@7@M+UIG^s75f6+oh)Tkir+PfZ|CwU*gDmbO0_xrKkB(EcA^ z`Awy`59d7vtLM=5GUhr~&}|nXE&K+!)kN=@UKclXAAkTB*fcLb^FU#mxl5G$oq^^#M4v4ANfD9IxwkD!$LxIQW5tvC)2JaDW z3NAjt6fA$|u#WB;|J|)T24Pcs#TXs!miK(9aCTysp?J82!f7;Tme8(CUQgCp9)QcM zte=j3<5++$E~&|8r!*t8s}O07u)U-VxqURI6Cs|HZ-JkUR@B526$ zEj(#ax|awRST+>obY}{W7mbfK!fxudB-T+97KO@R4K+K~iiwnv#_inq3H@mge${6acIt*jqIWB>*yuc|P$RT|J(Uu|^yo>2m_vpy=0= zBt_LUp)_Y1Q%%OeJFmZ=7)qQ)1CFnK6BObxh(e~e8lFbC{)B8Y*BpAI$tW-_zU7C# zV%TKR#??sHeF3ZjYfeMSqq1P0yg1QB7Y_~H#67dfMpu~3ktT9#vrdidLBRfXSqZqf zj`2R2Sm`TJH}1F;(cX8mCg9b@w1+}R+pzMn(^DLCp0m-KAeL-%!_?LWlN9R5ROl@3 zc69QEhcMEPgr_sQ+Hc+tNA~MSy3BBOxT1Nx zV-1{*qAa7bM-kX{kMz;F?MA}D0OV;-qanKbBN+P=n^TSFl;=PEY2R*4P|W-~)xsVJ zIWL&eD;&dGOYG6)X>ApsD@2<3*iH>7OIBT<6A?eVaGYNjy#PlaX@P@n@@VN#jfpQ4 zf{@_+6Ukk;9?!?lbpOMIFMf|`71CrMwM#Q!Cw$aD7qsaWs$x9w8X?zXFm(%XCWao?HRPc=oVCtY)e#vMfmA5Ddl2UR0Kj!uDU!jhi!D^fVsP zmlt(XJ#Ht4C^3U-_3{{TOI7e)f!@QA)m`fZn~MxQbysLC>U{|2hHVJb-`#qFylbRh z;fp3NNbR?+NCTHCcM5NjZtUM3MR?c~##WZYr12c?8_OJS=k-j;GoWwSJ zMiVy=qh_jS%$5{a?kmM9QxC*O>liKz1uCzXKgqC&H0s6Mod^}$1qp27ezA&Bax7me z(%clue5C%K!YiFg1%Q0%1T7YD3Kgpj4-I5*Cwa)y6h*PIxiJaan1IY{hTUE*?ph&I zhKd{+lW!#n4NJ-z(&!|E@dR z_TU^cDzri24+$B@1BKUSMe2*eZHmSSoTUGhRwG1e*fgx)ru&yV4{cW+2??_%Vn$6N zdB%+c5)Kqof0G%)=3B?VXE|&(J{LTZq-N8#-a~UHbZh`%yclZe8~~%=Rr=$FLi7TF#MVQ3P8@cU>tNIZha>Ot zG_x3*dDfE4Bk6b*;y^_^kKsA*khT=xz_xCZ?O?%p}zxiryMt@ zp{XSK0h5FQo-}I5c^Ha65vHyLQOf9d$LRVo_za*8W9EPg+1?4!e{?Vg%g=a80|k5&q1E%kd2tv);tz_7Ea>t`QcYfxVS21`1L0Tj}A8vZc|bcQy*8es-GwuWWUyGrFj9X}G{FbyM>Tk9pX zn+Q&PPk-svL=IhqyDrmoZ(0`~;e$)Y_H{`r^f?VPc-n%f&Fxr_KvZGMr3z2Q9=Dc5 zj*~jT{+{uH{G_CQ5=nk2O?kzft4DHWFeHZ&O|5vRR<&Ea@#^)a`UQG(nhp=WI3olD z4n=#!*3hI{+iw_str}uCMI3_pocu*R&NxR~G;OG~!Lz>Aoug|c;}eE{+vU1~F%OVl zu%=0g+xD_+4QTk z-{J4~CKEIUMCFdk1K+ZJ>8Bb!yxI4eBLhE>q2DZC(-qb$7^`2)j>~Gksa@fdMj^>e z${vURIz$M3Y670@)8tYOs9i8Dl)^crW;*2!1mzorr5^U?*|Os#G;(JH?rhR$0S%a% zObX85A#y{35k_)!WvpF#ZtZ(pwFnD3yD!Q?Ua#7%!sQRsMid^9aT__>|9}K6e4Hw* z6ymJU+Auk9^(6#+AFNK}yA!kZ zEHotAY&Zl(S|!25b1OQrq45ve7z(S^BpJ0H-!vOXIlirD{+VTcyt@2Iq*LVN5y{kj zVqRi_$p`~y#g#4PjkAn>aZ4Q1fBKl3qTz_LzWxx;XcE`M){m@I4I@U46&Tn)*1#M4 z*jBRAA2};e*k&XcA(`U))hG$3ep$f%=0Vba!)I_FEB8foAE3Ry`pg&)`POoHa<6BNh}i&>9;)WSr^1e&(dC7XJr zArcxmv`?#`8i$j;9=J5+*8S-iF-C;xc$`lP#9Q$mJf6_ZG7Er;cU7Clgl|ZrVKx=6 zkA-9VeguJ77VP0ZWJC`&Id81c%}^9Rb69ttF!gz(Auil@{@#iuJ4&O38iLP=Fw)O9 zhuCj*sTG|re-K`LIY2nIvumhM-?%0P{V}%!L8mf3JkkZ(sR3t^AHzxJ_(wUlqa}>I zg{|yDT50)gG!jqLP&wpP8YHc@-zFNp0l{{27k>C87WWS5LQEf$iV<&X9aWQ?ub>$q zvmvn}Tda(>E}NAq%Jv+qhGLwtj-@bh^d8IXR4Q)ujOhK$Q<)(!Vg3IH4K-If;~ibi zoZ;i4GCvSPRL^StbTc#Iu<@o%8tB)h5$piqg5+ML91b_9c`vec6q*a~Wlr;HJyA!*|FXRylf^;*nJH8!rYqy8t~>ripJaK|gKQ z=m586v5a%CmV&6_o>=QETN0;cs%WGqmH|%{d%@T^{7ve$@v=h1&5{KYED@fT25;auaW^zU2uLO78FELNJ5TsI8k$dWB{YRy z{_+-!5#)H7f!UNdz7lIGscNTWZeIQcrFteI5NPgcOA7*?#9uApsfq< ztzhT7PN1?RJ2JHj)r)Jn*YPqBPKeNLIGc)DKaUpn(@T2Ly52Tr4-_Gi(nMn%PN zFMP{`P?jk!VN^b7b-qOj-JMYogBjNeN`4fw!HPn{@x`U5iO+yjl;K7ECV+evS}~Ii z)Q%1AxQWL^?+#@FMOVdB9?8Z`qaFZ32b5M5IN63#bGDbt1()7PPlz zPQ!hiCFyd_+OBMRS?ulN!8;r6xdQWIba!iR{99n=E=&*I75uqY;RxM&s;;CKUB92A z)bX&bT+X8EOS=9J=*tqd3%nuhYfdddOFcO=tt+cu>GPCCOBr#7BHI?u+;X`anN!_! z$qQNOp=4ozS_Hcevk9W0&my+c#aRQY!9?$%^t(%qJ&UkR#Oyu6dabH!nr53cH}srL z$DTzZs#y&i6s7%hAtPbeI^1Ehg8T{C1A(`=QQGPyNR8d#f4Hr{nyZf7~8SF zq-?M`W8_d$^5-+UA{m>`3kCs9@vQ*y=5%@nQ#j%?p4x|KaU*qRIF#Ci%q7B^)1CHwxV?x;JJHBWUZ>`u?h_JC@z8WyeSw1(@!eRdWg+7JPV z`f4BAOkZEV>L)q~Y{6xQiFFlkxyNbU6j_&9$I@gQ*=*Twy6-(__yxFQsc?ZB&;9JG27mJNwm8qrXH;~iXdAJ;Nw zYG+^-a=xd?D1}+zMD-xDJ6PuU&WpMCsQ3t!og~i&hNPixyG*SdU~(iElkFmJbH5tf zochgy&YC57)=1EvimyY|L7A&rMC;nEO#O@HxZRODPne4FayfX?`ZC7Hq{R!WP^ z!*kI0kG*x)7&$_C-%D|7ggvPFSiWPCdOBtV2*$5k4Saap4|4Nhl>A zjvi|_BBB^SX5{wQk-2%Z^)P7ZUA6w236(H;Nt!k^GupZCt zzp^XL4@U&=>`hukcr`~=l3L=E0$^_oyo)1UT@q+c4UNg=(S;Mw=$~a%os*L8n?g2E z&e8d)r^j6(F_A^c`2cv16?y*l3@*Cg)QNL`P7b(b<{H3v*R+=?i8~+x+dAJ}{KPIR zWo^4m3J5CT98acBU)!sh3nvRyx=!Ax9U5gN7TqBx=`S4n4Q1a_zz5;n#T~A@O zTbzj%QSV;>n?W21V_u45WR5bt>GotWVQZLASLo~>qLm;5R*tyiKlLZEWCv^brYLsX>%y; z4|LK}k#B?rLAFfGkD7pu0#V9C;OL=5OHw>HHyi*zWb) zzNmaN$iM*3Nd*URxx1NPj<6sUOt_B9c2T}6yUU}Ho$nj^o}M*8Rm1`&J(2DVFfRmh zUD06}HZ0MaB+bC*f@gCW7i71v?8KRM+kxY)82rE?Pw*%&^09%qhv!+?fIp{;Dqe=3 zMtiNDNj|ghOXj`eD2U^8ud?>1do3za+b8~`5$HfEaN?Uu`#xM-#%gy-N~GG0n2blC zz4M9$&q3JOG$OjeEBc@(<5tCyQfHOJ&hpCy1oyG%uweMbkCSLsijdr!(9k32lH;R$R zvJ6Sdb??9MGz4#Ea_=q==A5ea+(mevowJ3qX_e`yIGnG;SS1CzA$XEI^yaYCN(fJ8 z#SH-~myxlmo1zLg!q6FNEP2E8m95#u=_p_}{1THGAfKP~2UT>dJ}V;-hrbeZr+0FLZiP(2PmQ3-%9-<8#){fG$cGFN#d@q^Fl3O% z2h-M933i%Eqhj}Mn#nVi9zbH%Nb&OiT<~t`p4>ejDYA?2$S<1_cAH=xws^lX)%}*N z&Usu_5dIZ|?c9gtP@TQyNi^Trr&(Avd$>a@wwIddL3_B=E}}2$Z(rs|rawewZXR*# z)C}?HLy$p)kxQLNJ^$e3b?n!d$@o3pLZ18yd!50ionc(M83_fETSx?R?C{gPHp!@O{GqBG5aN&j6eiEYCn#<$6j#Y;g~2THo(Z=HfX4Bv;j`0``du zs%`g=4#Ia}XVRhUJMG!eR!8AB<39ROGP|g(d3qey%)^kAjZtDpA$L+Xk*GPnP#Sgp zC!{YJgwo~5qJ!4f2|E7F^`XE<0=*}a|M_-!k`A*Nj+DC_v~BI2Pkf6R$kR;DR$E9r z2jMWH`mNd$>9p#K)LmpS?Q=cBX=$~@j>5~~SVq`xrt&TuB4YaQI?gL&B zn>vtEVi}*xRnHuj^zJy~n_*1Ofk5mJn{`tXrU_y+mGvotZ9ut==UC=LQ zPbx)d%E?;yr|Hmh`I8XGzodoRU(Sj+N}Xm&ihO#Tsr2J9jHyt)hw?#A|9BulNu{|h zMwMh?kgU0^n$FXvgp73Q;emV>t}`PHf)AcF5>4tdc!Qd9_>Fuh9-vb&~i};Y>FOg5UFhz z1k7dfj7J4$f{toPsB0TqqUfXp-=}3@w2Z}>S4C-kCT0w`e-vWs%b6E81CyMqbEjv& z+S&Y>gC!7T{i8ZQx5Lz-DBM7YRcdyk&;0wUi|xh=TZjDIg~yFku{tTx$S|0b&jF+JcL>)?uXtkSlFJo4!(@lJ}G?XPDczz^&{SW7=|WHo>DR5h2u? z*kb>@f)y|#@4L)eR9sSpTr@VlgSU(u6Klbk$#2PO(n0FbKjGeJYeCo6bA7`q=aIh_ z7yKXVpg>Wrijim-Y0fik zjquk>Bu4*ey5e&3CAh2nTU*p5ZTukb^%)CLQ4at^;(wLt8uAlief5l)=@LWMvxPx~ z(IjP_%3n@{68@y+G*Cx|xV#(`>jrgn(*y%|+>C{0gyBPOV2evtFu+nC&$kTi0^HM> z%_`PEJ3^7wad56PGe*o(tHQb^>DPH@+nVXUaE%I#IUp##sQZUa`h~|Vx#c6xm85H~ zNnCnGNEIKpHoi1Iq4)e2DFb|RLJut#DdJsjQqAWzA#xm-A1qOOH~!!)8t0Akz$V1GQRR30%C0?k#)~Y;5Qb#??BO#mHef8QFUJcb zm-;He^hh-6L_hi19`gvSH$7{6~9Pk-gPba#FQ(9=F+(CS+ zvgxlY0XF%*kVLbHX=%@Vqs+8iX0^FG&VSDx%@bkN|BzH5?GX*_pc%xxIJZ#lr)rUv zJKNfs4dHlKiz8{JYISoH!jTRXsi{}BYD`!|CQu$jj${jCL*rN#jqdY>86yHo6gx+7A*-B7}y`>Lp zg3so_GhXr=HyfY~R4TinOA)Yt>@K}qD zTy=RsR!$(yKdiKHA}|6^1vZztPp~hL3pC zw3H1EGn6Fmtm>(@HG^j>PUU+_( zwHOjbQ+i?q)+bctP|=L+TyLmymT|YugF`vOj|bC_i1Gx0&|(~Qw>WNub8bX(%9BXs z%45$0TiE?E&r!6j4hp%Ly)SWpM+(+6tajpYPEH>*5E{X>&;QNh58B=l$DTIsqo)T% zSBa#hnpWoCp^6~<65woEV6AikRxnUM3_Gyn@o%H7x2R_drYs@ zucGe$^wHOY^ntqpws!=o9NYg8eaWi0<^^maOv}310~@deN;#u$a-;9<5+D`((*aO5 zMm$C<)`^SIiO1UP*ne?FUivjD5zqZSz?&I*+%y7&^}Y6NUa>^krp4dHq&tWHjId)F z&{v zbHpGdv#iy-SB=ijeu15A3L*x2=U z%PVznODZW{*_XCCNx%;b5(s%nL`q(q2d;m(L=BopP2H4sW3|AyBi;shX%v?@J)}bk zDG#BQ;??@29 z#yV(HLdgR@@pX*$$|+l@-Me&z)oGM?_dnpnd6~JtV4#;+qer|_D9~<4y-a(ue~4|kkSYRZP4e_sLHDOVHd2tg!IGC}<2<{+M z(Z>o05}Z8npZmI`CZ+i0yf}cW@~nT=2B&P!of}^0@LRTo?lQSP4SVgn@*q4cJ5Fe&vZ0+|6P-^RIQJHffAZC5+(kPF`mNirS}d0 zK0~{<(k(5uWy`N5yXGA#rFpE_^6TeIhWZM|^45F49jo1&;cpA;bXrm7qxS?4(J`&( z{d)1*s7_4jDkzp%J+zM6>6_#eAsSkySU}m8YuqTtq0npuG`i z)Zl@!{kk3YuKL56d*oZ}nEd=%Co!stT-pQ63^bd3uK#ynsXEy&A-BPAz-7?{2YCZz zpMe?1Qx#1;+~tx>$623z(jgspgm_=9UU66d+oN63+Y3fT3vY6d6Z^2Vf!Fa~D<6)i zcY>xoLmkkH`W!I->Rlz)MF9|kl$PyYZIP6%{lFZYEZq-njP%duin<-;eX;%p%8=2B z*PWJ&h^U?HFy!9d>{p>Je^F)_&pWsg@$O%kOFni(m-%V&Wd#5BOh>g?hb8Uo>J|18 zt;FZ_Wc(6bzQ`@`R9{;C-QRK-M#ARPD=;I|MLXkZE2Gm|XNj=XMFts1dFux2<~n}c zM_GJ(x02WtFX9Q=3>8U6k@<=NBjremZL%y95eFr&`SN*kQSV`MqiVC9IETtev^W)v zR1TdZAdVu1NGE#_YCA>oZ(Bc6+z)t|XB1#-LzDPW#hNY%!iD%vfV}*jfEv{4y&^j( z75{wuh%A=k_J`TIn7GydW+tGyP{j{y!BpbvCWjM!Pk0j`uErglegCNZk9*)B7MXS3&lhjr$* z^$9hGbnXaOb1dMD3fjX&+fZ7vbKR`Gu`q#G!{oh6Zs%(%smNmGw@vg;0i4zuZGVCk zrQaHJ8lZ#QjiVe(`I?PkUhG34n9<9HYBMK)FRIJAPtgXq_rvRS8M zRNnR@mJTYot8aj}M(QBM<|K~q!1q`D*miGAYp$9Y=%GkN1#p0l-t-T}d%lg9*RsXS zO9X%_Q-G*SI~CZ8_aN3QF$Nsd;ka))lYA2(Ir;}KFkLjf$zo;J$xVc(Ds-I+uE{PJ&-|RBWcqP?pfVZFEDEJeav_e%W6{EQ(I8{-$>gr9yR}tP$5E@5%)9mNqzpYH5Mia2H zYe`GSxAv-6@eeTSiwB*>x6d5;rb~=f4`ygLJ06mvj87tFT6-Ffz4T22zb-wNNjHn0 zpo9HfIJmH@utAAfh>gLsVd{BTCAbR%3&r_^+XPAu4f{>CkEN6_WoJxT9PV*##F>a9 z`s`g?ZeKb;ec#`wx3wSjmzM#|d?r zDFxa_!ul9G@4k(T^?tPrxx!nlmy#;@`-q4J@1DfUV0#o|)n+t|bZ*DfNh;TckHtpr^J;Uhl#LZZ+Pt&^P88aVa&?@(IUCj zgTHy~qj-Wf_?po2dCPCH&D~hGO~QGA03z1dfgDm#|3%VUn%xkS7TwKOaiiBsY;9HK z2+3G?k;v!KN!o^C@^p1zX1bSsBnF}wKp)hytU1Dp(Wo16W2*py51i2 zZ@LsKJq?g0l;y`wfdj8z`?pG<5B#C%AAU|p(fR6|%m^rgvoqY4c zVKyKvJNcByt{9k_0f+0zJxgf|LpZj05u=MNtLA7cerVB9pdEHfNo`=oUDXRs9Ne{h zR0%auJ;IjLM@nE2Kzo&nItQZ->eQ6nuoFt2OwG_nw&4`re%!yZjlmH{VQJJ;ONWVP zLcU~WnsiXJO-7K1h|DZWF@){vM;VSxQ&5!;z<~Z>M-{rh7uuFeY!WuGv7O58#BwJB zsPf4vpx%=WVu1b?rjhYLTmtCVYebvKHsUM6z67CR9Xus0QEhU>7)lRzA~r}|B}CvJ zJ_`5w6>x*}`wa;or3uEPZF1uhz$a*k9`V!)kX4y_$yxf(z!Ug$3D7213c?8p_Fl}g zYR&Kv9t=u~^C-I%c2BeCcjo4CgH_Qa4`n=p9Yl3qjPFWLZHu0tC7*;2ET}wtPAvx2 zhP|IV@*rfjQ*ub1P(MK4+)Bpps{~4H`J0Gvvv#UfPFsCSwe;4l=MG&i2(lwhJ&9tm zjWwdQ{sw-R^&Lk})7!~PHQbO0O$peU0}W&GKt4`bAem_6^P?PY^@vK%4QA!;9qI>0Z0W#nQ1RWAA5(*7(P1<5?hoZ~(OV;jc@2{`Vgy~w%urFNOH{K3=1ecJcEBf~ zHWoL_IU_+@wkR?s_0T3gzYbs53j9G<$-8%%g5N0ZvZQdWkt(n zEE5NGE2Gr7+JL)!2ft1INXb@*Db1M8JNrSYPNH^rwv#3?EvDa?VVJ$4l!>*}g@yfu`SSCrBu z84aT&iX_t%S(OhA9)g}@p^^~+cv=W`39RkZUid&lAp8&?GYk$#u75Yyn1rnJ0 zNaS}_Crl1?zZ8joC>KnsPPiNY?zU&*n z`&r~N5wlrY*6$Qf41Yv4t9$n()le9JrzuvlTQC2YH(Rkq7gG+Tn+!#;__G|`_zbUt zKnEUCGTjK2H)#_+pPdw6d-e>dOag(xTht9MaMH5rdgx(ug|9iuc}BscmSWx6>U1Vo8z5{?>;EbF{(*U z)4gQF2=55kb;R7eaWAdI8A?!#vPrsOls;gRLzTirgm4I;a-D;;VK0Wl+I99`Kqkn@9n&qtSCtwtcK$V32CCyXDXNea^JsNFc2S zU7m<)>juYVMh7WL0dF+rXk#M!NIh?IcN5tqcK2@AGYQ`y+h~oq?V7ZOLsgv4?x_$#%w{YeRg+3fCj!Vu3AD;JE^2YP?5%hFlJ+>7Dm#Ola97e=A z{8@YcyI_*sNu~Iep)zb1wO8OEy!H7@QB?EW+;JX24ZD}v&B>Bg)eX^RRc@_nxFGIv zwx`#Ti*zZ5yyv3$+G2gIpve#3v66$5tcUO|#>0q=+f3|tN( z$Mg_t=}yje!-7RGQ4qfeHs45cb5# zfoyYMvrLV}G&q(;!$?=$=+7Ni`wmU@Lc^?MKpj3)9R`6agv)ht?AyO5m(B|;Jtt~d zx&cx=^01ZsQJ$Y2j7i;vz(RB;WtnD{2TrHn3sbZ8#}&XR96_ovG&YPmJoTp6$_lN- zu60d_)~fSV8KLV_0|8=77ty-L!b4 zBq$J+{Sj(h-P6~`bHh^cx@7sJl;dHhLVPMk=7B*JC$J5R|+6FIw)+|gzGOIFXfFNUKWfFc8D*A;QhoosNfF3-N>X+&ujS~ld9Fr3nw)GKcZ@-U_l(ZmESkIkD@J_vF za~ue?A1iWIKxbS-170}&sny2WMQdz(&TNqhi0XPwMvmDFbapcX+?hi$B%Oi_koV+^ zkqZaJhwa64_pU5YE=$lX>Oa3Jr;7dCpz}r};z&nI)!2(wyo>YQ;Qx=6g)~g6IFV&o^x}ZlWUKtf>-+*osZbQprXWri#<}#GqHcUQ z;}|W%g9D-Pv7(`%+Wd}hJaCMdQ;2b`Y)>l~#5hKvnF;!i9@DWsfjaW{mzZIWrQ#jDN3#arBSPj11b+7ag6U^m&*%K}T zOBo;ZD76CrqBtI$l3TpdX(wr6SM)h-W*(xFCVq$;i?np$5=8k$zD`V)=axFN%@RqQ_nLssNWENnM76DH19 zkzzbqm6$jr7sHZ*mrUl5ncTdr&pB{T3GU}(2v@k3uQoE7J2pVR=5DoTclxdKeJayg zQ}_v^yv$ycyHa$iC&;Y;fHaBA+z*?3UK!+Mlkbt9Lk@ zB8loC-aQ))x{T#v&}e@1+%X~XsmAo5FYS+(f6}@p{g>jqb09CG66nDlNiFK!W&nbH z3#$f~O+GZE-!N-#h;o>|LndQuxRD{xOs0taaB z^@5T7ZZZ0h4|ihu0!fHtFolQHG8|n62k(yZ%hEVJ5_^v& z{x=|X@uYs+K6Tfui^AnYS5bPD24WQB4Lzb@8isPbq*i!&o0aOfvd?shdWa6CarVjo znN}K#^h-BqJq&|aIrs0H5UITvaKk8swKy+?nzs^J7(%6ugf%?B5w7K;0e=c`o9K;L z$Q}3j+X;e8xA!{5-`F_Z^R!XsI$*CY&f|bn>4Iq!E~Oi+e|zGex}jREXEO* zp+s}q1w19F{9klpJ+{=KdAr-}A5Jp@n~56g_4`D#Gc-&hM(EY!@x9^A3D=a{$8RDr z{h9eJgZ|eLU$p?8;fXFcKTi?Rr9v&F}=;em@$uU|- z@R!&nG|)#+frm!jvSUbFUaKm|9cMxbiD9)QlJ89eB*_0FF>zsIz`VFIG=48?%BUrI z7tHvyVhY2V73y7ud*7h2AWpmY1b8cFgukAu;LwoyHzMx%-a}qWxeM~!7<-4Kq00W{ z&qt;q+%%*|yO?B3bG*udE!OqVBcJ@6h1?^($eGmPsQ~WyF6Rq^0ntqAq~_Y1A2?A%jTu0*Rr}4#8xI3fhFY zGhiOF$p9Pfm@0bauo(LsMIXfzPTxWoH){9)k(S@-4oS``d&vDy{(2nHFvOwRJG9TR zS_AwhSIMt>d0;X2+4q%T7BHF1l(6>f%9}6Dk=G*n(us9h2I*AdttxX z&8|)rIUQy9ScYiK4W3Ns5a>KW|^soYg- z*xWZ;>nx`m${~sVRKqp7okuI(j=XpUIS3HY#}1By>+Ol~%7DEiK8)w+X~>Hm{(ekH z&*z4DO0x*La(2#=`W+S0rCyNYoxr)}0Ax0qyn^fwjYss&L-u7#8~fh#Hks z8FEeo3E=O2Aj2$8PHHtIn`()J3`motB+dYBovAzGWw-x!oEoWtDisX_w)plO86JWa zFVPJK<;B$$`C@@-=UfS*? z%u}N@L-!ezBkD03L0aJKEN0Do&Vj<#2lW`~26X_RWD3_y7EEFMny&$$@ZXs%HmQkA32OTH zlHbBQdmM2`F&)L_%OpYazTQ==u$}iG>2fK+^+QOkG|A>8?7gGD?BN+%b)&pgr?s}M zAi-E80EyR=dt=DDcOR3X6N{Sg7Prkh{4g?j!a722tRIKWhAU~VwL(Nvp&#idG>z(L zXVkyb^g4C~HR4Bi37>jy|GYr1Kv(wml zlOUBcCz#!mYHv^}FlW%Aod|Pu4-ugk4&)>THVV+xW+WhQa}BH>6?Qx%b`KG#VPG5d z0QZ}^5X76Xl=EbtFv*dSH6e&G(RCmC1^<2()BQT?4D*N_Si%jAP@cGFW!2)<6(%T9 zc0j40s^7FRHbrrcdjGGs=pCn?iV3riM3BZ8a#92Y7faKoB;NM4(r(;=+M{?zH>bL)xn9mkzOrH8`~OIdsW}wqlhr$A`&SE znRx*gt&W-!+Jx~^t5Y?Ajc4#6sK?|{Kn3!EG>+`bMO6GSuJvx4L=4~efaRL{nQB#@ zRcNlL=oYV8m^>6#0{MjNvHG3ry+gam?mmh`Qcc&bhxUDLR9521oirHtkZAQL1-z*r z5oGJpKLsS8oQY77O8t)aiZBpU1BVf99^DdiFrc*upPyp&flbX7@zrGQEF{)4T4Eoq zFu7*b-a5BPh}zjcCy2*N6HirHV(Y)I`?bOP*V7mw*j^{*X z1i4p~kru6Bk>Gg-e>6O&2<@_z;$q2rRANorX>2CPn9^TEf|FzILV^Nail281dzJ3{ zK6yc&r8AOI>a?6(;|R?#roU}n*Dpl1?4$^Zfrh-`wJ4*GtVV2elt%xq6Z|DHag)LE z^x&*xQO77;^TDO84&t-zmCsP~%2L0Z#ZiT`q#=gXGfTLa#jg*@37KDMd}$IR3kS|pyh z?c`;?!9L7D0U0G16CclHi;FR)oHP3IWb%G5W_`y%MggdEI{?aYMo-tRCVyiD5KjrnJ$Vl6m)!-hC zrN9USS&P>(GUm+#9{Q)_nqTe#=~1S}@qefPC+)QLSu$VBNL((MJbyx?2+IQ67zk@6 z<6>DeUdHno;4N+Lv+N)C+$UsQl4qN8Z+XjWf2=&yZK&P=NoN6{y@Y7#$s7|qw%