]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge branch 'master' into kernel-4.9
authorArne Fitzenreiter <arne_f@ipfire.org>
Sun, 9 Jul 2017 10:47:16 +0000 (12:47 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 9 Jul 2017 10:47:16 +0000 (12:47 +0200)
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
90 files changed:
config/kernel/kernel.config.i586-ipfire
config/kernel/kernel.config.i586-ipfire-pae
config/kernel/kernel.config.x86_64-ipfire
config/qos/makeqosscripts.pl
config/rootfiles/common/i586/linux
config/rootfiles/common/i586/linux-headers
config/rootfiles/common/x86_64/linux
config/rootfiles/common/x86_64/linux-headers
config/rootfiles/packages/linux-pae
lfs/dhcpcd
lfs/linux
lfs/net-tools
lfs/postfix
lfs/ppp
lfs/udev
lfs/xtables-addons
make.sh
src/patches/backports/backports-linux-upstream-1.patch [deleted file]
src/patches/backports/backports-linux-upstream-2.patch [deleted file]
src/patches/backports/backports-linux-upstream-3.patch [deleted file]
src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch [deleted file]
src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch [deleted file]
src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch [deleted file]
src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch [deleted file]
src/patches/linux-3.14.22-dvbsky.patch [deleted file]
src/patches/linux-3.14.25-rt5592_no_special_txop_init.patch [deleted file]
src/patches/linux-3.14.25_rt2x00_fix_bss_bcn_num.patch [deleted file]
src/patches/linux-3.14.32-r8169_disable_L23.patch [deleted file]
src/patches/linux-3.14.43_SuperSSpeed_NOTRIM.patch [deleted file]
src/patches/linux-3.14.43_new_qtrim_blacklist.patch [deleted file]
src/patches/linux-3.14.65-k10temp_add_16H_M30H_id.patch [deleted file]
src/patches/linux-3.14.77-gsrec_tcp_input_access_once_rw.patch [deleted file]
src/patches/linux-3.14.79_mmc_remove_EXT_CSD_revision_check.patch [deleted file]
src/patches/linux-3.2.33_ipg-fix-driver-name.patch [deleted file]
src/patches/linux-3.7-disable-compat_vdso.patch [deleted file]
src/patches/linux-genksyms_fix_typeof_handling.patch [deleted file]
src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch [deleted file]
src/patches/linux/0001-Drivers-net-hyperv-Get-rid-of-the-rndis_filter_packe.patch [deleted file]
src/patches/linux/0001-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch [deleted file]
src/patches/linux/0002-Drivers-net-hyperv-Cleanup-the-receive-path.patch [deleted file]
src/patches/linux/0002-hyperv-Remove-recv_pkt_list-and-lock.patch [deleted file]
src/patches/linux/0003-Drivers-net-hyperv-Cleanup-the-netvsc-receive-callba.patch [deleted file]
src/patches/linux/0003-hyperv-Simplify-the-send_completion-variables.patch [deleted file]
src/patches/linux/0004-hyperv-Add-latest-NetVSP-versions-to-auto-negotiatio.patch [deleted file]
src/patches/linux/0004-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch [deleted file]
src/patches/linux/0005-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch [deleted file]
src/patches/linux/0005-Drivers-net-hyperv-Enable-scatter-gather-I-O.patch [deleted file]
src/patches/linux/0006-Drivers-net-hyperv-Cleanup-the-send-path.patch [deleted file]
src/patches/linux/0006-net-get-rid-of-SET_ETHTOOL_OPS.patch [deleted file]
src/patches/linux/0007-Drivers-net-hyperv-Enable-offloads-on-the-host.patch [deleted file]
src/patches/linux/0007-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch [deleted file]
src/patches/linux/0008-Drivers-net-hyperv-Enable-receive-side-IP-checksum-o.patch [deleted file]
src/patches/linux/0008-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch [deleted file]
src/patches/linux/0009-Drivers-net-hyperv-Enable-send-side-checksum-offload.patch [deleted file]
src/patches/linux/0009-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch [deleted file]
src/patches/linux/0010-Drivers-net-hyperv-Enable-large-send-offload.patch [deleted file]
src/patches/linux/0010-hyperv-Fix-a-bug-in-netvsc_start_xmit.patch [deleted file]
src/patches/linux/0011-hyperv-Change-the-receive-buffer-size-for-legacy-hos.patch [deleted file]
src/patches/linux/0011-hyperv-Fix-a-bug-in-netvsc_send.patch [deleted file]
src/patches/linux/0012-Drivers-net-hyperv-Allocate-memory-for-all-possible-.patch [deleted file]
src/patches/linux/0013-Drivers-net-hyperv-Negotiate-suitable-ndis-version-f.patch [deleted file]
src/patches/linux/0014-Drivers-net-hyperv-Address-UDP-checksum-issues.patch [deleted file]
src/patches/linux/0015-hyperv-Properly-handle-checksum-offload.patch [deleted file]
src/patches/linux/0016-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch [deleted file]
src/patches/linux/0017-hyperv-Remove-recv_pkt_list-and-lock.patch [deleted file]
src/patches/linux/0018-hyperv-Simplify-the-send_completion-variables.patch [deleted file]
src/patches/linux/0019-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch [deleted file]
src/patches/linux/0020-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch [deleted file]
src/patches/linux/0021-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch [deleted file]
src/patches/linux/0022-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch [deleted file]
src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch [deleted file]
src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch [deleted file]
src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch [deleted file]
src/patches/linux/0100-crypto-aesni-Add-support-for-192-256-bit-keys-to-AES.patch [deleted file]
src/patches/linux/0110-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch [deleted file]
src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch [new file with mode: 0644]
src/patches/linux/linux-2.6.32.27_mcs7830-fix-driver-name.patch [moved from src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch with 100% similarity]
src/patches/linux/linux-4.9-imq.diff [moved from src/patches/linux-3.14.22-imq.patch with 72% similarity]
src/patches/linux/linux-4.9.13-layer7.patch [moved from src/patches/linux-3.14-layer7-filter.patch with 82% similarity]
src/patches/linux/linux-4.9.16-ledtrig_netdev.patch [moved from src/patches/linux-3.14.22-ledtrig_netdev.patch with 85% similarity]
src/patches/linux/linux-4.9.17-igb-e1000e_fix_lock_at_update_stats.patch [new file with mode: 0644]
src/patches/linux/linux-4.9.8-apu_leds.patch [moved from src/patches/linux-3.14-apu_leds.patch with 87% similarity]
src/patches/linux/linux-4.9.8-ath_ignore_eeprom_regd.patch [new file with mode: 0644]
src/patches/linux/linux-4.9.8-iwlwifi-noibss_only_on_radar_chan.patch [moved from src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch with 59% similarity]
src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch [new file with mode: 0644]
src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch [new file with mode: 0644]
src/patches/net-tools-1.60-iphdr-redef.patch [new file with mode: 0644]
src/patches/postfix-2.10.0-build_with_kernel4x.patch [new file with mode: 0644]
src/patches/ppp/ppp-2.4.7-headers_4.9.patch [new file with mode: 0644]
src/patches/udev-208-fix_uint8_t.patch [new file with mode: 0644]

index 834f3698859d75929900e2b0fb3d45c0d400c6ac..b8e83276072ad0cf7e54b357b259de3655808de7 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -10,8 +10,11 @@ CONFIG_OUTPUT_FORMAT="elf32-i386"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
@@ -22,7 +25,6 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_ARCH_HAS_CPU_RELAX=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
 CONFIG_HAVE_SETUP_PER_CPU_AREA=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
@@ -30,18 +32,18 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
-# CONFIG_ZONE_DMA32 is not set
-# CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
 CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
 CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=2
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
 
 #
 # General setup
@@ -69,8 +71,10 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
@@ -82,13 +86,17 @@ CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_KTIME_SCALAR=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
 CONFIG_GENERIC_CMOS_UPDATE=y
@@ -106,7 +114,7 @@ CONFIG_HIGH_RES_TIMERS=y
 #
 # CPU/Task time and stats accounting
 #
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
 CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -119,38 +127,35 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
 CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
 # CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 # CONFIG_CFS_BANDWIDTH is not set
 CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
@@ -168,18 +173,26 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_PCSPKR_PLATFORM=y
@@ -189,9 +202,12 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 
@@ -206,14 +222,17 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
 CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 CONFIG_OPROFILE_NMI_TIMER=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
 CONFIG_ARCH_USE_BUILTIN_BSWAP=y
@@ -223,8 +242,8 @@ CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
@@ -244,23 +263,37 @@ CONFIG_HAVE_CMPXCHG_DOUBLE=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
 # CONFIG_CC_STACKPROTECTOR_REGULAR is not set
 CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
-CONFIG_HAVE_ARCH_SOFT_DIRTY=y
 CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+# CONFIG_HAVE_ARCH_HASH is not set
+CONFIG_ISA_BUS_API=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+# CONFIG_HAVE_ARCH_VMAP_STACK is not set
 
 #
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -272,7 +305,9 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
@@ -305,6 +340,7 @@ CONFIG_LDM_PARTITION=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
 # CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_PCI=y
 
 #
 # IO Schedulers
@@ -327,6 +363,12 @@ 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_FREEZER=y
 
 #
@@ -334,33 +376,35 @@ CONFIG_FREEZER=y
 #
 CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
 CONFIG_X86_MPPARSE=y
-CONFIG_X86_BIGSMP=y
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_GOLDFISH is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
-# CONFIG_X86_INTEL_MID is not set
+CONFIG_X86_INTEL_MID=y
+CONFIG_X86_INTEL_QUARK=y
 CONFIG_X86_INTEL_LPSS=y
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
 # CONFIG_X86_RDC321X is not set
 CONFIG_X86_32_NON_STANDARD=y
-# CONFIG_X86_NUMAQ is not set
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
 # CONFIG_STA2X11 is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_ES7000 is not set
 CONFIG_X86_32_IRIS=m
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
 CONFIG_HYPERVISOR_GUEST=y
 CONFIG_PARAVIRT=y
 # CONFIG_PARAVIRT_DEBUG is not set
 # CONFIG_PARAVIRT_SPINLOCKS is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
 CONFIG_KVM_GUEST=y
 # CONFIG_KVM_DEBUG_FS is not set
 # CONFIG_LGUEST_GUEST is not set
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
 CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
 # CONFIG_M486 is not set
 # CONFIG_M586 is not set
 CONFIG_M586TSC=y
@@ -403,6 +447,7 @@ CONFIG_CPU_SUP_TRANSMETA_32=y
 CONFIG_CPU_SUP_UMC_32=y
 CONFIG_HPET_TIMER=y
 CONFIG_HPET_EMULATE_RTC=y
+CONFIG_APB_TIMER=y
 CONFIG_DMI=y
 CONFIG_NR_CPUS=8
 CONFIG_SCHED_SMT=y
@@ -410,27 +455,33 @@ CONFIG_SCHED_MC=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=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_MCE_INTEL=y
 CONFIG_X86_MCE_AMD=y
-# CONFIG_X86_ANCIENT_MCE is not set
+CONFIG_X86_ANCIENT_MCE=y
 CONFIG_X86_MCE_THRESHOLD=y
 # CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_X86_LEGACY_VM86 is not set
+# CONFIG_VM86 is not set
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
 # CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
 # CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
@@ -443,10 +494,11 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_HIGHMEM=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_ILLEGAL_POINTER_VALUE=0xfffff000
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_SPARSEMEM_MANUAL is not set
@@ -458,13 +510,12 @@ CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
 CONFIG_ARCH_DISCARD_MEMBLOCK=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MEMORY_BALLOON=y
 CONFIG_BALLOON_COMPACTION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
+CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
 CONFIG_MMU_NOTIFIER=y
@@ -475,12 +526,18 @@ CONFIG_MEMORY_FAILURE=y
 CONFIG_TRANSPARENT_HUGEPAGE=y
 CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
 # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
 # CONFIG_ZBUD is not set
 # CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+# CONFIG_X86_PMEM_LEGACY is not set
 CONFIG_HIGHPTE=y
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
@@ -494,6 +551,7 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
@@ -507,14 +565,14 @@ CONFIG_SCHED_HRTICK=y
 CONFIG_CRASH_DUMP=y
 CONFIG_PHYSICAL_START=0x400000
 CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
 CONFIG_X86_NEED_RELOCS=y
 CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
 # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
 # CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_CMDLINE_BOOL is not set
-# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_DEFAULT_MODIFY_LDT_SYSCALL=y
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
 #
@@ -522,19 +580,24 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+# CONFIG_HIBERNATION is not set
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
 # CONFIG_PM_AUTOSLEEP is not set
 # CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_CLK=y
 # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 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_SLEEP=y
-CONFIG_ACPI_PROCFS=y
 # CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
 CONFIG_ACPI_EC_DEBUGFS=m
 CONFIG_ACPI_AC=y
 CONFIG_ACPI_BATTERY=y
@@ -542,28 +605,41 @@ CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
 CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
 CONFIG_ACPI_SBS=m
 CONFIG_ACPI_HED=y
 CONFIG_ACPI_CUSTOM_METHOD=m
 # CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+# CONFIG_ACPI_NFIT 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 is not set
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
 CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=y
@@ -577,27 +653,31 @@ CONFIG_APM_CPU_IDLE=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=m
+CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
 
 #
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=m
 CONFIG_X86_ACPI_CPUFREQ=m
 # CONFIG_X86_ACPI_CPUFREQ_CPB is not set
+# CONFIG_X86_SFI_CPUFREQ is not set
 CONFIG_X86_POWERNOW_K6=m
 CONFIG_X86_POWERNOW_K7=m
 CONFIG_X86_POWERNOW_K7_ACPI=y
@@ -623,7 +703,6 @@ CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
 # CPU Idle
 #
 CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
@@ -653,7 +732,10 @@ CONFIG_PCIEASPM_DEFAULT=y
 # CONFIG_PCIEASPM_POWERSAVE is not set
 # CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
 CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 CONFIG_PCI_STUB=y
@@ -661,13 +743,22 @@ CONFIG_HT_IRQ=y
 CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 # CONFIG_PCI_PRI is not set
-# CONFIG_PCI_PASID is not set
-CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_PASID=y
 CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
 
 #
 # PCI host controller drivers
 #
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+# CONFIG_ISA_BUS is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
@@ -675,8 +766,8 @@ CONFIG_EISA=y
 CONFIG_EISA_PCI_EISA=y
 CONFIG_EISA_VIRTUAL_ROOT=y
 CONFIG_EISA_NAMES=y
-CONFIG_SCx200=m
-CONFIG_SCx200HR_TIMER=m
+CONFIG_SCx200=y
+CONFIG_SCx200HR_TIMER=y
 # CONFIG_OLPC is not set
 CONFIG_ALIX=y
 CONFIG_NET5501=y
@@ -704,13 +795,6 @@ CONFIG_I82365=m
 CONFIG_TCIC=m
 CONFIG_PCMCIA_PROBE=y
 CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
 CONFIG_X86_SYSFB=y
 
@@ -718,15 +802,17 @@ CONFIG_X86_SYSFB=y
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 CONFIG_BINFMT_SCRIPT=y
 CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_MISC=y
 CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
 CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
 
 #
 # Networking options
@@ -764,6 +850,9 @@ 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_IPCOMP=m
@@ -772,10 +861,10 @@ CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_CUBIC=y
@@ -784,11 +873,15 @@ CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
 CONFIG_TCP_CONG_HYBLA=m
 CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
 CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -801,6 +894,7 @@ CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
 CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
 CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -813,6 +907,8 @@ 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
@@ -820,6 +916,7 @@ CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_NETLABEL is not set
 CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
@@ -829,11 +926,13 @@ CONFIG_BRIDGE_NETFILTER=y
 #
 # Core Netfilter Configuration
 #
-CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK=y
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
@@ -860,7 +959,7 @@ 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_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_PROTO_DCCP=m
@@ -871,22 +970,32 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
-CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES=y
 CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
 CONFIG_NFT_EXTHDR=m
 CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
 CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -913,6 +1022,7 @@ CONFIG_NETFILTER_XT_TARGET_LED=m
 CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=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
@@ -950,7 +1060,7 @@ 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 is not set
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
 CONFIG_NETFILTER_XT_MATCH_L2TP=m
 CONFIG_NETFILTER_XT_MATCH_LAYER7=m
 # CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
@@ -983,9 +1093,11 @@ 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_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -1014,6 +1126,8 @@ 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
@@ -1038,12 +1152,24 @@ CONFIG_IP_VS_PE_SIP=m
 #
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
 CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1052,15 +1178,10 @@ CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
 CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
@@ -1078,8 +1199,16 @@ CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1097,10 +1226,13 @@ CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1121,7 +1253,6 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
@@ -1131,6 +1262,7 @@ CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
 # 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 is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
@@ -1151,9 +1283,12 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -1165,8 +1300,8 @@ CONFIG_LLC=y
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
 # CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1214,6 +1349,8 @@ CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
 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
@@ -1233,28 +1370,49 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
 CONFIG_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
 CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
 CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_CLASSID=y
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
@@ -1269,6 +1427,7 @@ CONFIG_NET_FLOW_LIMIT=y
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 CONFIG_BT=m
+CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1276,11 +1435,22 @@ 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_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
 
 #
 # 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_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
@@ -1288,6 +1458,11 @@ 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_BCM=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
@@ -1301,6 +1476,8 @@ CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
 # CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1311,12 +1488,13 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 # CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB 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
@@ -1324,9 +1502,9 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1334,6 +1512,7 @@ CONFIG_MAC80211_LEDS=y
 # CONFIG_MAC80211_DEBUGFS is not set
 # CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
@@ -1343,6 +1522,10 @@ CONFIG_RFKILL_GPIO=m
 # CONFIG_CAIF is not set
 # CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
 
 #
 # Device Drivers
@@ -1351,6 +1534,7 @@ CONFIG_RFKILL_GPIO=m
 #
 # Generic Driver Options
 #
+CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
@@ -1360,14 +1544,22 @@ CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+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_SYS_HYPERVISOR is not set
 # CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
 
 #
 # Bus devices
@@ -1375,6 +1567,7 @@ CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
+# CONFIG_OF is not set
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
@@ -1411,34 +1604,36 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
 # CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
 # CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_VIRTIO_BLK=m
 # CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_RBD is not set
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
 
 #
 # Misc devices
 #
 CONFIG_SENSORS_LIS3LV02D=m
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
+# CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_CS5535_MFGPT=m
 CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
@@ -1448,17 +1643,15 @@ CONFIG_HP_ILO=m
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29020 is not set
 # CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
 # CONFIG_SENSORS_BH1770 is not set
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
 # CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
 # CONFIG_C2PORT is not set
 
 #
@@ -1484,8 +1677,21 @@ CONFIG_TI_ST=m
 CONFIG_ALTERA_STAPL=m
 # CONFIG_INTEL_MEI is not set
 # CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
 CONFIG_VMWARE_VMCI=m
 
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
 #
 # Intel MIC Host Driver
 #
@@ -1493,6 +1699,21 @@ CONFIG_VMWARE_VMCI=m
 #
 # Intel MIC Card Driver
 #
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1503,8 +1724,8 @@ CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -1518,7 +1739,6 @@ CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SCAN_ASYNC=y
@@ -1528,14 +1748,12 @@ CONFIG_SCSI_SCAN_ASYNC=y
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
 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
-CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1548,7 +1766,6 @@ CONFIG_BLK_DEV_3W_XXXX_RAID=m
 CONFIG_SCSI_HPSA=m
 CONFIG_SCSI_3W_9XXX=m
 CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_7000FASST=m
 CONFIG_SCSI_ACARD=m
 CONFIG_SCSI_AHA152X=m
 CONFIG_SCSI_AHA1542=m
@@ -1574,7 +1791,6 @@ CONFIG_SCSI_MVSAS_TASKLET=y
 CONFIG_SCSI_MVUMI=m
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
 CONFIG_SCSI_ARCMSR=m
 CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
@@ -1582,15 +1798,16 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=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_DWC_TC_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 # CONFIG_SCSI_FLASHPOINT is not set
@@ -1600,8 +1817,9 @@ 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_DTC3280=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
 # CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
@@ -1611,7 +1829,6 @@ CONFIG_SCSI_GDTH=m
 CONFIG_SCSI_ISCI=m
 CONFIG_SCSI_GENERIC_NCR5380=m
 CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-# CONFIG_SCSI_GENERIC_NCR53C400 is not set
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -1629,7 +1846,6 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
 CONFIG_SCSI_IPR=m
 CONFIG_SCSI_IPR_TRACE=y
 CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_PAS16=m
 CONFIG_SCSI_QLOGIC_FAS=m
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
@@ -1639,18 +1855,12 @@ CONFIG_SCSI_LPFC=m
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
-# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_AM53C974=m
 CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_WD719X=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_CHELSIO_FCOE=m
@@ -1698,11 +1908,12 @@ CONFIG_ATA_BMDMA=y
 # SATA SFF controllers with BMDMA
 #
 CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1715,7 +1926,6 @@ CONFIG_SATA_VITESSE=m
 #
 CONFIG_PATA_ALI=m
 CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
 CONFIG_PATA_ARTOP=m
 CONFIG_PATA_ATIIXP=m
 CONFIG_PATA_ATP867X=m
@@ -1784,22 +1994,25 @@ CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
 CONFIG_DM_MIRROR=y
 CONFIG_DM_LOG_USERSPACE=m
 CONFIG_DM_RAID=m
@@ -1811,7 +2024,9 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
 CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1829,15 +2044,6 @@ CONFIG_FIREWIRE_OHCI=m
 CONFIG_FIREWIRE_SBP2=m
 # CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
 CONFIG_MACINTOSH_DRIVERS=y
 # CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
@@ -1851,11 +2057,14 @@ CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
 CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
@@ -1864,9 +2073,11 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
 CONFIG_NLMON=m
+CONFIG_NET_VRF=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1903,18 +2114,19 @@ CONFIG_ATM_SOLOS=m
 #
 # CAIF transport drivers
 #
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
 
 #
 # Distributed Switch Architecture drivers
 #
-CONFIG_NET_DSA_MV88E6XXX=y
 CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
@@ -1926,9 +2138,14 @@ 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_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_LANCE=m
@@ -1942,33 +2159,39 @@ CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
 CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
 CONFIG_MACB=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_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_CS89x0=m
 # CONFIG_CS89x0_PLATFORM is not set
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
 CONFIG_DNET=m
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_TULIP=y
@@ -1990,6 +2213,8 @@ CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
 CONFIG_NET_VENDOR_EMULEX=y
 CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
 CONFIG_NET_VENDOR_EXAR=y
 CONFIG_S2IO=m
 CONFIG_VXGE=m
@@ -2002,23 +2227,22 @@ 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_IXGBEVF=m
 CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -2029,17 +2253,24 @@ CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 # CONFIG_MLX5_CORE is not set
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
 CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
 CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
 CONFIG_NET_VENDOR_8390=y
 CONFIG_PCMCIA_AXNET=m
 CONFIG_NE2000=m
@@ -2052,25 +2283,37 @@ CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
 CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
-# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
 CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=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_TUNE_TWISTER=y
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
+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
@@ -2080,6 +2323,7 @@ CONFIG_SIS190=m
 CONFIG_SFC=m
 CONFIG_SFC_MCDI_MON=y
 CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
@@ -2089,18 +2333,19 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
 CONFIG_CASSINI=m
 CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
 CONFIG_NET_VENDOR_TEHUTI=y
 CONFIG_TEHUTI=m
 CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
 CONFIG_TLAN=m
 CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
@@ -2118,30 +2363,46 @@ CONFIG_PCMCIA_XIRC2PS=m
 # CONFIG_HIPPI is not set
 # CONFIG_NET_SB1000 is not set
 CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
 
 #
 # MII PHY device drivers
 #
-CONFIG_AT803X_PHY=m
 CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
 CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
 CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
 CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
 CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2157,15 +2418,13 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
 # CONFIG_SLIP is not set
 CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
 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
@@ -2184,6 +2443,7 @@ 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
@@ -2200,30 +2460,12 @@ CONFIG_USB_NET_INT51X1=m
 CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
 CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_LIBERTAS_UAP=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
 CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
 # CONFIG_ATH_DEBUG is not set
 CONFIG_ATH5K=m
 CONFIG_ATH5K_DEBUG=y
@@ -2236,11 +2478,14 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
 # CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
 CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
@@ -2257,15 +2502,24 @@ CONFIG_ATH10K_PCI=m
 # CONFIG_ATH10K_TRACING is not set
 CONFIG_WCN36XX=m
 # CONFIG_WCN36XX_DEBUGFS 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_PCMCIA is not set
 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
@@ -2286,16 +2540,17 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 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 is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCMDBG is not set
-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_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
@@ -2307,30 +2562,34 @@ 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 is not set
 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
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
 
 #
 # Debugging Options
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+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 is not set
 CONFIG_HERMES_CACHE_FW_ON_INIT=y
@@ -2344,6 +2603,25 @@ CONFIG_P54_COMMON=m
 CONFIG_P54_USB=m
 CONFIG_P54_PCI=m
 CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+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_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
 CONFIG_RT2500PCI=m
@@ -2372,19 +2650,38 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=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 is not set
 CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX=m
@@ -2392,20 +2689,21 @@ 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_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
 # CONFIG_WAN is not set
 CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
 CONFIG_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -2491,20 +2789,12 @@ CONFIG_HISAX_ST5481=m
 CONFIG_HISAX_HFCUSB=m
 CONFIG_HISAX_HFC4S8S=m
 CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
 CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
 CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
 
 #
 # CAPI hardware drivers
@@ -2552,11 +2842,16 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
 # CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
@@ -2577,6 +2872,7 @@ CONFIG_INPUT_EVDEV=y
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
 # CONFIG_KEYBOARD_ADP5588 is not set
 # CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
@@ -2602,6 +2898,7 @@ CONFIG_KEYBOARD_LM8333=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_CYPRESS=y
@@ -2610,10 +2907,13 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
 # CONFIG_MOUSE_INPORT is not set
 # CONFIG_MOUSE_LOGIBM is not set
 # CONFIG_MOUSE_PC110PAD is not set
@@ -2627,12 +2927,15 @@ CONFIG_MOUSE_SYNAPTICS_USB=m
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
 # CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
 CONFIG_INPUT_PCSPKR=m
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_APANEL=m
 # CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
 # CONFIG_INPUT_WISTRON_BTNS is not set
 CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE2=m
@@ -2642,13 +2945,20 @@ CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
 
 #
 # Hardware I/O ports
@@ -2666,6 +2976,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2679,7 +2990,6 @@ CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
 CONFIG_SERIAL_NONSTANDARD=y
 CONFIG_ROCKETPORT=m
@@ -2695,16 +3005,18 @@ CONFIG_NOZOMI=m
 CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
 # CONFIG_DEVKMEM is not set
 
 #
 # Serial drivers
 #
+CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
 CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
 # CONFIG_SERIAL_8250_CS is not set
@@ -2720,16 +3032,22 @@ 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_FSL 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_MOXA=m
 
 #
 # Non-8250 serial port support
 #
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_JSM=m
 CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_SC16IS7XX is not set
 # CONFIG_SERIAL_TIMBERDALE is not set
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
 # CONFIG_SERIAL_ALTERA_UART is not set
@@ -2749,17 +3067,16 @@ CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
 CONFIG_NVRAM=y
 # CONFIG_DTLK is not set
 CONFIG_R3964=m
@@ -2774,7 +3091,7 @@ CONFIG_SONYPI=m
 # CONFIG_CARDMAN_4040 is not set
 # CONFIG_IPWIRELESS is not set
 CONFIG_MWAVE=m
-# CONFIG_SCx200_GPIO is not set
+CONFIG_SCx200_GPIO=m
 CONFIG_PC8736x_GPIO=m
 CONFIG_NSC_GPIO=m
 CONFIG_RAW_DRIVER=y
@@ -2785,7 +3102,13 @@ CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TELCLOCK is not set
 CONFIG_DEVPORT=y
-CONFIG_I2C=m
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_ACPI_I2C_OPREGION=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
@@ -2798,6 +3121,7 @@ CONFIG_I2C_MUX_GPIO=m
 CONFIG_I2C_MUX_PCA9541=m
 CONFIG_I2C_MUX_PCA954x=m
 CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2840,7 +3164,9 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
 # CONFIG_I2C_EG20T is not set
+CONFIG_I2C_EMEV2=m
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
@@ -2852,6 +3178,7 @@ CONFIG_I2C_SIMTEC=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -2865,13 +3192,20 @@ CONFIG_I2C_VIPERBOARD=m
 # CONFIG_I2C_PCA_ISA is not set
 CONFIG_SCx200_ACB=m
 # CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
+CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
+#
+# HSI controllers
+#
+
 #
 # HSI clients
 #
@@ -2909,67 +3243,84 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_AMD is not set
 CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_PINCTRL_CHERRYVIEW is not set
+# CONFIG_PINCTRL_MERRIFIELD is not set
+# CONFIG_PINCTRL_BROXTON is not set
+# CONFIG_PINCTRL_SUNRISEPOINT is not set
 CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
 
 #
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
 #
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_AXP209 is not set
+# CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-# CONFIG_GPIO_F7188X is not set
-# CONFIG_GPIO_SCH311X is not set
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
 CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_LYNXPOINT is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
 
 #
-# I2C GPIO expanders:
+# Port-mapped I/O GPIO drivers
 #
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_104_IDIO_16 is not set
+# CONFIG_GPIO_104_IDI_48 is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_GPIO_MM is not set
+# CONFIG_GPIO_IT87 is not set
+CONFIG_GPIO_SCH=m
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_WS16C48 is not set
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
 # CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_TS4900 is not set
+
+#
+# MFD GPIO expanders
+#
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_DLN2 is not set
+# CONFIG_GPIO_MSIC is not set
 
 #
-# PCI GPIO expanders:
+# PCI GPIO expanders
 #
-CONFIG_GPIO_CS5535=m
 # CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
 # CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_MERRIFIELD is not set
 # CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_PCH is not set
 # CONFIG_GPIO_RDC321X is not set
 
 #
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
 #
 
 #
-# USB GPIO expanders:
+# USB GPIO expanders
 #
 CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
@@ -2992,6 +3343,7 @@ CONFIG_W1_SLAVE_SMEM=m
 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_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
@@ -3001,6 +3353,9 @@ CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2781=m
 CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
@@ -3011,7 +3366,9 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
 # CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
 # CONFIG_CHARGER_ISP1704 is not set
@@ -3020,10 +3377,13 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
 CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -3051,29 +3411,51 @@ CONFIG_SENSORS_ASC7621=m
 CONFIG_SENSORS_K8TEMP=m
 CONFIG_SENSORS_K10TEMP=m
 CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
 CONFIG_SENSORS_I5K_AMB=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 # CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
 CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+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_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+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_LM63=m
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
@@ -3086,42 +3468,36 @@ CONFIG_SENSORS_LM87=m
 CONFIG_SENSORS_LM90=m
 CONFIG_SENSORS_LM92=m
 CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
 CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=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_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 # CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_LTC3815 is not set
 CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 # CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
 # CONFIG_SENSORS_EMC2103 is not set
@@ -3132,13 +3508,18 @@ CONFIG_SENSORS_SMSC47B397=m
 CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
 CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_VIA_CPUTEMP=m
@@ -3155,7 +3536,6 @@ CONFIG_SENSORS_W83L785TS=m
 CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
 
 #
 # ACPI drivers
@@ -3164,38 +3544,57 @@ CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INTEL_QUARK_DTS_THERMAL=m
 
 #
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
 #
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
+# CONFIG_WATCHDOG_SYSFS is not set
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
 CONFIG_DW_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_GEODE_WDT=m
-CONFIG_SC520_WDT=m
 CONFIG_SBC_FITPC2_WATCHDOG=m
 CONFIG_EUROTECH_WDT=m
 CONFIG_IB700_WDT=m
@@ -3203,6 +3602,8 @@ CONFIG_IBMASR=m
 CONFIG_WAFER_WDT=m
 CONFIG_I6300ESB_WDT=m
 CONFIG_IE6XX_WDT=m
+# CONFIG_INTEL_SCU_WATCHDOG is not set
+# CONFIG_INTEL_MID_WATCHDOG is not set
 CONFIG_ITCO_WDT=m
 CONFIG_ITCO_VENDOR_SUPPORT=y
 CONFIG_IT8712F_WDT=m
@@ -3221,12 +3622,11 @@ CONFIG_SMSC_SCH311X_WDT=m
 CONFIG_SMSC37B787_WDT=m
 CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
 CONFIG_MEN_A21_WDT=m
 
 #
@@ -3246,6 +3646,11 @@ CONFIG_WDTPCI=m
 # USB-based Watchdog Cards
 #
 CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -3275,6 +3680,8 @@ 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
@@ -3282,39 +3689,92 @@ CONFIG_BCMA_DRIVER_GPIO=y
 #
 # Multifunction device drivers
 #
-CONFIG_MFD_CORE=m
+CONFIG_MFD_CORE=y
 CONFIG_MFD_CS5535=m
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
 # CONFIG_MFD_CROS_EC is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_EXYNOS_LPASS=m
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
+CONFIG_MFD_INTEL_MSIC=y
 # CONFIG_MFD_JANZ_CMODIO is not set
 # CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_MFD_RDC321X is not set
 CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
 # CONFIG_MFD_SI476X_CORE is not set
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
 # CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
 # CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_PALMAS is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
 # CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_LM3533=m
 # CONFIG_MFD_TIMBERDALE is not set
 # CONFIG_MFD_TMIO is not set
 CONFIG_MFD_VX855=m
 # CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
 # CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
@@ -3325,24 +3785,29 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
 CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
 CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
 CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
 CONFIG_VIDEO_DEV=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
 CONFIG_VIDEO_V4L2=m
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_PCI_SKELETON=m
 CONFIG_VIDEO_TUNER=m
 CONFIG_V4L2_MEM2MEM_DEV=m
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEOBUF2_CORE=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_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3362,12 +3827,14 @@ CONFIG_IR_RC5_DECODER=m
 CONFIG_IR_RC6_DECODER=m
 CONFIG_IR_JVC_DECODER=m
 CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_ITE_CIR=m
@@ -3376,6 +3843,7 @@ 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
@@ -3394,6 +3862,7 @@ 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
@@ -3430,6 +3899,7 @@ 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
@@ -3452,17 +3922,21 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
 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
@@ -3476,6 +3950,7 @@ CONFIG_VIDEO_TM6000_DVB=m
 #
 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=y
@@ -3510,7 +3985,6 @@ CONFIG_DVB_USB_AZ6007=m
 CONFIG_DVB_USB_CE6230=m
 CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
@@ -3520,6 +3994,7 @@ 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
@@ -3535,13 +4010,10 @@ CONFIG_MEDIA_PCI_SUPPORT=y
 # Media capture support
 #
 CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
 CONFIG_VIDEO_ZORAN=m
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_ZR36060=m
@@ -3550,9 +4022,17 @@ CONFIG_VIDEO_ZORAN_DC10=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+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
@@ -3570,17 +4050,17 @@ 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
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -3593,32 +4073,28 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
 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_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 # CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
+CONFIG_DVB_PLATFORM_DRIVERS=y
 
 #
 # Supported MMC/SDIO adapters
 #
 # CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
 # Supported FireWire (IEEE 1394) Adapters
@@ -3631,7 +4107,6 @@ CONFIG_MEDIA_COMMON_OPTIONS=y
 # common driver options
 #
 CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_CYPRESS_FIRMWARE=m
 CONFIG_DVB_B2C2_FLEXCOP=m
@@ -3641,7 +4116,7 @@ CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
 
 #
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
 #
 CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
 CONFIG_MEDIA_ATTACH=y
@@ -3650,17 +4125,18 @@ CONFIG_VIDEO_IR_I2C=m
 #
 # Audio decoders, processors and mixers
 #
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
 CONFIG_VIDEO_TDA9840=m
 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_UDA1342=m
 CONFIG_VIDEO_WM8775=m
 CONFIG_VIDEO_WM8739=m
 CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
 
 #
 # RDS decoders
@@ -3670,7 +4146,6 @@ CONFIG_VIDEO_SAA6588=m
 #
 # Video decoders
 #
-CONFIG_VIDEO_ADV7180=m
 CONFIG_VIDEO_BT819=m
 CONFIG_VIDEO_BT856=m
 CONFIG_VIDEO_BT866=m
@@ -3678,6 +4153,9 @@ CONFIG_VIDEO_KS0127=m
 CONFIG_VIDEO_SAA7110=m
 CONFIG_VIDEO_SAA711X=m
 CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
 CONFIG_VIDEO_VPX3220=m
 
 #
@@ -3697,7 +4175,9 @@ CONFIG_VIDEO_ADV7175=m
 #
 # Camera sensor devices
 #
+CONFIG_VIDEO_OV7640=m
 CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
 CONFIG_VIDEO_MT9V011=m
 
 #
@@ -3767,10 +4247,13 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=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
 
 #
 # Multistandard (satellite) frontends
@@ -3786,11 +4269,13 @@ CONFIG_DVB_M88DS3103=m
 #
 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
@@ -3811,6 +4296,7 @@ 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
@@ -3821,7 +4307,6 @@ CONFIG_DVB_TDA10071=m
 # DVB-T (terrestrial) frontends
 #
 CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
 CONFIG_DVB_CX22700=m
 CONFIG_DVB_CX22702=m
 CONFIG_DVB_DRXD=m
@@ -3841,6 +4326,9 @@ CONFIG_DVB_STV0367=m
 CONFIG_DVB_CXD2820R=m
 CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -3854,11 +4342,11 @@ 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
@@ -3873,6 +4361,11 @@ CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
 
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
 #
 # Digital terrestrial only tuners/PLL
 #
@@ -3883,19 +4376,18 @@ CONFIG_DVB_TUNER_DIB0090=m
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_DRX39XYJ=m
 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_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
 CONFIG_DVB_AF9033=m
 
@@ -3923,9 +4415,11 @@ CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
 
@@ -3935,40 +4429,66 @@ CONFIG_DRM_TTM=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
 CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
 CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_I915_GVT is not set
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+CONFIG_DRM_VGEM=m
 CONFIG_DRM_VMWGFX=m
 # CONFIG_DRM_VMWGFX_FBCON is not set
 CONFIG_DRM_GMA500=m
 CONFIG_DRM_GMA600=y
 CONFIG_DRM_GMA3600=y
+# CONFIG_DRM_MEDFIELD is not set
 CONFIG_DRM_UDL=m
 CONFIG_DRM_AST=m
 CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
 CONFIG_FB_DDC=m
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
@@ -4050,11 +4570,10 @@ CONFIG_FB_GEODE=y
 CONFIG_FB_GEODE_LX=m
 CONFIG_FB_GEODE_GX=m
 CONFIG_FB_GEODE_GX1=m
-# CONFIG_FB_TMIO is not set
 # CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
 CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
@@ -4062,7 +4581,7 @@ CONFIG_FB_UDL=m
 # CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_HYPERV=m
 CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
@@ -4071,16 +4590,16 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_LM3533 is not set
 # CONFIG_BACKLIGHT_CARILLO_RANCH is not set
 CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
 # CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
-# CONFIG_BACKLIGHT_OT200 is not set
 # CONFIG_BACKLIGHT_GPIO is not set
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
 
 #
 # Console display driver support
@@ -4089,6 +4608,8 @@ CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_MDA_CONSOLE=m
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
@@ -4105,25 +4626,27 @@ CONFIG_SND_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 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_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
 CONFIG_SND_DEBUG=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
@@ -4232,29 +4755,6 @@ CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
 CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-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_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-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_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -4281,6 +4781,34 @@ 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_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+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_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+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_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
@@ -4290,12 +4818,21 @@ 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_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
 # CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
 CONFIG_SND_PCMCIA=y
 # CONFIG_SND_VXPOCKET is not set
 # CONFIG_SND_PDAUDIOCF is not set
@@ -4319,19 +4856,26 @@ CONFIG_HID_A4TECH=y
 # CONFIG_HID_ACRUX is not set
 CONFIG_HID_APPLE=y
 # CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
 CONFIG_HID_CHERRY=y
 CONFIG_HID_CHICONY=y
+CONFIG_HID_CORSAIR=m
 # CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
 # CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
 # CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+CONFIG_HID_GT683R=m
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4341,9 +4885,11 @@ CONFIG_HID_GYRATION=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=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 is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
@@ -4355,6 +4901,7 @@ CONFIG_HID_MONTEREY=y
 # CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
 # CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PENMOUNT=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -4362,6 +4909,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
 # CONFIG_HID_PRIMAX is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -4370,6 +4918,7 @@ CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_HYPERV_MOUSE is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
@@ -4383,6 +4932,8 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_ALPS=m
 
 #
 # USB HID support
@@ -4400,7 +4951,6 @@ CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 
 #
@@ -4411,6 +4961,8 @@ CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
@@ -4421,6 +4973,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -4429,9 +4982,7 @@ CONFIG_USB_EHCI_PCI=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_OXU210HP_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
 # CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_OHCI_HCD_PCI=y
@@ -4479,31 +5030,32 @@ 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=y
 
 #
 # 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_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
+# CONFIG_USB_DWC3_ULPI is not set
 CONFIG_USB_DWC3_HOST=y
 
 #
 # Platform Glue Driver Support
 #
-# CONFIG_USB_DWC3_EXYNOS is not set
 CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
 # CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
 
 #
 # USB port drivers
@@ -4559,7 +5111,6 @@ CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OPTICON is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
@@ -4574,7 +5125,6 @@ CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
 # CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
@@ -4591,6 +5141,10 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
 CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+CONFIG_USB_CHAOSKEY=m
+CONFIG_UCSI=y
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
@@ -4601,22 +5155,20 @@ CONFIG_USB_XUSBATM=m
 # USB Physical Layer drivers
 #
 CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
 # CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
 # CONFIG_USB_GPIO_VBUS is not set
+CONFIG_TAHVO_USB=m
+# CONFIG_TAHVO_USB_HOST_BY_DEFAULT is not set
 # CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
 # CONFIG_USB_GADGET is not set
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=m
 # CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
 
 #
 # MMC/SD/SDIO Card Drivers
@@ -4635,8 +5187,6 @@ CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_ACPI=m
 CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
 # CONFIG_MMC_SDRICOH_CS is not set
@@ -4644,7 +5194,10 @@ 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=m
+CONFIG_MMC_TOSHIBA_PCI=m
+CONFIG_MMC_MTK=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -4664,6 +5217,7 @@ CONFIG_MEMSTICK_R592=m
 CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS_FLASH=m
 
 #
 # LED drivers
@@ -4671,26 +5225,34 @@ CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3533=m
 CONFIG_LEDS_LM3642=m
+CONFIG_LEDS_NET48XX=m
+CONFIG_LEDS_WRAP=m
 CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
 CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
+CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
 CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_TLC591XX=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
 CONFIG_LEDS_BLINKM=m
 
 #
@@ -4699,6 +5261,7 @@ CONFIG_LEDS_BLINKM=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
 CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
 CONFIG_LEDS_TRIGGER_CPU=y
@@ -4710,15 +5273,19 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 #
 CONFIG_LEDS_TRIGGER_TRANSIENT=m
 CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
 CONFIG_EDAC=y
 # CONFIG_EDAC_LEGACY_SYSFS is not set
 # CONFIG_EDAC_DEBUG is not set
 CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
 CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 # CONFIG_EDAC_AMD76X is not set
 # CONFIG_EDAC_E7XXX is not set
 CONFIG_EDAC_E752X=m
@@ -4726,6 +5293,7 @@ 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
@@ -4735,10 +5303,12 @@ CONFIG_EDAC_I5000=m
 CONFIG_EDAC_I5100=m
 CONFIG_EDAC_I7300=m
 CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -4753,18 +5323,21 @@ CONFIG_RTC_INTF_DEV=y
 #
 # I2C RTC drivers
 #
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
 CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+CONFIG_RTC_DRV_DS1307_CENTURY=y
 CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
@@ -4772,23 +5345,37 @@ CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 # CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
 
 #
 # SPI RTC drivers
 #
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 
 #
 # Platform RTC drivers
 #
 CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_VRTC=y
 CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
 CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
 CONFIG_RTC_DRV_STK17TA8=m
 # CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
@@ -4797,12 +5384,10 @@ CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4814,23 +5399,29 @@ CONFIG_DMADEVICES=y
 #
 # DMA Devices
 #
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_ACPI=y
+CONFIG_INTEL_IDMA64=m
+CONFIG_PCH_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
+CONFIG_HSU_DMA_PCI=y
 
 #
 # DMA Clients
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
-CONFIG_DMA_ENGINE_RAID=y
-CONFIG_DCA=m
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
@@ -4840,8 +5431,10 @@ CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
 # CONFIG_UIO_MF624 is not set
 # CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -4849,7 +5442,9 @@ CONFIG_VIRTIO=y
 # Virtio drivers
 #
 CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
 CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
 CONFIG_VIRTIO_MMIO=m
 # CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
 
@@ -4860,33 +5455,17 @@ CONFIG_HYPERV=m
 CONFIG_HYPERV_UTILS=m
 CONFIG_HYPERV_BALLOON=m
 CONFIG_STAGING=y
-CONFIG_ET131X=m
 CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
 # CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
 # CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
 
 #
 # IIO staging drivers
@@ -4899,9 +5478,7 @@ CONFIG_RTS5139=m
 #
 # Analog to digital converters
 #
-# CONFIG_AD7291 is not set
 # CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
 
 #
 # Analog digital bi-direction converters
@@ -4936,11 +5513,6 @@ CONFIG_RTS5139=m
 # CONFIG_TSL2583 is not set
 # CONFIG_TSL2x7x is not set
 
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
 #
 # Active energy metering IC
 #
@@ -4953,48 +5525,45 @@ CONFIG_RTS5139=m
 #
 # Triggers - standalone
 #
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+CONFIG_FB_SM750=m
 # CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
 
 #
 # Speakup console speech
 #
 # CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
 
 #
 # Android
 #
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
 CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
 # CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
+CONFIG_ALIENWARE_WMI=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_RBTN=m
 CONFIG_FUJITSU_LAPTOP=m
 # CONFIG_FUJITSU_LAPTOP_DEBUG is not set
 # CONFIG_FUJITSU_TABLET is not set
@@ -5022,15 +5591,26 @@ CONFIG_EEEPC_LAPTOP=m
 CONFIG_ASUS_WMI=m
 CONFIG_ASUS_NB_WMI=m
 CONFIG_EEEPC_WMI=m
+CONFIG_ASUS_WIRELESS=m
 CONFIG_ACPI_WMI=m
 CONFIG_MSI_WMI=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
 CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_HID_EVENT=m
+CONFIG_INTEL_VBTN=m
+CONFIG_INTEL_SCU_IPC=y
+CONFIG_INTEL_SCU_IPC_UTIL=y
+# CONFIG_GPIO_INTEL_PMIC is not set
+# CONFIG_INTEL_MID_POWER_BUTTON is not set
+# CONFIG_INTEL_MFLD_THERMAL is not set
 CONFIG_INTEL_IPS=m
+CONFIG_INTEL_IMR=y
+# CONFIG_INTEL_PMC_CORE is not set
 # CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
@@ -5039,6 +5619,9 @@ CONFIG_SAMSUNG_Q10=m
 CONFIG_INTEL_RST=m
 # CONFIG_INTEL_SMARTCONNECT is not set
 CONFIG_PVPANIC=m
+CONFIG_INTEL_PMC_IPC=m
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_INTEL_PUNIT_IPC=m
 # CONFIG_CHROME_PLATFORMS is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
@@ -5048,19 +5631,42 @@ CONFIG_COMMON_CLK=y
 # Common Clock Framework
 #
 # CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
 
 #
 # Hardware Spinlock drivers
 #
+
+#
+# Clock Source drivers
+#
 CONFIG_CLKSRC_I8253=y
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+CONFIG_DW_APB_TIMER=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
 # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 
@@ -5072,51 +5678,132 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 #
 # Rpmsg drivers
 #
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+CONFIG_DEVFREQ_GOV_PERFORMANCE=m
+CONFIG_DEVFREQ_GOV_POWERSAVE=m
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+CONFIG_DEVFREQ_GOV_PASSIVE=m
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
 CONFIG_MEMORY=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
 
 #
 # Accelerometers
 #
 # CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
 
 #
 # Analog to digital converters
 #
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MCP3422 is not set
 # CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
+# CONFIG_STX104 is not set
 # CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
 #
 # Amplifiers
 #
 
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
 #
 # Hid Sensor IIO Common
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
 
+#
+# SSP Sensor Common
+#
+
 #
 # Digital to analog converters
 #
 # CONFIG_AD5064 is not set
 # CONFIG_AD5380 is not set
 # CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_CIO_DAC is not set
+# CONFIG_M62332 is not set
 # CONFIG_MAX517 is not set
 # CONFIG_MCP4725 is not set
 
+#
+# IIO dummy driver
+#
+
 #
 # Frequency Synthesizers DDS/PLL
 #
@@ -5132,47 +5819,90 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 #
 # Digital gyroscope sensors
 #
+# CONFIG_BMG160 is not set
 # CONFIG_HID_SENSOR_GYRO_3D is not set
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
 #
 # Humidity sensors
 #
+# CONFIG_AM2315 is not set
 # CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
 
 #
 # Inertial measurement units
 #
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
 
 #
 # Light sensors
 #
+# CONFIG_ACPI_ALS is not set
 # CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
 # CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
 # CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
 # CONFIG_CM36651 is not set
 # CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
 # CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
 # CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
 # CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
 # CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
 # CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
 
 #
 # Inclinometer sensors
 #
 # CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
 
 #
 # Triggers - standalone
@@ -5180,34 +5910,100 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
 # CONFIG_IIO_SYSFS_TRIGGER is not set
 
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
 #
 # Pressure sensors
 #
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
 # CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
 # CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
 
 #
 # Temperature sensors
 #
+# CONFIG_MLX90614 is not set
 # CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
 # CONFIG_NTB is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
 # CONFIG_IPACK_BUS is not set
 CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
 # CONFIG_FMC is not set
 
 #
 # PHY Subsystem
 #
 CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_TUSB1210 is not set
 # CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
 
 #
 # Firmware Drivers
 #
+# CONFIG_ARM_SCPI_PROTOCOL is not set
 CONFIG_EDD=m
 # CONFIG_EDD_OFF is not set
 CONFIG_FIRMWARE_MEMMAP=y
@@ -5218,26 +6014,36 @@ 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_GOOGLE_FIRMWARE is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
 #
 CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_BOOTLOADER_CONTROL=m
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
 CONFIG_UEFI_CPER=y
 
 #
 # File systems
 #
 CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_ENCRYPTION=y
+CONFIG_EXT4_FS_ENCRYPTION=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
@@ -5264,9 +6070,14 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_DEBUG is not set
 CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS_BLOCK_OPS=y
 CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
@@ -5283,6 +6094,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
 
 #
 # Caches
@@ -5313,6 +6125,7 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 # CONFIG_NTFS_FS is not set
 
 #
@@ -5321,6 +6134,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 CONFIG_PROC_FS=y
 # CONFIG_PROC_KCORE is not set
 CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
@@ -5328,7 +6143,9 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
 CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
 # CONFIG_ECRYPT_FS is not set
@@ -5348,14 +6165,16 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
 # CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
 # CONFIG_PSTORE_FTRACE is not set
 # CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
 CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
@@ -5369,6 +6188,7 @@ CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
 CONFIG_NFS_V4_1_MIGRATION=y
 CONFIG_NFS_V4_SECURITY_LABEL=y
@@ -5381,8 +6201,13 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 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_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -5404,6 +6229,7 @@ CONFIG_CIFS_ACL=y
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_CIFS_DFS_UPCALL=y
 CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
 CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -5471,7 +6297,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 # printk and dmesg options
 #
 # CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
@@ -5485,9 +6311,11 @@ CONFIG_FRAME_WARN=2048
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -5497,6 +6325,11 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_POISONING=y
+# CONFIG_PAGE_POISONING_NO_SANITY is not set
+CONFIG_PAGE_POISONING_ZERO=y
+CONFIG_DEBUG_PAGE_REF=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
@@ -5523,18 +6356,21 @@ CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
 # CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
 CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
 CONFIG_TIMER_STATS=y
 
 #
 # Lock Debugging (spinlocks, mutexes, etc...)
 #
 # CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
@@ -5543,11 +6379,12 @@ CONFIG_TIMER_STATS=y
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
@@ -5555,22 +6392,23 @@ CONFIG_DEBUG_LIST=y
 #
 # RCU Debugging
 #
+# CONFIG_PROVE_RCU is not set
 # CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
@@ -5589,6 +6427,7 @@ CONFIG_FUNCTION_TRACER=y
 CONFIG_FUNCTION_GRAPH_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
 CONFIG_FTRACE_SYSCALLS=y
 CONFIG_TRACER_SNAPSHOT=y
 # CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
@@ -5605,8 +6444,12 @@ CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 # CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
 
 #
 # Runtime Testing
@@ -5614,26 +6457,44 @@ CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_LKDTM is not set
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_RBTREE_TEST=m
+# CONFIG_RBTREE_TEST is not set
 # CONFIG_INTERVAL_TREE_TEST is not set
 # CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_HEXDUMP is not set
 # CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
 # CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
 # CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
 CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
 CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
 CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
 # CONFIG_DEBUG_TLBFLUSH is not set
@@ -5651,8 +6512,11 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0
 CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
 CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
 # CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+# CONFIG_DEBUG_IMR_SELFTEST is not set
+# CONFIG_X86_DEBUG_FPU is not set
+# CONFIG_PUNIT_ATOM_DEBUG is not set
 
 #
 # Security options
@@ -5662,7 +6526,6 @@ CONFIG_OPTIMIZE_INLINING=y
 # Grsecurity
 #
 CONFIG_ARCH_TRACK_EXEC_LIMIT=y
-CONFIG_PAX_USERCOPY_SLABS=y
 CONFIG_GRKERNSEC=y
 # CONFIG_GRKERNSEC_CONFIG_AUTO is not set
 CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
@@ -5698,7 +6561,6 @@ CONFIG_PAX_MPROTECT=y
 # CONFIG_PAX_MPROTECT_COMPAT is not set
 CONFIG_PAX_ELFRELOCS=y
 # CONFIG_PAX_KERNEXEC is not set
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
 
 #
 # Address Space Layout Randomization
@@ -5719,7 +6581,10 @@ CONFIG_PAX_REFCOUNT=y
 CONFIG_PAX_USERCOPY=y
 # CONFIG_PAX_USERCOPY_DEBUG is not set
 # CONFIG_PAX_SIZE_OVERFLOW is not set
-# CONFIG_PAX_LATENT_ENTROPY is not set
+CONFIG_PAX_INITIFY=y
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
+# CONFIG_PAX_INITIFY_VERBOSE is not set
+CONFIG_PAX_LATENT_ENTROPY=y
 
 #
 # Memory Protections
@@ -5727,6 +6592,7 @@ CONFIG_PAX_USERCOPY=y
 # CONFIG_GRKERNSEC_KMEM is not set
 CONFIG_GRKERNSEC_VM86=y
 # CONFIG_GRKERNSEC_IO is not set
+CONFIG_GRKERNSEC_BPF_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
@@ -5795,6 +6661,7 @@ CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
 CONFIG_GRKERNSEC_HARDEN_IPC=y
+CONFIG_GRKERNSEC_HARDEN_TTY=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
@@ -5822,19 +6689,25 @@ CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
 # CONFIG_PERSISTENT_KEYRINGS is not set
 # CONFIG_BIG_KEYS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
 CONFIG_SECURITY_DMESG_RESTRICT=y
 CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
+# CONFIG_SECURITYFS is not set
 CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
 # CONFIG_SECURITY_PATH is not set
 # CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
 # CONFIG_SECURITY_SELINUX is not set
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
 # CONFIG_IMA is not set
 # CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
@@ -5850,7 +6723,6 @@ CONFIG_CRYPTO=y
 #
 # Crypto core or helper
 #
-CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=y
@@ -5861,17 +6733,25 @@ CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_USER is not set
 # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_ABLK_HELPER=y
@@ -5882,18 +6762,21 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=m
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
 CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
 
 #
 # Block modes
 #
 CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_CTS=y
 CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=y
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
 
 #
 # Hash modes
@@ -5912,6 +6795,7 @@ CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32_PCLMUL=m
 CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
@@ -5922,6 +6806,7 @@ CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
 
@@ -5943,7 +6828,8 @@ CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
-# CONFIG_CRYPTO_SALSA20_586 is not set
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_CHACHA20=m
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_SERPENT_SSE2_586=m
@@ -5956,8 +6842,8 @@ CONFIG_CRYPTO_TWOFISH_586=m
 # Compression
 #
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_842=m
 CONFIG_CRYPTO_LZ4=m
 CONFIG_CRYPTO_LZ4HC=m
 
@@ -5965,38 +6851,61 @@ CONFIG_CRYPTO_LZ4HC=m
 # 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=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
 CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+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_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
 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_APIC_ARCHITECTURE=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_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
 CONFIG_KVM_MMU_AUDIT=y
 CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
 # CONFIG_LGUEST is not set
 CONFIG_BINARY_PRINTF=y
 
@@ -6005,6 +6914,8 @@ CONFIG_BINARY_PRINTF=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_NET_UTILS=y
@@ -6027,7 +6938,10 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 # CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_842_COMPRESS=m
+CONFIG_842_DECOMPRESS=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
@@ -6055,19 +6969,22 @@ CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=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_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
 CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
 # CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
 CONFIG_UCS2_STRING=y
@@ -6075,3 +6992,8 @@ CONFIG_FONT_SUPPORT=y
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
index b4e34b2d1b02a2346f0243557f7155f3156857f1..510add1c5a2939bfa636bb372db275a162508008 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -10,8 +10,11 @@ CONFIG_OUTPUT_FORMAT="elf32-i386"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
@@ -22,7 +25,6 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_ARCH_HAS_CPU_RELAX=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
 CONFIG_HAVE_SETUP_PER_CPU_AREA=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
@@ -30,18 +32,18 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
-# CONFIG_ZONE_DMA32 is not set
-# CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
 CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
 CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=3
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
 
 #
 # General setup
@@ -69,8 +71,10 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
@@ -82,13 +86,17 @@ CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_KTIME_SCALAR=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
 CONFIG_GENERIC_CMOS_UPDATE=y
@@ -106,7 +114,7 @@ CONFIG_HIGH_RES_TIMERS=y
 #
 # CPU/Task time and stats accounting
 #
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
 CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -119,38 +127,35 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
 CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
 # CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 # CONFIG_CFS_BANDWIDTH is not set
 CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
@@ -168,18 +173,26 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_PCSPKR_PLATFORM=y
@@ -189,9 +202,12 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 
@@ -206,14 +222,17 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
 CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 CONFIG_OPROFILE_NMI_TIMER=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
 CONFIG_ARCH_USE_BUILTIN_BSWAP=y
@@ -223,8 +242,9 @@ CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
@@ -243,23 +263,38 @@ CONFIG_HAVE_CMPXCHG_DOUBLE=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
 CONFIG_CC_STACKPROTECTOR_REGULAR=y
 # CONFIG_CC_STACKPROTECTOR_STRONG is not set
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
-CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
 CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+# CONFIG_HAVE_ARCH_HASH is not set
+CONFIG_ISA_BUS_API=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+# CONFIG_HAVE_ARCH_VMAP_STACK is not set
 
 #
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -271,7 +306,9 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
@@ -304,6 +341,7 @@ CONFIG_LDM_PARTITION=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
 # CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_PCI=y
 
 #
 # IO Schedulers
@@ -326,6 +364,12 @@ 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_FREEZER=y
 
 #
@@ -333,19 +377,23 @@ CONFIG_FREEZER=y
 #
 CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
 CONFIG_X86_MPPARSE=y
 CONFIG_X86_BIGSMP=y
+# CONFIG_GOLDFISH is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
 # CONFIG_X86_INTEL_MID is not set
+CONFIG_X86_INTEL_QUARK=y
 CONFIG_X86_INTEL_LPSS=y
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
 # CONFIG_X86_RDC321X is not set
 CONFIG_X86_32_NON_STANDARD=y
-# CONFIG_X86_NUMAQ is not set
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
 # CONFIG_STA2X11 is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_ES7000 is not set
 CONFIG_X86_32_IRIS=m
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
 CONFIG_HYPERVISOR_GUEST=y
@@ -354,9 +402,7 @@ CONFIG_PARAVIRT=y
 # CONFIG_PARAVIRT_SPINLOCKS is not set
 CONFIG_XEN=y
 CONFIG_XEN_DOM0=y
-CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=64
 CONFIG_XEN_SAVE_RESTORE=y
 CONFIG_XEN_DEBUG_FS=y
 CONFIG_KVM_GUEST=y
@@ -365,7 +411,6 @@ CONFIG_KVM_GUEST=y
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
 CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
 # CONFIG_M486 is not set
 # CONFIG_M586 is not set
 # CONFIG_M586TSC is not set
@@ -420,7 +465,6 @@ CONFIG_SCHED_MC=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -431,16 +475,23 @@ CONFIG_X86_MCE_AMD=y
 CONFIG_X86_MCE_THRESHOLD=y
 # CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
-CONFIG_VM86=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_X86_LEGACY_VM86 is not set
+# CONFIG_VM86 is not set
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
 # CONFIG_X86_REBOOTFIXUPS is not set
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
 # CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
@@ -458,7 +509,7 @@ CONFIG_ARCH_DMA_ADDR_T_64BIT=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_ILLEGAL_POINTER_VALUE=0xfffff000
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_SPARSEMEM_MANUAL is not set
@@ -470,14 +521,13 @@ CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
 CONFIG_ARCH_DISCARD_MEMBLOCK=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_PAGEFLAGS_EXTENDED=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_MIGRATION=y
 CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
 CONFIG_MMU_NOTIFIER=y
@@ -488,12 +538,19 @@ CONFIG_MEMORY_FAILURE=y
 CONFIG_TRANSPARENT_HUGEPAGE=y
 CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
 # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
 # CONFIG_ZBUD is not set
 # CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
+CONFIG_X86_PMEM_LEGACY=m
 CONFIG_HIGHPTE=y
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
@@ -507,6 +564,7 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
@@ -520,14 +578,14 @@ CONFIG_SCHED_HRTICK=y
 CONFIG_CRASH_DUMP=y
 CONFIG_PHYSICAL_START=0x400000
 CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
 CONFIG_X86_NEED_RELOCS=y
 CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
 # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
 # CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_CMDLINE_BOOL is not set
-# CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_DEFAULT_MODIFY_LDT_SYSCALL=y
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
 #
@@ -535,20 +593,25 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
 CONFIG_HIBERNATE_CALLBACKS=y
+# CONFIG_HIBERNATION is not set
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
 # CONFIG_PM_AUTOSLEEP is not set
 # CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_CLK=y
 # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 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_SLEEP=y
-CONFIG_ACPI_PROCFS=y
 # CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
 CONFIG_ACPI_EC_DEBUGFS=m
 CONFIG_ACPI_AC=y
 CONFIG_ACPI_BATTERY=y
@@ -556,28 +619,42 @@ CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
 CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
 CONFIG_ACPI_SBS=m
 CONFIG_ACPI_HED=y
 CONFIG_ACPI_CUSTOM_METHOD=m
 # CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+CONFIG_ACPI_NFIT=m
+# CONFIG_ACPI_NFIT_DEBUG 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 is not set
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
 CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=y
@@ -591,22 +668,25 @@ CONFIG_APM_CPU_IDLE=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=m
+CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
 
 #
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=m
@@ -637,7 +717,6 @@ CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
 # CPU Idle
 #
 CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
@@ -668,7 +747,11 @@ CONFIG_PCIEASPM_DEFAULT=y
 # CONFIG_PCIEASPM_POWERSAVE is not set
 # CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
 CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 CONFIG_PCI_STUB=y
@@ -677,13 +760,22 @@ CONFIG_HT_IRQ=y
 CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 # CONFIG_PCI_PRI is not set
-# CONFIG_PCI_PASID is not set
-CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_PASID=y
 CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
 
 #
 # PCI host controller drivers
 #
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+# CONFIG_ISA_BUS is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
@@ -718,13 +810,6 @@ CONFIG_I82365=m
 CONFIG_TCIC=m
 CONFIG_PCMCIA_PROBE=y
 CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_IBM is not set
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
 CONFIG_X86_SYSFB=y
 
@@ -732,15 +817,17 @@ CONFIG_X86_SYSFB=y
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 CONFIG_BINFMT_SCRIPT=y
 CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_MISC=y
 CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
 CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
 
 #
 # Networking options
@@ -778,6 +865,9 @@ 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_IPCOMP=m
@@ -786,10 +876,10 @@ CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_CUBIC=y
@@ -798,11 +888,15 @@ CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
 CONFIG_TCP_CONG_HYBLA=m
 CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
 CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -815,6 +909,7 @@ CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
 CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
 CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -827,6 +922,8 @@ 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
@@ -834,6 +931,7 @@ CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_NETLABEL is not set
 CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
@@ -843,11 +941,13 @@ CONFIG_BRIDGE_NETFILTER=y
 #
 # Core Netfilter Configuration
 #
+CONFIG_NETFILTER_INGRESS=y
 CONFIG_NETFILTER_NETLINK=y
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
@@ -874,7 +974,7 @@ 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_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_PROTO_DCCP=m
@@ -885,22 +985,32 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=y
 CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
 CONFIG_NFT_EXTHDR=m
 CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
 CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -927,6 +1037,7 @@ CONFIG_NETFILTER_XT_TARGET_LED=m
 CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=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
@@ -997,9 +1108,11 @@ 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_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -1028,6 +1141,8 @@ 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
@@ -1052,12 +1167,24 @@ CONFIG_IP_VS_PE_SIP=m
 #
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
 CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1066,15 +1193,10 @@ CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
 CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
@@ -1092,8 +1214,16 @@ CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1111,10 +1241,13 @@ CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1135,7 +1268,6 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
@@ -1145,6 +1277,7 @@ CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
 # 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 is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
@@ -1165,9 +1298,12 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -1179,8 +1315,8 @@ CONFIG_LLC=y
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
 # CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1228,6 +1364,8 @@ CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
 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
@@ -1247,28 +1385,49 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
 CONFIG_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
 CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
 CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_CLASSID=y
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
@@ -1283,6 +1442,7 @@ CONFIG_NET_FLOW_LIMIT=y
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 CONFIG_BT=m
+CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1290,11 +1450,22 @@ 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_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
 
 #
 # 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_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
@@ -1302,6 +1473,11 @@ 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_BCM=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
@@ -1315,6 +1491,8 @@ CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
 # CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1325,12 +1503,13 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 # CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB 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
@@ -1338,9 +1517,9 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1348,6 +1527,7 @@ CONFIG_MAC80211_LEDS=y
 # CONFIG_MAC80211_DEBUGFS is not set
 # CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
@@ -1357,6 +1537,10 @@ CONFIG_RFKILL_GPIO=m
 # CONFIG_CAIF is not set
 # CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
 
 #
 # Device Drivers
@@ -1365,6 +1549,7 @@ CONFIG_RFKILL_GPIO=m
 #
 # Generic Driver Options
 #
+CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
@@ -1374,14 +1559,22 @@ CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+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_SYS_HYPERVISOR=y
 # CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
 
 #
 # Bus devices
@@ -1389,6 +1582,7 @@ CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
+# CONFIG_OF is not set
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
@@ -1425,13 +1619,11 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
 # CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
 # CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_XEN_BLKDEV_FRONTEND=m
@@ -1440,13 +1632,17 @@ CONFIG_VIRTIO_BLK=m
 # CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_RBD is not set
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
 
 #
 # Misc devices
 #
 CONFIG_SENSORS_LIS3LV02D=m
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
@@ -1454,7 +1650,6 @@ CONFIG_IBM_ASM=m
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_CS5535_MFGPT=m
 CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
@@ -1464,17 +1659,15 @@ CONFIG_HP_ILO=m
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29020 is not set
 # CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
 # CONFIG_SENSORS_BH1770 is not set
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
 # CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
 # CONFIG_C2PORT is not set
 
 #
@@ -1500,8 +1693,21 @@ CONFIG_TI_ST=m
 CONFIG_ALTERA_STAPL=m
 # CONFIG_INTEL_MEI is not set
 # CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
 CONFIG_VMWARE_VMCI=m
 
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
 #
 # Intel MIC Host Driver
 #
@@ -1509,6 +1715,21 @@ CONFIG_VMWARE_VMCI=m
 #
 # Intel MIC Card Driver
 #
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1519,8 +1740,8 @@ CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -1534,7 +1755,6 @@ CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SCAN_ASYNC=y
@@ -1544,14 +1764,12 @@ CONFIG_SCSI_SCAN_ASYNC=y
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
 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
-CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1564,7 +1782,6 @@ CONFIG_BLK_DEV_3W_XXXX_RAID=m
 CONFIG_SCSI_HPSA=m
 CONFIG_SCSI_3W_9XXX=m
 CONFIG_SCSI_3W_SAS=m
-CONFIG_SCSI_7000FASST=m
 CONFIG_SCSI_ACARD=m
 CONFIG_SCSI_AHA152X=m
 CONFIG_SCSI_AHA1542=m
@@ -1590,7 +1807,6 @@ CONFIG_SCSI_MVSAS_TASKLET=y
 CONFIG_SCSI_MVUMI=m
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
 CONFIG_SCSI_ARCMSR=m
 CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
@@ -1598,26 +1814,29 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=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_DWC_TC_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 # CONFIG_SCSI_FLASHPOINT is not set
 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_DTC3280=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
 # CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
@@ -1627,7 +1846,6 @@ CONFIG_SCSI_GDTH=m
 CONFIG_SCSI_ISCI=m
 CONFIG_SCSI_GENERIC_NCR5380=m
 CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-# CONFIG_SCSI_GENERIC_NCR53C400 is not set
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -1645,7 +1863,6 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
 CONFIG_SCSI_IPR=m
 CONFIG_SCSI_IPR_TRACE=y
 CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_PAS16=m
 CONFIG_SCSI_QLOGIC_FAS=m
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
@@ -1655,18 +1872,12 @@ CONFIG_SCSI_LPFC=m
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
-# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_AM53C974=m
 CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_WD719X=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_CHELSIO_FCOE=m
@@ -1714,11 +1925,12 @@ CONFIG_ATA_BMDMA=y
 # SATA SFF controllers with BMDMA
 #
 CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1731,7 +1943,6 @@ CONFIG_SATA_VITESSE=m
 #
 CONFIG_PATA_ALI=m
 CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
 CONFIG_PATA_ARTOP=m
 CONFIG_PATA_ATIIXP=m
 CONFIG_PATA_ATP867X=m
@@ -1800,22 +2011,25 @@ CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
 CONFIG_DM_MIRROR=y
 CONFIG_DM_LOG_USERSPACE=m
 CONFIG_DM_RAID=m
@@ -1827,7 +2041,9 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
 CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1845,16 +2061,6 @@ CONFIG_FIREWIRE_OHCI=m
 CONFIG_FIREWIRE_SBP2=m
 # CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
 CONFIG_MACINTOSH_DRIVERS=y
 # CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
@@ -1868,11 +2074,14 @@ CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
 CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
@@ -1881,9 +2090,11 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
 CONFIG_NLMON=m
+CONFIG_NET_VRF=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1920,18 +2131,19 @@ CONFIG_ATM_SOLOS=m
 #
 # CAIF transport drivers
 #
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
 
 #
 # Distributed Switch Architecture drivers
 #
-CONFIG_NET_DSA_MV88E6XXX=y
 CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
@@ -1943,9 +2155,14 @@ 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_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_LANCE=m
@@ -1959,33 +2176,39 @@ CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
 CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
 CONFIG_MACB=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_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_CS89x0=m
 # CONFIG_CS89x0_PLATFORM is not set
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
 CONFIG_DNET=m
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_TULIP=y
@@ -2007,6 +2230,8 @@ CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
 CONFIG_NET_VENDOR_EMULEX=y
 CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
 CONFIG_NET_VENDOR_EXAR=y
 CONFIG_S2IO=m
 CONFIG_VXGE=m
@@ -2019,23 +2244,22 @@ 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_IXGBEVF=m
 CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -2046,17 +2270,24 @@ CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 # CONFIG_MLX5_CORE is not set
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
 CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
 CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
 CONFIG_NET_VENDOR_8390=y
 CONFIG_PCMCIA_AXNET=m
 CONFIG_NE2000=m
@@ -2069,25 +2300,37 @@ CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
 CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
-# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
 CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=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_TUNE_TWISTER=y
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
+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
@@ -2097,6 +2340,7 @@ CONFIG_SIS190=m
 CONFIG_SFC=m
 CONFIG_SFC_MCDI_MON=y
 CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
@@ -2106,18 +2350,19 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
 CONFIG_CASSINI=m
 CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
 CONFIG_NET_VENDOR_TEHUTI=y
 CONFIG_TEHUTI=m
 CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
 CONFIG_TLAN=m
 CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
@@ -2135,30 +2380,46 @@ CONFIG_PCMCIA_XIRC2PS=m
 # CONFIG_HIPPI is not set
 # CONFIG_NET_SB1000 is not set
 CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
 
 #
 # MII PHY device drivers
 #
-CONFIG_AT803X_PHY=m
 CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
 CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
 CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
 CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
 CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2174,15 +2435,13 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
 # CONFIG_SLIP is not set
 CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
 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
@@ -2201,6 +2460,7 @@ 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
@@ -2217,30 +2477,12 @@ CONFIG_USB_NET_INT51X1=m
 CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
 CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_LIBERTAS_UAP=m
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
 CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
 # CONFIG_ATH_DEBUG is not set
 CONFIG_ATH5K=m
 CONFIG_ATH5K_DEBUG=y
@@ -2253,11 +2495,14 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
 # CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
 CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
@@ -2274,15 +2519,24 @@ CONFIG_ATH10K_PCI=m
 # CONFIG_ATH10K_TRACING is not set
 CONFIG_WCN36XX=m
 # CONFIG_WCN36XX_DEBUGFS 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_PCMCIA is not set
 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
@@ -2303,16 +2557,17 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 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 is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCMDBG is not set
-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_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
@@ -2324,30 +2579,34 @@ 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 is not set
 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
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
 
 #
 # Debugging Options
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+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 is not set
 CONFIG_HERMES_CACHE_FW_ON_INIT=y
@@ -2361,6 +2620,25 @@ CONFIG_P54_COMMON=m
 CONFIG_P54_USB=m
 CONFIG_P54_PCI=m
 CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+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_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
 CONFIG_RT2500PCI=m
@@ -2389,19 +2667,38 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=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 is not set
 CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX=m
@@ -2409,14 +2706,14 @@ 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_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2425,6 +2722,7 @@ CONFIG_CW1200_WLAN_SDIO=m
 CONFIG_XEN_NETDEV_FRONTEND=m
 CONFIG_XEN_NETDEV_BACKEND=m
 CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
 CONFIG_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -2510,20 +2808,12 @@ CONFIG_HISAX_ST5481=m
 CONFIG_HISAX_HFCUSB=m
 CONFIG_HISAX_HFC4S8S=m
 CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
 CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
 CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
 
 #
 # CAPI hardware drivers
@@ -2571,11 +2861,16 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
 # CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
@@ -2596,6 +2891,7 @@ CONFIG_INPUT_EVDEV=y
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
 # CONFIG_KEYBOARD_ADP5588 is not set
 # CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
@@ -2621,6 +2917,7 @@ CONFIG_KEYBOARD_LM8333=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_CYPRESS=y
@@ -2629,10 +2926,13 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
 # CONFIG_MOUSE_INPORT is not set
 # CONFIG_MOUSE_LOGIBM is not set
 # CONFIG_MOUSE_PC110PAD is not set
@@ -2646,12 +2946,15 @@ CONFIG_MOUSE_SYNAPTICS_USB=m
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
 # CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
 CONFIG_INPUT_PCSPKR=m
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_APANEL=m
 # CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
 # CONFIG_INPUT_WISTRON_BTNS is not set
 CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE2=m
@@ -2661,14 +2964,21 @@ CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
 CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
 
 #
 # Hardware I/O ports
@@ -2686,6 +2996,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2699,7 +3010,6 @@ CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
 CONFIG_SERIAL_NONSTANDARD=y
 CONFIG_ROCKETPORT=m
@@ -2715,16 +3025,18 @@ CONFIG_NOZOMI=m
 CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
 # CONFIG_DEVKMEM is not set
 
 #
 # Serial drivers
 #
+CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
 CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
 # CONFIG_SERIAL_8250_CS is not set
@@ -2740,16 +3052,22 @@ 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_FSL 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_MOXA=m
 
 #
 # Non-8250 serial port support
 #
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_JSM=m
 CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_SC16IS7XX is not set
 # CONFIG_SERIAL_TIMBERDALE is not set
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
 # CONFIG_SERIAL_ALTERA_UART is not set
@@ -2772,17 +3090,16 @@ CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
 CONFIG_NVRAM=y
 # CONFIG_DTLK is not set
 CONFIG_R3964=m
@@ -2807,6 +3124,11 @@ CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TELCLOCK is not set
 CONFIG_DEVPORT=y
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
@@ -2820,6 +3142,7 @@ CONFIG_I2C_MUX_GPIO=m
 CONFIG_I2C_MUX_PCA9541=m
 CONFIG_I2C_MUX_PCA954x=m
 CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2862,7 +3185,9 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
 # CONFIG_I2C_EG20T is not set
+CONFIG_I2C_EMEV2=m
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
@@ -2874,6 +3199,7 @@ CONFIG_I2C_SIMTEC=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -2887,13 +3213,20 @@ CONFIG_I2C_VIPERBOARD=m
 # CONFIG_I2C_PCA_ISA is not set
 CONFIG_SCx200_ACB=m
 # CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
+CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
+#
+# HSI controllers
+#
+
 #
 # HSI clients
 #
@@ -2931,67 +3264,79 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_AMD is not set
 CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_PINCTRL_CHERRYVIEW is not set
+# CONFIG_PINCTRL_BROXTON is not set
+# CONFIG_PINCTRL_SUNRISEPOINT is not set
 CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
 
 #
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
 #
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_AXP209 is not set
+# CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_F7188X=m
-CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
 CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_LYNXPOINT is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
 
 #
-# I2C GPIO expanders:
+# Port-mapped I/O GPIO drivers
+#
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_104_IDIO_16 is not set
+# CONFIG_GPIO_104_IDI_48 is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_GPIO_MM is not set
+# CONFIG_GPIO_IT87 is not set
+CONFIG_GPIO_SCH=m
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_WS16C48 is not set
+
 #
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
 # CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_TS4900 is not set
 
 #
-# PCI GPIO expanders:
+# MFD GPIO expanders
 #
 # CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
+# CONFIG_GPIO_DLN2 is not set
 
 #
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
+# PCI GPIO expanders
 #
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_RDC321X is not set
 
 #
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
 #
 
 #
-# USB GPIO expanders:
+# USB GPIO expanders
 #
 CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
@@ -3014,6 +3359,7 @@ CONFIG_W1_SLAVE_SMEM=m
 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_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
@@ -3023,6 +3369,9 @@ CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2781=m
 CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
@@ -3033,7 +3382,9 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
 # CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
 # CONFIG_CHARGER_ISP1704 is not set
@@ -3042,10 +3393,13 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
 CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -3073,29 +3427,51 @@ CONFIG_SENSORS_ASC7621=m
 CONFIG_SENSORS_K8TEMP=m
 CONFIG_SENSORS_K10TEMP=m
 CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
 CONFIG_SENSORS_I5K_AMB=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 # CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
 CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+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_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+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_LM63=m
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
@@ -3108,42 +3484,36 @@ CONFIG_SENSORS_LM87=m
 CONFIG_SENSORS_LM90=m
 CONFIG_SENSORS_LM92=m
 CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
 CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=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_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 # CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_LTC3815 is not set
 CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 # CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
 # CONFIG_SENSORS_EMC2103 is not set
@@ -3154,13 +3524,18 @@ CONFIG_SENSORS_SMSC47B397=m
 CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
 CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_VIA_CPUTEMP=m
@@ -3177,7 +3552,6 @@ CONFIG_SENSORS_W83L785TS=m
 CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
 
 #
 # ACPI drivers
@@ -3186,38 +3560,57 @@ CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INTEL_QUARK_DTS_THERMAL=m
 
 #
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
 #
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
+# CONFIG_WATCHDOG_SYSFS is not set
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
 CONFIG_DW_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_GEODE_WDT=m
-CONFIG_SC520_WDT=m
 CONFIG_SBC_FITPC2_WATCHDOG=m
 CONFIG_EUROTECH_WDT=m
 CONFIG_IB700_WDT=m
@@ -3242,12 +3635,11 @@ CONFIG_SMSC_SCH311X_WDT=m
 CONFIG_SMSC37B787_WDT=m
 CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -3268,6 +3660,11 @@ CONFIG_WDTPCI=m
 # USB-based Watchdog Cards
 #
 CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -3297,6 +3694,8 @@ 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
@@ -3306,37 +3705,62 @@ CONFIG_BCMA_DRIVER_GPIO=y
 #
 CONFIG_MFD_CORE=m
 CONFIG_MFD_CS5535=m
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
 # CONFIG_MFD_CROS_EC is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_EXYNOS_LPASS=m
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
 # CONFIG_MFD_JANZ_CMODIO is not set
 # CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_MFD_RDC321X is not set
 CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
 # CONFIG_MFD_SI476X_CORE is not set
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
 # CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
 # CONFIG_MFD_LP3943 is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
 # CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_LM3533=m
 # CONFIG_MFD_TIMBERDALE is not set
 # CONFIG_MFD_TMIO is not set
 CONFIG_MFD_VX855=m
 # CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8994 is not set
 # CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
@@ -3347,24 +3771,29 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
 CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
 CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
 CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
 CONFIG_VIDEO_DEV=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
 CONFIG_VIDEO_V4L2=m
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_PCI_SKELETON=m
 CONFIG_VIDEO_TUNER=m
 CONFIG_V4L2_MEM2MEM_DEV=m
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEOBUF2_CORE=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_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3384,12 +3813,14 @@ CONFIG_IR_RC5_DECODER=m
 CONFIG_IR_RC6_DECODER=m
 CONFIG_IR_JVC_DECODER=m
 CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_ITE_CIR=m
@@ -3398,6 +3829,7 @@ 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
@@ -3416,6 +3848,7 @@ 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
@@ -3452,6 +3885,7 @@ 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
@@ -3474,17 +3908,21 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
 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
@@ -3498,6 +3936,7 @@ CONFIG_VIDEO_TM6000_DVB=m
 #
 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=y
@@ -3532,7 +3971,6 @@ CONFIG_DVB_USB_AZ6007=m
 CONFIG_DVB_USB_CE6230=m
 CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
@@ -3542,6 +3980,7 @@ 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
@@ -3557,13 +3996,10 @@ CONFIG_MEDIA_PCI_SUPPORT=y
 # Media capture support
 #
 CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
 CONFIG_VIDEO_ZORAN=m
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_ZR36060=m
@@ -3572,9 +4008,17 @@ CONFIG_VIDEO_ZORAN_DC10=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+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
@@ -3592,17 +4036,17 @@ 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
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -3615,32 +4059,28 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
 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_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 # CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
+CONFIG_DVB_PLATFORM_DRIVERS=y
 
 #
 # Supported MMC/SDIO adapters
 #
 # CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
 # Supported FireWire (IEEE 1394) Adapters
@@ -3653,7 +4093,6 @@ CONFIG_MEDIA_COMMON_OPTIONS=y
 # common driver options
 #
 CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_CYPRESS_FIRMWARE=m
 CONFIG_DVB_B2C2_FLEXCOP=m
@@ -3663,7 +4102,7 @@ CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
 
 #
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
 #
 CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
 CONFIG_MEDIA_ATTACH=y
@@ -3672,17 +4111,18 @@ CONFIG_VIDEO_IR_I2C=m
 #
 # Audio decoders, processors and mixers
 #
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
 CONFIG_VIDEO_TDA9840=m
 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_UDA1342=m
 CONFIG_VIDEO_WM8775=m
 CONFIG_VIDEO_WM8739=m
 CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
 
 #
 # RDS decoders
@@ -3692,7 +4132,6 @@ CONFIG_VIDEO_SAA6588=m
 #
 # Video decoders
 #
-CONFIG_VIDEO_ADV7180=m
 CONFIG_VIDEO_BT819=m
 CONFIG_VIDEO_BT856=m
 CONFIG_VIDEO_BT866=m
@@ -3700,6 +4139,9 @@ CONFIG_VIDEO_KS0127=m
 CONFIG_VIDEO_SAA7110=m
 CONFIG_VIDEO_SAA711X=m
 CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
 CONFIG_VIDEO_VPX3220=m
 
 #
@@ -3719,7 +4161,9 @@ CONFIG_VIDEO_ADV7175=m
 #
 # Camera sensor devices
 #
+CONFIG_VIDEO_OV7640=m
 CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
 CONFIG_VIDEO_MT9V011=m
 
 #
@@ -3789,10 +4233,13 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=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
 
 #
 # Multistandard (satellite) frontends
@@ -3808,11 +4255,13 @@ CONFIG_DVB_M88DS3103=m
 #
 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
@@ -3833,6 +4282,7 @@ 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
@@ -3843,7 +4293,6 @@ CONFIG_DVB_TDA10071=m
 # DVB-T (terrestrial) frontends
 #
 CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
 CONFIG_DVB_CX22700=m
 CONFIG_DVB_CX22702=m
 CONFIG_DVB_DRXD=m
@@ -3863,6 +4312,9 @@ CONFIG_DVB_STV0367=m
 CONFIG_DVB_CXD2820R=m
 CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -3876,11 +4328,11 @@ 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
@@ -3895,6 +4347,11 @@ CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
 
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
 #
 # Digital terrestrial only tuners/PLL
 #
@@ -3905,19 +4362,18 @@ CONFIG_DVB_TUNER_DIB0090=m
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_DRX39XYJ=m
 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_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
 CONFIG_DVB_AF9033=m
 
@@ -3945,9 +4401,11 @@ CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
 
@@ -3957,24 +4415,33 @@ CONFIG_DRM_TTM=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
 CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
 CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_I915_GVT is not set
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+CONFIG_DRM_VGEM=m
 CONFIG_DRM_VMWGFX=m
 # CONFIG_DRM_VMWGFX_FBCON is not set
 CONFIG_DRM_GMA500=m
@@ -3986,11 +4453,27 @@ CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
 CONFIG_FB_DDC=m
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
@@ -4072,11 +4555,10 @@ CONFIG_FB_GEODE=y
 CONFIG_FB_GEODE_LX=m
 CONFIG_FB_GEODE_GX=m
 CONFIG_FB_GEODE_GX1=m
-# CONFIG_FB_TMIO is not set
 # CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
 CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_XEN_FBDEV_FRONTEND=m
 # CONFIG_FB_METRONOME is not set
@@ -4085,7 +4567,7 @@ CONFIG_XEN_FBDEV_FRONTEND=m
 # CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_HYPERV=m
 CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
@@ -4094,15 +4576,16 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_LM3533 is not set
 # CONFIG_BACKLIGHT_CARILLO_RANCH is not set
 CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
 # CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
 # CONFIG_BACKLIGHT_GPIO is not set
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
 
 #
 # Console display driver support
@@ -4111,6 +4594,8 @@ CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_MDA_CONSOLE=m
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
@@ -4127,25 +4612,27 @@ CONFIG_SND_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 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_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
 CONFIG_SND_DEBUG=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
@@ -4254,29 +4741,6 @@ CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
 CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-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_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-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_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -4303,6 +4767,34 @@ 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_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+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_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+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_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
@@ -4312,12 +4804,21 @@ 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 is not set
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_DICE=m
+CONFIG_SND_OXFW=m
 # CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
 CONFIG_SND_PCMCIA=y
 # CONFIG_SND_VXPOCKET is not set
 # CONFIG_SND_PDAUDIOCF is not set
@@ -4341,19 +4842,26 @@ CONFIG_HID_A4TECH=y
 # CONFIG_HID_ACRUX is not set
 CONFIG_HID_APPLE=y
 # CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
 CONFIG_HID_CHERRY=y
 CONFIG_HID_CHICONY=y
+CONFIG_HID_CORSAIR=m
 # CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
 # CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
 # CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+CONFIG_HID_GT683R=m
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4363,9 +4871,11 @@ CONFIG_HID_GYRATION=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=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 is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
@@ -4377,6 +4887,7 @@ CONFIG_HID_MONTEREY=y
 # CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
 # CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PENMOUNT=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -4384,6 +4895,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
 # CONFIG_HID_PRIMAX is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -4392,6 +4904,7 @@ CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_HYPERV_MOUSE is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
@@ -4405,6 +4918,8 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_ALPS=m
 
 #
 # USB HID support
@@ -4422,7 +4937,6 @@ CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 
 #
@@ -4433,6 +4947,8 @@ CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
@@ -4443,6 +4959,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -4451,12 +4968,10 @@ CONFIG_USB_EHCI_PCI=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_OXU210HP_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
 # CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_PCI=m
+CONFIG_USB_OHCI_HCD_PCI=y
 CONFIG_USB_OHCI_HCD_PLATFORM=y
 CONFIG_USB_UHCI_HCD=y
 # CONFIG_USB_U132_HCD is not set
@@ -4501,31 +5016,32 @@ 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=y
 
 #
 # 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_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
+# CONFIG_USB_DWC3_ULPI is not set
 CONFIG_USB_DWC3_HOST=y
 
 #
 # Platform Glue Driver Support
 #
-# CONFIG_USB_DWC3_EXYNOS is not set
 CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
 # CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
 
 #
 # USB port drivers
@@ -4581,7 +5097,6 @@ CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OPTICON is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
@@ -4596,7 +5111,6 @@ CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
 # CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
@@ -4613,6 +5127,10 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
 CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+CONFIG_USB_CHAOSKEY=m
+CONFIG_UCSI=y
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
@@ -4623,22 +5141,20 @@ CONFIG_USB_XUSBATM=m
 # USB Physical Layer drivers
 #
 CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
 # CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
 # CONFIG_USB_GPIO_VBUS is not set
+CONFIG_TAHVO_USB=m
+# CONFIG_TAHVO_USB_HOST_BY_DEFAULT is not set
 # CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
 # CONFIG_USB_GADGET is not set
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=m
 # CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
 
 #
 # MMC/SD/SDIO Card Drivers
@@ -4657,8 +5173,6 @@ CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_ACPI=m
 CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
 # CONFIG_MMC_SDRICOH_CS is not set
@@ -4666,7 +5180,10 @@ 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=m
+CONFIG_MMC_TOSHIBA_PCI=m
+CONFIG_MMC_MTK=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -4686,6 +5203,7 @@ CONFIG_MEMSTICK_R592=m
 CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS_FLASH=m
 
 #
 # LED drivers
@@ -4697,22 +5215,28 @@ CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
 CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
+CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
 CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_TLC591XX=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
 CONFIG_LEDS_BLINKM=m
 
 #
@@ -4721,6 +5245,7 @@ CONFIG_LEDS_BLINKM=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
 CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
 CONFIG_LEDS_TRIGGER_CPU=y
@@ -4732,15 +5257,19 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 #
 CONFIG_LEDS_TRIGGER_TRANSIENT=m
 CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
 CONFIG_EDAC=y
 # CONFIG_EDAC_LEGACY_SYSFS is not set
 # CONFIG_EDAC_DEBUG is not set
 CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
 CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 # CONFIG_EDAC_AMD76X is not set
 # CONFIG_EDAC_E7XXX is not set
 CONFIG_EDAC_E752X=m
@@ -4748,6 +5277,7 @@ 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
@@ -4757,10 +5287,12 @@ CONFIG_EDAC_I5000=m
 CONFIG_EDAC_I5100=m
 CONFIG_EDAC_I7300=m
 CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -4775,18 +5307,21 @@ CONFIG_RTC_INTF_DEV=y
 #
 # I2C RTC drivers
 #
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
 CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+CONFIG_RTC_DRV_DS1307_CENTURY=y
 CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
@@ -4794,14 +5329,24 @@ CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 # CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
 
 #
 # SPI RTC drivers
 #
+CONFIG_RTC_I2C_AND_SPI=m
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 
 #
 # Platform RTC drivers
@@ -4810,7 +5355,10 @@ CONFIG_RTC_DRV_CMOS=y
 CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
 CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
 CONFIG_RTC_DRV_STK17TA8=m
 # CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
@@ -4819,12 +5367,10 @@ CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4836,23 +5382,28 @@ CONFIG_DMADEVICES=y
 #
 # DMA Devices
 #
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_ACPI=y
+CONFIG_INTEL_IDMA64=m
+CONFIG_PCH_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
 
 #
 # DMA Clients
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
-CONFIG_DMA_ENGINE_RAID=y
-CONFIG_DCA=m
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
@@ -4862,8 +5413,10 @@ CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
 # CONFIG_UIO_MF624 is not set
 # CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -4871,7 +5424,9 @@ CONFIG_VIRTIO=y
 # Virtio drivers
 #
 CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
 CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
 CONFIG_VIRTIO_MMIO=m
 # CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
 
@@ -4902,34 +5457,22 @@ CONFIG_XEN_PCIDEV_BACKEND=m
 CONFIG_XEN_PRIVCMD=m
 CONFIG_XEN_ACPI_PROCESSOR=m
 CONFIG_XEN_HAVE_PVMMU=y
+CONFIG_XEN_AUTO_XLATE=y
+CONFIG_XEN_ACPI=y
+CONFIG_XEN_SYMS=y
+CONFIG_XEN_HAVE_VPMU=y
 CONFIG_STAGING=y
-CONFIG_ET131X=m
 CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
 # CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
 # CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
 
 #
 # IIO staging drivers
@@ -4942,9 +5485,7 @@ CONFIG_RTS5139=m
 #
 # Analog to digital converters
 #
-# CONFIG_AD7291 is not set
 # CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
 
 #
 # Analog digital bi-direction converters
@@ -4979,11 +5520,6 @@ CONFIG_RTS5139=m
 # CONFIG_TSL2583 is not set
 # CONFIG_TSL2x7x is not set
 
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
 #
 # Active energy metering IC
 #
@@ -4996,48 +5532,45 @@ CONFIG_RTS5139=m
 #
 # Triggers - standalone
 #
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+CONFIG_FB_SM750=m
 # CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
 
 #
 # Speakup console speech
 #
 # CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
 
 #
 # Android
 #
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
 CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
 # CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
+CONFIG_ALIENWARE_WMI=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_RBTN=m
 CONFIG_FUJITSU_LAPTOP=m
 # CONFIG_FUJITSU_LAPTOP_DEBUG is not set
 # CONFIG_FUJITSU_TABLET is not set
@@ -5065,15 +5598,21 @@ CONFIG_EEEPC_LAPTOP=m
 CONFIG_ASUS_WMI=m
 CONFIG_ASUS_NB_WMI=m
 CONFIG_EEEPC_WMI=m
+CONFIG_ASUS_WIRELESS=m
 CONFIG_ACPI_WMI=m
 CONFIG_MSI_WMI=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
 CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_HID_EVENT=m
+CONFIG_INTEL_VBTN=m
 CONFIG_INTEL_IPS=m
+CONFIG_INTEL_IMR=y
+# CONFIG_INTEL_PMC_CORE is not set
 # CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
@@ -5082,6 +5621,9 @@ CONFIG_SAMSUNG_Q10=m
 CONFIG_INTEL_RST=m
 # CONFIG_INTEL_SMARTCONNECT is not set
 CONFIG_PVPANIC=m
+CONFIG_INTEL_PMC_IPC=m
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_INTEL_PUNIT_IPC=m
 # CONFIG_CHROME_PLATFORMS is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
@@ -5091,19 +5633,41 @@ CONFIG_COMMON_CLK=y
 # Common Clock Framework
 #
 # CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
 
 #
 # Hardware Spinlock drivers
 #
+
+#
+# Clock Source drivers
+#
 CONFIG_CLKSRC_I8253=y
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
 # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 
@@ -5115,51 +5679,132 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 #
 # Rpmsg drivers
 #
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+CONFIG_DEVFREQ_GOV_PERFORMANCE=m
+CONFIG_DEVFREQ_GOV_POWERSAVE=m
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+CONFIG_DEVFREQ_GOV_PASSIVE=m
+
+#
+# DEVFREQ Drivers
+#
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
 CONFIG_MEMORY=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
 
 #
 # Accelerometers
 #
 # CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
 
 #
 # Analog to digital converters
 #
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MCP3422 is not set
 # CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
+# CONFIG_STX104 is not set
 # CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
 #
 # Amplifiers
 #
 
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
 #
 # Hid Sensor IIO Common
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
 
+#
+# SSP Sensor Common
+#
+
 #
 # Digital to analog converters
 #
 # CONFIG_AD5064 is not set
 # CONFIG_AD5380 is not set
 # CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_CIO_DAC is not set
+# CONFIG_M62332 is not set
 # CONFIG_MAX517 is not set
 # CONFIG_MCP4725 is not set
 
+#
+# IIO dummy driver
+#
+
 #
 # Frequency Synthesizers DDS/PLL
 #
@@ -5175,47 +5820,90 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 #
 # Digital gyroscope sensors
 #
+# CONFIG_BMG160 is not set
 # CONFIG_HID_SENSOR_GYRO_3D is not set
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
 #
 # Humidity sensors
 #
+# CONFIG_AM2315 is not set
 # CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
 
 #
 # Inertial measurement units
 #
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
 
 #
 # Light sensors
 #
+# CONFIG_ACPI_ALS is not set
 # CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
 # CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
 # CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
 # CONFIG_CM36651 is not set
 # CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
 # CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
 # CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
 # CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
 # CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
 # CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
 
 #
 # Inclinometer sensors
 #
 # CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
 
 #
 # Triggers - standalone
@@ -5223,34 +5911,105 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
 # CONFIG_IIO_SYSFS_TRIGGER is not set
 
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
 #
 # Pressure sensors
 #
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
 # CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
 # CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
 
 #
 # Temperature sensors
 #
+# CONFIG_MLX90614 is not set
 # CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
 # CONFIG_NTB is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
 # CONFIG_IPACK_BUS is not set
 CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
 # CONFIG_FMC is not set
 
 #
 # PHY Subsystem
 #
 CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_TUSB1210 is not set
 # CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_LIBNVDIMM=m
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_ND_BLK=m
+CONFIG_ND_CLAIM=y
+CONFIG_ND_BTT=m
+CONFIG_BTT=y
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
 
 #
 # Firmware Drivers
 #
+# CONFIG_ARM_SCPI_PROTOCOL is not set
 CONFIG_EDD=m
 # CONFIG_EDD_OFF is not set
 CONFIG_FIRMWARE_MEMMAP=y
@@ -5261,26 +6020,36 @@ 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_GOOGLE_FIRMWARE is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
 #
 CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_BOOTLOADER_CONTROL=m
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
 CONFIG_UEFI_CPER=y
 
 #
 # File systems
 #
 CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_ENCRYPTION=y
+CONFIG_EXT4_FS_ENCRYPTION=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
@@ -5307,9 +6076,14 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_DEBUG is not set
 CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS_BLOCK_OPS=y
 CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
@@ -5326,6 +6100,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
 
 #
 # Caches
@@ -5356,6 +6131,7 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 # CONFIG_NTFS_FS is not set
 
 #
@@ -5364,6 +6140,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 CONFIG_PROC_FS=y
 # CONFIG_PROC_KCORE is not set
 CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
@@ -5371,7 +6149,9 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
 CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
 CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
 # CONFIG_ECRYPT_FS is not set
@@ -5391,14 +6171,16 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
 # CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
 # CONFIG_PSTORE_FTRACE is not set
 # CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
 CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
@@ -5412,6 +6194,7 @@ CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
 CONFIG_NFS_V4_1_MIGRATION=y
 CONFIG_NFS_V4_SECURITY_LABEL=y
@@ -5424,8 +6207,13 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 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_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -5447,6 +6235,7 @@ CONFIG_CIFS_ACL=y
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_CIFS_DFS_UPCALL=y
 CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
 CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -5514,7 +6303,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 # printk and dmesg options
 #
 # CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
@@ -5528,9 +6317,11 @@ CONFIG_FRAME_WARN=2048
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -5540,6 +6331,11 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_POISONING=y
+# CONFIG_PAGE_POISONING_NO_SANITY is not set
+CONFIG_PAGE_POISONING_ZERO=y
+CONFIG_DEBUG_PAGE_REF=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
@@ -5566,18 +6362,21 @@ CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
 # CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
 CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
 CONFIG_TIMER_STATS=y
 
 #
 # Lock Debugging (spinlocks, mutexes, etc...)
 #
 # CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
@@ -5586,11 +6385,12 @@ CONFIG_TIMER_STATS=y
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
@@ -5598,22 +6398,23 @@ CONFIG_DEBUG_LIST=y
 #
 # RCU Debugging
 #
+# CONFIG_PROVE_RCU is not set
 # CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
@@ -5632,6 +6433,7 @@ CONFIG_FUNCTION_TRACER=y
 CONFIG_FUNCTION_GRAPH_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
 CONFIG_FTRACE_SYSCALLS=y
 CONFIG_TRACER_SNAPSHOT=y
 # CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
@@ -5648,8 +6450,12 @@ CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 # CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
 
 #
 # Runtime Testing
@@ -5657,26 +6463,44 @@ CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_LKDTM is not set
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_RBTREE_TEST=m
+# CONFIG_RBTREE_TEST is not set
 # CONFIG_INTERVAL_TREE_TEST is not set
 # CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_HEXDUMP is not set
 # CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
 # CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
 # CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
 CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
 CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
 CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
 # CONFIG_DEBUG_TLBFLUSH is not set
@@ -5694,8 +6518,11 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0
 CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
 CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
 # CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+# CONFIG_DEBUG_IMR_SELFTEST is not set
+# CONFIG_X86_DEBUG_FPU is not set
+# CONFIG_PUNIT_ATOM_DEBUG is not set
 
 #
 # Security options
@@ -5705,7 +6532,6 @@ CONFIG_OPTIMIZE_INLINING=y
 # Grsecurity
 #
 CONFIG_ARCH_TRACK_EXEC_LIMIT=y
-CONFIG_PAX_USERCOPY_SLABS=y
 CONFIG_GRKERNSEC=y
 # CONFIG_GRKERNSEC_CONFIG_AUTO is not set
 CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
@@ -5740,7 +6566,6 @@ CONFIG_PAX_EMUTRAMP=y
 CONFIG_PAX_MPROTECT=y
 # CONFIG_PAX_MPROTECT_COMPAT is not set
 CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
 
 #
 # Address Space Layout Randomization
@@ -5760,7 +6585,10 @@ CONFIG_PAX_REFCOUNT=y
 CONFIG_PAX_USERCOPY=y
 # CONFIG_PAX_USERCOPY_DEBUG is not set
 # CONFIG_PAX_SIZE_OVERFLOW is not set
-# CONFIG_PAX_LATENT_ENTROPY is not set
+CONFIG_PAX_INITIFY=y
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
+# CONFIG_PAX_INITIFY_VERBOSE is not set
+CONFIG_PAX_LATENT_ENTROPY=y
 
 #
 # Memory Protections
@@ -5768,6 +6596,7 @@ CONFIG_PAX_USERCOPY=y
 # CONFIG_GRKERNSEC_KMEM is not set
 CONFIG_GRKERNSEC_VM86=y
 # CONFIG_GRKERNSEC_IO is not set
+CONFIG_GRKERNSEC_BPF_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
@@ -5836,6 +6665,7 @@ CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
 CONFIG_GRKERNSEC_HARDEN_IPC=y
+CONFIG_GRKERNSEC_HARDEN_TTY=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
@@ -5863,19 +6693,25 @@ CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
 # CONFIG_PERSISTENT_KEYRINGS is not set
 # CONFIG_BIG_KEYS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
 CONFIG_SECURITY_DMESG_RESTRICT=y
 CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
+# CONFIG_SECURITYFS is not set
 CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
 # CONFIG_SECURITY_PATH is not set
 # CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
 # CONFIG_SECURITY_SELINUX is not set
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
 # CONFIG_IMA is not set
 # CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
@@ -5891,7 +6727,6 @@ CONFIG_CRYPTO=y
 #
 # Crypto core or helper
 #
-CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=y
@@ -5902,17 +6737,25 @@ CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_USER is not set
 # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_ABLK_HELPER=y
@@ -5923,18 +6766,21 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=m
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
 CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
 
 #
 # Block modes
 #
 CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_CTS=y
 CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=y
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
 
 #
 # Hash modes
@@ -5953,6 +6799,7 @@ CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32_PCLMUL=m
 CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
@@ -5963,6 +6810,7 @@ CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
 
@@ -5984,7 +6832,8 @@ CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
-# CONFIG_CRYPTO_SALSA20_586 is not set
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_CHACHA20=m
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_SERPENT_SSE2_586=m
@@ -5997,8 +6846,8 @@ CONFIG_CRYPTO_TWOFISH_586=m
 # Compression
 #
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_842=m
 CONFIG_CRYPTO_LZ4=m
 CONFIG_CRYPTO_LZ4HC=m
 
@@ -6006,36 +6855,60 @@ CONFIG_CRYPTO_LZ4HC=m
 # 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=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
 CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+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_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
 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_APIC_ARCHITECTURE=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_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
 CONFIG_KVM_MMU_AUDIT=y
 CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
 # CONFIG_LGUEST is not set
 CONFIG_BINARY_PRINTF=y
 
@@ -6044,6 +6917,8 @@ CONFIG_BINARY_PRINTF=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_NET_UTILS=y
@@ -6066,7 +6941,10 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 # CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_842_COMPRESS=m
+CONFIG_842_DECOMPRESS=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
@@ -6094,19 +6972,22 @@ CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=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_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
 CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
 # CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
 CONFIG_UCS2_STRING=y
@@ -6114,3 +6995,8 @@ CONFIG_FONT_SUPPORT=y
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
index 673183a4ae112be946a3c5267fd94c6a90e008d7..f977b4cf511764c7724a30d9bde1f0623d89e795 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.73 Kernel Configuration
+# Linux/x86 4.9.12-ipfire Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -10,8 +10,11 @@ CONFIG_OUTPUT_FORMAT="elf64-x86-64"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_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_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
@@ -23,7 +26,6 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_ARCH_HAS_CPU_RELAX=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
 CONFIG_HAVE_SETUP_PER_CPU_AREA=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
@@ -37,12 +39,14 @@ CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
 CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_64_SMP=y
-CONFIG_X86_HT=y
-CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
 CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_PGTABLE_LEVELS=4
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
 
 #
 # General setup
@@ -70,8 +74,10 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
@@ -82,15 +88,19 @@ CONFIG_AUDIT_TREE=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_CLOCKSOURCE_WATCHDOG=y
 CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
 CONFIG_GENERIC_CMOS_UPDATE=y
@@ -109,7 +119,7 @@ CONFIG_HIGH_RES_TIMERS=y
 #
 # CPU/Task time and stats accounting
 #
-# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
 # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
 CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_BSD_PROCESS_ACCT=y
@@ -123,40 +133,37 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
-# CONFIG_RCU_USER_QS is not set
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
-CONFIG_RCU_NOCB_CPU=y
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
-CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_NMI_LOG_BUF_SHIFT=13
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
 CONFIG_ARCH_SUPPORTS_INT128=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
 CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
 # CONFIG_MEMCG is not set
-CONFIG_CGROUP_PERF=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 # CONFIG_CFS_BANDWIDTH is not set
 CONFIG_RT_GROUP_SCHED=y
-CONFIG_BLK_CGROUP=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_DEBUG is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
@@ -174,18 +181,26 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
 CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_PCSPKR_PLATFORM=y
@@ -195,9 +210,12 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
+CONFIG_MEMBARRIER=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 
@@ -212,14 +230,17 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
 CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 CONFIG_OPROFILE_NMI_TIMER=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
+CONFIG_STATIC_KEYS_SELFTEST=y
+# CONFIG_UPROBES is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
 CONFIG_ARCH_USE_BUILTIN_BSWAP=y
@@ -229,8 +250,9 @@ CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_NMI=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
@@ -250,25 +272,45 @@ CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
 CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
+CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
 # CONFIG_CC_STACKPROTECTOR_REGULAR is not set
 CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
 CONFIG_HAVE_CONTEXT_TRACKING=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
 CONFIG_HAVE_ARCH_SOFT_DIRTY=y
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_HAVE_STACK_VALIDATION=y
+# CONFIG_HAVE_ARCH_HASH is not set
+# CONFIG_ISA_BUS_API is not set
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_COMPAT_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
 
 #
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -280,7 +322,9 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
 CONFIG_BLOCK=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
@@ -313,6 +357,7 @@ CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
 # CONFIG_CMDLINE_PARTITION is not set
 CONFIG_BLOCK_COMPAT=y
+CONFIG_BLK_MQ_PCI=y
 
 #
 # IO Schedulers
@@ -335,6 +380,12 @@ 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_FREEZER=y
 
 #
@@ -342,11 +393,20 @@ CONFIG_FREEZER=y
 #
 CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_FAST_FEATURE_TESTS=y
 # CONFIG_X86_X2APIC is not set
 CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_VSMP is not set
+# CONFIG_X86_GOLDFISH is not set
+# CONFIG_X86_INTEL_MID is not set
+# CONFIG_MLX_PLATFORM 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
@@ -355,9 +415,8 @@ CONFIG_PARAVIRT=y
 # CONFIG_PARAVIRT_SPINLOCKS is not set
 CONFIG_XEN=y
 CONFIG_XEN_DOM0=y
-CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=500
+CONFIG_XEN_512GB=y
 CONFIG_XEN_SAVE_RESTORE=y
 CONFIG_XEN_DEBUG_FS=y
 CONFIG_XEN_PVH=y
@@ -366,7 +425,6 @@ CONFIG_KVM_GUEST=y
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
 CONFIG_NO_BOOTMEM=y
-# CONFIG_MEMTEST is not set
 # CONFIG_MK8 is not set
 # CONFIG_MPSC is not set
 # CONFIG_MCORE2 is not set
@@ -397,7 +455,6 @@ CONFIG_SCHED_MC=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -407,18 +464,26 @@ CONFIG_X86_MCE_AMD=y
 CONFIG_X86_MCE_THRESHOLD=y
 # CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
+# CONFIG_VM86 is not set
+CONFIG_X86_VSYSCALL_EMULATION=y
 CONFIG_I8K=m
-CONFIG_MICROCODE=m
+CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MICROCODE_INTEL_EARLY is not set
-# CONFIG_MICROCODE_AMD_EARLY is not set
 # CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_DIRECT_GBPAGES=y
+CONFIG_X86_DIRECT_GBPAGES=y
 # CONFIG_NUMA is not set
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_DEFAULT=y
@@ -438,14 +503,13 @@ CONFIG_ARCH_DISCARD_MEMBLOCK=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 # CONFIG_MEMORY_HOTPLUG is not set
-CONFIG_PAGEFLAGS_EXTENDED=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_MIGRATION=y
 CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
 CONFIG_MMU_NOTIFIER=y
@@ -456,12 +520,21 @@ CONFIG_MEMORY_FAILURE=y
 CONFIG_TRANSPARENT_HUGEPAGE=y
 CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
 # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
 # CONFIG_ZBUD is not set
 # CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
+CONFIG_X86_PMEM_LEGACY=m
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
 CONFIG_X86_RESERVE_LOW=64
@@ -473,8 +546,11 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
+CONFIG_EFI_MIXED=y
 CONFIG_SECCOMP=y
 # CONFIG_HZ_100 is not set
 # CONFIG_HZ_250 is not set
@@ -483,16 +559,21 @@ CONFIG_HZ_300=y
 CONFIG_HZ=300
 CONFIG_SCHED_HRTICK=y
 # CONFIG_KEXEC is not set
+# CONFIG_KEXEC_FILE is not set
 CONFIG_CRASH_DUMP=y
 CONFIG_PHYSICAL_START=0x400000
 CONFIG_RELOCATABLE=y
-# CONFIG_RANDOMIZE_BASE is not set
 CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
 # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
 # CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+CONFIG_LEGACY_VSYSCALL_EMULATE=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
 # CONFIG_CMDLINE_BOOL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
 # CONFIG_DEFAULT_MODIFY_LDT_SYSCALL is not set
+CONFIG_HAVE_LIVEPATCH=y
+# CONFIG_LIVEPATCH is not set
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
 #
@@ -500,20 +581,25 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
 CONFIG_HIBERNATE_CALLBACKS=y
+# CONFIG_HIBERNATION is not set
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
 # CONFIG_PM_AUTOSLEEP is not set
 # CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_CLK=y
 # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 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_SLEEP=y
-CONFIG_ACPI_PROCFS=y
 # CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
 CONFIG_ACPI_EC_DEBUGFS=m
 CONFIG_ACPI_AC=y
 CONFIG_ACPI_BATTERY=y
@@ -521,50 +607,67 @@ CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
 CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
 CONFIG_ACPI_SBS=m
 CONFIG_ACPI_HED=y
 CONFIG_ACPI_CUSTOM_METHOD=m
 # CONFIG_ACPI_BGRT is not set
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
+CONFIG_ACPI_NFIT=m
+# CONFIG_ACPI_NFIT_DEBUG 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 is not set
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_DPTF_POWER=m
+CONFIG_ACPI_WATCHDOG=y
 CONFIG_ACPI_EXTLOG=m
+CONFIG_PMIC_OPREGION=y
+CONFIG_ACPI_CONFIGFS=m
 CONFIG_SFI=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=m
+CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
 
 #
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=m
@@ -584,7 +687,6 @@ CONFIG_X86_SPEEDSTEP_LIB=m
 # CPU Idle
 #
 CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
@@ -615,7 +717,11 @@ CONFIG_PCIEASPM_DEFAULT=y
 # CONFIG_PCIEASPM_POWERSAVE is not set
 # CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
 CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 CONFIG_PCI_STUB=y
@@ -625,12 +731,21 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
-CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
+CONFIG_PCI_HYPERV=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
 
 #
 # PCI host controller drivers
 #
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW=y
+CONFIG_VMD=m
+# CONFIG_ISA_BUS is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_APULED=y
 CONFIG_APU2LED=y
@@ -652,11 +767,6 @@ CONFIG_YENTA_TOSHIBA=y
 CONFIG_PD6729=m
 CONFIG_I82092=m
 CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-# CONFIG_HOTPLUG_PCI_CPCI is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
 CONFIG_X86_SYSFB=y
 
@@ -665,7 +775,7 @@ CONFIG_X86_SYSFB=y
 #
 CONFIG_BINFMT_ELF=y
 CONFIG_COMPAT_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ELFCORE=y
 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 CONFIG_BINFMT_SCRIPT=y
 # CONFIG_HAVE_AOUT is not set
@@ -679,9 +789,11 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
 CONFIG_SYSVIPC_COMPAT=y
 CONFIG_KEYS_COMPAT=y
 CONFIG_X86_DEV_DMA_OPS=y
-CONFIG_IOSF_MBI=m
+CONFIG_PMC_ATOM=y
 CONFIG_NET=y
 CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
 
 #
 # Networking options
@@ -719,6 +831,9 @@ 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_IPCOMP=m
@@ -727,10 +842,10 @@ CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
+CONFIG_INET_DIAG_DESTROY=y
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_CUBIC=y
@@ -739,11 +854,15 @@ CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
 CONFIG_TCP_CONG_HYBLA=m
 CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_NV=m
 CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_BBR=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -756,6 +875,7 @@ CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
 CONFIG_IPV6_MIP6=m
+CONFIG_IPV6_ILA=m
 CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -768,6 +888,8 @@ 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
@@ -775,6 +897,7 @@ CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_NETLABEL is not set
 CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
@@ -784,11 +907,13 @@ CONFIG_BRIDGE_NETFILTER=y
 #
 # Core Netfilter Configuration
 #
+CONFIG_NETFILTER_INGRESS=y
 CONFIG_NETFILTER_NETLINK=y
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
@@ -815,7 +940,7 @@ 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_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_PROTO_DCCP=m
@@ -826,22 +951,32 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=y
 CONFIG_NF_TABLES_INET=m
+CONFIG_NF_TABLES_NETDEV=m
 CONFIG_NFT_EXTHDR=m
 CONFIG_NFT_META=m
+CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
 CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -868,6 +1003,7 @@ CONFIG_NETFILTER_XT_TARGET_LED=m
 CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=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
@@ -938,9 +1074,11 @@ 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_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -969,6 +1107,8 @@ 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
@@ -993,12 +1133,24 @@ CONFIG_IP_VS_PE_SIP=m
 #
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
 CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1007,15 +1159,10 @@ CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
 CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
@@ -1033,8 +1180,16 @@ CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1052,10 +1207,13 @@ CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1076,7 +1234,6 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
@@ -1086,6 +1243,7 @@ CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
 # 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 is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
@@ -1106,9 +1264,12 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
+CONFIG_NET_DSA_HWMON=y
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_DSA_TAG_QCA=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 # CONFIG_VLAN_8021Q_MVRP is not set
@@ -1120,8 +1281,8 @@ CONFIG_LLC=y
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
 # CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1169,6 +1330,8 @@ CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
 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
@@ -1188,28 +1351,49 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
 CONFIG_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_DEBUGFS=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
 CONFIG_NETLINK_DIAG=m
+CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=m
+CONFIG_MPLS_ROUTING=m
+CONFIG_MPLS_IPTUNNEL=m
 CONFIG_HSR=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NET_NCSI=y
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_CGROUP_NET_PRIO=m
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_CLASSID=y
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
@@ -1225,6 +1409,7 @@ CONFIG_NET_FLOW_LIMIT=y
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 CONFIG_BT=m
+CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1232,11 +1417,22 @@ 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_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
 
 #
 # 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_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
@@ -1244,11 +1440,16 @@ 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_BCM=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 is not set
-# CONFIG_BT_HCIBT3C is not set
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
@@ -1257,6 +1458,8 @@ CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
 # CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1267,12 +1470,13 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 # CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB 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
@@ -1280,9 +1484,9 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1290,6 +1494,7 @@ CONFIG_MAC80211_LEDS=y
 # CONFIG_MAC80211_DEBUGFS is not set
 # CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
@@ -1299,7 +1504,11 @@ CONFIG_RFKILL_GPIO=m
 # CONFIG_CAIF is not set
 # CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
-CONFIG_HAVE_BPF_JIT=y
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
+CONFIG_HAVE_EBPF_JIT=y
 
 #
 # Device Drivers
@@ -1308,6 +1517,7 @@ CONFIG_HAVE_BPF_JIT=y
 #
 # Generic Driver Options
 #
+CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
@@ -1317,14 +1527,22 @@ CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+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_SYS_HYPERVISOR=y
 # CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
 
 #
 # Bus devices
@@ -1332,6 +1550,7 @@ CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
+# CONFIG_OF is not set
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
@@ -1365,14 +1584,12 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
 # CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_NVME=m
 CONFIG_BLK_DEV_SKD=m
 # CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_XEN_BLKDEV_FRONTEND=m
@@ -1381,13 +1598,17 @@ CONFIG_VIRTIO_BLK=m
 # CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_RBD is not set
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BLK_DEV_NVME_SCSI=y
+CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_LOOP is not set
 
 #
 # Misc devices
 #
 CONFIG_SENSORS_LIS3LV02D=m
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
@@ -1395,27 +1616,20 @@ CONFIG_IBM_ASM=m
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_CS5535_MFGPT=m
-CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
-CONFIG_CS5535_CLOCK_EVENT_SRC=m
 CONFIG_HP_ILO=m
 # CONFIG_APDS9802ALS is not set
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29020 is not set
 # CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
 # CONFIG_SENSORS_BH1770 is not set
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
-CONFIG_BMP085_I2C=m
-CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
 # CONFIG_SRAM is not set
+# CONFIG_PANEL is not set
 # CONFIG_C2PORT is not set
 
 #
@@ -1441,18 +1655,48 @@ CONFIG_TI_ST=m
 CONFIG_ALTERA_STAPL=m
 # CONFIG_INTEL_MEI is not set
 # CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
 CONFIG_VMWARE_VMCI=m
 
+#
+# Intel MIC Bus Driver
+#
+# CONFIG_INTEL_MIC_BUS is not set
+
+#
+# SCIF Bus Driver
+#
+# CONFIG_SCIF_BUS is not set
+
+#
+# VOP Bus Driver
+#
+# CONFIG_VOP_BUS is not set
+
 #
 # Intel MIC Host Driver
 #
-CONFIG_INTEL_MIC_HOST=m
 
 #
 # Intel MIC Card Driver
 #
-CONFIG_INTEL_MIC_CARD=m
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
 CONFIG_GENWQE=m
+CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
+CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1463,8 +1707,8 @@ CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -1478,7 +1722,6 @@ CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SCAN_ASYNC=y
@@ -1488,14 +1731,12 @@ CONFIG_SCSI_SCAN_ASYNC=y
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
 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
-CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1537,24 +1778,28 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=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_DWC_TC_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 # CONFIG_SCSI_FLASHPOINT is not set
 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=y
 CONFIG_SCSI_DMX3191D=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
@@ -1585,11 +1830,11 @@ CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
 # CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_WD719X=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_CHELSIO_FCOE=m
@@ -1636,11 +1881,12 @@ CONFIG_ATA_BMDMA=y
 # SATA SFF controllers with BMDMA
 #
 CONFIG_ATA_PIIX=y
-CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_DWC=m
+# CONFIG_SATA_DWC_OLD_DMA is not set
+# CONFIG_SATA_DWC_DEBUG is not set
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
-CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1653,14 +1899,10 @@ CONFIG_SATA_VITESSE=m
 #
 CONFIG_PATA_ALI=m
 CONFIG_PATA_AMD=m
-CONFIG_PATA_ARASAN_CF=m
 CONFIG_PATA_ARTOP=m
 CONFIG_PATA_ATIIXP=m
 CONFIG_PATA_ATP867X=m
 CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5536=m
 CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
 CONFIG_PATA_HPT366=m
@@ -1681,7 +1923,6 @@ CONFIG_PATA_PDC2027X=m
 CONFIG_PATA_PDC_OLD=m
 CONFIG_PATA_RADISYS=m
 CONFIG_PATA_RDC=m
-CONFIG_PATA_SC1200=m
 CONFIG_PATA_SCH=m
 CONFIG_PATA_SERVERWORKS=m
 CONFIG_PATA_SIL680=m
@@ -1718,22 +1959,25 @@ CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
+# CONFIG_MD_CLUSTER is not set
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_MQ_DEFAULT is not set
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=y
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_ERA is not set
 CONFIG_DM_MIRROR=y
 CONFIG_DM_LOG_USERSPACE=m
 CONFIG_DM_RAID=m
@@ -1745,7 +1989,9 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
 CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1763,16 +2009,6 @@ CONFIG_FIREWIRE_OHCI=m
 CONFIG_FIREWIRE_SBP2=m
 # CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-CONFIG_I2O=m
-# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
-CONFIG_I2O_EXT_ADAPTEC=y
-CONFIG_I2O_EXT_ADAPTEC_DMA64=y
-CONFIG_I2O_CONFIG=m
-CONFIG_I2O_CONFIG_OLD_IOCTL=y
-CONFIG_I2O_BUS=m
-CONFIG_I2O_BLOCK=m
-CONFIG_I2O_SCSI=m
-CONFIG_I2O_PROC=m
 CONFIG_MACINTOSH_DRIVERS=y
 # CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
@@ -1786,11 +2022,14 @@ CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_GTP=m
+CONFIG_MACSEC=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
-CONFIG_NETPOLL_TRAP=y
 CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
@@ -1799,9 +2038,11 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
 CONFIG_NLMON=m
+CONFIG_NET_VRF=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1838,18 +2079,19 @@ CONFIG_ATM_SOLOS=m
 #
 # CAIF transport drivers
 #
-CONFIG_VHOST_NET=m
-CONFIG_VHOST_RING=m
-CONFIG_VHOST=m
 
 #
 # Distributed Switch Architecture drivers
 #
-CONFIG_NET_DSA_MV88E6XXX=y
 CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
@@ -1859,9 +2101,14 @@ 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_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
@@ -1873,30 +2120,41 @@ CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
 CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
 CONFIG_MACB=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_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=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_LIQUIDIO=m
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_LIB=m
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
+CONFIG_CX_ECAT=m
 CONFIG_DNET=m
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_TULIP=y
@@ -1918,6 +2176,8 @@ CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
 CONFIG_NET_VENDOR_EMULEX=y
 CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_NET_VENDOR_EZCHIP=y
 CONFIG_NET_VENDOR_EXAR=y
 CONFIG_S2IO=m
 CONFIG_VXGE=m
@@ -1930,6 +2190,7 @@ 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
@@ -1940,13 +2201,13 @@ CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
 CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -1956,7 +2217,13 @@ CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
-# CONFIG_MLX5_CORE is not set
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SWITCHX2=m
+CONFIG_MLXSW_SPECTRUM=m
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
@@ -1968,6 +2235,9 @@ CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NFP_NETVF=m
+# CONFIG_NFP_NET_DEBUG is not set
 CONFIG_NET_VENDOR_8390=y
 CONFIG_PCMCIA_AXNET=m
 CONFIG_NE2K_PCI=m
@@ -1975,27 +2245,36 @@ CONFIG_PCMCIA_PCNET=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
-CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
 # CONFIG_NET_PACKET_ENGINE is not set
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
 CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_QCOM_EMAC=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_TUNE_TWISTER=y
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
-CONFIG_SH_ETH=m
+CONFIG_NET_VENDOR_RENESAS=y
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
+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
@@ -2005,6 +2284,7 @@ CONFIG_SIS190=m
 CONFIG_SFC=m
 CONFIG_SFC_MCDI_MON=y
 CONFIG_SFC_SRIOV=y
+CONFIG_SFC_MCDI_LOGGING=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_PCMCIA_SMC91C92=m
 CONFIG_EPIC100=m
@@ -2013,18 +2293,19 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_STMMAC_PCI=y
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_STMMAC_PCI=m
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
 CONFIG_CASSINI=m
 CONFIG_NIU=m
+CONFIG_NET_VENDOR_SYNOPSYS=y
 CONFIG_NET_VENDOR_TEHUTI=y
 CONFIG_TEHUTI=m
 CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_CPSW_ALE=m
 CONFIG_TLAN=m
 CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
@@ -2040,32 +2321,51 @@ CONFIG_NET_VENDOR_XIRCOM=y
 CONFIG_PCMCIA_XIRC2PS=m
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
-# CONFIG_NET_SB1000 is not set
+CONFIG_NET_SB1000=m
 CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_MDIO_CAVIUM=m
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_OCTEON=m
+CONFIG_MDIO_THUNDER=m
 
 #
 # MII PHY device drivers
 #
-CONFIG_AT803X_PHY=m
 CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AT803X_PHY=m
+CONFIG_BCM7XXX_PHY=m
 CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
 CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+CONFIG_INTEL_XWAY_PHY=m
 CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
 CONFIG_MICREL_PHY=m
-CONFIG_FIXED_PHY=y
-CONFIG_MDIO_BITBANG=m
-# CONFIG_MDIO_GPIO is not set
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_STE10XP=m
+CONFIG_TERANETICS_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2081,15 +2381,13 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
 # CONFIG_SLIP is not set
 CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=y
 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
@@ -2108,6 +2406,7 @@ 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
@@ -2124,30 +2423,12 @@ CONFIG_USB_NET_INT51X1=m
 CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
+CONFIG_USB_NET_CH9200=m
 CONFIG_WLAN=y
-# CONFIG_PCMCIA_RAYCS is not set
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-# CONFIG_LIBERTAS_UAP is not set
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
 CONFIG_ADM8211=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
 # CONFIG_ATH_DEBUG is not set
 CONFIG_ATH5K=m
 CONFIG_ATH5K_DEBUG=y
@@ -2160,11 +2441,14 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_DYNACK is not set
 # CONFIG_ATH9K_WOW is not set
-# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
 CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
@@ -2181,15 +2465,24 @@ CONFIG_ATH10K_PCI=m
 # CONFIG_ATH10K_TRACING is not set
 CONFIG_WCN36XX=m
 # CONFIG_WCN36XX_DEBUGFS 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_PCMCIA is not set
 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
@@ -2210,16 +2503,17 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 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 is not set
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCMDBG is not set
-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_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
@@ -2231,30 +2525,34 @@ 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 is not set
 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
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
 
 #
 # Debugging Options
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLEGACY=m
-CONFIG_IWL4965=m
-CONFIG_IWL3945=m
-
-#
-# iwl3945 / iwl4965 Debugging Options
-#
-# CONFIG_IWLEGACY_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_CS=m
-CONFIG_LIBERTAS_SDIO=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_LIBERTAS_MESH=y
+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 is not set
 CONFIG_HERMES_CACHE_FW_ON_INIT=y
@@ -2268,6 +2566,25 @@ CONFIG_P54_COMMON=m
 CONFIG_P54_USB=m
 CONFIG_P54_PCI=m
 CONFIG_P54_LEDS=y
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+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_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
 CONFIG_RT2500PCI=m
@@ -2296,19 +2613,38 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=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 is not set
 CONFIG_RTL8192C_COMMON=m
-CONFIG_WL_TI=y
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_WLAN_VENDOR_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX=m
@@ -2316,14 +2652,14 @@ 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_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_PCIE=m
-CONFIG_MWIFIEX_USB=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2332,6 +2668,7 @@ CONFIG_CW1200_WLAN_SDIO=m
 CONFIG_XEN_NETDEV_FRONTEND=m
 CONFIG_XEN_NETDEV_BACKEND=m
 CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
 CONFIG_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -2407,16 +2744,12 @@ CONFIG_HISAX_ST5481=m
 CONFIG_HISAX_HFCUSB=m
 CONFIG_HISAX_HFC4S8S=m
 CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
 CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
 CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
+# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set
 
 #
 # CAPI hardware drivers
@@ -2462,11 +2795,16 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
 # CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
@@ -2487,6 +2825,7 @@ CONFIG_INPUT_EVDEV=y
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ADC=m
 # CONFIG_KEYBOARD_ADP5588 is not set
 # CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
@@ -2512,6 +2851,7 @@ CONFIG_KEYBOARD_LM8333=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_CYPRESS=y
@@ -2520,10 +2860,13 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_ELAN_I2C is not set
 CONFIG_MOUSE_VSXXXAA=m
 # CONFIG_MOUSE_GPIO is not set
 CONFIG_MOUSE_SYNAPTICS_I2C=m
@@ -2534,12 +2877,15 @@ CONFIG_MOUSE_SYNAPTICS_USB=m
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
 # CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
 CONFIG_INPUT_PCSPKR=m
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_APANEL=m
 # CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
 CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
@@ -2548,14 +2894,21 @@ CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
+# CONFIG_INPUT_AXP20X_PEK is not set
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9063_ONKEY is not set
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
 CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
 
 #
 # Hardware I/O ports
@@ -2573,6 +2926,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_USERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2586,7 +2940,6 @@ CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
 CONFIG_SERIAL_NONSTANDARD=y
 CONFIG_ROCKETPORT=m
@@ -2602,16 +2955,18 @@ CONFIG_NOZOMI=m
 CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
 # CONFIG_DEVKMEM is not set
 
 #
 # Serial drivers
 #
+CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_FINTEK=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_FIX_EARLYCON_MEM=y
 CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
 # CONFIG_SERIAL_8250_CS is not set
@@ -2622,20 +2977,26 @@ 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_FSL 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_MOXA is not set
 
 #
 # Non-8250 serial port support
 #
-# CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_JSM=m
 CONFIG_SERIAL_SCCNXP=m
-# CONFIG_SERIAL_TIMBERDALE is not set
+CONFIG_SERIAL_SC16IS7XX_CORE=m
+CONFIG_SERIAL_SC16IS7XX=m
+CONFIG_SERIAL_SC16IS7XX_I2C=y
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
 # CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_PCH_UART is not set
 CONFIG_SERIAL_ARC=m
 CONFIG_SERIAL_ARC_NR_PORTS=1
 CONFIG_SERIAL_RP2=m
@@ -2654,16 +3015,15 @@ CONFIG_IPMI_HANDLER=m
 # CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
 CONFIG_NVRAM=y
 CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
@@ -2684,6 +3044,11 @@ CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TELCLOCK is not set
 CONFIG_DEVPORT=y
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
@@ -2697,6 +3062,7 @@ CONFIG_I2C_MUX_GPIO=m
 CONFIG_I2C_MUX_PCA9541=m
 CONFIG_I2C_MUX_PCA954x=m
 CONFIG_I2C_MUX_PINCTRL=m
+CONFIG_I2C_MUX_REG=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2739,7 +3105,8 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
-# CONFIG_I2C_EG20T is not set
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
+CONFIG_I2C_EMEV2=m
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
@@ -2751,6 +3118,7 @@ CONFIG_I2C_SIMTEC=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
+# CONFIG_I2C_DLN2 is not set
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -2762,13 +3130,20 @@ CONFIG_I2C_VIPERBOARD=m
 # Other I2C/SMBus bus drivers
 #
 # CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+CONFIG_I2C_SLAVE_EEPROM=m
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
+CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
+#
+# HSI controllers
+#
+
 #
 # HSI clients
 #
@@ -2800,73 +3175,79 @@ CONFIG_PTP_1588_CLOCK=m
 #
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
-CONFIG_PTP_1588_CLOCK_PCH=m
 CONFIG_PINCTRL=y
 
 #
 # Pin controllers
 #
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_AMD=m
 CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_PINCTRL_CHERRYVIEW=m
+CONFIG_PINCTRL_INTEL=m
+CONFIG_PINCTRL_BROXTON=m
+CONFIG_PINCTRL_SUNRISEPOINT=m
 CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIO_ACPI=y
+CONFIG_GPIOLIB_IRQCHIP=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
 
 #
-# Memory mapped GPIO drivers:
+# Memory mapped GPIO drivers
 #
+CONFIG_GPIO_AMDPT=m
+# CONFIG_GPIO_AXP209 is not set
+CONFIG_GPIO_DWAPB=m
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_F7188X=m
-CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_SCH=m
 CONFIG_GPIO_ICH=m
-# CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_LYNXPOINT is not set
+CONFIG_GPIO_MOCKUP=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_ZX is not set
+
+#
+# Port-mapped I/O GPIO drivers
+#
+CONFIG_GPIO_F7188X=m
+CONFIG_GPIO_IT87=m
+CONFIG_GPIO_SCH=m
+CONFIG_GPIO_SCH311X=m
 
 #
-# I2C GPIO expanders:
+# I2C GPIO expanders
 #
+# CONFIG_GPIO_ADP5588 is not set
 # CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_RDC321X is not set
+CONFIG_GPIO_TPIC2810=m
+# CONFIG_GPIO_TS4900 is not set
 
 #
-# SPI GPIO expanders:
+# MFD GPIO expanders
 #
+# CONFIG_GPIO_DLN2 is not set
 
 #
-# AC97 GPIO expanders:
-#
-
-#
-# LPC GPIO expanders:
+# PCI GPIO expanders
 #
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
 
 #
-# MODULbus GPIO expanders:
+# SPI or I2C GPIO expanders
 #
 
 #
-# USB GPIO expanders:
+# USB GPIO expanders
 #
 CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
@@ -2889,6 +3270,7 @@ CONFIG_W1_SLAVE_SMEM=m
 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_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
@@ -2898,6 +3280,9 @@ CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2781=m
 CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_RESTART is not set
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
@@ -2908,7 +3293,9 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
 # CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9150 is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
 # CONFIG_CHARGER_ISP1704 is not set
@@ -2917,10 +3304,13 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_SMB347 is not set
-CONFIG_POWER_RESET=y
-CONFIG_POWER_AVS=y
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_AXP20X_POWER is not set
 CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2948,29 +3338,51 @@ CONFIG_SENSORS_ASC7621=m
 CONFIG_SENSORS_K8TEMP=m
 CONFIG_SENSORS_K10TEMP=m
 CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DELL_SMM=m
 CONFIG_SENSORS_I5K_AMB=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_FTSTEUTATES=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_HTU21=m
-CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 # CONFIG_SENSORS_JC42 is not set
+CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
+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_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+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_LM63=m
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
@@ -2983,42 +3395,36 @@ CONFIG_SENSORS_LM87=m
 CONFIG_SENSORS_LM90=m
 CONFIG_SENSORS_LM92=m
 CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
 CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX197=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6697=m
-CONFIG_SENSORS_MCP3021=m
-CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NTC_THERMISTOR=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_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 # CONFIG_SENSORS_LTC2978 is not set
+CONFIG_SENSORS_LTC3815=m
 CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX20751=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 # CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_SIS5595=m
-# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
 # CONFIG_SENSORS_EMC2103 is not set
@@ -3029,13 +3435,18 @@ CONFIG_SENSORS_SMSC47B397=m
 CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_ADC128D818=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
 CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_TC74=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_VIA_CPUTEMP=m
@@ -3052,7 +3463,6 @@ CONFIG_SENSORS_W83L785TS=m
 CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_APPLESMC=m
 
 #
 # ACPI drivers
@@ -3061,29 +3471,47 @@ CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
 
 #
-# Texas Instruments thermal drivers
+# ACPI INT340X thermal drivers
 #
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
+CONFIG_INT3406_THERMAL=m
+CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_GENERIC_ADC_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_WATCHDOG_SYSFS=y
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9063_WATCHDOG is not set
+# CONFIG_DA9062_WATCHDOG is not set
+CONFIG_WDAT_WDT=m
+CONFIG_XILINX_WATCHDOG=m
+CONFIG_ZIIRAVE_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
 CONFIG_DW_WATCHDOG=m
+CONFIG_MAX63XX_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
@@ -3091,8 +3519,6 @@ CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
 CONFIG_F71808E_WDT=m
 CONFIG_SP5100_TCO=m
-CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
 CONFIG_SBC_FITPC2_WATCHDOG=m
 CONFIG_EUROTECH_WDT=m
 CONFIG_IB700_WDT=m
@@ -3110,18 +3536,16 @@ CONFIG_SC1200_WDT=m
 CONFIG_PC87413_WDT=m
 CONFIG_NV_TCO=m
 CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
 CONFIG_CPU5_WDT=m
 CONFIG_SMSC_SCH311X_WDT=m
 CONFIG_SMSC37B787_WDT=m
 CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_NI903X_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -3135,6 +3559,11 @@ CONFIG_WDTPCI=m
 # USB-based Watchdog Cards
 #
 CONFIG_USBPCWATCHDOG=m
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -3164,6 +3593,8 @@ 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
@@ -3172,38 +3603,61 @@ CONFIG_BCMA_DRIVER_GPIO=y
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=m
-CONFIG_MFD_CS5535=m
+CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
 # CONFIG_MFD_CROS_EC is not set
+CONFIG_MFD_DA9062=m
+CONFIG_MFD_DA9063=m
+CONFIG_MFD_DA9150=m
+CONFIG_MFD_DLN2=m
+# CONFIG_MFD_EXYNOS_LPASS is not set
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
 # CONFIG_MFD_JANZ_CMODIO is not set
 # CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_MFD_RDC321X is not set
 CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
 # CONFIG_MFD_SI476X_CORE is not set
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SKY81452 is not set
 # CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_SYSCON is not set
+CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
 # CONFIG_MFD_LP3943 is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
 # CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_LM3533=m
-# CONFIG_MFD_TIMBERDALE is not set
 # CONFIG_MFD_TMIO is not set
 CONFIG_MFD_VX855=m
 # CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8994 is not set
 # CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
@@ -3214,24 +3668,28 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
 CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
 CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
 CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
 CONFIG_VIDEO_DEV=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
 CONFIG_VIDEO_V4L2=m
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_PCI_SKELETON is not set
 CONFIG_VIDEO_TUNER=m
 CONFIG_V4L2_MEM2MEM_DEV=m
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEOBUF2_CORE=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_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3251,12 +3709,14 @@ CONFIG_IR_RC5_DECODER=m
 CONFIG_IR_RC6_DECODER=m
 CONFIG_IR_JVC_DECODER=m
 CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_SHARP_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_ITE_CIR=m
@@ -3265,6 +3725,7 @@ 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
@@ -3283,6 +3744,7 @@ 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
@@ -3319,6 +3781,7 @@ 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
@@ -3341,17 +3804,21 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
 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 is not set
 CONFIG_VIDEO_CX231XX=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
@@ -3365,6 +3832,7 @@ CONFIG_VIDEO_TM6000_DVB=m
 #
 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=y
@@ -3399,7 +3867,6 @@ CONFIG_DVB_USB_AZ6007=m
 CONFIG_DVB_USB_CE6230=m
 CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_IT913X=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
@@ -3409,6 +3876,7 @@ 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
@@ -3424,13 +3892,10 @@ CONFIG_MEDIA_PCI_SUPPORT=y
 # Media capture support
 #
 CONFIG_VIDEO_MEYE=m
-
-#
-# Media capture/analog TV support
-#
-CONFIG_VIDEO_IVTV=m
-CONFIG_VIDEO_IVTV_ALSA=m
-CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW5864=m
+CONFIG_VIDEO_TW68=m
+CONFIG_VIDEO_TW686X=m
 CONFIG_VIDEO_ZORAN=m
 CONFIG_VIDEO_ZORAN_DC30=m
 CONFIG_VIDEO_ZORAN_ZR36060=m
@@ -3439,9 +3904,17 @@ CONFIG_VIDEO_ZORAN_DC10=m
 CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_AVS6EYES=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+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
@@ -3459,17 +3932,17 @@ 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
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -3482,32 +3955,28 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
 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_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 # CONFIG_VIDEO_VIA_CAMERA is not set
-CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_VIDEO_RCAR_VIN=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
 
 #
 # Supported MMC/SDIO adapters
 #
 # CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
 # Supported FireWire (IEEE 1394) Adapters
@@ -3520,7 +3989,6 @@ CONFIG_MEDIA_COMMON_OPTIONS=y
 # common driver options
 #
 CONFIG_VIDEO_CX2341X=m
-CONFIG_VIDEO_BTCX=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_CYPRESS_FIRMWARE=m
 CONFIG_DVB_B2C2_FLEXCOP=m
@@ -3530,7 +3998,7 @@ CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
 
 #
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
 #
 CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
 CONFIG_MEDIA_ATTACH=y
@@ -3539,17 +4007,18 @@ CONFIG_VIDEO_IR_I2C=m
 #
 # Audio decoders, processors and mixers
 #
-CONFIG_VIDEO_TVAUDIO=m
-CONFIG_VIDEO_TDA7432=m
 CONFIG_VIDEO_TDA9840=m
 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_UDA1342=m
 CONFIG_VIDEO_WM8775=m
 CONFIG_VIDEO_WM8739=m
 CONFIG_VIDEO_VP27SMPX=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
 
 #
 # RDS decoders
@@ -3559,7 +4028,6 @@ CONFIG_VIDEO_SAA6588=m
 #
 # Video decoders
 #
-CONFIG_VIDEO_ADV7180=m
 CONFIG_VIDEO_BT819=m
 CONFIG_VIDEO_BT856=m
 CONFIG_VIDEO_BT866=m
@@ -3567,6 +4035,9 @@ CONFIG_VIDEO_KS0127=m
 CONFIG_VIDEO_SAA7110=m
 CONFIG_VIDEO_SAA711X=m
 CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
 CONFIG_VIDEO_VPX3220=m
 
 #
@@ -3586,7 +4057,9 @@ CONFIG_VIDEO_ADV7175=m
 #
 # Camera sensor devices
 #
+CONFIG_VIDEO_OV7640=m
 CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9M111=m
 CONFIG_VIDEO_MT9V011=m
 
 #
@@ -3656,10 +4129,13 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
-CONFIG_MEDIA_TUNER_M88TS2022=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
 
 #
 # Multistandard (satellite) frontends
@@ -3675,11 +4151,13 @@ CONFIG_DVB_M88DS3103=m
 #
 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
@@ -3700,6 +4178,7 @@ 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
@@ -3710,7 +4189,6 @@ CONFIG_DVB_TDA10071=m
 # DVB-T (terrestrial) frontends
 #
 CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
 CONFIG_DVB_CX22700=m
 CONFIG_DVB_CX22702=m
 CONFIG_DVB_DRXD=m
@@ -3730,6 +4208,9 @@ CONFIG_DVB_STV0367=m
 CONFIG_DVB_CXD2820R=m
 CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
+CONFIG_DVB_GP8PSK_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -3743,11 +4224,11 @@ 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
@@ -3762,6 +4243,11 @@ CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
 
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_TC90522=m
+
 #
 # Digital terrestrial only tuners/PLL
 #
@@ -3772,19 +4258,18 @@ CONFIG_DVB_TUNER_DIB0090=m
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_DRX39XYJ=m
 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_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
-CONFIG_DVB_DVBSKY_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
-CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
 CONFIG_DVB_AF9033=m
 
@@ -3806,9 +4291,11 @@ CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
 
@@ -3818,24 +4305,33 @@ CONFIG_DRM_TTM=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
 CONFIG_DRM_RADEON=m
-# CONFIG_DRM_RADEON_UMS is not set
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_SI is not set
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_I915_FBDEV=y
 CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
-# CONFIG_DRM_I915_UMS is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_I915_USERPTR=y
+CONFIG_DRM_I915_GVT=y
+
+#
+# drm/i915 Debugging
+#
+# CONFIG_DRM_I915_WERROR is not set
+# CONFIG_DRM_I915_DEBUG is not set
+# CONFIG_DRM_VGEM is not set
 CONFIG_DRM_VMWGFX=m
 # CONFIG_DRM_VMWGFX_FBCON is not set
 CONFIG_DRM_GMA500=m
@@ -3847,11 +4343,27 @@ CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 CONFIG_DRM_BOCHS=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_LEGACY is not set
+
+#
+# Frame buffer Devices
+#
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
 CONFIG_FB_DDC=m
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
@@ -3928,11 +4440,10 @@ CONFIG_FB_TRIDENT=m
 CONFIG_FB_ARK=m
 CONFIG_FB_PM3=m
 # CONFIG_FB_CARMINE is not set
-# CONFIG_FB_TMIO is not set
 # CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
 CONFIG_FB_UDL=m
-# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_IBM_GXT4500=m
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_XEN_FBDEV_FRONTEND=m
 # CONFIG_FB_METRONOME is not set
@@ -3941,7 +4452,7 @@ CONFIG_XEN_FBDEV_FRONTEND=m
 # CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_HYPERV=m
 CONFIG_FB_SIMPLE=y
-# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_FB_SM712=m
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
@@ -3950,15 +4461,16 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_LM3533 is not set
 # CONFIG_BACKLIGHT_CARILLO_RANCH is not set
 CONFIG_BACKLIGHT_APPLE=m
+CONFIG_BACKLIGHT_PM8941_WLED=m
 # CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
 # CONFIG_BACKLIGHT_GPIO is not set
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_VGASTATE=m
+CONFIG_HDMI=y
 
 #
 # Console display driver support
@@ -3966,6 +4478,8 @@ CONFIG_BACKLIGHT_APPLE=m
 CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
@@ -3982,25 +4496,27 @@ CONFIG_SND_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 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_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
 CONFIG_SND_DEBUG=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
-CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
@@ -4024,7 +4540,6 @@ CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
 CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
@@ -4047,8 +4562,6 @@ CONFIG_SND_OXYGEN=m
 CONFIG_SND_CS4281=m
 CONFIG_SND_CS46XX=m
 CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_CS5535AUDIO=m
 CONFIG_SND_CTXFI=m
 CONFIG_SND_DARLA20=m
 CONFIG_SND_GINA20=m
@@ -4072,29 +4585,6 @@ CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
 CONFIG_SND_FM801=m
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=1
-CONFIG_SND_HDA_INPUT_JACK=y
-# CONFIG_SND_HDA_PATCH_LOADER is not set
-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_I915=y
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-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_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -4120,6 +4610,34 @@ 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_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+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_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+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_CORE=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
@@ -4129,12 +4647,21 @@ 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 is not set
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
 # CONFIG_SND_ISIGHT is not set
-# CONFIG_SND_SCS1X is not set
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
 CONFIG_SND_PCMCIA=y
 # CONFIG_SND_VXPOCKET is not set
 # CONFIG_SND_PDAUDIOCF is not set
@@ -4158,19 +4685,26 @@ CONFIG_HID_A4TECH=y
 # CONFIG_HID_ACRUX is not set
 CONFIG_HID_APPLE=y
 # CONFIG_HID_APPLEIR is not set
+CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
 CONFIG_HID_CHERRY=y
 CONFIG_HID_CHICONY=y
+# CONFIG_HID_CORSAIR is not set
 # CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CP2112 is not set
 CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
 # CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
 # CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
+# CONFIG_HID_GT683R is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4180,9 +4714,11 @@ CONFIG_HID_GYRATION=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=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 is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
@@ -4194,6 +4730,7 @@ CONFIG_HID_MONTEREY=y
 # CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
 # CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PENMOUNT is not set
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -4201,6 +4738,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PLANTRONICS is not set
 # CONFIG_HID_PRIMAX is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -4209,6 +4747,7 @@ CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
+# CONFIG_HID_RMI is not set
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_HYPERV_MOUSE is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
@@ -4222,6 +4761,8 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+# CONFIG_HID_ALPS is not set
 
 #
 # USB HID support
@@ -4234,12 +4775,16 @@ CONFIG_USB_HIDDEV=y
 # I2C HID support
 #
 CONFIG_I2C_HID=m
+
+#
+# Intel ISH HID support
+#
+CONFIG_INTEL_ISH_HID=m
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 
 #
@@ -4250,6 +4795,8 @@ CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
@@ -4260,6 +4807,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -4268,9 +4816,7 @@ CONFIG_USB_EHCI_PCI=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_OXU210HP_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
-# CONFIG_USB_FUSBH200_HCD is not set
 # CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_OHCI_HCD_PCI=m
@@ -4318,12 +4864,19 @@ 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=y
 
 #
 # 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_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
 CONFIG_USB_DWC3_HOST=y
@@ -4331,18 +4884,11 @@ CONFIG_USB_DWC3_HOST=y
 #
 # Platform Glue Driver Support
 #
-# CONFIG_USB_DWC3_EXYNOS is not set
 CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
-
-#
-# Debugging features
-#
-# CONFIG_USB_DWC3_DEBUG is not set
 # CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
+# CONFIG_USB_ISP1760 is not set
 
 #
 # USB port drivers
@@ -4398,7 +4944,6 @@ CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OPTICON is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
@@ -4413,7 +4958,6 @@ CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
 # CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
@@ -4430,6 +4974,10 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
 CONFIG_USB_HSIC_USB3503=m
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+# CONFIG_UCSI is not set
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
@@ -4440,22 +4988,19 @@ CONFIG_USB_XUSBATM=m
 # USB Physical Layer drivers
 #
 CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
 # CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
 # CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_TAHVO_USB is not set
 # CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_RCAR_PHY is not set
 # CONFIG_USB_GADGET is not set
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_USB_ULPI_BUS is not set
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=m
 # CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
 
 #
 # MMC/SD/SDIO Card Drivers
@@ -4474,8 +5019,6 @@ CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_ACPI=m
 CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
 # CONFIG_MMC_SDRICOH_CS is not set
@@ -4483,7 +5026,10 @@ CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
+# CONFIG_MMC_USDHI6ROL0 is not set
 CONFIG_MMC_REALTEK_PCI=m
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -4503,6 +5049,7 @@ CONFIG_MEMSTICK_R592=m
 CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
 
 #
 # LED drivers
@@ -4514,23 +5061,28 @@ CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
+# CONFIG_LEDS_LP3952 is not set
 CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
+# CONFIG_LEDS_LP8860 is not set
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_DELL_NETBOOKS=m
 CONFIG_LEDS_TCA6507=m
+# CONFIG_LEDS_TLC591XX is not set
 CONFIG_LEDS_LM355x=m
-CONFIG_LEDS_OT200=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
 CONFIG_LEDS_BLINKM=m
+# CONFIG_LEDS_MLXCPLD is not set
 
 #
 # LED Triggers
@@ -4538,6 +5090,7 @@ CONFIG_LEDS_BLINKM=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
 CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
 CONFIG_LEDS_TRIGGER_CPU=y
@@ -4549,14 +5102,16 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 #
 CONFIG_LEDS_TRIGGER_TRANSIENT=m
 CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_PANIC=y
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
 CONFIG_EDAC=y
 # CONFIG_EDAC_LEGACY_SYSFS is not set
 # CONFIG_EDAC_DEBUG is not set
 CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_MCE_INJ=m
 CONFIG_EDAC_MM_EDAC=m
 CONFIG_EDAC_AMD64=m
 # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
@@ -4564,6 +5119,7 @@ CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82975X=m
 CONFIG_EDAC_I3000=m
 CONFIG_EDAC_I3200=m
+# CONFIG_EDAC_IE31200 is not set
 CONFIG_EDAC_X38=m
 CONFIG_EDAC_I5400=m
 CONFIG_EDAC_I7CORE=m
@@ -4571,11 +5127,14 @@ CONFIG_EDAC_I5000=m
 CONFIG_EDAC_I5100=m
 CONFIG_EDAC_I7300=m
 CONFIG_EDAC_SBRIDGE=m
+CONFIG_EDAC_SKX=m
 CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -4590,33 +5149,46 @@ CONFIG_RTC_INTF_DEV=y
 #
 # I2C RTC drivers
 #
+CONFIG_RTC_DRV_ABB5ZES3=m
+CONFIG_RTC_DRV_ABX80X=m
 CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
 CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF85063=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
-# CONFIG_RTC_DRV_S35390A is not set
+CONFIG_RTC_DRV_S35390A=m
 CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8010=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
 
 #
 # SPI RTC drivers
 #
+CONFIG_RTC_I2C_AND_SPI=m
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 
 #
 # Platform RTC drivers
@@ -4625,21 +5197,22 @@ CONFIG_RTC_DRV_CMOS=y
 CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
 CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
+CONFIG_RTC_DRV_DA9063=m
 CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_M48T86=m
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_M48T59=m
 CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4651,15 +5224,17 @@ CONFIG_DMADEVICES=y
 #
 # DMA Devices
 #
-# CONFIG_INTEL_MID_DMAC is not set
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DW_DMAC_CORE=m
-CONFIG_DW_DMAC=m
-CONFIG_DW_DMAC_PCI=m
-CONFIG_TIMB_DMA=m
-CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_ACPI=y
+# CONFIG_INTEL_IDMA64 is not set
+CONFIG_INTEL_IOATDMA=m
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+CONFIG_DW_DMAC_CORE=y
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=y
+CONFIG_HSU_DMA=y
 
 #
 # DMA Clients
@@ -4667,6 +5242,11 @@ CONFIG_DMA_ACPI=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 CONFIG_DMA_ENGINE_RAID=y
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
 CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
@@ -4677,8 +5257,10 @@ CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_PRUSS is not set
 # CONFIG_UIO_MF624 is not set
 # CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -4686,7 +5268,9 @@ CONFIG_VIRTIO=y
 # Virtio drivers
 #
 CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
 CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
 CONFIG_VIRTIO_MMIO=m
 # CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
 
@@ -4716,36 +5300,25 @@ CONFIG_XEN_TMEM=m
 CONFIG_XEN_PCIDEV_BACKEND=m
 CONFIG_XEN_PRIVCMD=m
 CONFIG_XEN_ACPI_PROCESSOR=m
-# CONFIG_XEN_MCE_LOG is not set
+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_STAGING=y
-CONFIG_ET131X=m
 CONFIG_SLICOSS=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8187SE is not set
-# CONFIG_RTL8192U is not set
+CONFIG_RTL8192U=m
 # CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8821AE is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+CONFIG_R8188EU=m
+CONFIG_88EU_AP_MODE=y
 # CONFIG_RTS5208 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
 
 #
 # IIO staging drivers
@@ -4758,9 +5331,7 @@ CONFIG_RTS5139=m
 #
 # Analog to digital converters
 #
-# CONFIG_AD7291 is not set
 # CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
 
 #
 # Analog digital bi-direction converters
@@ -4795,11 +5366,6 @@ CONFIG_RTS5139=m
 # CONFIG_TSL2583 is not set
 # CONFIG_TSL2x7x is not set
 
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
 #
 # Active energy metering IC
 #
@@ -4812,48 +5378,42 @@ CONFIG_RTS5139=m
 #
 # Triggers - standalone
 #
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_CRYSTALHD is not set
+# CONFIG_FB_SM750 is not set
 # CONFIG_FB_XGI is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
 
 #
 # Speakup console speech
 #
 # CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
 
 #
 # Android
 #
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
 CONFIG_LTE_GDM724X=m
-# CONFIG_NET_VENDOR_SILICOM is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
+# CONFIG_LNET is not set
 # CONFIG_DGNC is not set
-# CONFIG_DGAP is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_CRYPTO_SKEIN is not set
+# CONFIG_UNISYSSPAR is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_MOST is not set
+
+#
+# Old ISDN4Linux (deprecated)
+#
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
+# CONFIG_ALIENWARE_WMI is not set
 CONFIG_ASUS_LAPTOP=m
-CONFIG_DELL_LAPTOP=m
-CONFIG_DELL_WMI=m
+# CONFIG_DELL_SMBIOS is not set
 CONFIG_DELL_WMI_AIO=m
+# CONFIG_DELL_SMO8800 is not set
+# CONFIG_DELL_RBTN is not set
 CONFIG_FUJITSU_LAPTOP=m
 # CONFIG_FUJITSU_LAPTOP_DEBUG is not set
 # CONFIG_FUJITSU_TABLET is not set
@@ -4880,15 +5440,20 @@ CONFIG_EEEPC_LAPTOP=m
 CONFIG_ASUS_WMI=m
 CONFIG_ASUS_NB_WMI=m
 CONFIG_EEEPC_WMI=m
+# CONFIG_ASUS_WIRELESS is not set
 CONFIG_ACPI_WMI=m
 CONFIG_MSI_WMI=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
+# CONFIG_TOSHIBA_HAPS is not set
+# CONFIG_TOSHIBA_WMI is not set
 CONFIG_ACPI_CMPC=m
+# CONFIG_INTEL_HID_EVENT is not set
+# CONFIG_INTEL_VBTN is not set
 CONFIG_INTEL_IPS=m
+# CONFIG_INTEL_PMC_CORE is not set
 # CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
@@ -4897,6 +5462,9 @@ CONFIG_SAMSUNG_Q10=m
 CONFIG_INTEL_RST=m
 # CONFIG_INTEL_SMARTCONNECT is not set
 CONFIG_PVPANIC=m
+# CONFIG_INTEL_PMC_IPC is not set
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+# CONFIG_INTEL_PUNIT_IPC is not set
 # CONFIG_CHROME_PLATFORMS is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
@@ -4906,20 +5474,42 @@ CONFIG_COMMON_CLK=y
 # Common Clock Framework
 #
 # CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
 
 #
 # Hardware Spinlock drivers
 #
+
+#
+# Clock Source drivers
+#
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+# CONFIG_ATMEL_PIT is not set
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
+# CONFIG_PCC is not set
+# CONFIG_ALTERA_MBOX is not set
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IOVA=y
 CONFIG_AMD_IOMMU=y
-# CONFIG_AMD_IOMMU_STATS is not set
+# CONFIG_AMD_IOMMU_V2 is not set
 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_IRQ_REMAP=y
@@ -4932,51 +5522,130 @@ CONFIG_IRQ_REMAP=y
 #
 # Rpmsg drivers
 #
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SUNXI_SRAM is not set
+# CONFIG_SOC_TI is not set
+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 is not set
+CONFIG_EXTCON=m
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_AXP288 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
 CONFIG_MEMORY=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_KFIFO_BUF=m
+# CONFIG_IIO_CONFIGFS is not set
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
 
 #
 # Accelerometers
 #
 # CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DMARD09 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
 
 #
 # Analog to digital converters
 #
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_DA9150_GPADC is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2485 is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MCP3422 is not set
 # CONFIG_NAU7802 is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
 # CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADS1015 is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
 #
 # Amplifiers
 #
 
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
 #
 # Hid Sensor IIO Common
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
 
+#
+# SSP Sensor Common
+#
+
 #
 # Digital to analog converters
 #
 # CONFIG_AD5064 is not set
 # CONFIG_AD5380 is not set
 # CONFIG_AD5446 is not set
+# CONFIG_AD5593R is not set
+# CONFIG_M62332 is not set
 # CONFIG_MAX517 is not set
 # CONFIG_MCP4725 is not set
 
+#
+# IIO dummy driver
+#
+
 #
 # Frequency Synthesizers DDS/PLL
 #
@@ -4992,47 +5661,90 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 #
 # Digital gyroscope sensors
 #
+# CONFIG_BMG160 is not set
 # CONFIG_HID_SENSOR_GYRO_3D is not set
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+
 #
 # Humidity sensors
 #
+# CONFIG_AM2315 is not set
 # CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
 
 #
 # Inertial measurement units
 #
-# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
 
 #
 # Light sensors
 #
+# CONFIG_ACPI_ALS is not set
 # CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
 # CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
 # CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
 # CONFIG_CM36651 is not set
 # CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
 # CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_TCS3414 is not set
 # CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
 # CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
 # CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
 # CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_MMC35240 is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
 
 #
 # Inclinometer sensors
 #
 # CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
 
 #
 # Triggers - standalone
@@ -5040,34 +5752,104 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
 # CONFIG_IIO_SYSFS_TRIGGER is not set
 
+#
+# Digital potentiometers
+#
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
 #
 # Pressure sensors
 #
+# CONFIG_BMP280 is not set
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
 # CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
 # CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+
+#
+# Proximity sensors
+#
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_SX9500 is not set
 
 #
 # Temperature sensors
 #
+# CONFIG_MLX90614 is not set
 # CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
 # CONFIG_NTB is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_PWM is not set
+CONFIG_ARM_GIC_MAX_NR=1
 # CONFIG_IPACK_BUS is not set
 CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
 # CONFIG_FMC is not set
 
 #
 # PHY Subsystem
 #
 CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_BCM_KONA_USB2_PHY is not set
 # CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+CONFIG_RAS=y
+# CONFIG_MCE_AMD_INJ is not set
+# CONFIG_THUNDERBOLT is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_LIBNVDIMM=m
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_ND_BLK=m
+CONFIG_ND_CLAIM=y
+CONFIG_ND_BTT=m
+CONFIG_BTT=y
+# CONFIG_DEV_DAX is not set
+CONFIG_NVMEM=m
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
 
 #
 # Firmware Drivers
 #
+# CONFIG_ARM_SCPI_PROTOCOL is not set
 CONFIG_EDD=m
 # CONFIG_EDD_OFF is not set
 CONFIG_FIRMWARE_MEMMAP=y
@@ -5078,26 +5860,35 @@ 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_GOOGLE_FIRMWARE is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
 #
 CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
 CONFIG_UEFI_CPER=y
 
 #
 # File systems
 #
 CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_ENCRYPTION is not set
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
@@ -5124,9 +5915,14 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_DEBUG is not set
 CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
 CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
@@ -5144,6 +5940,7 @@ CONFIG_QUOTACTL_COMPAT=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+# CONFIG_OVERLAY_FS is not set
 
 #
 # Caches
@@ -5174,6 +5971,7 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 # CONFIG_NTFS_FS is not set
 
 #
@@ -5182,14 +5980,19 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 CONFIG_PROC_FS=y
 # CONFIG_PROC_KCORE is not set
 CONFIG_PROC_SYSCTL=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
 CONFIG_CONFIGFS_FS=m
+CONFIG_EFIVAR_FS=m
 CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
 # CONFIG_ECRYPT_FS is not set
@@ -5209,14 +6012,16 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_PSTORE=y
+CONFIG_PSTORE_ZLIB_COMPRESS=y
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
 # CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_PMSG is not set
 # CONFIG_PSTORE_FTRACE is not set
 # CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_EFIVAR_FS=m
 CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
@@ -5230,6 +6035,7 @@ CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
 CONFIG_NFS_V4_1_MIGRATION=y
 CONFIG_NFS_V4_SECURITY_LABEL=y
@@ -5242,8 +6048,12 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
+# CONFIG_NFSD_FLEXFILELAYOUT is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -5265,6 +6075,7 @@ CONFIG_CIFS_ACL=y
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_CIFS_DFS_UPCALL=y
 CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
 CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -5332,7 +6143,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 # printk and dmesg options
 #
 # CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
@@ -5346,11 +6157,14 @@ CONFIG_FRAME_WARN=2048
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
+# CONFIG_STACK_VALIDATION is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
@@ -5358,6 +6172,9 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
@@ -5371,6 +6188,10 @@ CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
 CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_HAVE_ARCH_KMEMCHECK=y
+CONFIG_HAVE_ARCH_KASAN=y
+# CONFIG_KASAN is not set
+CONFIG_ARCH_HAS_KCOV=y
+# CONFIG_KCOV is not set
 CONFIG_DEBUG_SHIRQ=y
 
 #
@@ -5383,18 +6204,21 @@ CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
 # CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
 CONFIG_SCHEDSTATS=y
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
 CONFIG_TIMER_STATS=y
 
 #
 # Lock Debugging (spinlocks, mutexes, etc...)
 #
 # CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
@@ -5403,11 +6227,12 @@ CONFIG_TIMER_STATS=y
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
@@ -5415,22 +6240,23 @@ CONFIG_DEBUG_LIST=y
 #
 # RCU Debugging
 #
+# CONFIG_PROVE_RCU is not set
 # CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
@@ -5450,6 +6276,7 @@ CONFIG_FUNCTION_TRACER=y
 CONFIG_FUNCTION_GRAPH_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
+# CONFIG_HWLAT_TRACER is not set
 CONFIG_FTRACE_SYSCALLS=y
 CONFIG_TRACER_SNAPSHOT=y
 # CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
@@ -5466,8 +6293,12 @@ CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 # CONFIG_MMIOTRACE is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
 
 #
 # Runtime Testing
@@ -5480,21 +6311,39 @@ CONFIG_RBTREE_TEST=m
 # CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_HEXDUMP is not set
 # CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
 # CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
 # CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
 CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
 CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_DEBUG_RODATA_TEST=y
 CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
 # CONFIG_DEBUG_TLBFLUSH is not set
@@ -5512,8 +6361,10 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0
 CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
 CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_ENTRY is not set
 # CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+CONFIG_X86_DEBUG_FPU=y
+# CONFIG_PUNIT_ATOM_DEBUG is not set
 
 #
 # Security options
@@ -5523,7 +6374,6 @@ CONFIG_OPTIMIZE_INLINING=y
 # Grsecurity
 #
 CONFIG_TASK_SIZE_MAX_SHIFT=47
-CONFIG_PAX_USERCOPY_SLABS=y
 CONFIG_GRKERNSEC=y
 # CONFIG_GRKERNSEC_CONFIG_AUTO is not set
 CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
@@ -5557,7 +6407,6 @@ CONFIG_PAX_EMUTRAMP=y
 CONFIG_PAX_MPROTECT=y
 # CONFIG_PAX_MPROTECT_COMPAT is not set
 CONFIG_PAX_ELFRELOCS=y
-CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
 
 #
 # Address Space Layout Randomization
@@ -5577,14 +6426,17 @@ CONFIG_PAX_REFCOUNT=y
 CONFIG_PAX_USERCOPY=y
 # CONFIG_PAX_USERCOPY_DEBUG is not set
 # CONFIG_PAX_SIZE_OVERFLOW is not set
+# CONFIG_PAX_INITIFY is not set
+CONFIG_HAVE_PAX_INITIFY_INIT_EXIT=y
 # CONFIG_PAX_LATENT_ENTROPY is not set
+# CONFIG_PAX_RAP is not set
 
 #
 # Memory Protections
 #
 # CONFIG_GRKERNSEC_KMEM is not set
 # CONFIG_GRKERNSEC_IO is not set
-CONFIG_GRKERNSEC_JIT_HARDEN=y
+# CONFIG_GRKERNSEC_BPF_HARDEN is not set
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
@@ -5654,6 +6506,7 @@ CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
 CONFIG_GRKERNSEC_HARDEN_IPC=y
+# CONFIG_GRKERNSEC_HARDEN_TTY is not set
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
@@ -5682,18 +6535,24 @@ CONFIG_KEYS=y
 # CONFIG_PERSISTENT_KEYRINGS is not set
 # CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
-CONFIG_KEYS_DEBUG_PROC_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
 CONFIG_SECURITY_DMESG_RESTRICT=y
 CONFIG_SECURITY=y
 CONFIG_SECURITYFS=y
 CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
 # CONFIG_SECURITY_PATH is not set
 # CONFIG_INTEL_TXT is not set
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY=y
 # CONFIG_SECURITY_SELINUX is not set
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
 # CONFIG_IMA is not set
 # CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
@@ -5709,7 +6568,6 @@ CONFIG_CRYPTO=y
 #
 # Crypto core or helper
 #
-CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=y
@@ -5720,17 +6578,25 @@ CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_ECDH=m
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
-# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_USER=m
 # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_ABLK_HELPER=y
@@ -5741,7 +6607,9 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=y
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
 CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
 
 #
 # Block modes
@@ -5753,6 +6621,7 @@ CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=y
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_KEYWRAP=m
 
 #
 # Hash modes
@@ -5772,6 +6641,8 @@ CONFIG_CRYPTO_CRC32_PCLMUL=m
 CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
 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
@@ -5783,8 +6654,12 @@ CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA1_SSSE3=m
 CONFIG_CRYPTO_SHA256_SSSE3=m
 CONFIG_CRYPTO_SHA512_SSSE3=m
+CONFIG_CRYPTO_SHA1_MB=m
+CONFIG_CRYPTO_SHA256_MB=m
+CONFIG_CRYPTO_SHA512_MB=m
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA3=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
 CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
@@ -5810,10 +6685,13 @@ 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_SALSA20=m
 CONFIG_CRYPTO_SALSA20_X86_64=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
@@ -5830,8 +6708,8 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
 # Compression
 #
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+# CONFIG_CRYPTO_842 is not set
 CONFIG_CRYPTO_LZ4=m
 CONFIG_CRYPTO_LZ4HC=m
 
@@ -5839,35 +6717,60 @@ CONFIG_CRYPTO_LZ4HC=m
 # 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=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
-CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
 CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-# CONFIG_CRYPTO_DEV_CCP is not set
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+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_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
 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_APIC_ARCHITECTURE=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_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
 CONFIG_KVM_MMU_AUDIT=y
 CONFIG_KVM_DEVICE_ASSIGNMENT=y
+CONFIG_VHOST_NET=m
+# CONFIG_VHOST_VSOCK is not set
+CONFIG_VHOST=m
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
 CONFIG_BINARY_PRINTF=y
 
 #
@@ -5875,6 +6778,8 @@ CONFIG_BINARY_PRINTF=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_NET_UTILS=y
@@ -5897,6 +6802,7 @@ CONFIG_CRC32_SLICEBY8=y
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 # CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
@@ -5925,19 +6831,22 @@ CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_RADIX_TREE_MULTIORDER=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=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_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
 CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
 # CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
 CONFIG_UCS2_STRING=y
@@ -5945,3 +6854,9 @@ CONFIG_FONT_SUPPORT=y
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_ARCH_HAS_PMEM_API=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+CONFIG_SBITMAP=y
index 19809615a9312f48ade3c472dd95a4bb5fa49a27..aadd959ec068fd0cd548323b0691d8e141013eeb 100644 (file)
@@ -252,8 +252,8 @@ foreach $subclassentry (sort @subclasses) {
 }
 print <<END
 
-       ### add l7-filter to POSTROUTING chain to see all traffic
-       iptables -t mangle -A POSTROUTING -m layer7 --l7proto unset
+       ### add l7-filter to PREROUTING chain to see all traffic
+       iptables -t mangle -A PREROUTING -m layer7 --l7proto unset
 
        ### ADD QOS-OUT CHAIN TO THE MANGLE TABLE IN IPTABLES
        iptables -t mangle -N QOS-OUT
@@ -715,7 +715,7 @@ print <<END
        iptables -t mangle --flush  QOS-TOS >/dev/null 2>&1
        iptables -t mangle --delete-chain QOS-TOS >/dev/null 2>&1
        # remove l7-filter
-       iptables -t mangle --delete POSTROUTING -m layer7 --l7proto unset
+       iptables -t mangle --delete PREROUTING -m layer7 --l7proto unset
 
        rmmod sch_htb >/dev/null 2>&1
 
index ead8fe28f2e3cb1b93ea67fd4d9ad7a27102dd7b..63f27caa26fd5802b2e2243b833adbd308606238 100644 (file)
@@ -12,13 +12,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32-pclmul.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/salsa20-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-i586.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/events
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd/power.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/iosf_mbi.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
@@ -27,24 +27,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris/iris.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200
-#lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200/scx200.ko
 #lib/modules/KVER-ipfire/kernel/crypto
+#lib/modules/KVER-ipfire/kernel/crypto/842.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_rng.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_pq.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_raid6_recov.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_tx.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/async_tx/raid6test.ko
 #lib/modules/KVER-ipfire/kernel/crypto/authenc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire/kernel/crypto/blowfish_common.ko
@@ -54,30 +49,38 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/cast6_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20poly1305.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crypto_null.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cts.ko
 #lib/modules/KVER-ipfire/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/echainiv.ko
 #lib/modules/KVER-ipfire/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/keywrap.ko
 #lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lz4.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lz4hc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire/kernel/crypto/mcryptd.ko
 #lib/modules/KVER-ipfire/kernel/crypto/md4.ko
 #lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire/kernel/crypto/poly1305_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd128.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd160.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd256.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire/kernel/crypto/rsa_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/seed.ko
 #lib/modules/KVER-ipfire/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/sha3_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha512_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tea.ko
@@ -88,13 +91,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/wp512.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire/kernel/drivers
 #lib/modules/KVER-ipfire/kernel/drivers/acpi
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_configfs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_extlog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf/dptf_power.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/ec_sys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbshc.ko
@@ -103,10 +108,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/acard-ahci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/libahci_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_arasan_cf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_artop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atiixp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atp867x.ko
@@ -152,13 +157,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_dwc_460ex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_promise.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_rcar.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sis.ko
@@ -183,9 +187,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/atm/suni.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/uPD98402.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/zatm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/base
-#lib/modules/KVER-ipfire/kernel/drivers/base/regmap
-#lib/modules/KVER-ipfire/kernel/drivers/base/regmap/regmap-i2c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bcma
 #lib/modules/KVER-ipfire/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block
@@ -195,7 +196,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
 #lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/nvme.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/rsxx
 #lib/modules/KVER-ipfire/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/sx8.ko
@@ -207,8 +207,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bfusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btintel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btrtl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btusb.ko
@@ -219,19 +223,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/char/hangcheck-timer.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/geode-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/intel-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/via-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/i8k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_devintf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_msghandler.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_poweroff.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_ssif.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_watchdog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/lp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/mwave
@@ -239,19 +241,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/char/nsc_gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/pc8736x_gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ppdev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/scx200_gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/sonypi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/toshiba.ko
 #lib/modules/KVER-ipfire/kernel/drivers/clocksource
 #lib/modules/KVER-ipfire/kernel/drivers/clocksource/cs5535-clockevt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource/scx200_hrt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/acpi-cpufreq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq-nforce2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_conservative.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longrun.ko
@@ -267,22 +267,42 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp-crypto.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio/chcr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/geode-aes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/crypto/hifn_795x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dca
-#lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_passive.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_performance.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_powersave.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_simpleondemand.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_userspace.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma
 #lib/modules/KVER-ipfire/kernel/drivers/dma/dw
 #lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
-#lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/idma64.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom/hdma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/qcom/hdma_mgmt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac
+#lib/modules/KVER-ipfire/kernel/drivers/edac/amd64_edac_mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/e752x_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/edac_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/edac_mce_amd.ko
@@ -294,8 +314,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i7300_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i7core_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/ie31200_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/extcon
+#lib/modules/KVER-ipfire/kernel/drivers/extcon/extcon-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-ohci.ko
@@ -304,70 +326,77 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/dcdbas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/dell_rbu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/edd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/efi
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/efi/efibc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/iscsi_ibft.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-cs5535.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ich.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ts5500.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/ch7006.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/sil164.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810/i810.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga/mga.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200/mgag200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau/nouveau.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128/r128.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx/tdfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm/ttm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vgem
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vgem/vgem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-alps.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-asus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-aureal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cmedia.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-corsair.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cp2112.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gembird.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gt683r.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gyration.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-keytouch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-hidpp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ortek.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-penmount.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-picolcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-plantronics.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-rmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-isku.ko
@@ -385,7 +414,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-thingm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-twinhan.ko
@@ -406,6 +434,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/acpi_power_meter.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7414.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adc128d818.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1021.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1025.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1026.ko
@@ -427,6 +456,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/asus_atk0110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/atxp1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dell-smm-hwmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/dme1737.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds620.ko
@@ -437,18 +467,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/f75375s.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fam15h_power.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ftsteutates.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g762.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/htu21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5500_temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmpex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina209.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina3221.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/it87.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k10temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k8temp.ko
@@ -468,20 +500,28 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2990.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4151.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4222.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4260.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4261.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1668.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max31790.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6650.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6697.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6683.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7904.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87427.ko
@@ -490,10 +530,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/lm25066.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max20751.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max8688.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/tps40422.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5627.ko
@@ -501,12 +543,16 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/shtc1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sis5595.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tc74.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/thmc50.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp401.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp421.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/via-cputemp.ko
@@ -537,6 +583,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-emev2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-i801.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-isch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ismt.ko
@@ -557,7 +604,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viapro.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/scx200_acb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
@@ -566,16 +612,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/kfifo_buf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input
 #lib/modules/KVER-ipfire/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adc-keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys_polled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8333.ko
@@ -596,7 +646,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/appletouch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapatp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/psmouse.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/sermouse.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_i2c.ko
@@ -663,6 +713,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds
 #lib/modules/KVER-ipfire/kernel/drivers/leds/dell-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/led-class-flash.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-bd2802.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-clevo-mail.ko
@@ -672,19 +723,23 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm355x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp3944.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp3952.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5562.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8501.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8860.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-net48xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9685.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tlc591xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-wrap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-backlight.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-camera.ko
@@ -695,15 +750,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-timer.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/rrpc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-smq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-crypt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-writes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
@@ -724,7 +783,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/common
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/btcx-risc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/cx2341x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/cypress_firmware.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146
@@ -740,6 +798,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/a8293.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9013.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/as102_fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/atbm8830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
@@ -747,10 +806,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/bcm3510.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22700.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24120.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
@@ -761,45 +820,49 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000p.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib8000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/it913x-fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/itd1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ix2505v.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/l64781.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lg2160.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt330x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88dc2800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88ds3103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88rs2000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a16.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88473.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt312.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt352.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt200x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt6000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51211.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2832.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1409.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1411.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1420.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2168.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp887x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb0899.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6100.ko
@@ -811,6 +874,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv090x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tc90522.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10021.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10023.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10048.ko
@@ -834,10 +898,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7170.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7180.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt819.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt856.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs3308.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs5345.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs53l32a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840
@@ -846,7 +910,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ks0127.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/m52790.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9m111.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7640.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6752hs.ko
@@ -858,7 +924,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/imx074.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
@@ -870,12 +935,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9740.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/sony-btf-mpx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda9840.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6415c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvaudio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/uda1342.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64031a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64083.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vp27smpx.ko
@@ -886,12 +954,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18.ko
@@ -913,6 +975,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge/ddbridge.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155/dt3155.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv.ko
@@ -929,10 +993,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2/pluto2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3/earth-pt3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
@@ -940,6 +1007,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/mxb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10/solo6x10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-av.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-ci.ko
@@ -948,6 +1019,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x/tw686x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/videocodec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36016.ko
@@ -960,32 +1037,28 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1/vsp1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/fintek-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/igorplugusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/iguanair.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-hix5hd2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-jvc-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-lirc-codec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-nec-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc6-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sharp-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-xmp-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ite-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
@@ -1008,6 +1081,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
@@ -1018,6 +1092,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
@@ -1075,7 +1150,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-su3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
@@ -1085,6 +1163,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
@@ -1106,7 +1185,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88rs6000t.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
@@ -1114,10 +1194,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt20xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2131.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl301rf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5005s.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qm1d1c0042.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qt1010.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/si2157.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18212.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18218.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18271.ko
@@ -1128,10 +1211,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-simple.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-types.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner_it913x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc4000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc5000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102/dvb-as102.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828/au0828.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2
@@ -1153,7 +1237,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
@@ -1169,6 +1252,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
@@ -1192,12 +1276,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/s2250.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_benq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_conex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_etoms.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_finepix.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
@@ -1235,6 +1325,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_touptek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vicam.ko
@@ -1258,8 +1349,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300/poseidon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
@@ -1283,13 +1372,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick
@@ -1310,20 +1401,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/bcm590xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/dln2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/exynos-lpass.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-ctrlbank.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_ich.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_sch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/mfd-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/retu-mfd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/rtsx_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/sm501.ko
@@ -1333,13 +1424,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/misc
 #lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl
 #lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cs5535-mfgpt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ds1682.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo/echo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/eeprom.ko
@@ -1368,14 +1459,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/core/mmc_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/mtk-sd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/tifm_sd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/toshsd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/usdhi6rol0.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/vub300.ko
@@ -1383,6 +1475,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/qca8k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/dummy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com
@@ -1403,8 +1503,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/wd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere/et131x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena/ena.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/amd8111e.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/lance.ko
@@ -1421,21 +1528,24 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora/nb8800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/b44.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/tg3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna/bna.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/at91_ether.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda/xgmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -1445,6 +1555,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cirrus
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco
@@ -1463,6 +1575,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ec_bhf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
@@ -1472,14 +1585,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus/ipg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf
@@ -1503,6 +1616,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8842.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
@@ -1517,19 +1635,32 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/s2io.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc/r6040.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek
@@ -1537,8 +1668,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
@@ -1554,6 +1688,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc9420.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun/cassini.ko
@@ -1563,6 +1700,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti/tehuti.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/tlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-rhine.ko
@@ -1572,10 +1710,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/gtp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/hyperv
 #lib/modules/KVER-ipfire/kernel/drivers/net/hyperv/hv_netvsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/macsec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
@@ -1584,23 +1729,34 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/nlmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/aquantia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm7xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83867.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/intel-xway.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bcm-unimac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bitbang.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mscc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/qsemi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/realtek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/smsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/teranetics.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/bsd_comp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/ppp_async.ko
@@ -1624,6 +1780,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ch9200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cx82310_eth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/dm9601.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
@@ -1633,6 +1790,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lan78xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/lg-vl600.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/mcs7830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/net1080.ko
@@ -1653,12 +1811,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/vrf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek/adm8211.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
@@ -1679,109 +1836,138 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
@@ -1794,9 +1980,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem/nvmem_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_ax88796.ko
@@ -1822,13 +2017,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acer-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/alienware-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/amilo-rfkill.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wireless.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-rbtn.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-smbios.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-smo8800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi-aio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-laptop.ko
@@ -1838,9 +2038,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp_accel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-hid.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-rst.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-vbtn.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_ips.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_oaktrail.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_pmc_ipc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_punit_ipc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/mxm-wmi.ko
@@ -1852,19 +2056,25 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/tc1100-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/thinkpad_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/topstar-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_bluetooth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_haps.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/power
-#lib/modules/KVER-ipfire/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply/generic-adc-battery.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pps
 #lib/modules/KVER-ipfire/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ptp
 #lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-abx80x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-da9063.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1286.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1307.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1374.ko
@@ -1878,21 +2088,22 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12057.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-moxart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf85063.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rp5c01.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rs5c372.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8010.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8581.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-stk17ta8.ko
@@ -1917,6 +2128,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/am53c974.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr/arcmsr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/atp870u.ko
@@ -1945,10 +2157,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/dmx3191d.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/dtc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/eata.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esp_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
@@ -1962,7 +2174,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/hptiop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/hv_storvsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/imm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/in2000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/initio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ipr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ips.ko
@@ -1983,8 +2194,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas
@@ -1995,7 +2204,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/libosd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/osd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/pas16.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
@@ -2014,7 +2222,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_sas.ko
@@ -2022,43 +2229,59 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_srp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ses.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sim710.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic/snic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c416.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/t128.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/u14-34f.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/ultrastor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/vmw_pvscsi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd7000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/spmi
+#lib/modules/KVER-ipfire/kernel/drivers/spmi/spmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ssb
 #lib/modules/KVER-ipfire/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmtty.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712/r8712u.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/sm750fb
+#lib/modules/KVER-ipfire/kernel/drivers/staging/sm750fb/sm750fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal
-#lib/modules/KVER-ipfire/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_pch_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_quark_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/thermal-generic-adc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty
 #lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
@@ -2070,6 +2293,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_moxa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/arc_uart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/fsl_lpuart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
@@ -2094,14 +2318,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/ulpi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core/ledtrig-usbport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-keystone.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host
@@ -2112,11 +2341,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/xhci-plat-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image/mdc800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/chaoskey.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ehset.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi62.ko
@@ -2126,15 +2357,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb3503.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb4604.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-fsm-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-tahvo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
@@ -2171,7 +2402,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-cypress.ko
@@ -2186,6 +2416,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -2203,65 +2437,69 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/vhost
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video
-#lib/modules/KVER-ipfire/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/atyfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/apple_bl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/lcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/platform_lcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/pm8941-wled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/console
 #lib/modules/KVER-ipfire/kernel/drivers/video/console/mdacon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/gx1fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/gxfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/geode/lxfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vt8623fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/via
-#lib/modules/KVER-ipfire/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vt8623fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/virtio
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_input.ko
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_mmio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters
@@ -2270,6 +2508,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2490.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2406.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2408.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2423.ko
@@ -2287,8 +2526,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/advantechwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim1535_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cadence_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/cpu5wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/dw_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ebc-c384_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/eurotechwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/f71808e_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
@@ -2302,8 +2543,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/max63xx_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ni903x_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/of_xilinx_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_usb.ko
@@ -2314,7 +2558,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_epx_c3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc520_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sch311x_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/scx200_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/smsc37b787_wdt.ko
@@ -2322,12 +2565,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sp5100_tco.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/via_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697ug_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83877f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83977f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdat_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdt_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ziirave_wdt.ko
 #lib/modules/KVER-ipfire/kernel/fs
 #lib/modules/KVER-ipfire/kernel/fs/btrfs
 #lib/modules/KVER-ipfire/kernel/fs/btrfs/btrfs.ko
@@ -2357,14 +2600,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/fs/nfs
 #lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout
 #lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv2.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv3.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv4.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout
 #lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire/kernel/fs/nfs_common/grace.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfsd
 #lib/modules/KVER-ipfire/kernel/fs/nfsd/nfsd.ko
@@ -2428,6 +2675,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/kernel/trace
 #lib/modules/KVER-ipfire/kernel/kernel/trace/ring_buffer_benchmark.ko
 #lib/modules/KVER-ipfire/kernel/lib
+#lib/modules/KVER-ipfire/kernel/lib/842
+#lib/modules/KVER-ipfire/kernel/lib/842/842_compress.ko
+#lib/modules/KVER-ipfire/kernel/lib/842/842_decompress.ko
 #lib/modules/KVER-ipfire/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire/kernel/lib/cordic.ko
 #lib/modules/KVER-ipfire/kernel/lib/crc-itu-t.ko
@@ -2442,7 +2692,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire/kernel/lib/raid6
 #lib/modules/KVER-ipfire/kernel/lib/raid6/raid6_pq.ko
-#lib/modules/KVER-ipfire/kernel/lib/rbtree_test.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_kmp.ko
@@ -2491,16 +2740,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_log_bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_reject_bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/core
-#lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire/kernel/net/core/devlink.ko
 #lib/modules/KVER-ipfire/kernel/net/hsr
 #lib/modules/KVER-ipfire/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan_iphc.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/fou.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ip_gre.ko
@@ -2518,30 +2769,41 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_REJECT.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_raw.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_h323.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_arp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bbr.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_dctcp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_htcp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_hybla.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_illinois.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_nv.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_scalable.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_vegas.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_veno.ko
@@ -2549,6 +2811,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tunnel4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_beet.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_transport.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_tunnel.ko
@@ -2556,8 +2819,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila/ila.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_udp_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_vti.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
@@ -2579,10 +2846,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
@@ -2602,6 +2876,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ppp.ko
 #lib/modules/KVER-ipfire/kernel/net/mac80211
 #lib/modules/KVER-ipfire/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_router.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set.ko
@@ -2609,9 +2887,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
@@ -2621,11 +2901,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_fo.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lc.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_rr.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sed.ko
@@ -2648,6 +2930,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_log_common.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_amanda.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_ftp.ko
@@ -2655,12 +2939,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_sctp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_redirect.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_synproxy_core.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_inet.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
@@ -2669,16 +2953,23 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_compat.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_counter.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_dup_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_fwd_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_hash.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_limit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_masq.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_meta.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_numgen.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_redir.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_rbtree.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
@@ -2723,6 +3014,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hl.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipcomp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_iprange.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipvs.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_l2tp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_length.ko
@@ -2754,24 +3046,38 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netlink/netlink_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/openvswitch
 #lib/modules/KVER-ipfire/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-vxlan.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill
 #lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill.ko
 #lib/modules/KVER-ipfire/kernel/net/sched
+#lib/modules/KVER-ipfire/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_connmark.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_ife.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbtcindex.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_mirred.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_pedit.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_police.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_vlan.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_bpf.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_flower.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_matchall.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_route.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp6.ko
@@ -2810,6 +3116,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_teql.ko
 #lib/modules/KVER-ipfire/kernel/net/sctp
 #lib/modules/KVER-ipfire/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/sctp/sctp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/sunrpc
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
@@ -2818,6 +3125,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/unix
 #lib/modules/KVER-ipfire/kernel/net/unix/unix_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire/kernel/net/wireless
@@ -2872,9 +3181,21 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx/snd-vx-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-dice.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/dice
+#lib/modules/KVER-ipfire/kernel/sound/firewire/dice/snd-dice.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw/snd-oxfw.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire/kernel/sound/hda
+#lib/modules/KVER-ipfire/kernel/sound/hda/snd-hda-core.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4113.ko
@@ -3053,10 +3374,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/usb
 #lib/modules/KVER-ipfire/kernel/sound/usb/6fire
 #lib/modules/KVER-ipfire/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000/snd-bcd2000.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/hiface
 #lib/modules/KVER-ipfire/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-variax.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc/snd-ua101.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/snd-usb-audio.ko
@@ -3064,6 +3393,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-us122l.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire/kernel/virt
+#lib/modules/KVER-ipfire/kernel/virt/lib
+#lib/modules/KVER-ipfire/kernel/virt/lib/irqbypass.ko
 #lib/modules/KVER-ipfire/modules.alias
 #lib/modules/KVER-ipfire/modules.alias.bin
 #lib/modules/KVER-ipfire/modules.builtin
index 804a61043068f17b04036f827b817a2664e9fa22..25b61f8640ec69733674ba70d348f054f11db0f1 100644 (file)
@@ -53,6 +53,7 @@
 #usr/include/asm/ist.h
 #usr/include/asm/kvm.h
 #usr/include/asm/kvm_para.h
+#usr/include/asm/kvm_perf.h
 #usr/include/asm/ldt.h
 #usr/include/asm/mce.h
 #usr/include/asm/mman.h
@@ -97,6 +98,7 @@
 #usr/include/asm/vmx.h
 #usr/include/asm/vsyscall.h
 #usr/include/drm
+#usr/include/drm/amdgpu_drm.h
 #usr/include/drm/drm.h
 #usr/include/drm/drm_fourcc.h
 #usr/include/drm/drm_mode.h
 #usr/include/drm/savage_drm.h
 #usr/include/drm/sis_drm.h
 #usr/include/drm/tegra_drm.h
+#usr/include/drm/vc4_drm.h
 #usr/include/drm/via_drm.h
+#usr/include/drm/virtgpu_drm.h
 #usr/include/drm/vmwgfx_drm.h
 #usr/include/linux
 #usr/include/linux/a.out.h
 #usr/include/linux/affs_hardblocks.h
 #usr/include/linux/agpgart.h
 #usr/include/linux/aio_abi.h
+#usr/include/linux/am437x-vpfe.h
+#usr/include/linux/android
+#usr/include/linux/android/binder.h
 #usr/include/linux/apm_bios.h
 #usr/include/linux/arcfb.h
 #usr/include/linux/atalk.h
 #usr/include/linux/binfmts.h
 #usr/include/linux/blkpg.h
 #usr/include/linux/blktrace_api.h
+#usr/include/linux/bpf.h
+#usr/include/linux/bpf_common.h
+#usr/include/linux/bpf_perf_event.h
 #usr/include/linux/bpqether.h
 #usr/include/linux/bsg.h
+#usr/include/linux/bt-bmc.h
 #usr/include/linux/btrfs.h
 #usr/include/linux/byteorder
 #usr/include/linux/byteorder/big_endian.h
 #usr/include/linux/cycx_cfm.h
 #usr/include/linux/dcbnl.h
 #usr/include/linux/dccp.h
+#usr/include/linux/devlink.h
 #usr/include/linux/dlm.h
 #usr/include/linux/dlm_device.h
 #usr/include/linux/dlm_netlink.h
 #usr/include/linux/firewire-cdev.h
 #usr/include/linux/firewire-constants.h
 #usr/include/linux/flat.h
+#usr/include/linux/fou.h
 #usr/include/linux/fs.h
 #usr/include/linux/fsl_hypervisor.h
 #usr/include/linux/fuse.h
 #usr/include/linux/genetlink.h
 #usr/include/linux/gfs2_ondisk.h
 #usr/include/linux/gigaset_dev.h
+#usr/include/linux/gpio.h
+#usr/include/linux/gsmmux.h
+#usr/include/linux/gtp.h
 #usr/include/linux/hdlc
 #usr/include/linux/hdlc.h
 #usr/include/linux/hdlc/ioctl.h
 #usr/include/linux/hidraw.h
 #usr/include/linux/hpet.h
 #usr/include/linux/hsi
+#usr/include/linux/hsi/cs-protocol.h
 #usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hsr_netlink.h
 #usr/include/linux/hw_breakpoint.h
+#usr/include/linux/hyperv.h
 #usr/include/linux/hysdn_if.h
 #usr/include/linux/i2c-dev.h
 #usr/include/linux/i2c.h
 #usr/include/linux/if_infiniband.h
 #usr/include/linux/if_link.h
 #usr/include/linux/if_ltalk.h
+#usr/include/linux/if_macsec.h
 #usr/include/linux/if_packet.h
 #usr/include/linux/if_phonet.h
 #usr/include/linux/if_plip.h
 #usr/include/linux/if_vlan.h
 #usr/include/linux/if_x25.h
 #usr/include/linux/igmp.h
+#usr/include/linux/iio
+#usr/include/linux/iio/events.h
+#usr/include/linux/iio/types.h
+#usr/include/linux/ila.h
 #usr/include/linux/in.h
 #usr/include/linux/in6.h
 #usr/include/linux/in_route.h
 #usr/include/linux/inet_diag.h
 #usr/include/linux/inotify.h
+#usr/include/linux/input-event-codes.h
 #usr/include/linux/input.h
 #usr/include/linux/ioctl.h
 #usr/include/linux/ip.h
 #usr/include/linux/ixjuser.h
 #usr/include/linux/jffs2.h
 #usr/include/linux/joystick.h
+#usr/include/linux/kcmp.h
 #usr/include/linux/kd.h
 #usr/include/linux/kdev_t.h
 #usr/include/linux/kernel-page-flags.h
 #usr/include/linux/l2tp.h
 #usr/include/linux/libc-compat.h
 #usr/include/linux/limits.h
+#usr/include/linux/lirc.h
 #usr/include/linux/llc.h
 #usr/include/linux/loop.h
 #usr/include/linux/lp.h
+#usr/include/linux/lwtunnel.h
 #usr/include/linux/magic.h
 #usr/include/linux/major.h
 #usr/include/linux/map_to_7segment.h
 #usr/include/linux/matroxfb.h
 #usr/include/linux/mdio.h
+#usr/include/linux/media-bus-format.h
 #usr/include/linux/media.h
 #usr/include/linux/mei.h
+#usr/include/linux/membarrier.h
+#usr/include/linux/memfd.h
 #usr/include/linux/mempolicy.h
 #usr/include/linux/meye.h
 #usr/include/linux/mic_common.h
 #usr/include/linux/mmc
 #usr/include/linux/mmc/ioctl.h
 #usr/include/linux/mmtimer.h
+#usr/include/linux/mpls.h
+#usr/include/linux/mpls_iptunnel.h
 #usr/include/linux/mqueue.h
 #usr/include/linux/mroute.h
 #usr/include/linux/mroute6.h
 #usr/include/linux/ncp_fs.h
 #usr/include/linux/ncp_mount.h
 #usr/include/linux/ncp_no.h
+#usr/include/linux/ndctl.h
 #usr/include/linux/neighbour.h
 #usr/include/linux/net.h
 #usr/include/linux/net_dropmon.h
+#usr/include/linux/net_namespace.h
 #usr/include/linux/net_tstamp.h
 #usr/include/linux/netconf.h
 #usr/include/linux/netdevice.h
 #usr/include/linux/netfilter/nf_conntrack_sctp.h
 #usr/include/linux/netfilter/nf_conntrack_tcp.h
 #usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_log.h
 #usr/include/linux/netfilter/nf_nat.h
 #usr/include/linux/netfilter/nf_tables.h
 #usr/include/linux/netfilter/nf_tables_compat.h
 #usr/include/linux/netfilter/xt_NFQUEUE.h
 #usr/include/linux/netfilter/xt_RATEEST.h
 #usr/include/linux/netfilter/xt_SECMARK.h
+#usr/include/linux/netfilter/xt_SYNPROXY.h
 #usr/include/linux/netfilter/xt_TCPMSS.h
 #usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
 #usr/include/linux/netfilter/xt_TEE.h
 #usr/include/linux/netfilter/xt_iprange.h
 #usr/include/linux/netfilter/xt_ipvs.h
 #usr/include/linux/netfilter/xt_l2tp.h
-#usr/include/linux/netfilter/xt_layer7.h
 #usr/include/linux/netfilter/xt_length.h
 #usr/include/linux/netfilter/xt_limit.h
 #usr/include/linux/netfilter/xt_mac.h
 #usr/include/linux/netfilter_bridge/ebt_pkttype.h
 #usr/include/linux/netfilter_bridge/ebt_redirect.h
 #usr/include/linux/netfilter_bridge/ebt_stp.h
-#usr/include/linux/netfilter_bridge/ebt_ulog.h
 #usr/include/linux/netfilter_bridge/ebt_vlan.h
 #usr/include/linux/netfilter_bridge/ebtables.h
 #usr/include/linux/netfilter_decnet.h
 #usr/include/linux/netfilter_ipv4/ipt_LOG.h
 #usr/include/linux/netfilter_ipv4/ipt_REJECT.h
 #usr/include/linux/netfilter_ipv4/ipt_TTL.h
-#usr/include/linux/netfilter_ipv4/ipt_ULOG.h
 #usr/include/linux/netfilter_ipv4/ipt_ah.h
 #usr/include/linux/netfilter_ipv4/ipt_ecn.h
 #usr/include/linux/netfilter_ipv4/ipt_ttl.h
 #usr/include/linux/nfsd/stats.h
 #usr/include/linux/nl80211.h
 #usr/include/linux/nubus.h
-#usr/include/linux/nvme.h
+#usr/include/linux/nvme_ioctl.h
 #usr/include/linux/nvram.h
 #usr/include/linux/omap3isp.h
 #usr/include/linux/omapfb.h
 #usr/include/linux/pktcdvd.h
 #usr/include/linux/pmu.h
 #usr/include/linux/poll.h
+#usr/include/linux/posix_acl.h
+#usr/include/linux/posix_acl_xattr.h
 #usr/include/linux/posix_types.h
 #usr/include/linux/ppdev.h
 #usr/include/linux/ppp-comp.h
 #usr/include/linux/ppp_defs.h
 #usr/include/linux/pps.h
 #usr/include/linux/prctl.h
+#usr/include/linux/psci.h
 #usr/include/linux/ptp_clock.h
 #usr/include/linux/ptrace.h
 #usr/include/linux/qnx4_fs.h
 #usr/include/linux/reiserfs_xattr.h
 #usr/include/linux/resource.h
 #usr/include/linux/rfkill.h
+#usr/include/linux/rio_cm_cdev.h
+#usr/include/linux/rio_mport_cdev.h
 #usr/include/linux/romfs_fs.h
 #usr/include/linux/rose.h
 #usr/include/linux/route.h
 #usr/include/linux/rtnetlink.h
 #usr/include/linux/scc.h
 #usr/include/linux/sched.h
+#usr/include/linux/scif_ioctl.h
 #usr/include/linux/screen_info.h
 #usr/include/linux/sctp.h
 #usr/include/linux/sdla.h
 #usr/include/linux/shm.h
 #usr/include/linux/signal.h
 #usr/include/linux/signalfd.h
+#usr/include/linux/smiapp.h
 #usr/include/linux/snmp.h
 #usr/include/linux/sock_diag.h
 #usr/include/linux/socket.h
 #usr/include/linux/sockios.h
-#usr/include/linux/som.h
 #usr/include/linux/sonet.h
 #usr/include/linux/sonypi.h
 #usr/include/linux/sound.h
 #usr/include/linux/sunrpc/debug.h
 #usr/include/linux/suspend_ioctls.h
 #usr/include/linux/swab.h
+#usr/include/linux/sync_file.h
 #usr/include/linux/synclink.h
 #usr/include/linux/sysctl.h
 #usr/include/linux/sysinfo.h
+#usr/include/linux/target_core_user.h
 #usr/include/linux/taskstats.h
 #usr/include/linux/tc_act
+#usr/include/linux/tc_act/tc_bpf.h
+#usr/include/linux/tc_act/tc_connmark.h
 #usr/include/linux/tc_act/tc_csum.h
 #usr/include/linux/tc_act/tc_defact.h
 #usr/include/linux/tc_act/tc_gact.h
+#usr/include/linux/tc_act/tc_ife.h
 #usr/include/linux/tc_act/tc_ipt.h
 #usr/include/linux/tc_act/tc_mirred.h
 #usr/include/linux/tc_act/tc_nat.h
 #usr/include/linux/tc_act/tc_pedit.h
 #usr/include/linux/tc_act/tc_skbedit.h
+#usr/include/linux/tc_act/tc_skbmod.h
+#usr/include/linux/tc_act/tc_tunnel_key.h
+#usr/include/linux/tc_act/tc_vlan.h
 #usr/include/linux/tc_ematch
 #usr/include/linux/tc_ematch/tc_em_cmp.h
 #usr/include/linux/tc_ematch/tc_em_meta.h
 #usr/include/linux/tcp_metrics.h
 #usr/include/linux/telephony.h
 #usr/include/linux/termios.h
+#usr/include/linux/thermal.h
 #usr/include/linux/time.h
 #usr/include/linux/times.h
 #usr/include/linux/timex.h
 #usr/include/linux/tiocl.h
 #usr/include/linux/tipc.h
 #usr/include/linux/tipc_config.h
+#usr/include/linux/tipc_netlink.h
 #usr/include/linux/toshiba.h
 #usr/include/linux/tty.h
 #usr/include/linux/tty_flags.h
 #usr/include/linux/usb/tmc.h
 #usr/include/linux/usb/video.h
 #usr/include/linux/usbdevice_fs.h
+#usr/include/linux/usbip.h
+#usr/include/linux/userfaultfd.h
 #usr/include/linux/utime.h
 #usr/include/linux/utsname.h
 #usr/include/linux/uuid.h
 #usr/include/linux/virtio_blk.h
 #usr/include/linux/virtio_config.h
 #usr/include/linux/virtio_console.h
+#usr/include/linux/virtio_gpu.h
 #usr/include/linux/virtio_ids.h
+#usr/include/linux/virtio_input.h
 #usr/include/linux/virtio_net.h
 #usr/include/linux/virtio_pci.h
 #usr/include/linux/virtio_ring.h
 #usr/include/linux/virtio_rng.h
+#usr/include/linux/virtio_scsi.h
+#usr/include/linux/virtio_types.h
+#usr/include/linux/virtio_vsock.h
+#usr/include/linux/vm_sockets.h
 #usr/include/linux/vt.h
+#usr/include/linux/vtpm_proxy.h
 #usr/include/linux/wait.h
 #usr/include/linux/wanrouter.h
 #usr/include/linux/watchdog.h
 #usr/include/linux/x25.h
 #usr/include/linux/xattr.h
 #usr/include/linux/xfrm.h
+#usr/include/linux/xilinx-v4l2-controls.h
 #usr/include/linux/zorro.h
 #usr/include/linux/zorro_ids.h
+#usr/include/misc
+#usr/include/misc/cxl.h
 #usr/include/mtd
 #usr/include/mtd/inftl-user.h
 #usr/include/mtd/mtd-abi.h
 #usr/include/mtd/nftl-user.h
 #usr/include/mtd/ubi-user.h
 #usr/include/rdma
+#usr/include/rdma/cxgb3-abi.h
+#usr/include/rdma/cxgb4-abi.h
+#usr/include/rdma/hfi
+#usr/include/rdma/hfi/hfi1_user.h
 #usr/include/rdma/ib_user_cm.h
 #usr/include/rdma/ib_user_mad.h
 #usr/include/rdma/ib_user_sa.h
 #usr/include/rdma/ib_user_verbs.h
+#usr/include/rdma/mlx4-abi.h
+#usr/include/rdma/mlx5-abi.h
+#usr/include/rdma/mthca-abi.h
+#usr/include/rdma/nes-abi.h
+#usr/include/rdma/ocrdma-abi.h
 #usr/include/rdma/rdma_netlink.h
 #usr/include/rdma/rdma_user_cm.h
+#usr/include/rdma/rdma_user_rxe.h
 #usr/include/scsi
+#usr/include/scsi/cxlflash_ioctl.h
 #usr/include/scsi/fc
 #usr/include/scsi/fc/fc_els.h
 #usr/include/scsi/fc/fc_fs.h
 #usr/include/scsi/scsi_netlink_fc.h
 #usr/include/sound
 #usr/include/sound/asequencer.h
+#usr/include/sound/asoc.h
 #usr/include/sound/asound.h
 #usr/include/sound/asound_fm.h
 #usr/include/sound/compress_offload.h
 #usr/include/sound/hdspm.h
 #usr/include/sound/sb16_csp.h
 #usr/include/sound/sfnt_info.h
+#usr/include/sound/snd_sst_tokens.h
+#usr/include/sound/tlv.h
+#usr/include/sound/usb_stream.h
 #usr/include/uapi
 #usr/include/video
 #usr/include/video/edid.h
index 65c080e3b2ce6ca3d9d531b30b9a8a7433bf7d05..764a84b2175859b45603abe672567af59b300d16 100644 (file)
@@ -17,40 +17,45 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/camellia-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/cast5-avx-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/cast6-avx-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/chacha20-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32-pclmul.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crct10dif-pclmul.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/des3_ede-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/poly1305-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/salsa20-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-avx-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-avx2.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-mb/sha1-mb.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha1-ssse3.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-mb/sha256-mb.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha256-ssse3.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-mb
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-mb/sha512-mb.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/sha512-ssse3.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-avx-x86_64.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-x86_64-3way.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-x86_64.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/events
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire/kernel/arch/x86/events/amd/power.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/ia32
 #lib/modules/KVER-ipfire/kernel/arch/x86/ia32/ia32_aout.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/iosf_mbi.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-intel.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm.ko
 #lib/modules/KVER-ipfire/kernel/crypto
+#lib/modules/KVER-ipfire/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire/kernel/crypto/algif_rng.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_pq.ko
@@ -67,30 +72,40 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/cast6_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/chacha20poly1305.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crypto_null.ko
+#lib/modules/KVER-ipfire/kernel/crypto/crypto_user.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cts.ko
 #lib/modules/KVER-ipfire/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/echainiv.ko
 #lib/modules/KVER-ipfire/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/keywrap.ko
 #lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lz4.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lz4hc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire/kernel/crypto/mcryptd.ko
 #lib/modules/KVER-ipfire/kernel/crypto/md4.ko
 #lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire/kernel/crypto/poly1305_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd128.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd160.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd256.ko
 #lib/modules/KVER-ipfire/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire/kernel/crypto/rsa_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/seed.ko
 #lib/modules/KVER-ipfire/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/sha3_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha512_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tea.ko
@@ -101,14 +116,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/wp512.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire/kernel/drivers
 #lib/modules/KVER-ipfire/kernel/drivers/acpi
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_configfs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_extlog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/dptf/dptf_power.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/ec_sys.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/nfit
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/nfit/nfit.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbshc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/video.ko
@@ -116,18 +135,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/acard-ahci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/libahci_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_arasan_cf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_artop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atiixp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_atp867x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cmd640.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cmd64x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5520.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5536.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cypress.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_efar.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_hpt366.ko
@@ -155,7 +171,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_radisys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rdc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sc1200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_serverworks.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_sil680.ko
@@ -164,13 +179,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_dwc_460ex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_promise.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_rcar.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sis.ko
@@ -207,7 +221,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
 #lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/nvme.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/rsxx
 #lib/modules/KVER-ipfire/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/skd.ko
@@ -223,44 +236,44 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bfusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bt3c_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btintel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btrtl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btwilink.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/dtl1_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_vhci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char
 #lib/modules/KVER-ipfire/kernel/drivers/char/hangcheck-timer.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/intel-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/via-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/i8k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_devintf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_msghandler.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_poweroff.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_ssif.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ipmi/ipmi_watchdog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/lp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/mwave
 #lib/modules/KVER-ipfire/kernel/drivers/char/mwave/mwave.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource
-#lib/modules/KVER-ipfire/kernel/drivers/clocksource/cs5535-clockevt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/acpi-cpufreq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_conservative.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/p4-clockmod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/pcc-cpufreq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k8.ko
@@ -269,19 +282,34 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp-crypto.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/chelsio/chcr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-sha.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dca
 #lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire/kernel/drivers/devfreq/governor_simpleondemand.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma
 #lib/modules/KVER-ipfire/kernel/drivers/dma/dw
 #lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/timb_dma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac
 #lib/modules/KVER-ipfire/kernel/drivers/edac/amd64_edac_mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/e752x_edac.ko
@@ -295,9 +323,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i7300_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i7core_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/edac/mce_amd_inj.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/sb_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/skx_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/extcon
+#lib/modules/KVER-ipfire/kernel/drivers/extcon/extcon-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-ohci.ko
@@ -308,66 +338,66 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/edd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/iscsi_ibft.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-amdpt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-dwapb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-f7188x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-generic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ich.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-it87.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-mockup.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch311x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-tpic2810.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/ch7006.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/sil164.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810/i810.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga/mga.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200/mgag200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau/nouveau.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128/r128.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx/tdfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm/ttm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-asus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gyration.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-keytouch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-hidpp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ortek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-picolcd.ko
@@ -388,13 +418,16 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-thingm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-twinhan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-zydacron.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid
 #lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ish-ipc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ishtp-hid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/intel-ish-hid/intel-ishtp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hsi
 #lib/modules/KVER-ipfire/kernel/drivers/hsi/clients
 #lib/modules/KVER-ipfire/kernel/drivers/hsi/clients/hsi_char.ko
@@ -409,6 +442,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/acpi_power_meter.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7414.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adc128d818.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1021.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1025.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm1026.ko
@@ -430,6 +464,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/asus_atk0110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/atxp1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/dell-smm-hwmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/dme1737.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds620.ko
@@ -440,18 +475,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/f75375s.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fam15h_power.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ftsteutates.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g762.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/htu21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5500_temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmpex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina209.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina3221.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/it87.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k10temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k8temp.ko
@@ -471,20 +508,28 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc2990.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4151.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4222.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4260.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4261.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1668.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max31790.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6650.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6697.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6683.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct7904.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87427.ko
@@ -492,24 +537,32 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/lm25066.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ltc3815.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max20751.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max8688.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/tps40422.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/powr1220.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5627.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5636.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/shtc1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sis5595.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tc74.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/thmc50.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp401.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/tmp421.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/via-cputemp.ko
@@ -540,6 +593,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-emev2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-i801.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-isch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ismt.ko
@@ -562,22 +616,27 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-slave-eeprom.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/buffer/kfifo_buf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input
 #lib/modules/KVER-ipfire/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adc-keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys_polled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8333.ko
@@ -598,7 +657,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/appletouch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapatp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/psmouse.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/sermouse.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_i2c.ko
@@ -664,7 +723,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds
-#lib/modules/KVER-ipfire/kernel/drivers/leds/dell-led.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-bd2802.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-clevo-mail.ko
@@ -680,11 +738,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8501.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9685.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
@@ -697,15 +753,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-timer.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/lightnvm/rrpc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-smq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-crypt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-writes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
@@ -726,7 +786,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/common
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/btcx-risc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/cx2341x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/cypress_firmware.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146
@@ -742,6 +801,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/a8293.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9013.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/as102_fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/atbm8830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
@@ -749,10 +809,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/bcm3510.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22700.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24120.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
@@ -763,45 +823,49 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000p.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib8000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/it913x-fe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/itd1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ix2505v.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/l64781.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lg2160.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt330x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88dc2800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88ds3103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88rs2000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a16.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mn88473.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt312.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt352.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt200x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt6000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51211.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2832.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1409.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1411.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1420.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si2168.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp887x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb0899.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6100.ko
@@ -813,6 +877,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv090x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tc90522.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10021.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10023.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10048.ko
@@ -836,10 +901,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7170.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7180.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt819.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt856.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs3308.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs5345.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs53l32a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840
@@ -848,7 +913,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ks0127.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/m52790.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9m111.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7640.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6752hs.ko
@@ -860,7 +927,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/imx074.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
@@ -872,12 +938,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9740.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/sony-btf-mpx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda9840.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6415c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvaudio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/uda1342.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64031a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64083.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vp27smpx.ko
@@ -888,12 +957,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18.ko
@@ -915,6 +978,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge/ddbridge.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dt3155/dt3155.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv.ko
@@ -931,10 +996,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2/pluto2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt3/earth-pt3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
@@ -942,6 +1010,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/mxb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/solo6x10/solo6x10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-av.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-ci.ko
@@ -950,6 +1022,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/tw686x/tw686x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/videocodec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36016.ko
@@ -962,32 +1040,28 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1/vsp1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/fintek-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/igorplugusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/iguanair.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-hix5hd2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-jvc-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-lirc-codec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-nec-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc6-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sharp-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-xmp-decoder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ite-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
@@ -1010,6 +1084,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-behold.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
@@ -1020,6 +1095,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
@@ -1077,7 +1153,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-su3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
@@ -1087,6 +1166,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
@@ -1108,7 +1188,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88rs6000t.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
@@ -1116,10 +1197,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt20xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2131.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl301rf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5005s.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qm1d1c0042.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qt1010.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/si2157.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18212.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18218.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18271.ko
@@ -1130,10 +1214,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-simple.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-types.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner_it913x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc4000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc5000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/as102/dvb-as102.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828/au0828.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2
@@ -1155,7 +1240,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
@@ -1171,6 +1255,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
@@ -1194,12 +1279,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/go7007/s2250.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_benq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_conex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_etoms.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_finepix.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
@@ -1237,6 +1328,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_touptek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vicam.ko
@@ -1260,8 +1352,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300/poseidon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
@@ -1285,13 +1375,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick
@@ -1312,15 +1404,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/bcm590xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/dln2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-ctrlbank.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_ich.ko
@@ -1335,13 +1426,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/misc
 #lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl
 #lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710/cb710.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/cs5535-mfgpt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ds1682.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire/kernel/drivers/misc/echo/echo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/eeprom.ko
@@ -1357,12 +1447,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ics932s401.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d
 #lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/card
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/card/mic_card.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/host
-#lib/modules/KVER-ipfire/kernel/drivers/misc/mic/host/mic_host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/pch_phub.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st/st_drv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/tifm_7xx1.ko
@@ -1381,8 +1465,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/tifm_sd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/ushc.ko
@@ -1392,6 +1474,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/dsa/qca8k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/dummy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com
@@ -1406,8 +1496,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/agere/et131x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amazon/ena/ena.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/amd8111e.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
@@ -1422,21 +1519,32 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/aurora/nb8800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/b44.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/broadcom/tg3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna/bna.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/at91_ether.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda/xgmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/liquidio
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/liquidio/liquidio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/nicpf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/nicvf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/thunder_bgx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cavium/thunder/thunder_xcv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -1446,6 +1554,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic/enic.ko
@@ -1462,6 +1572,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ec_bhf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
@@ -1471,14 +1582,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus/ipg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf
@@ -1502,6 +1613,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5/core
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8842.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
@@ -1516,19 +1635,26 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/s2io.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rdc/r6040.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek
@@ -1536,8 +1662,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
@@ -1552,6 +1681,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc9420.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sun/cassini.ko
@@ -1561,6 +1693,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/tehuti/tehuti.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ti/tlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-rhine.ko
@@ -1570,10 +1703,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/gtp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/hyperv
 #lib/modules/KVER-ipfire/kernel/drivers/net/hyperv/hv_netvsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/macsec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
@@ -1582,23 +1722,37 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/nlmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/aquantia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm7xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83867.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/intel-xway.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bcm-unimac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bitbang.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-cavium.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-octeon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-thunder.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mscc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/qsemi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/realtek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/smsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/teranetics.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/bsd_comp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/ppp_async.ko
@@ -1609,6 +1763,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppox.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pptp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/sb1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/slip
 #lib/modules/KVER-ipfire/kernel/drivers/net/slip/slhc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/sungem_phy.ko
@@ -1622,6 +1777,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ch9200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cx82310_eth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/dm9601.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
@@ -1631,6 +1787,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/lan78xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/lg-vl600.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/mcs7830.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/net1080.ko
@@ -1651,12 +1808,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/vrf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/admtek/adm8211.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
@@ -1677,107 +1833,138 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
@@ -1790,12 +1977,27 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/xen-netback
 #lib/modules/KVER-ipfire/kernel/drivers/net/xen-netback/xen-netback.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/xen-netfront.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/libnvdimm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_blk.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_btt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_e820.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvdimm/nd_pmem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire/kernel/drivers/nvmem/nvmem_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_ax88796.ko
@@ -1803,6 +2005,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_pc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_serial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pci
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host/pci-hyperv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pci/host/vmd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug
 #lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug/acpiphp_ibm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pci/pcie
@@ -1816,6 +2021,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia/pcmcia_rsrc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia/pd6729.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia/yenta_socket.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-broxton.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-cherryview.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-intel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/intel/pinctrl-sunrisepoint.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pinctrl/pinctrl-amd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acer-wmi.ko
@@ -1826,9 +2038,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi-aio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/fujitsu-laptop.ko
@@ -1853,15 +2063,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_bluetooth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/power
-#lib/modules/KVER-ipfire/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire/kernel/drivers/power/supply/generic-adc-battery.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pps
 #lib/modules/KVER-ipfire/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ptp
 #lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-abx80x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-da9063.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1286.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1307.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1374.ko
@@ -1875,23 +2088,26 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12057.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t86.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-moxart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf85063.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rp5c01.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rs5c372.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8010.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8581.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-s35390a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-stk17ta8.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-x1205.ko
@@ -1909,6 +2125,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/am53c974.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/arcmsr/arcmsr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/atp870u.ko
@@ -1940,6 +2157,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/eata.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esp_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
@@ -1971,8 +2189,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_mm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas
@@ -1998,45 +2214,62 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_spi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_srp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ses.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/snic/snic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/tmscsim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/vmw_pvscsi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/xen-scsifront.ko
+#lib/modules/KVER-ipfire/kernel/drivers/spmi
+#lib/modules/KVER-ipfire/kernel/drivers/spmi/spmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ssb
 #lib/modules/KVER-ipfire/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmtty.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rtl8712/r8712u.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal
-#lib/modules/KVER-ipfire/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_pch_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/thermal-generic-adc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty
 #lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
@@ -2053,6 +2286,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm/jsm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/sc16is7xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/sccnxp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/synclink.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/synclink_gt.ko
@@ -2072,14 +2306,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire/kernel/drivers/usb/core/ledtrig-usbport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-keystone.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host
@@ -2091,6 +2329,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/xhci-plat-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image/mdc800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
@@ -2106,14 +2345,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb3503.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-fsm-usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
@@ -2150,7 +2386,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-cypress.ko
@@ -2165,6 +2400,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -2182,60 +2421,64 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/vhost
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video
-#lib/modules/KVER-ipfire/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/atyfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/apple_bl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/lcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/pm8941-wled.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/vt8623fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/fbdev/xen-fbfront.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/via
-#lib/modules/KVER-ipfire/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/vt8623fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/xen-fbfront.ko
 #lib/modules/KVER-ipfire/kernel/drivers/virtio
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_input.ko
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_mmio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters
@@ -2244,6 +2487,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2490.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2406.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2408.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2423.ko
@@ -2261,11 +2505,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/advantechwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim1535_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/cadence_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/cpu5wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/dw_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/eurotechwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/f71808e_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/hpwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/i6300esb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/iTCO_vendor_support.ko
@@ -2276,31 +2520,32 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/max63xx_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ni903x_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/of_xilinx_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/retu_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc60xxwdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc8360.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_epx_c3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/sc520_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sch311x_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/smsc37b787_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/softdog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sp5100_tco.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/via_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697ug_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83877f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83977f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdat_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdt_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/xen_wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ziirave_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/xen
 #lib/modules/KVER-ipfire/kernel/drivers/xen/tmem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/xen/xen-acpi-processor.ko
@@ -2341,14 +2586,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/fs/nfs
 #lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout
 #lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv2.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv3.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv4.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout
 #lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire/kernel/fs/nfs_common/grace.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfsd
 #lib/modules/KVER-ipfire/kernel/fs/nfsd/nfsd.ko
@@ -2475,16 +2724,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_log_bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nft_reject_bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/core
-#lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire/kernel/net/core/devlink.ko
 #lib/modules/KVER-ipfire/kernel/net/hsr
 #lib/modules/KVER-ipfire/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan_iphc.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/fou.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ip_gre.ko
@@ -2508,23 +2759,35 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_raw.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_h323.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_arp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bbr.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_dctcp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_htcp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_hybla.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_illinois.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_nv.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_scalable.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_vegas.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_veno.ko
@@ -2532,6 +2795,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tunnel4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_beet.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_transport.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_tunnel.ko
@@ -2539,8 +2803,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ila/ila.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_udp_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_vti.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
@@ -2562,10 +2830,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
@@ -2585,6 +2860,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ppp.ko
 #lib/modules/KVER-ipfire/kernel/net/mac80211
 #lib/modules/KVER-ipfire/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/mpls/mpls_router.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set.ko
@@ -2592,9 +2871,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
@@ -2604,11 +2885,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_fo.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lc.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_rr.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sed.ko
@@ -2631,6 +2914,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_log_common.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_amanda.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_ftp.ko
@@ -2638,10 +2923,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_sctp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_redirect.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_synproxy_core.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
@@ -2650,16 +2937,23 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_compat.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_counter.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_dup_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_fwd_netdev.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_hash.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_limit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_masq.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_meta.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_numgen.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_redir.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_set_rbtree.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
@@ -2736,24 +3030,38 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netlink/netlink_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/openvswitch
 #lib/modules/KVER-ipfire/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/vport-vxlan.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill
 #lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill.ko
 #lib/modules/KVER-ipfire/kernel/net/sched
+#lib/modules/KVER-ipfire/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_connmark.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_ife.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_meta_skbtcindex.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_mirred.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_pedit.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_police.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/act_vlan.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_bpf.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_flower.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_matchall.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_route.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_rsvp6.ko
@@ -2792,6 +3100,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_teql.ko
 #lib/modules/KVER-ipfire/kernel/net/sctp
 #lib/modules/KVER-ipfire/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/sctp/sctp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/sunrpc
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
@@ -2800,6 +3109,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/unix
 #lib/modules/KVER-ipfire/kernel/net/unix/unix_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
 #lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire/kernel/net/wireless
@@ -2851,8 +3162,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx/snd-vx-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire/kernel/sound/firewire/oxfw/snd-oxfw.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire/kernel/sound/hda
+#lib/modules/KVER-ipfire/kernel/sound/hda/snd-hda-core.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4113.ko
@@ -2864,7 +3186,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/isa
 #lib/modules/KVER-ipfire/kernel/sound/isa/sb
 #lib/modules/KVER-ipfire/kernel/sound/isa/sb/snd-sb-common.ko
-#lib/modules/KVER-ipfire/kernel/sound/isa/sb/snd-sb16-dsp.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci
 #lib/modules/KVER-ipfire/kernel/sound/pci/ac97
 #lib/modules/KVER-ipfire/kernel/sound/pci/ac97/snd-ac97-codec.ko
@@ -2880,8 +3201,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/ca0106/snd-ca0106.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/cs46xx
 #lib/modules/KVER-ipfire/kernel/sound/pci/cs46xx/snd-cs46xx.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/cs5535audio
-#lib/modules/KVER-ipfire/kernel/sound/pci/cs5535audio/snd-cs5535audio.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/ctxfi
 #lib/modules/KVER-ipfire/kernel/sound/pci/ctxfi/snd-ctxfi.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/echoaudio
@@ -2953,7 +3272,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-bt87x.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-cmipci.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-cs4281.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/snd-cs5530.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-ens1370.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-ens1371.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-es1938.ko
@@ -2981,10 +3299,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/usb
 #lib/modules/KVER-ipfire/kernel/sound/usb/6fire
 #lib/modules/KVER-ipfire/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire/kernel/sound/usb/bcd2000/snd-bcd2000.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/hiface
 #lib/modules/KVER-ipfire/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/line6/snd-usb-variax.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc/snd-ua101.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/snd-usb-audio.ko
@@ -2992,6 +3318,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-us122l.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire/kernel/virt
+#lib/modules/KVER-ipfire/kernel/virt/lib
+#lib/modules/KVER-ipfire/kernel/virt/lib/irqbypass.ko
 #lib/modules/KVER-ipfire/modules.alias
 #lib/modules/KVER-ipfire/modules.alias.bin
 #lib/modules/KVER-ipfire/modules.builtin
index 804a61043068f17b04036f827b817a2664e9fa22..25b61f8640ec69733674ba70d348f054f11db0f1 100644 (file)
@@ -53,6 +53,7 @@
 #usr/include/asm/ist.h
 #usr/include/asm/kvm.h
 #usr/include/asm/kvm_para.h
+#usr/include/asm/kvm_perf.h
 #usr/include/asm/ldt.h
 #usr/include/asm/mce.h
 #usr/include/asm/mman.h
@@ -97,6 +98,7 @@
 #usr/include/asm/vmx.h
 #usr/include/asm/vsyscall.h
 #usr/include/drm
+#usr/include/drm/amdgpu_drm.h
 #usr/include/drm/drm.h
 #usr/include/drm/drm_fourcc.h
 #usr/include/drm/drm_mode.h
 #usr/include/drm/savage_drm.h
 #usr/include/drm/sis_drm.h
 #usr/include/drm/tegra_drm.h
+#usr/include/drm/vc4_drm.h
 #usr/include/drm/via_drm.h
+#usr/include/drm/virtgpu_drm.h
 #usr/include/drm/vmwgfx_drm.h
 #usr/include/linux
 #usr/include/linux/a.out.h
 #usr/include/linux/affs_hardblocks.h
 #usr/include/linux/agpgart.h
 #usr/include/linux/aio_abi.h
+#usr/include/linux/am437x-vpfe.h
+#usr/include/linux/android
+#usr/include/linux/android/binder.h
 #usr/include/linux/apm_bios.h
 #usr/include/linux/arcfb.h
 #usr/include/linux/atalk.h
 #usr/include/linux/binfmts.h
 #usr/include/linux/blkpg.h
 #usr/include/linux/blktrace_api.h
+#usr/include/linux/bpf.h
+#usr/include/linux/bpf_common.h
+#usr/include/linux/bpf_perf_event.h
 #usr/include/linux/bpqether.h
 #usr/include/linux/bsg.h
+#usr/include/linux/bt-bmc.h
 #usr/include/linux/btrfs.h
 #usr/include/linux/byteorder
 #usr/include/linux/byteorder/big_endian.h
 #usr/include/linux/cycx_cfm.h
 #usr/include/linux/dcbnl.h
 #usr/include/linux/dccp.h
+#usr/include/linux/devlink.h
 #usr/include/linux/dlm.h
 #usr/include/linux/dlm_device.h
 #usr/include/linux/dlm_netlink.h
 #usr/include/linux/firewire-cdev.h
 #usr/include/linux/firewire-constants.h
 #usr/include/linux/flat.h
+#usr/include/linux/fou.h
 #usr/include/linux/fs.h
 #usr/include/linux/fsl_hypervisor.h
 #usr/include/linux/fuse.h
 #usr/include/linux/genetlink.h
 #usr/include/linux/gfs2_ondisk.h
 #usr/include/linux/gigaset_dev.h
+#usr/include/linux/gpio.h
+#usr/include/linux/gsmmux.h
+#usr/include/linux/gtp.h
 #usr/include/linux/hdlc
 #usr/include/linux/hdlc.h
 #usr/include/linux/hdlc/ioctl.h
 #usr/include/linux/hidraw.h
 #usr/include/linux/hpet.h
 #usr/include/linux/hsi
+#usr/include/linux/hsi/cs-protocol.h
 #usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hsr_netlink.h
 #usr/include/linux/hw_breakpoint.h
+#usr/include/linux/hyperv.h
 #usr/include/linux/hysdn_if.h
 #usr/include/linux/i2c-dev.h
 #usr/include/linux/i2c.h
 #usr/include/linux/if_infiniband.h
 #usr/include/linux/if_link.h
 #usr/include/linux/if_ltalk.h
+#usr/include/linux/if_macsec.h
 #usr/include/linux/if_packet.h
 #usr/include/linux/if_phonet.h
 #usr/include/linux/if_plip.h
 #usr/include/linux/if_vlan.h
 #usr/include/linux/if_x25.h
 #usr/include/linux/igmp.h
+#usr/include/linux/iio
+#usr/include/linux/iio/events.h
+#usr/include/linux/iio/types.h
+#usr/include/linux/ila.h
 #usr/include/linux/in.h
 #usr/include/linux/in6.h
 #usr/include/linux/in_route.h
 #usr/include/linux/inet_diag.h
 #usr/include/linux/inotify.h
+#usr/include/linux/input-event-codes.h
 #usr/include/linux/input.h
 #usr/include/linux/ioctl.h
 #usr/include/linux/ip.h
 #usr/include/linux/ixjuser.h
 #usr/include/linux/jffs2.h
 #usr/include/linux/joystick.h
+#usr/include/linux/kcmp.h
 #usr/include/linux/kd.h
 #usr/include/linux/kdev_t.h
 #usr/include/linux/kernel-page-flags.h
 #usr/include/linux/l2tp.h
 #usr/include/linux/libc-compat.h
 #usr/include/linux/limits.h
+#usr/include/linux/lirc.h
 #usr/include/linux/llc.h
 #usr/include/linux/loop.h
 #usr/include/linux/lp.h
+#usr/include/linux/lwtunnel.h
 #usr/include/linux/magic.h
 #usr/include/linux/major.h
 #usr/include/linux/map_to_7segment.h
 #usr/include/linux/matroxfb.h
 #usr/include/linux/mdio.h
+#usr/include/linux/media-bus-format.h
 #usr/include/linux/media.h
 #usr/include/linux/mei.h
+#usr/include/linux/membarrier.h
+#usr/include/linux/memfd.h
 #usr/include/linux/mempolicy.h
 #usr/include/linux/meye.h
 #usr/include/linux/mic_common.h
 #usr/include/linux/mmc
 #usr/include/linux/mmc/ioctl.h
 #usr/include/linux/mmtimer.h
+#usr/include/linux/mpls.h
+#usr/include/linux/mpls_iptunnel.h
 #usr/include/linux/mqueue.h
 #usr/include/linux/mroute.h
 #usr/include/linux/mroute6.h
 #usr/include/linux/ncp_fs.h
 #usr/include/linux/ncp_mount.h
 #usr/include/linux/ncp_no.h
+#usr/include/linux/ndctl.h
 #usr/include/linux/neighbour.h
 #usr/include/linux/net.h
 #usr/include/linux/net_dropmon.h
+#usr/include/linux/net_namespace.h
 #usr/include/linux/net_tstamp.h
 #usr/include/linux/netconf.h
 #usr/include/linux/netdevice.h
 #usr/include/linux/netfilter/nf_conntrack_sctp.h
 #usr/include/linux/netfilter/nf_conntrack_tcp.h
 #usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_log.h
 #usr/include/linux/netfilter/nf_nat.h
 #usr/include/linux/netfilter/nf_tables.h
 #usr/include/linux/netfilter/nf_tables_compat.h
 #usr/include/linux/netfilter/xt_NFQUEUE.h
 #usr/include/linux/netfilter/xt_RATEEST.h
 #usr/include/linux/netfilter/xt_SECMARK.h
+#usr/include/linux/netfilter/xt_SYNPROXY.h
 #usr/include/linux/netfilter/xt_TCPMSS.h
 #usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
 #usr/include/linux/netfilter/xt_TEE.h
 #usr/include/linux/netfilter/xt_iprange.h
 #usr/include/linux/netfilter/xt_ipvs.h
 #usr/include/linux/netfilter/xt_l2tp.h
-#usr/include/linux/netfilter/xt_layer7.h
 #usr/include/linux/netfilter/xt_length.h
 #usr/include/linux/netfilter/xt_limit.h
 #usr/include/linux/netfilter/xt_mac.h
 #usr/include/linux/netfilter_bridge/ebt_pkttype.h
 #usr/include/linux/netfilter_bridge/ebt_redirect.h
 #usr/include/linux/netfilter_bridge/ebt_stp.h
-#usr/include/linux/netfilter_bridge/ebt_ulog.h
 #usr/include/linux/netfilter_bridge/ebt_vlan.h
 #usr/include/linux/netfilter_bridge/ebtables.h
 #usr/include/linux/netfilter_decnet.h
 #usr/include/linux/netfilter_ipv4/ipt_LOG.h
 #usr/include/linux/netfilter_ipv4/ipt_REJECT.h
 #usr/include/linux/netfilter_ipv4/ipt_TTL.h
-#usr/include/linux/netfilter_ipv4/ipt_ULOG.h
 #usr/include/linux/netfilter_ipv4/ipt_ah.h
 #usr/include/linux/netfilter_ipv4/ipt_ecn.h
 #usr/include/linux/netfilter_ipv4/ipt_ttl.h
 #usr/include/linux/nfsd/stats.h
 #usr/include/linux/nl80211.h
 #usr/include/linux/nubus.h
-#usr/include/linux/nvme.h
+#usr/include/linux/nvme_ioctl.h
 #usr/include/linux/nvram.h
 #usr/include/linux/omap3isp.h
 #usr/include/linux/omapfb.h
 #usr/include/linux/pktcdvd.h
 #usr/include/linux/pmu.h
 #usr/include/linux/poll.h
+#usr/include/linux/posix_acl.h
+#usr/include/linux/posix_acl_xattr.h
 #usr/include/linux/posix_types.h
 #usr/include/linux/ppdev.h
 #usr/include/linux/ppp-comp.h
 #usr/include/linux/ppp_defs.h
 #usr/include/linux/pps.h
 #usr/include/linux/prctl.h
+#usr/include/linux/psci.h
 #usr/include/linux/ptp_clock.h
 #usr/include/linux/ptrace.h
 #usr/include/linux/qnx4_fs.h
 #usr/include/linux/reiserfs_xattr.h
 #usr/include/linux/resource.h
 #usr/include/linux/rfkill.h
+#usr/include/linux/rio_cm_cdev.h
+#usr/include/linux/rio_mport_cdev.h
 #usr/include/linux/romfs_fs.h
 #usr/include/linux/rose.h
 #usr/include/linux/route.h
 #usr/include/linux/rtnetlink.h
 #usr/include/linux/scc.h
 #usr/include/linux/sched.h
+#usr/include/linux/scif_ioctl.h
 #usr/include/linux/screen_info.h
 #usr/include/linux/sctp.h
 #usr/include/linux/sdla.h
 #usr/include/linux/shm.h
 #usr/include/linux/signal.h
 #usr/include/linux/signalfd.h
+#usr/include/linux/smiapp.h
 #usr/include/linux/snmp.h
 #usr/include/linux/sock_diag.h
 #usr/include/linux/socket.h
 #usr/include/linux/sockios.h
-#usr/include/linux/som.h
 #usr/include/linux/sonet.h
 #usr/include/linux/sonypi.h
 #usr/include/linux/sound.h
 #usr/include/linux/sunrpc/debug.h
 #usr/include/linux/suspend_ioctls.h
 #usr/include/linux/swab.h
+#usr/include/linux/sync_file.h
 #usr/include/linux/synclink.h
 #usr/include/linux/sysctl.h
 #usr/include/linux/sysinfo.h
+#usr/include/linux/target_core_user.h
 #usr/include/linux/taskstats.h
 #usr/include/linux/tc_act
+#usr/include/linux/tc_act/tc_bpf.h
+#usr/include/linux/tc_act/tc_connmark.h
 #usr/include/linux/tc_act/tc_csum.h
 #usr/include/linux/tc_act/tc_defact.h
 #usr/include/linux/tc_act/tc_gact.h
+#usr/include/linux/tc_act/tc_ife.h
 #usr/include/linux/tc_act/tc_ipt.h
 #usr/include/linux/tc_act/tc_mirred.h
 #usr/include/linux/tc_act/tc_nat.h
 #usr/include/linux/tc_act/tc_pedit.h
 #usr/include/linux/tc_act/tc_skbedit.h
+#usr/include/linux/tc_act/tc_skbmod.h
+#usr/include/linux/tc_act/tc_tunnel_key.h
+#usr/include/linux/tc_act/tc_vlan.h
 #usr/include/linux/tc_ematch
 #usr/include/linux/tc_ematch/tc_em_cmp.h
 #usr/include/linux/tc_ematch/tc_em_meta.h
 #usr/include/linux/tcp_metrics.h
 #usr/include/linux/telephony.h
 #usr/include/linux/termios.h
+#usr/include/linux/thermal.h
 #usr/include/linux/time.h
 #usr/include/linux/times.h
 #usr/include/linux/timex.h
 #usr/include/linux/tiocl.h
 #usr/include/linux/tipc.h
 #usr/include/linux/tipc_config.h
+#usr/include/linux/tipc_netlink.h
 #usr/include/linux/toshiba.h
 #usr/include/linux/tty.h
 #usr/include/linux/tty_flags.h
 #usr/include/linux/usb/tmc.h
 #usr/include/linux/usb/video.h
 #usr/include/linux/usbdevice_fs.h
+#usr/include/linux/usbip.h
+#usr/include/linux/userfaultfd.h
 #usr/include/linux/utime.h
 #usr/include/linux/utsname.h
 #usr/include/linux/uuid.h
 #usr/include/linux/virtio_blk.h
 #usr/include/linux/virtio_config.h
 #usr/include/linux/virtio_console.h
+#usr/include/linux/virtio_gpu.h
 #usr/include/linux/virtio_ids.h
+#usr/include/linux/virtio_input.h
 #usr/include/linux/virtio_net.h
 #usr/include/linux/virtio_pci.h
 #usr/include/linux/virtio_ring.h
 #usr/include/linux/virtio_rng.h
+#usr/include/linux/virtio_scsi.h
+#usr/include/linux/virtio_types.h
+#usr/include/linux/virtio_vsock.h
+#usr/include/linux/vm_sockets.h
 #usr/include/linux/vt.h
+#usr/include/linux/vtpm_proxy.h
 #usr/include/linux/wait.h
 #usr/include/linux/wanrouter.h
 #usr/include/linux/watchdog.h
 #usr/include/linux/x25.h
 #usr/include/linux/xattr.h
 #usr/include/linux/xfrm.h
+#usr/include/linux/xilinx-v4l2-controls.h
 #usr/include/linux/zorro.h
 #usr/include/linux/zorro_ids.h
+#usr/include/misc
+#usr/include/misc/cxl.h
 #usr/include/mtd
 #usr/include/mtd/inftl-user.h
 #usr/include/mtd/mtd-abi.h
 #usr/include/mtd/nftl-user.h
 #usr/include/mtd/ubi-user.h
 #usr/include/rdma
+#usr/include/rdma/cxgb3-abi.h
+#usr/include/rdma/cxgb4-abi.h
+#usr/include/rdma/hfi
+#usr/include/rdma/hfi/hfi1_user.h
 #usr/include/rdma/ib_user_cm.h
 #usr/include/rdma/ib_user_mad.h
 #usr/include/rdma/ib_user_sa.h
 #usr/include/rdma/ib_user_verbs.h
+#usr/include/rdma/mlx4-abi.h
+#usr/include/rdma/mlx5-abi.h
+#usr/include/rdma/mthca-abi.h
+#usr/include/rdma/nes-abi.h
+#usr/include/rdma/ocrdma-abi.h
 #usr/include/rdma/rdma_netlink.h
 #usr/include/rdma/rdma_user_cm.h
+#usr/include/rdma/rdma_user_rxe.h
 #usr/include/scsi
+#usr/include/scsi/cxlflash_ioctl.h
 #usr/include/scsi/fc
 #usr/include/scsi/fc/fc_els.h
 #usr/include/scsi/fc/fc_fs.h
 #usr/include/scsi/scsi_netlink_fc.h
 #usr/include/sound
 #usr/include/sound/asequencer.h
+#usr/include/sound/asoc.h
 #usr/include/sound/asound.h
 #usr/include/sound/asound_fm.h
 #usr/include/sound/compress_offload.h
 #usr/include/sound/hdspm.h
 #usr/include/sound/sb16_csp.h
 #usr/include/sound/sfnt_info.h
+#usr/include/sound/snd_sst_tokens.h
+#usr/include/sound/tlv.h
+#usr/include/sound/usb_stream.h
 #usr/include/uapi
 #usr/include/video
 #usr/include/video/edid.h
index db876f78d5757a493a8c0147ef3e7b26ae399f71..3bc176b9bb11d29f5dc56737c223ab18409f373e 100644 (file)
@@ -10,13 +10,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/crc32-pclmul.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/salsa20-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/twofish-i586.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events/amd
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/events/amd/power.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/iosf_mbi.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko
@@ -26,21 +26,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris/iris.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto
+#lib/modules/KVER-ipfire-pae/kernel/crypto/842.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_aead.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/public_key.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/rsa.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_pq.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_raid6_recov.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_tx.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/raid6test.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/authenc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/blowfish_common.ko
@@ -50,30 +47,38 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/cast6_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/chacha20_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/chacha20poly1305.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/cmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/crypto_null.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cts.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/dh_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/ecdh_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/echainiv.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/keywrap.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/khazad.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/lz4.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/lz4hc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/mcryptd.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/md4.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/poly1305_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/rmd128.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/rmd160.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/rmd256.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/rsa_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/seed.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/sha3_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/sha512_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/tea.ko
@@ -84,14 +89,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/wp512.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/xcbc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_configfs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_extlog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_pad.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/custom_method.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/dptf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/dptf/dptf_power.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/ec_sys.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/nfit
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/nfit/nfit.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbshc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/video.ko
@@ -99,10 +108,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/acard-ahci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/libahci_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_amd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_arasan_cf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_artop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_atiixp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_atp867x.ko
@@ -148,13 +157,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_dwc_460ex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_nv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_promise.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_rcar.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil24.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sis.ko
@@ -191,7 +199,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/floppy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx/mtip32xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/nvme.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/sx8.ko
@@ -206,8 +213,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bfusb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btbcm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btintel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btqca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btrtl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btusb.ko
@@ -218,19 +229,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hangcheck-timer.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/atmel-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/geode-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/intel-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/via-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/virtio-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/i8k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_devintf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_msghandler.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_poweroff.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_ssif.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ipmi/ipmi_watchdog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/lp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/mwave
@@ -248,8 +257,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq-nforce2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_conservative.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_ondemand.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_stats.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longrun.ko
@@ -265,21 +272,42 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp-crypto.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/chelsio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/chelsio/chcr.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/geode-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dca
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dca/dca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxx/qat_c3xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxxvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c3xxxvf/qat_c3xxxvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62x/qat_c62x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62xvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_c62xvf/qat_c62xvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_common
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_common/intel_qat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xcc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xcc/qat_dh895xcc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xccvf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/qat/qat_dh895xccvf/qat_dh895xccvf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_passive.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_performance.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_powersave.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_simpleondemand.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/devfreq/governor_userspace.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat/ioatdma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/idma64.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/pch_dma.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom/hdma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/qcom/hdma_mgmt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/amd64_edac_mod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/e752x_edac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_mce_amd.ko
@@ -291,8 +319,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7300_edac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7core_edac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i82975x_edac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/ie31200_edac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/edac/x38_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/extcon
+#lib/modules/KVER-ipfire-pae/kernel/drivers/extcon/extcon-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-ohci.ko
@@ -301,71 +331,77 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dcdbas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dell_rbu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/edd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/efi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/efi/efibc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/iscsi_ibft.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-f7188x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ich.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch311x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ts5500.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd/amdgpu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast/ast.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bridge
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/ch7006.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/sil164.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810/i810.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga/mga.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200/mgag200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau/nouveau.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128/r128.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/radeon
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/sis
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/tdfx/tdfx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm/ttm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl/udl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vgem
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vgem/vgem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/virtio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-alps.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-asus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-aureal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cmedia.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-corsair.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cp2112.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gembird.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gfrm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gt683r.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gyration.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-keytouch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-led.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lenovo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech-hidpp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-ortek.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-penmount.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-picolcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-plantronics.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-rmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-isku.ko
@@ -383,7 +419,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-thingm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-twinhan.ko
@@ -404,6 +439,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/acpi_power_meter.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ad7414.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adc128d818.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1021.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1025.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm1026.ko
@@ -425,6 +461,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/asus_atk0110.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/atxp1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/coretemp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/dell-smm-hwmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/dme1737.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds620.ko
@@ -435,18 +472,20 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/f75375s.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fam15h_power.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fschmd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ftsteutates.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g762.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hih6130.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/htu21.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5500_temp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmpex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina209.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina3221.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/it87.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k10temp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k8temp.ko
@@ -466,20 +505,28 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc2945.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc2990.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4151.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4222.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4260.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4261.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1668.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max31790.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6650.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6697.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct6683.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct7802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct7904.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87427.ko
@@ -488,10 +535,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/lm25066.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max20751.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max8688.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/pmbus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/tps40422.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch5627.ko
@@ -499,12 +548,16 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht3x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/shtc1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sis5595.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tc74.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/thmc50.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp103.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp401.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/tmp421.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/via-cputemp.ko
@@ -535,6 +588,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-emev2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-i801.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-isch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-ismt.ko
@@ -564,16 +618,20 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-reg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer/industrialio-buffer-cb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/buffer/kfifo_buf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/industrialio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/adc-keys.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys_polled.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/lm8333.ko
@@ -594,7 +652,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/appletouch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/bcm5974.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/cyapatp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/psmouse.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/sermouse.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/synaptics_i2c.ko
@@ -661,6 +719,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/dell-led.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/led-class-flash.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-bd2802.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-clevo-mail.ko
@@ -670,19 +729,21 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm355x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp3944.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp3952.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5562.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp8501.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp8860.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lt3593.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca955x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca963x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9685.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tlc591xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-backlight.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-camera.ko
@@ -693,15 +754,19 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-timer.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm/gennvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/lightnvm/rrpc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache/bcache.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-cleaner.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-smq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-crypt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log-writes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-raid.ko
@@ -722,7 +787,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/btcx-risc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cx2341x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cypress_firmware.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/saa7146
@@ -738,6 +802,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/a8293.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9013.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/as102_fe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/atbm8830.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
@@ -745,10 +810,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/bcm3510.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22700.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22702.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24113.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24116.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24117.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24120.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24123.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cxd2820r.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib0070.ko
@@ -759,45 +824,49 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib7000p.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib8000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drx39xyj
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxk.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ds3000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvb-pll.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/gp8psk-fe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6405.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6421.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6423.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/it913x-fe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/itd1000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ix2505v.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/l64781.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lg2160.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt3306a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt330x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp21.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp22.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88dc2800.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88ds3103.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88rs2000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a16.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mn88472.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mn88473.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt312.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt352.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt200x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt6000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51132.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51211.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2830.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2832.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1409.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1411.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1420.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si2165.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si2168.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp8870.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp887x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb0899.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6100.ko
@@ -809,6 +878,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv090x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tc90522.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10021.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10023.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10048.ko
@@ -832,10 +902,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7170.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7175.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7180.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt819.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt856.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs3308.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs5345.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs53l32a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cx25840
@@ -844,7 +914,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ks0127.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/m52790.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9m111.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7640.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6588.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6752hs.ko
@@ -856,7 +928,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/imx074.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
@@ -868,12 +939,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov9740.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/tw9910.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/sony-btf-mpx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda9840.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6415c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6420.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvaudio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw2804.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw9903.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tw9906.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/uda1342.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64031a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64083.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/vp27smpx.ko
@@ -884,12 +958,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bt878.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bttv.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst_ca.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18.ko
@@ -911,6 +979,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ddbridge/ddbridge.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dt3155
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dt3155/dt3155.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv.ko
@@ -927,10 +997,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pluto2/pluto2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt3
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt3/earth-pt3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-go7007.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
@@ -938,6 +1011,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/mxb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/smipcie
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/smipcie/smipcie.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/solo6x10
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/solo6x10/solo6x10.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-av.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-ci.ko
@@ -946,6 +1023,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw5864
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw5864/tw5864.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw68
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw68/tw68.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw686x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/tw686x/tw686x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/videocodec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36016.ko
@@ -958,32 +1041,28 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/timblogiw.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1/vsp1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ene_ir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/fintek-cir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/igorplugusb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/iguanair.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-hix5hd2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-jvc-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-lirc-codec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-nec-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-decoder.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc6-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sharp-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-xmp-decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ite-cir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
@@ -1006,6 +1085,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-behold.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
@@ -1016,6 +1096,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dtt200u.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
@@ -1073,7 +1154,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-su3000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-technisat-ts35.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
@@ -1083,6 +1167,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
@@ -1104,7 +1189,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0012.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0013.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc2580.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/m88ts2022.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/it913x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/m88rs6000t.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/max2165.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mc44s803.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2060.ko
@@ -1112,10 +1198,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt20xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2131.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl301rf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5005s.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/qm1d1c0042.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/qt1010.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/si2157.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18212.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18218.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18271.ko
@@ -1126,10 +1215,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-simple.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-types.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner_it913x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc4000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc5000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/as102
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/as102/dvb-as102.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828/au0828.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/b2c2
@@ -1151,7 +1241,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
@@ -1167,6 +1256,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
@@ -1190,12 +1280,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007-loader.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/go7007.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/go7007/s2250.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_benq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_conex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_dtcs033.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_etoms.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_finepix.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
@@ -1233,6 +1329,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_t613.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_touptek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vicam.ko
@@ -1256,8 +1353,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160/stk1160.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300/poseidon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
@@ -1281,13 +1376,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dma-sg.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dvb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick
@@ -1308,15 +1405,16 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_config.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/axp20x-i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/axp20x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/bcm590xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/cs5535-mfd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9062-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9063.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/da9150-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/dln2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/exynos-lpass.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-ctrlbank.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lpc_ich.ko
@@ -1331,13 +1429,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl/altera-stapl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cs5535-mfgpt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ds1682.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/echo
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/echo/echo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/eeprom.ko
@@ -1366,14 +1464,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/core/mmc_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/mtk-sd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/tifm_sd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/toshsd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/usdhi6rol0.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/vub300.ko
@@ -1381,6 +1480,14 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_mdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_mmap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/b53/b53_srab.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/bcm_sf2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/dsa/qca8k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/dummy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com
@@ -1401,8 +1508,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/wd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/agere
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/agere/et131x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/alteon
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/altera
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/altera/altera_tse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon/ena
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amazon/ena/ena.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/amd8111e.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/lance.ko
@@ -1419,21 +1533,24 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/aurora
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/aurora/nb8800.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/b44.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2x
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnxt
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/genet
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/genet/genet.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/broadcom/tg3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna/bna.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/at91_ether.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/macb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda/xgmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -1443,6 +1560,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4vf
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/libcxgb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cirrus
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cisco
@@ -1461,6 +1580,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ec_bhf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex/benet
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
@@ -1470,14 +1590,14 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus/ipg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e100.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/fm10k
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40evf
@@ -1501,6 +1621,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel/ks8842.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
@@ -1515,19 +1640,32 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/s2io.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/vxge
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome/nfp
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/netronome/nfp/nfp_netvf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/nvidia
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qed
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qede
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlcnic
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlge
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm/emac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rdc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rdc/r6040.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek
@@ -1535,8 +1673,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas/sh_eth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rocker
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/rocker/rocker.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung/sxgbe
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/silan
@@ -1552,6 +1693,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smsc9420.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sun
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sun/cassini.ko
@@ -1561,6 +1705,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/tehuti
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/tehuti/tehuti.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ti/tlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via/via-rhine.ko
@@ -1570,10 +1715,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/fjes
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/fjes/fjes.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/geneve.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/gtp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv/hv_netvsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ipvlan
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ipvlan/ipvlan.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/macsec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/mdio.ko
@@ -1582,23 +1734,34 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/nlmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/aquantia.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm-phy-lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm7xxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/dp83848.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/dp83867.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/intel-xway.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-bcm-unimac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-bitbang.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/microchip.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mscc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/qsemi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/realtek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/smsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/teranetics.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/bsd_comp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/ppp_async.ko
@@ -1622,6 +1785,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ch9200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cx82310_eth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/dm9601.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/gl620a.ko
@@ -1631,6 +1795,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/lan78xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/lg-vl600.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/mcs7830.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/net1080.ko
@@ -1651,12 +1816,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vrf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/admtek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/admtek/adm8211.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
@@ -1677,109 +1841,138 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel/atmel_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43/b43.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43legacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco/airo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cisco/airo_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/dvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/mvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mac80211_hwsim.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/marvell/mwl8k.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek/mt7601u
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl8xxxu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_91x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rsi/rsi_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
@@ -1792,12 +1985,27 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1201.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1211rw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback/xen-netback.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netfront.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/libnvdimm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_blk.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_btt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_e820.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvdimm/nd_pmem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host/nvme-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/host/nvme.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/target
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvme/target/nvmet.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvmem
+#lib/modules/KVER-ipfire-pae/kernel/drivers/nvmem/nvmem_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/parport
 #lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport_ax88796.ko
@@ -1824,13 +2032,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acer-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/alienware-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/amilo-rfkill.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wireless.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/compal-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-rbtn.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-smbios.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-smo8800.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi-aio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/eeepc-laptop.ko
@@ -1840,9 +2053,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp_accel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-hid.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-rst.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-vbtn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_ips.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_oaktrail.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_pmc_ipc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_punit_ipc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/mxm-wmi.ko
@@ -1854,19 +2071,25 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/tc1100-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/thinkpad_acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/topstar-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_bluetooth.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_haps.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/power
-#lib/modules/KVER-ipfire-pae/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power/supply
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power/supply/generic-adc-battery.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pps
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ptp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ab-b5ze-s3.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-abx80x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-da9063.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1286.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1307.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1374.ko
@@ -1880,21 +2103,22 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-fm3130.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12057.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t59.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-moxart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-msm6242.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf2127.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf85063.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rp5c01.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rs5c372.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rv8803.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8010.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8581.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-stk17ta8.ko
@@ -1919,6 +2143,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic94xx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/am53c974.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/arcmsr
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/arcmsr/arcmsr.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/atp870u.ko
@@ -1947,10 +2172,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dmx3191d.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dtc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/eata.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r/esas2r.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esp_scsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/libfcoe.ko
@@ -1964,7 +2189,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hptiop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hv_storvsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/imm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/in2000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/initio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ipr.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ips.ko
@@ -1985,8 +2209,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_mm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mvsas
@@ -1997,7 +2219,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/libosd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/osd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osst.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pas16.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
@@ -2016,7 +2237,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_sas.ko
@@ -2024,43 +2244,60 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_srp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ses.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sim710.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/smartpqi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/smartpqi/smartpqi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/snic
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/snic/snic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c416.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c8xx_2
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/t128.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/u14-34f.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ultrastor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/vmw_pvscsi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/wd7000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/wd719x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/xen-scsifront.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/spmi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/spmi/spmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ssb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x/et131x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmtty.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmulte.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8188eu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8188eu/r8188eu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8192u
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8192u/r8192u_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8712
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rtl8712/r8712u.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/sm750fb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/sm750fb/sm750fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/thermal
-#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/acpi_thermal_rel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3400_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3402_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3403_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int3406_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/int340x_thermal_zone.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int340x_thermal/processor_thermal_device.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_pch_thermal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_quark_dts_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_soc_dts_iosf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_soc_dts_thermal.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/thermal-generic-adc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/cyclades.ko
@@ -2072,6 +2309,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_moxa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/arc_uart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/fsl_lpuart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm
@@ -2096,30 +2334,36 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_zevio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common/ulpi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/common/usb-otg-fsm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/core/ledtrig-usbport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-keystone.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/bcma-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/hwa-hc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ohci-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/sl811-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/xhci-plat-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/mdc800.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/chaoskey.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ehset.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi62.ko
@@ -2129,15 +2373,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usb3503.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usb4604.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/yurex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon/usbmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy/phy-fsm-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy/phy-tahvo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ark3116.ko
@@ -2174,7 +2418,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/visor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-cypress.ko
@@ -2189,6 +2432,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -2206,66 +2453,70 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost_net.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/arcfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty/atyfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/apple_bl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/lcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/platform_lcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/pm8941-wled.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/console
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/console/mdacon.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_ddc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hgafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hyperv_fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/ocfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vga16fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/arcfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/arkfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/aty
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/aty/atyfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/fb_ddc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/svgalib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/syscopyarea.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/sysfillrect.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/core/sysimgblt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/cyber2000fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/gx1fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/gxfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/geode/lxfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/gxt4500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/hgafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/hyperv_fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/i740fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/kyro
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/macmodes.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/neofb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/ocfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/pm2fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/pm3fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/riva
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/riva/rivafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/s3fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/savage
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/savage/savagefb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/sm712fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/smscufx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/sstfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/tridentfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/udlfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion/crvml.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vga16fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/via
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/via/viafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/vt8623fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/fbdev/xen-fbfront.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/via
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/via/viafb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vt8623fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/xen-fbfront.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_input.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_mmio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters
@@ -2274,6 +2525,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/ds2490.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2406.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2408.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2423.ko
@@ -2291,8 +2543,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/advantechwdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim1535_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/cadence_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/cpu5wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/dw_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ebc-c384_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/eurotechwdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/f71808e_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/geodewdt.ko
@@ -2306,8 +2560,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/max63xx_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/mena21_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ni903x_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/nv_tco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/of_xilinx_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_usb.ko
@@ -2318,20 +2575,19 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc_epx_c3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc520_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sch311x_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/smsc37b787_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/softdog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sp5100_tco.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/via_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697ug_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83877f_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83977f_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wafer5823wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wdat_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wdt_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/xen_wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ziirave_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/tmem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-acpi-processor.ko
@@ -2372,14 +2628,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/filelayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/flexfilelayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv2.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv3.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common/grace.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfsd
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfsd/nfsd.ko
@@ -2443,6 +2703,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/kernel/trace
 #lib/modules/KVER-ipfire-pae/kernel/kernel/trace/ring_buffer_benchmark.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib
+#lib/modules/KVER-ipfire-pae/kernel/lib/842
+#lib/modules/KVER-ipfire-pae/kernel/lib/842/842_compress.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/842/842_decompress.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/cordic.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc-itu-t.ko
@@ -2457,7 +2720,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/raid6
 #lib/modules/KVER-ipfire-pae/kernel/lib/raid6/raid6_pq.ko
-#lib/modules/KVER-ipfire-pae/kernel/lib/rbtree_test.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_kmp.ko
@@ -2506,16 +2768,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nf_log_bridge.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nf_tables_bridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nft_meta_bridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nft_reject_bridge.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/core
-#lib/modules/KVER-ipfire-pae/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/core/devlink.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/hsr
 #lib/modules/KVER-ipfire-pae/kernel/net/hsr/hsr.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/6lowpan_iphc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/fou.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ip_gre.ko
@@ -2533,30 +2797,41 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_REJECT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_raw.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_dup_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_log_arp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_log_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_h323.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_reject_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_arp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_dup_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_masq_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_redir_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bbr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_cdg.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_dctcp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_htcp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_hybla.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_illinois.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_nv.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_scalable.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_vegas.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_veno.ko
@@ -2564,6 +2839,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tunnel4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/udp_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_beet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_transport.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_tunnel.ko
@@ -2571,8 +2847,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/fou6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ila
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ila/ila.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_udp_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_vti.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/mip6.ko
@@ -2594,10 +2874,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_raw.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_dup_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_log_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_masquerade_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_reject_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_dup_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_masq_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_redir_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/tunnel6.ko
@@ -2617,6 +2904,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_ppp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/mac80211
 #lib/modules/KVER-ipfire-pae/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_gso.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_iptunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/mpls/mpls_router.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set.ko
@@ -2624,9 +2915,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipmark.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_mac.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
@@ -2636,11 +2929,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_fo.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_ovf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_rr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_sed.ko
@@ -2663,6 +2958,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_dup_netdev.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_log_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_amanda.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_ftp.ko
@@ -2670,10 +2967,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_sctp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_redirect.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_synproxy_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tables_inet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tables_netdev.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_acct.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cthelper.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cttimeout.ko
@@ -2682,16 +2981,23 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_compat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_counter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_dup_netdev.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_fwd_netdev.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_hash.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_limit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_masq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_meta.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_numgen.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_queue.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_quota.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_redir.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject_inet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_set_hash.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_set_rbtree.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CLASSIFY.ko
@@ -2768,24 +3074,38 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netlink/netlink_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/openvswitch
 #lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-geneve.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-gre.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/vport-vxlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/rfkill
 #lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_bpf.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_connmark.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_ife.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_mark.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_skbprio.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_meta_skbtcindex.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_mirred.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_pedit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_police.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbmod.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_tunnel_key.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/act_vlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_basic.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_bpf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flower.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_matchall.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_route.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_rsvp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_rsvp6.ko
@@ -2824,6 +3144,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_teql.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sctp
 #lib/modules/KVER-ipfire-pae/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sctp/sctp_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
@@ -2832,6 +3153,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/unix
 #lib/modules/KVER-ipfire-pae/kernel/net/unix/unix_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_virtio_transport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/wireless
@@ -2886,8 +3209,21 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/vx
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/vx/snd-vx-lib.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/firewire
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/bebob
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/bebob/snd-bebob.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/dice
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/dice/snd-dice.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/digi00x
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/digi00x/snd-firewire-digi00x.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/fireworks
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/fireworks/snd-fireworks.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/oxfw
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/oxfw/snd-oxfw.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/tascam
+#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/tascam/snd-firewire-tascam.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/hda
+#lib/modules/KVER-ipfire-pae/kernel/sound/hda/snd-hda-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4113.ko
@@ -3066,10 +3402,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/6fire
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/bcd2000
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/bcd2000/snd-bcd2000.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface/snd-usb-hiface.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-line6.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-pod.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-podhd.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-toneport.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/line6/snd-usb-variax.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc/snd-ua101.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/snd-usb-audio.ko
@@ -3077,6 +3421,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y/snd-usb-us122l.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
+#lib/modules/KVER-ipfire-pae/kernel/virt
+#lib/modules/KVER-ipfire-pae/kernel/virt/lib
+#lib/modules/KVER-ipfire-pae/kernel/virt/lib/irqbypass.ko
 #lib/modules/KVER-ipfire-pae/modules.alias
 #lib/modules/KVER-ipfire-pae/modules.alias.bin
 #lib/modules/KVER-ipfire-pae/modules.builtin
index 3b9a094ce17876d20449cbcf319831f682ebd4df..8a554f3dc2836e956d3528f96d404fac16872d0e 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2015  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2007-2017  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
 
 include Config
 
-VER        = 6.7.1
+VER        = 6.11.5
 
 THISAPP    = dhcpcd-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ffb716b0e9327968e7200d519e1d4c0d
+$(DL_FILE)_MD5 = 2465624b62c1154f0e89dc69c42c849b
 
 install : $(TARGET)
 
@@ -69,7 +69,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure --prefix="" --sysconfdir=/var/ipfire/dhcpc \
                        --dbdir=/var/ipfire/dhcpc \
                        --libexecdir=/var/ipfire/dhcpc \
@@ -77,6 +77,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
 
+       rm -rf /usr/share/dhcpcd
+
        ln -sf /etc/rc.d/init.d/networking/dhcpcd.exe \
                $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/70-dhcpcd.exe
        rm -f $(CONFIG_ROOT)/dhcpc/dhcpcd-hooks/20-resolv.conf
index b3ccb7af9a74dfbcda67d4f9f01be13b6853ba49..e309cd52dc20394f414655656f65e461f5f70a18 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
 
 include Config
 
-VER         = 3.14.79
+VER         = 4.9.35
 RPI_PATCHES = 3.14.79-grsec-ipfire1
 A7M_PATCHES = 3.14.79-grsec-ipfire1
-GRS_PATCHES = grsecurity-3.1ipfire-3.14.79-v1.patch.xz
+GRS_PATCHES = grsecurity-3.1-4.9.35-ipfire1.patch.xz
 
 
 THISAPP    = linux-$(VER)
@@ -86,10 +86,10 @@ rpi-patches-$(RPI_PATCHES).patch.xz         = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).
 arm7-multi-patches-$(A7M_PATCHES).patch.xz     = $(URL_IPFIRE)/arm7-multi-patches-$(A7M_PATCHES).patch.xz
 $(GRS_PATCHES)                                 = $(URL_IPFIRE)/$(GRS_PATCHES)
 
-$(DL_FILE)_MD5                                 = ec5b09d8ad2ebf92e6f51a727a338559
+$(DL_FILE)_MD5                                 = 9b72bca09f8192ff645b354a4f7960ea
 rpi-patches-$(RPI_PATCHES).patch.xz_MD5                = a02a7fd54c642c1e3578a00ed22f54f8
 arm7-multi-patches-$(A7M_PATCHES).patch.xz_MD5 = 6c3b11e51caa278dbeacd1e23c2b171b
-$(GRS_PATCHES)_MD5                             = 7fe448b53558082395f68c5db94af1a7
+$(GRS_PATCHES)_MD5                             = 3fb5171db23cf10198b874b6c60842cc
 
 install : $(TARGET)
 
@@ -125,98 +125,46 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        ln -svf linux-$(VER) $(DIR_SRC)/linux
 
        # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-imq.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9-imq.diff
 
        # Layer7-patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14-layer7-filter.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.13-layer7.patch
+
 
 ifneq "$(KCFG)" "-headers"
        # Grsecurity-patches
        cd $(DIR_APP) && xz -c -d $(DIR_DL)/$(GRS_PATCHES) | patch -Np1
        cd $(DIR_APP) && rm localversion-grsec
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.7-disable-compat_vdso.patch
 endif
 
        # DVB Patches
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-dvbsky.patch
        cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
 
        # Wlan Patches
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.25_rt2x00_fix_bss_bcn_num.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.25-rt5592_no_special_txop_init.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-ath_ignore_eeprom_regd.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-iwlwifi-noibss_only_on_radar_chan.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch
+#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.patch
 
        # mISDN Patches
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN_hfc-s_add_id.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN-hfcusb-reportl1down.patch
 
        # Add LED trigger
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-ledtrig_netdev.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.16-ledtrig_netdev.patch
+
+       # Fix igb and e1000e crash
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.17-igb-e1000e_fix_lock_at_update_stats.patch
 
        # cs5535audio spams syslog if no ac97 was present (geos router)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch
 
        # Add PC Engines APU led support
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14-apu_leds.patch
-
-       # Add APU2 SoC ID to k10temp
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.65-k10temp_add_16H_M30H_id.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-apu_leds.patch
 
        # Fix uevent PHYSDEVDRIVER
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.33_ipg-fix-driver-name.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
-
-       # r8169 L23 patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.32-r8169_disable_L23.patch
-
-       # update the queued trim blacklist from kernel 4.2rc1
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.43_new_qtrim_blacklist.patch
-
-       # remove eMMC EXT_CSD revision check to use newer eMMC modules
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.79_mmc_remove_EXT_CSD_revision_check.patch
-
-       # Hyper-V patches
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0001-Drivers-net-hyperv-Get-rid-of-the-rndis_filter_packe.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0002-Drivers-net-hyperv-Cleanup-the-receive-path.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0003-Drivers-net-hyperv-Cleanup-the-netvsc-receive-callba.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0004-hyperv-Add-latest-NetVSP-versions-to-auto-negotiatio.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0005-Drivers-net-hyperv-Enable-scatter-gather-I-O.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0006-Drivers-net-hyperv-Cleanup-the-send-path.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0007-Drivers-net-hyperv-Enable-offloads-on-the-host.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0008-Drivers-net-hyperv-Enable-receive-side-IP-checksum-o.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0009-Drivers-net-hyperv-Enable-send-side-checksum-offload.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0010-Drivers-net-hyperv-Enable-large-send-offload.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0011-hyperv-Change-the-receive-buffer-size-for-legacy-hos.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0012-Drivers-net-hyperv-Allocate-memory-for-all-possible-.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0013-Drivers-net-hyperv-Negotiate-suitable-ndis-version-f.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0014-Drivers-net-hyperv-Address-UDP-checksum-issues.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0015-hyperv-Properly-handle-checksum-offload.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0016-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0017-hyperv-Remove-recv_pkt_list-and-lock.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0018-hyperv-Simplify-the-send_completion-variables.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0019-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0020-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0021-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0022-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch
-
-ifneq "$(KCFG)" "-headers"
-       # fix AES-NI 192 and 256 bits / grsec is needed for this patch version
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0100-crypto-aesni-Add-support-for-192-256-bit-keys-to-AES.patch
-endif
-
-       # fix CVE-2016-5195 (Dirty COW)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0110-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
-
-       # fix empty symbol crc's
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-genksyms_fix_typeof_handling.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-2.6.32.27_mcs7830-fix-driver-name.patch
 
 ifeq "$(KCFG)" "-kirkwood"
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
index ae4d73850e416fc50388fa4588654f18a2ff2020..f3ba8ecb323f3eb2caf740a883d8c68a03e87501 100644 (file)
@@ -72,6 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/net-tools-1.60-no-hostname.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-gcc34-3.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-kernel_headers-3.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-iphdr-redef.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-mii_ioctl-1.patch
        cd $(DIR_APP) && yes "" | make config
        cd $(DIR_APP) && sed -i -e 's|HAVE_IP_TOOLS 0|HAVE_IP_TOOLS 1|g' \
index 3758b9cbeecadec97c4d9b03f063a652edf25e83..9f5ad380946e13ea99c165bf8f2870ec709bedcb 100644 (file)
@@ -102,6 +102,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-build_with_kernel4x.patch
        cd $(DIR_APP) && make -f Makefile.init makefiles \
                DEBUG="" OPT="$(CFLAGS) -fno-strict-aliasing" CCARGS="$(CCARGS)" AUXLIBS="$(AUXLIBS)"
        cd $(DIR_APP) && make $(MAKETUNING)
diff --git a/lfs/ppp b/lfs/ppp
index f25531006aa4f6f49233b0625d6ce3a136b3f9e8..86f3f7ce70012ca7b538ce9b574632d7d45b0eec 100644 (file)
--- a/lfs/ppp
+++ b/lfs/ppp
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2014   IPFire Team   <info@ipfire.org>                   #
+# Copyright (C) 2007-2017   IPFire Team   <info@ipfire.org>                   #
 #                                                                             #
 # 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        #
@@ -78,6 +78,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.4.7-headers_4.9.patch
        cd $(DIR_APP) && sed -i -e "s+/etc/ppp/connect-errors+/var/log/connect-errors+" pppd/pathnames.h
        cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
        cd $(DIR_APP) && make $(MAKETUNING) CC="gcc" RPM_OPT_FLAGS="$(CFLAGS)"
index 2d5c56078cdc146cf0e5abd9cfb47b8308c70074..1e6323620b88002b32aca0b7893a3695b173a82d 100644 (file)
--- a/lfs/udev
+++ b/lfs/udev
@@ -76,6 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && tar axf $(DIR_DL)/udev-lfs-$(VER)-1.tar.bz2
 
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208_remove_systemd_log.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208-fix_uint8_t.patch
 
        rm -rf /lib/udev/devices
        install -dv /lib/firmware
index e2d9c6fcfb61f494f265acba9eda6dd3fe05d301..0af7fe6cc846c5b6b468722fabda17ef3d915422 100644 (file)
@@ -27,7 +27,7 @@ include Config
 VERSUFIX = ipfire$(KCFG)
 MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/extra/
 
-VER        = 2.6
+VER        = 2.12
 
 THISAPP    = xtables-addons-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 087835ba7e564481b6fd398692268340
+$(DL_FILE)_MD5 = aed5ce0873709ac243f1177fc81ff452
 
 install : $(TARGET)
 
diff --git a/make.sh b/make.sh
index 663f23fbb9dc27f5c5bdbe71d26216dfe74577ce..89c3e56cafaba1c0df9b6fc3f6501ce10e755507 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -433,29 +433,29 @@ buildipfire() {
   case "${BUILD_ARCH}" in
        x86_64)
                lfsmake2 linux                  KCFG=""
-               lfsmake2 backports                      KCFG=""
-               lfsmake2 e1000e                 KCFG=""
-               lfsmake2 igb                            KCFG=""
-               lfsmake2 ixgbe                  KCFG=""
+#              lfsmake2 backports                      KCFG=""
+#              lfsmake2 e1000e                 KCFG=""
+#              lfsmake2 igb                            KCFG=""
+#              lfsmake2 ixgbe                  KCFG=""
                lfsmake2 xtables-addons         KCFG=""
                lfsmake2 linux-initrd                   KCFG=""
                ;;
        i586)
                # x86-pae (Native and new XEN) kernel build
                lfsmake2 linux                  KCFG="-pae"
-               lfsmake2 backports                      KCFG="-pae"
-               lfsmake2 e1000e                 KCFG="-pae"
-               lfsmake2 igb                            KCFG="-pae"
-               lfsmake2 ixgbe                  KCFG="-pae"
+#              lfsmake2 backports                      KCFG="-pae"
+#              lfsmake2 e1000e                 KCFG="-pae"
+#              lfsmake2 igb                            KCFG="-pae"
+#              lfsmake2 ixgbe                  KCFG="-pae"
                lfsmake2 xtables-addons         KCFG="-pae"
                lfsmake2 linux-initrd                   KCFG="-pae"
 
                # x86 kernel build
                lfsmake2 linux                  KCFG=""
-               lfsmake2 backports                      KCFG=""
-               lfsmake2 e1000e                 KCFG=""
-               lfsmake2 igb                            KCFG=""
-               lfsmake2 ixgbe                  KCFG=""
+#              lfsmake2 backports                      KCFG=""
+#              lfsmake2 e1000e                 KCFG=""
+#              lfsmake2 igb                            KCFG=""
+#              lfsmake2 ixgbe                  KCFG=""
                lfsmake2 xtables-addons         KCFG=""
                lfsmake2 linux-initrd                   KCFG=""
                ;;
diff --git a/src/patches/backports/backports-linux-upstream-1.patch b/src/patches/backports/backports-linux-upstream-1.patch
deleted file mode 100644 (file)
index c956aeb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-From 5bb6f6e1d44aa91323857715dfddb63337f8307b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
-Date: Sun, 3 Jul 2016 22:24:50 +0200
-Subject: cdc_ncm: workaround for EM7455 "silent" data interface
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit c086e7096170390594c425114d98172bc9aceb8a ]
-
-Several Lenovo users have reported problems with their Sierra
-Wireless EM7455 modem. The driver has loaded successfully and
-the MBIM management channel has appeared to work, including
-establishing a connection to the mobile network. But no frames
-have been received over the data interface.
-
-The problem affects all EM7455 and MC7455, and is assumed to
-affect other modems based on the same Qualcomm chipset and
-baseband firmware.
-
-Testing narrowed the problem down to what seems to be a
-firmware timing bug during initialization. Adding a short sleep
-while probing is sufficient to make the problem disappear.
-Experiments have shown that 1-2 ms is too little to have any
-effect, while 10-20 ms is enough to reliably succeed.
-
-Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
-Reported-by: Ralph Plawetzki <ralph@purejava.org>
-Reported-by: Andreas Fett <andreas.fett@secunet.com>
-Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
-Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
-Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
-Signed-off-by: Bjørn Mork <bjorn@mork.no>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/usb/cdc_ncm.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
-index c663722..584504e 100644
---- a/drivers/net/usb/cdc_ncm.c
-+++ b/drivers/net/usb/cdc_ncm.c
-@@ -438,6 +438,13 @@ advance:
-       if (cdc_ncm_setup(dev))
-               goto error2;
-+      /* Some firmwares need a pause here or they will silently fail
-+       * to set up the interface properly.  This value was decided
-+       * empirically on a Sierra Wireless MC7455 running 02.08.02.00
-+       * firmware.
-+       */
-+      usleep_range(10000, 20000);
-+
-       /* configure data interface */
-       temp = usb_set_interface(dev->udev, iface_no, data_altsetting);
-       if (temp) {
--- 
-cgit v0.12
-
diff --git a/src/patches/backports/backports-linux-upstream-2.patch b/src/patches/backports/backports-linux-upstream-2.patch
deleted file mode 100644 (file)
index 4cefcc7..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From d6b8a68ac7b6d2e241f8d34b769c98a1793d9124 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Wed, 20 Apr 2016 23:23:08 +0100
-Subject: atl2: Disable unimplemented scatter/gather feature
-
-[ Upstream commit f43bfaeddc79effbf3d0fcb53ca477cca66f3db8 ]
-
-atl2 includes NETIF_F_SG in hw_features even though it has no support
-for non-linear skbs.  This bug was originally harmless since the
-driver does not claim to implement checksum offload and that used to
-be a requirement for SG.
-
-Now that SG and checksum offload are independent features, if you
-explicitly enable SG *and* use one of the rare protocols that can use
-SG without checkusm offload, this potentially leaks sensitive
-information (before you notice that it just isn't working).  Therefore
-this obscure bug has been designated CVE-2016-2117.
-
-Reported-by: Justin Yackoski <jyackoski@crypto-nite.com>
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Fixes: ec5f06156423 ("net: Kill link between CSUM and SG features.")
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/atheros/atlx/atl2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
-index 265ce1b..96fe542 100644
---- a/drivers/net/ethernet/atheros/atlx/atl2.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
-@@ -1413,7 +1413,7 @@ static int atl2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
-       err = -EIO;
--      netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_CTAG_RX;
-+      netdev->hw_features = NETIF_F_HW_VLAN_CTAG_RX;
-       netdev->features |= (NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX);
-       /* Init PHY as early as possible due to power saving issue  */
--- 
-cgit v0.12
-
diff --git a/src/patches/backports/backports-linux-upstream-3.patch b/src/patches/backports/backports-linux-upstream-3.patch
deleted file mode 100644 (file)
index deb4a4c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From fc70a4a5cb616bf390cee03390265045de5cf06a Mon Sep 17 00:00:00 2001
-From: Feng Tang <feng.tang@intel.com>
-Date: Fri, 24 Jun 2016 15:26:05 +0800
-Subject: net: alx: Work around the DMA RX overflow issue
-
-[ Upstream commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 ]
-
-Note: This is a verified backported patch for stable 4.4 kernel, and it
-could also be applied to 4.3/4.2/4.1/3.18/3.16
-
-There is a problem with alx devices, that the network link will be
-lost in 1-5 minutes after the device is up.
-
->From debugging without datasheet, we found the error always
-happen when the DMA RX address is set to 0x....fc0, which is very
-likely to be a HW/silicon problem.
-
-This patch will apply rx skb with 64 bytes longer space, and if the
-allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
-to advance the address, so that the RX overflow can be avoided.
-
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
-Signed-off-by: Feng Tang <feng.tang@intel.com>
-Suggested-by: Eric Dumazet <edumazet@google.com>
-Tested-by: Ole Lukoie <olelukoie@mail.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/atheros/alx/main.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
-index 3e1d7d2..7585960 100644
---- a/drivers/net/ethernet/atheros/alx/main.c
-+++ b/drivers/net/ethernet/atheros/alx/main.c
-@@ -86,9 +86,14 @@ static int alx_refill_rx_ring(struct alx_priv *alx, gfp_t gfp)
-       while (!cur_buf->skb && next != rxq->read_idx) {
-               struct alx_rfd *rfd = &rxq->rfd[cur];
--              skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size, gfp);
-+              skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size + 64, gfp);
-               if (!skb)
-                       break;
-+
-+              /* Workround for the HW RX DMA overflow issue */
-+              if (((unsigned long)skb->data & 0xfff) == 0xfc0)
-+                      skb_reserve(skb, 64);
-+
-               dma = dma_map_single(&alx->hw.pdev->dev,
-                                    skb->data, alx->rxbuf_size,
-                                    DMA_FROM_DEVICE);
--- 
-cgit v0.12
-
diff --git a/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch b/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch
deleted file mode 100644 (file)
index 7393760..0000000
+++ /dev/null
@@ -1,1039 +0,0 @@
-diff -Naur linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h
---- linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h      2013-08-25 16:00:53.398088168 +0200
-@@ -0,0 +1,31 @@
-+#ifndef __IPT_IPP2P_H
-+#define __IPT_IPP2P_H
-+#define IPP2P_VERSION "0.8.2-ipfire"
-+
-+struct ipt_p2p_info {
-+    int cmd;
-+    int debug;
-+};
-+
-+#endif //__IPT_IPP2P_H
-+
-+#define SHORT_HAND_IPP2P      1 /* --ipp2p switch*/
-+//#define SHORT_HAND_DATA             4 /* --ipp2p-data switch*/
-+#define SHORT_HAND_NONE               5 /* no short hand*/
-+
-+#define IPP2P_EDK             (1 << 1)
-+#define IPP2P_DATA_KAZAA      (1 << 2)
-+#define IPP2P_DATA_EDK                (1 << 3)
-+#define IPP2P_DATA_DC         (1 << 4)
-+#define IPP2P_DC              (1 << 5)
-+#define IPP2P_DATA_GNU                (1 << 6)
-+#define IPP2P_GNU             (1 << 7)
-+#define IPP2P_KAZAA           (1 << 8)
-+#define IPP2P_BIT             (1 << 9)
-+#define IPP2P_APPLE           (1 << 10)
-+#define IPP2P_SOUL            (1 << 11)
-+#define IPP2P_WINMX           (1 << 12)
-+#define IPP2P_ARES            (1 << 13)
-+#define IPP2P_MUTE            (1 << 14)
-+#define IPP2P_WASTE           (1 << 15)
-+#define IPP2P_XDCC            (1 << 16)
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c
---- linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c        2013-08-25 16:00:53.398088168 +0200
-@@ -0,0 +1,970 @@
-+#if defined(MODVERSIONS)
-+#include <linux/modversions.h>
-+#endif
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/netfilter_ipv4/ip_tables.h>
-+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
-+#include <net/tcp.h>
-+#include <net/udp.h>
-+
-+#define get_u8(X,O)  (*(__u8 *)(X + O))
-+#define get_u16(X,O)  (*(__u16 *)(X + O))
-+#define get_u32(X,O)  (*(__u32 *)(X + O))
-+
-+MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
-+MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");
-+MODULE_LICENSE("GPL");
-+
-+
-+/*Search for UDP eDonkey/eMule/Kad commands*/
-+int
-+udp_search_edk (unsigned char *haystack, int packet_len)
-+{
-+    unsigned char *t = haystack;
-+    t += 8;
-+
-+      switch (t[0]) {
-+              case 0xe3: 
-+              {       /*edonkey*/
-+                      switch (t[1]) 
-+                      {
-+                              /* client -> server status request */
-+                              case 0x96: 
-+                                      if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
-+                                      break;
-+                              /* server -> client status request */
-+                              case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
-+                                      break;
-+                                              /* server description request */
-+                                              /* e3 2a ff f0 .. | size == 6 */
-+                              case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
-+                                      break;
-+                                              /* server description response */
-+                                              /* e3 a3 ff f0 ..  | size > 40 && size < 200 */
-+                              //case 0xa3: return ((IPP2P_EDK * 100) + 53);
-+                              //      break;
-+                              case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
-+                                      break;
-+
-+                              case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
-+                                      break;
-+                      }
-+                      break;
-+              }
-+              case 0xe4: 
-+              {
-+                      switch (t[1]) 
-+                      {
-+                                              /* e4 20 .. | size == 43 */
-+                              case 0x20: if ((packet_len == 43) && (t[2] != 0x00) && (t[34] != 0x00)) return ((IPP2P_EDK * 100) + 60);
-+                                      break;
-+                                              /* e4 00 .. 00 | size == 35 ? */
-+                              case 0x00: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 61);
-+                                      break;
-+                                              /* e4 10 .. 00 | size == 35 ? */
-+                              case 0x10: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 62);
-+                                      break;
-+                                              /* e4 18 .. 00 | size == 35 ? */
-+                              case 0x18: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 63);
-+                                      break;
-+                                              /* e4 52 .. | size = 44 */
-+                              case 0x52: if (packet_len == 44 ) return ((IPP2P_EDK * 100) + 64);
-+                                      break;
-+                                              /* e4 58 .. | size == 6 */
-+                              case 0x58: if (packet_len == 14 ) return ((IPP2P_EDK * 100) + 65);
-+                                      break;
-+                                              /* e4 59 .. | size == 2 */
-+                              case 0x59: if (packet_len == 10 )return ((IPP2P_EDK * 100) + 66);
-+                                      break;
-+                                      /* e4 28 .. | packet_len == 52,77,102,127... */
-+                              case 0x28: if (((packet_len-52) % 25) == 0) return ((IPP2P_EDK * 100) + 67);
-+                                      break;
-+                                      /* e4 50 xx xx | size == 4 */
-+                              case 0x50: if (packet_len == 12) return ((IPP2P_EDK * 100) + 68);
-+                                      break;
-+                                      /* e4 40 xx xx | size == 48 */
-+                              case 0x40: if (packet_len == 56) return ((IPP2P_EDK * 100) + 69);
-+                                      break;
-+                      }
-+                      break;
-+              }
-+      } /* end of switch (t[0]) */
-+    return 0;
-+}/*udp_search_edk*/
-+
-+
-+/*Search for UDP Gnutella commands*/
-+int
-+udp_search_gnu (unsigned char *haystack, int packet_len)
-+{
-+    unsigned char *t = haystack;
-+    t += 8;
-+    
-+    if (memcmp(t, "GND", 3) == 0) return ((IPP2P_GNU * 100) + 51);
-+    if (memcmp(t, "GNUTELLA ", 9) == 0) return ((IPP2P_GNU * 100) + 52);
-+    return 0;
-+}/*udp_search_gnu*/
-+
-+
-+/*Search for UDP KaZaA commands*/
-+int
-+udp_search_kazaa (unsigned char *haystack, int packet_len)
-+{
-+    unsigned char *t = haystack;
-+    
-+    if (t[packet_len-1] == 0x00){
-+      t += (packet_len - 6);
-+      if (memcmp(t, "KaZaA", 5) == 0) return (IPP2P_KAZAA * 100 +50);
-+    }
-+    
-+    return 0;
-+}/*udp_search_kazaa*/
-+
-+/*Search for UDP DirectConnect commands*/
-+int
-+udp_search_directconnect (unsigned char *haystack, int packet_len)
-+{
-+    unsigned char *t = haystack;
-+    if ((*(t + 8) == 0x24) && (*(t + packet_len - 1) == 0x7c)) {
-+      t+=8;
-+      if (memcmp(t, "SR ", 3) == 0)                   return ((IPP2P_DC * 100) + 60);
-+      if (memcmp(t, "Ping ", 5) == 0)                 return ((IPP2P_DC * 100) + 61);
-+    }
-+    return 0;
-+}/*udp_search_directconnect*/
-+
-+
-+
-+/*Search for UDP BitTorrent commands*/
-+int
-+udp_search_bit (unsigned char *haystack, int packet_len)
-+{
-+      switch(packet_len)
-+      {
-+              case 24:
-+                      /* ^ 00 00 04 17 27 10 19 80 */
-+                      if ((ntohl(get_u32(haystack, 8)) == 0x00000417) && (ntohl(get_u32(haystack, 12)) == 0x27101980)) 
-+                              return (IPP2P_BIT * 100 + 50);
-+                      break;
-+              case 44:
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000400) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
-+                              return (IPP2P_BIT * 100 + 51);
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000400))
-+                              return (IPP2P_BIT * 100 + 61);
-+                      break;
-+              case 65:
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000404) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
-+                              return (IPP2P_BIT * 100 + 52);
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000404))
-+                              return (IPP2P_BIT * 100 + 62);
-+                      break;
-+              case 67:
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000406) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
-+                              return (IPP2P_BIT * 100 + 53);
-+                      if (get_u32(haystack, 16) == __constant_htonl(0x00000406))
-+                              return (IPP2P_BIT * 100 + 63);
-+                      break;
-+              case 211:
-+                      if (get_u32(haystack, 8) == __constant_htonl(0x00000405)) 
-+                              return (IPP2P_BIT * 100 + 54);
-+                      break;
-+              case 29:
-+                      if ((get_u32(haystack, 8) == __constant_htonl(0x00000401))) 
-+                              return (IPP2P_BIT * 100 + 55);
-+                      break;
-+              case 52:
-+                      if (get_u32(haystack,8)  == __constant_htonl(0x00000827) &&
-+                      get_u32(haystack,12) == __constant_htonl(0x37502950))
-+                              return (IPP2P_BIT * 100 + 80);
-+                      break;
-+              default:
-+                      /* this packet does not have a constant size */
-+                      if (packet_len >= 40 && get_u32(haystack, 16) == __constant_htonl(0x00000402) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
-+                              return (IPP2P_BIT * 100 + 56);
-+                      break;
-+      }
-+    
-+      /* some extra-bitcomet rules:
-+      * "d1:" [a|r] "d2:id20:"
-+      */
-+      if (packet_len > 30 && get_u8(haystack, 8) == 'd' && get_u8(haystack, 9) == '1' && get_u8(haystack, 10) == ':' )
-+      {
-+              if (get_u8(haystack, 11) == 'a' || get_u8(haystack, 11) == 'r')
-+              {
-+                      if (memcmp(haystack+12,"d2:id20:",8)==0)
-+                              return (IPP2P_BIT * 100 + 57);
-+              }
-+      }
-+    
-+#if 0
-+      /* bitlord rules */
-+      /* packetlen must be bigger than 40 */
-+      /* first 4 bytes are zero */
-+      if (packet_len > 40 && get_u32(haystack, 8) == 0x00000000)
-+      {
-+              /* first rule: 00 00 00 00 01 00 00 xx xx xx xx 00 00 00 00*/
-+              if (get_u32(haystack, 12) == 0x00000000 && 
-+                  get_u32(haystack, 16) == 0x00010000 &&
-+                  get_u32(haystack, 24) == 0x00000000 )
-+                      return (IPP2P_BIT * 100 + 71);
-+                      
-+              /* 00 01 00 00 0d 00 00 xx xx xx xx 00 00 00 00*/
-+              if (get_u32(haystack, 12) == 0x00000001 && 
-+                  get_u32(haystack, 16) == 0x000d0000 &&
-+                  get_u32(haystack, 24) == 0x00000000 )
-+                      return (IPP2P_BIT * 100 + 71);
-+              
-+                  
-+      }
-+#endif
-+
-+    return 0;
-+}/*udp_search_bit*/
-+
-+
-+
-+/*Search for Ares commands*/
-+//#define IPP2P_DEBUG_ARES
-+int
-+search_ares (const unsigned char *payload, const u16 plen)
-+//int search_ares (unsigned char *haystack, int packet_len, int head_len)
-+{
-+//    const unsigned char *t = haystack + head_len;
-+      
-+      /* all ares packets start with  */
-+      if (payload[1] == 0 && (plen - payload[0]) == 3)
-+      {
-+              switch (payload[2])
-+              {
-+                      case 0x5a:
-+                              /* ares connect */
-+                              if ( plen == 6 && payload[5] == 0x05 ) return ((IPP2P_ARES * 100) + 1);
-+                              break;
-+                      case 0x09:
-+                              /* ares search, min 3 chars --> 14 bytes
-+                               * lets define a search can be up to 30 chars --> max 34 bytes
-+                               */
-+                              if ( plen >= 14 && plen <= 34 ) return ((IPP2P_ARES * 100) + 1);
-+                              break;
-+#ifdef IPP2P_DEBUG_ARES
-+                      default:
-+                      printk(KERN_DEBUG "Unknown Ares command %x recognized, len: %u \n", (unsigned int) payload[2],plen);
-+#endif /* IPP2P_DEBUG_ARES */
-+              }
-+      }
-+
-+#if 0         
-+      /* found connect packet: 03 00 5a 04 03 05 */
-+      /* new version ares 1.8: 03 00 5a xx xx 05 */
-+    if ((plen) == 6){ /* possible connect command*/
-+      if ((payload[0] == 0x03) && (payload[1] == 0x00) && (payload[2] == 0x5a) && (payload[5] == 0x05))
-+          return ((IPP2P_ARES * 100) + 1);
-+    }
-+    if ((plen) == 60){        /* possible download command*/
-+      if ((payload[59] == 0x0a) && (payload[58] == 0x0a)){
-+          if (memcmp(t, "PUSH SHA1:", 10) == 0) /* found download command */
-+              return ((IPP2P_ARES * 100) + 2);
-+      }
-+    }
-+#endif
-+
-+    return 0;
-+} /*search_ares*/
-+
-+/*Search for SoulSeek commands*/
-+int
-+search_soul (const unsigned char *payload, const u16 plen)
-+{
-+//#define IPP2P_DEBUG_SOUL
-+    /* match: xx xx xx xx | xx = sizeof(payload) - 4 */
-+    if (get_u32(payload, 0) == (plen - 4)){
-+      const __u32 m=get_u32(payload, 4);
-+      /* match 00 yy yy 00, yy can be everything */
-+        if ( get_u8(payload, 4) == 0x00 && get_u8(payload, 7) == 0x00 )
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+      printk(KERN_DEBUG "0: Soulseek command 0x%x recognized\n",get_u32(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 1);
-+      }
-+      
-+        /* next match: 01 yy 00 00 | yy can be everything */
-+        if ( get_u8(payload, 4) == 0x01 && get_u16(payload, 6) == 0x0000 )
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+      printk(KERN_DEBUG "1: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 2);
-+      }
-+      
-+      /* other soulseek commandos are: 1-5,7,9,13-18,22,23,26,28,35-37,40-46,50,51,60,62-69,91,92,1001 */
-+      /* try to do this in an intelligent way */
-+      /* get all small commandos */
-+      switch(m)
-+      {
-+              case 7:
-+              case 9:
-+              case 22:
-+              case 23:
-+              case 26:
-+              case 28:
-+              case 50:
-+              case 51:
-+              case 60:
-+              case 91:
-+              case 92:
-+              case 1001:
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "2: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 3);
-+      }
-+      
-+      if (m > 0 && m < 6 ) 
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "3: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 4);
-+      }
-+      if (m > 12 && m < 19 )
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "4: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 5);
-+      }
-+
-+      if (m > 34 && m < 38 )
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "5: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 6);
-+      }
-+
-+      if (m > 39 && m < 47 )
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "6: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 7);
-+      }
-+
-+      if (m > 61 && m < 70 ) 
-+      {
-+#ifdef IPP2P_DEBUG_SOUL
-+              printk(KERN_DEBUG "7: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
-+#endif /* IPP2P_DEBUG_SOUL */
-+              return ((IPP2P_SOUL * 100) + 8);
-+      }
-+
-+#ifdef IPP2P_DEBUG_SOUL
-+      printk(KERN_DEBUG "unknown SOULSEEK command: 0x%x, first 16 bit: 0x%x, first 8 bit: 0x%x ,soulseek ???\n",get_u32(payload, 4),get_u16(payload, 4) >> 16,get_u8(payload, 4) >> 24);
-+#endif /* IPP2P_DEBUG_SOUL */
-+    }
-+      
-+      /* match 14 00 00 00 01 yy 00 00 00 STRING(YY) 01 00 00 00 00 46|50 00 00 00 00 */
-+      /* without size at the beginning !!! */
-+      if ( get_u32(payload, 0) == 0x14 && get_u8(payload, 4) == 0x01 )
-+      {
-+              __u32 y=get_u32(payload, 5);
-+              /* we need 19 chars + string */
-+              if ( (y + 19) <= (plen) )
-+              {
-+                      const unsigned char *w=payload+9+y;
-+                      if (get_u32(w, 0) == 0x01 && ( get_u16(w, 4) == 0x4600 || get_u16(w, 4) == 0x5000) && get_u32(w, 6) == 0x00);
-+#ifdef IPP2P_DEBUG_SOUL
-+                      printk(KERN_DEBUG "Soulssek special client command recognized\n");
-+#endif /* IPP2P_DEBUG_SOUL */
-+                      return ((IPP2P_SOUL * 100) + 9);
-+              }
-+      }
-+    return 0;
-+}
-+
-+
-+/*Search for WinMX commands*/
-+int
-+search_winmx (const unsigned char *payload, const u16 plen)
-+{
-+//#define IPP2P_DEBUG_WINMX
-+    if (((plen) == 4) && (memcmp(payload, "SEND", 4) == 0))  return ((IPP2P_WINMX * 100) + 1);
-+    if (((plen) == 3) && (memcmp(payload, "GET", 3) == 0))  return ((IPP2P_WINMX * 100) + 2);
-+    //if (packet_len < (head_len + 10)) return 0;
-+    if (plen < 10) return 0;
-+    
-+    if ((memcmp(payload, "SEND", 4) == 0) || (memcmp(payload, "GET", 3) == 0)){
-+        u16 c=4;
-+        const u16 end=plen-2;
-+        u8 count=0;
-+        while (c < end)
-+        {
-+              if (payload[c]== 0x20 && payload[c+1] == 0x22)
-+              {
-+                      c++;
-+                      count++;
-+                      if (count>=2) return ((IPP2P_WINMX * 100) + 3);
-+              }
-+              c++;
-+        }
-+    }
-+    
-+    if ( plen == 149 && payload[0] == '8' )
-+    {
-+#ifdef IPP2P_DEBUG_WINMX
-+      printk(KERN_INFO "maybe WinMX\n");
-+#endif
-+      if (get_u32(payload,17) == 0 && get_u32(payload,21) == 0 && get_u32(payload,25) == 0 &&
-+//                get_u32(payload,33) == __constant_htonl(0x71182b1a) && get_u32(payload,37) == __constant_htonl(0x05050000) &&
-+//                get_u32(payload,133) == __constant_htonl(0x31097edf) && get_u32(payload,145) == __constant_htonl(0xdcb8f792))
-+          get_u16(payload,39) == 0 && get_u16(payload,135) == __constant_htons(0x7edf) && get_u16(payload,147) == __constant_htons(0xf792))
-+          
-+      {
-+#ifdef IPP2P_DEBUG_WINMX
-+              printk(KERN_INFO "got WinMX\n");
-+#endif
-+              return ((IPP2P_WINMX * 100) + 4);
-+      }
-+    }
-+    return 0;
-+} /*search_winmx*/
-+
-+
-+/*Search for appleJuice commands*/
-+int
-+search_apple (const unsigned char *payload, const u16 plen)
-+{
-+    if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0))  return (IPP2P_APPLE * 100);
-+    
-+    return 0;
-+}
-+
-+
-+/*Search for BitTorrent commands*/
-+int
-+search_bittorrent (const unsigned char *payload, const u16 plen)
-+{
-+    if (plen > 20)
-+    {
-+      /* test for match 0x13+"BitTorrent protocol" */
-+      if (payload[0] == 0x13) 
-+      {
-+              if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);
-+      }
-+      
-+      /* get tracker commandos, all starts with GET /
-+      * then it can follow: scrape| announce
-+      * and then ?hash_info=
-+      */
-+      if (memcmp(payload,"GET /",5) == 0)
-+      {
-+              /* message scrape */
-+              if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);
-+              /* message announce */
-+              if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);
-+      }
-+    } 
-+    else 
-+    {
-+      /* bitcomet encryptes the first packet, so we have to detect another 
-+       * one later in the flow */
-+       /* first try failed, too many missdetections */
-+      //if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);
-+      
-+      /* second try: block request packets */
-+      if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);
-+    }
-+
-+    return 0;
-+}
-+
-+
-+
-+/*check for Kazaa get command*/
-+int
-+search_kazaa (const unsigned char *payload, const u16 plen)
-+
-+{
-+    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)
-+      return (IPP2P_DATA_KAZAA * 100);
-+
-+    return 0;
-+}
-+
-+
-+/*check for gnutella get command*/
-+int
-+search_gnu (const unsigned char *payload, const u16 plen)
-+{
-+    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+    {
-+      if (memcmp(payload, "GET /get/", 9) == 0)       return ((IPP2P_DATA_GNU * 100) + 1);
-+      if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2); 
-+    }
-+    return 0;
-+}
-+
-+
-+/*check for gnutella get commands and other typical data*/
-+int
-+search_all_gnu (const unsigned char *payload, const u16 plen)
-+{
-+    
-+    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+    {
-+      
-+      if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);
-+      if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);    
-+    
-+    
-+      if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))
-+      {        
-+              u16 c=8;
-+              const u16 end=plen-22;
-+              while (c < end) {
-+                      if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0))) 
-+                              return ((IPP2P_GNU * 100) + 3);
-+                      c++;
-+              }
-+      }
-+    }
-+    return 0;
-+}
-+
-+
-+/*check for KaZaA download commands and other typical data*/
-+int
-+search_all_kazaa (const unsigned char *payload, const u16 plen)
-+{
-+    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
-+    {
-+
-+      if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);
-+    
-+      if (memcmp(payload, "GET /", 5) == 0) {
-+              u16 c = 8;
-+              const u16 end=plen-22;
-+              while (c < end) {
-+                      if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))
-+                              return ((IPP2P_KAZAA * 100) + 2);
-+                      c++;
-+              }
-+      }
-+    }
-+    return 0;
-+}
-+
-+/*fast check for edonkey file segment transfer command*/
-+int
-+search_edk (const unsigned char *payload, const u16 plen)
-+{
-+    if (payload[0] != 0xe3) 
-+      return 0;
-+    else {
-+      if (payload[5] == 0x47) 
-+          return (IPP2P_DATA_EDK * 100);
-+      else    
-+          return 0;
-+    }
-+}
-+
-+
-+
-+/*intensive but slower search for some edonkey packets including size-check*/
-+int
-+search_all_edk (const unsigned char *payload, const u16 plen)
-+{
-+    if (payload[0] != 0xe3) 
-+      return 0;
-+    else {
-+      //t += head_len;        
-+      const u16 cmd = get_u16(payload, 1);
-+      if (cmd == (plen - 5)) {
-+          switch (payload[5]) {
-+              case 0x01: return ((IPP2P_EDK * 100) + 1);      /*Client: hello or Server:hello*/
-+              case 0x4c: return ((IPP2P_EDK * 100) + 9);      /*Client: Hello-Answer*/
-+          }
-+      }
-+      return 0;
-+     }
-+}
-+
-+
-+/*fast check for Direct Connect send command*/
-+int
-+search_dc (const unsigned char *payload, const u16 plen)
-+{
-+
-+    if (payload[0] != 0x24 ) 
-+      return 0;
-+    else {
-+      if (memcmp(&payload[1], "Send|", 5) == 0)
-+          return (IPP2P_DATA_DC * 100);
-+      else
-+          return 0;
-+    } 
-+
-+}
-+
-+
-+/*intensive but slower check for all direct connect packets*/
-+int
-+search_all_dc (const unsigned char *payload, const u16 plen)
-+{
-+//    unsigned char *t = haystack;
-+
-+    if (payload[0] == 0x24 && payload[plen-1] == 0x7c) 
-+    {
-+      const unsigned char *t=&payload[1];
-+              /* Client-Hub-Protocol */
-+      if (memcmp(t, "Lock ", 5) == 0)                 return ((IPP2P_DC * 100) + 1);
-+      /* Client-Client-Protocol, some are already recognized by client-hub (like lock) */
-+      if (memcmp(t, "MyNick ", 7) == 0)               return ((IPP2P_DC * 100) + 38); 
-+    }
-+    return 0;
-+}
-+
-+/*check for mute*/
-+int
-+search_mute (const unsigned char *payload, const u16 plen)
-+{
-+      if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )
-+      {
-+              //printk(KERN_DEBUG "size hit: %u",size);
-+              if (memcmp(payload,"PublicKey: ",11) == 0 )
-+              { 
-+                      return ((IPP2P_MUTE * 100) + 0);
-+                      
-+/*                    if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)
-+                      {
-+                              printk(KERN_DEBUG "end pubic key hit: %u",size);
-+                              
-+                      }*/
-+              }
-+      }
-+      return 0;
-+}
-+
-+
-+/* check for xdcc */
-+int
-+search_xdcc (const unsigned char *payload, const u16 plen)
-+{
-+      /* search in small packets only */
-+      if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)
-+      {
-+              
-+              u16 x=10;
-+              const u16 end=plen - 13;
-+              
-+              /* is seems to be a irc private massage, chedck for xdcc command */
-+              while (x < end)
-+              {
-+                      if (payload[x] == ':')
-+                      {
-+                              if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )
-+                                      return ((IPP2P_XDCC * 100) + 0);
-+                      }
-+                      x++;
-+              }
-+      }
-+      return 0;
-+}
-+
-+/* search for waste */
-+int search_waste(const unsigned char *payload, const u16 plen)
-+{
-+      if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)
-+              return ((IPP2P_WASTE * 100) + 0);
-+
-+      return 0;
-+}
-+
-+
-+static struct {
-+    int command;
-+    __u8 short_hand;                  /*for fucntions included in short hands*/
-+    int packet_len;
-+    int (*function_name) (const unsigned char *, const u16);
-+} matchlist[] = {
-+    {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},
-+//    {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},
-+//    {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},
-+//    {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},
-+    {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},
-+//    {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},
-+    {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},
-+    {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},
-+    {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},
-+    {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},
-+    {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},
-+    {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},
-+    {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},
-+    {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},
-+    {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},
-+    {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},
-+    {0,0,0,NULL}
-+};
-+
-+
-+static struct {
-+    int command;
-+    __u8 short_hand;                  /*for fucntions included in short hands*/
-+    int packet_len;
-+    int (*function_name) (unsigned char *, int);
-+} udp_list[] = {
-+    { IPP2P_KAZAA, SHORT_HAND_IPP2P, 14, &udp_search_kazaa},
-+    { IPP2P_BIT,   SHORT_HAND_IPP2P, 23, &udp_search_bit},
-+    { IPP2P_GNU,   SHORT_HAND_IPP2P, 11, &udp_search_gnu},
-+    { IPP2P_EDK,   SHORT_HAND_IPP2P,  9, &udp_search_edk},
-+    { IPP2P_DC,    SHORT_HAND_IPP2P, 12, &udp_search_directconnect},    
-+    { 0, 0, 0, NULL }
-+};
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+static int
-+match(const struct sk_buff *skb,
-+      const struct net_device *in,
-+      const struct net_device *out,
-+      const void *matchinfo,
-+      int offset,
-+      const void *hdr,
-+      u_int16_t datalen,
-+      int *hotdrop) 
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+static int
-+match(const struct sk_buff *skb,
-+      const struct net_device *in,
-+      const struct net_device *out,
-+      const void *matchinfo,
-+      int offset,
-+      int *hotdrop) 
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-+static int
-+match(const struct sk_buff *skb,
-+      const struct net_device *in,
-+      const struct net_device *out,
-+      const void *matchinfo,
-+      int offset,
-+      unsigned int protoff,
-+      int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+static int
-+match(const struct sk_buff *skb,
-+      const struct net_device *in,
-+      const struct net_device *out,
-+      const struct xt_match *match,
-+      const void *matchinfo,
-+      int offset,
-+      unsigned int protoff,
-+      int *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+static bool
-+match(const struct sk_buff *skb,
-+      const struct net_device *in,
-+      const struct net_device *out,
-+      const struct xt_match *match,
-+      const void *matchinfo,
-+      int offset, 
-+      unsigned int protoff, 
-+      bool *hotdrop)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+static bool
-+match(const struct sk_buff *skb,
-+      const struct xt_match_param *par)
-+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
-+static int
-+match(const struct sk_buff *skb,
-+      struct xt_action_param *par)
-+#endif
-+{
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+      const struct ipt_p2p_info *info = matchinfo;
-+#else
-+      const struct ipt_p2p_info *info = par->matchinfo;
-+      const int offset = par->fragoff;
-+#endif
-+    unsigned char  *haystack;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-+    struct iphdr *ip = ip_hdr(skb);
-+#else
-+    struct iphdr *ip = skb->nh.iph;
-+#endif
-+    int p2p_result = 0, i = 0;
-+//    int head_len;
-+    int hlen = ntohs(ip->tot_len)-(ip->ihl*4);        /*hlen = packet-data length*/
-+
-+    /*must not be a fragment*/
-+    if (offset) {
-+      if (info->debug) printk("IPP2P.match: offset found %i \n",offset);
-+      return 0;
-+    }
-+    
-+    /*make sure that skb is linear*/
-+    if(skb_is_nonlinear(skb)){
-+      if (info->debug) printk("IPP2P.match: nonlinear skb found\n");
-+      return 0;
-+    }
-+
-+
-+    haystack=(char *)ip+(ip->ihl*4);          /*haystack = packet data*/
-+
-+    switch (ip->protocol){
-+      case IPPROTO_TCP:               /*what to do with a TCP packet*/
-+      {
-+          struct tcphdr *tcph = (void *) ip + ip->ihl * 4;
-+          
-+          if (tcph->fin) return 0;  /*if FIN bit is set bail out*/
-+          if (tcph->syn) return 0;  /*if SYN bit is set bail out*/
-+          if (tcph->rst) return 0;  /*if RST bit is set bail out*/
-+          
-+          haystack += tcph->doff * 4; /*get TCP-Header-Size*/
-+          hlen -= tcph->doff * 4;
-+          while (matchlist[i].command) {
-+              if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||
-+                  ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&
-+                  (hlen > matchlist[i].packet_len)) {
-+                          p2p_result = matchlist[i].function_name(haystack, hlen);
-+                          if (p2p_result) 
-+                          {
-+                              if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n", 
-+                                  p2p_result, &ip->saddr,ntohs(tcph->source), &ip->daddr,ntohs(tcph->dest),hlen);
-+                              return p2p_result;
-+                          }
-+              }
-+          i++;
-+          }
-+          return p2p_result;
-+      }
-+      
-+      case IPPROTO_UDP:               /*what to do with an UDP packet*/
-+      {
-+          struct udphdr *udph = (void *) ip + ip->ihl * 4;
-+          
-+          while (udp_list[i].command){
-+              if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||
-+                  ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&
-+                  (hlen > udp_list[i].packet_len)) {
-+                          p2p_result = udp_list[i].function_name(haystack, hlen);
-+                          if (p2p_result){
-+                              if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n", 
-+                                  p2p_result, &ip->saddr,ntohs(udph->source), &ip->daddr,ntohs(udph->dest),hlen);
-+                              return p2p_result;
-+                          }
-+              }
-+          i++;
-+          }                   
-+          return p2p_result;
-+      }
-+    
-+      default: return 0;
-+    }
-+}
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+static int
-+checkentry(const char *tablename,
-+         const struct ipt_ip *ip,
-+         void *matchinfo,
-+         unsigned int matchsize,
-+         unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-+static int
-+checkentry(const char *tablename,
-+         const void *inf,
-+         void *matchinfo,
-+         unsigned int matchsize,
-+         unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-+static int
-+checkentry(const char *tablename,
-+         const void *inf,
-+         const struct xt_match *match,
-+         void *matchinfo,
-+         unsigned int matchsize,
-+         unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-+static int
-+checkentry(const char *tablename,
-+         const void *inf,
-+         const struct xt_match *match,
-+         void *matchinfo,
-+         unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-+static bool
-+checkentry(const char *tablename,
-+         const void *inf,
-+         const struct xt_match *match,
-+         void *matchinfo,
-+         unsigned int hook_mask)
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+static bool
-+checkentry(const struct xt_mtchk_param *par)
-+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
-+static int
-+checkentry(const struct xt_mtchk_param *par)
-+#endif
-+{
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
-+    return 1;
-+#else
-+    return 0;
-+#endif
-+}
-+
-+
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+static struct xt_match ipp2p_match = {
-+#else
-+static struct ipt_match ipp2p_match = { 
-+#endif
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-+      { NULL, NULL }, 
-+      "ipp2p", 
-+      &ipp2p_match, 
-+      &ipp2p_checkentry, 
-+      NULL, 
-+      THIS_MODULE
-+#endif
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-+      .name           = "ipp2p",
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+      .family         = AF_INET,
-+#endif
-+      .match          = &match,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
-+      .matchsize      = sizeof(struct ipt_p2p_info),
-+#endif
-+      .checkentry     = &checkentry,
-+      .me             = THIS_MODULE,
-+#endif
-+};
-+
-+
-+static int __init init(void)
-+{
-+    printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+    return xt_register_match(&ipp2p_match);
-+#else
-+    return ipt_register_match(&ipp2p_match);
-+#endif
-+}
-+      
-+static void __exit fini(void)
-+{
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
-+    xt_unregister_match(&ipp2p_match);
-+#else
-+    ipt_unregister_match(&ipp2p_match);
-+#endif
-+    printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);    
-+}
-+      
-+module_init(init);
-+module_exit(fini);
-+
-+
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Kconfig linux-3.10.9/net/ipv4/netfilter/Kconfig
---- linux-3.10.9.org/net/ipv4/netfilter/Kconfig        2013-08-21 00:40:47.000000000 +0200
-+++ linux-3.10.9/net/ipv4/netfilter/Kconfig    2013-08-25 16:00:53.398088168 +0200
-@@ -320,5 +320,15 @@
- endif # IP_NF_ARPTABLES
-+config IP_NF_MATCH_IPP2P
-+      tristate  'IPP2P match support'
-+      depends on IP_NF_IPTABLES
-+      help
-+        This option makes possible to match some P2P packets
-+        therefore helps controlling such traffic.
-+      
-+        If you want to compile it as a module, say M here and read
-+        <file:Documentation/modules.txt>.  If unsure, say `N'.
-+
- endmenu
-diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Makefile linux-3.10.9/net/ipv4/netfilter/Makefile
---- linux-3.10.9.org/net/ipv4/netfilter/Makefile       2013-08-21 00:40:47.000000000 +0200
-+++ linux-3.10.9/net/ipv4/netfilter/Makefile   2013-08-25 16:03:21.634750053 +0200
-@@ -40,6 +40,7 @@
- # matches
- obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
- obj-$(CONFIG_IP_NF_MATCH_RPFILTER) += ipt_rpfilter.o
-+obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
- # targets
- obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
diff --git a/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch b/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch
deleted file mode 100644 (file)
index 490a34d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c
---- linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c      2014-02-13 22:48:15.000000000 +0100
-+++ linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c  2014-02-15 12:45:49.545688703 +0100
-@@ -83,8 +83,8 @@
-                       break;
-               udelay(1);
-       } while (--timeout);
--      if (!timeout)
--              snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
-+//    if (!timeout)
-+//            snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
- }
- static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
-@@ -108,9 +108,9 @@
-                       break;
-               udelay(1);
-       } while (--timeout);
--      if (!timeout)
--              snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
--                                      "Last value=0x%x\n", reg, val);
-+//    if (!timeout)
-+//            snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
-+//                                    "Last value=0x%x\n", reg, val);
-       return (unsigned short) val;
- }
diff --git a/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch b/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
deleted file mode 100644 (file)
index 83142c8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c
---- linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c  2014-04-14 15:42:31.000000000 +0200
-+++ linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c      2014-04-25 10:25:12.796630526 +0200
-@@ -1175,6 +1175,7 @@
-       /* Belkin */
-       { USB_DEVICE(0x050d, 0x945b) },
-       /* D-Link */
-+      { USB_DEVICE(0x2001, 0x3317) },
-       { USB_DEVICE(0x2001, 0x3c17) },
-       /* Panasonic */
-       { USB_DEVICE(0x083a, 0xb511) },
diff --git a/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch b/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch
deleted file mode 100644 (file)
index a03642d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -Naur linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c
---- linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c  2014-09-17 18:04:18.000000000 +0200
-+++ linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c      2014-10-05 19:25:25.070972490 +0200
-@@ -128,7 +128,7 @@
-       tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(100));
-       if (unlikely(tout))
--              rt2x00_warn(entry->queue->rt2x00dev,
-+              rt2x00_dbg(entry->queue->rt2x00dev,
-                           "TX status timeout for entry %d in queue %d\n",
-                           entry->entry_idx, entry->queue->qid);
-       return tout;
-@@ -569,7 +569,7 @@
-               queue = rt2x00queue_get_tx_queue(rt2x00dev, qid);
-               if (unlikely(rt2x00queue_empty(queue))) {
--                      rt2x00_warn(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
-+                      rt2x00_dbg(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
-                                   qid);
-                       break;
-               }
-@@ -578,7 +578,7 @@
-               if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
-                            !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
--                      rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
-+                      rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
-                                   entry->entry_idx, qid);
-                       break;
-               }
diff --git a/src/patches/linux-3.14.22-dvbsky.patch b/src/patches/linux-3.14.22-dvbsky.patch
deleted file mode 100644 (file)
index 00180c4..0000000
+++ /dev/null
@@ -1,6558 +0,0 @@
-diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
-index dd12a1e..969cd15 100644
---- a/drivers/media/dvb-frontends/Kconfig
-+++ b/drivers/media/dvb-frontends/Kconfig
-@@ -726,6 +726,20 @@ config DVB_TDA665x
-         Currently supported tuners:
-         * Panasonic ENV57H12D5 (ET-50DT)
-+config DVB_DVBSKY_M88DS3103
-+      tristate "Montage M88DS3103 based(DVBSky)"
-+      depends on DVB_CORE && I2C
-+      default m if !MEDIA_SUBDRV_AUTOSELECT
-+      help
-+        A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
-+
-+config DVB_M88DC2800
-+      tristate "Montage M88DC2800 based"
-+      depends on DVB_CORE && I2C
-+      default m if !MEDIA_SUBDRV_AUTOSELECT
-+      help
-+        A DVB-C tuner module. Say Y when you want to support this frontend.
-+
- config DVB_IX2505V
-       tristate "Sharp IX2505V silicon tuner"
-       depends on DVB_CORE && I2C
-diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
-index 0c75a6a..37c57f9 100644
---- a/drivers/media/dvb-frontends/Makefile
-+++ b/drivers/media/dvb-frontends/Makefile
-@@ -106,3 +106,5 @@ obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
- obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
- obj-$(CONFIG_DVB_AF9033) += af9033.o
-+obj-$(CONFIG_DVB_DVBSKY_M88DS3103) += dvbsky_m88ds3103.o
-+obj-$(CONFIG_DVB_M88DC2800) += m88dc2800.o
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.c b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
-new file mode 100644
-index 0000000..5ad1157
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
-@@ -0,0 +1,1723 @@
-+/*
-+    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+    Copyright (C) 2011 Max nibble<nibble.max@gmail.com>
-+    Copyright (C) 2010 Montage Technology<www.montage-tech.com>
-+    Copyright (C) 2009 Konstantin Dimitrov.
-+
-+    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, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/slab.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/firmware.h>
-+
-+#include "dvb_frontend.h"
-+#include "dvbsky_m88ds3103.h"
-+#include "dvbsky_m88ds3103_priv.h"
-+
-+static int debug;
-+module_param(debug, int, 0644);
-+MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
-+
-+#define dprintk(args...) \
-+      do { \
-+              if (debug) \
-+                      printk(KERN_INFO "m88ds3103: " args); \
-+      } while (0)
-+
-+#define _AUTO_S2_
-+
-+/*demod register operations.*/
-+static int m88ds3103_writereg(struct m88ds3103_state *state, int reg, int data)
-+{
-+      u8 buf[] = { reg, data };
-+      struct i2c_msg msg = { .addr = state->config->demod_address,
-+              .flags = 0, .buf = buf, .len = 2 };
-+      int err;
-+
-+      if (debug > 1)
-+              printk("m88ds3103: %s: write reg 0x%02x, value 0x%02x\n",
-+                      __func__, reg, data);
-+
-+      err = i2c_transfer(state->i2c, &msg, 1);
-+      if (err != 1) {
-+              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x,"
-+                       " value == 0x%02x)\n", __func__, err, reg, data);
-+              return -EREMOTEIO;
-+      }
-+      return 0;
-+}
-+
-+static int m88ds3103_readreg(struct m88ds3103_state *state, u8 reg)
-+{
-+      int ret;
-+      u8 b0[] = { reg };
-+      u8 b1[] = { 0 };
-+      struct i2c_msg msg[] = {
-+              { .addr = state->config->demod_address, .flags = 0,
-+                      .buf = b0, .len = 1 },
-+              { .addr = state->config->demod_address, .flags = I2C_M_RD,
-+                      .buf = b1, .len = 1 }
-+      };
-+      ret = i2c_transfer(state->i2c, msg, 2);
-+
-+      if (ret != 2) {
-+              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
-+                      __func__, reg, ret);
-+              return ret;
-+      }
-+
-+      if (debug > 1)
-+              printk(KERN_INFO "m88ds3103: read reg 0x%02x, value 0x%02x\n",
-+                      reg, b1[0]);
-+
-+      return b1[0];
-+}
-+
-+/*tuner register operations.*/
-+static int m88ds3103_tuner_writereg(struct m88ds3103_state *state, int reg, int data)
-+{
-+      u8 buf[] = { reg, data };
-+      struct i2c_msg msg = { .addr = 0x60,
-+              .flags = 0, .buf = buf, .len = 2 };
-+      int err;
-+
-+      m88ds3103_writereg(state, 0x03, 0x11);
-+      err = i2c_transfer(state->i2c, &msg, 1);
-+      
-+      if (err != 1) {
-+              printk("%s: writereg error(err == %i, reg == 0x%02x,"
-+                       " value == 0x%02x)\n", __func__, err, reg, data);
-+              return -EREMOTEIO;
-+      }
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_tuner_readreg(struct m88ds3103_state *state, u8 reg)
-+{
-+      int ret;
-+      u8 b0[] = { reg };
-+      u8 b1[] = { 0 };
-+      struct i2c_msg msg[] = {
-+              { .addr = 0x60, .flags = 0,
-+                      .buf = b0, .len = 1 },
-+              { .addr = 0x60, .flags = I2C_M_RD,
-+                      .buf = b1, .len = 1 }
-+      };
-+
-+      m88ds3103_writereg(state, 0x03, (0x11 + state->config->tuner_readstops));       
-+      ret = i2c_transfer(state->i2c, msg, 2);
-+
-+      if (ret != 2) {
-+              printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
-+              return ret;
-+      }
-+
-+      return b1[0];
-+}
-+
-+/* Bulk demod I2C write, for firmware download. */
-+static int m88ds3103_writeregN(struct m88ds3103_state *state, int reg,
-+                              const u8 *data, u16 len)
-+{
-+      int ret = -EREMOTEIO;
-+      struct i2c_msg msg;
-+      u8 *buf;
-+
-+      buf = kmalloc(len + 1, GFP_KERNEL);
-+      if (buf == NULL) {
-+              printk("Unable to kmalloc\n");
-+              ret = -ENOMEM;
-+              goto error;
-+      }
-+
-+      *(buf) = reg;
-+      memcpy(buf + 1, data, len);
-+
-+      msg.addr = state->config->demod_address;
-+      msg.flags = 0;
-+      msg.buf = buf;
-+      msg.len = len + 1;
-+
-+      if (debug > 1)
-+              printk(KERN_INFO "m88ds3103: %s:  write regN 0x%02x, len = %d\n",
-+                      __func__, reg, len);
-+
-+      ret = i2c_transfer(state->i2c, &msg, 1);
-+      if (ret != 1) {
-+              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x\n",
-+                       __func__, ret, reg);
-+              ret = -EREMOTEIO;
-+      }
-+      
-+error:
-+      kfree(buf);
-+
-+      return ret;
-+}
-+
-+static int m88ds3103_load_firmware(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      const struct firmware *fw;
-+      int i, ret = 0;
-+
-+      dprintk("%s()\n", __func__);
-+              
-+      if (state->skip_fw_load)
-+              return 0;
-+      /* Load firmware */
-+      /* request the firmware, this will block until someone uploads it */    
-+      if(state->demod_id == DS3000_ID){
-+              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
-+                              DS3000_DEFAULT_FIRMWARE);               
-+              ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
-+                                      state->i2c->dev.parent);
-+      }else if(state->demod_id == DS3103_ID){
-+              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
-+                              DS3103_DEFAULT_FIRMWARE);
-+              ret = request_firmware(&fw, DS3103_DEFAULT_FIRMWARE,
-+                                      state->i2c->dev.parent);
-+      }
-+      
-+      printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", __func__);
-+      if (ret) {
-+              printk(KERN_ERR "%s: No firmware uploaded (timeout or file not "
-+                              "found?)\n", __func__);
-+              return ret;
-+      }
-+
-+      /* Make sure we don't recurse back through here during loading */
-+      state->skip_fw_load = 1;
-+
-+      dprintk("Firmware is %zu bytes (%02x %02x .. %02x %02x)\n",
-+                      fw->size,
-+                      fw->data[0],
-+                      fw->data[1],
-+                      fw->data[fw->size - 2],
-+                      fw->data[fw->size - 1]);
-+                      
-+      /* stop internal mcu. */
-+      m88ds3103_writereg(state, 0xb2, 0x01);
-+      /* split firmware to download.*/
-+      for(i = 0; i < FW_DOWN_LOOP; i++){
-+              ret = m88ds3103_writeregN(state, 0xb0, &(fw->data[FW_DOWN_SIZE*i]), FW_DOWN_SIZE);
-+              if(ret != 1) break;             
-+      }
-+      /* start internal mcu. */
-+      if(ret == 1)
-+              m88ds3103_writereg(state, 0xb2, 0x00);
-+              
-+      release_firmware(fw);
-+
-+      dprintk("%s: Firmware upload %s\n", __func__,
-+                      ret == 1 ? "complete" : "failed");
-+
-+      if(ret == 1) ret = 0;
-+      
-+      /* Ensure firmware is always loaded if required */
-+      state->skip_fw_load = 0;
-+
-+      return ret;
-+}
-+
-+
-+static int m88ds3103_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 data;
-+
-+      dprintk("%s(%d)\n", __func__, voltage);
-+
-+      dprintk("m88ds3103:pin_ctrl = (%02x)\n", state->config->pin_ctrl);
-+      
-+      if(state->config->set_voltage)
-+              state->config->set_voltage(fe, voltage);
-+      
-+      data = m88ds3103_readreg(state, 0xa2);
-+      
-+        if(state->config->pin_ctrl & 0x80){ /*If control pin is assigned.*/
-+              data &= ~0x03; /* bit0 V/H, bit1 off/on */
-+              if(state->config->pin_ctrl & 0x02)
-+                   data |= 0x02;
-+
-+              switch (voltage) {
-+              case SEC_VOLTAGE_18:
-+                   if((state->config->pin_ctrl & 0x01) == 0)
-+                        data |= 0x01;
-+                   break;
-+              case SEC_VOLTAGE_13:
-+                   if(state->config->pin_ctrl & 0x01)
-+                        data |= 0x01;
-+                   break;
-+              case SEC_VOLTAGE_OFF:
-+                   if(state->config->pin_ctrl & 0x02)
-+                         data &= ~0x02;                       
-+                   else
-+                         data |= 0x02;
-+                   break;
-+               }
-+        }
-+
-+      m88ds3103_writereg(state, 0xa2, data);
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_read_status(struct dvb_frontend *fe, fe_status_t* status)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      int lock = 0;
-+      
-+      *status = 0;
-+      
-+      switch (state->delivery_system){
-+      case SYS_DVBS:
-+              lock = m88ds3103_readreg(state, 0xd1);
-+              dprintk("%s: SYS_DVBS status=%x.\n", __func__, lock);
-+              
-+              if ((lock & 0x07) == 0x07){
-+                      /*if((m88ds3103_readreg(state, 0x0d) & 0x07) == 0x07)*/
-+                              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
-+                                      | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
-+                      
-+              }
-+              break;
-+      case SYS_DVBS2:
-+              lock = m88ds3103_readreg(state, 0x0d);
-+              dprintk("%s: SYS_DVBS2 status=%x.\n", __func__, lock);
-+
-+              if ((lock & 0x8f) == 0x8f)
-+                      *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
-+                              | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
-+                      
-+              break;
-+      default:
-+              break;
-+      }
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_read_ber(struct dvb_frontend *fe, u32* ber)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 tmp1, tmp2, tmp3;
-+      u32 ldpc_frame_cnt, pre_err_packags, code_rate_fac = 0;
-+
-+      dprintk("%s()\n", __func__);
-+
-+      switch (state->delivery_system) {
-+      case SYS_DVBS:
-+              m88ds3103_writereg(state, 0xf9, 0x04);
-+              tmp3 = m88ds3103_readreg(state, 0xf8);
-+              if ((tmp3&0x10) == 0){
-+                      tmp1 = m88ds3103_readreg(state, 0xf7);
-+                      tmp2 = m88ds3103_readreg(state, 0xf6);
-+                      tmp3 |= 0x10;
-+                      m88ds3103_writereg(state, 0xf8, tmp3);
-+                      state->preBer = (tmp1<<8) | tmp2;
-+              }
-+              break;
-+      case SYS_DVBS2:
-+              tmp1 = m88ds3103_readreg(state, 0x7e) & 0x0f;
-+              switch(tmp1){
-+              case 0: code_rate_fac = 16008 - 80; break;
-+              case 1: code_rate_fac = 21408 - 80; break;
-+              case 2: code_rate_fac = 25728 - 80; break;
-+              case 3: code_rate_fac = 32208 - 80; break;
-+              case 4: code_rate_fac = 38688 - 80; break;
-+              case 5: code_rate_fac = 43040 - 80; break;
-+              case 6: code_rate_fac = 48408 - 80; break;
-+              case 7: code_rate_fac = 51648 - 80; break;
-+              case 8: code_rate_fac = 53840 - 80; break;
-+              case 9: code_rate_fac = 57472 - 80; break;
-+              case 10: code_rate_fac = 58192 - 80; break;
-+              }
-+              
-+              tmp1 = m88ds3103_readreg(state, 0xd7) & 0xff;
-+              tmp2 = m88ds3103_readreg(state, 0xd6) & 0xff;
-+              tmp3 = m88ds3103_readreg(state, 0xd5) & 0xff;           
-+              ldpc_frame_cnt = (tmp1 << 16) | (tmp2 << 8) | tmp3;
-+
-+              tmp1 = m88ds3103_readreg(state, 0xf8) & 0xff;
-+              tmp2 = m88ds3103_readreg(state, 0xf7) & 0xff;
-+              pre_err_packags = tmp1<<8 | tmp2;
-+              
-+              if (ldpc_frame_cnt > 1000){
-+                      m88ds3103_writereg(state, 0xd1, 0x01);
-+                      m88ds3103_writereg(state, 0xf9, 0x01);
-+                      m88ds3103_writereg(state, 0xf9, 0x00);
-+                      m88ds3103_writereg(state, 0xd1, 0x00);
-+                      state->preBer = pre_err_packags;
-+              }                               
-+              break;
-+      default:
-+              break;
-+      }
-+      *ber = state->preBer;
-+      
-+      return 0;
-+}
-+
-+static int m88ds3103_read_signal_strength(struct dvb_frontend *fe,
-+                                              u16 *signal_strength)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u16 gain;
-+      u8 gain1, gain2, gain3 = 0;
-+
-+      dprintk("%s()\n", __func__);
-+
-+      gain1 = m88ds3103_tuner_readreg(state, 0x3d) & 0x1f;
-+      dprintk("%s: gain1 = 0x%02x \n", __func__, gain1);
-+      
-+      if (gain1 > 15) gain1 = 15;
-+      gain2 = m88ds3103_tuner_readreg(state, 0x21) & 0x1f;
-+      dprintk("%s: gain2 = 0x%02x \n", __func__, gain2);
-+      
-+      if(state->tuner_id == TS2022_ID){
-+              gain3 = (m88ds3103_tuner_readreg(state, 0x66)>>3) & 0x07;
-+              dprintk("%s: gain3 = 0x%02x \n", __func__, gain3);
-+              
-+              if (gain2 > 16) gain2 = 16;
-+              if (gain2 < 2) gain2 = 2;                       
-+              if (gain3 > 6) gain3 = 6;
-+      }else{
-+              if (gain2 > 13) gain2 = 13;
-+              gain3 = 0;
-+      }
-+
-+      gain = gain1*23 + gain2*35 + gain3*29;
-+      *signal_strength = 60000 - gain*55;
-+
-+      return 0;
-+}
-+
-+
-+static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *p_snr)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 val, npow1, npow2, spow1, cnt;
-+      u16 tmp, snr;
-+      u32 npow, spow, snr_total;      
-+      static const u16 mes_log10[] ={
-+              0,      3010,   4771,   6021,   6990,   7781,   8451,   9031,   9542,   10000,
-+              10414,  10792,  11139,  11461,  11761,  12041,  12304,  12553,  12788,  13010,
-+              13222,  13424,  13617,  13802,  13979,  14150,  14314,  14472,  14624,  14771,
-+              14914,  15052,  15185,  15315,  15441,  15563,  15682,  15798,  15911,  16021,
-+              16128,  16232,  16335,  16435,  16532,  16628,  16721,  16812,  16902,  16990,
-+              17076,  17160,  17243,  17324,  17404,  17482,  17559,  17634,  17709,  17782,
-+              17853,  17924,  17993,  18062,  18129,  18195,  18261,  18325,  18388,  18451,
-+              18513,  18573,  18633,  18692,  18751,  18808,  18865,  18921,  18976,  19031
-+      };
-+      static const u16 mes_loge[] ={
-+              0,      6931,   10986,  13863,  16094,  17918,  19459,  20794,  21972,  23026,
-+              23979,  24849,  25649,  26391,  27081,  27726,  28332,  28904,  29444,  29957,
-+              30445,  30910,  31355,  31781,  32189,  32581,  32958,  33322,  33673,  34012,
-+              34340,  34657,
-+      };
-+
-+      dprintk("%s()\n", __func__);
-+
-+      snr = 0;
-+      
-+      switch (state->delivery_system){
-+      case SYS_DVBS:
-+              cnt = 10; snr_total = 0;
-+              while(cnt > 0){
-+                      val = m88ds3103_readreg(state, 0xff);
-+                      snr_total += val;
-+                      cnt--;
-+              }
-+              tmp = (u16)(snr_total/80);
-+              if(tmp > 0){
-+                      if (tmp > 32) tmp = 32;
-+                      snr = (mes_loge[tmp - 1] * 100) / 45;
-+              }else{
-+                      snr = 0;
-+              }
-+              break;
-+      case SYS_DVBS2:
-+              cnt  = 10; npow = 0; spow = 0;
-+              while(cnt >0){
-+                      npow1 = m88ds3103_readreg(state, 0x8c) & 0xff;
-+                      npow2 = m88ds3103_readreg(state, 0x8d) & 0xff;
-+                      npow += (((npow1 & 0x3f) + (u16)(npow2 << 6)) >> 2);
-+
-+                      spow1 = m88ds3103_readreg(state, 0x8e) & 0xff;
-+                      spow += ((spow1 * spow1) >> 1);
-+                      cnt--;
-+              }
-+              npow /= 10; spow /= 10;
-+              if(spow == 0){
-+                      snr = 0;
-+              }else if(npow == 0){
-+                      snr = 19;
-+              }else{
-+                      if(spow > npow){
-+                              tmp = (u16)(spow / npow);
-+                              if (tmp > 80) tmp = 80;
-+                              snr = mes_log10[tmp - 1]*3;
-+                      }else{
-+                              tmp = (u16)(npow / spow);
-+                              if (tmp > 80) tmp = 80;
-+                              snr = -(mes_log10[tmp - 1] / 1000);
-+                      }
-+              }                       
-+              break;
-+      default:
-+              break;
-+      }
-+      *p_snr = snr;
-+
-+      return 0;
-+}
-+
-+
-+static int m88ds3103_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 tmp1, tmp2, tmp3, data;
-+
-+      dprintk("%s()\n", __func__);
-+
-+      switch (state->delivery_system) {
-+      case SYS_DVBS:
-+              data = m88ds3103_readreg(state, 0xf8);
-+              data |= 0x40;
-+              m88ds3103_writereg(state, 0xf8, data);          
-+              tmp1 = m88ds3103_readreg(state, 0xf5);
-+              tmp2 = m88ds3103_readreg(state, 0xf4);
-+              *ucblocks = (tmp1 <<8) | tmp2;          
-+              data &= ~0x20;
-+              m88ds3103_writereg(state, 0xf8, data);
-+              data |= 0x20;
-+              m88ds3103_writereg(state, 0xf8, data);
-+              data &= ~0x40;
-+              m88ds3103_writereg(state, 0xf8, data);
-+              break;
-+      case SYS_DVBS2:
-+              tmp1 = m88ds3103_readreg(state, 0xda);
-+              tmp2 = m88ds3103_readreg(state, 0xd9);
-+              tmp3 = m88ds3103_readreg(state, 0xd8);
-+              *ucblocks = (tmp1 <<16)|(tmp2 <<8)|tmp3;
-+              data = m88ds3103_readreg(state, 0xd1);
-+              data |= 0x01;
-+              m88ds3103_writereg(state, 0xd1, data);
-+              data &= ~0x01;
-+              m88ds3103_writereg(state, 0xd1, data);
-+              break;
-+      default:
-+              break;
-+      }
-+      return 0;
-+}
-+
-+static int m88ds3103_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 data_a1, data_a2;
-+
-+      dprintk("%s(%d)\n", __func__, tone);
-+      if ((tone != SEC_TONE_ON) && (tone != SEC_TONE_OFF)) {
-+              printk(KERN_ERR "%s: Invalid, tone=%d\n", __func__, tone);
-+              return -EINVAL;
-+      }
-+
-+      data_a1 = m88ds3103_readreg(state, 0xa1);
-+      data_a2 = m88ds3103_readreg(state, 0xa2);
-+      if(state->demod_id == DS3103_ID)
-+              data_a2 &= 0xdf; /* Normal mode */
-+      switch (tone) {
-+      case SEC_TONE_ON:
-+              dprintk("%s: SEC_TONE_ON\n", __func__);
-+              data_a1 |= 0x04;
-+              data_a1 &= ~0x03;
-+              data_a1 &= ~0x40;
-+              data_a2 &= ~0xc0;
-+              break;
-+      case SEC_TONE_OFF:
-+              dprintk("%s: SEC_TONE_OFF\n", __func__);
-+              data_a2 &= ~0xc0;
-+              data_a2 |= 0x80;
-+              break;
-+      }
-+      m88ds3103_writereg(state, 0xa2, data_a2);
-+      m88ds3103_writereg(state, 0xa1, data_a1);
-+      return 0;
-+}
-+
-+static int m88ds3103_send_diseqc_msg(struct dvb_frontend *fe,
-+                              struct dvb_diseqc_master_cmd *d)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      int i, ret = 0;
-+      u8 tmp, time_out;
-+
-+      /* Dump DiSEqC message */
-+      if (debug) {
-+              printk(KERN_INFO "m88ds3103: %s(", __func__);
-+              for (i = 0 ; i < d->msg_len ;) {
-+                      printk(KERN_INFO "0x%02x", d->msg[i]);
-+                      if (++i < d->msg_len)
-+                              printk(KERN_INFO ", ");
-+              }
-+      }
-+
-+      tmp = m88ds3103_readreg(state, 0xa2);
-+      tmp &= ~0xc0;
-+      if(state->demod_id == DS3103_ID)
-+              tmp &= ~0x20;
-+      m88ds3103_writereg(state, 0xa2, tmp);
-+      
-+      for (i = 0; i < d->msg_len; i ++)
-+              m88ds3103_writereg(state, (0xa3+i), d->msg[i]);
-+
-+      tmp = m88ds3103_readreg(state, 0xa1);   
-+      tmp &= ~0x38;
-+      tmp &= ~0x40;
-+      tmp |= ((d->msg_len-1) << 3) | 0x07;
-+      tmp &= ~0x80;
-+      m88ds3103_writereg(state, 0xa1, tmp);
-+      /*      1.5 * 9 * 8     = 108ms */
-+      time_out = 150;
-+      while (time_out > 0){
-+              msleep(10);
-+              time_out -= 10;
-+              tmp = m88ds3103_readreg(state, 0xa1);           
-+              if ((tmp & 0x40) == 0)
-+                      break;
-+      }
-+      if (time_out == 0){
-+              tmp = m88ds3103_readreg(state, 0xa1);
-+              tmp &= ~0x80;
-+              tmp |= 0x40;
-+              m88ds3103_writereg(state, 0xa1, tmp);
-+              ret = 1;
-+      }
-+      tmp = m88ds3103_readreg(state, 0xa2);
-+      tmp &= ~0xc0;
-+      tmp |= 0x80;
-+      m88ds3103_writereg(state, 0xa2, tmp);   
-+      return ret;
-+}
-+
-+
-+static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
-+                                      fe_sec_mini_cmd_t burst)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8      val, time_out;
-+      
-+      dprintk("%s()\n", __func__);
-+
-+      val = m88ds3103_readreg(state, 0xa2);
-+      val &= ~0xc0;
-+      if(state->demod_id == DS3103_ID)
-+              val &= 0xdf; /* Normal mode */
-+      m88ds3103_writereg(state, 0xa2, val);
-+      /* DiSEqC burst */
-+      if (burst == SEC_MINI_B)
-+              m88ds3103_writereg(state, 0xa1, 0x01);
-+      else
-+              m88ds3103_writereg(state, 0xa1, 0x02);
-+
-+      msleep(13);
-+
-+      time_out = 5;
-+      do{
-+              val = m88ds3103_readreg(state, 0xa1);
-+              if ((val & 0x40) == 0)
-+                      break;
-+              msleep(1);
-+              time_out --;
-+      } while (time_out > 0);
-+
-+      val = m88ds3103_readreg(state, 0xa2);
-+      val &= ~0xc0;
-+      val |= 0x80;
-+      m88ds3103_writereg(state, 0xa2, val);
-+      
-+      return 0;
-+}
-+
-+static void m88ds3103_release(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+
-+      dprintk("%s\n", __func__);
-+      kfree(state);
-+}
-+
-+static int m88ds3103_check_id(struct m88ds3103_state *state)
-+{
-+      int val_00, val_01;
-+      
-+      /*check demod id*/
-+      val_01 = m88ds3103_readreg(state, 0x01);
-+      printk(KERN_INFO "DS3000 chip version: %x attached.\n", val_01);
-+                      
-+      if(val_01 == 0xD0)
-+              state->demod_id = DS3103_ID;
-+      else if(val_01 == 0xC0)
-+              state->demod_id = DS3000_ID;
-+      else
-+              state->demod_id = UNKNOW_ID;
-+              
-+      /*check tuner id*/
-+      val_00 = m88ds3103_tuner_readreg(state, 0x00);
-+      printk(KERN_INFO "TS202x chip version[1]: %x attached.\n", val_00);
-+      val_00 &= 0x03;
-+      if(val_00 == 0)
-+      {
-+              m88ds3103_tuner_writereg(state, 0x00, 0x01);
-+              msleep(3);              
-+      }
-+      m88ds3103_tuner_writereg(state, 0x00, 0x03);
-+      msleep(5);
-+      
-+      val_00 = m88ds3103_tuner_readreg(state, 0x00);
-+      printk(KERN_INFO "TS202x chip version[2]: %x attached.\n", val_00);
-+      val_00 &= 0xff;
-+      if((val_00 == 0x01) || (val_00 == 0x41) || (val_00 == 0x81))
-+              state->tuner_id = TS2020_ID;
-+      else if(((val_00 & 0xc0)== 0xc0) || (val_00 == 0x83))
-+              state->tuner_id = TS2022_ID;
-+      else
-+              state->tuner_id = UNKNOW_ID;
-+                      
-+      return state->demod_id; 
-+}
-+
-+static struct dvb_frontend_ops m88ds3103_ops;
-+static int m88ds3103_initilaze(struct dvb_frontend *fe);
-+
-+struct dvb_frontend *dvbsky_m88ds3103_attach(const struct dvbsky_m88ds3103_config *config,
-+                                  struct i2c_adapter *i2c)
-+{
-+      struct m88ds3103_state *state = NULL;
-+
-+      dprintk("%s\n", __func__);
-+
-+      /* allocate memory for the internal state */
-+      state = kzalloc(sizeof(struct m88ds3103_state), GFP_KERNEL);
-+      if (state == NULL) {
-+              printk(KERN_ERR "Unable to kmalloc\n");
-+              goto error2;
-+      }
-+
-+      state->config = config;
-+      state->i2c = i2c;
-+      state->preBer = 0xffff;
-+      state->delivery_system = SYS_DVBS; /*Default to DVB-S.*/
-+      
-+      /* check demod id */
-+      if(m88ds3103_check_id(state) == UNKNOW_ID){
-+              printk(KERN_ERR "Unable to find Montage chip\n");
-+              goto error3;
-+      }
-+
-+      memcpy(&state->frontend.ops, &m88ds3103_ops,
-+                      sizeof(struct dvb_frontend_ops));
-+      state->frontend.demodulator_priv = state;
-+      
-+      m88ds3103_initilaze(&state->frontend);
-+      
-+      return &state->frontend;
-+
-+error3:
-+      kfree(state);
-+error2:
-+      return NULL;
-+}
-+EXPORT_SYMBOL(dvbsky_m88ds3103_attach);
-+
-+static int m88ds3103_set_carrier_offset(struct dvb_frontend *fe,
-+                                      s32 carrier_offset_khz)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      s32 tmp;
-+
-+      tmp = carrier_offset_khz;
-+      tmp *= 65536;
-+      
-+      tmp = (2*tmp + MT_FE_MCLK_KHZ) / (2*MT_FE_MCLK_KHZ);
-+
-+      if (tmp < 0)
-+              tmp += 65536;
-+
-+      m88ds3103_writereg(state, 0x5f, tmp >> 8);
-+      m88ds3103_writereg(state, 0x5e, tmp & 0xff);
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_set_symrate(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+      u16 value;
-+      
-+      value = (((c->symbol_rate / 1000) << 15) + (MT_FE_MCLK_KHZ / 4)) / (MT_FE_MCLK_KHZ / 2);
-+      m88ds3103_writereg(state, 0x61, value & 0x00ff);
-+      m88ds3103_writereg(state, 0x62, (value & 0xff00) >> 8);
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_set_CCI(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 tmp;
-+
-+      tmp = m88ds3103_readreg(state, 0x56);
-+      tmp &= ~0x01;
-+      m88ds3103_writereg(state, 0x56, tmp);
-+
-+      tmp = m88ds3103_readreg(state, 0x76);
-+      tmp &= ~0x80;
-+      m88ds3103_writereg(state, 0x76, tmp);
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_init_reg(struct m88ds3103_state *state, const u8 *p_reg_tab, u32 size)
-+{
-+      u32 i;
-+      
-+      for(i = 0; i < size; i+=2)
-+              m88ds3103_writereg(state, p_reg_tab[i], p_reg_tab[i+1]);
-+              
-+      return 0;
-+}
-+
-+static int m88ds3103_get_locked_sym_rate(struct m88ds3103_state *state, u32 *sym_rate_KSs)
-+{
-+      u16     tmp;
-+      u32     sym_rate_tmp;
-+      u8      val_0x6d, val_0x6e;
-+
-+      val_0x6d = m88ds3103_readreg(state, 0x6d);
-+      val_0x6e = m88ds3103_readreg(state, 0x6e);
-+
-+      tmp = (u16)((val_0x6e<<8) | val_0x6d);
-+
-+      sym_rate_tmp = (u32)(tmp * MT_FE_MCLK_KHZ);
-+      sym_rate_tmp = (u32)(sym_rate_tmp / (1<<16));
-+      *sym_rate_KSs = sym_rate_tmp;
-+
-+      return 0;
-+}
-+
-+static int m88ds3103_get_channel_info(struct m88ds3103_state *state, u8 *p_mode, u8 *p_coderate)
-+{
-+      u8      tmp, val_0x7E;
-+
-+      if(state->delivery_system == SYS_DVBS2){
-+              val_0x7E = m88ds3103_readreg(state, 0x7e);
-+              tmp = (u8)((val_0x7E&0xC0) >> 6);
-+              *p_mode = tmp;
-+              tmp = (u8)(val_0x7E & 0x0f);
-+              *p_coderate = tmp;
-+      } else {
-+              *p_mode = 0;
-+              tmp = m88ds3103_readreg(state, 0xe6);           
-+              tmp = (u8)(tmp >> 5);
-+              *p_coderate = tmp;
-+      }
-+      
-+      return 0;
-+}
-+
-+static int m88ds3103_set_clock_ratio(struct m88ds3103_state *state)
-+{
-+      u8      val, mod_fac, tmp1, tmp2;
-+      u32     input_datarate, locked_sym_rate_KSs;
-+      u32 MClk_KHz = 96000;
-+      u8 mod_mode, code_rate, divid_ratio = 0;
-+
-+      locked_sym_rate_KSs = 0;
-+      m88ds3103_get_locked_sym_rate(state, &locked_sym_rate_KSs);
-+      if(locked_sym_rate_KSs == 0)
-+              return 0;
-+
-+      m88ds3103_get_channel_info(state, &mod_mode, &code_rate);
-+
-+      if (state->delivery_system == SYS_DVBS2)
-+      {
-+              switch(mod_mode) {
-+                      case 1: mod_fac = 3; break;
-+                      case 2: mod_fac = 4; break;
-+                      case 3: mod_fac = 5; break;
-+                      default: mod_fac = 2; break;
-+              }
-+
-+              switch(code_rate) {
-+                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac/8/4; break;
-+                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac/8/3;       break;
-+                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/5;     break;
-+                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac/8/2;       break;
-+                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/5;     break;
-+                      case 5: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3;     break;
-+                      case 6: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/4;     break;
-+                      case 7: input_datarate = locked_sym_rate_KSs*mod_fac*4/8/5;     break;
-+                      case 8: input_datarate = locked_sym_rate_KSs*mod_fac*5/8/6;     break;
-+                      case 9: input_datarate = locked_sym_rate_KSs*mod_fac*8/8/9;     break;
-+                      case 10: input_datarate = locked_sym_rate_KSs*mod_fac*9/8/10; break;
-+                      default: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3; break;
-+              }
-+
-+              if(state->demod_id == DS3000_ID)
-+                      input_datarate = input_datarate * 115 / 100;
-+
-+              if(input_datarate < 4800)  {tmp1 = 15;tmp2 = 15;} //4.8MHz         TS clock
-+              else if(input_datarate < 4966)  {tmp1 = 14;tmp2 = 15;} //4.966MHz  TS clock
-+              else if(input_datarate < 5143)  {tmp1 = 14;tmp2 = 14;} //5.143MHz  TS clock
-+              else if(input_datarate < 5333)  {tmp1 = 13;tmp2 = 14;} //5.333MHz  TS clock
-+              else if(input_datarate < 5538)  {tmp1 = 13;tmp2 = 13;} //5.538MHz  TS clock
-+              else if(input_datarate < 5760)  {tmp1 = 12;tmp2 = 13;} //5.76MHz   TS clock       allan 0809
-+              else if(input_datarate < 6000)  {tmp1 = 12;tmp2 = 12;} //6MHz      TS clock
-+              else if(input_datarate < 6260)  {tmp1 = 11;tmp2 = 12;} //6.26MHz   TS clock
-+              else if(input_datarate < 6545)  {tmp1 = 11;tmp2 = 11;} //6.545MHz  TS clock
-+              else if(input_datarate < 6857)  {tmp1 = 10;tmp2 = 11;} //6.857MHz  TS clock
-+              else if(input_datarate < 7200)  {tmp1 = 10;tmp2 = 10;} //7.2MHz    TS clock
-+              else if(input_datarate < 7578)  {tmp1 = 9;tmp2 = 10;}  //7.578MHz  TS clock
-+              else if(input_datarate < 8000)  {tmp1 = 9;tmp2 = 9;}   //8MHz      TS clock
-+              else if(input_datarate < 8470)  {tmp1 = 8;tmp2 = 9;}   //8.47MHz   TS clock
-+              else if(input_datarate < 9000)  {tmp1 = 8;tmp2 = 8;}   //9MHz      TS clock
-+              else if(input_datarate < 9600)  {tmp1 = 7;tmp2 = 8;}   //9.6MHz    TS clock
-+              else if(input_datarate < 10285) {tmp1 = 7;tmp2 = 7;}   //10.285MHz TS clock
-+              else if(input_datarate < 12000) {tmp1 = 6;tmp2 = 6;}   //12MHz     TS clock
-+              else if(input_datarate < 14400) {tmp1 = 5;tmp2 = 5;}   //14.4MHz   TS clock
-+              else if(input_datarate < 18000) {tmp1 = 4;tmp2 = 4;}   //18MHz     TS clock
-+              else                                                    {tmp1 = 3;tmp2 = 3;}   //24MHz     TS clock
-+
-+              if(state->demod_id == DS3000_ID) {
-+                      val = (u8)((tmp1<<4) + tmp2);
-+                      m88ds3103_writereg(state, 0xfe, val);
-+              } else {
-+                      tmp1 = m88ds3103_readreg(state, 0x22);
-+                      tmp2 = m88ds3103_readreg(state, 0x24);
-+
-+                      tmp1 >>= 6;
-+                      tmp1 &= 0x03;
-+                      tmp2 >>= 6;
-+                      tmp2 &= 0x03;
-+
-+                      if((tmp1 == 0x00) && (tmp2 == 0x01))
-+                              MClk_KHz = 144000;
-+                      else if((tmp1 == 0x00) && (tmp2 == 0x03))
-+                              MClk_KHz = 72000;
-+                      else if((tmp1 == 0x01) && (tmp2 == 0x01))
-+                              MClk_KHz = 115200;
-+                      else if((tmp1 == 0x02) && (tmp2 == 0x01))
-+                              MClk_KHz = 96000;
-+                      else if((tmp1 == 0x03) && (tmp2 == 0x00))
-+                              MClk_KHz = 192000;
-+                      else
-+                              return 0;
-+
-+                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
-+                              input_datarate = 5200;
-+                              
-+                      if(input_datarate != 0)
-+                              divid_ratio = (u8)(MClk_KHz / input_datarate);
-+                      else
-+                              divid_ratio = 0xFF;
-+
-+                      if(divid_ratio > 128)
-+                              divid_ratio = 128;
-+
-+                      if(divid_ratio < 2)
-+                              divid_ratio = 2;
-+
-+                      tmp1 = (u8)(divid_ratio / 2);
-+                      tmp2 = (u8)(divid_ratio / 2);
-+
-+                      if((divid_ratio % 2) != 0)
-+                              tmp2 += 1;
-+
-+                      tmp1 -= 1;
-+                      tmp2 -= 1;
-+
-+                      tmp1 &= 0x3f;
-+                      tmp2 &= 0x3f;
-+
-+                      val = m88ds3103_readreg(state, 0xfe);
-+                      val &= 0xF0;
-+                      val |= (tmp2 >> 2) & 0x0f;
-+                      m88ds3103_writereg(state, 0xfe, val);
-+
-+                      val = (u8)((tmp2 & 0x03) << 6); 
-+                      val |= tmp1;
-+                      m88ds3103_writereg(state, 0xea, val);
-+              }
-+      } else {
-+              mod_fac = 2;
-+
-+              switch(code_rate) {
-+                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac/2/8;       break;
-+                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac*2/3/8;     break;
-+                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;     break;
-+                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac*5/6/8;     break;
-+                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac*7/8/8;     break;
-+                      default: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;    break;
-+              }
-+
-+              if(state->demod_id == DS3000_ID)
-+                      input_datarate = input_datarate * 115 / 100;
-+
-+              if(input_datarate < 6857)               {tmp1 = 7;tmp2 = 7;} //6.857MHz     TS clock
-+              else if(input_datarate < 7384)  {tmp1 = 6;tmp2 = 7;} //7.384MHz     TS clock
-+              else if(input_datarate < 8000)  {tmp1 = 6;tmp2 = 6;} //8MHz             TS clock
-+              else if(input_datarate < 8727)  {tmp1 = 5;tmp2 = 6;} //8.727MHz         TS clock
-+              else if(input_datarate < 9600)  {tmp1 = 5;tmp2 = 5;} //9.6MHz           TS clock
-+              else if(input_datarate < 10666) {tmp1 = 4;tmp2 = 5;} //10.666MHz        TS clock
-+              else if(input_datarate < 12000) {tmp1 = 4;tmp2 = 4;} //12MHz            TS clock
-+              else if(input_datarate < 13714) {tmp1 = 3;tmp2 = 4;} //13.714MHz        TS clock
-+              else if(input_datarate < 16000) {tmp1 = 3;tmp2 = 3;} //16MHz            TS clock
-+              else if(input_datarate < 19200) {tmp1 = 2;tmp2 = 3;} //19.2MHz          TS clock
-+              else                                                    {tmp1 = 2;tmp2 = 2;} //24MHz            TS clock
-+
-+              if(state->demod_id == DS3000_ID) {
-+                      val = m88ds3103_readreg(state, 0xfe);
-+                      val &= 0xc0;
-+                      val |= ((u8)((tmp1<<3) + tmp2));
-+                      m88ds3103_writereg(state, 0xfe, val);
-+              } else {
-+                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
-+                              input_datarate = 5200;
-+                      
-+                      if(input_datarate != 0)
-+                              divid_ratio = (u8)(MClk_KHz / input_datarate);
-+                      else
-+                              divid_ratio = 0xFF;
-+
-+                      if(divid_ratio > 128)
-+                              divid_ratio = 128;
-+
-+                      if(divid_ratio < 2)
-+                              divid_ratio = 2;
-+
-+                      tmp1 = (u8)(divid_ratio / 2);
-+                      tmp2 = (u8)(divid_ratio / 2);
-+
-+                      if((divid_ratio % 2) != 0)
-+                              tmp2 += 1;
-+
-+                      tmp1 -= 1;
-+                      tmp2 -= 1;
-+
-+                      tmp1 &= 0x3f;
-+                      tmp2 &= 0x3f;
-+
-+                      val = m88ds3103_readreg(state, 0xfe);
-+                      val &= 0xF0;
-+                      val |= (tmp2 >> 2) & 0x0f;
-+                      m88ds3103_writereg(state, 0xfe, val);
-+                      
-+                      val = (u8)((tmp2 & 0x03) << 6);
-+                      val |= tmp1;
-+                      m88ds3103_writereg(state, 0xea, val);
-+              }
-+      }
-+      return 0;
-+}
-+
-+static int m88ds3103_demod_connect(struct dvb_frontend *fe, s32 carrier_offset_khz) 
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+      u16 value;
-+      u8 val1,val2,data;
-+      
-+      dprintk("connect delivery system = %d\n", state->delivery_system);
-+      
-+      /* ds3000 global reset */
-+      m88ds3103_writereg(state, 0x07, 0x80);
-+      m88ds3103_writereg(state, 0x07, 0x00);
-+      /* ds3000 build-in uC reset */
-+      m88ds3103_writereg(state, 0xb2, 0x01);
-+      /* ds3000 software reset */
-+      m88ds3103_writereg(state, 0x00, 0x01);
-+
-+      switch (state->delivery_system) {
-+      case SYS_DVBS:
-+              /* initialise the demod in DVB-S mode */
-+              if(state->demod_id == DS3000_ID){
-+                      m88ds3103_init_reg(state, ds3000_dvbs_init_tab, sizeof(ds3000_dvbs_init_tab));
-+                      
-+                      value = m88ds3103_readreg(state, 0xfe);
-+                      value &= 0xc0;
-+                      value |= 0x1b;
-+                      m88ds3103_writereg(state, 0xfe, value);
-+                      
-+                      if(state->config->ci_mode)
-+                              val1 = 0x80;
-+                      else if(state->config->ts_mode)
-+                              val1 = 0x60;
-+                      else
-+                              val1 = 0x20;
-+                      m88ds3103_writereg(state, 0xfd, val1);
-+                      
-+              }else if(state->demod_id == DS3103_ID){
-+                      m88ds3103_init_reg(state, ds3103_dvbs_init_tab, sizeof(ds3103_dvbs_init_tab));
-+                      
-+                      /* set ts clock */
-+                      if(state->config->ci_mode == 2){
-+                              val1 = 6; val2 = 6;
-+                      }else if(state->config->ts_mode == 0)   {
-+                              val1 = 3; val2 = 3;
-+                      }else{
-+                              val1 = 0; val2 = 0;
-+                      }
-+                      val1 -= 1; val2 -= 1;
-+                      val1 &= 0x3f; val2 &= 0x3f;
-+                      data = m88ds3103_readreg(state, 0xfe);
-+                      data &= 0xf0;
-+                      data |= (val2 >> 2) & 0x0f;
-+                      m88ds3103_writereg(state, 0xfe, data);
-+                      data = (val2 & 0x03) << 6;
-+                      data |= val1;
-+                      m88ds3103_writereg(state, 0xea, data);
-+                      
-+                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
-+                      
-+                      /* set master clock */
-+                      val1 = m88ds3103_readreg(state, 0x22);
-+                      val2 = m88ds3103_readreg(state, 0x24);
-+                      
-+                      val1 &= 0x3f;
-+                      val2 &= 0x3f;
-+                      val1 |= 0x80;
-+                      val2 |= 0x40;
-+
-+                      m88ds3103_writereg(state, 0x22, val1);
-+                      m88ds3103_writereg(state, 0x24, val2);  
-+                      
-+                      if(state->config->ci_mode){
-+                              if(state->config->ci_mode == 2)
-+                                      val1 = 0x43;
-+                              else
-+                                      val1 = 0x03;
-+                      }
-+                      else if(state->config->ts_mode)
-+                              val1 = 0x06;
-+                      else
-+                              val1 = 0x42;
-+                      m88ds3103_writereg(state, 0xfd, val1);          
-+              }
-+              break;
-+      case SYS_DVBS2:
-+              /* initialise the demod in DVB-S2 mode */
-+              if(state->demod_id == DS3000_ID){
-+                      m88ds3103_init_reg(state, ds3000_dvbs2_init_tab, sizeof(ds3000_dvbs2_init_tab));
-+              
-+                      if (c->symbol_rate >= 30000000)
-+                              m88ds3103_writereg(state, 0xfe, 0x54);
-+                      else
-+                              m88ds3103_writereg(state, 0xfe, 0x98);
-+                                                              
-+              }else if(state->demod_id == DS3103_ID){
-+                      m88ds3103_init_reg(state, ds3103_dvbs2_init_tab, sizeof(ds3103_dvbs2_init_tab));
-+
-+                      /* set ts clock */
-+                      if(state->config->ci_mode == 2){
-+                              val1 = 6; val2 = 6;
-+                      }else if(state->config->ts_mode == 0){
-+                              val1 = 5; val2 = 4;
-+                      }else{
-+                              val1 = 0; val2 = 0;
-+                      }
-+                      val1 -= 1; val2 -= 1;
-+                      val1 &= 0x3f; val2 &= 0x3f;
-+                      data = m88ds3103_readreg(state, 0xfe);
-+                      data &= 0xf0;
-+                      data |= (val2 >> 2) & 0x0f;
-+                      m88ds3103_writereg(state, 0xfe, data);
-+                      data = (val2 & 0x03) << 6;
-+                      data |= val1;
-+                      m88ds3103_writereg(state, 0xea, data);
-+                      
-+                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
-+                      
-+                      /* set master clock */
-+                      val1 = m88ds3103_readreg(state, 0x22);
-+                      val2 = m88ds3103_readreg(state, 0x24);
-+                      
-+                      val1 &= 0x3f;
-+                      val2 &= 0x3f;
-+                      if((state->config->ci_mode == 2) || (state->config->ts_mode == 1)){
-+                              val1 |= 0x80;
-+                              val2 |= 0x40;
-+                      }else{
-+                              if (c->symbol_rate >= 28000000){
-+                                      val1 |= 0xc0;
-+                              }else if (c->symbol_rate >= 18000000){
-+                                      val2 |= 0x40;
-+                              }else{
-+                                      val1 |= 0x80;
-+                                      val2 |= 0x40;
-+                              }                               
-+                      }
-+                      m88ds3103_writereg(state, 0x22, val1);
-+                      m88ds3103_writereg(state, 0x24, val2);                                  
-+              }
-+              
-+              if(state->config->ci_mode){
-+                      if(state->config->ci_mode == 2)
-+                              val1 = 0x43;
-+                      else
-+                              val1 = 0x03;
-+              }
-+              else if(state->config->ts_mode)
-+                      val1 = 0x06;
-+              else
-+                      val1 = 0x42;
-+              m88ds3103_writereg(state, 0xfd, val1);
-+              
-+              break;
-+      default:
-+              return 1;
-+      }
-+      /* disable 27MHz clock output */
-+      m88ds3103_writereg(state, 0x29, 0x80);
-+      /* enable ac coupling */
-+      m88ds3103_writereg(state, 0x25, 0x8a);
-+
-+      if ((c->symbol_rate / 1000) <= 3000){
-+              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 32 * 100 / 64 = 400*/
-+              m88ds3103_writereg(state, 0xc8, 0x20);
-+              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+              m88ds3103_writereg(state, 0xc7, 0x00);
-+      }else if((c->symbol_rate / 1000) <= 10000){
-+              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 16 * 100 / 64 = 200*/
-+              m88ds3103_writereg(state, 0xc8, 0x10);
-+              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+              m88ds3103_writereg(state, 0xc7, 0x00);
-+      }else{
-+              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 6 * 100 / 64 = 75*/
-+              m88ds3103_writereg(state, 0xc8, 0x06);
-+              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
-+              m88ds3103_writereg(state, 0xc7, 0x00);
-+      }
-+
-+      m88ds3103_set_symrate(fe);
-+      
-+      m88ds3103_set_CCI(fe);
-+
-+      m88ds3103_set_carrier_offset(fe, carrier_offset_khz);
-+              
-+      /* ds3000 out of software reset */
-+      m88ds3103_writereg(state, 0x00, 0x00);
-+      /* start ds3000 build-in uC */
-+      m88ds3103_writereg(state, 0xb2, 0x00);  
-+      
-+      return 0;
-+}
-+
-+static int m88ds3103_set_frontend(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+
-+      int i;
-+      fe_status_t status;
-+      u8 lpf_mxdiv, mlpf_max, mlpf_min, nlpf, div4, capCode, changePLL;
-+      s32 offset_khz, lpf_offset_KHz;
-+      u16 value, ndiv, N, lpf_coeff;
-+      u32 f3db, gdiv28, realFreq;
-+      u8 RFgain;
-+
-+      dprintk("%s() ", __func__);
-+      dprintk("c frequency = %d\n", c->frequency);
-+      dprintk("symbol rate = %d\n", c->symbol_rate);
-+      dprintk("delivery system = %d\n", c->delivery_system);
-+      
-+      realFreq = c->frequency;
-+      lpf_offset_KHz = 0;
-+      if(c->symbol_rate < 5000000){
-+              lpf_offset_KHz = FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
-+              realFreq += FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
-+      }
-+      
-+      if (state->config->set_ts_params)
-+              state->config->set_ts_params(fe, 0);
-+
-+      div4 = 0;
-+      RFgain = 0;
-+      if(state->tuner_id == TS2022_ID){
-+              m88ds3103_tuner_writereg(state, 0x10, 0x0a);
-+              m88ds3103_tuner_writereg(state, 0x11, 0x40);
-+              if (realFreq < 1103000) {
-+                      m88ds3103_tuner_writereg(state, 0x10, 0x1b);
-+                      div4 = 1;
-+                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;                              
-+              }else {
-+                      ndiv = (realFreq * (6 + 8) * 2)/MT_FE_CRYSTAL_KHZ;
-+              }
-+              ndiv = ndiv + ndiv%2;
-+              if(ndiv < 4095)
-+                      N = ndiv - 1024;
-+              else if (ndiv < 6143)
-+                      N = ndiv + 1024;
-+              else
-+                      N = ndiv + 3072;        
-+              
-+              m88ds3103_tuner_writereg(state, 0x01, (N & 0x3f00) >> 8);                                                                                       
-+      }else{
-+              m88ds3103_tuner_writereg(state, 0x10, 0x00);                    
-+              if (realFreq < 1146000){
-+                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
-+                      div4 = 1;
-+                      ndiv = (realFreq * (6 + 8) * 4) / MT_FE_CRYSTAL_KHZ;
-+              }else{
-+                      m88ds3103_tuner_writereg(state, 0x10, 0x01);
-+                      ndiv = (realFreq * (6 + 8) * 2) / MT_FE_CRYSTAL_KHZ;
-+              }
-+              ndiv = ndiv + ndiv%2;
-+              N = ndiv - 1024;
-+              m88ds3103_tuner_writereg(state, 0x01, (N>>8)&0x0f);
-+      }
-+      /* set pll */
-+      m88ds3103_tuner_writereg(state, 0x02, N & 0x00ff);
-+      m88ds3103_tuner_writereg(state, 0x03, 0x06);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x00);    
-+
-+      if(state->tuner_id == TS2022_ID){
-+              if(( realFreq >= 1650000 ) && (realFreq <= 1850000)){
-+                      msleep(5);
-+                      value = m88ds3103_tuner_readreg(state, 0x14);
-+                      value &= 0x7f;
-+                      if(value < 64){
-+                              m88ds3103_tuner_writereg(state, 0x10, 0x82);
-+                              m88ds3103_tuner_writereg(state, 0x11, 0x6f);
-+
-+                              m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+                              m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+                      }
-+              }
-+              msleep(5);
-+              value = m88ds3103_tuner_readreg(state, 0x14);
-+              value &= 0x1f;
-+
-+              if(value > 19){
-+                      value = m88ds3103_tuner_readreg(state, 0x10);
-+                      value &= 0x1d;
-+                      m88ds3103_tuner_writereg(state, 0x10, value);
-+              }                               
-+      }else{
-+              msleep(5);
-+              value = m88ds3103_tuner_readreg(state, 0x66);
-+              changePLL = (((value & 0x80) >> 7) != div4);
-+
-+              if(changePLL){
-+                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
-+                      div4 = 1;
-+                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;
-+                      ndiv = ndiv + ndiv%2;
-+                      N = ndiv - 1024;
-+                                      
-+                      m88ds3103_tuner_writereg(state, 0x01, (N>>8) & 0x0f);
-+                      m88ds3103_tuner_writereg(state, 0x02, N & 0xff);
-+                      
-+                      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
-+                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+                      m88ds3103_tuner_writereg(state, 0x50, 0x10);
-+                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+              }               
-+      }
-+      /*set the RF gain*/
-+      if(state->tuner_id == TS2020_ID)
-+              m88ds3103_tuner_writereg(state, 0x60, 0x79);
-+                      
-+      m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+      msleep(5);
-+
-+      if(state->tuner_id == TS2020_ID){
-+              RFgain = m88ds3103_tuner_readreg(state, 0x3d);
-+              RFgain &= 0x0f;
-+              if(RFgain < 15){
-+                      if(RFgain < 4) 
-+                              RFgain = 0;
-+                      else
-+                              RFgain = RFgain -3;
-+                      value = ((RFgain << 3) | 0x01) & 0x79;
-+                      m88ds3103_tuner_writereg(state, 0x60, value);
-+                      m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+                      m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+              }
-+      }
-+      
-+      /* set the LPF */
-+      if(state->tuner_id == TS2022_ID){
-+              m88ds3103_tuner_writereg(state, 0x25, 0x00);
-+              m88ds3103_tuner_writereg(state, 0x27, 0x70);
-+              m88ds3103_tuner_writereg(state, 0x41, 0x09);
-+              m88ds3103_tuner_writereg(state, 0x08, 0x0b);
-+      }
-+
-+      f3db = ((c->symbol_rate / 1000) *135) / 200 + 2000;
-+      f3db += lpf_offset_KHz;
-+      if (f3db < 7000)
-+              f3db = 7000;
-+      if (f3db > 40000)
-+              f3db = 40000;
-+                      
-+      gdiv28 = (MT_FE_CRYSTAL_KHZ / 1000 * 1694 + 500) / 1000;
-+      m88ds3103_tuner_writereg(state, 0x04, gdiv28 & 0xff);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+      msleep(5);
-+
-+      value = m88ds3103_tuner_readreg(state, 0x26);
-+      capCode = value & 0x3f;
-+      if(state->tuner_id == TS2022_ID){
-+              m88ds3103_tuner_writereg(state, 0x41, 0x0d);
-+
-+              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+              m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+              m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+
-+              msleep(2);
-+
-+              value = m88ds3103_tuner_readreg(state, 0x26);
-+              value &= 0x3f;
-+              value = (capCode + value) / 2;          
-+      }
-+      else
-+              value = capCode;
-+              
-+      gdiv28 = gdiv28 * 207 / (value * 2 + 151);      
-+      mlpf_max = gdiv28 * 135 / 100;
-+      mlpf_min = gdiv28 * 78 / 100;
-+      if (mlpf_max > 63)
-+              mlpf_max = 63;
-+
-+      if(state->tuner_id == TS2022_ID)
-+              lpf_coeff = 3200;
-+      else
-+              lpf_coeff = 2766;
-+              
-+      nlpf = (f3db * gdiv28 * 2 / lpf_coeff / (MT_FE_CRYSTAL_KHZ / 1000)  + 1) / 2 ;  
-+      if (nlpf > 23) nlpf = 23;
-+      if (nlpf < 1) nlpf = 1;
-+
-+      lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2 / f3db + 1) / 2;
-+
-+      if (lpf_mxdiv < mlpf_min){
-+              nlpf++;
-+              lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2  / f3db + 1) / 2;
-+      }
-+
-+      if (lpf_mxdiv > mlpf_max)
-+              lpf_mxdiv = mlpf_max;
-+
-+      m88ds3103_tuner_writereg(state, 0x04, lpf_mxdiv);
-+      m88ds3103_tuner_writereg(state, 0x06, nlpf);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+      msleep(5);
-+      
-+      if(state->tuner_id == TS2022_ID){
-+              msleep(2);
-+              value = m88ds3103_tuner_readreg(state, 0x26);
-+              capCode = value & 0x3f;
-+
-+              m88ds3103_tuner_writereg(state, 0x41, 0x09);
-+
-+              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
-+              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+              m88ds3103_tuner_writereg(state, 0x50, 0x04);
-+              m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+
-+              msleep(2);
-+              value = m88ds3103_tuner_readreg(state, 0x26);
-+              value &= 0x3f;
-+              value = (capCode + value) / 2;
-+
-+              value = value | 0x80;
-+              m88ds3103_tuner_writereg(state, 0x25, value);
-+              m88ds3103_tuner_writereg(state, 0x27, 0x30);
-+
-+              m88ds3103_tuner_writereg(state, 0x08, 0x09);            
-+      }
-+
-+      /* Set the BB gain */
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1e);
-+      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x01);
-+      m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+      if(state->tuner_id == TS2020_ID){
-+              if(RFgain == 15){
-+                      msleep(40);
-+                      value = m88ds3103_tuner_readreg(state, 0x21);
-+                      value &= 0x0f;
-+                      if(value < 3){
-+                              m88ds3103_tuner_writereg(state, 0x60, 0x61);
-+                              m88ds3103_tuner_writereg(state, 0x51, 0x17);
-+                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
-+                              m88ds3103_tuner_writereg(state, 0x50, 0x08);
-+                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
-+                      }                       
-+              }
-+      }
-+      msleep(60);
-+      
-+      offset_khz = (ndiv) * MT_FE_CRYSTAL_KHZ
-+              / (6 + 8) / (div4 + 1) / 2 - realFreq;
-+
-+      m88ds3103_demod_connect(fe, offset_khz+lpf_offset_KHz);
-+
-+      for (i = 0; i < 30 ; i++) {
-+              m88ds3103_read_status(fe, &status);
-+              if (status & FE_HAS_LOCK){
-+                      break;
-+                }
-+              msleep(20);
-+      }
-+
-+#ifdef _AUTO_S2_      
-+      if((status & FE_HAS_LOCK) == 0){
-+              state->delivery_system = (state->delivery_system == SYS_DVBS) ? SYS_DVBS2 : SYS_DVBS;
-+              m88ds3103_demod_connect(fe, offset_khz);
-+      
-+              for (i = 0; i < 30 ; i++) {
-+                      m88ds3103_read_status(fe, &status);
-+                      if (status & FE_HAS_LOCK){
-+                              break;
-+                      }
-+                      msleep(20);
-+              }
-+      }
-+#else 
-+      state->delivery_system = c->delivery_system;
-+#endif        
-+      if (status & FE_HAS_LOCK){
-+              if(state->config->ci_mode == 2)
-+                      m88ds3103_set_clock_ratio(state);
-+              if(state->config->start_ctrl){
-+                      if(state->first_lock == 0){
-+                              state->config->start_ctrl(fe);
-+                              state->first_lock = 1;  
-+                      }
-+              }               
-+      }
-+              
-+      return 0;
-+}
-+
-+static int m88ds3103_tune(struct dvb_frontend *fe,
-+                      bool re_tune,
-+                      unsigned int mode_flags,
-+                      unsigned int *delay,
-+                      fe_status_t *status)
-+{     
-+      *delay = HZ / 5;
-+      
-+      dprintk("%s() ", __func__);
-+      dprintk("re_tune = %d\n", re_tune);
-+      
-+      if (re_tune) {
-+              int ret = m88ds3103_set_frontend(fe);
-+              if (ret)
-+                      return ret;
-+      }
-+      
-+      return m88ds3103_read_status(fe, status);
-+}
-+
-+static enum dvbfe_algo m88ds3103_get_algo(struct dvb_frontend *fe)
-+{
-+      return DVBFE_ALGO_HW;
-+}
-+ 
-+ /*
-+ * Power config will reset and load initial firmware if required
-+ */
-+static int m88ds3103_initilaze(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      int ret;
-+
-+      dprintk("%s()\n", __func__);
-+      /* hard reset */
-+      m88ds3103_writereg(state, 0x07, 0x80);
-+      m88ds3103_writereg(state, 0x07, 0x00);
-+      msleep(1);
-+      
-+      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
-+      msleep(1);
-+
-+      if(state->tuner_id == TS2020_ID){
-+              /* TS2020 init */
-+              m88ds3103_tuner_writereg(state, 0x42, 0x73);
-+              msleep(2);
-+              m88ds3103_tuner_writereg(state, 0x05, 0x01);
-+              m88ds3103_tuner_writereg(state, 0x62, 0xb5);
-+              m88ds3103_tuner_writereg(state, 0x07, 0x02);
-+              m88ds3103_tuner_writereg(state, 0x08, 0x01);
-+      }
-+      else if(state->tuner_id == TS2022_ID){
-+              /* TS2022 init */
-+              m88ds3103_tuner_writereg(state, 0x62, 0x6c);
-+              msleep(2);
-+              m88ds3103_tuner_writereg(state, 0x42, 0x6c);
-+              msleep(2);
-+              m88ds3103_tuner_writereg(state, 0x7d, 0x9d);
-+              m88ds3103_tuner_writereg(state, 0x7c, 0x9a);
-+              m88ds3103_tuner_writereg(state, 0x7a, 0x76);
-+
-+              m88ds3103_tuner_writereg(state, 0x3b, 0x01);
-+              m88ds3103_tuner_writereg(state, 0x63, 0x88);
-+
-+              m88ds3103_tuner_writereg(state, 0x61, 0x85);
-+              m88ds3103_tuner_writereg(state, 0x22, 0x30);
-+              m88ds3103_tuner_writereg(state, 0x30, 0x40);
-+              m88ds3103_tuner_writereg(state, 0x20, 0x23);
-+              m88ds3103_tuner_writereg(state, 0x24, 0x02);
-+              m88ds3103_tuner_writereg(state, 0x12, 0xa0);    
-+      }
-+              
-+      if(state->demod_id == DS3103_ID){
-+              m88ds3103_writereg(state, 0x07, 0xe0);
-+              m88ds3103_writereg(state, 0x07, 0x00);
-+              msleep(1);              
-+      }
-+      m88ds3103_writereg(state, 0xb2, 0x01);
-+      
-+      /* Load the firmware if required */
-+      ret = m88ds3103_load_firmware(fe);
-+      if (ret != 0){
-+              printk(KERN_ERR "%s: Unable initialize firmware\n", __func__);
-+              return ret;
-+      }
-+      if(state->demod_id == DS3103_ID){
-+              m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
-+              m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));         
-+      }
-+
-+      return 0;
-+}
-+
-+/*
-+ * Initialise or wake up device
-+ */
-+static int m88ds3103_initfe(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+      u8 val;
-+
-+      dprintk("%s()\n", __func__);
-+
-+      /* 1st step to wake up demod */
-+      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
-+      m88ds3103_writereg(state, 0x04, 0xfe & m88ds3103_readreg(state, 0x04));
-+      m88ds3103_writereg(state, 0x23, 0xef & m88ds3103_readreg(state, 0x23));
-+      
-+      /* 2nd step to wake up tuner */
-+      val = m88ds3103_tuner_readreg(state, 0x00) & 0xff;
-+      if((val & 0x01) == 0){
-+              m88ds3103_tuner_writereg(state, 0x00, 0x01);
-+              msleep(50);
-+      }
-+      m88ds3103_tuner_writereg(state, 0x00, 0x03);
-+      msleep(50);
-+      
-+      return 0;       
-+}
-+
-+/* Put device to sleep */
-+static int m88ds3103_sleep(struct dvb_frontend *fe)
-+{
-+      struct m88ds3103_state *state = fe->demodulator_priv;
-+
-+      dprintk("%s()\n", __func__);
-+      
-+      /* 1st step to sleep tuner */
-+      m88ds3103_tuner_writereg(state, 0x00, 0x00);
-+      
-+      /* 2nd step to sleep demod */
-+      m88ds3103_writereg(state, 0x08, 0xfe & m88ds3103_readreg(state, 0x08));
-+      m88ds3103_writereg(state, 0x04, 0x01 | m88ds3103_readreg(state, 0x04));
-+      m88ds3103_writereg(state, 0x23, 0x10 | m88ds3103_readreg(state, 0x23));
-+      
-+
-+      return 0;
-+}
-+
-+static struct dvb_frontend_ops m88ds3103_ops = {
-+      .delsys = { SYS_DVBS, SYS_DVBS2},
-+      .info = {
-+              .name = "Montage DS3103/TS2022",
-+              .type = FE_QPSK,
-+              .frequency_min = 950000,
-+              .frequency_max = 2150000,
-+              .frequency_stepsize = 1011, /* kHz for QPSK frontends */
-+              .frequency_tolerance = 5000,
-+              .symbol_rate_min = 1000000,
-+              .symbol_rate_max = 45000000,
-+              .caps = FE_CAN_INVERSION_AUTO |
-+                      FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
-+                      FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
-+                      FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
-+                      FE_CAN_2G_MODULATION |
-+                      FE_CAN_QPSK | FE_CAN_RECOVER
-+      },
-+
-+      .release = m88ds3103_release,
-+
-+      .init = m88ds3103_initfe,
-+      .sleep = m88ds3103_sleep,
-+      .read_status = m88ds3103_read_status,
-+      .read_ber = m88ds3103_read_ber,
-+      .read_signal_strength = m88ds3103_read_signal_strength,
-+      .read_snr = m88ds3103_read_snr,
-+      .read_ucblocks = m88ds3103_read_ucblocks,
-+      .set_tone = m88ds3103_set_tone,
-+      .set_voltage = m88ds3103_set_voltage,
-+      .diseqc_send_master_cmd = m88ds3103_send_diseqc_msg,
-+      .diseqc_send_burst = m88ds3103_diseqc_send_burst,
-+      .get_frontend_algo = m88ds3103_get_algo,
-+      .tune = m88ds3103_tune,
-+      .set_frontend = m88ds3103_set_frontend,
-+};
-+
-+MODULE_DESCRIPTION("DVB Frontend module for Montage DS3103/TS2022 hardware");
-+MODULE_AUTHOR("Max nibble");
-+MODULE_LICENSE("GPL");
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
-new file mode 100644
-index 0000000..e2358d6
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
-@@ -0,0 +1,54 @@
-+/*
-+    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+    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, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#ifndef DVBSKY_M88DS3103_H
-+#define DVBSKY_M88DS3103_H
-+
-+#include <linux/kconfig.h>
-+#include <linux/dvb/frontend.h>
-+
-+struct dvbsky_m88ds3103_config {
-+      /* the demodulator's i2c address */
-+      u8 demod_address;
-+      u8 ci_mode;
-+      u8 pin_ctrl;
-+      u8 ts_mode; /* 0: Parallel, 1: Serial */
-+      u8 tuner_readstops;
-+
-+      /* Set device param to start dma */
-+      int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
-+    /* Start to transfer data */
-+    int (*start_ctrl)(struct dvb_frontend *fe);
-+    /* Set LNB voltage */
-+    int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
-+};
-+
-+#if IS_ENABLED(CONFIG_DVB_DVBSKY_M88DS3103)
-+extern struct dvb_frontend *dvbsky_m88ds3103_attach(
-+       const struct dvbsky_m88ds3103_config *config,
-+       struct i2c_adapter *i2c);
-+#else
-+static inline struct dvb_frontend *dvbsky_m88ds3103_attach(
-+       const struct dvbsky_m88ds3103_config *config,
-+       struct i2c_adapter *i2c)
-+{
-+      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
-+      return NULL;
-+}
-+#endif /* CONFIG_DVB_DVBSKY_M88DS3103 */
-+#endif /* DVBSKY_M88DS3103_H */
-diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
-new file mode 100644
-index 0000000..9966931
---- /dev/null
-+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
-@@ -0,0 +1,403 @@
-+/*
-+    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
-+
-+    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, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#ifndef DVBSKY_M88DS3103_PRIV_H
-+#define DVBSKY_M88DS3103_PRIV_H
-+
-+#define FW_DOWN_SIZE 32
-+#define FW_DOWN_LOOP (8192/FW_DOWN_SIZE)
-+#define DS3103_DEFAULT_FIRMWARE "dvb-fe-ds3103.fw"
-+#define DS3000_DEFAULT_FIRMWARE "dvb-fe-ds300x.fw"
-+#define MT_FE_MCLK_KHZ 96000 /* in kHz */
-+#define MT_FE_CRYSTAL_KHZ   27000 /* in kHz */
-+#define FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz 3000
-+#define DS3000_ID     0x3000
-+#define DS3103_ID     0x3103
-+#define TS2020_ID     0x2020
-+#define TS2022_ID     0x2022
-+#define UNKNOW_ID     0x0000
-+
-+struct m88ds3103_state {
-+      struct i2c_adapter *i2c;
-+      const struct dvbsky_m88ds3103_config *config;
-+      
-+      struct dvb_frontend frontend;
-+      
-+      u32 preBer;
-+      u8 skip_fw_load;        
-+      u8 first_lock; /* The first time of signal lock */
-+      u16 demod_id; /* demod chip type */
-+      u16 tuner_id; /* tuner chip type */
-+      fe_delivery_system_t delivery_system;
-+};
-+
-+/* For M88DS3103 demod dvbs mode.*/
-+static u8 ds3103_dvbs_init_tab[] = {
-+      0x23, 0x07,
-+      0x08, 0x03,
-+      0x0c, 0x02,
-+      0x21, 0x54,
-+      0x25, 0x82,
-+      0x27, 0x31,
-+      0x30, 0x08,
-+      0x31, 0x40,
-+      0x32, 0x32,
-+      0x33, 0x35,
-+      0x35, 0xff,
-+      0x3a, 0x00,
-+      0x37, 0x10,
-+      0x38, 0x10,
-+      0x39, 0x02,
-+      0x42, 0x60,
-+      0x4a, 0x80,
-+      0x4b, 0x04,
-+      0x4d, 0x91,
-+      0x5d, 0xc8,
-+      0x50, 0x36,
-+      0x51, 0x36,
-+      0x52, 0x36,
-+      0x53, 0x36,
-+      0x63, 0x0f,
-+      0x64, 0x30,
-+      0x65, 0x40,
-+      0x68, 0x26,
-+      0x69, 0x4c,
-+      0x70, 0x20,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x40,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x60,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x80,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0xa0,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x1f,
-+      0x76, 0x38,
-+      0x77, 0xa6,
-+      0x78, 0x0c,
-+      0x79, 0x80,
-+      0x7f, 0x14,
-+      0x7c, 0x00,
-+      0xae, 0x82,
-+      0x80, 0x64,
-+      0x81, 0x66,
-+      0x82, 0x44,
-+      0x85, 0x04,
-+      0xcd, 0xf4,
-+      0x90, 0x33,
-+      0xa0, 0x44,
-+      0xc0, 0x08,
-+      0xc3, 0x10,
-+      0xc4, 0x08,
-+      0xc5, 0xf0,
-+      0xc6, 0xff,
-+      0xc7, 0x00,
-+      0xc8, 0x1a,
-+      0xc9, 0x80,
-+      0xe0, 0xf8,
-+      0xe6, 0x8b,
-+      0xd0, 0x40,
-+      0xf8, 0x20,
-+      0xfa, 0x0f,
-+      0x00, 0x00,
-+      0xbd, 0x01,
-+      0xb8, 0x00,
-+};
-+/* For M88DS3103 demod dvbs2 mode.*/
-+static u8 ds3103_dvbs2_init_tab[] = {
-+      0x23, 0x07,
-+      0x08, 0x07,
-+      0x0c, 0x02,
-+      0x21, 0x54,
-+      0x25, 0x82,
-+      0x27, 0x31,
-+      0x30, 0x08,
-+      0x32, 0x32,
-+      0x33, 0x35,
-+      0x35, 0xff,
-+      0x3a, 0x00,
-+      0x37, 0x10,
-+      0x38, 0x10,
-+      0x39, 0x02,
-+      0x42, 0x60,
-+      0x4a, 0x80,
-+      0x4b, 0x04,
-+      0x4d, 0x91,
-+      0x5d, 0xc8,
-+      0x50, 0x36,
-+      0x51, 0x36,
-+      0x52, 0x36,
-+      0x53, 0x36,
-+      0x63, 0x0f,
-+      0x64, 0x10,
-+      0x65, 0x20,
-+      0x68, 0x46,
-+      0x69, 0xcd,
-+      0x70, 0x20,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x40,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x60,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x80,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0xa0,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x1f,
-+      0x76, 0x38,
-+      0x77, 0xa6,
-+      0x78, 0x0c,
-+      0x79, 0x80,
-+      0x7f, 0x14,
-+      0x85, 0x08,
-+      0xcd, 0xf4,
-+      0x90, 0x33,
-+      0x86, 0x00,
-+      0x87, 0x0f,
-+      0x89, 0x00,
-+      0x8b, 0x44,
-+      0x8c, 0x66,
-+      0x9d, 0xc1,
-+      0x8a, 0x10,
-+      0xad, 0x40,
-+      0xa0, 0x44,
-+      0xc0, 0x08,
-+      0xc1, 0x10,
-+      0xc2, 0x08,
-+      0xc3, 0x10,
-+      0xc4, 0x08,
-+      0xc5, 0xf0,
-+      0xc6, 0xff,
-+      0xc7, 0x00,
-+      0xc8, 0x1a,
-+      0xc9, 0x80,
-+      0xca, 0x23,
-+      0xcb, 0x24,
-+      0xcc, 0xf4,
-+      0xce, 0x74,
-+      0x00, 0x00,
-+      0xbd, 0x01,
-+      0xb8, 0x00,
-+};
-+
-+/* For M88DS3000 demod dvbs mode.*/
-+static u8 ds3000_dvbs_init_tab[] = {
-+      0x23, 0x05,
-+      0x08, 0x03,
-+      0x0c, 0x02,
-+      0x21, 0x54,
-+      0x25, 0x82,
-+      0x27, 0x31,
-+      0x30, 0x08,
-+      0x31, 0x40,
-+      0x32, 0x32,
-+      0x33, 0x35,
-+      0x35, 0xff,
-+      0x3a, 0x00,
-+      0x37, 0x10,
-+      0x38, 0x10,
-+      0x39, 0x02,
-+      0x42, 0x60,
-+      0x4a, 0x40,
-+      0x4b, 0x04,
-+      0x4d, 0x91,
-+      0x5d, 0xc8,
-+      0x50, 0x77,
-+      0x51, 0x77,
-+      0x52, 0x36,
-+      0x53, 0x36,
-+      0x56, 0x01,
-+      0x63, 0x47,
-+      0x64, 0x30,
-+      0x65, 0x40,
-+      0x68, 0x26,
-+      0x69, 0x4c,
-+      0x70, 0x20,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x40,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x60,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x80,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0xa0,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x1f,
-+      0x76, 0x00,
-+      0x77, 0xd1,
-+      0x78, 0x0c,
-+      0x79, 0x80,
-+      0x7f, 0x04,
-+      0x7c, 0x00,
-+      0x80, 0x86,
-+      0x81, 0xa6,
-+      0x85, 0x04,
-+      0xcd, 0xf4,
-+      0x90, 0x33,
-+      0xa0, 0x44,
-+      0xc0, 0x18,
-+      0xc3, 0x10,
-+      0xc4, 0x08,
-+      0xc5, 0x80,
-+      0xc6, 0x80,
-+      0xc7, 0x0a,
-+      0xc8, 0x1a,
-+      0xc9, 0x80,
-+      0xfe, 0xb6,
-+      0xe0, 0xf8,
-+      0xe6, 0x8b,
-+      0xd0, 0x40,
-+      0xf8, 0x20,
-+      0xfa, 0x0f,
-+      0xad, 0x20,
-+      0xae, 0x07,
-+      0xb8, 0x00,
-+};
-+
-+/* For M88DS3000 demod dvbs2 mode.*/
-+static u8 ds3000_dvbs2_init_tab[] = {
-+      0x23, 0x0f,
-+      0x08, 0x07,
-+      0x0c, 0x02,
-+      0x21, 0x54,
-+      0x25, 0x82,
-+      0x27, 0x31,
-+      0x30, 0x08,
-+      0x31, 0x32,
-+      0x32, 0x32,
-+      0x33, 0x35,
-+      0x35, 0xff,
-+      0x3a, 0x00,
-+      0x37, 0x10,
-+      0x38, 0x10,
-+      0x39, 0x02,
-+      0x42, 0x60,
-+      0x4a, 0x80,
-+      0x4b, 0x04,
-+      0x4d, 0x91,
-+      0x5d, 0x88,
-+      0x50, 0x36,
-+      0x51, 0x36,
-+      0x52, 0x36,
-+      0x53, 0x36,
-+      0x63, 0x60,
-+      0x64, 0x10,
-+      0x65, 0x10,
-+      0x68, 0x04,
-+      0x69, 0x29,
-+      0x70, 0x20,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x40,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x60,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x80,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0xa0,
-+      0x71, 0x70,
-+      0x72, 0x04,
-+      0x73, 0x00,
-+      0x70, 0x1f,
-+      0xa0, 0x44,
-+      0xc0, 0x08,
-+      0xc1, 0x10,
-+      0xc2, 0x08,
-+      0xc3, 0x10,
-+      0xc4, 0x08,
-+      0xc5, 0xf0,
-+      0xc6, 0xf0,
-+      0xc7, 0x0a,
-+      0xc8, 0x1a,
-+      0xc9, 0x80,
-+      0xca, 0x23,
-+      0xcb, 0x24,
-+      0xce, 0x74,
-+      0x56, 0x01,
-+      0x90, 0x03,
-+      0x76, 0x80,
-+      0x77, 0x42,
-+      0x78, 0x0a,
-+      0x79, 0x80,
-+      0xad, 0x40,
-+      0xae, 0x07,
-+      0x7f, 0xd4,
-+      0x7c, 0x00,
-+      0x80, 0xa8,
-+      0x81, 0xda,
-+      0x7c, 0x01,
-+      0x80, 0xda,
-+      0x81, 0xec,
-+      0x7c, 0x02,
-+      0x80, 0xca,
-+      0x81, 0xeb,
-+      0x7c, 0x03,
-+      0x80, 0xba,
-+      0x81, 0xdb,
-+      0x85, 0x08,
-+      0x86, 0x00,
-+      0x87, 0x02,
-+      0x89, 0x80,
-+      0x8b, 0x44,
-+      0x8c, 0xaa,
-+      0x8a, 0x10,
-+      0xba, 0x00,
-+      0xf5, 0x04,
-+      0xd2, 0x32,
-+      0xb8, 0x00,
-+};
-+
-+#endif /* DVBSKY_M88DS3103_PRIV_H */
-diff --git a/drivers/media/dvb-frontends/m88dc2800.c b/drivers/media/dvb-frontends/m88dc2800.c
-new file mode 100644
-index 0000000..f876a11
---- /dev/null
-+++ b/drivers/media/dvb-frontends/m88dc2800.c
-@@ -0,0 +1,2124 @@
-+/*
-+    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
-+
-+    Copyright (C) 2012 Max nibble<nibble.max@gmail.com>
-+    Copyright (C) 2011 Montage Technology / www.montage-tech.com
-+
-+    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, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+#include <linux/delay.h>
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/slab.h>
-+#include <asm/div64.h>
-+#include "dvb_frontend.h"
-+#include "m88dc2800.h"
-+
-+struct m88dc2800_state {
-+      struct i2c_adapter *i2c;
-+      const struct m88dc2800_config *config;
-+      struct dvb_frontend frontend;
-+      u32 freq;
-+      u32 ber;
-+      u32 sym;
-+      u16 qam;
-+      u8 inverted;
-+      u32 xtal;
-+      /* tuner state */
-+      u8 tuner_init_OK;       /* Tuner initialize status */
-+      u8 tuner_dev_addr;      /* Tuner device address */
-+      u32 tuner_freq;         /* RF frequency to be set, unit: KHz */
-+      u16 tuner_qam;          /* Reserved */
-+      u16 tuner_mode;
-+      u8 tuner_bandwidth;     /* Bandwidth of the channel, unit: MHz, 6/7/8 */
-+      u8 tuner_loopthrough;   /* Tuner loop through switch, 0/1 */
-+      u32 tuner_crystal;      /* Tuner crystal frequency, unit: KHz */
-+      u32 tuner_dac;          /* Tuner DAC frequency, unit: KHz */
-+      u16 tuner_mtt;          /* Tuner chip version, D1: 0x0d, E0: 0x0e, E1: 0x8e */
-+      u16 tuner_custom_cfg;
-+      u32 tuner_version;      /* Tuner driver version number */
-+      u32 tuner_time;
-+};
-+
-+static int debug;
-+module_param(debug, int, 0644);
-+MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
-+
-+#define dprintk(args...) \
-+      do { \
-+              if (debug) \
-+                      printk(KERN_INFO "m88dc2800: " args); \
-+      } while (0)
-+
-+
-+static int m88dc2800_i2c_write(struct m88dc2800_state *state, u8 addr,
-+                             u8 * p_data, u8 len)
-+{
-+      struct i2c_msg msg = { .flags = 0 };
-+
-+      msg.addr = addr;
-+      msg.buf = p_data;
-+      msg.len = len;
-+
-+      return i2c_transfer(state->i2c, &msg, 1);
-+}
-+
-+static int m88dc2800_i2c_read(struct m88dc2800_state *state, u8 addr,
-+                            u8 * p_data, u8 len)
-+{
-+      struct i2c_msg msg = { .flags = I2C_M_RD };
-+
-+      msg.addr = addr;
-+      msg.buf = p_data;
-+      msg.len = len;
-+
-+      return i2c_transfer(state->i2c, &msg, 1);
-+}
-+
-+/*demod register operations.*/
-+static int WriteReg(struct m88dc2800_state *state, u8 reg, u8 data)
-+{
-+      u8 buf[] = { reg, data };
-+      u8 addr = state->config->demod_address;
-+      int err;
-+
-+      dprintk("%s: write reg 0x%02x, value 0x%02x\n", __func__, reg, data);
-+
-+      err = m88dc2800_i2c_write(state, addr, buf, 2);
-+
-+      if (err != 1) {
-+              printk(KERN_ERR
-+                     "%s: writereg error(err == %i, reg == 0x%02x,"
-+                     " value == 0x%02x)\n", __func__, err, reg, data);
-+              return -EIO;
-+      }
-+      return 0;
-+}
-+
-+static int ReadReg(struct m88dc2800_state *state, u8 reg)
-+{
-+      int ret;
-+      u8 b0[] = { reg };
-+      u8 b1[] = { 0 };
-+      u8 addr = state->config->demod_address;
-+
-+      ret = m88dc2800_i2c_write(state, addr, b0, 1);
-+
-+      if (ret != 1) {
-+              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
-+                     __func__, reg, ret);
-+              return -EIO;
-+      }
-+
-+      ret = m88dc2800_i2c_read(state, addr, b1, 1);
-+
-+      dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
-+      return b1[0];
-+}
-+
-+static int _mt_fe_tn_set_reg(struct m88dc2800_state *state, u8 reg,
-+                           u8 data)
-+{
-+      int ret;
-+      u8 buf[2];
-+      u8 addr = state->tuner_dev_addr;
-+
-+      buf[1] = ReadReg(state, 0x86);
-+      buf[1] |= 0x80;
-+      ret = WriteReg(state, 0x86, buf[1]);
-+
-+      buf[0] = reg;
-+      buf[1] = data;
-+
-+      ret = m88dc2800_i2c_write(state, addr, buf, 2);
-+      if (ret != 1)
-+              return -EIO;
-+      return 0;
-+}
-+
-+static int _mt_fe_tn_get_reg(struct m88dc2800_state *state, u8 reg,
-+                           u8 * p_data)
-+{
-+      int ret;
-+      u8 buf[2];
-+      u8 addr = state->tuner_dev_addr;
-+
-+      buf[1] = ReadReg(state, 0x86);
-+      buf[1] |= 0x80;
-+      ret = WriteReg(state, 0x86, buf[1]);
-+
-+      buf[0] = reg;
-+      ret = m88dc2800_i2c_write(state, addr, buf, 1);
-+
-+      msleep(1);
-+
-+      buf[1] = ReadReg(state, 0x86);
-+      buf[1] |= 0x80;
-+      ret = WriteReg(state, 0x86, buf[1]);
-+
-+      return m88dc2800_i2c_read(state, addr, p_data, 1);
-+}
-+
-+/* Tuner operation functions.*/
-+static int _mt_fe_tn_set_RF_front_tc2800(struct m88dc2800_state *state)
-+{
-+      u32 freq_KHz = state->tuner_freq;
-+      u8 a, b, c;
-+      if (state->tuner_mtt == 0xD1) { /* D1 */
-+              if (freq_KHz <= 123000) {
-+                      if (freq_KHz <= 56000) {
-+                              a = 0x00; b = 0x00; c = 0x00;
-+                      } else if (freq_KHz <= 64000) {
-+                              a = 0x10; b = 0x01; c = 0x08;
-+                      } else if (freq_KHz <= 72000) {
-+                              a = 0x20; b = 0x02; c = 0x10;
-+                      } else if (freq_KHz <= 80000) {
-+                              a = 0x30; b = 0x03; c = 0x18;
-+                      } else if (freq_KHz <= 88000) {
-+                              a = 0x40; b = 0x04; c = 0x20;
-+                      } else if (freq_KHz <= 96000) {
-+                              a = 0x50; b = 0x05; c = 0x28;
-+                      } else if (freq_KHz <= 104000) {
-+                              a = 0x60; b = 0x06; c = 0x30;
-+                      } else {
-+                              a = 0x70; b = 0x07; c = 0x38;
-+                      }
-+                      _mt_fe_tn_set_reg(state, 0x58, 0x9b);
-+                      _mt_fe_tn_set_reg(state, 0x59, a);
-+                      _mt_fe_tn_set_reg(state, 0x5d, b);
-+                      _mt_fe_tn_set_reg(state, 0x5e, c);
-+                      _mt_fe_tn_set_reg(state, 0x5a, 0x75);
-+                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
-+              } else {        /* if (freq_KHz > 112000) */
-+                      _mt_fe_tn_set_reg(state, 0x58, 0x7b);
-+                      if (freq_KHz <= 304000) {
-+                              if (freq_KHz <= 136000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x40);
-+                              } else if (freq_KHz <= 160000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x48);
-+                              } else if (freq_KHz <= 184000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x50);
-+                              } else if (freq_KHz <= 208000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x58);
-+                              } else if (freq_KHz <= 232000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x60);
-+                              } else if (freq_KHz <= 256000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x68);
-+                              } else if (freq_KHz <= 280000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x70);
-+                              } else {        /* if (freq_KHz <= 304000) */
-+                                      _mt_fe_tn_set_reg(state, 0x5e, 0x78);
-+                              }
-+                              if (freq_KHz <= 171000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x08);
-+                              } else if (freq_KHz <= 211000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0a);
-+                              } else {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+                              }
-+                      } else {        /* if (freq_KHz > 304000) */
-+                              _mt_fe_tn_set_reg(state, 0x5e, 0x88);
-+                              if (freq_KHz <= 400000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
-+                              } else if (freq_KHz <= 450000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x09);
-+                              } else if (freq_KHz <= 550000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+                              } else if (freq_KHz <= 650000) {
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0d);
-+                              } else {        /*if (freq_KHz > 650000) */
-+                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
-+                              }
-+                      }
-+              }
-+              if (freq_KHz > 800000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x24);
-+              else if (freq_KHz > 700000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x34);
-+              else if (freq_KHz > 500000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x44);
-+              else if (freq_KHz > 300000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+              else if (freq_KHz > 220000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+              else if (freq_KHz > 110000)
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+              else
-+                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+              if (freq_KHz > 600000)
-+                      _mt_fe_tn_set_reg(state, 0x6a, 0x53);
-+              else if (freq_KHz > 500000)
-+                      _mt_fe_tn_set_reg(state, 0x6a, 0x57);
-+              else
-+                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
-+              if (freq_KHz < 200000) {
-+                      _mt_fe_tn_set_reg(state, 0x20, 0x5d);
-+              } else if (freq_KHz < 500000) {
-+                      _mt_fe_tn_set_reg(state, 0x20, 0x7d);
-+              } else {
-+                      _mt_fe_tn_set_reg(state, 0x20, 0xfd);
-+              }               /* end of 0xD1 */
-+      } else if (state->tuner_mtt == 0xE1) {  /* E1 */
-+              if (freq_KHz <= 112000) {       /* 123MHz */
-+                      if (freq_KHz <= 56000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x01);
-+                      } else if (freq_KHz <= 64000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x09);
-+                      } else if (freq_KHz <= 72000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x11);
-+                      } else if (freq_KHz <= 80000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x19);
-+                      } else if (freq_KHz <= 88000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x21);
-+                      } else if (freq_KHz <= 96000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x29);
-+                      } else if (freq_KHz <= 104000) {
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x31);
-+                      } else {        /* if (freq_KHz <= 112000) */
-+                              _mt_fe_tn_set_reg(state, 0x5c, 0x39);
-+                      }
-+                      _mt_fe_tn_set_reg(state, 0x5b, 0x30);
-+              } else {        /* if (freq_KHz > 112000) */
-+                      if (freq_KHz <= 304000) {
-+                              if (freq_KHz <= 136000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x41);
-+                              } else if (freq_KHz <= 160000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x49);
-+                              } else if (freq_KHz <= 184000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x51);
-+                              } else if (freq_KHz <= 208000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x59);
-+                              } else if (freq_KHz <= 232000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x61);
-+                              } else if (freq_KHz <= 256000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x69);
-+                              } else if (freq_KHz <= 280000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x71);
-+                              } else {        /* if (freq_KHz <= 304000) */
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x79);
-+                              }
-+                              if (freq_KHz <= 150000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5b, 0x28);
-+                              } else if (freq_KHz <= 256000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5b, 0x29);
-+                              } else {
-+                                      _mt_fe_tn_set_reg(state, 0x5b, 0x2a);
-+                              }
-+                      } else {        /* if (freq_KHz > 304000) */
-+                              if (freq_KHz <= 400000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x89);
-+                              } else if (freq_KHz <= 450000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x91);
-+                              } else if (freq_KHz <= 650000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0x98);
-+                              } else if (freq_KHz <= 850000) {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa0);
-+                              } else {
-+                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa8);
-+                              }
-+                              _mt_fe_tn_set_reg(state, 0x5b, 0x08);
-+                      }
-+              }
-+      }                       /* end of 0xE1 */
-+      return 0;
-+}
-+
-+static int _mt_fe_tn_cali_PLL_tc2800(struct m88dc2800_state *state,
-+                                   u32 freq_KHz,
-+                                   u32 cali_freq_thres_div2,
-+                                   u32 cali_freq_thres_div3r,
-+                                   u32 cali_freq_thres_div3)
-+{
-+      s32 N, F, MUL;
-+      u8 buf, tmp, tmp2;
-+      s32 M;
-+      const s32 crystal_KHz = state->tuner_crystal;
-+       if (state->tuner_mtt == 0xD1) {
-+              M = state->tuner_crystal / 4000;
-+              if (freq_KHz > cali_freq_thres_div2) {
-+                      MUL = 4;
-+                      tmp = 2;
-+              } else if (freq_KHz > 300000) {
-+                      MUL = 8;
-+                      tmp = 3;
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
-+                      MUL = 8;
-+                      tmp = 4;
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
-+                      MUL = 16;
-+                      tmp = 5;
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
-+                      MUL = 32;
-+                      tmp = 6;
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
-+                      MUL = 64;
-+                      tmp = 7;
-+              } else {        /* invalid */
-+                      MUL = 0;
-+                      tmp = 0;
-+                      return 1;
-+              }
-+      } else if (state->tuner_mtt == 0xE1) {
-+              M = state->tuner_crystal / 1000;
-+              _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+              _mt_fe_tn_set_reg(state, 0x32, 0xe0);
-+              _mt_fe_tn_set_reg(state, 0x33, 0x86);
-+              _mt_fe_tn_set_reg(state, 0x37, 0x70);
-+              _mt_fe_tn_set_reg(state, 0x38, 0x20);
-+              _mt_fe_tn_set_reg(state, 0x39, 0x18);
-+              _mt_fe_tn_set_reg(state, 0x89, 0x83);
-+              if (freq_KHz > cali_freq_thres_div2) {
-+                      M = M / 4;
-+                      MUL = 4;
-+                      tmp = 2;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > cali_freq_thres_div3r) {
-+                      M = M / 3;
-+                      MUL = 6;
-+                      tmp = 2;
-+                      tmp2 = M + 32;  /* 32 */
-+              } else if (freq_KHz > cali_freq_thres_div3) {
-+                      M = M / 3;
-+                      MUL = 6;
-+                      tmp = 2;
-+                      tmp2 = M;       /* 16 */
-+              } else if (freq_KHz > 304000) {
-+                      M = M / 4;
-+                      MUL = 8;
-+                      tmp = 3;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
-+                      M = M / 4;
-+                      MUL = 8;
-+                      tmp = 4;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > (cali_freq_thres_div3r / 2)) {
-+                      M = M / 3;
-+                      MUL = 12;
-+                      tmp = 4;
-+                      tmp2 = M + 32;  /* 32 */
-+              } else if (freq_KHz > (cali_freq_thres_div3 / 2)) {
-+                      M = M / 3;
-+                      MUL = 12;
-+                      tmp = 4;
-+                      tmp2 = M;       /* 16 */
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
-+                      M = M / 4;
-+                      MUL = 16;
-+                      tmp = 5;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > (cali_freq_thres_div3r / 4)) {
-+                      M = M / 3;
-+                      MUL = 24;
-+                      tmp = 5;
-+                      tmp2 = M + 32;  /* 32 */
-+              } else if (freq_KHz > (cali_freq_thres_div3 / 4)) {
-+                      M = M / 3;
-+                      MUL = 24;
-+                      tmp = 5;
-+                      tmp2 = M;       /* 16 */
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
-+                      M = M / 4;
-+                      MUL = 32;
-+                      tmp = 6;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > (cali_freq_thres_div3r / 8)) {
-+                      M = M / 3;
-+                      MUL = 48;
-+                      tmp = 6;
-+                      tmp2 = M + 32;  /* 32 */
-+              } else if (freq_KHz > (cali_freq_thres_div3 / 8)) {
-+                      M = M / 3;
-+                      MUL = 48;
-+                      tmp = 6;
-+                      tmp2 = M;       /* 16 */
-+              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
-+                      M = M / 4;
-+                      MUL = 64;
-+                      tmp = 7;
-+                      tmp2 = M + 16;  /* 48 */
-+              } else if (freq_KHz > (cali_freq_thres_div3r / 16)) {
-+                      M = M / 3;
-+                      MUL = 96;
-+                      tmp = 7;
-+                      tmp2 = M + 32;  /* 32 */
-+              } else if (freq_KHz > (cali_freq_thres_div3 / 16)) {
-+                      M = M / 3;
-+                      MUL = 96;
-+                      tmp = 7;
-+                      tmp2 = M;       /* 16 */
-+              } else {        /* invalid */
-+                      M = M / 4;
-+                      MUL = 0;
-+                      tmp = 0;
-+                      tmp2 = 48;
-+                      return 1;
-+              }
-+              if (freq_KHz == 291000) {
-+                      M = state->tuner_crystal / 1000 / 3;
-+                      MUL = 12;
-+                      tmp = 4;
-+                      tmp2 = M + 32;  /* 32 */
-+              }
-+              /*
-+                 if (freq_KHz == 578000) {
-+                 M = state->tuner_crystal / 1000 / 4;
-+                 MUL = 4;
-+                 tmp = 2;
-+                 tmp2 = M + 16;       // 48
-+                 }
-+               */
-+              if (freq_KHz == 690000) {
-+                      M = state->tuner_crystal / 1000 / 3;
-+                      MUL = 4;
-+                      tmp = 2;
-+                      tmp2 = M + 16;  /* 48 */
-+              }
-+              _mt_fe_tn_get_reg(state, 0x33, &buf);
-+              buf &= 0xc0;
-+              buf += tmp2;
-+              _mt_fe_tn_set_reg(state, 0x33, buf);
-+      } else {
-+              return 1;
-+      }
-+      _mt_fe_tn_get_reg(state, 0x39, &buf);
-+      buf &= 0xf8;
-+      buf += tmp;
-+      _mt_fe_tn_set_reg(state, 0x39, buf);
-+      N = (freq_KHz * MUL * M / crystal_KHz) / 2 * 2 - 256;
-+      buf = (N >> 8) & 0xcf;
-+      if (state->tuner_mtt == 0xE1) {
-+              buf |= 0x30;
-+      }
-+      _mt_fe_tn_set_reg(state, 0x34, buf);
-+      buf = N & 0xff;
-+      _mt_fe_tn_set_reg(state, 0x35, buf);
-+      F = ((freq_KHz * MUL * M / (crystal_KHz / 1000) / 2) -
-+           (freq_KHz * MUL * M / crystal_KHz / 2 * 1000)) * 64 / 1000;
-+      buf = F & 0xff;
-+      _mt_fe_tn_set_reg(state, 0x36, buf);
-+      if (F == 0) {
-+              if (state->tuner_mtt == 0xD1) {
-+                      _mt_fe_tn_set_reg(state, 0x3d, 0xca);
-+              } else if (state->tuner_mtt == 0xE1) {
-+                      _mt_fe_tn_set_reg(state, 0x3d, 0xfe);
-+              } else {
-+                      return 1;
-+              }
-+              _mt_fe_tn_set_reg(state, 0x3e, 0x9c);
-+              _mt_fe_tn_set_reg(state, 0x3f, 0x34);
-+      }
-+      if (F > 0) {
-+              if (state->tuner_mtt == 0xD1) {
-+                      if ((F == 32) || (F == 16) || (F == 48)) {
-+                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
-+                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+                      } else {
-+                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
-+                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+                      }
-+              } else if (state->tuner_mtt == 0xE1) {
-+                      _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
-+                      _mt_fe_tn_set_reg(state, 0x3d, 0x7e);
-+                      _mt_fe_tn_set_reg(state, 0x3f, 0x36);
-+                      _mt_fe_tn_set_reg(state, 0x89, 0x84);
-+                      _mt_fe_tn_get_reg(state, 0x39, &buf);
-+                      buf = buf & 0x1f;
-+                      _mt_fe_tn_set_reg(state, 0x39, buf);
-+                      _mt_fe_tn_get_reg(state, 0x32, &buf);
-+                      buf = buf | 0x02;
-+                      _mt_fe_tn_set_reg(state, 0x32, buf);
-+              } else {
-+                      return 1;
-+              }
-+      }
-+      _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+      if (state->tuner_mtt == 0xD1) {
-+              msleep(5);
-+      } else if (state->tuner_mtt == 0xE1) {
-+              msleep(2);
-+      } else {
-+              return 1;
-+      }
-+      _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+      _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+      _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+      _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+      _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+
-+      return 0;
-+}
-+
-+static int _mt_fe_tn_set_PLL_freq_tc2800(struct m88dc2800_state *state)
-+{
-+      u8 buf, buf1;
-+      u32 freq_thres_div2_KHz, freq_thres_div3r_KHz,
-+          freq_thres_div3_KHz;
-+      const u32 freq_KHz = state->tuner_freq;
-+      if (state->tuner_mtt == 0xD1) {
-+              _mt_fe_tn_set_reg(state, 0x32, 0xe1);
-+              _mt_fe_tn_set_reg(state, 0x33, 0xa6);
-+              _mt_fe_tn_set_reg(state, 0x37, 0x7f);
-+              _mt_fe_tn_set_reg(state, 0x38, 0x20);
-+              _mt_fe_tn_set_reg(state, 0x39, 0x18);
-+              _mt_fe_tn_set_reg(state, 0x40, 0x40);
-+               freq_thres_div2_KHz = 520000;
-+              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+                                         freq_thres_div2_KHz, 0, 0);
-+               msleep(5);
-+              _mt_fe_tn_get_reg(state, 0x3a, &buf);
-+              buf1 = buf;
-+              buf = buf & 0x03;
-+              buf1 = buf1 & 0x01;
-+              if ((buf1 == 0) || (buf == 3)) {
-+                      freq_thres_div2_KHz = 420000;
-+                      _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+                                                 freq_thres_div2_KHz, 0,
-+                                                 0);
-+                      msleep(5);
-+                       _mt_fe_tn_get_reg(state, 0x3a, &buf);
-+                      buf = buf & 0x07;
-+                      if (buf == 5) {
-+                              freq_thres_div2_KHz = 520000;
-+                              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+                                                         freq_thres_div2_KHz,
-+                                                         0, 0);
-+                              msleep(5);
-+                      }
-+              }
-+               _mt_fe_tn_get_reg(state, 0x38, &buf);
-+              _mt_fe_tn_set_reg(state, 0x38, buf);
-+               _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = buf | 0x10;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+              _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+               _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = buf & 0xdf;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+              _mt_fe_tn_set_reg(state, 0x40, 0x0);
-+               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+              _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+              msleep(5);
-+               _mt_fe_tn_get_reg(state, 0x39, &buf);
-+              buf = buf >> 5;
-+              if (buf < 5) {
-+                      _mt_fe_tn_get_reg(state, 0x39, &buf);
-+                      buf = buf | 0xa0;
-+                      buf = buf & 0xbf;
-+                      _mt_fe_tn_set_reg(state, 0x39, buf);
-+                       _mt_fe_tn_get_reg(state, 0x32, &buf);
-+                      buf = buf | 0x02;
-+                      _mt_fe_tn_set_reg(state, 0x32, buf);
-+              }
-+               _mt_fe_tn_get_reg(state, 0x37, &buf);
-+              if (buf > 0x70) {
-+                      buf = 0x7f;
-+                      _mt_fe_tn_set_reg(state, 0x40, 0x40);
-+              }
-+              _mt_fe_tn_set_reg(state, 0x37, buf);
-+                _mt_fe_tn_get_reg(state, 0x38, &buf);
-+              if (buf < 0x0f) {
-+                      buf = (buf & 0x0f) << 2;
-+                      buf = buf + 0x0f;
-+                      _mt_fe_tn_set_reg(state, 0x37, buf);
-+              } else if (buf < 0x1f) {
-+                      buf = buf + 0x0f;
-+                      _mt_fe_tn_set_reg(state, 0x37, buf);
-+              }
-+               _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = (buf | 0x20) & 0xef;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+              msleep(5);
-+              _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+      } else if (state->tuner_mtt == 0xE1) {
-+              freq_thres_div2_KHz = 580000;
-+              freq_thres_div3r_KHz = 500000;
-+              freq_thres_div3_KHz = 440000;
-+              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
-+                                         freq_thres_div2_KHz,
-+                                         freq_thres_div3r_KHz,
-+                                         freq_thres_div3_KHz);
-+              msleep(3);
-+              _mt_fe_tn_get_reg(state, 0x38, &buf);
-+              _mt_fe_tn_set_reg(state, 0x38, buf);
-+              _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+              _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+              msleep(3);
-+              _mt_fe_tn_get_reg(state, 0x38, &buf);
-+              _mt_fe_tn_set_reg(state, 0x38, buf);
-+              _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = buf | 0x10;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
-+              _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+              _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = buf & 0xdf;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x80);
-+              _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+              msleep(3);
-+              _mt_fe_tn_get_reg(state, 0x37, &buf);
-+              _mt_fe_tn_set_reg(state, 0x37, buf);
-+              /*
-+                 if ((freq_KHz == 802000) || (freq_KHz == 826000)) {
-+                 _mt_fe_tn_set_reg(state, 0x37, 0x5e);
-+                 }
-+               */
-+              _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = (buf & 0xef) | 0x30;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+              msleep(2);
-+              _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+      } else {
-+              return 1;
-+      }
-+      return 0;
-+}
-+
-+static int _mt_fe_tn_set_BB_tc2800(struct m88dc2800_state *state)
-+{
-+      return 0;
-+}
-+
-+ static int _mt_fe_tn_set_appendix_tc2800(struct m88dc2800_state *state)
-+
-+{
-+      u8 buf;
-+      const u32 freq_KHz = state->tuner_freq;
-+      if (state->tuner_mtt == 0xD1) {
-+              if ((freq_KHz == 123000) || (freq_KHz == 147000) ||
-+                  (freq_KHz == 171000) || (freq_KHz == 195000)) {
-+                      _mt_fe_tn_set_reg(state, 0x20, 0x1b);
-+              }
-+              if ((freq_KHz == 371000) || (freq_KHz == 419000) ||
-+                  (freq_KHz == 610000) || (freq_KHz == 730000) ||
-+                  (freq_KHz == 754000) || (freq_KHz == 826000)) {
-+                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
-+                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf + 1));
-+              }
-+              if ((freq_KHz == 522000) || (freq_KHz == 578000) ||
-+                  (freq_KHz == 634000) || (freq_KHz == 690000) ||
-+                  (freq_KHz == 834000)) {
-+                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
-+                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf - 1));
-+              }
-+      } else if (state->tuner_mtt == 0xE1) {
-+              _mt_fe_tn_set_reg(state, 0x20, 0xfc);
-+              if (freq_KHz == 123000 || freq_KHz == 147000 ||
-+                  freq_KHz == 171000 || freq_KHz == 195000 ||
-+                  freq_KHz == 219000 || freq_KHz == 267000 ||
-+                  freq_KHz == 291000 || freq_KHz == 339000 ||
-+                  freq_KHz == 387000 || freq_KHz == 435000 ||
-+                  freq_KHz == 482000 || freq_KHz == 530000 ||
-+                  freq_KHz == 722000 ||
-+                  (state->tuner_custom_cfg == 1 && freq_KHz == 315000)) {
-+                      _mt_fe_tn_set_reg(state, 0x20, 0x5c);
-+              }
-+      }
-+      return 0;
-+}
-+
-+ static int _mt_fe_tn_set_DAC_tc2800(struct m88dc2800_state *state)
-+{
-+      u8 buf, tempnumber;
-+      s32 N;
-+      s32 f1f2number, f1, f2, delta1, Totalnum1;
-+      s32 cntT, cntin, NCOI, z0, z1, z2, tmp;
-+      u32 fc, fadc, fsd, f2d;
-+      u32 FreqTrue108_Hz;
-+      s32 M = state->tuner_crystal / 4000;
-+      /* const u8 bandwidth = state->tuner_bandwidth; */
-+      const u16 DAC_fre = 108;
-+      const u32 crystal_KHz = state->tuner_crystal;
-+      const u32 DACFreq_KHz = state->tuner_dac;
-+      const u32 freq_KHz = state->tuner_freq;
-+
-+      if (state->tuner_mtt == 0xE1) {
-+              _mt_fe_tn_get_reg(state, 0x33, &buf);
-+              M = buf & 0x0f;
-+              if (M == 0)
-+                      M = 6;
-+      }
-+      _mt_fe_tn_get_reg(state, 0x34, &buf);
-+      N = buf & 0x07;
-+      _mt_fe_tn_get_reg(state, 0x35, &buf);
-+      N = (N << 8) + buf;
-+      buf = ((N + 256) * crystal_KHz / M / DAC_fre + 500) / 1000;
-+      if (state->tuner_mtt == 0xE1) {
-+              _mt_fe_tn_set_appendix_tc2800(state);
-+              if (freq_KHz == 187000 || freq_KHz == 195000 ||
-+                  freq_KHz == 131000 || freq_KHz == 211000 ||
-+                  freq_KHz == 219000 || freq_KHz == 227000 ||
-+                  freq_KHz == 267000 || freq_KHz == 299000 ||
-+                  freq_KHz == 347000 || freq_KHz == 363000 ||
-+                  freq_KHz == 395000 || freq_KHz == 403000 ||
-+                  freq_KHz == 435000 || freq_KHz == 482000 ||
-+                  freq_KHz == 474000 || freq_KHz == 490000 ||
-+                  freq_KHz == 610000 || freq_KHz == 642000 ||
-+                  freq_KHz == 666000 || freq_KHz == 722000 ||
-+                  freq_KHz == 754000 ||
-+                  ((freq_KHz == 379000 || freq_KHz == 467000 ||
-+                    freq_KHz == 762000) && state->tuner_custom_cfg != 1)) {
-+                      buf = buf + 1;
-+              }
-+              if (freq_KHz == 123000 || freq_KHz == 139000 ||
-+                  freq_KHz == 147000 || freq_KHz == 171000 ||
-+                  freq_KHz == 179000 || freq_KHz == 203000 ||
-+                  freq_KHz == 235000 || freq_KHz == 251000 ||
-+                  freq_KHz == 259000 || freq_KHz == 283000 ||
-+                  freq_KHz == 331000 || freq_KHz == 363000 ||
-+                  freq_KHz == 371000 || freq_KHz == 387000 ||
-+                  freq_KHz == 411000 || freq_KHz == 427000 ||
-+                  freq_KHz == 443000 || freq_KHz == 451000 ||
-+                  freq_KHz == 459000 || freq_KHz == 506000 ||
-+                  freq_KHz == 514000 || freq_KHz == 538000 ||
-+                  freq_KHz == 546000 || freq_KHz == 554000 ||
-+                  freq_KHz == 562000 || freq_KHz == 570000 ||
-+                  freq_KHz == 578000 || freq_KHz == 602000 ||
-+                  freq_KHz == 626000 || freq_KHz == 658000 ||
-+                  freq_KHz == 690000 || freq_KHz == 714000 ||
-+                  freq_KHz == 746000 || freq_KHz == 522000 ||
-+                  freq_KHz == 826000 || freq_KHz == 155000 ||
-+                  freq_KHz == 530000 ||
-+                  ((freq_KHz == 275000 || freq_KHz == 355000) &&
-+                   state->tuner_custom_cfg != 1) ||
-+                  ((freq_KHz == 467000 || freq_KHz == 762000 ||
-+                    freq_KHz == 778000 || freq_KHz == 818000) &&
-+                   state->tuner_custom_cfg == 1)) {
-+                      buf = buf - 1;
-+              }
-+      }
-+       _mt_fe_tn_set_reg(state, 0x0e, buf);
-+      _mt_fe_tn_set_reg(state, 0x0d, buf);
-+      f1f2number =
-+          (((DACFreq_KHz * M * buf) / crystal_KHz) << 16) / (N + 256) +
-+          (((DACFreq_KHz * M * buf) % crystal_KHz) << 16) / ((N + 256) *
-+                                                              crystal_KHz);
-+      _mt_fe_tn_set_reg(state, 0xf1, (f1f2number & 0xff00) >> 8);
-+      _mt_fe_tn_set_reg(state, 0xf2, f1f2number & 0x00ff);
-+       FreqTrue108_Hz =
-+          (N + 256) * crystal_KHz / (M * buf) * 1000 +
-+          (((N + 256) * crystal_KHz) % (M * buf)) * 1000 / (M * buf);
-+      f1 = 4096;
-+      fc = FreqTrue108_Hz;
-+      fadc = fc / 4;
-+      fsd = 27000000;
-+      f2d = state->tuner_bandwidth * 1000 / 2 - 150;
-+      f2 = (fsd / 250) * f2d / ((fc + 500) / 1000);
-+      delta1 = ((f1 - f2) << 15) / f2;
-+      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
-+      cntT = f2;
-+      cntin = Totalnum1;
-+      NCOI = delta1;
-+       z0 = cntin;
-+      z1 = cntT;
-+      z2 = NCOI;
-+      tempnumber = (z0 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xc9, (u8) (tempnumber & 0x0f));
-+      tempnumber = (z0 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xca, tempnumber);
-+       tempnumber = (z1 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xcb, tempnumber);
-+      tempnumber = (z1 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xcc, tempnumber);
-+       tempnumber = (z2 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xcd, tempnumber);
-+      tempnumber = (z2 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xce, tempnumber);
-+       tmp = f1;
-+      f1 = f2;
-+      f2 = tmp / 2;
-+      delta1 = ((f1 - f2) << 15) / f2;
-+      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
-+      NCOI = (f1 << 15) / f2 - (1 << 15);
-+      cntT = f2;
-+      cntin = Totalnum1;
-+      z0 = cntin;
-+      z1 = cntT;
-+      z2 = NCOI;
-+      tempnumber = (z0 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xd9, (u8) (tempnumber & 0x0f));
-+      tempnumber = (z0 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xda, tempnumber);
-+       tempnumber = (z1 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xdb, tempnumber);
-+      tempnumber = (z1 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xdc, tempnumber);
-+       tempnumber = (z2 & 0xff00) >> 8;
-+      _mt_fe_tn_set_reg(state, 0xdd, tempnumber);
-+      tempnumber = (z2 & 0xff);
-+      _mt_fe_tn_set_reg(state, 0xde, tempnumber);
-+
-+      return 0;
-+}
-+
-+static int _mt_fe_tn_preset_tc2800(struct m88dc2800_state *state)
-+{
-+      if (state->tuner_mtt == 0xD1) {
-+              _mt_fe_tn_set_reg(state, 0x19, 0x4a);
-+              _mt_fe_tn_set_reg(state, 0x1b, 0x4b);
-+               _mt_fe_tn_set_reg(state, 0x04, 0x04);
-+              _mt_fe_tn_set_reg(state, 0x17, 0x0d);
-+              _mt_fe_tn_set_reg(state, 0x62, 0x6c);
-+              _mt_fe_tn_set_reg(state, 0x63, 0xf4);
-+              _mt_fe_tn_set_reg(state, 0x1f, 0x0e);
-+              _mt_fe_tn_set_reg(state, 0x6b, 0xf4);
-+              _mt_fe_tn_set_reg(state, 0x14, 0x01);
-+              _mt_fe_tn_set_reg(state, 0x5a, 0x75);
-+              _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+              _mt_fe_tn_set_reg(state, 0x72, 0xe0);
-+              _mt_fe_tn_set_reg(state, 0x70, 0x07);
-+              _mt_fe_tn_set_reg(state, 0x15, 0x7b);
-+              _mt_fe_tn_set_reg(state, 0x55, 0x71);
-+               _mt_fe_tn_set_reg(state, 0x75, 0x55);
-+              _mt_fe_tn_set_reg(state, 0x76, 0xac);
-+              _mt_fe_tn_set_reg(state, 0x77, 0x6c);
-+              _mt_fe_tn_set_reg(state, 0x78, 0x8b);
-+              _mt_fe_tn_set_reg(state, 0x79, 0x42);
-+              _mt_fe_tn_set_reg(state, 0x7a, 0xd2);
-+               _mt_fe_tn_set_reg(state, 0x81, 0x01);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x00);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x02);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x04);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x06);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x08);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x09);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x29);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x49);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x58);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x59);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x98);
-+              _mt_fe_tn_set_reg(state, 0x82, 0x99);
-+              _mt_fe_tn_set_reg(state, 0x10, 0x05);
-+              _mt_fe_tn_set_reg(state, 0x10, 0x0d);
-+              _mt_fe_tn_set_reg(state, 0x11, 0x95);
-+              _mt_fe_tn_set_reg(state, 0x11, 0x9d);
-+              if (state->tuner_loopthrough != 0) {
-+                      _mt_fe_tn_set_reg(state, 0x67, 0x25);
-+              } else {
-+                      _mt_fe_tn_set_reg(state, 0x67, 0x05);
-+              }
-+      } else if (state->tuner_mtt == 0xE1) {
-+              _mt_fe_tn_set_reg(state, 0x1b, 0x47);
-+              if (state->tuner_mode == 0) {   /* DVB-C */
-+                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+                      _mt_fe_tn_set_reg(state, 0x62, 0x2c);
-+                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
-+                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
-+                      _mt_fe_tn_set_reg(state, 0x14, 0x00);
-+              } else {                        /* CTTB */
-+                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+                      _mt_fe_tn_set_reg(state, 0x62, 0x0c);
-+                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
-+                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
-+                      _mt_fe_tn_set_reg(state, 0x14, 0x05);
-+              }
-+              _mt_fe_tn_set_reg(state, 0x6f, 0x00);
-+              _mt_fe_tn_set_reg(state, 0x84, 0x04);
-+              _mt_fe_tn_set_reg(state, 0x5e, 0xbe);
-+              _mt_fe_tn_set_reg(state, 0x87, 0x07);
-+              _mt_fe_tn_set_reg(state, 0x8a, 0x1f);
-+              _mt_fe_tn_set_reg(state, 0x8b, 0x1f);
-+              _mt_fe_tn_set_reg(state, 0x88, 0x30);
-+              _mt_fe_tn_set_reg(state, 0x58, 0x34);
-+              _mt_fe_tn_set_reg(state, 0x61, 0x8c);
-+              _mt_fe_tn_set_reg(state, 0x6a, 0x42);
-+      }
-+      return 0;
-+}
-+
-+static int mt_fe_tn_wakeup_tc2800(struct m88dc2800_state *state)
-+{
-+      _mt_fe_tn_set_reg(state, 0x16, 0xb1);
-+      _mt_fe_tn_set_reg(state, 0x09, 0x7d);
-+      return 0;
-+}
-+
-+  static int mt_fe_tn_sleep_tc2800(struct m88dc2800_state *state)
-+{
-+      _mt_fe_tn_set_reg(state, 0x16, 0xb0);
-+      _mt_fe_tn_set_reg(state, 0x09, 0x6d);
-+      return 0;
-+}
-+
-+ static int mt_fe_tn_init_tc2800(struct m88dc2800_state *state)
-+{
-+      if (state->tuner_init_OK != 1) {
-+              state->tuner_dev_addr = 0x61;   /* TUNER_I2C_ADDR_TC2800 */
-+              state->tuner_freq = 650000;
-+              state->tuner_qam = 0;
-+              state->tuner_mode = 0;  // 0: DVB-C, 1: CTTB
-+              state->tuner_bandwidth = 8;
-+              state->tuner_loopthrough = 0;
-+              state->tuner_crystal = 24000;
-+              state->tuner_dac = 7200;
-+              state->tuner_mtt = 0x00;
-+              state->tuner_custom_cfg = 0;
-+              state->tuner_version = 30022;   /* Driver version number */
-+              state->tuner_time = 12092611;
-+              state->tuner_init_OK = 1;
-+      }
-+      _mt_fe_tn_set_reg(state, 0x2b, 0x46);
-+      _mt_fe_tn_set_reg(state, 0x2c, 0x75);
-+      if (state->tuner_mtt == 0x00) {
-+              u8 tmp = 0;
-+              _mt_fe_tn_get_reg(state, 0x01, &tmp);
-+              printk(KERN_INFO "m88dc2800: tuner id = 0x%02x ", tmp);
-+              switch (tmp) {
-+              case 0x0d:
-+                      state->tuner_mtt = 0xD1;
-+                      break;
-+              case 0x8e:
-+              default:
-+                      state->tuner_mtt = 0xE1;
-+                      break;
-+              }
-+      }
-+      return 0;
-+}
-+
-+ static int mt_fe_tn_set_freq_tc2800(struct m88dc2800_state *state,
-+                                     u32 freq_KHz)
-+{
-+      u8 buf;
-+      u8 buf1;
-+
-+      mt_fe_tn_init_tc2800(state);
-+      state->tuner_freq = freq_KHz;
-+      _mt_fe_tn_set_reg(state, 0x21, freq_KHz > 500000 ? 0xb9 : 0x99);
-+      mt_fe_tn_wakeup_tc2800(state);
-+       _mt_fe_tn_set_reg(state, 0x05, 0x7f);
-+      _mt_fe_tn_set_reg(state, 0x06, 0xf8);
-+       _mt_fe_tn_set_RF_front_tc2800(state);
-+      _mt_fe_tn_set_PLL_freq_tc2800(state);
-+      _mt_fe_tn_set_DAC_tc2800(state);
-+      _mt_fe_tn_set_BB_tc2800(state);
-+      _mt_fe_tn_preset_tc2800(state);
-+       _mt_fe_tn_set_reg(state, 0x05, 0x00);
-+      _mt_fe_tn_set_reg(state, 0x06, 0x00);
-+       if (state->tuner_mtt == 0xD1) {
-+              _mt_fe_tn_set_reg(state, 0x00, 0x01);
-+              _mt_fe_tn_set_reg(state, 0x00, 0x00);
-+               msleep(5);
-+              _mt_fe_tn_set_reg(state, 0x41, 0x00);
-+              msleep(5);
-+              _mt_fe_tn_set_reg(state, 0x41, 0x02);
-+
-+              _mt_fe_tn_get_reg(state, 0x69, &buf1);
-+              buf1 = buf1 & 0x0f;
-+              _mt_fe_tn_get_reg(state, 0x61, &buf);
-+              buf = buf & 0x0f;
-+              if (buf == 0x0c)
-+                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
-+              if (buf1 > 0x02) {
-+                      if (freq_KHz > 600000)
-+                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
-+                      else if (freq_KHz > 500000)
-+                              _mt_fe_tn_set_reg(state, 0x66, 0x64);
-+                      else
-+                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+              }               
-+              if (buf1 < 0x03) {
-+                      if (freq_KHz > 800000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x64);
-+                      else if (freq_KHz > 600000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      else if (freq_KHz > 500000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      else if (freq_KHz > 300000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+                      else if (freq_KHz > 220000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      else if (freq_KHz > 110000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+                      else
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      msleep(5);
-+              } else if (buf < 0x0c) {
-+                      if (freq_KHz > 800000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+                      else if (freq_KHz > 600000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+                      else if (freq_KHz > 500000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x34);
-+                      else if (freq_KHz > 300000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
-+                      else if (freq_KHz > 220000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      else if (freq_KHz > 110000)
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
-+                      else
-+                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
-+                      msleep(5);
-+              }
-+      } else if ((state->tuner_mtt == 0xE1)) {
-+              _mt_fe_tn_set_reg(state, 0x00, 0x01);
-+              _mt_fe_tn_set_reg(state, 0x00, 0x00);
-+               msleep(20);
-+               _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = (buf & 0xef) | 0x28;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               msleep(50);
-+              _mt_fe_tn_get_reg(state, 0x38, &buf);
-+              _mt_fe_tn_set_reg(state, 0x38, buf);
-+              _mt_fe_tn_get_reg(state, 0x32, &buf);
-+              buf = (buf & 0xf7) | 0x10;
-+              _mt_fe_tn_set_reg(state, 0x32, buf);
-+               msleep(10);
-+               _mt_fe_tn_get_reg(state, 0x69, &buf);
-+              buf = buf & 0x03;
-+              _mt_fe_tn_set_reg(state, 0x2a, buf);
-+              if (buf > 0) {
-+                      msleep(20);
-+                      _mt_fe_tn_get_reg(state, 0x84, &buf);
-+                      buf = buf & 0x1f;
-+                      _mt_fe_tn_set_reg(state, 0x68, 0x0a);
-+                      _mt_fe_tn_get_reg(state, 0x88, &buf1);
-+                      buf1 = buf1 & 0x1f;
-+                      if (buf <= buf1)
-+                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
-+                      else
-+                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
-+              } else {
-+                      if (freq_KHz <= 600000)
-+                              _mt_fe_tn_set_reg(state, 0x68, 0x0c);
-+                      else
-+                              _mt_fe_tn_set_reg(state, 0x68, 0x0e);
-+                      _mt_fe_tn_set_reg(state, 0x30, 0xfb);
-+                      _mt_fe_tn_set_reg(state, 0x30, 0xff);
-+                      _mt_fe_tn_set_reg(state, 0x31, 0x04);
-+                      _mt_fe_tn_set_reg(state, 0x31, 0x00);
-+              }
-+              if (state->tuner_loopthrough != 0) {
-+                      _mt_fe_tn_get_reg(state, 0x28, &buf);
-+                      if (buf == 0) {
-+                              _mt_fe_tn_set_reg(state, 0x28, 0xff);
-+                              _mt_fe_tn_get_reg(state, 0x61, &buf);
-+                              buf = buf & 0x0f;
-+                              if (buf > 9)
-+                                      _mt_fe_tn_set_reg(state, 0x67, 0x74);
-+                              else if (buf > 6)
-+                                      _mt_fe_tn_set_reg(state, 0x67, 0x64);
-+                              else if (buf > 3)
-+                                      _mt_fe_tn_set_reg(state, 0x67, 0x54);
-+                              else
-+                                      _mt_fe_tn_set_reg(state, 0x67, 0x44);
-+                      }
-+              } else {
-+                      _mt_fe_tn_set_reg(state, 0x67, 0x34);
-+              }
-+      } else {
-+              return 1;
-+      }
-+      return 0;
-+}
-+
-+
-+/*
-+static int mt_fe_tn_set_BB_filter_band_tc2800(struct m88dc2800_state *state,
-+                                            u8 bandwidth)
-+{
-+      u8 buf, tmp;
-+
-+      _mt_fe_tn_get_reg(state, 0x53, &tmp);
-+
-+      if (bandwidth == 6)
-+              buf = 0x01 << 1;
-+      else if (bandwidth == 7)
-+              buf = 0x02 << 1;
-+      else if (bandwidth == 8)
-+              buf = 0x04 << 1;
-+      else
-+              buf = 0x04 << 1;
-+
-+      tmp &= 0xf1;
-+      tmp |= buf;
-+      _mt_fe_tn_set_reg(state, 0x53, tmp);
-+      state->tuner_bandwidth = bandwidth;
-+      return 0;
-+}
-+*/
-+
-+static s32 mt_fe_tn_get_signal_strength_tc2800(struct m88dc2800_state
-+                                             *state)
-+{
-+      s32 level = -107;
-+      s32 tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
-+      s32 val1, val2, val;
-+      s32 result2, result3, result4, result5, result6;
-+      s32 append;
-+      u8 tmp;
-+      s32 freq_KHz = (s32) state->tuner_freq;
-+      if (state->tuner_mtt == 0xD1) {
-+              _mt_fe_tn_get_reg(state, 0x61, &tmp);
-+              tmp1 = tmp & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x69, &tmp);
-+              tmp2 = tmp & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x73, &tmp);
-+              tmp3 = tmp & 0x07;
-+               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
-+              tmp4 = (tmp >> 4) & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
-+              tmp5 = tmp & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x7f, &tmp);
-+              tmp6 = (tmp >> 5) & 0x01;
-+              if (tmp1 > 6) {
-+                      val1 = 0;
-+                      if (freq_KHz <= 200000) {
-+                              val2 = (tmp1 - 6) * 267;
-+                      } else if (freq_KHz <= 600000) {
-+                              val2 = (tmp1 - 6) * 280;
-+                      } else {
-+                              val2 = (tmp1 - 6) * 290;
-+                      }
-+                      val = val1 + val2;
-+              } else {
-+                      if (tmp1 == 0) {
-+                              val1 = -550;
-+                      } else {
-+                              val1 = 0;
-+                      }
-+                      if ((tmp1 < 4) && (freq_KHz >= 506000)) {
-+                              val1 = -850;
-+                      }
-+                      val2 = 0;
-+                      val = val1 + val2;
-+              }
-+              if (freq_KHz <= 95000) {
-+                      result2 = tmp2 * 289;
-+              } else if (freq_KHz <= 155000) {
-+                      result2 = tmp2 * 278;
-+              } else if (freq_KHz <= 245000) {
-+                      result2 = tmp2 * 267;
-+              } else if (freq_KHz <= 305000) {
-+                      result2 = tmp2 * 256;
-+              } else if (freq_KHz <= 335000) {
-+                      result2 = tmp2 * 244;
-+              } else if (freq_KHz <= 425000) {
-+                      result2 = tmp2 * 233;
-+              } else if (freq_KHz <= 575000) {
-+                      result2 = tmp2 * 222;
-+              } else if (freq_KHz <= 665000) {
-+                      result2 = tmp2 * 211;
-+              } else {
-+                      result2 = tmp2 * 200;
-+              }
-+              result3 = (6 - tmp3) * 100;
-+              result4 = 300 * tmp4;
-+              result5 = 50 * tmp5;
-+              result6 = 300 * tmp6;
-+              if (freq_KHz < 105000) {
-+                      append = -450;
-+              } else if (freq_KHz <= 227000) {
-+                      append = -4 * (freq_KHz / 1000 - 100) + 150;
-+              } else if (freq_KHz <= 305000) {
-+                      append = -4 * (freq_KHz / 1000 - 100);
-+              } else if (freq_KHz <= 419000) {
-+                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17 + 130;
-+              } else if (freq_KHz <= 640000) {
-+                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17;
-+              } else {
-+                      append = -500;
-+              }
-+              level = append - (val + result2 + result3 + result4 +
-+                                result5 + result6);
-+              level /= 100;
-+      } else if (state->tuner_mtt == 0xE1) {
-+              _mt_fe_tn_get_reg(state, 0x61, &tmp);
-+              tmp1 = tmp & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x84, &tmp);
-+              tmp2 = tmp & 0x1f;
-+               _mt_fe_tn_get_reg(state, 0x69, &tmp);
-+              tmp3 = tmp & 0x03;
-+               _mt_fe_tn_get_reg(state, 0x73, &tmp);
-+              tmp4 = tmp & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
-+              tmp5 = (tmp >> 4) & 0x0f;
-+               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
-+              tmp6 = tmp & 0x0f;
-+              if (freq_KHz < 151000) {
-+                      result2 = (1150 - freq_KHz / 100) * 163 / 33 + 4230;
-+                      result3 = (1150 - freq_KHz / 100) * 115 / 33 + 1850;
-+                      result4 = -3676 * (freq_KHz / 1000) / 100 + 6115;
-+              } else if (freq_KHz < 257000) {
-+                      result2 = (1540 - freq_KHz / 100) * 11 / 4 + 3870;
-+                      result3 = (1540 - freq_KHz / 100) * 205 / 96 + 2100;
-+                      result4 = -21 * freq_KHz / 1000 + 5084;
-+              } else if (freq_KHz < 305000) {
-+                      result2 = (2620 - freq_KHz / 100) * 5 / 3 + 2770;
-+                      result3 = (2620 - freq_KHz / 100) * 10 / 7 + 1700;
-+                      result4 = 650;
-+              } else if (freq_KHz < 449000) {
-+                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
-+                      result3 = (3100 - freq_KHz / 100) * 5 / 3 + 10000;
-+                      result4 = 134 * freq_KHz / 10000 + 11875;
-+              } else {
-+                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
-+                      result3 = 8400;
-+                      result4 = 5300;
-+              }
-+              if (tmp1 > 6) {
-+                      val1 = result2;
-+                      val2 = 2900;
-+                      val = 500;
-+              } else if (tmp1 > 0) {
-+                      val1 = result3;
-+                      val2 = 2700;
-+                      val = 500;
-+              } else {
-+                      val1 = result4;
-+                      val2 = 2700;
-+                      val = 400;
-+              }
-+              level = val1 - (val2 * tmp1 + 500 * tmp2 + 3000 * tmp3 -
-+                          500 * tmp4 + 3000 * tmp5 + val * tmp6) - 1000;
-+              level /= 1000;
-+      }
-+      return level;
-+}
-+
-+
-+/* m88dc2800 operation functions */
-+u8 M88DC2000GetLock(struct m88dc2800_state * state)
-+{
-+      u8 u8ret = 0;
-+      if (ReadReg(state, 0x80) < 0x06) {
-+              if ((ReadReg(state, 0xdf) & 0x80) == 0x80
-+                   &&(ReadReg(state, 0x91) & 0x23) == 0x03
-+                   &&(ReadReg(state, 0x43) & 0x08) == 0x08)
-+                      u8ret = 1;
-+              else
-+                      u8ret = 0;
-+      } else {
-+              if ((ReadReg(state, 0x85) & 0x08) == 0x08)
-+                      u8ret = 1;
-+              else
-+                      u8ret = 0;
-+      }
-+      dprintk("%s, lock=%d\n", __func__, u8ret);
-+      return u8ret;
-+}
-+
-+static int M88DC2000SetTsType(struct m88dc2800_state *state, u8 type)
-+{
-+      u8 regC2H;
-+
-+      if (type == 3) {
-+              WriteReg(state, 0x84, 0x6A);
-+              WriteReg(state, 0xC0, 0x43);
-+              WriteReg(state, 0xE2, 0x06);
-+              regC2H = ReadReg(state, 0xC2);
-+              regC2H &= 0xC0;
-+              regC2H |= 0x1B;
-+              WriteReg(state, 0xC2, regC2H);
-+              WriteReg(state, 0xC1, 0x60);    /* common interface */
-+      } else if (type == 1) {
-+              WriteReg(state, 0x84, 0x6A);
-+              WriteReg(state, 0xC0, 0x47);    /* serial format */
-+              WriteReg(state, 0xE2, 0x02);
-+              regC2H = ReadReg(state, 0xC2);
-+              regC2H &= 0xC7;
-+              WriteReg(state, 0xC2, regC2H);
-+              WriteReg(state, 0xC1, 0x00);
-+      } else {
-+              WriteReg(state, 0x84, 0x6C);
-+              WriteReg(state, 0xC0, 0x43);    /* parallel format */
-+              WriteReg(state, 0xE2, 0x06);
-+              regC2H = ReadReg(state, 0xC2);
-+              regC2H &= 0xC7;
-+              WriteReg(state, 0xC2, regC2H);
-+              WriteReg(state, 0xC1, 0x00);
-+      }
-+      return 0;
-+}
-+
-+static int M88DC2000RegInitial_TC2800(struct m88dc2800_state *state)
-+{
-+      u8 RegE3H, RegE4H;
-+
-+      WriteReg(state, 0x00, 0x48);
-+      WriteReg(state, 0x01, 0x09);
-+      WriteReg(state, 0xFB, 0x0A);
-+      WriteReg(state, 0xFC, 0x0B);
-+      WriteReg(state, 0x02, 0x0B);
-+      WriteReg(state, 0x03, 0x18);
-+      WriteReg(state, 0x05, 0x0D);
-+      WriteReg(state, 0x36, 0x80);
-+      WriteReg(state, 0x43, 0x40);
-+      WriteReg(state, 0x55, 0x7A);
-+      WriteReg(state, 0x56, 0xD9);
-+      WriteReg(state, 0x57, 0xDF);
-+      WriteReg(state, 0x58, 0x39);
-+      WriteReg(state, 0x5A, 0x00);
-+      WriteReg(state, 0x5C, 0x71);
-+      WriteReg(state, 0x5D, 0x23);
-+      WriteReg(state, 0x86, 0x40);
-+      WriteReg(state, 0xF9, 0x08);
-+      WriteReg(state, 0x61, 0x40);
-+      WriteReg(state, 0x62, 0x0A);
-+      WriteReg(state, 0x90, 0x06);
-+      WriteReg(state, 0xDE, 0x00);
-+      WriteReg(state, 0xA0, 0x03);
-+      WriteReg(state, 0xDF, 0x81);
-+      WriteReg(state, 0xFA, 0x40);
-+      WriteReg(state, 0x37, 0x10);
-+      WriteReg(state, 0xF0, 0x40);
-+      WriteReg(state, 0xF2, 0x9C);
-+      WriteReg(state, 0xF3, 0x40);
-+      RegE3H = ReadReg(state, 0xE3);
-+      RegE4H = ReadReg(state, 0xE4);
-+      if (((RegE3H & 0xC0) == 0x00) && ((RegE4H & 0xC0) == 0x00)) {
-+              WriteReg(state, 0x30, 0xFF);
-+              WriteReg(state, 0x31, 0x00);
-+              WriteReg(state, 0x32, 0x00);
-+              WriteReg(state, 0x33, 0x00);
-+              WriteReg(state, 0x35, 0x32);
-+              WriteReg(state, 0x40, 0x00);
-+              WriteReg(state, 0x41, 0x10);
-+              WriteReg(state, 0xF1, 0x02);
-+              WriteReg(state, 0xF4, 0x04);
-+              WriteReg(state, 0xF5, 0x00);
-+              WriteReg(state, 0x42, 0x14);
-+              WriteReg(state, 0xE1, 0x25);
-+      } else if (((RegE3H & 0xC0) == 0x80) && ((RegE4H & 0xC0) == 0x40)) {
-+              WriteReg(state, 0x30, 0xFF);
-+              WriteReg(state, 0x31, 0x00);
-+              WriteReg(state, 0x32, 0x00);
-+              WriteReg(state, 0x33, 0x00);
-+              WriteReg(state, 0x35, 0x32);
-+              WriteReg(state, 0x39, 0x00);
-+              WriteReg(state, 0x3A, 0x00);
-+              WriteReg(state, 0x40, 0x00);
-+              WriteReg(state, 0x41, 0x10);
-+              WriteReg(state, 0xF1, 0x00);
-+              WriteReg(state, 0xF4, 0x00);
-+              WriteReg(state, 0xF5, 0x40);
-+              WriteReg(state, 0x42, 0x14);
-+              WriteReg(state, 0xE1, 0x25);
-+      } else if ((RegE3H == 0x80 || RegE3H == 0x81)
-+                  && (RegE4H == 0x80 || RegE4H == 0x81)) {
-+              WriteReg(state, 0x30, 0xFF);
-+              WriteReg(state, 0x31, 0x00);
-+              WriteReg(state, 0x32, 0x00);
-+              WriteReg(state, 0x33, 0x00);
-+              WriteReg(state, 0x35, 0x32);
-+              WriteReg(state, 0x39, 0x00);
-+              WriteReg(state, 0x3A, 0x00);
-+              WriteReg(state, 0xF1, 0x00);
-+              WriteReg(state, 0xF4, 0x00);
-+              WriteReg(state, 0xF5, 0x40);
-+              WriteReg(state, 0x42, 0x24);
-+              WriteReg(state, 0xE1, 0x25);
-+              WriteReg(state, 0x92, 0x7F);
-+              WriteReg(state, 0x93, 0x91);
-+              WriteReg(state, 0x95, 0x00);
-+              WriteReg(state, 0x2B, 0x33);
-+              WriteReg(state, 0x2A, 0x2A);
-+              WriteReg(state, 0x2E, 0x80);
-+              WriteReg(state, 0x25, 0x25);
-+              WriteReg(state, 0x2D, 0xFF);
-+              WriteReg(state, 0x26, 0xFF);
-+              WriteReg(state, 0x27, 0x00);
-+              WriteReg(state, 0x24, 0x25);
-+              WriteReg(state, 0xA4, 0xFF);
-+              WriteReg(state, 0xA3, 0x0D);
-+      } else {
-+              WriteReg(state, 0x30, 0xFF);
-+              WriteReg(state, 0x31, 0x00);
-+              WriteReg(state, 0x32, 0x00);
-+              WriteReg(state, 0x33, 0x00);
-+              WriteReg(state, 0x35, 0x32);
-+              WriteReg(state, 0x39, 0x00);
-+              WriteReg(state, 0x3A, 0x00);
-+              WriteReg(state, 0xF1, 0x00);
-+              WriteReg(state, 0xF4, 0x00);
-+              WriteReg(state, 0xF5, 0x40);
-+              WriteReg(state, 0x42, 0x24);
-+              WriteReg(state, 0xE1, 0x27);
-+              WriteReg(state, 0x92, 0x7F);
-+              WriteReg(state, 0x93, 0x91);
-+              WriteReg(state, 0x95, 0x00);
-+              WriteReg(state, 0x2B, 0x33);
-+              WriteReg(state, 0x2A, 0x2A);
-+              WriteReg(state, 0x2E, 0x80);
-+              WriteReg(state, 0x25, 0x25);
-+              WriteReg(state, 0x2D, 0xFF);
-+              WriteReg(state, 0x26, 0xFF);
-+              WriteReg(state, 0x27, 0x00);
-+              WriteReg(state, 0x24, 0x25);
-+              WriteReg(state, 0xA4, 0xFF);
-+              WriteReg(state, 0xA3, 0x10);
-+      }
-+      WriteReg(state, 0xF6, 0x4E);
-+      WriteReg(state, 0xF7, 0x20);
-+      WriteReg(state, 0x89, 0x02);
-+      WriteReg(state, 0x14, 0x08);
-+      WriteReg(state, 0x6F, 0x0D);
-+      WriteReg(state, 0x10, 0xFF);
-+      WriteReg(state, 0x11, 0x00);
-+      WriteReg(state, 0x12, 0x30);
-+      WriteReg(state, 0x13, 0x23);
-+      WriteReg(state, 0x60, 0x00);
-+      WriteReg(state, 0x69, 0x00);
-+      WriteReg(state, 0x6A, 0x03);
-+      WriteReg(state, 0xE0, 0x75);
-+      WriteReg(state, 0x8D, 0x29);
-+      WriteReg(state, 0x4E, 0xD8);
-+      WriteReg(state, 0x88, 0x80);
-+      WriteReg(state, 0x52, 0x79);
-+      WriteReg(state, 0x53, 0x03);
-+      WriteReg(state, 0x59, 0x30);
-+      WriteReg(state, 0x5E, 0x02);
-+      WriteReg(state, 0x5F, 0x0F);
-+      WriteReg(state, 0x71, 0x03);
-+      WriteReg(state, 0x72, 0x12);
-+      WriteReg(state, 0x73, 0x12);
-+
-+      return 0;
-+}
-+
-+static int M88DC2000AutoTSClock_P(struct m88dc2800_state *state, u32 sym,
-+                                u16 qam)
-+{
-+      u32 dataRate;
-+      u8 clk_div, value;
-+      printk(KERN_INFO
-+             "m88dc2800: M88DC2000AutoTSClock_P, symrate=%d qam=%d\n",
-+             sym, qam);
-+      switch (qam) {
-+      case 16:
-+              dataRate = 4;
-+              break;
-+      case 32:
-+              dataRate = 5;
-+              break;
-+      case 128:
-+              dataRate = 7;
-+              break;
-+      case 256:
-+              dataRate = 8;
-+              break;
-+      case 64:
-+      default:
-+              dataRate = 6;
-+              break;
-+      }
-+      dataRate *= sym * 105;
-+      dataRate /= 800;
-+      if (dataRate <= 4115)
-+              clk_div = 0x05;
-+      else if (dataRate <= 4800)
-+              clk_div = 0x04;
-+      else if (dataRate <= 5760)
-+              clk_div = 0x03;
-+      else if (dataRate <= 7200)
-+              clk_div = 0x02;
-+      else if (dataRate <= 9600)
-+              clk_div = 0x01;
-+      else
-+              clk_div = 0x00;
-+      value = ReadReg(state, 0xC2);
-+      value &= 0xc0;
-+      value |= clk_div;
-+      WriteReg(state, 0xC2, value);
-+      return 0;
-+}
-+
-+static int M88DC2000AutoTSClock_C(struct m88dc2800_state *state, u32 sym,
-+                                u16 qam)
-+{
-+      u32 dataRate;
-+      u8 clk_div, value;
-+      printk(KERN_INFO
-+             "m88dc2800: M88DC2000AutoTSClock_C, symrate=%d qam=%d\n",
-+             sym, qam);
-+      switch (qam) {
-+      case 16:
-+              dataRate = 4;
-+              break;
-+      case 32:
-+              dataRate = 5;
-+              break;
-+      case 128:
-+              dataRate = 7;
-+              break;
-+      case 256:
-+              dataRate = 8;
-+              break;
-+      case 64:
-+      default:
-+              dataRate = 6;
-+              break;
-+      }
-+      dataRate *= sym * 105;
-+      dataRate /= 800;
-+      if (dataRate <= 4115)
-+              clk_div = 0x3F;
-+      else if (dataRate <= 4800)
-+              clk_div = 0x36;
-+      else if (dataRate <= 5760)
-+              clk_div = 0x2D;
-+      else if (dataRate <= 7200)
-+              clk_div = 0x24;
-+      else if (dataRate <= 9600)
-+              clk_div = 0x1B;
-+      else
-+              clk_div = 0x12;
-+      value = ReadReg(state, 0xC2);
-+      value &= 0xc0;
-+      value |= clk_div;
-+      WriteReg(state, 0xC2, value);
-+      return 0;
-+}
-+
-+static int M88DC2000SetTxMode(struct m88dc2800_state *state, u8 inverted,
-+                            u8 j83)
-+{
-+      u8 value = 0;
-+      if (inverted)
-+              value |= 0x08;  /*      spectrum inverted       */
-+      if (j83)
-+              value |= 0x01;  /*      J83C                    */
-+      WriteReg(state, 0x83, value);
-+      return 0;
-+}
-+
-+static int M88DC2000SoftReset(struct m88dc2800_state *state)
-+{
-+      WriteReg(state, 0x80, 0x01);
-+      WriteReg(state, 0x82, 0x00);
-+      msleep(1);
-+      WriteReg(state, 0x80, 0x00);
-+      return 0;
-+}
-+
-+static int M88DC2000SetSym(struct m88dc2800_state *state, u32 sym, u32 xtal)
-+{
-+      u8 value;
-+      u8 reg6FH, reg12H;
-+      u64 fValue;
-+      u32 dwValue;
-+
-+      printk(KERN_INFO "%s, sym=%d, xtal=%d\n", __func__, sym, xtal);
-+      fValue = 4294967296 * (sym + 10);
-+      do_div(fValue, xtal);
-+
-+      /* fValue  = 4294967296 * (sym + 10) / xtal; */
-+      dwValue = (u32) fValue;
-+      printk(KERN_INFO "%s, fvalue1=%x\n", __func__, dwValue);
-+      WriteReg(state, 0x58, (u8) ((dwValue >> 24) & 0xff));
-+      WriteReg(state, 0x57, (u8) ((dwValue >> 16) & 0xff));
-+      WriteReg(state, 0x56, (u8) ((dwValue >> 8) & 0xff));
-+      WriteReg(state, 0x55, (u8) ((dwValue >> 0) & 0xff));
-+
-+      /* fValue = 2048 * xtal / sym; */
-+      fValue = 2048 * xtal;
-+      do_div(fValue, sym);
-+      dwValue = (u32) fValue;
-+      printk(KERN_INFO "%s, fvalue2=%x\n", __func__, dwValue);
-+      WriteReg(state, 0x5D, (u8) ((dwValue >> 8) & 0xff));
-+      WriteReg(state, 0x5C, (u8) ((dwValue >> 0) & 0xff));
-+      value = ReadReg(state, 0x5A);
-+      if (((dwValue >> 16) & 0x0001) == 0)
-+              value &= 0x7F;
-+      else
-+              value |= 0x80;
-+      WriteReg(state, 0x5A, value);
-+      value = ReadReg(state, 0x89);
-+      if (sym <= 1800)
-+              value |= 0x01;
-+      else
-+              value &= 0xFE;
-+      WriteReg(state, 0x89, value);
-+      if (sym >= 6700) {
-+              reg6FH = 0x0D;
-+              reg12H = 0x30;
-+      } else if (sym >= 4000) {
-+              fValue = 22 * 4096 / sym;
-+              reg6FH = (u8) fValue;
-+              reg12H = 0x30;
-+      } else if (sym >= 2000) {
-+              fValue = 14 * 4096 / sym;
-+              reg6FH = (u8) fValue;
-+              reg12H = 0x20;
-+      } else {
-+              fValue = 7 * 4096 / sym;
-+              reg6FH = (u8) fValue;
-+              reg12H = 0x10;
-+      }
-+      WriteReg(state, 0x6F, reg6FH);
-+      WriteReg(state, 0x12, reg12H);
-+      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+             && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+              if (sym < 3000) {
-+                      WriteReg(state, 0x6C, 0x16);
-+                      WriteReg(state, 0x6D, 0x10);
-+                      WriteReg(state, 0x6E, 0x18);
-+              } else {
-+                      WriteReg(state, 0x6C, 0x14);
-+                      WriteReg(state, 0x6D, 0x0E);
-+                      WriteReg(state, 0x6E, 0x36);
-+              }
-+      } else {
-+              WriteReg(state, 0x6C, 0x16);
-+              WriteReg(state, 0x6D, 0x10);
-+              WriteReg(state, 0x6E, 0x18);
-+      }
-+      return 0;
-+}
-+
-+static int M88DC2000SetQAM(struct m88dc2800_state *state, u16 qam)
-+{
-+      u8 reg00H, reg4AH, regC2H, reg44H, reg4CH, reg4DH, reg74H, value;
-+      u8 reg8BH, reg8EH;
-+      printk(KERN_INFO "%s, qam=%d\n", __func__, qam);
-+      regC2H = ReadReg(state, 0xC2);
-+      regC2H &= 0xF8;
-+      switch (qam) {
-+      case 16:                /* 16 QAM */
-+              reg00H = 0x08;
-+              reg4AH = 0x0F;
-+              regC2H |= 0x02;
-+              reg44H = 0xAA;
-+              reg4CH = 0x0C;
-+              reg4DH = 0xF7;
-+              reg74H = 0x0E;
-+              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+                      reg8BH = 0x5A;
-+                      reg8EH = 0xBD;
-+              } else {
-+                      reg8BH = 0x5B;
-+                      reg8EH = 0x9D;
-+              }
-+              WriteReg(state, 0x6E, 0x18);
-+              break;
-+      case 32:                /* 32 QAM */
-+              reg00H = 0x18;
-+              reg4AH = 0xFB;
-+              regC2H |= 0x02;
-+              reg44H = 0xAA;
-+              reg4CH = 0x0C;
-+              reg4DH = 0xF7;
-+              reg74H = 0x0E;
-+              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+                      reg8BH = 0x5A;
-+                      reg8EH = 0xBD;
-+              } else {
-+                      reg8BH = 0x5B;
-+                      reg8EH = 0x9D;
-+              }
-+              WriteReg(state, 0x6E, 0x18);
-+              break;
-+      case 64:                /* 64 QAM */
-+              reg00H = 0x48;
-+              reg4AH = 0xCD;
-+              regC2H |= 0x02;
-+              reg44H = 0xAA;
-+              reg4CH = 0x0C;
-+              reg4DH = 0xF7;
-+              reg74H = 0x0E;
-+              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+                      reg8BH = 0x5A;
-+                      reg8EH = 0xBD;
-+              } else {
-+                      reg8BH = 0x5B;
-+                      reg8EH = 0x9D;
-+              }
-+              break;
-+      case 128:               /* 128 QAM */
-+              reg00H = 0x28;
-+              reg4AH = 0xFF;
-+              regC2H |= 0x02;
-+              reg44H = 0xA9;
-+              reg4CH = 0x08;
-+              reg4DH = 0xF5;
-+              reg74H = 0x0E;
-+              reg8BH = 0x5B;
-+              reg8EH = 0x9D;
-+              break;
-+      case 256:               /* 256 QAM */
-+              reg00H = 0x38;
-+              reg4AH = 0xCD;
-+              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+                      regC2H |= 0x02;
-+              } else {
-+                      regC2H |= 0x01;
-+              }
-+              reg44H = 0xA9;
-+              reg4CH = 0x08;
-+              reg4DH = 0xF5;
-+              reg74H = 0x0E;
-+              reg8BH = 0x5B;
-+              reg8EH = 0x9D;
-+              break;
-+      default:                /* 64 QAM */
-+              reg00H = 0x48;
-+              reg4AH = 0xCD;
-+              regC2H |= 0x02;
-+              reg44H = 0xAA;
-+              reg4CH = 0x0C;
-+              reg4DH = 0xF7;
-+              reg74H = 0x0E;
-+              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
-+                      reg8BH = 0x5A;
-+                      reg8EH = 0xBD;
-+              } else {
-+                      reg8BH = 0x5B;
-+                      reg8EH = 0x9D;
-+              }
-+              break;
-+      }
-+      WriteReg(state, 0x00, reg00H);
-+      value = ReadReg(state, 0x88);
-+      value |= 0x08;
-+      WriteReg(state, 0x88, value);
-+      WriteReg(state, 0x4B, 0xFF);
-+      WriteReg(state, 0x4A, reg4AH);
-+      value &= 0xF7;
-+      WriteReg(state, 0x88, value);
-+      WriteReg(state, 0xC2, regC2H);
-+      WriteReg(state, 0x44, reg44H);
-+      WriteReg(state, 0x4C, reg4CH);
-+      WriteReg(state, 0x4D, reg4DH);
-+      WriteReg(state, 0x74, reg74H);
-+      WriteReg(state, 0x8B, reg8BH);
-+      WriteReg(state, 0x8E, reg8EH);
-+      return 0;
-+}
-+
-+static int M88DC2000WriteTuner_TC2800(struct m88dc2800_state *state,
-+                                    u32 freq_KHz)
-+{
-+      printk(KERN_INFO "%s, freq=%d KHz\n", __func__, freq_KHz);
-+      return mt_fe_tn_set_freq_tc2800(state, freq_KHz);
-+}
-+
-+static int m88dc2800_init(struct dvb_frontend *fe)
-+{
-+      dprintk("%s()\n", __func__);
-+      return 0;
-+}
-+
-+static int m88dc2800_set_parameters(struct dvb_frontend *fe)
-+{
-+      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-+      u8 is_annex_c, is_update;
-+      u16 temp_qam;
-+      s32 waiting_time;
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+
-+      is_annex_c = c->delivery_system == SYS_DVBC_ANNEX_C ? 1 : 0;
-+
-+      switch (c->modulation) {
-+      case QAM_16:
-+              temp_qam = 16;
-+              break;
-+      case QAM_32:
-+              temp_qam = 32;
-+              break;
-+      case QAM_128:
-+              temp_qam = 128;
-+              break;
-+      case QAM_256:
-+              temp_qam = 256;
-+              break;
-+      default:                /* QAM_64 */
-+              temp_qam = 64;
-+              break;
-+      }
-+
-+      state->inverted = c->inversion == INVERSION_ON ? 1 : 0;
-+
-+      printk(KERN_INFO
-+           "m88dc2800: state, freq=%d qam=%d sym=%d inverted=%d xtal=%d\n",
-+           state->freq, state->qam, state->sym, state->inverted,
-+           state->xtal);
-+      printk(KERN_INFO
-+           "m88dc2800: set frequency to %d qam=%d symrate=%d annex-c=%d\n",
-+           c->frequency, temp_qam, c->symbol_rate, is_annex_c);
-+
-+      is_update = 0;
-+      WriteReg(state, 0x80, 0x01);
-+      if (c->frequency != state->freq) {
-+              M88DC2000WriteTuner_TC2800(state, c->frequency / 1000);
-+              state->freq = c->frequency;
-+      }
-+      if (c->symbol_rate != state->sym) {
-+              M88DC2000SetSym(state, c->symbol_rate / 1000, state->xtal);
-+              state->sym = c->symbol_rate;
-+              is_update = 1;
-+      }
-+      if (temp_qam != state->qam) {
-+              M88DC2000SetQAM(state, temp_qam);
-+              state->qam = temp_qam;
-+              is_update = 1;
-+      }
-+
-+      if (is_update != 0) {
-+              if (state->config->ts_mode == 3)
-+                      M88DC2000AutoTSClock_C(state, state->sym / 1000,
-+                                             temp_qam);
-+              else
-+                      M88DC2000AutoTSClock_P(state, state->sym / 1000,
-+                                             temp_qam);
-+      }
-+
-+      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
-+      M88DC2000SoftReset(state);
-+      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
-+          && ((ReadReg(state, 0xE4) & 0x80) == 0x80))
-+              waiting_time = 800;
-+      else
-+              waiting_time = 500;
-+      while (waiting_time > 0) {
-+              msleep(50);
-+              waiting_time -= 50;
-+              if (M88DC2000GetLock(state))
-+                      return 0;
-+      }
-+
-+      state->inverted = (state->inverted != 0) ? 0 : 1;
-+      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
-+      M88DC2000SoftReset(state);
-+      if (((ReadReg(state, 0xE3) & 0x80) == 0x80) &&
-+          ((ReadReg(state, 0xE4) & 0x80) == 0x80))
-+              waiting_time = 800;
-+      else
-+              waiting_time = 500;
-+      while (waiting_time > 0) {
-+              msleep(50);
-+              waiting_time -= 50;
-+              if (M88DC2000GetLock(state))
-+                      return 0;
-+      }
-+      return 0;
-+}
-+
-+static int m88dc2800_read_status(struct dvb_frontend *fe,
-+                               fe_status_t * status)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      *status = 0;
-+
-+      if (M88DC2000GetLock(state)) {
-+              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
-+                  |FE_HAS_SYNC | FE_HAS_VITERBI | FE_HAS_LOCK;
-+      }
-+      return 0;
-+}
-+
-+static int m88dc2800_read_ber(struct dvb_frontend *fe, u32 * ber)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      u16 tmp;
-+
-+      if (M88DC2000GetLock(state) == 0) {
-+              state->ber = 0;
-+      } else if ((ReadReg(state, 0xA0) & 0x80) != 0x80) {
-+              tmp = ReadReg(state, 0xA2) << 8;
-+              tmp += ReadReg(state, 0xA1);
-+              state->ber = tmp;
-+              WriteReg(state, 0xA0, 0x05);
-+              WriteReg(state, 0xA0, 0x85);
-+      }
-+      *ber = state->ber;
-+      return 0;
-+}
-+
-+static int m88dc2800_read_signal_strength(struct dvb_frontend *fe,
-+                                        u16 * strength)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      s16 tuner_strength;
-+
-+      tuner_strength = mt_fe_tn_get_signal_strength_tc2800(state);
-+      *strength = tuner_strength < -107 ? 0 : tuner_strength + 107;
-+
-+      return 0;
-+}
-+
-+static int m88dc2800_read_snr(struct dvb_frontend *fe, u16 * snr)
-+{
-+      static const u32 mes_log[] = {
-+              0, 3010, 4771, 6021, 6990, 7781, 8451, 9031, 9542, 10000,
-+              10414, 10792, 11139, 11461, 11761, 12041, 12304, 12553, 12788,
-+              13010, 13222, 13424, 13617, 13802, 13979, 14150, 14314, 14472,
-+              14624, 14771, 14914, 15052, 15185, 15315, 15441, 15563, 15682,
-+              15798, 15911, 16021, 16128, 16232, 16335, 16435, 16532, 16628,
-+              16721, 16812, 16902, 16990, 17076, 17160, 17243, 17324, 17404,
-+              17482, 17559, 17634, 17709, 17782, 17853, 17924, 17993, 18062,
-+              18129, 18195, 18261, 18325, 18388, 18451, 18513, 18573, 18633,
-+              18692, 18751, 18808, 18865, 18921, 18976, 19031
-+      };
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      u8 i;
-+      u32 _snr, mse;
-+
-+      if ((ReadReg(state, 0x91) & 0x23) != 0x03) {
-+              *snr = 0;
-+              return 0;
-+      }
-+      mse = 0;
-+      for (i = 0; i < 30; i++) {
-+              mse += (ReadReg(state, 0x08) << 8) + ReadReg(state, 0x07);
-+      }
-+      mse /= 30;
-+      if (mse > 80)
-+              mse = 80;
-+      switch (state->qam) {
-+      case 16:
-+              _snr = 34080;
-+              break;          /*      16QAM                           */
-+      case 32:
-+              _snr = 37600;
-+              break;          /*      32QAM                           */
-+      case 64:
-+              _snr = 40310;
-+              break;          /*      64QAM                           */
-+      case 128:
-+              _snr = 43720;
-+              break;          /*      128QAM                          */
-+      case 256:
-+              _snr = 46390;
-+              break;          /*      256QAM                          */
-+      default:
-+              _snr = 40310;
-+              break;
-+      }
-+      _snr -= mes_log[mse - 1];       /*      C - 10*log10(MSE)       */
-+      _snr /= 1000;
-+      if (_snr > 0xff)
-+              _snr = 0xff;
-+      *snr = _snr;
-+      return 0;
-+}
-+
-+static int m88dc2800_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      u8 u8Value;
-+
-+      u8Value = ReadReg(state, 0xdf);
-+      u8Value |= 0x02;        /* Hold */
-+      WriteReg(state, 0xdf, u8Value);
-+
-+      *ucblocks = ReadReg(state, 0xd5);
-+      *ucblocks = (*ucblocks << 8) | ReadReg(state, 0xd4);
-+
-+      u8Value &= 0xfe;        /* Clear */
-+      WriteReg(state, 0xdf, u8Value);
-+      u8Value &= 0xfc;        /* Update */
-+      u8Value |= 0x01;
-+      WriteReg(state, 0xdf, u8Value);
-+
-+      return 0;
-+}
-+
-+static int m88dc2800_sleep(struct dvb_frontend *fe)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+
-+      mt_fe_tn_sleep_tc2800(state);
-+      state->freq = 0;
-+
-+      return 0;
-+}
-+
-+static void m88dc2800_release(struct dvb_frontend *fe)
-+{
-+      struct m88dc2800_state *state = fe->demodulator_priv;
-+      kfree(state);
-+}
-+
-+static struct dvb_frontend_ops m88dc2800_ops;
-+
-+struct dvb_frontend *m88dc2800_attach(const struct m88dc2800_config
-+                                    *config, struct i2c_adapter *i2c)
-+{
-+      struct m88dc2800_state *state = NULL;
-+
-+      /* allocate memory for the internal state */
-+      state = kzalloc(sizeof(struct m88dc2800_state), GFP_KERNEL);
-+      if (state == NULL)
-+              goto error;
-+
-+      /* setup the state */
-+      state->config = config;
-+      state->i2c = i2c;
-+      state->xtal = 28800;
-+
-+      WriteReg(state, 0x80, 0x01);
-+      M88DC2000RegInitial_TC2800(state);
-+      M88DC2000SetTsType(state, state->config->ts_mode);
-+      mt_fe_tn_init_tc2800(state);
-+
-+      /* create dvb_frontend */
-+      memcpy(&state->frontend.ops, &m88dc2800_ops,
-+             sizeof(struct dvb_frontend_ops));
-+      state->frontend.demodulator_priv = state;
-+      return &state->frontend;
-+
-+      error:
-+      kfree(state);
-+      return NULL;
-+}
-+
-+EXPORT_SYMBOL(m88dc2800_attach);
-+
-+static struct dvb_frontend_ops m88dc2800_ops = {
-+      .delsys = {SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C},
-+      .info = {
-+               .name = "Montage M88DC2800 DVB-C",
-+               .frequency_stepsize = 62500,
-+               .frequency_min = 48000000,
-+               .frequency_max = 870000000,
-+               .symbol_rate_min = 870000,
-+               .symbol_rate_max = 9000000,
-+               .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
-+                       FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
-+      },
-+      .release = m88dc2800_release,
-+      .init = m88dc2800_init,
-+      .sleep = m88dc2800_sleep,
-+      .set_frontend = m88dc2800_set_parameters,
-+      .read_status = m88dc2800_read_status,
-+      .read_ber = m88dc2800_read_ber,
-+      .read_signal_strength = m88dc2800_read_signal_strength,
-+      .read_snr = m88dc2800_read_snr,
-+      .read_ucblocks = m88dc2800_read_ucblocks,
-+};
-+
-+MODULE_DESCRIPTION("Montage DVB-C demodulator driver");
-+MODULE_AUTHOR("Max Nibble <nibble.max@gmail.com>");
-+MODULE_LICENSE("GPL");
-+MODULE_VERSION("1.00");
-diff --git a/drivers/media/dvb-frontends/m88dc2800.h b/drivers/media/dvb-frontends/m88dc2800.h
-new file mode 100644
-index 0000000..2184322
---- /dev/null
-+++ b/drivers/media/dvb-frontends/m88dc2800.h
-@@ -0,0 +1,44 @@
-+/*
-+    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
-+
-+    Copyright (C) 2012 Max Nibble <nibble.max@gmail.com>
-+    Copyright (C) 2011 Montage Technology - www.montage-tech.com
-+
-+    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, write to the Free Software
-+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+#ifndef M88DC2800_H
-+#define M88DC2800_H
-+
-+#include <linux/kconfig.h>
-+#include <linux/dvb/frontend.h>
-+
-+struct m88dc2800_config {
-+      u8 demod_address;
-+      u8 ts_mode;
-+};
-+
-+#if IS_ENABLED(CONFIG_DVB_M88DC2800)
-+extern struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
-+                                          struct i2c_adapter* i2c);
-+#else
-+static inline struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
-+                                          struct i2c_adapter* i2c)
-+{
-+      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
-+      return NULL;
-+}
-+#endif /* CONFIG_DVB_M88DC2800 */
-+#endif /* M88DC2800_H */
-diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig
-index d1dcb1d..285c1ad 100644
---- a/drivers/media/pci/cx23885/Kconfig
-+++ b/drivers/media/pci/cx23885/Kconfig
-@@ -23,6 +23,8 @@ config VIDEO_CX23885
-       select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
-+      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
-+      select DVB_M88DC2800 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_CX24117 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT
-diff --git a/drivers/media/pci/cx23885/cimax2.c b/drivers/media/pci/cx23885/cimax2.c
-index 16fa7ea..2b63f78 100644
---- a/drivers/media/pci/cx23885/cimax2.c
-+++ b/drivers/media/pci/cx23885/cimax2.c
-@@ -426,7 +426,7 @@ int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
-       return state->status;
- }
--int netup_ci_init(struct cx23885_tsport *port)
-+int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky)
- {
-       struct netup_ci_state *state;
-       u8 cimax_init[34] = {
-@@ -475,6 +475,11 @@ int netup_ci_init(struct cx23885_tsport *port)
-               goto err;
-       }
-+      if(isDVBSky) {
-+              cimax_init[32] = 0x22;
-+              cimax_init[33] = 0x00;
-+      }
-+
-       port->port_priv = state;
-       switch (port->nr) {
-@@ -548,3 +553,19 @@ void netup_ci_exit(struct cx23885_tsport *port)
-       dvb_ca_en50221_release(&state->ca);
-       kfree(state);
- }
-+
-+/* CI irq handler for DVBSky board*/
-+int dvbsky_ci_slot_status(struct cx23885_dev *dev)
-+{
-+      struct cx23885_tsport *port = NULL;
-+      struct netup_ci_state *state = NULL;
-+
-+      ci_dbg_print("%s:\n", __func__);
-+
-+      port = &dev->ts1;
-+      state = port->port_priv;
-+      schedule_work(&state->work);
-+      ci_dbg_print("%s: Wakeup CI0\n", __func__);
-+
-+      return 1;
-+}
-diff --git a/drivers/media/pci/cx23885/cimax2.h b/drivers/media/pci/cx23885/cimax2.h
-index 518744a..39f3db7 100644
---- a/drivers/media/pci/cx23885/cimax2.h
-+++ b/drivers/media/pci/cx23885/cimax2.h
-@@ -41,7 +41,9 @@ extern int netup_ci_slot_ts_ctl(struct dvb_ca_en50221 *en50221, int slot);
- extern int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status);
- extern int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
-                                               int slot, int open);
--extern int netup_ci_init(struct cx23885_tsport *port);
-+extern int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky);
- extern void netup_ci_exit(struct cx23885_tsport *port);
-+extern int dvbsky_ci_slot_status(struct cx23885_dev *dev);
-+
- #endif
-diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
-old mode 100644
-new mode 100755
-index 79f20c8..889bd4c
---- a/drivers/media/pci/cx23885/cx23885-cards.c
-+++ b/drivers/media/pci/cx23885/cx23885-cards.c
-@@ -613,6 +613,49 @@ struct cx23885_board cx23885_boards[] = {
-               .name           = "TeVii S471",
-               .portb          = CX23885_MPEG_DVB,
-       },
-+      [CX23885_BOARD_BST_PS8512] = {
-+              .name           = "Bestunar PS8512",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_S950] = {
-+              .name           = "DVBSKY S950",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_S952] = {
-+              .name           = "DVBSKY S952",
-+              .portb          = CX23885_MPEG_DVB,
-+              .portc          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_S950_CI] = {
-+              .ci_type        = 3,
-+              .name           = "DVBSKY S950CI DVB-S2 CI",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_C2800E_CI] = {
-+              .ci_type        = 3,
-+              .name           = "DVBSKY C2800E DVB-C CI",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_T9580] = {
-+              .name           = "DVBSKY T9580",
-+              .portb          = CX23885_MPEG_DVB,
-+              .portc          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_T980_CI] = {
-+              .ci_type        = 3,
-+              .name           = "DVBSKY T980CI DVB-T2/C CI",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_DVBSKY_T982] = {
-+              .name           = "DVBSKY T982",
-+              .portb          = CX23885_MPEG_DVB,
-+              .portc          = CX23885_MPEG_DVB,
-+      },
-+      [CX23885_BOARD_TT_4500_CI] = {
-+              .ci_type        = 3,
-+              .name           = "TT-budget CT2-4500 CI",
-+              .portb          = CX23885_MPEG_DVB,
-+      },
-       [CX23885_BOARD_PROF_8000] = {
-               .name           = "Prof Revolution DVB-S2 8000",
-               .portb          = CX23885_MPEG_DVB,
-@@ -874,6 +917,42 @@ struct cx23885_subid cx23885_subids[] = {
-               .subdevice = 0x9022,
-               .card      = CX23885_BOARD_TEVII_S471,
-       }, {
-+              .subvendor = 0x14f1,
-+              .subdevice = 0x8512,
-+              .card      = CX23885_BOARD_BST_PS8512,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x0950,
-+              .card      = CX23885_BOARD_DVBSKY_S950,         
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x0952,
-+              .card      = CX23885_BOARD_DVBSKY_S952,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x950C,
-+              .card      = CX23885_BOARD_DVBSKY_S950_CI,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x2800,
-+              .card      = CX23885_BOARD_DVBSKY_C2800E_CI,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x9580,
-+              .card      = CX23885_BOARD_DVBSKY_T9580,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x980C,
-+              .card      = CX23885_BOARD_DVBSKY_T980_CI,
-+      }, {
-+              .subvendor = 0x4254,
-+              .subdevice = 0x0982,
-+              .card      = CX23885_BOARD_DVBSKY_T982,
-+      }, {
-+              .subvendor = 0x13C2,
-+              .subdevice = 0x3013,
-+              .card      = CX23885_BOARD_TT_4500_CI,
-+      }, {
-               .subvendor = 0x8000,
-               .subdevice = 0x3034,
-               .card      = CX23885_BOARD_PROF_8000,
-@@ -1483,9 +1562,75 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
-               cx_set(GP0_IO, 0x00040004);
-               mdelay(60);
-               break;
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_BST_PS8512:                  
-+              cx23885_gpio_enable(dev, GPIO_2, 1);
-+              cx23885_gpio_clear(dev, GPIO_2);
-+              msleep(100);            
-+              cx23885_gpio_set(dev, GPIO_2);
-+              break;
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T982:
-+              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
-+              
-+              cx23885_gpio_enable(dev, GPIO_2, 1);
-+              cx23885_gpio_enable(dev, GPIO_11, 1);
-+              
-+              cx23885_gpio_clear(dev, GPIO_2);
-+              cx23885_gpio_clear(dev, GPIO_11);
-+              msleep(100);            
-+              cx23885_gpio_set(dev, GPIO_2);
-+              cx23885_gpio_set(dev, GPIO_11); 
-+              break;
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_TT_4500_CI:
-+              cx_set(GP0_IO, 0x00060002); /* GPIO 1/2 as output */
-+              cx_clear(GP0_IO, 0x00010004); /*GPIO 0 as input*/
-+              mdelay(100);/* reset delay */
-+              cx_set(GP0_IO, 0x00060004); /* GPIO as out, reset high */
-+              cx_clear(GP0_IO, 0x00010002);
-+              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
-+              /* GPIO-15 IN as ~ACK, rest as OUT */
-+              cx_write(MC417_OEN, 0x00001000);
-+              /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */
-+              cx_write(MC417_RWD, 0x0000c300);
-+              /* enable irq */
-+              cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
-+              break;
-       }
- }
-+static int cx23885_ir_patch(struct i2c_adapter *i2c, u8 reg, u8 mask)
-+{
-+      struct i2c_msg msgs[2];
-+      u8 tx_buf[2], rx_buf[1];
-+      /* Write register address */
-+      tx_buf[0] = reg;
-+      msgs[0].addr = 0x4c;
-+      msgs[0].flags = 0;
-+      msgs[0].len = 1;
-+      msgs[0].buf = (char *) tx_buf;
-+      /* Read data from register */
-+      msgs[1].addr = 0x4c;
-+      msgs[1].flags = I2C_M_RD;
-+      msgs[1].len = 1;
-+      msgs[1].buf = (char *) rx_buf;  
-+      
-+      i2c_transfer(i2c, msgs, 2);
-+
-+      tx_buf[0] = reg;
-+      tx_buf[1] = rx_buf[0] | mask;
-+      msgs[0].addr = 0x4c;
-+      msgs[0].flags = 0;
-+      msgs[0].len = 2;
-+      msgs[0].buf = (char *) tx_buf;
-+      
-+      return i2c_transfer(i2c, msgs, 1);
-+}
-+
- int cx23885_ir_init(struct cx23885_dev *dev)
- {
-       static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = {
-@@ -1573,6 +1718,26 @@ int cx23885_ir_init(struct cx23885_dev *dev)
-               v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
-                                ir_rx_pin_cfg_count, ir_rx_pin_cfg);
-               break;
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-+              dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE);
-+              if (dev->sd_ir == NULL) {
-+                      ret = -ENODEV;
-+                      break;
-+              }
-+              v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
-+                               ir_rx_pin_cfg_count, ir_rx_pin_cfg);
-+                               
-+              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x1f,0x80);
-+              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x23,0x80);
-+              break;
-       case CX23885_BOARD_HAUPPAUGE_HVR1250:
-               if (!enable_885_ir)
-                       break;
-@@ -1608,13 +1773,22 @@ void cx23885_ir_fini(struct cx23885_dev *dev)
-       case CX23885_BOARD_MYGICA_X8507:
-       case CX23885_BOARD_TBS_6980:
-       case CX23885_BOARD_TBS_6981:
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-               cx23885_irq_remove(dev, PCI_MSK_AV_CORE);
-               /* sd_ir is a duplicate pointer to the AV Core, just clear it */
-               dev->sd_ir = NULL;
-               break;
-       }
- }
--
-+#if 0
- static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
- {
-       int data;
-@@ -1639,7 +1813,7 @@ static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
-       return tdo;
- }
--
-+#endif
- void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
- {
-       switch (dev->board) {
-@@ -1655,6 +1829,15 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
-       case CX23885_BOARD_MYGICA_X8507:
-       case CX23885_BOARD_TBS_6980:
-       case CX23885_BOARD_TBS_6981:
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-               if (dev->sd_ir)
-                       cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE);
-               break;
-@@ -1752,6 +1935,12 @@ void cx23885_card_setup(struct cx23885_dev *dev)
-               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-               ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-               break;
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_TT_4500_CI:
-       case CX23885_BOARD_TEVII_S470:
-       case CX23885_BOARD_TEVII_S471:
-       case CX23885_BOARD_DVBWORLD_2005:
-@@ -1795,6 +1984,23 @@ void cx23885_card_setup(struct cx23885_dev *dev)
-               ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-               ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-               break;
-+      case CX23885_BOARD_DVBSKY_S952:
-+              ts1->gen_ctrl_val  = 0x5; /* Parallel */
-+              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+              ts2->gen_ctrl_val  = 0xe; /* Serial bus + punctured clock */
-+              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+              break;
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T982:
-+              ts1->gen_ctrl_val  = 0x5; /* Parallel */
-+              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+              ts2->gen_ctrl_val  = 0x8; /* Serial bus */
-+              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-+              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
-+              break;
-       case CX23885_BOARD_HAUPPAUGE_HVR4400:
-               ts1->gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */
-               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
-@@ -1860,6 +2066,15 @@ void cx23885_card_setup(struct cx23885_dev *dev)
-       case CX23885_BOARD_AVERMEDIA_HC81R:
-       case CX23885_BOARD_TBS_6980:
-       case CX23885_BOARD_TBS_6981:
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-               dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev,
-                               &dev->i2c_bus[2].i2c_adap,
-                               "cx25840", 0x88 >> 1, NULL);
-@@ -1879,13 +2094,13 @@ void cx23885_card_setup(struct cx23885_dev *dev)
-               int ret;
-               const struct firmware *fw;
-               const char *filename = "dvb-netup-altera-01.fw";
--              char *action = "configure";
-+//            char *action = "configure";
-               static struct netup_card_info cinfo;
--              struct altera_config netup_config = {
--                      .dev = dev,
--                      .action = action,
--                      .jtag_io = netup_jtag_io,
--              };
-+//            struct altera_config netup_config = {
-+//                    .dev = dev,
-+//                    .action = action,
-+//                    .jtag_io = netup_jtag_io,
-+//            };
-               netup_initialize(dev);
-@@ -1909,8 +2124,8 @@ void cx23885_card_setup(struct cx23885_dev *dev)
-                       printk(KERN_ERR "did not find the firmware file. (%s) "
-                       "Please see linux/Documentation/dvb/ for more details "
-                       "on firmware-problems.", filename);
--              else
--                      altera_init(&netup_config, fw);
-+              //else
-+              //      altera_init(&netup_config, fw);
-               release_firmware(fw);
-               break;
-diff --git a/drivers/media/pci/cx23885/cx23885-core.c b/drivers/media/pci/cx23885/cx23885-core.c
-index edcd79d..c9afeab 100644
---- a/drivers/media/pci/cx23885/cx23885-core.c
-+++ b/drivers/media/pci/cx23885/cx23885-core.c
-@@ -450,9 +450,9 @@ void cx23885_wakeup(struct cx23885_tsport *port,
-               del_timer(&q->timeout);
-       else
-               mod_timer(&q->timeout, jiffies + BUFFER_TIMEOUT);
--      if (bc != 1)
-+/*    if (bc != 1)
-               printk(KERN_WARNING "%s: %d buffers handled (should be 1)\n",
--                     __func__, bc);
-+                     __func__, bc);*/
- }
- int cx23885_sram_channel_setup(struct cx23885_dev *dev,
-@@ -1909,6 +1909,10 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
-                       (pci_status & PCI_MSK_GPIO0))
-               handled += altera_ci_irq(dev);
-+      if (cx23885_boards[dev->board].ci_type == 3 &&
-+                      (pci_status & PCI_MSK_GPIO0))
-+              handled += dvbsky_ci_slot_status(dev);
-+              
-       if (ts1_status) {
-               if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB)
-                       handled += cx23885_irq_ts(ts1, ts1_status);
-@@ -2141,6 +2145,10 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
-               cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0);
-               break;
-       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_TT_4500_CI:
-               cx23885_irq_add_enable(dev, PCI_MSK_GPIO0);
-               break;
-       }
-diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
-index 0549205..7816112 100644
---- a/drivers/media/pci/cx23885/cx23885-dvb.c
-+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
-@@ -51,6 +51,8 @@
- #include "stv6110.h"
- #include "lnbh24.h"
- #include "cx24116.h"
-+#include "dvbsky_m88ds3103.h"
-+#include "m88dc2800.h"
- #include "cx24117.h"
- #include "cimax2.h"
- #include "lgs8gxx.h"
-@@ -473,6 +475,7 @@ static struct ds3000_config tevii_ds3000_config = {
- static struct ts2020_config tevii_ts2020_config  = {
-       .tuner_address = 0x60,
-       .clk_out_div = 1,
-+      .frequency_div = 1146000,
- };
- static struct cx24116_config dvbworld_cx24116_config = {
-@@ -507,6 +510,93 @@ static struct xc5000_config mygica_x8507_xc5000_config = {
-       .if_khz = 4000,
- };
-+/* bst control */
-+int bst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+      struct cx23885_tsport *port = fe->dvb->priv;
-+      struct cx23885_dev *dev = port->dev;
-+      
-+      cx23885_gpio_enable(dev, GPIO_1, 1);
-+      cx23885_gpio_enable(dev, GPIO_0, 1);
-+
-+      switch (voltage) {
-+      case SEC_VOLTAGE_13:
-+              cx23885_gpio_set(dev, GPIO_1);
-+              cx23885_gpio_clear(dev, GPIO_0);
-+              break;
-+      case SEC_VOLTAGE_18:
-+              cx23885_gpio_set(dev, GPIO_1);
-+              cx23885_gpio_set(dev, GPIO_0);
-+              break;
-+      case SEC_VOLTAGE_OFF:
-+              cx23885_gpio_clear(dev, GPIO_1);
-+              cx23885_gpio_clear(dev, GPIO_0);
-+              break;
-+      }
-+      return 0;
-+}
-+
-+int dvbsky_set_voltage_sec(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+      struct cx23885_tsport *port = fe->dvb->priv;
-+      struct cx23885_dev *dev = port->dev;
-+      
-+      cx23885_gpio_enable(dev, GPIO_12, 1);
-+      cx23885_gpio_enable(dev, GPIO_13, 1);
-+
-+      switch (voltage) {
-+      case SEC_VOLTAGE_13:
-+              cx23885_gpio_set(dev, GPIO_13);
-+              cx23885_gpio_clear(dev, GPIO_12);
-+              break;
-+      case SEC_VOLTAGE_18:
-+              cx23885_gpio_set(dev, GPIO_13);
-+              cx23885_gpio_set(dev, GPIO_12);
-+              break;
-+      case SEC_VOLTAGE_OFF:
-+              cx23885_gpio_clear(dev, GPIO_13);
-+              cx23885_gpio_clear(dev, GPIO_12);
-+              break;
-+      }
-+      return 0;
-+}
-+
-+/* bestunar single dvb-s2 */
-+static struct dvbsky_m88ds3103_config bst_ds3103_config = {
-+      .demod_address = 0x68,
-+      .ci_mode = 0,
-+      .pin_ctrl = 0x82,
-+      .ts_mode = 0,
-+      .set_voltage = bst_set_voltage,
-+};
-+/* DVBSKY dual dvb-s2 */
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_pri = {
-+      .demod_address = 0x68,
-+      .ci_mode = 0,
-+      .pin_ctrl = 0x82,
-+      .ts_mode = 0,
-+      .set_voltage = bst_set_voltage, 
-+};
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_sec = {
-+      .demod_address = 0x68,
-+      .ci_mode = 0,
-+      .pin_ctrl = 0x82,
-+      .ts_mode = 1,
-+      .set_voltage = dvbsky_set_voltage_sec,  
-+};
-+
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_ci_config = {
-+      .demod_address = 0x68,
-+      .ci_mode = 2,
-+      .pin_ctrl = 0x82,
-+      .ts_mode = 0,
-+};
-+
-+static struct m88dc2800_config dvbsky_dc2800_config = {
-+      .demod_address = 0x1c,
-+      .ts_mode = 3,   
-+};
-+
- static struct stv090x_config prof_8000_stv090x_config = {
-       .device                 = STV0903,
-       .demod_mode             = STV090x_SINGLE,
-@@ -1311,6 +1401,92 @@ static int dvb_register(struct cx23885_tsport *port)
-                               &tevii_ts2020_config, &i2c_bus->i2c_adap);
-               }
-               break;
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+              i2c_bus = &dev->i2c_bus[1];     
-+              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                      &bst_ds3103_config,
-+                                      &i2c_bus->i2c_adap);
-+              break;  
-+                      
-+      case CX23885_BOARD_DVBSKY_S952:
-+              switch (port->nr) {
-+              /* port B */
-+              case 1:
-+                      i2c_bus = &dev->i2c_bus[1];
-+                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                              &dvbsky_ds3103_config_pri,
-+                                              &i2c_bus->i2c_adap);
-+                      break;
-+              /* port C */
-+              case 2:
-+                      i2c_bus = &dev->i2c_bus[0];
-+                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                              &dvbsky_ds3103_config_sec,
-+                                              &i2c_bus->i2c_adap);    
-+                      break;
-+              }
-+              break;
-+
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+              i2c_bus = &dev->i2c_bus[1];     
-+              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                      &dvbsky_ds3103_ci_config,
-+                                      &i2c_bus->i2c_adap);
-+              break;
-+                              
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+              i2c_bus = &dev->i2c_bus[1];     
-+              fe0->dvb.frontend = dvb_attach(m88dc2800_attach,
-+                                      &dvbsky_dc2800_config,
-+                                      &i2c_bus->i2c_adap);
-+              break;
-+
-+      case CX23885_BOARD_DVBSKY_T9580:
-+              switch (port->nr) {
-+              /* port B */
-+              case 1:
-+                      i2c_bus = &dev->i2c_bus[1];
-+                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                              &dvbsky_ds3103_config_pri,
-+                                              &i2c_bus->i2c_adap);
-+                      break;
-+              /* port C */
-+//            case 2:
-+//                    i2c_bus = &dev->i2c_bus[0];
-+//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
-+//                                            &dvbsky_sit2_config_pci_s,
-+//                                            &i2c_bus->i2c_adap);    
-+                      break;
-+              }
-+              break;
-+
-+//    case CX23885_BOARD_DVBSKY_T980_CI:
-+//    case CX23885_BOARD_TT_4500_CI:
-+//            i2c_bus = &dev->i2c_bus[1];     
-+//            fe0->dvb.frontend = dvb_attach(sit2_attach,
-+//                                    &dvbsky_sit2_config_pci_p,
-+//                                    &i2c_bus->i2c_adap);
-+//            break;
-+
-+//    case CX23885_BOARD_DVBSKY_T982:
-+//            switch (port->nr) {
-+//            /* port B */
-+//            case 1:
-+//                    i2c_bus = &dev->i2c_bus[1];
-+//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
-+//                                            &dvbsky_sit2_config_pci_p,
-+//                                            &i2c_bus->i2c_adap);
-+//                    break;
-+//            /* port C */
-+//            case 2:
-+//                    i2c_bus = &dev->i2c_bus[0];
-+//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
-+//                                            &dvbsky_sit2_config_pci_s,
-+//                                            &i2c_bus->i2c_adap);    
-+//                    break;
-+//            }
-+//            break;
-       case CX23885_BOARD_PROF_8000:
-               i2c_bus = &dev->i2c_bus[0];
-@@ -1386,7 +1562,7 @@ static int dvb_register(struct cx23885_tsport *port)
-               printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC=%pM\n",
-                       port->nr, port->frontends.adapter.proposed_mac);
--              netup_ci_init(port);
-+              netup_ci_init(port, false);
-               break;
-               }
-       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: {
-@@ -1413,6 +1589,44 @@ static int dvb_register(struct cx23885_tsport *port)
-               memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6);
-               break;
-               }
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T982:{
-+              u8 eeprom[256]; /* 24C02 i2c eeprom */
-+
-+              if(port->nr > 2)
-+                      break;
-+
-+              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
-+              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
-+              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
-+              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
-+                      (port->nr-1)*8, 6);
-+              break;
-+              }
-+      case CX23885_BOARD_DVBSKY_S950_CI: {
-+              u8 eeprom[256]; /* 24C02 i2c eeprom */
-+
-+              if(port->nr > 2)
-+                      break;
-+
-+              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
-+              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
-+              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
-+              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
-+                      (port->nr-1)*8, 6);
-+                      
-+              netup_ci_init(port, true);
-+              break;
-+              }
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_TT_4500_CI: {
-+              netup_ci_init(port, true);
-+              break;
-+              }               
-       }
-       return ret;
-@@ -1495,6 +1709,10 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
-       switch (port->dev->board) {
-       case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_TT_4500_CI:
-               netup_ci_exit(port);
-               break;
-       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
-diff --git a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c
-index 8a49e7c..1642ae8 100644
---- a/drivers/media/pci/cx23885/cx23885-input.c
-+++ b/drivers/media/pci/cx23885/cx23885-input.c
-@@ -92,6 +92,15 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events)
-       case CX23885_BOARD_MYGICA_X8507:
-       case CX23885_BOARD_TBS_6980:
-       case CX23885_BOARD_TBS_6981:
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-               /*
-                * The only boards we handle right now.  However other boards
-                * using the CX2388x integrated IR controller should be similar
-@@ -144,6 +153,15 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev)
-       case CX23885_BOARD_HAUPPAUGE_HVR1290:
-       case CX23885_BOARD_HAUPPAUGE_HVR1250:
-       case CX23885_BOARD_MYGICA_X8507:
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+      case CX23885_BOARD_TT_4500_CI:
-               /*
-                * The IR controller on this board only returns pulse widths.
-                * Any other mode setting will fail to set up the device.
-@@ -302,6 +320,26 @@ int cx23885_input_init(struct cx23885_dev *dev)
-               /* A guess at the remote */
-               rc_map = RC_MAP_TOTAL_MEDIA_IN_HAND_02;
-               break;
-+      case CX23885_BOARD_BST_PS8512:
-+      case CX23885_BOARD_DVBSKY_S950:
-+      case CX23885_BOARD_DVBSKY_S952:
-+      case CX23885_BOARD_DVBSKY_S950_CI:
-+      case CX23885_BOARD_DVBSKY_C2800E_CI:
-+      case CX23885_BOARD_DVBSKY_T9580:
-+      case CX23885_BOARD_DVBSKY_T980_CI:
-+      case CX23885_BOARD_DVBSKY_T982:
-+              /* Integrated CX2388[58] IR controller */
-+              driver_type = RC_DRIVER_IR_RAW;
-+              allowed_protos = RC_BIT_ALL;
-+              /* A guess at the remote */
-+              rc_map = RC_MAP_DVBSKY;
-+              break;
-+      case CX23885_BOARD_TT_4500_CI:
-+              /* Integrated CX2388[58] IR controller */
-+              driver_type = RC_DRIVER_IR_RAW;
-+              allowed_protos = RC_BIT_ALL;
-+              rc_map = RC_MAP_TT_1500;
-+              break;
-       case CX23885_BOARD_TBS_6980:
-       case CX23885_BOARD_TBS_6981:
-               /* Integrated CX23885 IR controller */
-diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
-index 0fa4048..7a39d82 100644
---- a/drivers/media/pci/cx23885/cx23885.h
-+++ b/drivers/media/pci/cx23885/cx23885.h
-@@ -97,6 +97,17 @@
- #define CX23885_BOARD_TBS_6980                 41
- #define CX23885_BOARD_LEADTEK_WINFAST_PXPVR2200 42
-+#define CX23885_BOARD_DVBSKY_PCIE              43
-+#define CX23885_BOARD_BST_PS8512             (CX23885_BOARD_DVBSKY_PCIE+0)
-+#define CX23885_BOARD_DVBSKY_S952            (CX23885_BOARD_DVBSKY_PCIE+1)
-+#define CX23885_BOARD_DVBSKY_S950            (CX23885_BOARD_DVBSKY_PCIE+2)
-+#define CX23885_BOARD_DVBSKY_S950_CI         (CX23885_BOARD_DVBSKY_PCIE+3)
-+#define CX23885_BOARD_DVBSKY_C2800E_CI               (CX23885_BOARD_DVBSKY_PCIE+4)
-+#define CX23885_BOARD_DVBSKY_T9580           (CX23885_BOARD_DVBSKY_PCIE+5)
-+#define CX23885_BOARD_DVBSKY_T980_CI         (CX23885_BOARD_DVBSKY_PCIE+6)
-+#define CX23885_BOARD_DVBSKY_T982            (CX23885_BOARD_DVBSKY_PCIE+7)
-+#define CX23885_BOARD_TT_4500_CI             (CX23885_BOARD_DVBSKY_PCIE+8)
-+
- #define GPIO_0 0x00000001
- #define GPIO_1 0x00000002
- #define GPIO_2 0x00000004
-@@ -234,7 +245,7 @@ struct cx23885_board {
-        */
-       u32                     clk_freq;
-       struct cx23885_input    input[MAX_CX23885_INPUT];
--      int                     ci_type; /* for NetUP */
-+      int                     ci_type; /* 1 and 2 for NetUP, 3 for DVBSky. */
-       /* Force bottom field first during DMA (888 workaround) */
-       u32                     force_bff;
- };
-diff --git a/drivers/media/pci/cx88/Kconfig b/drivers/media/pci/cx88/Kconfig
-index a63a9ad..7deb300 100644
---- a/drivers/media/pci/cx88/Kconfig
-+++ b/drivers/media/pci/cx88/Kconfig
-@@ -57,6 +57,7 @@ config VIDEO_CX88_DVB
-       select DVB_ISL6421 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
-+      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
-       select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT
-diff --git a/drivers/media/pci/cx88/cx88-cards.c b/drivers/media/pci/cx88/cx88-cards.c
-index e18a7ac..317511d 100644
---- a/drivers/media/pci/cx88/cx88-cards.c
-+++ b/drivers/media/pci/cx88/cx88-cards.c
-@@ -2314,6 +2314,18 @@ static const struct cx88_board cx88_boards[] = {
-               } },
-               .mpeg           = CX88_MPEG_DVB,
-       },
-+      [CX88_BOARD_BST_PS8312] = {
-+              .name           = "Bestunar PS8312 DVB-S/S2",
-+              .tuner_type     = UNSET,
-+              .radio_type     = UNSET,
-+              .tuner_addr     = ADDR_UNSET,
-+              .radio_addr     = ADDR_UNSET,
-+              .input          = { {
-+                      .type   = CX88_VMUX_DVB,
-+                      .vmux   = 0,
-+              } },
-+              .mpeg           = CX88_MPEG_DVB,
-+      },
- };
- /* ------------------------------------------------------------------ */
-@@ -2818,6 +2830,10 @@ static const struct cx88_subid cx88_subids[] = {
-               .subvendor = 0x1822,
-               .subdevice = 0x0023,
-               .card      = CX88_BOARD_TWINHAN_VP1027_DVBS,
-+      }, {
-+              .subvendor = 0x14f1,
-+              .subdevice = 0x8312,
-+              .card      = CX88_BOARD_BST_PS8312,
-       },
- };
-@@ -3551,6 +3567,12 @@ static void cx88_card_setup(struct cx88_core *core)
-               cx_write(MO_SRST_IO, 1);
-               msleep(100);
-               break;
-+      case  CX88_BOARD_BST_PS8312:
-+              cx_write(MO_GP1_IO, 0x808000);
-+              msleep(100);
-+              cx_write(MO_GP1_IO, 0x808080);
-+              msleep(100);
-+              break;
-       } /*end switch() */
-diff --git a/drivers/media/pci/cx88/cx88-dvb.c b/drivers/media/pci/cx88/cx88-dvb.c
-index 053ed1b..955b916 100644
---- a/drivers/media/pci/cx88/cx88-dvb.c
-+++ b/drivers/media/pci/cx88/cx88-dvb.c
-@@ -54,6 +54,7 @@
- #include "stv0288.h"
- #include "stb6000.h"
- #include "cx24116.h"
-+#include "dvbsky_m88ds3103.h"
- #include "stv0900.h"
- #include "stb6100.h"
- #include "stb6100_proc.h"
-@@ -459,6 +460,56 @@ static int tevii_dvbs_set_voltage(struct dvb_frontend *fe,
-               return core->prev_set_voltage(fe, voltage);
-       return 0;
- }
-+/*CX88_BOARD_BST_PS8312*/
-+static int bst_dvbs_set_voltage(struct dvb_frontend *fe,
-+                                    fe_sec_voltage_t voltage)
-+{
-+      struct cx8802_dev *dev= fe->dvb->priv;
-+      struct cx88_core *core = dev->core;
-+
-+      cx_write(MO_GP1_IO, 0x111111);
-+      switch (voltage) {
-+              case SEC_VOLTAGE_13:
-+                      cx_write(MO_GP1_IO, 0x020200);
-+                      break;
-+              case SEC_VOLTAGE_18:
-+                      cx_write(MO_GP1_IO, 0x020202);
-+                      break;
-+              case SEC_VOLTAGE_OFF:
-+                      cx_write(MO_GP1_IO, 0x111100);
-+                      break;
-+      }
-+
-+      if (core->prev_set_voltage)
-+              return core->prev_set_voltage(fe, voltage);
-+      return 0;
-+}
-+
-+static int bst_dvbs_set_voltage_v2(struct dvb_frontend *fe,
-+                                    fe_sec_voltage_t voltage)
-+{
-+      struct cx8802_dev *dev= fe->dvb->priv;
-+      struct cx88_core *core = dev->core;
-+
-+      cx_write(MO_GP1_IO, 0x111101);
-+      switch (voltage) {
-+              case SEC_VOLTAGE_13:
-+                      cx_write(MO_GP1_IO, 0x020200);
-+                      break;
-+              case SEC_VOLTAGE_18:
-+
-+                      cx_write(MO_GP1_IO, 0x020202);
-+                      break;
-+              case SEC_VOLTAGE_OFF:
-+
-+                      cx_write(MO_GP1_IO, 0x111110);
-+                      break;
-+      }
-+
-+      if (core->prev_set_voltage)
-+              return core->prev_set_voltage(fe, voltage);
-+      return 0;
-+}
- static int vp1027_set_voltage(struct dvb_frontend *fe,
-                                   fe_sec_voltage_t voltage)
-@@ -706,6 +757,11 @@ static struct ts2020_config tevii_ts2020_config  = {
-       .clk_out_div = 1,
- };
-+static struct dvbsky_m88ds3103_config dvbsky_ds3103_config = {
-+      .demod_address = 0x68,
-+      .set_ts_params = ds3000_set_ts_param,
-+};
-+
- static const struct stv0900_config prof_7301_stv0900_config = {
-       .demod_address = 0x6a,
- /*    demod_mode = 0,*/
-@@ -1487,6 +1543,35 @@ static int dvb_register(struct cx8802_dev *dev)
-                                                       tevii_dvbs_set_voltage;
-               }
-               break;
-+      case CX88_BOARD_BST_PS8312:
-+              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
-+                                              &dvbsky_ds3103_config,
-+                                              &core->i2c_adap);
-+              if (fe0->dvb.frontend != NULL){
-+                      int ret;
-+                      u8 b0[] = { 0x60 };
-+                      u8 b1[2] = { 0 };
-+                      struct i2c_msg msg[] = {
-+                              {
-+                              .addr = 0x50,
-+                              .flags = 0,
-+                              .buf = b0,
-+                              .len = 1
-+                              }, {
-+                              .addr = 0x50,
-+                              .flags = I2C_M_RD,
-+                              .buf = b1,
-+                              .len = 2
-+                              }
-+                      };
-+                      ret = i2c_transfer(&core->i2c_adap, msg, 2);
-+                      printk("PS8312: config = %02x, %02x", b1[0],b1[1]);
-+                      if(b1[0] == 0xaa)
-+                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage_v2;
-+                      else                    
-+                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage;
-+              }
-+              break;
-       case CX88_BOARD_OMICOM_SS4_PCI:
-       case CX88_BOARD_TBS_8920:
-       case CX88_BOARD_PROF_7300:
-diff --git a/drivers/media/pci/cx88/cx88-input.c b/drivers/media/pci/cx88/cx88-input.c
-index f29e18c..9581f4e 100644
---- a/drivers/media/pci/cx88/cx88-input.c
-+++ b/drivers/media/pci/cx88/cx88-input.c
-@@ -129,7 +129,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
-               u32 gpio_key = cx_read(MO_GP0_IO);
-               data = (data << 4) | ((gpio_key & 0xf0) >> 4);
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
-               rc_keydown(ir->dev, data, 0);
-       } else if (ir->mask_keydown) {
-@@ -151,6 +151,45 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
-               rc_keydown_notimeout(ir->dev, data, 0);
-               rc_keyup(ir->dev);
-       }
-+#else
-+              rc_keydown(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+
-+      } else if (ir->core->boardnr == CX88_BOARD_PROLINK_PLAYTVPVR ||
-+                 ir->core->boardnr == CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO) {
-+              /* bit cleared on keydown, NEC scancode, 0xAAAACC, A = 0x866b */
-+              u16 addr;
-+              u8 cmd;
-+              u32 scancode;
-+
-+              addr = (data >> 8) & 0xffff;
-+              cmd  = (data >> 0) & 0x00ff;
-+              scancode = RC_SCANCODE_NECX(addr, cmd);
-+
-+              if (0 == (gpio & ir->mask_keyup))
-+                      rc_keydown_notimeout(ir->dev, RC_TYPE_NEC, scancode, 0);
-+              else
-+                      rc_keyup(ir->dev);
-+
-+      } else if (ir->mask_keydown) {
-+              /* bit set on keydown */
-+              if (gpio & ir->mask_keydown)
-+                      rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+              else
-+                      rc_keyup(ir->dev);
-+
-+      } else if (ir->mask_keyup) {
-+              /* bit cleared on keydown */
-+              if (0 == (gpio & ir->mask_keyup))
-+                      rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+              else
-+                      rc_keyup(ir->dev);
-+
-+      } else {
-+              /* can't distinguish keydown/up :-/ */
-+              rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
-+              rc_keyup(ir->dev);
-+      }
-+#endif
- }
- static enum hrtimer_restart cx88_ir_work(struct hrtimer *timer)
-@@ -419,6 +458,10 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
-               rc_type          = RC_BIT_NEC;
-               ir->sampling     = 0xff00; /* address */
-               break;
-+      case CX88_BOARD_BST_PS8312:
-+              ir_codes         = RC_MAP_DVBSKY;
-+              ir->sampling     = 0xff00; /* address */
-+              break;
-       }
-       if (!ir_codes) {
-@@ -471,7 +514,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
-               dev->driver_type = RC_DRIVER_SCANCODE;
-               dev->allowed_protos = rc_type;
-       }
--
-       ir->core = core;
-       core->ir = ir;
-@@ -538,8 +580,12 @@ void cx88_ir_irq(struct cx88_core *core)
-       }
-       ir_raw_event_handle(ir->dev);
- }
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
- static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
-+#else
-+static int get_key_pvr2000(struct IR_i2c *ir, enum rc_type *protocol,
-+                         u32 *scancode, u8 *toggle)
-+#endif
- {
-       int flags, code;
-@@ -562,9 +608,14 @@ static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
-       dprintk("IR Key/Flags: (0x%02x/0x%02x)\n",
-                  code & 0xff, flags & 0xff);
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
-       *ir_key = code & 0xff;
-       *ir_raw = code;
-+#else
-+      *protocol = RC_TYPE_UNKNOWN;
-+      *scancode = code & 0xff;
-+      *toggle = 0;
-+#endif
-       return 1;
- }
-diff --git a/drivers/media/pci/cx88/cx88.h b/drivers/media/pci/cx88/cx88.h
-index 28893a6..5fa5f48 100644
---- a/drivers/media/pci/cx88/cx88.h
-+++ b/drivers/media/pci/cx88/cx88.h
-@@ -237,6 +237,7 @@ extern const struct sram_channel cx88_sram_channels[];
- #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
- #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
- #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90
-+#define CX88_BOARD_BST_PS8312              91
- enum cx88_itype {
-       CX88_VMUX_COMPOSITE1 = 1,
-diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
-index 0b8c549..abf6079 100644
---- a/drivers/media/rc/keymaps/Makefile
-+++ b/drivers/media/rc/keymaps/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
-                       rc-dm1105-nec.o \
-                       rc-dntv-live-dvb-t.o \
-                       rc-dntv-live-dvbt-pro.o \
-+                      rc-dvbsky.o \
-                       rc-em-terratec.o \
-                       rc-encore-enltv2.o \
-                       rc-encore-enltv.o \
-diff --git a/drivers/media/rc/keymaps/rc-dvbsky.c b/drivers/media/rc/keymaps/rc-dvbsky.c
-new file mode 100644
-index 0000000..bfc41fb
---- /dev/null
-+++ b/drivers/media/rc/keymaps/rc-dvbsky.c
-@@ -0,0 +1,78 @@
-+/* rc-dvbsky.c - Keytable for Dvbsky Remote Controllers
-+ *
-+ * keymap imported from ir-keymaps.c
-+ *
-+ *
-+ * Copyright (c) 2010-2012 by Nibble Max <nibble.max@gmail.com>
-+ *
-+ * 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.
-+ */
-+
-+#include <media/rc-map.h>
-+#include <linux/module.h>
-+/*
-+ * This table contains the complete RC5 code, instead of just the data part
-+ */
-+
-+static struct rc_map_table rc5_dvbsky[] = {
-+      { 0x0000, KEY_0 },
-+      { 0x0001, KEY_1 },
-+      { 0x0002, KEY_2 },
-+      { 0x0003, KEY_3 },
-+      { 0x0004, KEY_4 },
-+      { 0x0005, KEY_5 },
-+      { 0x0006, KEY_6 },
-+      { 0x0007, KEY_7 },
-+      { 0x0008, KEY_8 },
-+      { 0x0009, KEY_9 },
-+      { 0x000a, KEY_MUTE },
-+      { 0x000d, KEY_OK },
-+      { 0x000b, KEY_STOP },
-+      { 0x000c, KEY_EXIT },
-+      { 0x000e, KEY_CAMERA }, /*Snap shot*/
-+      { 0x000f, KEY_SUBTITLE }, /*PIP*/
-+      { 0x0010, KEY_VOLUMEUP },
-+      { 0x0011, KEY_VOLUMEDOWN },
-+      { 0x0012, KEY_FAVORITES },
-+      { 0x0013, KEY_LIST }, /*Info*/
-+      { 0x0016, KEY_PAUSE },
-+      { 0x0017, KEY_PLAY },
-+      { 0x001f, KEY_RECORD },
-+      { 0x0020, KEY_CHANNELDOWN },
-+      { 0x0021, KEY_CHANNELUP },
-+      { 0x0025, KEY_POWER2 },
-+      { 0x0026, KEY_REWIND },
-+      { 0x0027, KEY_FASTFORWARD },
-+      { 0x0029, KEY_LAST },
-+      { 0x002b, KEY_MENU },
-+      { 0x002c, KEY_EPG },
-+      { 0x002d, KEY_ZOOM },
-+};
-+
-+static struct rc_map_list rc5_dvbsky_map = {
-+      .map = {
-+              .scan    = rc5_dvbsky,
-+              .size    = ARRAY_SIZE(rc5_dvbsky),
-+              .rc_type = RC_TYPE_RC5,
-+              .name    = RC_MAP_DVBSKY,
-+      }
-+};
-+
-+static int __init init_rc_map_rc5_dvbsky(void)
-+{
-+      return rc_map_register(&rc5_dvbsky_map);
-+}
-+
-+static void __exit exit_rc_map_rc5_dvbsky(void)
-+{
-+      rc_map_unregister(&rc5_dvbsky_map);
-+}
-+
-+module_init(init_rc_map_rc5_dvbsky)
-+module_exit(exit_rc_map_rc5_dvbsky)
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Nibble Max <nibble.max@gmail.com>");
-diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
-index 2059d0c..5ff51aa 100644
---- a/drivers/media/usb/dvb-usb-v2/Kconfig
-+++ b/drivers/media/usb/dvb-usb-v2/Kconfig
-@@ -147,3 +147,11 @@ config DVB_USB_RTL28XXU
-       help
-         Say Y here to support the Realtek RTL28xxU DVB USB receiver.
-+config DVB_USB_DVBSKY
-+      tristate "DVBSky USB2.0 support"
-+      depends on DVB_USB_V2
-+      select DVB_SIT2 if MEDIA_SUBDRV_AUTOSELECT
-+      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
-+      help
-+        Say Y here to support the USB receivers from DVBSky.
-+
-diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
-index 2c06714..926f12d 100644
---- a/drivers/media/usb/dvb-usb-v2/Makefile
-+++ b/drivers/media/usb/dvb-usb-v2/Makefile
-@@ -40,6 +40,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o
- dvb-usb-rtl28xxu-objs := rtl28xxu.o
- obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o
-+dvb-usb-dvbsky-objs := dvbsky.o
-+obj-$(CONFIG_DVB_USB_DVBSKY) += dvb-usb-dvbsky.o
-+
- ccflags-y += -I$(srctree)/drivers/media/dvb-core
- ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
- ccflags-y += -I$(srctree)/drivers/media/tuners
-diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
-new file mode 100644
-index 0000000..cd9c039
---- /dev/null
-+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
-@@ -0,0 +1,892 @@
-+/*
-+ * Driver for DVBSky receiver
-+ *
-+ * Copyright (C) 2013 Max nibble <nibble.max@gmail.com>
-+ *
-+ * CIMax code is copied and modified from:
-+ * CIMax2(R) SP2 driver in conjunction with NetUp Dual DVB-S2 CI card
-+ * Copyright (C) 2009 NetUP Inc.
-+ * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
-+ * Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
-+ *
-+ *    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, write to the Free Software
-+ *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include "dvb_ca_en50221.h"
-+#include "dvb_usb.h"
-+#include "dvbsky_m88ds3103.h"
-+
-+static int dvbsky_debug;
-+module_param(dvbsky_debug, int, 0644);
-+MODULE_PARM_DESC(dvbsky_debug, "Activates dvbsky usb debugging (default:0)");
-+
-+#define DVBSKY_MSG_DELAY      0/*2000*/
-+#define DVBSKY_CI_CTL         0x04
-+#define DVBSKY_CI_RD          1
-+#define DVBSKY_BUF_LEN        64
-+
-+#define dprintk(args...) \
-+      do { \
-+              if (dvbsky_debug) \
-+                      printk(KERN_INFO "dvbsky_usb: " args); \
-+      } while (0)
-+
-+DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
-+
-+struct dvbsky_state {
-+      struct mutex stream_mutex;
-+      u8 ibuf[DVBSKY_BUF_LEN];
-+      u8 obuf[DVBSKY_BUF_LEN];
-+      u8 has_ci;
-+      u8 ci_attached;
-+      struct dvb_ca_en50221 ci;
-+      unsigned long next_status_checked_time;
-+      u8 ci_i2c_addr;
-+      u8 current_ci_flag;
-+      int ci_status;
-+};
-+
-+static int dvbsky_usb_generic_rw(struct dvb_usb_device *d,
-+              u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
-+{
-+      int ret;
-+      struct dvbsky_state *state = d_to_priv(d);
-+
-+      mutex_lock(&d->usb_mutex);
-+      if (wlen != 0)
-+              memcpy(state->obuf, wbuf, wlen);
-+
-+      ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
-+                      state->ibuf, rlen);
-+
-+      if (!ret && (rlen != 0))
-+              memcpy(rbuf, state->ibuf, rlen);
-+
-+      mutex_unlock(&d->usb_mutex);
-+      return ret;
-+}
-+
-+static int dvbsky_stream_ctrl(struct dvb_usb_device *d, u8 onoff)
-+{
-+      struct dvbsky_state *state = d_to_priv(d);
-+      int ret;
-+      u8 obuf_pre[3] = { 0x37, 0, 0 };
-+      u8 obuf_post[3] = { 0x36, 3, 0 };
-+      dprintk("%s() -off \n", __func__);
-+      mutex_lock(&state->stream_mutex);
-+      ret = dvbsky_usb_generic_rw(d, obuf_pre, 3, NULL, 0);
-+      if (!ret && onoff) {
-+              msleep(20);
-+              ret = dvbsky_usb_generic_rw(d, obuf_post, 3, NULL, 0);
-+              dprintk("%s() -on \n", __func__);
-+      }
-+      mutex_unlock(&state->stream_mutex);
-+      return ret;
-+}
-+
-+/* CI opertaions */
-+static int dvbsky_ci_read_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
-+                                              u8 *buf, int len)
-+{
-+      int ret;
-+      struct i2c_msg msg[] = {
-+              {
-+                      .addr   = addr,
-+                      .flags  = 0,
-+                      .buf    = &reg,
-+                      .len    = 1
-+              }, {
-+                      .addr   = addr,
-+                      .flags  = I2C_M_RD,
-+                      .buf    = buf,
-+                      .len    = len
-+              }
-+      };
-+      
-+      ret = i2c_transfer(i2c_adap, msg, 2);
-+      
-+      if (ret != 2) {
-+              dprintk("%s: error, Reg = 0x%02x, Status = %d\n", __func__, reg, ret);
-+              return -1;
-+      }
-+      return 0;
-+}
-+
-+static int dvbsky_ci_write_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
-+                                              u8 *buf, int len)
-+{
-+      int ret;
-+      u8 buffer[64];
-+
-+      struct i2c_msg msg = {
-+              .addr   = addr,
-+              .flags  = 0,
-+              .buf    = &buffer[0],
-+              .len    = len + 1
-+      };
-+      
-+      if(len + 1 > sizeof(buffer)) {
-+              dprintk("%s: len overflow.\n", __func__);
-+              return -1;              
-+      }
-+
-+      buffer[0] = reg;
-+      memcpy(&buffer[1], buf, len);
-+
-+      ret = i2c_transfer(i2c_adap, &msg, 1);
-+
-+      if (ret != 1) {
-+              dprintk("%s: error, Reg=[0x%02x], Status=%d\n", __func__, reg, ret);
-+              return -1;
-+      }
-+      return 0;
-+}
-+
-+static int dvbsky_ci_op_cam(struct dvb_ca_en50221 *ci, int slot,
-+                              u8 flag, u8 read, int addr, u8 data)
-+{
-+      struct dvb_usb_device *d = ci->data;
-+      struct dvbsky_state *state = d_to_priv(d);      
-+      u8 store;
-+      int ret;
-+      u8 command[4], respond[2], command_size, respond_size;
-+
-+      /*dprintk("%s()\n", __func__);*/
-+      if (0 != slot)
-+              return -EINVAL;
-+
-+      if (state->current_ci_flag != flag) {
-+              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                              0, &store, 1);
-+              if (ret != 0)
-+                      return ret;
-+
-+              store &= ~0x0c;
-+              store |= flag;
-+
-+              ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                              0, &store, 1);
-+              if (ret != 0)
-+                      return ret;
-+      }
-+      state->current_ci_flag = flag;
-+
-+      command[1] = (u8)((addr >> 8) & 0xff); /*high part of address*/
-+      command[2] = (u8)(addr & 0xff); /*low part of address*/
-+      if (read) {
-+              command[0] = 0x71;
-+              command_size = 3;
-+              respond_size = 2;
-+      } else {
-+              command[0] = 0x70;
-+              command[3] = data;
-+              command_size = 4;
-+              respond_size = 1;
-+      }
-+      ret = dvbsky_usb_generic_rw(d, command, command_size, respond, respond_size);
-+      if(ret)
-+              dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+
-+      return (read) ? respond[1] : 0;
-+}
-+
-+static int dvbsky_ci_read_attribute_mem(struct dvb_ca_en50221 *ci,
-+                                              int slot, int addr)
-+{
-+      return dvbsky_ci_op_cam(ci, slot, 0, DVBSKY_CI_RD, addr, 0);
-+}
-+
-+static int dvbsky_ci_write_attribute_mem(struct dvb_ca_en50221 *ci,
-+                                              int slot, int addr, u8 data)
-+{
-+      return dvbsky_ci_op_cam(ci, slot, 0, 0, addr, data);
-+}
-+
-+static int dvbsky_ci_read_cam_ctl(struct dvb_ca_en50221 *ci, int slot, u8 addr)
-+{
-+      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, DVBSKY_CI_RD, addr, 0);
-+}
-+
-+static int dvbsky_ci_write_cam_ctl(struct dvb_ca_en50221 *ci, int slot,
-+                                                      u8 addr, u8 data)
-+{
-+      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, 0, addr, data);
-+}
-+
-+static int dvbsky_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot)
-+{
-+      struct dvb_usb_device *d = ci->data;
-+      struct dvbsky_state *state = d_to_priv(d);
-+      u8 buf =  0x80;
-+      int ret;
-+      dprintk("%s() slot=%d\n", __func__, slot);
-+
-+      if (0 != slot)
-+              return -EINVAL;
-+
-+      udelay(500);
-+      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                                      0, &buf, 1);
-+
-+      if (ret != 0)
-+              return ret;
-+
-+      udelay(500);
-+
-+      buf = 0x00;
-+      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                                      0, &buf, 1);
-+      msleep(1000);
-+      dprintk("%s() slot=%d complete\n", __func__, slot);
-+      return 0;
-+
-+}
-+
-+static int dvbsky_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot)
-+{
-+      /* not implemented */
-+      dprintk("%s()\n", __func__);
-+      return 0;
-+}
-+
-+static int dvbsky_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot)
-+{
-+      struct dvb_usb_device *d = ci->data;
-+      struct dvbsky_state *state = d_to_priv(d);
-+      u8 buf;
-+      int ret;
-+
-+      dprintk("%s()\n", __func__);
-+      if (0 != slot)
-+              return -EINVAL;
-+
-+      dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                      0, &buf, 1);
-+      buf |= 0x60;
-+
-+      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                                      0, &buf, 1);
-+      return ret;
-+}
-+
-+static int dvbsky_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot,
-+      int open)
-+{
-+      struct dvb_usb_device *d = ci->data;
-+      struct dvbsky_state *state = d_to_priv(d);
-+      int ret = 0;
-+      u8 buf = 0;
-+      /*dprintk("%s()\n", __func__);*/
-+
-+      /* CAM module INSERT/REMOVE processing. slow operation because of i2c
-+       * transfers */
-+      if (time_after(jiffies, state->next_status_checked_time)) {
-+              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                              0, &buf, 1);
-+
-+              /*dprintk("%s() status=%x\n", __func__, buf);*/
-+              
-+              state->next_status_checked_time = jiffies
-+                      + msecs_to_jiffies(1000);
-+
-+              if (ret != 0)
-+                      return 0;
-+
-+              if (buf & 1) {
-+                      state->ci_status = DVB_CA_EN50221_POLL_CAM_PRESENT |
-+                              DVB_CA_EN50221_POLL_CAM_READY;
-+              }
-+              else
-+                      state->ci_status = 0;
-+      }
-+      /*dprintk("%s() ret=%x\n", __func__, state->ci_status);*/
-+      return state->ci_status;
-+}
-+
-+static int dvbsky_ci_init(struct dvb_usb_device *d)
-+{
-+      struct dvbsky_state *state = d_to_priv(d);
-+      int ret;
-+      u8 cimax_init[34] = {
-+              0x00, /* module A control*/
-+              0x00, /* auto select mask high A */
-+              0x00, /* auto select mask low A */
-+              0x00, /* auto select pattern high A */
-+              0x00, /* auto select pattern low A */
-+              0x44, /* memory access time A */
-+              0x00, /* invert input A */
-+              0x00, /* RFU */
-+              0x00, /* RFU */
-+              0x00, /* module B control*/
-+              0x00, /* auto select mask high B */
-+              0x00, /* auto select mask low B */
-+              0x00, /* auto select pattern high B */
-+              0x00, /* auto select pattern low B */
-+              0x44, /* memory access time B */
-+              0x00, /* invert input B */
-+              0x00, /* RFU */
-+              0x00, /* RFU */
-+              0x00, /* auto select mask high Ext */
-+              0x00, /* auto select mask low Ext */
-+              0x00, /* auto select pattern high Ext */
-+              0x00, /* auto select pattern low Ext */
-+              0x00, /* RFU */
-+              0x02, /* destination - module A */
-+              0x01, /* power on (use it like store place) */
-+              0x00, /* RFU */
-+              0x00, /* int status read only */
-+              0x00, /* Max: Disable the interrupt in USB solution.*/
-+              0x05, /* EXTINT=active-high, INT=push-pull */
-+              0x00, /* USCG1 */
-+              0x04, /* ack active low */
-+              0x00, /* LOCK = 0 */
-+              0x22, /* serial mode, rising in, rising out, MSB first*/
-+              0x00  /* synchronization */
-+      };      
-+      dprintk("%s()\n", __func__);
-+      state->current_ci_flag = 0xff;
-+      state->ci_status = 0;
-+      state->next_status_checked_time = jiffies + msecs_to_jiffies(1000);
-+      state->ci_i2c_addr = 0x40;
-+
-+      state->ci.owner               = THIS_MODULE;
-+      state->ci.read_attribute_mem  = dvbsky_ci_read_attribute_mem;
-+      state->ci.write_attribute_mem = dvbsky_ci_write_attribute_mem;
-+      state->ci.read_cam_control    = dvbsky_ci_read_cam_ctl;
-+      state->ci.write_cam_control   = dvbsky_ci_write_cam_ctl;
-+      state->ci.slot_reset          = dvbsky_ci_slot_reset;
-+      state->ci.slot_shutdown       = dvbsky_ci_slot_shutdown;
-+      state->ci.slot_ts_enable      = dvbsky_ci_slot_ts_enable;
-+      state->ci.poll_slot_status    = dvbsky_ci_poll_slot_status;
-+      state->ci.data                = d;
-+
-+      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                              0, &cimax_init[0], 34);
-+      /* lock registers */
-+      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                              0x1f, &cimax_init[0x18], 1);
-+      /* power on slots */
-+      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
-+                                              0x18, &cimax_init[0x18], 1);
-+      if (0 != ret)
-+              return ret;
-+              
-+      ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
-+      if (ret)
-+              return ret;
-+      state->ci_attached = 1;
-+      dprintk("%s() complete.\n", __func__);
-+      return 0;
-+}
-+
-+static void dvbsky_ci_release(struct dvb_usb_device *d)
-+{
-+      struct dvbsky_state *state = d_to_priv(d);
-+
-+      /* detach CI */
-+      if (state->ci_attached)
-+              dvb_ca_en50221_release(&state->ci);
-+
-+      return;
-+}
-+
-+static int dvbsky_streaming_ctrl(struct dvb_frontend *fe, int onoff)
-+{
-+      struct dvb_usb_device *d = fe_to_d(fe);
-+      /*dprintk("%s() %d\n", __func__, onoff);*/
-+      return dvbsky_stream_ctrl(d, (onoff == 0) ? 0 : 1);
-+}
-+
-+/* GPIO */
-+static int dvbsky_gpio_ctrl(struct dvb_usb_device *d, u8 gport, u8 value)
-+{
-+      int ret;
-+      u8 obuf[64], ibuf[64];
-+      obuf[0] = 0x0e;
-+      obuf[1] = gport;
-+      obuf[2] = value;
-+      ret = dvbsky_usb_generic_rw(d, obuf, 3, ibuf, 1);
-+      if(ret)
-+              dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+      return ret;
-+}
-+
-+/* I2C */
-+static int dvbsky_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
-+      int num)
-+{
-+      struct dvb_usb_device *d = i2c_get_adapdata(adap);
-+      int ret = 0;
-+      u8 ibuf[64], obuf[64]; 
-+
-+      if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
-+              return -EAGAIN;
-+
-+      if (num > 2) {
-+              printk(KERN_ERR "dvbsky_usb: too many i2c messages[%d] than 2.", num);
-+              ret = -EOPNOTSUPP;
-+              goto i2c_error;
-+      }
-+              
-+      if(num == 1) {
-+              if (msg[0].len > 60) {
-+                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[%d] than 60.", msg[0].len);
-+                      ret = -EOPNOTSUPP;
-+                      goto i2c_error;
-+              }
-+              if (msg[0].flags & I2C_M_RD) {
-+                      /* single read */
-+                      obuf[0] = 0x09;
-+                      obuf[1] = 0;
-+                      obuf[2] = msg[0].len;
-+                      obuf[3] = msg[0].addr;
-+                      ret = dvbsky_usb_generic_rw(d, obuf, 4, ibuf, msg[0].len + 1);
-+                      if(ret)
-+                              dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+                      /*dprintk("%s(): read status = %d\n", __func__, ibuf[0]);*/
-+                      if (!ret)
-+                              memcpy(msg[0].buf, &ibuf[1], msg[0].len);
-+              } else {
-+                      /* write */
-+                      obuf[0] = 0x08;
-+                      obuf[1] = msg[0].addr;
-+                      obuf[2] = msg[0].len;
-+                      memcpy(&obuf[3], msg[0].buf, msg[0].len);
-+                      ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 3, ibuf, 1);
-+                      if(ret)
-+                              dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+                      /*dprintk("%s(): write status = %d\n", __func__, ibuf[0]);*/
-+              }
-+      } else {
-+              if ((msg[0].len > 60) || (msg[1].len > 60)) {
-+                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[w-%d][r-%d] than 60.", msg[0].len, msg[1].len);
-+                      ret = -EOPNOTSUPP;
-+                      goto i2c_error;
-+              }
-+              /* write then read */
-+              obuf[0] = 0x09;
-+              obuf[1] = msg[0].len;
-+              obuf[2] = msg[1].len;
-+              obuf[3] = msg[0].addr;
-+              memcpy(&obuf[4], msg[0].buf, msg[0].len);
-+              ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 4, ibuf, msg[1].len + 1);
-+              if(ret)
-+                      dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
-+              /*dprintk("%s(): write then read status = %d\n", __func__, ibuf[0]);*/
-+              if (!ret)
-+                      memcpy(msg[1].buf, &ibuf[1], msg[1].len);
-+      }
-+i2c_error:
-+      mutex_unlock(&d->i2c_mutex);
-+      return (ret) ? ret : num;
-+}
-+
-+static u32 dvbsky_i2c_func(struct i2c_adapter *adapter)
-+{
-+      return I2C_FUNC_I2C;
-+}
-+
-+static struct i2c_algorithm dvbsky_i2c_algo = {
-+      .master_xfer   = dvbsky_i2c_xfer,
-+      .functionality = dvbsky_i2c_func,
-+};
-+
-+#if IS_ENABLED(CONFIG_RC_CORE)
-+static int dvbsky_rc_query(struct dvb_usb_device *d)
-+{
-+      
-+      u32 code = 0xffff, scancode;\r
-+      u8 rc5_command, rc5_system;\r
-+      u8 obuf[2], ibuf[2], toggle;\r
-+      int ret;
-+      obuf[0] = 0x10;\r
-+      ret = dvbsky_usb_generic_rw(d, obuf, 1, ibuf, 2);
-+      if(ret)
-+              dev_err(&d->udev->dev, "%s: %s() " \
-+                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);\r
-+      if(ret == 0)\r
-+              code = (ibuf[0] << 8) | ibuf[1];\r
-+\r
-+      if (code != 0xffff) {\r
-+              dprintk("rc code: %x \n", code);\r
-+              rc5_command = code & 0x3F;\r
-+              rc5_system = (code & 0x7C0) >> 6;\r
-+              toggle = (code & 0x800) ? 1 : 0;                \r
-+              scancode = rc5_system << 8 | rc5_command;\r
-+              rc_keydown(d->rc_dev, scancode, toggle);\r
-+      }\r
-+      return 0;
-+}
-+
-+static int dvbsky_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
-+{
-+      rc->allowed_protos = RC_BIT_RC5;
-+      rc->query          = dvbsky_rc_query;
-+      rc->interval       = 300;
-+      return 0;
-+}
-+#else
-+      #define dvbsky_get_rc_config NULL
-+#endif
-+
-+static int dvbsky_sync_ctrl(struct dvb_frontend *fe)
-+{
-+      struct dvb_usb_device *d = fe_to_d(fe);
-+      return dvbsky_stream_ctrl(d, 1);
-+}
-+
-+static int dvbsky_usb_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+      struct dvb_usb_device *d = fe_to_d(fe);
-+      u8 value;
-+
-+      if (voltage == SEC_VOLTAGE_OFF)
-+              value = 0;
-+      else
-+              value = 1;
-+      return dvbsky_gpio_ctrl(d, 0x80, value);
-+}
-+
-+static int dvbsky_usb_ci_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
-+{
-+      struct dvb_usb_device *d = fe_to_d(fe);
-+      u8 value;
-+
-+      if (voltage == SEC_VOLTAGE_OFF)
-+              value = 0;
-+      else
-+              value = 1;
-+      return dvbsky_gpio_ctrl(d, 0x00, value);
-+}
-+
-+static int dvbsky_t680c_attach(struct dvb_usb_adapter *adap)
-+{
-+      struct dvbsky_state *state = adap_to_priv(adap);
-+      struct dvb_usb_device *d = adap_to_d(adap);
-+      int ret = 0;
-+      
-+      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+
-+//    adap->fe[0] = dvb_attach(sit2_attach,
-+//                            &dvbsky_usb_sit2_config,
-+//                            &d->i2c_adap);
-+      if (!adap->fe[0]) {
-+              printk(KERN_ERR "dvbsky_t680c_attach fail.");
-+              ret = -ENODEV;
-+      }
-+      
-+      state->has_ci = 1;
-+
-+      return ret;
-+}
-+
-+static int dvbsky_t330_attach(struct dvb_usb_adapter *adap)
-+{
-+      struct dvbsky_state *state = adap_to_priv(adap);
-+      struct dvb_usb_device *d = adap_to_d(adap);
-+      int ret = 0;
-+      
-+      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+
-+//    adap->fe[0] = dvb_attach(sit2_attach,
-+//                            &dvbsky_t330_sit2_config,
-+//                            &d->i2c_adap);
-+      if (!adap->fe[0]) {
-+              printk(KERN_ERR "dvbsky_t330_attach fail.");
-+              ret = -ENODEV;
-+      }
-+      
-+      state->has_ci = 0;
-+
-+      return ret;
-+}
-+
-+static int dvbsky_read_mac_addr(struct dvb_usb_adapter *adap, u8 mac[6])
-+{
-+      struct dvb_usb_device *d = adap_to_d(adap);
-+      u8 obuf[] = { 0x1e, 0x00 };
-+      u8 ibuf[6] = { 0 };
-+      struct i2c_msg msg[] = {
-+              {
-+                      .addr = 0x51,
-+                      .flags = 0,
-+                      .buf = obuf,
-+                      .len = 2,
-+              }, {
-+                      .addr = 0x51,
-+                      .flags = I2C_M_RD,
-+                      .buf = ibuf,
-+                      .len = 6,
-+
-+              }
-+      };
-+      
-+      if (i2c_transfer(&d->i2c_adap, msg, 2) == 2)
-+              memcpy(mac, ibuf, 6);
-+
-+      printk(KERN_INFO "dvbsky_usb MAC address=%pM\n", mac);
-+      
-+      return 0;
-+}
-+
-+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_config = {
-+      .demod_address = 0x68,
-+      .ci_mode = 1,
-+      .pin_ctrl = 0x83,
-+      .ts_mode = 0,
-+      .start_ctrl = dvbsky_sync_ctrl,
-+      .set_voltage = dvbsky_usb_set_voltage,
-+};
-+
-+static int dvbsky_s960_attach(struct dvb_usb_adapter *adap)
-+{
-+      struct dvbsky_state *state = adap_to_priv(adap);
-+      struct dvb_usb_device *d = adap_to_d(adap);
-+      int ret = 0;
-+      
-+      dprintk("%s()\n", __func__);
-+      
-+      adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
-+                              &dvbsky_usb_ds3103_config,
-+                              &d->i2c_adap);
-+      if (!adap->fe[0]) {
-+              printk(KERN_ERR "dvbsky_s960_attach fail.");
-+              ret = -ENODEV;
-+      }
-+      
-+      state->has_ci = 0;
-+
-+      return ret;
-+}
-+
-+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_ci_config = {
-+      .demod_address = 0x68,
-+      .ci_mode = 2,
-+      .pin_ctrl = 0x82,
-+      .ts_mode = 0,
-+      .start_ctrl = dvbsky_sync_ctrl,
-+      .set_voltage = dvbsky_usb_ci_set_voltage,
-+};
-+static int dvbsky_s960c_attach(struct dvb_usb_adapter *adap)
-+{
-+      struct dvbsky_state *state = adap_to_priv(adap);
-+      struct dvb_usb_device *d = adap_to_d(adap);
-+      int ret = 0;
-+      
-+      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
-+              
-+      adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
-+                              &dvbsky_usb_ds3103_ci_config,
-+                              &d->i2c_adap);
-+      if (!adap->fe[0]) {
-+              printk(KERN_ERR "dvbsky_s960c_attach fail.");
-+              ret = -ENODEV;
-+      }
-+      
-+      state->has_ci = 1;
-+
-+      return ret;
-+}
-+
-+static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
-+{
-+      /*
-+      printk(KERN_INFO "%s, build on %s %s(),delay=%d\n", 
-+      __func__, __DATE__,__TIME__,d->props->generic_bulk_ctrl_delay); 
-+      */
-+      dvbsky_gpio_ctrl(d, 0x04, 1);
-+      msleep(20);
-+      dvbsky_gpio_ctrl(d, 0x83, 0);
-+      dvbsky_gpio_ctrl(d, 0xc0, 1);
-+      msleep(100);
-+      dvbsky_gpio_ctrl(d, 0x83, 1);
-+      dvbsky_gpio_ctrl(d, 0xc0, 0);
-+      msleep(50);
-+      
-+      return WARM;
-+}
-+
-+static int dvbsky_init(struct dvb_usb_device *d)
-+{
-+      struct dvbsky_state *state = d_to_priv(d);
-+      int ret;
-+
-+      /* use default interface */
-+      /*
-+      ret = usb_set_interface(d->udev, 0, 0);
-+      if (ret)
-+              return ret;
-+      */
-+      mutex_init(&state->stream_mutex);
-+      
-+      /* attach CI */
-+      if (state->has_ci) {            
-+              state->ci_attached = 0;
-+              ret = dvbsky_ci_init(d);
-+              if (ret)
-+                      return ret;
-+      }
-+      return 0;
-+}
-+
-+static void dvbsky_exit(struct dvb_usb_device *d)
-+{
-+      return dvbsky_ci_release(d);
-+}
-+
-+/* DVB USB Driver stuff */
-+static struct dvb_usb_device_properties dvbsky_t330_props = {
-+      .driver_name = KBUILD_MODNAME,
-+      .owner = THIS_MODULE,
-+      .adapter_nr = adapter_nr,
-+      .size_of_priv = sizeof(struct dvbsky_state),
-+
-+      .generic_bulk_ctrl_endpoint = 0x01,
-+      .generic_bulk_ctrl_endpoint_response = 0x81,
-+      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+      .i2c_algo         = &dvbsky_i2c_algo,
-+      .frontend_attach  = dvbsky_t330_attach,
-+      .init             = dvbsky_init,
-+      .get_rc_config    = dvbsky_get_rc_config,
-+      .streaming_ctrl   = dvbsky_streaming_ctrl,
-+      .identify_state   = dvbsky_identify_state,
-+      .exit             = dvbsky_exit,
-+      .read_mac_address = dvbsky_read_mac_addr,
-+
-+      .num_adapters = 1,
-+      .adapter = {
-+              {
-+                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+              }
-+      }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_s960c_props = {
-+      .driver_name = KBUILD_MODNAME,
-+      .owner = THIS_MODULE,
-+      .adapter_nr = adapter_nr,
-+      .size_of_priv = sizeof(struct dvbsky_state),
-+
-+      .generic_bulk_ctrl_endpoint = 0x01,
-+      .generic_bulk_ctrl_endpoint_response = 0x81,
-+      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+      .i2c_algo         = &dvbsky_i2c_algo,
-+      .frontend_attach  = dvbsky_s960c_attach,
-+      .init             = dvbsky_init,
-+      .get_rc_config    = dvbsky_get_rc_config,
-+      .streaming_ctrl   = dvbsky_streaming_ctrl,
-+      .identify_state   = dvbsky_identify_state,
-+      .exit             = dvbsky_exit,
-+      .read_mac_address = dvbsky_read_mac_addr,
-+
-+      .num_adapters = 1,
-+      .adapter = {
-+              {
-+                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+              }
-+      }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_t680c_props = {
-+      .driver_name = KBUILD_MODNAME,
-+      .owner = THIS_MODULE,
-+      .adapter_nr = adapter_nr,
-+      .size_of_priv = sizeof(struct dvbsky_state),
-+
-+      .generic_bulk_ctrl_endpoint = 0x01,
-+      .generic_bulk_ctrl_endpoint_response = 0x81,
-+      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+      .i2c_algo         = &dvbsky_i2c_algo,
-+      .frontend_attach  = dvbsky_t680c_attach,
-+      .init             = dvbsky_init,
-+      .get_rc_config    = dvbsky_get_rc_config,
-+      .streaming_ctrl   = dvbsky_streaming_ctrl,
-+      .identify_state   = dvbsky_identify_state,
-+      .exit             = dvbsky_exit,
-+      .read_mac_address = dvbsky_read_mac_addr,
-+
-+      .num_adapters = 1,
-+      .adapter = {
-+              {
-+                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+              }
-+      }
-+};
-+
-+static struct dvb_usb_device_properties dvbsky_s960_props = {
-+      .driver_name = KBUILD_MODNAME,
-+      .owner = THIS_MODULE,
-+      .adapter_nr = adapter_nr,
-+      .size_of_priv = sizeof(struct dvbsky_state),
-+
-+      .generic_bulk_ctrl_endpoint = 0x01,
-+      .generic_bulk_ctrl_endpoint_response = 0x81,
-+      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
-+
-+      .i2c_algo         = &dvbsky_i2c_algo,
-+      .frontend_attach  = dvbsky_s960_attach,
-+      .init             = dvbsky_init,
-+      .get_rc_config    = dvbsky_get_rc_config,
-+      .streaming_ctrl   = dvbsky_streaming_ctrl,
-+      .identify_state   = dvbsky_identify_state,
-+      .exit             = dvbsky_exit,
-+      .read_mac_address = dvbsky_read_mac_addr,
-+
-+      .num_adapters = 1,
-+      .adapter = {
-+              {
-+                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
-+              }
-+      }
-+};
-+
-+static const struct usb_device_id dvbsky_id_table[] = {
-+      { DVB_USB_DEVICE(0x0572, 0x0320,
-+              &dvbsky_t330_props, "DVBSky T330 USB Stick", RC_MAP_DVBSKY) },  
-+      { DVB_USB_DEVICE(0x0572, 0x960c,
-+              &dvbsky_s960c_props, "DVBSky S960CI", RC_MAP_DVBSKY) },
-+      { DVB_USB_DEVICE(0x0572, 0x680c,
-+              &dvbsky_t680c_props, "DVBSky T680CI", RC_MAP_DVBSKY) },
-+      { DVB_USB_DEVICE(0x0572, 0x6831,
-+              &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
-+      { }
-+};
-+MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
-+
-+static struct usb_driver dvbsky_usb_driver = {
-+      .name = KBUILD_MODNAME,
-+      .id_table = dvbsky_id_table,
-+      .probe = dvb_usbv2_probe,
-+      .disconnect = dvb_usbv2_disconnect,
-+      .suspend = dvb_usbv2_suspend,
-+      .resume = dvb_usbv2_resume,
-+      .reset_resume = dvb_usbv2_reset_resume,
-+      .no_dynamic_id = 1,
-+      .soft_unbind = 1,
-+};
-+
-+module_usb_driver(dvbsky_usb_driver);
-+
-+MODULE_AUTHOR("Max nibble <nibble.max@gmail.com>");
-+MODULE_DESCRIPTION("Driver for DVBSky USB2.0");
-+MODULE_LICENSE("GPL");
-diff --git a/include/media/rc-map.h b/include/media/rc-map.h
-index a20ed97..73f8c92 100644
---- a/include/media/rc-map.h
-+++ b/include/media/rc-map.h
-@@ -119,6 +119,7 @@ void rc_map_init(void);
- #define RC_MAP_DM1105_NEC                "rc-dm1105-nec"
- #define RC_MAP_DNTV_LIVE_DVBT_PRO        "rc-dntv-live-dvbt-pro"
- #define RC_MAP_DNTV_LIVE_DVB_T           "rc-dntv-live-dvb-t"
-+#define RC_MAP_DVBSKY                    "rc-dvbsky"
- #define RC_MAP_EMPTY                     "rc-empty"
- #define RC_MAP_EM_TERRATEC               "rc-em-terratec"
- #define RC_MAP_ENCORE_ENLTV2             "rc-encore-enltv2"
diff --git a/src/patches/linux-3.14.25-rt5592_no_special_txop_init.patch b/src/patches/linux-3.14.25-rt5592_no_special_txop_init.patch
deleted file mode 100644 (file)
index fe30c9e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Naur linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c
---- linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c  2014-11-21 18:23:44.000000000 +0100
-+++ linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c      2014-12-03 11:30:58.813355413 +0100
-@@ -4847,7 +4847,8 @@
-       rt2x00_set_field32(&reg, TXOP_CTRL_CFG_EXT_CWMIN, 0);
-       rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, reg);
--      reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
-+//    reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
-+      reg = 0x00000002;
-       rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
-       rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg);
diff --git a/src/patches/linux-3.14.25_rt2x00_fix_bss_bcn_num.patch b/src/patches/linux-3.14.25_rt2x00_fix_bss_bcn_num.patch
deleted file mode 100644 (file)
index 87ea39a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c
---- linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c  2014-12-03 11:30:58.000000000 +0100
-+++ linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c      2014-12-03 12:15:45.743454351 +0100
-@@ -1557,7 +1557,7 @@
-               if (!is_zero_ether_addr((const u8 *)conf->bssid)) {
-                       reg = le32_to_cpu(conf->bssid[1]);
-                       rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_ID_MASK, 3);
--                      rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_BCN_NUM, 7);
-+                      rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_BCN_NUM, 0);
-                       conf->bssid[1] = cpu_to_le32(reg);
-               }
diff --git a/src/patches/linux-3.14.32-r8169_disable_L23.patch b/src/patches/linux-3.14.32-r8169_disable_L23.patch
deleted file mode 100644 (file)
index dbb58d6..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-From 77e3b7f055f824e4d6587faa73bd4aacd0c307e8 Mon Sep 17 00:00:00 2001
-From: hayeswang <hayeswang@realtek.com>
-Date: Wed, 9 Jul 2014 14:52:51 +0800
-Subject: [PATCH] r8169: disable L23
-
-For RTL8411, RTL8111G, RTL8402, RTL8105, and RTL8106, disable the feature
-of entering the L2/L3 link state of the PCIe. When the nic starts the process
-of entering the L2/L3 link state and the PCI reset occurs before the work
-is finished, the work would be queued and continue after the next the PCI
-reset occurs. This causes the device stays in L2/L3 link state, and the system
-couldn't find the device.
-
-Signed-off-by: Hayes Wang <hayeswang@realtek.com>
-Acked-by: Francois Romieu <romieu@fr.zoreil.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/realtek/r8169.c | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index 3ff7bc3..b94f658 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -538,6 +538,7 @@ enum rtl_register_content {
-       MagicPacket     = (1 << 5),     /* Wake up when receives a Magic Packet */
-       LinkUp          = (1 << 4),     /* Wake up when the cable connection is re-established */
-       Jumbo_En0       = (1 << 2),     /* 8168 only. Reserved in the 8168b */
-+      Rdy_to_L23      = (1 << 1),     /* L23 Enable */
-       Beacon_en       = (1 << 0),     /* 8168 only. Reserved in the 8168b */
-       /* Config4 register */
-@@ -4897,6 +4898,21 @@ static void rtl_enable_clock_request(struct pci_dev *pdev)
-                                PCI_EXP_LNKCTL_CLKREQ_EN);
- }
-+static void rtl_pcie_state_l2l3_enable(struct rtl8169_private *tp, bool enable)
-+{
-+      void __iomem *ioaddr = tp->mmio_addr;
-+      u8 data;
-+
-+      data = RTL_R8(Config3);
-+
-+      if (enable)
-+              data |= Rdy_to_L23;
-+      else
-+              data &= ~Rdy_to_L23;
-+
-+      RTL_W8(Config3, data);
-+}
-+
- #define R8168_CPCMD_QUIRK_MASK (\
-       EnableBist | \
-       Mac_dbgo_oe | \
-@@ -5246,6 +5262,7 @@ static void rtl_hw_start_8411(struct rtl8169_private *tp)
-       };
-       rtl_hw_start_8168f(tp);
-+      rtl_pcie_state_l2l3_enable(tp, false);
-       rtl_ephy_init(tp, e_info_8168f_1, ARRAY_SIZE(e_info_8168f_1));
-@@ -5284,6 +5301,8 @@ static void rtl_hw_start_8168g_1(struct rtl8169_private *tp)
-       rtl_w1w0_eri(tp, 0x2fc, ERIAR_MASK_0001, 0x01, 0x06, ERIAR_EXGMAC);
-       rtl_w1w0_eri(tp, 0x1b0, ERIAR_MASK_0011, 0x0000, 0x1000, ERIAR_EXGMAC);
-+
-+      rtl_pcie_state_l2l3_enable(tp, false);
- }
- static void rtl_hw_start_8168g_2(struct rtl8169_private *tp)
-@@ -5536,6 +5555,8 @@ static void rtl_hw_start_8105e_1(struct rtl8169_private *tp)
-       RTL_W8(DLLPR, RTL_R8(DLLPR) | PFM_EN);
-       rtl_ephy_init(tp, e_info_8105e_1, ARRAY_SIZE(e_info_8105e_1));
-+
-+      rtl_pcie_state_l2l3_enable(tp, false);
- }
- static void rtl_hw_start_8105e_2(struct rtl8169_private *tp)
-@@ -5571,6 +5592,8 @@ static void rtl_hw_start_8402(struct rtl8169_private *tp)
-       rtl_eri_write(tp, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC);
-       rtl_eri_write(tp, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC);
-       rtl_w1w0_eri(tp, 0x0d4, ERIAR_MASK_0011, 0x0e00, 0xff00, ERIAR_EXGMAC);
-+
-+      rtl_pcie_state_l2l3_enable(tp, false);
- }
- static void rtl_hw_start_8106(struct rtl8169_private *tp)
-@@ -5583,6 +5606,8 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)
-       RTL_W32(MISC, (RTL_R32(MISC) | DISABLE_LAN_EN) & ~EARLY_TALLY_EN);
-       RTL_W8(MCU, RTL_R8(MCU) | EN_NDP | EN_OOB_RESET);
-       RTL_W8(DLLPR, RTL_R8(DLLPR) & ~PFM_EN);
-+
-+      rtl_pcie_state_l2l3_enable(tp, false);
- }
- static void rtl_hw_start_8101(struct net_device *dev)
--- 
-1.8.5.2
-
diff --git a/src/patches/linux-3.14.43_SuperSSpeed_NOTRIM.patch b/src/patches/linux-3.14.43_SuperSSpeed_NOTRIM.patch
deleted file mode 100644 (file)
index 1745bbc..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -Naur linux-3.14.43.org/drivers/ata/libata-core.c linux-3.14.43/drivers/ata/libata-core.c
---- linux-3.14.43.org/drivers/ata/libata-core.c        2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/drivers/ata/libata-core.c    2015-07-11 19:15:01.450041507 +0200
-@@ -4229,6 +4229,9 @@
-       { "Micron_M550*",               NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
-       { "Crucial_CT*M550SSD*",        NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
-+      /* devices that don't properly handle TRIM commands */
-+      { "SuperSSpeed S238*",          NULL,   ATA_HORKAGE_NOTRIM, },
-+
-       /*
-        * Some WD SATA-I drives spin up and down erratically when the link
-        * is put into the slumber mode.  We don't have full list of the
-diff -Naur linux-3.14.43.org/drivers/ata/libata-scsi.c linux-3.14.43/drivers/ata/libata-scsi.c
---- linux-3.14.43.org/drivers/ata/libata-scsi.c        2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/drivers/ata/libata-scsi.c    2015-07-11 20:47:22.570021716 +0200
-@@ -2510,11 +2513,15 @@
-               rbuf[14] = (lowest_aligned >> 8) & 0x3f;
-               rbuf[15] = lowest_aligned;
--              if (ata_id_has_trim(args->id)) {
--                      rbuf[14] |= 0x80; /* TPE */
--                      if (ata_id_has_zero_after_trim(args->id))
--                              rbuf[14] |= 0x40; /* TPRZ */
-+
-+              if (!(dev->horkage & ATA_HORKAGE_NOTRIM)) { 
-+                      if (ata_id_has_trim(args->id)) {
-+                              rbuf[14] |= 0x80; /* TPE */
-+
-+                              if (ata_id_has_zero_after_trim(args->id))
-+                                      rbuf[14] |= 0x40; /* TPRZ */
-+                      }
-               }
-       }
-diff -Naur linux-3.14.43.org/include/linux/libata.h linux-3.14.43/include/linux/libata.h
---- linux-3.14.43.org/include/linux/libata.h   2015-05-17 18:54:01.000000000 +0200
-+++ linux-3.14.43/include/linux/libata.h       2015-07-11 19:13:03.190682173 +0200
-@@ -421,6 +421,7 @@
-       ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19),    /* don't use queued TRIM */
-       ATA_HORKAGE_NOLPM       = (1 << 20),    /* don't use LPM */
-       ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21),  /* some WDs have broken LPM */
-+      ATA_HORKAGE_NOTRIM      = (1 << 22),    /* don't use TRIM */
-        /* DMA mask for user DMA control: User visible values; DO NOT
-           renumber */
diff --git a/src/patches/linux-3.14.43_new_qtrim_blacklist.patch b/src/patches/linux-3.14.43_new_qtrim_blacklist.patch
deleted file mode 100644 (file)
index f497070..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -Naur linux-3.14.43.org/drivers/ata/libata-core.c linux-3.14.43/drivers/ata/libata-core.c
---- linux-3.14.43.org/drivers/ata/libata-core.c        2015-07-13 17:58:28.126607225 +0200
-+++ linux-3.14.43/drivers/ata/libata-core.c    2015-07-13 18:06:07.430782102 +0200
-@@ -4225,9 +4225,11 @@
-       /* devices that don't properly handle queued TRIM commands */
-       { "Micron_M500*",               NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
--      { "Crucial_CT???M500SSD*",      NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
--      { "Micron_M550*",               NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
--      { "Crucial_CT*M550SSD*",        NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
-+      { "Crucial_CT*M500*",           NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
-+      { "Micron_M5[15]0*",            "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+      { "Crucial_CT*M550*",           "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+      { "Crucial_CT*MX100*",          "MU01", ATA_HORKAGE_NO_NCQ_TRIM, },
-+      { "Samsung SSD 8*",             NULL,   ATA_HORKAGE_NO_NCQ_TRIM, },
-       /* devices that don't properly handle TRIM commands */
-       { "SuperSSpeed S238*",          NULL,   ATA_HORKAGE_NOTRIM, },
diff --git a/src/patches/linux-3.14.65-k10temp_add_16H_M30H_id.patch b/src/patches/linux-3.14.65-k10temp_add_16H_M30H_id.patch
deleted file mode 100644 (file)
index 878f44e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur linux-3.14.65.org/drivers/hwmon/k10temp.c linux-3.14.65/drivers/hwmon/k10temp.c
---- linux-3.14.65.org/drivers/hwmon/k10temp.c  2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/drivers/hwmon/k10temp.c      2016-03-25 15:52:21.920190727 +0100
-@@ -212,6 +212,8 @@
-       { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) },
-       { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F3) },
-       { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
-+//    { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
-+      { PCI_VDEVICE(AMD, 0x1583) },
-       {}
- };
- MODULE_DEVICE_TABLE(pci, k10temp_id_table);
diff --git a/src/patches/linux-3.14.77-gsrec_tcp_input_access_once_rw.patch b/src/patches/linux-3.14.77-gsrec_tcp_input_access_once_rw.patch
deleted file mode 100644 (file)
index 19d0448..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -Naur linux-3.14.77.org/net/ipv4/tcp_input.c linux-3.14.77/net/ipv4/tcp_input.c
---- linux-3.14.77.org/net/ipv4/tcp_input.c     2016-08-21 19:58:45.000000000 +0200
-+++ linux-3.14.77/net/ipv4/tcp_input.c 2016-08-21 21:11:24.336757369 +0200
-@@ -3299,12 +3299,12 @@
-               u32 half = (sysctl_tcp_challenge_ack_limit + 1) >> 1;
-               challenge_timestamp = now;
--              ACCESS_ONCE(challenge_count) = half +
-+              ACCESS_ONCE_RW(challenge_count) = half +
-                                 prandom_u32_max(sysctl_tcp_challenge_ack_limit);
-       }
-       count = ACCESS_ONCE(challenge_count);
-       if (count > 0) {
--              ACCESS_ONCE(challenge_count) = count - 1;
-+              ACCESS_ONCE_RW(challenge_count) = count - 1;
-               NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPCHALLENGEACK);
-               tcp_send_ack(sk);
-       }
diff --git a/src/patches/linux-3.14.79_mmc_remove_EXT_CSD_revision_check.patch b/src/patches/linux-3.14.79_mmc_remove_EXT_CSD_revision_check.patch
deleted file mode 100644 (file)
index fbade3a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -Naur linux-3.14.79.org/drivers/mmc/core/mmc.c linux-3.14.79/drivers/mmc/core/mmc.c
---- linux-3.14.79.org/drivers/mmc/core/mmc.c   2016-09-11 10:00:18.000000000 +0200
-+++ linux-3.14.79/drivers/mmc/core/mmc.c       2017-01-19 18:15:07.940781595 +0100
-@@ -297,12 +297,6 @@
-       }
-       card->ext_csd.rev = ext_csd[EXT_CSD_REV];
--      if (card->ext_csd.rev > 7) {
--              pr_err("%s: unrecognised EXT_CSD revision %d\n",
--                      mmc_hostname(card->host), card->ext_csd.rev);
--              err = -EINVAL;
--              goto out;
--      }
-       card->ext_csd.raw_sectors[0] = ext_csd[EXT_CSD_SEC_CNT + 0];
-       card->ext_csd.raw_sectors[1] = ext_csd[EXT_CSD_SEC_CNT + 1];
diff --git a/src/patches/linux-3.2.33_ipg-fix-driver-name.patch b/src/patches/linux-3.2.33_ipg-fix-driver-name.patch
deleted file mode 100644 (file)
index 95e6107..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Patch by Arne Fitzenreiter <arne_f@ipfire.org>
-Fix PHYSDEVDRIVER from "Sundance IPG ..." to the modulname (ipg)
-
-diff -Naur linux-3.2.33.org/drivers/net/ethernet/icplus/ipg.c linux-3.2.33/drivers/net/ethernet/icplus/ipg.c
---- linux-3.2.33.org/drivers/net/ethernet/icplus/ipg.c 2012-10-31 00:27:11.000000000 +0100
-+++ linux-3.2.33/drivers/net/ethernet/icplus/ipg.c     2012-11-05 20:02:36.529101528 +0100
-@@ -2304,7 +2304,7 @@
- }
- static struct pci_driver ipg_pci_driver = {
--      .name           = IPG_DRIVER_NAME,
-+      .name           = DRV_NAME,
-       .id_table       = ipg_pci_tbl,
-       .probe          = ipg_probe,
-       .remove         = __devexit_p(ipg_remove),
diff --git a/src/patches/linux-3.7-disable-compat_vdso.patch b/src/patches/linux-3.7-disable-compat_vdso.patch
deleted file mode 100644 (file)
index c06bd8b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-No need to wrap vdso calls as gentoo does not use any version of 
-glibc <=2.3.3
----
-From: Gordon Malm <gengor@gentoo.org>
-From: Kerin Millar <kerframil@gmail.com>
-From: Jory A. Pratt    <anarchy@gentoo.org>
-
-COMPAT_VDSO is inappropriate for any modern Hardened Gentoo system. It
-conflicts with various parts of PaX, crashing the system if enabled
-while PaX's NOEXEC or UDEREF features are active. Moreover, it prevents
-a number of important PaX options from appearing in the configuration
-menu, including all PaX NOEXEC implementations. Unfortunately, the
-reason for the disappearance of these PaX configuration options is
-often far from obvious to inexperienced users.
-
-Therefore, we disable the COMPAT_VDSO menu entry entirely. However,
-COMPAT_VDSO operation can still be enabled via bootparam and sysctl
-interfaces. Consequently, we must also disable the ability to select
-COMPAT_VDSO operation at boot or runtime. Here we patch the kernel so
-that selecting COMPAT_VDSO operation at boot/runtime has no effect if
-conflicting PaX options are enabled, leaving VDSO_ENABLED operation
-intact.
-
-Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138
-
-diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig
---- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100
-+++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100
-@@ -1651,17 +1651,8 @@
- config COMPAT_VDSO
-       def_bool n
--      prompt "Compat VDSO support"
-       depends on X86_32 || IA32_EMULATION
-       depends on !PAX_PAGEEXEC && !PAX_SEGMEXEC && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
--      ---help---
--        Map the 32-bit VDSO to the predictable old-style address too.
--
--        Say N here if you are running a sufficiently recent glibc
--        version (2.3.3 or later), to remove the high-mapped
--        VDSO mapping and to exclusively use the randomized VDSO.
--
--        If unsure, say Y.
- config CMDLINE_BOOL
-       bool "Built-in kernel command line"
diff --git a/src/patches/linux-genksyms_fix_typeof_handling.patch b/src/patches/linux-genksyms_fix_typeof_handling.patch
deleted file mode 100644 (file)
index 3cf3403..0000000
+++ /dev/null
@@ -1,1360 +0,0 @@
-From dc53324060f324e8af6867f57bf4891c13c6ef18 Mon Sep 17 00:00:00 2001
-From: Jan Beulich <JBeulich@suse.com>
-Date: Thu, 3 Apr 2014 14:46:37 -0700
-Subject: genksyms: fix typeof() handling
-
-Recent increased use of typeof() throughout the tree resulted in a
-number of symbols (25 in a typical distro config of ours) not getting a
-proper CRC calculated for them anymore, due to the parser in genksyms
-not coping with several of these uses (interestingly in the majority of
-[if not all] cases the problem is due to the use of typeof() in code
-preceding a certain export, not in the declaration/definition of the
-exported function/object itself; I wasn't able to find a way to address
-this more general parser shortcoming).
-
-The use of parameter_declaration is a little more relaxed than would be
-ideal (permitting not just a bare type specification, but also one with
-identifier), but since the same code is being passed through an actual
-compiler, there's no apparent risk of allowing through any broken code.
-
-Otoh using parameter_declaration instead of the ad hoc
-"decl_specifier_seq '*'" / "decl_specifier_seq" pair allows all types to
-be handled rather than just plain ones and pointers to plain ones.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Cc: Michal Marek <mmarek@suse.cz>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
- scripts/genksyms/keywords.gperf          |   5 +-
- scripts/genksyms/keywords.hash.c_shipped | 133 +++----
- scripts/genksyms/lex.l                   |  51 ++-
- scripts/genksyms/lex.lex.c_shipped       |  51 ++-
- scripts/genksyms/parse.tab.c_shipped     | 608 ++++++++++++++++---------------
- scripts/genksyms/parse.tab.h_shipped     |  29 +-
- scripts/genksyms/parse.y                 |   5 +-
- 7 files changed, 498 insertions(+), 384 deletions(-)
-
-diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf
-index 3e77a94..a9096d9 100644
---- a/scripts/genksyms/keywords.gperf
-+++ b/scripts/genksyms/keywords.gperf
-@@ -23,6 +23,8 @@ __inline, INLINE_KEYW
- __inline__, INLINE_KEYW
- __signed, SIGNED_KEYW
- __signed__, SIGNED_KEYW
-+__typeof, TYPEOF_KEYW
-+__typeof__, TYPEOF_KEYW
- __volatile, VOLATILE_KEYW
- __volatile__, VOLATILE_KEYW
- # According to rth, c99 defines _Bool, __restrict, __restrict__, restrict.  KAO
-@@ -51,9 +53,8 @@ signed, SIGNED_KEYW
- static, STATIC_KEYW
- struct, STRUCT_KEYW
- typedef, TYPEDEF_KEYW
-+typeof, TYPEOF_KEYW
- union, UNION_KEYW
- unsigned, UNSIGNED_KEYW
- void, VOID_KEYW
- volatile, VOLATILE_KEYW
--typeof, TYPEOF_KEYW
--__typeof__, TYPEOF_KEYW
-diff --git a/scripts/genksyms/keywords.hash.c_shipped b/scripts/genksyms/keywords.hash.c_shipped
-index 8206260..e9452482 100644
---- a/scripts/genksyms/keywords.hash.c_shipped
-+++ b/scripts/genksyms/keywords.hash.c_shipped
-@@ -34,7 +34,7 @@ struct resword;
- static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
- #line 8 "scripts/genksyms/keywords.gperf"
- struct resword { const char *name; int token; };
--/* maximum key range = 64, duplicates = 0 */
-+/* maximum key range = 98, duplicates = 0 */
- #ifdef __GNUC__
- __inline
-@@ -48,32 +48,32 @@ is_reserved_hash (register const char *str, register unsigned int len)
- {
-   static const unsigned char asso_values[] =
-     {
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67,  0,
--      67, 67, 67, 67, 67, 67, 15, 67, 67, 67,
--       0, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67,  0, 67,  0, 67,  5,
--      25, 20, 15, 30, 67, 15, 67, 67, 10,  0,
--      10, 40, 20, 67, 10,  5,  0, 10, 15, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
--      67, 67, 67, 67, 67, 67
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101,   0,
-+      101, 101, 101, 101, 101, 101,  15, 101, 101, 101,
-+        0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101,   0, 101,   0, 101,   5,
-+       25,  20,  55,  30, 101,  15, 101, 101,  10,   0,
-+       10,  40,  10, 101,  10,   5,   0,  10,  15, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-+      101, 101, 101, 101, 101, 101
-     };
-   return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
- }
-@@ -89,17 +89,17 @@ is_reserved_word (register const char *str, register unsigned int len)
- {
-   enum
-     {
--      TOTAL_KEYWORDS = 45,
-+      TOTAL_KEYWORDS = 46,
-       MIN_WORD_LENGTH = 3,
-       MAX_WORD_LENGTH = 24,
-       MIN_HASH_VALUE = 3,
--      MAX_HASH_VALUE = 66
-+      MAX_HASH_VALUE = 100
-     };
-   static const struct resword wordlist[] =
-     {
-       {""}, {""}, {""},
--#line 33 "scripts/genksyms/keywords.gperf"
-+#line 35 "scripts/genksyms/keywords.gperf"
-       {"asm", ASM_KEYW},
-       {""},
- #line 15 "scripts/genksyms/keywords.gperf"
-@@ -108,7 +108,7 @@ is_reserved_word (register const char *str, register unsigned int len)
- #line 16 "scripts/genksyms/keywords.gperf"
-       {"__asm__", ASM_KEYW},
-       {""}, {""},
--#line 59 "scripts/genksyms/keywords.gperf"
-+#line 27 "scripts/genksyms/keywords.gperf"
-       {"__typeof__", TYPEOF_KEYW},
-       {""},
- #line 19 "scripts/genksyms/keywords.gperf"
-@@ -119,31 +119,31 @@ is_reserved_word (register const char *str, register unsigned int len)
-       {"__const__", CONST_KEYW},
- #line 25 "scripts/genksyms/keywords.gperf"
-       {"__signed__", SIGNED_KEYW},
--#line 51 "scripts/genksyms/keywords.gperf"
-+#line 53 "scripts/genksyms/keywords.gperf"
-       {"static", STATIC_KEYW},
-       {""},
--#line 46 "scripts/genksyms/keywords.gperf"
-+#line 48 "scripts/genksyms/keywords.gperf"
-       {"int", INT_KEYW},
--#line 39 "scripts/genksyms/keywords.gperf"
-+#line 41 "scripts/genksyms/keywords.gperf"
-       {"char", CHAR_KEYW},
--#line 40 "scripts/genksyms/keywords.gperf"
-+#line 42 "scripts/genksyms/keywords.gperf"
-       {"const", CONST_KEYW},
--#line 52 "scripts/genksyms/keywords.gperf"
-+#line 54 "scripts/genksyms/keywords.gperf"
-       {"struct", STRUCT_KEYW},
--#line 31 "scripts/genksyms/keywords.gperf"
-+#line 33 "scripts/genksyms/keywords.gperf"
-       {"__restrict__", RESTRICT_KEYW},
--#line 32 "scripts/genksyms/keywords.gperf"
-+#line 34 "scripts/genksyms/keywords.gperf"
-       {"restrict", RESTRICT_KEYW},
- #line 12 "scripts/genksyms/keywords.gperf"
-       {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
- #line 23 "scripts/genksyms/keywords.gperf"
-       {"__inline__", INLINE_KEYW},
-       {""},
--#line 27 "scripts/genksyms/keywords.gperf"
-+#line 29 "scripts/genksyms/keywords.gperf"
-       {"__volatile__", VOLATILE_KEYW},
- #line 10 "scripts/genksyms/keywords.gperf"
-       {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
--#line 30 "scripts/genksyms/keywords.gperf"
-+#line 32 "scripts/genksyms/keywords.gperf"
-       {"_restrict", RESTRICT_KEYW},
-       {""},
- #line 17 "scripts/genksyms/keywords.gperf"
-@@ -152,56 +152,65 @@ is_reserved_word (register const char *str, register unsigned int len)
-       {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
- #line 21 "scripts/genksyms/keywords.gperf"
-       {"__extension__", EXTENSION_KEYW},
--#line 42 "scripts/genksyms/keywords.gperf"
-+#line 44 "scripts/genksyms/keywords.gperf"
-       {"enum", ENUM_KEYW},
- #line 13 "scripts/genksyms/keywords.gperf"
-       {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
--#line 43 "scripts/genksyms/keywords.gperf"
-+#line 45 "scripts/genksyms/keywords.gperf"
-       {"extern", EXTERN_KEYW},
-       {""},
- #line 24 "scripts/genksyms/keywords.gperf"
-       {"__signed", SIGNED_KEYW},
- #line 14 "scripts/genksyms/keywords.gperf"
-       {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
--#line 54 "scripts/genksyms/keywords.gperf"
-+#line 57 "scripts/genksyms/keywords.gperf"
-       {"union", UNION_KEYW},
--#line 58 "scripts/genksyms/keywords.gperf"
--      {"typeof", TYPEOF_KEYW},
--#line 53 "scripts/genksyms/keywords.gperf"
--      {"typedef", TYPEDEF_KEYW},
-+      {""}, {""},
- #line 22 "scripts/genksyms/keywords.gperf"
-       {"__inline", INLINE_KEYW},
--#line 38 "scripts/genksyms/keywords.gperf"
-+#line 40 "scripts/genksyms/keywords.gperf"
-       {"auto", AUTO_KEYW},
--#line 26 "scripts/genksyms/keywords.gperf"
-+#line 28 "scripts/genksyms/keywords.gperf"
-       {"__volatile", VOLATILE_KEYW},
-       {""}, {""},
--#line 55 "scripts/genksyms/keywords.gperf"
-+#line 58 "scripts/genksyms/keywords.gperf"
-       {"unsigned", UNSIGNED_KEYW},
-       {""},
--#line 49 "scripts/genksyms/keywords.gperf"
-+#line 51 "scripts/genksyms/keywords.gperf"
-       {"short", SHORT_KEYW},
--#line 45 "scripts/genksyms/keywords.gperf"
-+#line 47 "scripts/genksyms/keywords.gperf"
-       {"inline", INLINE_KEYW},
-       {""},
--#line 57 "scripts/genksyms/keywords.gperf"
-+#line 60 "scripts/genksyms/keywords.gperf"
-       {"volatile", VOLATILE_KEYW},
--#line 47 "scripts/genksyms/keywords.gperf"
-+#line 49 "scripts/genksyms/keywords.gperf"
-       {"long", LONG_KEYW},
--#line 29 "scripts/genksyms/keywords.gperf"
-+#line 31 "scripts/genksyms/keywords.gperf"
-       {"_Bool", BOOL_KEYW},
-       {""}, {""},
--#line 48 "scripts/genksyms/keywords.gperf"
-+#line 50 "scripts/genksyms/keywords.gperf"
-       {"register", REGISTER_KEYW},
--#line 56 "scripts/genksyms/keywords.gperf"
-+#line 59 "scripts/genksyms/keywords.gperf"
-       {"void", VOID_KEYW},
--#line 44 "scripts/genksyms/keywords.gperf"
--      {"float", FLOAT_KEYW},
--#line 41 "scripts/genksyms/keywords.gperf"
-+      {""},
-+#line 43 "scripts/genksyms/keywords.gperf"
-       {"double", DOUBLE_KEYW},
-+      {""},
-+#line 26 "scripts/genksyms/keywords.gperf"
-+      {"__typeof", TYPEOF_KEYW},
-+      {""}, {""},
-+#line 52 "scripts/genksyms/keywords.gperf"
-+      {"signed", SIGNED_KEYW},
-       {""}, {""}, {""}, {""},
--#line 50 "scripts/genksyms/keywords.gperf"
--      {"signed", SIGNED_KEYW}
-+#line 56 "scripts/genksyms/keywords.gperf"
-+      {"typeof", TYPEOF_KEYW},
-+#line 55 "scripts/genksyms/keywords.gperf"
-+      {"typedef", TYPEDEF_KEYW},
-+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-+#line 46 "scripts/genksyms/keywords.gperf"
-+      {"float", FLOAT_KEYW}
-     };
-   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-diff --git a/scripts/genksyms/lex.l b/scripts/genksyms/lex.l
-index f770071..e583565 100644
---- a/scripts/genksyms/lex.l
-+++ b/scripts/genksyms/lex.l
-@@ -129,8 +129,9 @@ int
- yylex(void)
- {
-   static enum {
--    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
--    ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-+    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
-+    ST_BRACKET, ST_BRACE, ST_EXPRESSION,
-+    ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-     ST_TABLE_5, ST_TABLE_6
-   } lexstate = ST_NOTSTARTED;
-@@ -198,6 +199,10 @@ repeat:
-                   lexstate = ST_ASM;
-                   count = 0;
-                   goto repeat;
-+                case TYPEOF_KEYW:
-+                  lexstate = ST_TYPEOF;
-+                  count = 0;
-+                  goto repeat;
-                 case STRUCT_KEYW:
-                 case UNION_KEYW:
-@@ -284,6 +289,48 @@ repeat:
-       }
-       break;
-+    case ST_TYPEOF:
-+      switch (token)
-+      {
-+      case '(':
-+        if ( ++count == 1 )
-+          lexstate = ST_TYPEOF_1;
-+        else
-+          APP;
-+        goto repeat;
-+      case ')':
-+        APP;
-+        if (--count == 0)
-+          {
-+            lexstate = ST_NORMAL;
-+            token = TYPEOF_PHRASE;
-+            break;
-+          }
-+        goto repeat;
-+      default:
-+        APP;
-+        goto repeat;
-+      }
-+      break;
-+
-+    case ST_TYPEOF_1:
-+      if (token == IDENT)
-+      {
-+        if (is_reserved_word(yytext, yyleng)
-+            || find_symbol(yytext, SYM_TYPEDEF, 1))
-+          {
-+            yyless(0);
-+            unput('(');
-+            lexstate = ST_NORMAL;
-+            token = TYPEOF_KEYW;
-+            break;
-+          }
-+        _APP("(", 1);
-+      }
-+      APP;
-+      lexstate = ST_TYPEOF;
-+      goto repeat;
-+
-     case ST_BRACKET:
-       APP;
-       switch (token)
-diff --git a/scripts/genksyms/lex.lex.c_shipped b/scripts/genksyms/lex.lex.c_shipped
-index 0bf4157..f82740a 100644
---- a/scripts/genksyms/lex.lex.c_shipped
-+++ b/scripts/genksyms/lex.lex.c_shipped
-@@ -1938,8 +1938,9 @@ int
- yylex(void)
- {
-   static enum {
--    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
--    ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-+    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
-+    ST_BRACKET, ST_BRACE, ST_EXPRESSION,
-+    ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
-     ST_TABLE_5, ST_TABLE_6
-   } lexstate = ST_NOTSTARTED;
-@@ -2007,6 +2008,10 @@ repeat:
-                   lexstate = ST_ASM;
-                   count = 0;
-                   goto repeat;
-+                case TYPEOF_KEYW:
-+                  lexstate = ST_TYPEOF;
-+                  count = 0;
-+                  goto repeat;
-                 case STRUCT_KEYW:
-                 case UNION_KEYW:
-@@ -2093,6 +2098,48 @@ repeat:
-       }
-       break;
-+    case ST_TYPEOF:
-+      switch (token)
-+      {
-+      case '(':
-+        if ( ++count == 1 )
-+          lexstate = ST_TYPEOF_1;
-+        else
-+          APP;
-+        goto repeat;
-+      case ')':
-+        APP;
-+        if (--count == 0)
-+          {
-+            lexstate = ST_NORMAL;
-+            token = TYPEOF_PHRASE;
-+            break;
-+          }
-+        goto repeat;
-+      default:
-+        APP;
-+        goto repeat;
-+      }
-+      break;
-+
-+    case ST_TYPEOF_1:
-+      if (token == IDENT)
-+      {
-+        if (is_reserved_word(yytext, yyleng)
-+            || find_symbol(yytext, SYM_TYPEDEF, 1))
-+          {
-+            yyless(0);
-+            unput('(');
-+            lexstate = ST_NORMAL;
-+            token = TYPEOF_KEYW;
-+            break;
-+          }
-+        _APP("(", 1);
-+      }
-+      APP;
-+      lexstate = ST_TYPEOF;
-+      goto repeat;
-+
-     case ST_BRACKET:
-       APP;
-       switch (token)
-diff --git a/scripts/genksyms/parse.tab.c_shipped b/scripts/genksyms/parse.tab.c_shipped
-index ece53c7..c9f0f0ce 100644
---- a/scripts/genksyms/parse.tab.c_shipped
-+++ b/scripts/genksyms/parse.tab.c_shipped
-@@ -1,8 +1,8 @@
--/* A Bison parser, made by GNU Bison 2.5.  */
-+/* A Bison parser, made by GNU Bison 2.5.1.  */
- /* Bison implementation for Yacc-like parsers in C
-    
--      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-    
-    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
-@@ -44,7 +44,7 @@
- #define YYBISON 1
- /* Bison version.  */
--#define YYBISON_VERSION "2.5"
-+#define YYBISON_VERSION "2.5.1"
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
-@@ -117,6 +117,14 @@ static void record_compound(struct string_list **keyw,
-+# ifndef YY_NULL
-+#  if defined __cplusplus && 201103L <= __cplusplus
-+#   define YY_NULL nullptr
-+#  else
-+#   define YY_NULL 0
-+#  endif
-+# endif
-+
- /* Enabling traces.  */
- #ifndef YYDEBUG
- # define YYDEBUG 1
-@@ -171,18 +179,19 @@ static void record_compound(struct string_list **keyw,
-      EXPORT_SYMBOL_KEYW = 284,
-      ASM_PHRASE = 285,
-      ATTRIBUTE_PHRASE = 286,
--     BRACE_PHRASE = 287,
--     BRACKET_PHRASE = 288,
--     EXPRESSION_PHRASE = 289,
--     CHAR = 290,
--     DOTS = 291,
--     IDENT = 292,
--     INT = 293,
--     REAL = 294,
--     STRING = 295,
--     TYPE = 296,
--     OTHER = 297,
--     FILENAME = 298
-+     TYPEOF_PHRASE = 287,
-+     BRACE_PHRASE = 288,
-+     BRACKET_PHRASE = 289,
-+     EXPRESSION_PHRASE = 290,
-+     CHAR = 291,
-+     DOTS = 292,
-+     IDENT = 293,
-+     INT = 294,
-+     REAL = 295,
-+     STRING = 296,
-+     TYPE = 297,
-+     OTHER = 298,
-+     FILENAME = 299
-    };
- #endif
-@@ -304,6 +313,7 @@ YYID (yyi)
- #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-      || defined __cplusplus || defined _MSC_VER)
- #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
- #     ifndef EXIT_SUCCESS
- #      define EXIT_SUCCESS 0
- #     endif
-@@ -395,20 +405,20 @@ union yyalloc
- #endif
- #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
--/* Copy COUNT objects from FROM to TO.  The source and destination do
-+/* Copy COUNT objects from SRC to DST.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
- #  if defined __GNUC__ && 1 < __GNUC__
--#   define YYCOPY(To, From, Count) \
--      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+#   define YYCOPY(Dst, Src, Count) \
-+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
- #  else
--#   define YYCOPY(To, From, Count)            \
--      do                                      \
--      {                                       \
--        YYSIZE_T yyi;                         \
--        for (yyi = 0; yyi < (Count); yyi++)   \
--          (To)[yyi] = (From)[yyi];            \
--      }                                       \
-+#   define YYCOPY(Dst, Src, Count)              \
-+      do                                        \
-+        {                                       \
-+          YYSIZE_T yyi;                         \
-+          for (yyi = 0; yyi < (Count); yyi++)   \
-+            (Dst)[yyi] = (Src)[yyi];            \
-+        }                                       \
-       while (YYID (0))
- #  endif
- # endif
-@@ -417,20 +427,20 @@ union yyalloc
- /* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  4
- /* YYLAST -- Last index in YYTABLE.  */
--#define YYLAST   532
-+#define YYLAST   514
- /* YYNTOKENS -- Number of terminals.  */
--#define YYNTOKENS  53
-+#define YYNTOKENS  54
- /* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  49
- /* YYNRULES -- Number of rules.  */
- #define YYNRULES  132
- /* YYNRULES -- Number of states.  */
--#define YYNSTATES  188
-+#define YYNSTATES  187
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
--#define YYMAXUTOK   298
-+#define YYMAXUTOK   299
- #define YYTRANSLATE(YYX)                                              \
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-@@ -442,15 +452,15 @@ static const yytype_uint8 yytranslate[] =
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
--      47,    49,    48,     2,    46,     2,     2,     2,     2,     2,
--       2,     2,     2,     2,     2,     2,     2,     2,    52,    44,
--       2,    50,     2,     2,     2,     2,     2,     2,     2,     2,
-+      48,    49,    50,     2,    47,     2,     2,     2,     2,     2,
-+       2,     2,     2,     2,     2,     2,     2,     2,    53,    45,
-+       2,    51,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
--       2,     2,     2,    51,     2,    45,     2,     2,     2,     2,
-+       2,     2,     2,    52,     2,    46,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -467,7 +477,7 @@ static const yytype_uint8 yytranslate[] =
-        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
--      35,    36,    37,    38,    39,    40,    41,    42,    43
-+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44
- };
- #if YYDEBUG
-@@ -478,78 +488,77 @@ static const yytype_uint16 yyprhs[] =
-        0,     0,     3,     5,     8,     9,    12,    13,    18,    19,
-       23,    25,    27,    29,    31,    34,    37,    41,    42,    44,
-       46,    50,    55,    56,    58,    60,    63,    65,    67,    69,
--      71,    73,    75,    77,    79,    81,    87,    92,    95,    98,
--     101,   105,   109,   113,   116,   119,   122,   124,   126,   128,
--     130,   132,   134,   136,   138,   140,   142,   144,   147,   148,
--     150,   152,   155,   157,   159,   161,   163,   166,   168,   170,
--     175,   180,   183,   187,   191,   194,   196,   198,   200,   205,
--     210,   213,   217,   221,   224,   226,   230,   231,   233,   235,
--     239,   242,   245,   247,   248,   250,   252,   257,   262,   265,
--     269,   273,   277,   278,   280,   283,   287,   291,   292,   294,
--     296,   299,   303,   306,   307,   309,   311,   315,   318,   321,
--     323,   326,   327,   330,   334,   339,   341,   345,   347,   351,
--     354,   355,   357
-+      71,    73,    75,    77,    79,    81,    86,    88,    91,    94,
-+      97,   101,   105,   109,   112,   115,   118,   120,   122,   124,
-+     126,   128,   130,   132,   134,   136,   138,   140,   143,   144,
-+     146,   148,   151,   153,   155,   157,   159,   162,   164,   166,
-+     171,   176,   179,   183,   187,   190,   192,   194,   196,   201,
-+     206,   209,   213,   217,   220,   222,   226,   227,   229,   231,
-+     235,   238,   241,   243,   244,   246,   248,   253,   258,   261,
-+     265,   269,   273,   274,   276,   279,   283,   287,   288,   290,
-+     292,   295,   299,   302,   303,   305,   307,   311,   314,   317,
-+     319,   322,   323,   326,   330,   335,   337,   341,   343,   347,
-+     350,   351,   353
- };
- /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
- static const yytype_int8 yyrhs[] =
- {
--      54,     0,    -1,    55,    -1,    54,    55,    -1,    -1,    56,
--      57,    -1,    -1,    12,    23,    58,    60,    -1,    -1,    23,
--      59,    60,    -1,    60,    -1,    84,    -1,    99,    -1,   101,
--      -1,     1,    44,    -1,     1,    45,    -1,    64,    61,    44,
--      -1,    -1,    62,    -1,    63,    -1,    62,    46,    63,    -1,
--      74,   100,    95,    85,    -1,    -1,    65,    -1,    66,    -1,
--      65,    66,    -1,    67,    -1,    68,    -1,     5,    -1,    17,
--      -1,    21,    -1,    11,    -1,    14,    -1,    69,    -1,    73,
--      -1,    28,    47,    65,    48,    49,    -1,    28,    47,    65,
--      49,    -1,    22,    37,    -1,    24,    37,    -1,    10,    37,
--      -1,    22,    37,    87,    -1,    24,    37,    87,    -1,    10,
--      37,    96,    -1,    10,    96,    -1,    22,    87,    -1,    24,
--      87,    -1,     7,    -1,    19,    -1,    15,    -1,    16,    -1,
--      20,    -1,    25,    -1,    13,    -1,     9,    -1,    26,    -1,
--       6,    -1,    41,    -1,    48,    71,    -1,    -1,    72,    -1,
--      73,    -1,    72,    73,    -1,     8,    -1,    27,    -1,    31,
--      -1,    18,    -1,    70,    74,    -1,    75,    -1,    37,    -1,
--      75,    47,    78,    49,    -1,    75,    47,     1,    49,    -1,
--      75,    33,    -1,    47,    74,    49,    -1,    47,     1,    49,
--      -1,    70,    76,    -1,    77,    -1,    37,    -1,    41,    -1,
--      77,    47,    78,    49,    -1,    77,    47,     1,    49,    -1,
--      77,    33,    -1,    47,    76,    49,    -1,    47,     1,    49,
--      -1,    79,    36,    -1,    79,    -1,    80,    46,    36,    -1,
--      -1,    80,    -1,    81,    -1,    80,    46,    81,    -1,    65,
--      82,    -1,    70,    82,    -1,    83,    -1,    -1,    37,    -1,
--      41,    -1,    83,    47,    78,    49,    -1,    83,    47,     1,
--      49,    -1,    83,    33,    -1,    47,    82,    49,    -1,    47,
--       1,    49,    -1,    64,    74,    32,    -1,    -1,    86,    -1,
--      50,    34,    -1,    51,    88,    45,    -1,    51,     1,    45,
--      -1,    -1,    89,    -1,    90,    -1,    89,    90,    -1,    64,
--      91,    44,    -1,     1,    44,    -1,    -1,    92,    -1,    93,
--      -1,    92,    46,    93,    -1,    76,    95,    -1,    37,    94,
--      -1,    94,    -1,    52,    34,    -1,    -1,    95,    31,    -1,
--      51,    97,    45,    -1,    51,    97,    46,    45,    -1,    98,
--      -1,    97,    46,    98,    -1,    37,    -1,    37,    50,    34,
--      -1,    30,    44,    -1,    -1,    30,    -1,    29,    47,    37,
--      49,    44,    -1
-+      55,     0,    -1,    56,    -1,    55,    56,    -1,    -1,    57,
-+      58,    -1,    -1,    12,    23,    59,    61,    -1,    -1,    23,
-+      60,    61,    -1,    61,    -1,    85,    -1,   100,    -1,   102,
-+      -1,     1,    45,    -1,     1,    46,    -1,    65,    62,    45,
-+      -1,    -1,    63,    -1,    64,    -1,    63,    47,    64,    -1,
-+      75,   101,    96,    86,    -1,    -1,    66,    -1,    67,    -1,
-+      66,    67,    -1,    68,    -1,    69,    -1,     5,    -1,    17,
-+      -1,    21,    -1,    11,    -1,    14,    -1,    70,    -1,    74,
-+      -1,    28,    48,    82,    49,    -1,    32,    -1,    22,    38,
-+      -1,    24,    38,    -1,    10,    38,    -1,    22,    38,    88,
-+      -1,    24,    38,    88,    -1,    10,    38,    97,    -1,    10,
-+      97,    -1,    22,    88,    -1,    24,    88,    -1,     7,    -1,
-+      19,    -1,    15,    -1,    16,    -1,    20,    -1,    25,    -1,
-+      13,    -1,     9,    -1,    26,    -1,     6,    -1,    42,    -1,
-+      50,    72,    -1,    -1,    73,    -1,    74,    -1,    73,    74,
-+      -1,     8,    -1,    27,    -1,    31,    -1,    18,    -1,    71,
-+      75,    -1,    76,    -1,    38,    -1,    76,    48,    79,    49,
-+      -1,    76,    48,     1,    49,    -1,    76,    34,    -1,    48,
-+      75,    49,    -1,    48,     1,    49,    -1,    71,    77,    -1,
-+      78,    -1,    38,    -1,    42,    -1,    78,    48,    79,    49,
-+      -1,    78,    48,     1,    49,    -1,    78,    34,    -1,    48,
-+      77,    49,    -1,    48,     1,    49,    -1,    80,    37,    -1,
-+      80,    -1,    81,    47,    37,    -1,    -1,    81,    -1,    82,
-+      -1,    81,    47,    82,    -1,    66,    83,    -1,    71,    83,
-+      -1,    84,    -1,    -1,    38,    -1,    42,    -1,    84,    48,
-+      79,    49,    -1,    84,    48,     1,    49,    -1,    84,    34,
-+      -1,    48,    83,    49,    -1,    48,     1,    49,    -1,    65,
-+      75,    33,    -1,    -1,    87,    -1,    51,    35,    -1,    52,
-+      89,    46,    -1,    52,     1,    46,    -1,    -1,    90,    -1,
-+      91,    -1,    90,    91,    -1,    65,    92,    45,    -1,     1,
-+      45,    -1,    -1,    93,    -1,    94,    -1,    93,    47,    94,
-+      -1,    77,    96,    -1,    38,    95,    -1,    95,    -1,    53,
-+      35,    -1,    -1,    96,    31,    -1,    52,    98,    46,    -1,
-+      52,    98,    47,    46,    -1,    99,    -1,    98,    47,    99,
-+      -1,    38,    -1,    38,    51,    35,    -1,    30,    45,    -1,
-+      -1,    30,    -1,    29,    48,    38,    49,    45,    -1
- };
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
- static const yytype_uint16 yyrline[] =
- {
--       0,   123,   123,   124,   128,   128,   134,   134,   136,   136,
--     138,   139,   140,   141,   142,   143,   147,   161,   162,   166,
--     174,   187,   193,   194,   198,   199,   203,   209,   213,   214,
--     215,   216,   217,   221,   222,   223,   224,   228,   230,   232,
--     236,   238,   240,   245,   248,   249,   253,   254,   255,   256,
--     257,   258,   259,   260,   261,   262,   263,   267,   272,   273,
--     277,   278,   282,   282,   282,   283,   291,   292,   296,   305,
--     307,   309,   311,   313,   320,   321,   325,   326,   327,   329,
--     331,   333,   335,   340,   341,   342,   346,   347,   351,   352,
--     357,   362,   364,   368,   369,   377,   381,   383,   385,   387,
--     389,   394,   403,   404,   409,   414,   415,   419,   420,   424,
--     425,   429,   431,   436,   437,   441,   442,   446,   447,   448,
--     452,   456,   457,   461,   462,   466,   467,   470,   475,   483,
--     487,   488,   492
-+       0,   124,   124,   125,   129,   129,   135,   135,   137,   137,
-+     139,   140,   141,   142,   143,   144,   148,   162,   163,   167,
-+     175,   188,   194,   195,   199,   200,   204,   210,   214,   215,
-+     216,   217,   218,   222,   223,   224,   225,   229,   231,   233,
-+     237,   239,   241,   246,   249,   250,   254,   255,   256,   257,
-+     258,   259,   260,   261,   262,   263,   264,   268,   273,   274,
-+     278,   279,   283,   283,   283,   284,   292,   293,   297,   306,
-+     308,   310,   312,   314,   321,   322,   326,   327,   328,   330,
-+     332,   334,   336,   341,   342,   343,   347,   348,   352,   353,
-+     358,   363,   365,   369,   370,   378,   382,   384,   386,   388,
-+     390,   395,   404,   405,   410,   415,   416,   420,   421,   425,
-+     426,   430,   432,   437,   438,   442,   443,   447,   448,   449,
-+     453,   457,   458,   462,   463,   467,   468,   471,   476,   484,
-+     488,   489,   493
- };
- #endif
-@@ -565,9 +574,9 @@ static const char *const yytname[] =
-   "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
-   "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
-   "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
--  "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
-+  "ATTRIBUTE_PHRASE", "TYPEOF_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
-   "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
--  "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
-+  "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "')'", "'*'",
-   "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1",
-   "declaration1", "$@2", "$@3", "simple_declaration",
-   "init_declarator_list_opt", "init_declarator_list", "init_declarator",
-@@ -584,7 +593,7 @@ static const char *const yytname[] =
-   "member_declarator_list_opt", "member_declarator_list",
-   "member_declarator", "member_bitfield_declarator", "attribute_opt",
-   "enum_body", "enumerator_list", "enumerator", "asm_definition",
--  "asm_phrase_opt", "export_definition", 0
-+  "asm_phrase_opt", "export_definition", YY_NULL
- };
- #endif
-@@ -597,28 +606,28 @@ static const yytype_uint16 yytoknum[] =
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
--     295,   296,   297,   298,    59,   125,    44,    40,    42,    41,
--      61,   123,    58
-+     295,   296,   297,   298,   299,    59,   125,    44,    40,    41,
-+      42,    61,   123,    58
- };
- # endif
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
- static const yytype_uint8 yyr1[] =
- {
--       0,    53,    54,    54,    56,    55,    58,    57,    59,    57,
--      57,    57,    57,    57,    57,    57,    60,    61,    61,    62,
--      62,    63,    64,    64,    65,    65,    66,    66,    67,    67,
--      67,    67,    67,    68,    68,    68,    68,    68,    68,    68,
--      68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
--      69,    69,    69,    69,    69,    69,    69,    70,    71,    71,
--      72,    72,    73,    73,    73,    73,    74,    74,    75,    75,
--      75,    75,    75,    75,    76,    76,    77,    77,    77,    77,
--      77,    77,    77,    78,    78,    78,    79,    79,    80,    80,
--      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
--      83,    84,    85,    85,    86,    87,    87,    88,    88,    89,
--      89,    90,    90,    91,    91,    92,    92,    93,    93,    93,
--      94,    95,    95,    96,    96,    97,    97,    98,    98,    99,
--     100,   100,   101
-+       0,    54,    55,    55,    57,    56,    59,    58,    60,    58,
-+      58,    58,    58,    58,    58,    58,    61,    62,    62,    63,
-+      63,    64,    65,    65,    66,    66,    67,    67,    68,    68,
-+      68,    68,    68,    69,    69,    69,    69,    69,    69,    69,
-+      69,    69,    69,    69,    69,    69,    70,    70,    70,    70,
-+      70,    70,    70,    70,    70,    70,    70,    71,    72,    72,
-+      73,    73,    74,    74,    74,    74,    75,    75,    76,    76,
-+      76,    76,    76,    76,    77,    77,    78,    78,    78,    78,
-+      78,    78,    78,    79,    79,    79,    80,    80,    81,    81,
-+      82,    83,    83,    84,    84,    84,    84,    84,    84,    84,
-+      84,    85,    86,    86,    87,    88,    88,    89,    89,    90,
-+      90,    91,    91,    92,    92,    93,    93,    94,    94,    94,
-+      95,    96,    96,    97,    97,    98,    98,    99,    99,   100,
-+     101,   101,   102
- };
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-@@ -627,7 +636,7 @@ static const yytype_uint8 yyr2[] =
-        0,     2,     1,     2,     0,     2,     0,     4,     0,     3,
-        1,     1,     1,     1,     2,     2,     3,     0,     1,     1,
-        3,     4,     0,     1,     1,     2,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     5,     4,     2,     2,     2,
-+       1,     1,     1,     1,     1,     4,     1,     2,     2,     2,
-        3,     3,     3,     2,     2,     2,     1,     1,     1,     1,
-        1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-        1,     2,     1,     1,     1,     1,     2,     1,     1,     4,
-@@ -648,68 +657,68 @@ static const yytype_uint8 yydefact[] =
-        4,     4,     2,     0,     1,     3,     0,    28,    55,    46,
-       62,    53,     0,    31,     0,    52,    32,    48,    49,    29,
-       65,    47,    50,    30,     0,     8,     0,    51,    54,    63,
--       0,     0,     0,    64,    56,     5,    10,    17,    23,    24,
--      26,    27,    33,    34,    11,    12,    13,    14,    15,    39,
--       0,    43,     6,    37,     0,    44,    22,    38,    45,     0,
--       0,   129,    68,     0,    58,     0,    18,    19,     0,   130,
--      67,    25,    42,   127,     0,   125,    22,    40,     0,   113,
--       0,     0,   109,     9,    17,    41,     0,     0,     0,     0,
--      57,    59,    60,    16,     0,    66,   131,   101,   121,    71,
--       0,     0,   123,     0,     7,   112,   106,    76,    77,     0,
--       0,     0,   121,    75,     0,   114,   115,   119,   105,     0,
--     110,   130,     0,    36,     0,    73,    72,    61,    20,   102,
--       0,    93,     0,    84,    87,    88,   128,   124,   126,   118,
--       0,    76,     0,   120,    74,   117,    80,     0,   111,     0,
--      35,   132,   122,     0,    21,   103,    70,    94,    56,     0,
--      93,    90,    92,    69,    83,     0,    82,    81,     0,     0,
--     116,   104,     0,    95,     0,    91,    98,     0,    85,    89,
--      79,    78,   100,    99,     0,     0,    97,    96
-+       0,     0,     0,    64,    36,    56,     5,    10,    17,    23,
-+      24,    26,    27,    33,    34,    11,    12,    13,    14,    15,
-+      39,     0,    43,     6,    37,     0,    44,    22,    38,    45,
-+       0,     0,   129,    68,     0,    58,     0,    18,    19,     0,
-+     130,    67,    25,    42,   127,     0,   125,    22,    40,     0,
-+     113,     0,     0,   109,     9,    17,    41,    93,     0,     0,
-+       0,     0,    57,    59,    60,    16,     0,    66,   131,   101,
-+     121,    71,     0,     0,   123,     0,     7,   112,   106,    76,
-+      77,     0,     0,     0,   121,    75,     0,   114,   115,   119,
-+     105,     0,   110,   130,    94,    56,     0,    93,    90,    92,
-+      35,     0,    73,    72,    61,    20,   102,     0,     0,    84,
-+      87,    88,   128,   124,   126,   118,     0,    76,     0,   120,
-+      74,   117,    80,     0,   111,     0,     0,    95,     0,    91,
-+      98,     0,   132,   122,     0,    21,   103,    70,    69,    83,
-+       0,    82,    81,     0,     0,   116,   100,    99,     0,     0,
-+     104,    85,    89,    79,    78,    97,    96
- };
- /* YYDEFGOTO[NTERM-NUM].  */
- static const yytype_int16 yydefgoto[] =
- {
--      -1,     1,     2,     3,    35,    76,    56,    36,    65,    66,
--      67,    79,    38,    39,    40,    41,    42,    68,    90,    91,
--      43,   121,    70,   112,   113,   132,   133,   134,   135,   161,
--     162,    44,   154,   155,    55,    80,    81,    82,   114,   115,
--     116,   117,   129,    51,    74,    75,    45,    98,    46
-+      -1,     1,     2,     3,    36,    77,    57,    37,    66,    67,
-+      68,    80,    39,    40,    41,    42,    43,    69,    92,    93,
-+      44,   123,    71,   114,   115,   138,   139,   140,   141,   128,
-+     129,    45,   165,   166,    56,    81,    82,    83,   116,   117,
-+     118,   119,   136,    52,    75,    76,    46,   100,    47
- };
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
--#define YYPACT_NINF -135
-+#define YYPACT_NINF -140
- static const yytype_int16 yypact[] =
- {
--    -135,    20,  -135,   321,  -135,  -135,    30,  -135,  -135,  -135,
--    -135,  -135,   -28,  -135,     2,  -135,  -135,  -135,  -135,  -135,
--    -135,  -135,  -135,  -135,    -6,  -135,     9,  -135,  -135,  -135,
--      -5,    15,   -17,  -135,  -135,  -135,  -135,    18,   491,  -135,
--    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   -22,
--      31,  -135,  -135,    19,   106,  -135,   491,    19,  -135,   491,
--      50,  -135,  -135,    11,    -3,    51,    57,  -135,    18,   -14,
--      14,  -135,  -135,    48,    46,  -135,   491,  -135,    33,    32,
--      59,   154,  -135,  -135,    18,  -135,   365,    56,    60,    61,
--    -135,    -3,  -135,  -135,    18,  -135,  -135,  -135,  -135,  -135,
--     202,    74,  -135,   -23,  -135,  -135,  -135,    77,  -135,    16,
--     101,    49,  -135,    34,    92,    93,  -135,  -135,  -135,    94,
--    -135,   110,    95,  -135,    97,  -135,  -135,  -135,  -135,   -20,
--      96,   410,    99,   113,   100,  -135,  -135,  -135,  -135,  -135,
--     103,  -135,   107,  -135,  -135,   111,  -135,   239,  -135,    32,
--    -135,  -135,  -135,   123,  -135,  -135,  -135,  -135,  -135,     3,
--      52,  -135,    38,  -135,  -135,   454,  -135,  -135,   117,   128,
--    -135,  -135,   134,  -135,   135,  -135,  -135,   276,  -135,  -135,
--    -135,  -135,  -135,  -135,   137,   138,  -135,  -135
-+    -140,    29,  -140,   207,  -140,  -140,    40,  -140,  -140,  -140,
-+    -140,  -140,   -27,  -140,    44,  -140,  -140,  -140,  -140,  -140,
-+    -140,  -140,  -140,  -140,   -22,  -140,   -18,  -140,  -140,  -140,
-+      -9,    22,    28,  -140,  -140,  -140,  -140,  -140,    42,   472,
-+    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
-+      46,    43,  -140,  -140,    47,   107,  -140,   472,    47,  -140,
-+     472,    62,  -140,  -140,    16,    -3,    57,    56,  -140,    42,
-+      35,   -11,  -140,  -140,    53,    48,  -140,   472,  -140,    51,
-+      21,    59,   157,  -140,  -140,    42,  -140,   388,    58,    60,
-+      70,    81,  -140,    -3,  -140,  -140,    42,  -140,  -140,  -140,
-+    -140,  -140,   253,    71,  -140,   -20,  -140,  -140,  -140,    83,
-+    -140,     5,   102,    34,  -140,    12,    95,    94,  -140,  -140,
-+    -140,    97,  -140,   113,  -140,  -140,     2,    41,  -140,    27,
-+    -140,    99,  -140,  -140,  -140,  -140,   -24,    98,   101,   109,
-+     104,  -140,  -140,  -140,  -140,  -140,   105,  -140,   110,  -140,
-+    -140,   117,  -140,   298,  -140,    21,   112,  -140,   120,  -140,
-+    -140,   343,  -140,  -140,   121,  -140,  -140,  -140,  -140,  -140,
-+     434,  -140,  -140,   131,   137,  -140,  -140,  -140,   138,   141,
-+    -140,  -140,  -140,  -140,  -140,  -140,  -140
- };
- /* YYPGOTO[NTERM-NUM].  */
- static const yytype_int16 yypgoto[] =
- {
--    -135,  -135,   187,  -135,  -135,  -135,  -135,   -50,  -135,  -135,
--      98,     0,   -59,   -37,  -135,  -135,  -135,   -77,  -135,  -135,
--     -54,   -30,  -135,   -90,  -135,  -134,  -135,  -135,    24,   -58,
--    -135,  -135,  -135,  -135,   -18,  -135,  -135,   109,  -135,  -135,
--      44,    87,    84,   148,  -135,   102,  -135,  -135,  -135
-+    -140,  -140,   190,  -140,  -140,  -140,  -140,   -45,  -140,  -140,
-+      96,     1,   -60,   -31,  -140,  -140,  -140,   -78,  -140,  -140,
-+     -55,    -7,  -140,   -92,  -140,  -139,  -140,  -140,   -59,   -39,
-+    -140,  -140,  -140,  -140,   -13,  -140,  -140,   111,  -140,  -140,
-+      39,    87,    84,   147,  -140,   106,  -140,  -140,  -140
- };
- /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-@@ -718,149 +727,145 @@ static const yytype_int16 yypgoto[] =
- #define YYTABLE_NINF -109
- static const yytype_int16 yytable[] =
- {
--      86,    71,   111,    37,   172,    10,    83,    69,    58,    49,
--      92,   152,    88,   169,    73,    20,    96,   140,    97,   142,
--       4,   144,   137,    50,    29,    52,   104,    61,    33,    50,
--     153,    53,   111,    89,   111,    77,   -93,   127,    95,    85,
--     157,   131,    59,   185,   173,    54,    57,    99,    62,    71,
--     159,    64,   -93,   141,   160,    62,    84,   108,    63,    64,
--      54,   100,    60,   109,    64,    63,    64,   146,    73,   107,
--      54,   176,   111,   108,    47,    48,    84,   105,   106,   109,
--      64,   147,   160,   160,   110,   177,   141,    87,   131,   157,
--     108,   102,   103,   173,    71,    93,   109,    64,   101,   159,
--      64,   174,   175,    94,   118,   124,   131,    78,   136,   125,
--     126,     7,     8,     9,    10,    11,    12,    13,   131,    15,
--      16,    17,    18,    19,    20,    21,    22,    23,    24,   110,
--      26,    27,    28,    29,    30,   143,   148,    33,   105,   149,
--      96,   151,   152,   -22,   150,   156,   165,    34,   163,   164,
--     -22,  -107,   166,   -22,   -22,   119,   167,   171,   -22,     7,
--       8,     9,    10,    11,    12,    13,   180,    15,    16,    17,
--      18,    19,    20,    21,    22,    23,    24,   181,    26,    27,
--      28,    29,    30,   182,   183,    33,   186,   187,     5,   179,
--     120,   -22,   128,   170,   139,    34,   145,    72,   -22,  -108,
--       0,   -22,   -22,   130,     0,   138,   -22,     7,     8,     9,
--      10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
--      20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
--      30,     0,     0,    33,     0,     0,     0,     0,   -86,     0,
--     168,     0,     0,    34,     7,     8,     9,    10,    11,    12,
--      13,   -86,    15,    16,    17,    18,    19,    20,    21,    22,
--      23,    24,     0,    26,    27,    28,    29,    30,     0,     0,
--      33,     0,     0,     0,     0,   -86,     0,   184,     0,     0,
--      34,     7,     8,     9,    10,    11,    12,    13,   -86,    15,
--      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
--      26,    27,    28,    29,    30,     0,     0,    33,     0,     0,
--       0,     0,   -86,     0,     0,     0,     0,    34,     0,     0,
--       0,     0,     6,     0,     0,   -86,     7,     8,     9,    10,
--      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
--      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
--      31,    32,    33,     0,     0,     0,     0,     0,   -22,     0,
--       0,     0,    34,     0,     0,   -22,     0,     0,   -22,   -22,
--       7,     8,     9,    10,    11,    12,    13,     0,    15,    16,
--      17,    18,    19,    20,    21,    22,    23,    24,     0,    26,
--      27,    28,    29,    30,     0,     0,    33,     0,     0,     0,
--       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
--       0,     0,     0,   122,   123,     7,     8,     9,    10,    11,
--      12,    13,     0,    15,    16,    17,    18,    19,    20,    21,
--      22,    23,    24,     0,    26,    27,    28,    29,    30,     0,
--       0,    33,     0,     0,     0,     0,     0,   157,     0,     0,
--       0,   158,     0,     0,     0,     0,     0,   159,    64,     7,
-+      87,    88,   113,   156,    38,    10,   146,   163,    72,   127,
-+      94,    50,    84,    59,   174,    20,    54,    90,    74,   148,
-+      58,   150,   179,   101,    29,    51,   143,   164,    33,     4,
-+      55,    70,   106,   113,    55,   113,   -93,   102,   134,    60,
-+     124,    78,    87,   147,   157,    86,   152,   110,   127,   127,
-+     126,   -93,    65,   111,    63,    65,    72,    91,    85,   109,
-+     153,   160,    97,   110,    64,    98,    65,    53,    99,   111,
-+      61,    65,   147,    62,   112,   161,   110,   113,    85,   124,
-+      63,    74,   111,   157,    65,    48,    49,   158,   159,   126,
-+      64,    65,    65,    87,   104,   105,   107,   108,    51,    55,
-+      89,    87,    95,    96,   103,   120,   142,   130,    79,   131,
-+      87,   182,     7,     8,     9,    10,    11,    12,    13,   132,
-+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-+     133,    26,    27,    28,    29,    30,   112,   149,    33,    34,
-+     154,   155,   107,    98,   162,   -22,   169,   167,   163,    35,
-+     168,   170,   -22,  -107,   171,   -22,   180,   -22,   121,   172,
-+     -22,   176,     7,     8,     9,    10,    11,    12,    13,   177,
-+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-+     183,    26,    27,    28,    29,    30,   184,   185,    33,    34,
-+     186,     5,   135,   122,   175,   -22,   145,    73,   151,    35,
-+       0,     0,   -22,  -108,     0,   -22,     0,   -22,     6,     0,
-+     -22,   144,     7,     8,     9,    10,    11,    12,    13,    14,
-+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-+       0,     0,     0,     0,     0,   -22,     0,     0,     0,    35,
-+       0,     0,   -22,     0,   137,   -22,     0,   -22,     7,     8,
-+       9,    10,    11,    12,    13,     0,    15,    16,    17,    18,
-+      19,    20,    21,    22,    23,    24,     0,    26,    27,    28,
-+      29,    30,     0,     0,    33,    34,     0,     0,     0,     0,
-+     -86,     0,     0,     0,     0,    35,     0,     0,     0,   173,
-+       0,     0,   -86,     7,     8,     9,    10,    11,    12,    13,
-+       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-+      24,     0,    26,    27,    28,    29,    30,     0,     0,    33,
-+      34,     0,     0,     0,     0,   -86,     0,     0,     0,     0,
-+      35,     0,     0,     0,   178,     0,     0,   -86,     7,     8,
-+       9,    10,    11,    12,    13,     0,    15,    16,    17,    18,
-+      19,    20,    21,    22,    23,    24,     0,    26,    27,    28,
-+      29,    30,     0,     0,    33,    34,     0,     0,     0,     0,
-+     -86,     0,     0,     0,     0,    35,     0,     0,     0,     0,
-+       0,     0,   -86,     7,     8,     9,    10,    11,    12,    13,
-+       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-+      24,     0,    26,    27,    28,    29,    30,     0,     0,    33,
-+      34,     0,     0,     0,     0,     0,   124,     0,     0,     0,
-+     125,     0,     0,     0,     0,     0,   126,     0,    65,     7,
-        8,     9,    10,    11,    12,    13,     0,    15,    16,    17,
-       18,    19,    20,    21,    22,    23,    24,     0,    26,    27,
--      28,    29,    30,     0,     0,    33,     0,     0,     0,     0,
--     178,     0,     0,     0,     0,    34,     7,     8,     9,    10,
--      11,    12,    13,     0,    15,    16,    17,    18,    19,    20,
--      21,    22,    23,    24,     0,    26,    27,    28,    29,    30,
--       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
--       0,     0,    34
-+      28,    29,    30,     0,     0,    33,    34,     0,     0,     0,
-+       0,   181,     0,     0,     0,     0,    35,     7,     8,     9,
-+      10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
-+      20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
-+      30,     0,     0,    33,    34,     0,     0,     0,     0,     0,
-+       0,     0,     0,     0,    35
- };
- #define yypact_value_is_default(yystate) \
--  ((yystate) == (-135))
-+  ((yystate) == (-140))
- #define yytable_value_is_error(yytable_value) \
-   YYID (0)
- static const yytype_int16 yycheck[] =
- {
--      59,    38,    79,     3,     1,     8,    56,    37,    26,    37,
--      64,    31,     1,   147,    37,    18,    30,     1,    32,   109,
--       0,   111,    45,    51,    27,    23,    76,    44,    31,    51,
--      50,    37,   109,    63,   111,    53,    33,    91,    68,    57,
--      37,   100,    47,   177,    41,    51,    37,    33,    37,    86,
--      47,    48,    49,    37,   131,    37,    56,    41,    47,    48,
--      51,    47,    47,    47,    48,    47,    48,    33,    37,    37,
--      51,    33,   149,    41,    44,    45,    76,    44,    45,    47,
--      48,    47,   159,   160,    52,    47,    37,    37,   147,    37,
--      41,    45,    46,    41,   131,    44,    47,    48,    50,    47,
--      48,   159,   160,    46,    45,    49,   165,     1,    34,    49,
--      49,     5,     6,     7,     8,     9,    10,    11,   177,    13,
--      14,    15,    16,    17,    18,    19,    20,    21,    22,    52,
--      24,    25,    26,    27,    28,    34,    44,    31,    44,    46,
--      30,    44,    31,    37,    49,    49,    46,    41,    49,    36,
--      44,    45,    49,    47,    48,     1,    49,    34,    52,     5,
--       6,     7,     8,     9,    10,    11,    49,    13,    14,    15,
--      16,    17,    18,    19,    20,    21,    22,    49,    24,    25,
--      26,    27,    28,    49,    49,    31,    49,    49,     1,   165,
--      81,    37,    94,   149,   107,    41,   112,    49,    44,    45,
--      -1,    47,    48,     1,    -1,   103,    52,     5,     6,     7,
--       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
--      18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
--      28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,
--       1,    -1,    -1,    41,     5,     6,     7,     8,     9,    10,
--      11,    49,    13,    14,    15,    16,    17,    18,    19,    20,
--      21,    22,    -1,    24,    25,    26,    27,    28,    -1,    -1,
--      31,    -1,    -1,    -1,    -1,    36,    -1,     1,    -1,    -1,
--      41,     5,     6,     7,     8,     9,    10,    11,    49,    13,
--      14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
--      24,    25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,
--      -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
--      -1,    -1,     1,    -1,    -1,    49,     5,     6,     7,     8,
--       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
--      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
--      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
--      -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    47,    48,
--       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
--      15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
--      25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,
--      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
--      -1,    -1,    -1,    48,    49,     5,     6,     7,     8,     9,
--      10,    11,    -1,    13,    14,    15,    16,    17,    18,    19,
--      20,    21,    22,    -1,    24,    25,    26,    27,    28,    -1,
--      -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
--      -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,     5,
-+      60,    60,    80,     1,     3,     8,     1,    31,    39,    87,
-+      65,    38,    57,    26,   153,    18,    38,     1,    38,   111,
-+      38,   113,   161,    34,    27,    52,    46,    51,    31,     0,
-+      52,    38,    77,   111,    52,   113,    34,    48,    93,    48,
-+      38,    54,   102,    38,    42,    58,    34,    42,   126,   127,
-+      48,    49,    50,    48,    38,    50,    87,    64,    57,    38,
-+      48,    34,    69,    42,    48,    30,    50,    23,    33,    48,
-+      48,    50,    38,    45,    53,    48,    42,   155,    77,    38,
-+      38,    38,    48,    42,    50,    45,    46,   126,   127,    48,
-+      48,    50,    50,   153,    46,    47,    45,    46,    52,    52,
-+      38,   161,    45,    47,    51,    46,    35,    49,     1,    49,
-+     170,   170,     5,     6,     7,     8,     9,    10,    11,    49,
-+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-+      49,    24,    25,    26,    27,    28,    53,    35,    31,    32,
-+      45,    47,    45,    30,    45,    38,    37,    49,    31,    42,
-+      49,    47,    45,    46,    49,    48,    35,    50,     1,    49,
-+      53,    49,     5,     6,     7,     8,     9,    10,    11,    49,
-+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-+      49,    24,    25,    26,    27,    28,    49,    49,    31,    32,
-+      49,     1,    96,    82,   155,    38,   109,    50,   114,    42,
-+      -1,    -1,    45,    46,    -1,    48,    -1,    50,     1,    -1,
-+      53,   105,     5,     6,     7,     8,     9,    10,    11,    12,
-+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-+      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,
-+      -1,    -1,    45,    -1,     1,    48,    -1,    50,     5,     6,
-+       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-+      17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
-+      27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
-+      37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,     1,
-+      -1,    -1,    49,     5,     6,     7,     8,     9,    10,    11,
-+      -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-+      22,    -1,    24,    25,    26,    27,    28,    -1,    -1,    31,
-+      32,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
-+      42,    -1,    -1,    -1,     1,    -1,    -1,    49,     5,     6,
-+       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-+      17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
-+      27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
-+      37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
-+      -1,    -1,    49,     5,     6,     7,     8,     9,    10,    11,
-+      -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-+      22,    -1,    24,    25,    26,    27,    28,    -1,    -1,    31,
-+      32,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
-+      42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,     5,
-        6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-       16,    17,    18,    19,    20,    21,    22,    -1,    24,    25,
--      26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,    -1,
--      36,    -1,    -1,    -1,    -1,    41,     5,     6,     7,     8,
--       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
--      19,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
--      -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
--      -1,    -1,    41
-+      26,    27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,
-+      -1,    37,    -1,    -1,    -1,    -1,    42,     5,     6,     7,
-+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-+      18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
-+      28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,    -1,
-+      -1,    -1,    -1,    -1,    42
- };
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
- static const yytype_uint8 yystos[] =
- {
--       0,    54,    55,    56,     0,    55,     1,     5,     6,     7,
-+       0,    55,    56,    57,     0,    56,     1,     5,     6,     7,
-        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
--      28,    29,    30,    31,    41,    57,    60,    64,    65,    66,
--      67,    68,    69,    73,    84,    99,   101,    44,    45,    37,
--      51,    96,    23,    37,    51,    87,    59,    37,    87,    47,
--      47,    44,    37,    47,    48,    61,    62,    63,    70,    74,
--      75,    66,    96,    37,    97,    98,    58,    87,     1,    64,
--      88,    89,    90,    60,    64,    87,    65,    37,     1,    74,
--      71,    72,    73,    44,    46,    74,    30,    32,   100,    33,
--      47,    50,    45,    46,    60,    44,    45,    37,    41,    47,
--      52,    70,    76,    77,    91,    92,    93,    94,    45,     1,
--      90,    74,    48,    49,    49,    49,    49,    73,    63,    95,
--       1,    65,    78,    79,    80,    81,    34,    45,    98,    94,
--       1,    37,    76,    34,    76,    95,    33,    47,    44,    46,
--      49,    44,    31,    50,    85,    86,    49,    37,    41,    47,
--      70,    82,    83,    49,    36,    46,    49,    49,     1,    78,
--      93,    34,     1,    41,    82,    82,    33,    47,    36,    81,
--      49,    49,    49,    49,     1,    78,    49,    49
-+      28,    29,    30,    31,    32,    42,    58,    61,    65,    66,
-+      67,    68,    69,    70,    74,    85,   100,   102,    45,    46,
-+      38,    52,    97,    23,    38,    52,    88,    60,    38,    88,
-+      48,    48,    45,    38,    48,    50,    62,    63,    64,    71,
-+      75,    76,    67,    97,    38,    98,    99,    59,    88,     1,
-+      65,    89,    90,    91,    61,    65,    88,    66,    82,    38,
-+       1,    75,    72,    73,    74,    45,    47,    75,    30,    33,
-+     101,    34,    48,    51,    46,    47,    61,    45,    46,    38,
-+      42,    48,    53,    71,    77,    78,    92,    93,    94,    95,
-+      46,     1,    91,    75,    38,    42,    48,    71,    83,    84,
-+      49,    49,    49,    49,    74,    64,    96,     1,    79,    80,
-+      81,    82,    35,    46,    99,    95,     1,    38,    77,    35,
-+      77,    96,    34,    48,    45,    47,     1,    42,    83,    83,
-+      34,    48,    45,    31,    51,    86,    87,    49,    49,    37,
-+      47,    49,    49,     1,    79,    94,    49,    49,     1,    79,
-+      35,    37,    82,    49,    49,    49,    49
- };
- #define yyerrok               (yyerrstatus = 0)
-@@ -890,17 +895,18 @@ static const yytype_uint8 yystos[] =
- #define YYRECOVERING()  (!!yyerrstatus)
--#define YYBACKUP(Token, Value)                                        \
--do                                                            \
--  if (yychar == YYEMPTY && yylen == 1)                                \
--    {                                                         \
--      yychar = (Token);                                               \
--      yylval = (Value);                                               \
--      YYPOPSTACK (1);                                         \
--      goto yybackup;                                          \
--    }                                                         \
--  else                                                                \
--    {                                                         \
-+#define YYBACKUP(Token, Value)                                  \
-+do                                                              \
-+  if (yychar == YYEMPTY)                                        \
-+    {                                                           \
-+      yychar = (Token);                                         \
-+      yylval = (Value);                                         \
-+      YYPOPSTACK (yylen);                                       \
-+      yystate = *yyssp;                                         \
-+      goto yybackup;                                            \
-+    }                                                           \
-+  else                                                          \
-+    {                                                           \
-       yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;                                                        \
-     }                                                         \
-@@ -995,6 +1001,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-     YYSTYPE const * const yyvaluep;
- #endif
- {
-+  FILE *yyo = yyoutput;
-+  YYUSE (yyo);
-   if (!yyvaluep)
-     return;
- # ifdef YYPRINT
-@@ -1246,12 +1254,12 @@ static int
- yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                 yytype_int16 *yyssp, int yytoken)
- {
--  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
-+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
-   YYSIZE_T yysize = yysize0;
-   YYSIZE_T yysize1;
-   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-   /* Internationalized format string. */
--  const char *yyformat = 0;
-+  const char *yyformat = YY_NULL;
-   /* Arguments of yyformat. */
-   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-   /* Number of reported tokens (one for the "unexpected", one per
-@@ -1311,7 +1319,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                     break;
-                   }
-                 yyarg[yycount++] = yytname[yyx];
--                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
-                 if (! (yysize <= yysize1
-                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                   return 2;
-@@ -1463,7 +1471,7 @@ yyparse ()
-        `yyss': related to states.
-        `yyvs': related to semantic values.
--       Refer to the stacks thru separate pointers, to allow yyoverflow
-+       Refer to the stacks through separate pointers, to allow yyoverflow
-        to reallocate them elsewhere.  */
-     /* The state stack.  */
-@@ -2346,7 +2354,7 @@ yyabortlab:
-   yyresult = 1;
-   goto yyreturn;
--#if !defined(yyoverflow) || YYERROR_VERBOSE
-+#if !defined yyoverflow || YYERROR_VERBOSE
- /*-------------------------------------------------.
- | yyexhaustedlab -- memory exhaustion comes here.  |
- `-------------------------------------------------*/
-diff --git a/scripts/genksyms/parse.tab.h_shipped b/scripts/genksyms/parse.tab.h_shipped
-index 93240a3..a4737de 100644
---- a/scripts/genksyms/parse.tab.h_shipped
-+++ b/scripts/genksyms/parse.tab.h_shipped
-@@ -1,8 +1,8 @@
--/* A Bison parser, made by GNU Bison 2.5.  */
-+/* A Bison parser, made by GNU Bison 2.5.1.  */
- /* Bison interface for Yacc-like parsers in C
-    
--      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-    
-    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
-@@ -66,18 +66,19 @@
-      EXPORT_SYMBOL_KEYW = 284,
-      ASM_PHRASE = 285,
-      ATTRIBUTE_PHRASE = 286,
--     BRACE_PHRASE = 287,
--     BRACKET_PHRASE = 288,
--     EXPRESSION_PHRASE = 289,
--     CHAR = 290,
--     DOTS = 291,
--     IDENT = 292,
--     INT = 293,
--     REAL = 294,
--     STRING = 295,
--     TYPE = 296,
--     OTHER = 297,
--     FILENAME = 298
-+     TYPEOF_PHRASE = 287,
-+     BRACE_PHRASE = 288,
-+     BRACKET_PHRASE = 289,
-+     EXPRESSION_PHRASE = 290,
-+     CHAR = 291,
-+     DOTS = 292,
-+     IDENT = 293,
-+     INT = 294,
-+     REAL = 295,
-+     STRING = 296,
-+     TYPE = 297,
-+     OTHER = 298,
-+     FILENAME = 299
-    };
- #endif
-diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y
-index 23c3999..b9f4cf2 100644
---- a/scripts/genksyms/parse.y
-+++ b/scripts/genksyms/parse.y
-@@ -103,6 +103,7 @@ static void record_compound(struct string_list **keyw,
- %token ASM_PHRASE
- %token ATTRIBUTE_PHRASE
-+%token TYPEOF_PHRASE
- %token BRACE_PHRASE
- %token BRACKET_PHRASE
- %token EXPRESSION_PHRASE
-@@ -220,8 +221,8 @@ storage_class_specifier:
- type_specifier:
-       simple_type_specifier
-       | cvar_qualifier
--      | TYPEOF_KEYW '(' decl_specifier_seq '*' ')'
--      | TYPEOF_KEYW '(' decl_specifier_seq ')'
-+      | TYPEOF_KEYW '(' parameter_declaration ')'
-+      | TYPEOF_PHRASE
-       /* References to s/u/e's defined elsewhere.  Rearrange things
-          so that it is easier to expand the definition fully later.  */
--- 
-cgit v0.11.2
-
diff --git a/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch b/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch
deleted file mode 100644 (file)
index d12f46b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From 88c9281a9fba67636ab26c1fd6afbc78a632374f Mon Sep 17 00:00:00 2001
-From: Vitaly Kuznetsov <vkuznets@redhat.com>
-Date: Wed, 19 Aug 2015 09:54:24 -0700
-Subject: x86/hyperv: Mark the Hyper-V TSC as unstable
-
-The Hyper-V top-level functional specification states, that
-"algorithms should be resilient to sudden jumps forward or
-backward in the TSC value", this means that we should consider
-TSC as unstable. In some cases tsc tests are able to detect the
-instability, it was detected in 543 out of 646 boots in my
-testing:
-
- Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
- tsc: Marking TSC unstable due to check_tsc_sync_source failed
-
-This is, however, just a heuristic. On Hyper-V platform there
-are two good clocksources: MSR-based hyperv_clocksource and
-recently introduced TSC page.
-
-Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
-Cc: Haiyang Zhang <haiyangz@microsoft.com>
-Cc: K. Y. Srinivasan <kys@microsoft.com>
-Cc: Linus Torvalds <torvalds@linux-foundation.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: devel@linuxdriverproject.org
-Link: http://lkml.kernel.org/r/1440003264-9949-1-git-send-email-vkuznets@redhat.com
-Signed-off-by: Ingo Molnar <mingo@kernel.org>
----
- arch/x86/kernel/cpu/mshyperv.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
-index aad4bd8..6fd023d 100644
---- a/arch/x86/kernel/cpu/mshyperv.c
-+++ b/arch/x86/kernel/cpu/mshyperv.c
-@@ -141,6 +141,7 @@ static void __init ms_hyperv_init_platform(void)
-       no_timer_check = 1;
- #endif
-+      mark_tsc_unstable("running on Hyper-V");
- }
- const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
--- 
-cgit v0.12
-
diff --git a/src/patches/linux/0001-Drivers-net-hyperv-Get-rid-of-the-rndis_filter_packe.patch b/src/patches/linux/0001-Drivers-net-hyperv-Get-rid-of-the-rndis_filter_packe.patch
deleted file mode 100644 (file)
index 2e00392..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-From f3f885fa684ff18fa4d223dc22b782f5e5d32560 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:43 -0800
-Subject: [PATCH 01/25] Drivers: net: hyperv: Get rid of the
- rndis_filter_packet structure
-
-This structure is redundant; get rid of it make the code little more efficient -
-get rid of the unnecessary indirection.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   |  6 ------
- drivers/net/hyperv/netvsc_drv.c   |  2 +-
- drivers/net/hyperv/rndis_filter.c | 41 +++------------------------------------
- 3 files changed, 4 insertions(+), 45 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7b594ce3f21d..7645ba38bde8 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -846,12 +846,6 @@ struct rndis_message {
- };
--struct rndis_filter_packet {
--      void *completion_ctx;
--      void (*completion)(void *context);
--      struct rndis_message msg;
--};
--
- /* Handy macros */
- /* get the size of an RNDIS message. Pass in the message type, */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 3c1c33ceffba..28020f83ba6f 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -156,7 +156,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       /* Allocate a netvsc packet based on # of frags. */
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-                        (num_pages * sizeof(struct hv_page_buffer)) +
--                       sizeof(struct rndis_filter_packet) +
-+                       sizeof(struct rndis_message) +
-                        NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-               /* out of memory, drop packet */
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index b54fd257652b..6a9f6021f09c 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -58,9 +58,6 @@ struct rndis_request {
-       u8 request_ext[RNDIS_EXT_LEN];
- };
--static void rndis_filter_send_completion(void *ctx);
--
--
- static struct rndis_device *get_rndis_device(void)
- {
-       struct rndis_device *device;
-@@ -297,7 +294,7 @@ static void rndis_filter_receive_response(struct rndis_device *dev,
-                               "rndis response buffer overflow "
-                               "detected (size %u max %zu)\n",
-                               resp->msg_len,
--                              sizeof(struct rndis_filter_packet));
-+                              sizeof(struct rndis_message));
-                       if (resp->ndis_msg_type ==
-                           RNDIS_MSG_RESET_C) {
-@@ -917,17 +914,14 @@ int rndis_filter_close(struct hv_device *dev)
- int rndis_filter_send(struct hv_device *dev,
-                            struct hv_netvsc_packet *pkt)
- {
--      int ret;
--      struct rndis_filter_packet *filter_pkt;
-       struct rndis_message *rndis_msg;
-       struct rndis_packet *rndis_pkt;
-       u32 rndis_msg_size;
-       bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT;
-       /* Add the rndis header */
--      filter_pkt = (struct rndis_filter_packet *)pkt->extension;
-+      rndis_msg = (struct rndis_message *)pkt->extension;
--      rndis_msg = &filter_pkt->msg;
-       rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-       if (isvlan)
-               rndis_msg_size += NDIS_VLAN_PPI_SIZE;
-@@ -980,34 +974,5 @@ int rndis_filter_send(struct hv_device *dev,
-               pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len;
-       }
--      /* Save the packet send completion and context */
--      filter_pkt->completion = pkt->completion.send.send_completion;
--      filter_pkt->completion_ctx =
--                              pkt->completion.send.send_completion_ctx;
--
--      /* Use ours */
--      pkt->completion.send.send_completion = rndis_filter_send_completion;
--      pkt->completion.send.send_completion_ctx = filter_pkt;
--
--      ret = netvsc_send(dev, pkt);
--      if (ret != 0) {
--              /*
--               * Reset the completion to originals to allow retries from
--               * above
--               */
--              pkt->completion.send.send_completion =
--                              filter_pkt->completion;
--              pkt->completion.send.send_completion_ctx =
--                              filter_pkt->completion_ctx;
--      }
--
--      return ret;
--}
--
--static void rndis_filter_send_completion(void *ctx)
--{
--      struct rndis_filter_packet *filter_pkt = ctx;
--
--      /* Pass it back to the original handler */
--      filter_pkt->completion(filter_pkt->completion_ctx);
-+      return netvsc_send(dev, pkt);
- }
--- 
-2.4.3
-
diff --git a/src/patches/linux/0001-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch b/src/patches/linux/0001-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch
deleted file mode 100644 (file)
index 52c4da6..0000000
+++ /dev/null
@@ -1,917 +0,0 @@
-From 5b54dac856cb5bd6f33f4159012773e4a33704f7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 10:20:28 -0700
-Subject: [PATCH 01/11] hyperv: Add support for virtual Receive Side Scaling
- (vRSS)
-
-This feature allows multiple channels to be used by each virtual NIC.
-It is available on Hyper-V host 2012 R2.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 110 +++++++++++++++++++++-
- drivers/net/hyperv/netvsc.c       | 136 +++++++++++++++++++++------
- drivers/net/hyperv/netvsc_drv.c   | 103 ++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 189 +++++++++++++++++++++++++++++++++++++-
- 4 files changed, 504 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d18f711d0b0c..57eb3f906d64 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -28,6 +28,96 @@
- #include <linux/hyperv.h>
- #include <linux/rndis.h>
-+/* RSS related */
-+#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203  /* query only */
-+#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204  /* query and set */
-+
-+#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
-+#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
-+
-+#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
-+#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
-+
-+struct ndis_obj_header {
-+      u8 type;
-+      u8 rev;
-+      u16 size;
-+} __packed;
-+
-+/* ndis_recv_scale_cap/cap_flag */
-+#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR       0x02000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC       0x04000000
-+#define NDIS_RSS_CAPS_USING_MSI_X                 0x08000000
-+#define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS      0x10000000
-+#define NDIS_RSS_CAPS_SUPPORTS_MSI_X              0x20000000
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4          0x00000100
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6          0x00000200
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX       0x00000400
-+
-+struct ndis_recv_scale_cap { /* NDIS_RECEIVE_SCALE_CAPABILITIES */
-+      struct ndis_obj_header hdr;
-+      u32 cap_flag;
-+      u32 num_int_msg;
-+      u32 num_recv_que;
-+      u16 num_indirect_tabent;
-+} __packed;
-+
-+
-+/* ndis_recv_scale_param flags */
-+#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED     0x0001
-+#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED    0x0002
-+#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED       0x0004
-+#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED     0x0008
-+#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS            0x0010
-+
-+/* Hash info bits */
-+#define NDIS_HASH_FUNC_TOEPLITZ 0x00000001
-+#define NDIS_HASH_IPV4          0x00000100
-+#define NDIS_HASH_TCP_IPV4      0x00000200
-+#define NDIS_HASH_IPV6          0x00000400
-+#define NDIS_HASH_IPV6_EX       0x00000800
-+#define NDIS_HASH_TCP_IPV6      0x00001000
-+#define NDIS_HASH_TCP_IPV6_EX   0x00002000
-+
-+#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * 4)
-+#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2   40
-+
-+#define ITAB_NUM 128
-+#define HASH_KEYLEN NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2
-+extern u8 netvsc_hash_key[];
-+
-+struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
-+      struct ndis_obj_header hdr;
-+
-+      /* Qualifies the rest of the information */
-+      u16 flag;
-+
-+      /* The base CPU number to do receive processing. not used */
-+      u16 base_cpu_number;
-+
-+      /* This describes the hash function and type being enabled */
-+      u32 hashinfo;
-+
-+      /* The size of indirection table array */
-+      u16 indirect_tabsize;
-+
-+      /* The offset of the indirection table from the beginning of this
-+       * structure
-+       */
-+      u32 indirect_taboffset;
-+
-+      /* The size of the hash secret key */
-+      u16 hashkey_size;
-+
-+      /* The offset of the secret key from the beginning of this structure */
-+      u32 kashkey_offset;
-+
-+      u32 processor_masks_offset;
-+      u32 num_processor_masks;
-+      u32 processor_masks_entry_size;
-+};
-+
- /* Fwd declaration */
- struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-@@ -39,6 +129,8 @@ struct xferpage_packet {
-       /* # of netvsc packets this xfer packet contains */
-       u32 count;
-+
-+      struct vmbus_channel *channel;
- };
- /*
-@@ -54,6 +146,9 @@ struct hv_netvsc_packet {
-       bool is_data_pkt;
-       u16 vlan_tci;
-+      u16 q_idx;
-+      struct vmbus_channel *channel;
-+
-       /*
-        * Valid only for receives when we break a xfer page packet
-        * into multiple netvsc packets
-@@ -120,6 +215,7 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
- int netvsc_recv_callback(struct hv_device *device_obj,
-                       struct hv_netvsc_packet *packet,
-                       struct ndis_tcp_ip_checksum_info *csum_info);
-+void netvsc_channel_cb(void *context);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -522,6 +618,8 @@ struct nvsp_message {
- #define NETVSC_PACKET_SIZE                      2048
-+#define VRSS_SEND_TAB_SIZE 16
-+
- /* Per netvsc channel-specific */
- struct netvsc_device {
-       struct hv_device *dev;
-@@ -555,10 +653,20 @@ struct netvsc_device {
-       struct net_device *ndev;
-+      struct vmbus_channel *chn_table[NR_CPUS];
-+      u32 send_table[VRSS_SEND_TAB_SIZE];
-+      u32 num_chn;
-+      atomic_t queue_sends[NR_CPUS];
-+
-       /* Holds rndis device info */
-       void *extension;
--      /* The recive buffer for this device */
-+
-+      int ring_size;
-+
-+      /* The primary channel callback buffer */
-       unsigned char cb_buffer[NETVSC_PACKET_SIZE];
-+      /* The sub channel callback buffer */
-+      unsigned char *sub_cb_buf;
- };
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index f7629ecefa84..e7e77f12bc38 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -422,6 +422,9 @@ int netvsc_device_remove(struct hv_device *device)
-               kfree(netvsc_packet);
-       }
-+      if (net_device->sub_cb_buf)
-+              vfree(net_device->sub_cb_buf);
-+
-       kfree(net_device);
-       return 0;
- }
-@@ -461,7 +464,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-           (nvsp_packet->hdr.msg_type ==
-            NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE) ||
-           (nvsp_packet->hdr.msg_type ==
--           NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE)) {
-+           NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE) ||
-+          (nvsp_packet->hdr.msg_type ==
-+           NVSP_MSG5_TYPE_SUBCHANNEL)) {
-               /* Copy the response back */
-               memcpy(&net_device->channel_init_pkt, nvsp_packet,
-                      sizeof(struct nvsp_message));
-@@ -469,28 +474,37 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-       } else if (nvsp_packet->hdr.msg_type ==
-                  NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE) {
-               int num_outstanding_sends;
-+              u16 q_idx = 0;
-+              struct vmbus_channel *channel = device->channel;
-+              int queue_sends;
-               /* Get the send context */
-               nvsc_packet = (struct hv_netvsc_packet *)(unsigned long)
-                       packet->trans_id;
-               /* Notify the layer above us */
--              if (nvsc_packet)
-+              if (nvsc_packet) {
-+                      q_idx = nvsc_packet->q_idx;
-+                      channel = nvsc_packet->channel;
-                       nvsc_packet->completion.send.send_completion(
-                               nvsc_packet->completion.send.
-                               send_completion_ctx);
-+              }
-               num_outstanding_sends =
-                       atomic_dec_return(&net_device->num_outstanding_sends);
-+              queue_sends = atomic_dec_return(&net_device->
-+                                              queue_sends[q_idx]);
-               if (net_device->destroy && num_outstanding_sends == 0)
-                       wake_up(&net_device->wait_drain);
--              if (netif_queue_stopped(ndev) && !net_device->start_remove &&
--                      (hv_ringbuf_avail_percent(&device->channel->outbound)
--                      > RING_AVAIL_PERCENT_HIWATER ||
--                      num_outstanding_sends < 1))
--                              netif_wake_queue(ndev);
-+              if (netif_tx_queue_stopped(netdev_get_tx_queue(ndev, q_idx)) &&
-+                  !net_device->start_remove &&
-+                  (hv_ringbuf_avail_percent(&channel->outbound) >
-+                   RING_AVAIL_PERCENT_HIWATER || queue_sends < 1))
-+                              netif_tx_wake_queue(netdev_get_tx_queue(
-+                                                  ndev, q_idx));
-       } else {
-               netdev_err(ndev, "Unknown send completion packet type- "
-                          "%d received!!\n", nvsp_packet->hdr.msg_type);
-@@ -505,6 +519,7 @@ int netvsc_send(struct hv_device *device,
-       int ret = 0;
-       struct nvsp_message sendMessage;
-       struct net_device *ndev;
-+      struct vmbus_channel *out_channel = NULL;
-       u64 req_id;
-       net_device = get_outbound_net_device(device);
-@@ -531,15 +546,20 @@ int netvsc_send(struct hv_device *device,
-       else
-               req_id = 0;
-+      out_channel = net_device->chn_table[packet->q_idx];
-+      if (out_channel == NULL)
-+              out_channel = device->channel;
-+      packet->channel = out_channel;
-+
-       if (packet->page_buf_cnt) {
--              ret = vmbus_sendpacket_pagebuffer(device->channel,
-+              ret = vmbus_sendpacket_pagebuffer(out_channel,
-                                                 packet->page_buf,
-                                                 packet->page_buf_cnt,
-                                                 &sendMessage,
-                                                 sizeof(struct nvsp_message),
-                                                 req_id);
-       } else {
--              ret = vmbus_sendpacket(device->channel, &sendMessage,
-+              ret = vmbus_sendpacket(out_channel, &sendMessage,
-                               sizeof(struct nvsp_message),
-                               req_id,
-                               VM_PKT_DATA_INBAND,
-@@ -548,17 +568,24 @@ int netvsc_send(struct hv_device *device,
-       if (ret == 0) {
-               atomic_inc(&net_device->num_outstanding_sends);
--              if (hv_ringbuf_avail_percent(&device->channel->outbound) <
-+              atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+
-+              if (hv_ringbuf_avail_percent(&out_channel->outbound) <
-                       RING_AVAIL_PERCENT_LOWATER) {
--                      netif_stop_queue(ndev);
-+                      netif_tx_stop_queue(netdev_get_tx_queue(
-+                                          ndev, packet->q_idx));
-+
-                       if (atomic_read(&net_device->
--                              num_outstanding_sends) < 1)
--                              netif_wake_queue(ndev);
-+                              queue_sends[packet->q_idx]) < 1)
-+                              netif_tx_wake_queue(netdev_get_tx_queue(
-+                                                  ndev, packet->q_idx));
-               }
-       } else if (ret == -EAGAIN) {
--              netif_stop_queue(ndev);
--              if (atomic_read(&net_device->num_outstanding_sends) < 1) {
--                      netif_wake_queue(ndev);
-+              netif_tx_stop_queue(netdev_get_tx_queue(
-+                                  ndev, packet->q_idx));
-+              if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+                      netif_tx_wake_queue(netdev_get_tx_queue(
-+                                          ndev, packet->q_idx));
-                       ret = -ENOSPC;
-               }
-       } else {
-@@ -570,6 +597,7 @@ int netvsc_send(struct hv_device *device,
- }
- static void netvsc_send_recv_completion(struct hv_device *device,
-+                                      struct vmbus_channel *channel,
-                                       struct netvsc_device *net_device,
-                                       u64 transaction_id, u32 status)
- {
-@@ -587,7 +615,7 @@ static void netvsc_send_recv_completion(struct hv_device *device,
- retry_send_cmplt:
-       /* Send the completion */
--      ret = vmbus_sendpacket(device->channel, &recvcompMessage,
-+      ret = vmbus_sendpacket(channel, &recvcompMessage,
-                              sizeof(struct nvsp_message), transaction_id,
-                              VM_PKT_COMP, 0);
-       if (ret == 0) {
-@@ -618,6 +646,7 @@ static void netvsc_receive_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = context;
-       struct hv_device *device = packet->device;
-+      struct vmbus_channel *channel;
-       struct netvsc_device *net_device;
-       u64 transaction_id = 0;
-       bool fsend_receive_comp = false;
-@@ -649,6 +678,7 @@ static void netvsc_receive_completion(void *context)
-        */
-       if (packet->xfer_page_pkt->count == 0) {
-               fsend_receive_comp = true;
-+              channel = packet->xfer_page_pkt->channel;
-               transaction_id = packet->completion.recv.recv_completion_tid;
-               status = packet->xfer_page_pkt->status;
-               list_add_tail(&packet->xfer_page_pkt->list_ent,
-@@ -662,12 +692,13 @@ static void netvsc_receive_completion(void *context)
-       /* Send a receive completion for the xfer page packet */
-       if (fsend_receive_comp)
--              netvsc_send_recv_completion(device, net_device, transaction_id,
--                                      status);
-+              netvsc_send_recv_completion(device, channel, net_device,
-+                                          transaction_id, status);
- }
- static void netvsc_receive(struct netvsc_device *net_device,
-+                      struct vmbus_channel *channel,
-                       struct hv_device *device,
-                       struct vmpacket_descriptor *packet)
- {
-@@ -748,7 +779,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
-                                      flags);
--              netvsc_send_recv_completion(device, net_device,
-+              netvsc_send_recv_completion(device, channel, net_device,
-                                           vmxferpage_packet->d.trans_id,
-                                           NVSP_STAT_FAIL);
-@@ -759,6 +790,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
-       xferpage_packet = (struct xferpage_packet *)listHead.next;
-       list_del(&xferpage_packet->list_ent);
-       xferpage_packet->status = NVSP_STAT_SUCCESS;
-+      xferpage_packet->channel = channel;
-       /* This is how much we can satisfy */
-       xferpage_packet->count = count - 1;
-@@ -800,10 +832,45 @@ static void netvsc_receive(struct netvsc_device *net_device,
- }
--static void netvsc_channel_cb(void *context)
-+
-+static void netvsc_send_table(struct hv_device *hdev,
-+                            struct vmpacket_descriptor *vmpkt)
-+{
-+      struct netvsc_device *nvscdev;
-+      struct net_device *ndev;
-+      struct nvsp_message *nvmsg;
-+      int i;
-+      u32 count, *tab;
-+
-+      nvscdev = get_outbound_net_device(hdev);
-+      if (!nvscdev)
-+              return;
-+      ndev = nvscdev->ndev;
-+
-+      nvmsg = (struct nvsp_message *)((unsigned long)vmpkt +
-+                                      (vmpkt->offset8 << 3));
-+
-+      if (nvmsg->hdr.msg_type != NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE)
-+              return;
-+
-+      count = nvmsg->msg.v5_msg.send_table.count;
-+      if (count != VRSS_SEND_TAB_SIZE) {
-+              netdev_err(ndev, "Received wrong send-table size:%u\n", count);
-+              return;
-+      }
-+
-+      tab = (u32 *)((unsigned long)&nvmsg->msg.v5_msg.send_table +
-+                    nvmsg->msg.v5_msg.send_table.offset);
-+
-+      for (i = 0; i < count; i++)
-+              nvscdev->send_table[i] = tab[i];
-+}
-+
-+void netvsc_channel_cb(void *context)
- {
-       int ret;
--      struct hv_device *device = context;
-+      struct vmbus_channel *channel = (struct vmbus_channel *)context;
-+      struct hv_device *device;
-       struct netvsc_device *net_device;
-       u32 bytes_recvd;
-       u64 request_id;
-@@ -812,14 +879,19 @@ static void netvsc_channel_cb(void *context)
-       int bufferlen = NETVSC_PACKET_SIZE;
-       struct net_device *ndev;
-+      if (channel->primary_channel != NULL)
-+              device = channel->primary_channel->device_obj;
-+      else
-+              device = channel->device_obj;
-+
-       net_device = get_inbound_net_device(device);
-       if (!net_device)
-               return;
-       ndev = net_device->ndev;
--      buffer = net_device->cb_buffer;
-+      buffer = get_per_channel_state(channel);
-       do {
--              ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-+              ret = vmbus_recvpacket_raw(channel, buffer, bufferlen,
-                                          &bytes_recvd, &request_id);
-               if (ret == 0) {
-                       if (bytes_recvd > 0) {
-@@ -831,8 +903,12 @@ static void netvsc_channel_cb(void *context)
-                                       break;
-                               case VM_PKT_DATA_USING_XFER_PAGES:
--                                      netvsc_receive(net_device,
--                                                      device, desc);
-+                                      netvsc_receive(net_device, channel,
-+                                                     device, desc);
-+                                      break;
-+
-+                              case VM_PKT_DATA_INBAND:
-+                                      netvsc_send_table(device, desc);
-                                       break;
-                               default:
-@@ -893,6 +969,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-               goto cleanup;
-       }
-+      net_device->ring_size = ring_size;
-+
-       /*
-        * Coming into this function, struct net_device * is
-        * registered as the driver private data.
-@@ -917,10 +995,12 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       }
-       init_completion(&net_device->channel_init_wait);
-+      set_per_channel_state(device->channel, net_device->cb_buffer);
-+
-       /* Open the channel */
-       ret = vmbus_open(device->channel, ring_size * PAGE_SIZE,
-                        ring_size * PAGE_SIZE, NULL, 0,
--                       netvsc_channel_cb, device);
-+                       netvsc_channel_cb, device->channel);
-       if (ret != 0) {
-               netdev_err(ndev, "unable to open channel: %d\n", ret);
-@@ -930,6 +1010,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       /* Channel is opened */
-       pr_info("hv_netvsc channel opened successfully\n");
-+      net_device->chn_table[0] = device->channel;
-+
-       /* Connect with the NetVsp */
-       ret = netvsc_connect_vsp(device);
-       if (ret != 0) {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 31e55fba7cad..093cf3fc46b8 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -101,7 +101,7 @@ static int netvsc_open(struct net_device *net)
-               return ret;
-       }
--      netif_start_queue(net);
-+      netif_tx_start_all_queues(net);
-       nvdev = hv_get_drvdata(device_obj);
-       rdev = nvdev->extension;
-@@ -149,6 +149,88 @@ static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
-       return ppi;
- }
-+union sub_key {
-+      u64 k;
-+      struct {
-+              u8 pad[3];
-+              u8 kb;
-+              u32 ka;
-+      };
-+};
-+
-+/* Toeplitz hash function
-+ * data: network byte order
-+ * return: host byte order
-+ */
-+static u32 comp_hash(u8 *key, int klen, u8 *data, int dlen)
-+{
-+      union sub_key subk;
-+      int k_next = 4;
-+      u8 dt;
-+      int i, j;
-+      u32 ret = 0;
-+
-+      subk.k = 0;
-+      subk.ka = ntohl(*(u32 *)key);
-+
-+      for (i = 0; i < dlen; i++) {
-+              subk.kb = key[k_next];
-+              k_next = (k_next + 1) % klen;
-+              dt = data[i];
-+              for (j = 0; j < 8; j++) {
-+                      if (dt & 0x80)
-+                              ret ^= subk.ka;
-+                      dt <<= 1;
-+                      subk.k <<= 1;
-+              }
-+      }
-+
-+      return ret;
-+}
-+
-+static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb)
-+{
-+      struct iphdr *iphdr;
-+      int data_len;
-+      bool ret = false;
-+
-+      if (eth_hdr(skb)->h_proto != htons(ETH_P_IP))
-+              return false;
-+
-+      iphdr = ip_hdr(skb);
-+
-+      if (iphdr->version == 4) {
-+              if (iphdr->protocol == IPPROTO_TCP)
-+                      data_len = 12;
-+              else
-+                      data_len = 8;
-+              *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN,
-+                                (u8 *)&iphdr->saddr, data_len);
-+              ret = true;
-+      }
-+
-+      return ret;
-+}
-+
-+static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-+                      void *accel_priv, select_queue_fallback_t fallback)
-+{
-+      struct net_device_context *net_device_ctx = netdev_priv(ndev);
-+      struct hv_device *hdev =  net_device_ctx->device_ctx;
-+      struct netvsc_device *nvsc_dev = hv_get_drvdata(hdev);
-+      u32 hash;
-+      u16 q_idx = 0;
-+
-+      if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-+              return 0;
-+
-+      if (netvsc_set_hash(&hash, skb))
-+              q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-+                      ndev->real_num_tx_queues;
-+
-+      return q_idx;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -333,6 +415,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet->vlan_tci = skb->vlan_tci;
-+      packet->q_idx = skb_get_queue_mapping(skb);
-+
-       packet->is_data_pkt = true;
-       packet->total_data_buflen = skb->len;
-@@ -554,6 +638,10 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-                                      packet->vlan_tci);
-+      skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+                          offermsg.offer.sub_channel_index %
-+                          net->real_num_rx_queues);
-+
-       net->stats.rx_packets++;
-       net->stats.rx_bytes += packet->total_data_buflen;
-@@ -602,7 +690,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
-       hv_set_drvdata(hdev, ndev);
-       device_info.ring_size = ring_size;
-       rndis_filter_device_add(hdev, &device_info);
--      netif_wake_queue(ndev);
-+      netif_tx_wake_all_queues(ndev);
-       return 0;
- }
-@@ -648,6 +736,7 @@ static const struct net_device_ops device_ops = {
-       .ndo_change_mtu =               netvsc_change_mtu,
-       .ndo_validate_addr =            eth_validate_addr,
-       .ndo_set_mac_address =          netvsc_set_mac_addr,
-+      .ndo_select_queue =             netvsc_select_queue,
- };
- /*
-@@ -694,9 +783,11 @@ static int netvsc_probe(struct hv_device *dev,
-       struct net_device *net = NULL;
-       struct net_device_context *net_device_ctx;
-       struct netvsc_device_info device_info;
-+      struct netvsc_device *nvdev;
-       int ret;
--      net = alloc_etherdev(sizeof(struct net_device_context));
-+      net = alloc_etherdev_mq(sizeof(struct net_device_context),
-+                              num_online_cpus());
-       if (!net)
-               return -ENOMEM;
-@@ -729,6 +820,12 @@ static int netvsc_probe(struct hv_device *dev,
-       }
-       memcpy(net->dev_addr, device_info.mac_adr, ETH_ALEN);
-+      nvdev = hv_get_drvdata(dev);
-+      netif_set_real_num_tx_queues(net, nvdev->num_chn);
-+      netif_set_real_num_rx_queues(net, nvdev->num_chn);
-+      dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-+               net->real_num_tx_queues, net->real_num_rx_queues);
-+
-       ret = register_netdev(net);
-       if (ret != 0) {
-               pr_err("Unable to register netdev.\n");
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 143a98caf618..d92cfbe43410 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -31,7 +31,7 @@
- #include "hyperv_net.h"
--#define RNDIS_EXT_LEN 100
-+#define RNDIS_EXT_LEN PAGE_SIZE
- struct rndis_request {
-       struct list_head list_ent;
-       struct completion  wait_event;
-@@ -94,6 +94,8 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
-       rndis_msg->ndis_msg_type = msg_type;
-       rndis_msg->msg_len = msg_len;
-+      request->pkt.q_idx = 0;
-+
-       /*
-        * Set the request id. This field is always after the rndis header for
-        * request/response packet types so we just used the SetRequest as a
-@@ -509,6 +511,19 @@ static int rndis_filter_query_device(struct rndis_device *dev, u32 oid,
-       query->info_buflen = 0;
-       query->dev_vc_handle = 0;
-+      if (oid == OID_GEN_RECEIVE_SCALE_CAPABILITIES) {
-+              struct ndis_recv_scale_cap *cap;
-+
-+              request->request_msg.msg_len +=
-+                      sizeof(struct ndis_recv_scale_cap);
-+              query->info_buflen = sizeof(struct ndis_recv_scale_cap);
-+              cap = (struct ndis_recv_scale_cap *)((unsigned long)query +
-+                                                   query->info_buf_offset);
-+              cap->hdr.type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-+              cap->hdr.rev = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
-+              cap->hdr.size = sizeof(struct ndis_recv_scale_cap);
-+      }
-+
-       ret = rndis_filter_send_request(dev, request);
-       if (ret != 0)
-               goto cleanup;
-@@ -695,6 +710,89 @@ cleanup:
-       return ret;
- }
-+u8 netvsc_hash_key[HASH_KEYLEN] = {
-+      0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
-+      0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
-+      0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
-+      0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
-+      0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
-+};
-+
-+int rndis_filter_set_rss_param(struct rndis_device *rdev, int num_queue)
-+{
-+      struct net_device *ndev = rdev->net_dev->ndev;
-+      struct rndis_request *request;
-+      struct rndis_set_request *set;
-+      struct rndis_set_complete *set_complete;
-+      u32 extlen = sizeof(struct ndis_recv_scale_param) +
-+                   4*ITAB_NUM + HASH_KEYLEN;
-+      struct ndis_recv_scale_param *rssp;
-+      u32 *itab;
-+      u8 *keyp;
-+      int i, t, ret;
-+
-+      request = get_rndis_request(
-+                      rdev, RNDIS_MSG_SET,
-+                      RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+      if (!request)
-+              return -ENOMEM;
-+
-+      set = &request->request_msg.msg.set_req;
-+      set->oid = OID_GEN_RECEIVE_SCALE_PARAMETERS;
-+      set->info_buflen = extlen;
-+      set->info_buf_offset = sizeof(struct rndis_set_request);
-+      set->dev_vc_handle = 0;
-+
-+      rssp = (struct ndis_recv_scale_param *)(set + 1);
-+      rssp->hdr.type = NDIS_OBJECT_TYPE_RSS_PARAMETERS;
-+      rssp->hdr.rev = NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2;
-+      rssp->hdr.size = sizeof(struct ndis_recv_scale_param);
-+      rssp->flag = 0;
-+      rssp->hashinfo = NDIS_HASH_FUNC_TOEPLITZ | NDIS_HASH_IPV4 |
-+                       NDIS_HASH_TCP_IPV4;
-+      rssp->indirect_tabsize = 4*ITAB_NUM;
-+      rssp->indirect_taboffset = sizeof(struct ndis_recv_scale_param);
-+      rssp->hashkey_size = HASH_KEYLEN;
-+      rssp->kashkey_offset = rssp->indirect_taboffset +
-+                             rssp->indirect_tabsize;
-+
-+      /* Set indirection table entries */
-+      itab = (u32 *)(rssp + 1);
-+      for (i = 0; i < ITAB_NUM; i++)
-+              itab[i] = i % num_queue;
-+
-+      /* Set hask key values */
-+      keyp = (u8 *)((unsigned long)rssp + rssp->kashkey_offset);
-+      for (i = 0; i < HASH_KEYLEN; i++)
-+              keyp[i] = netvsc_hash_key[i];
-+
-+
-+      ret = rndis_filter_send_request(rdev, request);
-+      if (ret != 0)
-+              goto cleanup;
-+
-+      t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+      if (t == 0) {
-+              netdev_err(ndev, "timeout before we got a set response...\n");
-+              /* can't put_rndis_request, since we may still receive a
-+               * send-completion.
-+               */
-+              return -ETIMEDOUT;
-+      } else {
-+              set_complete = &request->response_msg.msg.set_complete;
-+              if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+                      netdev_err(ndev, "Fail to set RSS parameters:0x%x\n",
-+                                 set_complete->status);
-+                      ret = -EINVAL;
-+              }
-+      }
-+
-+cleanup:
-+      put_rndis_request(rdev, request);
-+      return ret;
-+}
-+
-+
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
-       u32 size = sizeof(u32);
-@@ -886,6 +984,28 @@ static int rndis_filter_close_device(struct rndis_device *dev)
-       return ret;
- }
-+static void netvsc_sc_open(struct vmbus_channel *new_sc)
-+{
-+      struct netvsc_device *nvscdev;
-+      u16 chn_index = new_sc->offermsg.offer.sub_channel_index;
-+      int ret;
-+
-+      nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj);
-+
-+      if (chn_index >= nvscdev->num_chn)
-+              return;
-+
-+      set_per_channel_state(new_sc, nvscdev->sub_cb_buf + (chn_index - 1) *
-+                            NETVSC_PACKET_SIZE);
-+
-+      ret = vmbus_open(new_sc, nvscdev->ring_size * PAGE_SIZE,
-+                       nvscdev->ring_size * PAGE_SIZE, NULL, 0,
-+                       netvsc_channel_cb, new_sc);
-+
-+      if (ret == 0)
-+              nvscdev->chn_table[chn_index] = new_sc;
-+}
-+
- int rndis_filter_device_add(struct hv_device *dev,
-                                 void *additional_info)
- {
-@@ -894,6 +1014,10 @@ int rndis_filter_device_add(struct hv_device *dev,
-       struct rndis_device *rndis_device;
-       struct netvsc_device_info *device_info = additional_info;
-       struct ndis_offload_params offloads;
-+      struct nvsp_message *init_packet;
-+      int t;
-+      struct ndis_recv_scale_cap rsscap;
-+      u32 rsscap_size = sizeof(struct ndis_recv_scale_cap);
-       rndis_device = get_rndis_device();
-       if (!rndis_device)
-@@ -913,6 +1037,7 @@ int rndis_filter_device_add(struct hv_device *dev,
-       /* Initialize the rndis device */
-       net_device = hv_get_drvdata(dev);
-+      net_device->num_chn = 1;
-       net_device->extension = rndis_device;
-       rndis_device->net_dev = net_device;
-@@ -952,7 +1077,6 @@ int rndis_filter_device_add(struct hv_device *dev,
-       if (ret)
-               goto err_dev_remv;
--
-       rndis_filter_query_device_link_status(rndis_device);
-       device_info->link_state = rndis_device->link_state;
-@@ -961,7 +1085,66 @@ int rndis_filter_device_add(struct hv_device *dev,
-                rndis_device->hw_mac_adr,
-                device_info->link_state ? "down" : "up");
--      return ret;
-+      if (net_device->nvsp_version < NVSP_PROTOCOL_VERSION_5)
-+              return 0;
-+
-+      /* vRSS setup */
-+      memset(&rsscap, 0, rsscap_size);
-+      ret = rndis_filter_query_device(rndis_device,
-+                                      OID_GEN_RECEIVE_SCALE_CAPABILITIES,
-+                                      &rsscap, &rsscap_size);
-+      if (ret || rsscap.num_recv_que < 2)
-+              goto out;
-+
-+      net_device->num_chn = (num_online_cpus() < rsscap.num_recv_que) ?
-+                             num_online_cpus() : rsscap.num_recv_que;
-+      if (net_device->num_chn == 1)
-+              goto out;
-+
-+      net_device->sub_cb_buf = vzalloc((net_device->num_chn - 1) *
-+                                       NETVSC_PACKET_SIZE);
-+      if (!net_device->sub_cb_buf) {
-+              net_device->num_chn = 1;
-+              dev_info(&dev->device, "No memory for subchannels.\n");
-+              goto out;
-+      }
-+
-+      vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
-+
-+      init_packet = &net_device->channel_init_pkt;
-+      memset(init_packet, 0, sizeof(struct nvsp_message));
-+      init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
-+      init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
-+      init_packet->msg.v5_msg.subchn_req.num_subchannels =
-+                                              net_device->num_chn - 1;
-+      ret = vmbus_sendpacket(dev->channel, init_packet,
-+                             sizeof(struct nvsp_message),
-+                             (unsigned long)init_packet,
-+                             VM_PKT_DATA_INBAND,
-+                             VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+      if (ret)
-+              goto out;
-+      t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+      if (t == 0) {
-+              ret = -ETIMEDOUT;
-+              goto out;
-+      }
-+      if (init_packet->msg.v5_msg.subchn_comp.status !=
-+          NVSP_STAT_SUCCESS) {
-+              ret = -ENODEV;
-+              goto out;
-+      }
-+      net_device->num_chn = 1 +
-+              init_packet->msg.v5_msg.subchn_comp.num_subchannels;
-+
-+      vmbus_are_subchannels_present(dev->channel);
-+
-+      ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn);
-+
-+out:
-+      if (ret)
-+              net_device->num_chn = 1;
-+      return 0; /* return 0 because primary channel can be used alone */
- err_dev_remv:
-       rndis_filter_device_remove(dev);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0002-Drivers-net-hyperv-Cleanup-the-receive-path.patch b/src/patches/linux/0002-Drivers-net-hyperv-Cleanup-the-receive-path.patch
deleted file mode 100644 (file)
index 79485b3..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-From 348a5d691d84759dda8cdd3cbf9f071115c1240e Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:44 -0800
-Subject: [PATCH 02/25] Drivers: net: hyperv: Cleanup the receive path
-
-Make the receive path a little more efficient by parameterizing the
-required state rather than re-establishing that state.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 29 +++++++++++++----------------
- 1 file changed, 13 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 03a2c6e17158..7fa2bbade327 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -432,17 +432,14 @@ static inline u32 hv_ringbuf_avail_percent(
-       return avail_write * 100 / ring_info->ring_datasize;
- }
--static void netvsc_send_completion(struct hv_device *device,
-+static void netvsc_send_completion(struct netvsc_device *net_device,
-+                                 struct hv_device *device,
-                                  struct vmpacket_descriptor *packet)
- {
--      struct netvsc_device *net_device;
-       struct nvsp_message *nvsp_packet;
-       struct hv_netvsc_packet *nvsc_packet;
-       struct net_device *ndev;
--      net_device = get_inbound_net_device(device);
--      if (!net_device)
--              return;
-       ndev = net_device->ndev;
-       nvsp_packet = (struct nvsp_message *)((unsigned long)packet +
-@@ -561,13 +558,13 @@ int netvsc_send(struct hv_device *device,
- }
- static void netvsc_send_recv_completion(struct hv_device *device,
-+                                      struct netvsc_device *net_device,
-                                       u64 transaction_id, u32 status)
- {
-       struct nvsp_message recvcompMessage;
-       int retries = 0;
-       int ret;
-       struct net_device *ndev;
--      struct netvsc_device *net_device = hv_get_drvdata(device);
-       ndev = net_device->ndev;
-@@ -653,14 +650,15 @@ static void netvsc_receive_completion(void *context)
-       /* Send a receive completion for the xfer page packet */
-       if (fsend_receive_comp)
--              netvsc_send_recv_completion(device, transaction_id, status);
-+              netvsc_send_recv_completion(device, net_device, transaction_id,
-+                                      status);
- }
--static void netvsc_receive(struct hv_device *device,
--                          struct vmpacket_descriptor *packet)
-+static void netvsc_receive(struct netvsc_device *net_device,
-+                      struct hv_device *device,
-+                      struct vmpacket_descriptor *packet)
- {
--      struct netvsc_device *net_device;
-       struct vmtransfer_page_packet_header *vmxferpage_packet;
-       struct nvsp_message *nvsp_packet;
-       struct hv_netvsc_packet *netvsc_packet = NULL;
-@@ -673,9 +671,6 @@ static void netvsc_receive(struct hv_device *device,
-       LIST_HEAD(listHead);
--      net_device = get_inbound_net_device(device);
--      if (!net_device)
--              return;
-       ndev = net_device->ndev;
-       /*
-@@ -741,7 +736,7 @@ static void netvsc_receive(struct hv_device *device,
-               spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
-                                      flags);
--              netvsc_send_recv_completion(device,
-+              netvsc_send_recv_completion(device, net_device,
-                                           vmxferpage_packet->d.trans_id,
-                                           NVSP_STAT_FAIL);
-@@ -825,11 +820,13 @@ static void netvsc_channel_cb(void *context)
-                               desc = (struct vmpacket_descriptor *)buffer;
-                               switch (desc->type) {
-                               case VM_PKT_COMP:
--                                      netvsc_send_completion(device, desc);
-+                                      netvsc_send_completion(net_device,
-+                                                              device, desc);
-                                       break;
-                               case VM_PKT_DATA_USING_XFER_PAGES:
--                                      netvsc_receive(device, desc);
-+                                      netvsc_receive(net_device,
-+                                                      device, desc);
-                                       break;
-                               default:
--- 
-2.4.3
-
diff --git a/src/patches/linux/0002-hyperv-Remove-recv_pkt_list-and-lock.patch b/src/patches/linux/0002-hyperv-Remove-recv_pkt_list-and-lock.patch
deleted file mode 100644 (file)
index bbe0e52..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-From 4baab26129e0540746744232022110dbe9e011e7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:43 -0700
-Subject: [PATCH 02/11] hyperv: Remove recv_pkt_list and lock
-
-Removed recv_pkt_list and lock, and updated related code, so that
-the locking overhead is reduced especially when multiple channels
-are in use.
-
-The recv_pkt_list isn't actually necessary because the packets are
-processed sequentially in each channel. It has been replaced by a
-local variable, and the related lock for this list is also removed.
-The is_data_pkt field is not used in receive path, so its assignment
-is cleaned up.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   |  33 --------
- drivers/net/hyperv/netvsc.c       | 174 +++-----------------------------------
- drivers/net/hyperv/netvsc_drv.c   |   2 +-
- drivers/net/hyperv/rndis_filter.c |   2 -
- 4 files changed, 13 insertions(+), 198 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 57eb3f906d64..a1af0f7711e2 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -119,27 +119,14 @@ struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
- };
- /* Fwd declaration */
--struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
--/* Represent the xfer page packet which contains 1 or more netvsc packet */
--struct xferpage_packet {
--      struct list_head list_ent;
--      u32 status;
--
--      /* # of netvsc packets this xfer packet contains */
--      u32 count;
--
--      struct vmbus_channel *channel;
--};
--
- /*
-  * Represent netvsc packet which contains 1 RNDIS and 1 ethernet frame
-  * within the RNDIS
-  */
- struct hv_netvsc_packet {
-       /* Bookkeeping stuff */
--      struct list_head list_ent;
-       u32 status;
-       struct hv_device *device;
-@@ -149,19 +136,8 @@ struct hv_netvsc_packet {
-       u16 q_idx;
-       struct vmbus_channel *channel;
--      /*
--       * Valid only for receives when we break a xfer page packet
--       * into multiple netvsc packets
--       */
--      struct xferpage_packet *xfer_page_pkt;
--
-       union {
-               struct {
--                      u64 recv_completion_tid;
--                      void *recv_completion_ctx;
--                      void (*recv_completion)(void *context);
--              } recv;
--              struct {
-                       u64 send_completion_tid;
-                       void *send_completion_ctx;
-                       void (*send_completion)(void *context);
-@@ -613,9 +589,6 @@ struct nvsp_message {
- #define NETVSC_RECEIVE_BUFFER_ID              0xcafe
--/* Preallocated receive packets */
--#define NETVSC_RECEIVE_PACKETLIST_COUNT               256
--
- #define NETVSC_PACKET_SIZE                      2048
- #define VRSS_SEND_TAB_SIZE 16
-@@ -630,12 +603,6 @@ struct netvsc_device {
-       wait_queue_head_t wait_drain;
-       bool start_remove;
-       bool destroy;
--      /*
--       * List of free preallocated hv_netvsc_packet to represent receive
--       * packet
--       */
--      struct list_head recv_pkt_list;
--      spinlock_t recv_pkt_list_lock;
-       /* Receive buffer allocated by us but manages by NetVSP */
-       void *recv_buf;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index e7e77f12bc38..b10334773b32 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -387,7 +387,6 @@ static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- int netvsc_device_remove(struct hv_device *device)
- {
-       struct netvsc_device *net_device;
--      struct hv_netvsc_packet *netvsc_packet, *pos;
-       unsigned long flags;
-       net_device = hv_get_drvdata(device);
-@@ -416,12 +415,6 @@ int netvsc_device_remove(struct hv_device *device)
-       vmbus_close(device->channel);
-       /* Release all resources */
--      list_for_each_entry_safe(netvsc_packet, pos,
--                               &net_device->recv_pkt_list, list_ent) {
--              list_del(&netvsc_packet->list_ent);
--              kfree(netvsc_packet);
--      }
--
-       if (net_device->sub_cb_buf)
-               vfree(net_device->sub_cb_buf);
-@@ -641,62 +634,6 @@ retry_send_cmplt:
-       }
- }
--/* Send a receive completion packet to RNDIS device (ie NetVsp) */
--static void netvsc_receive_completion(void *context)
--{
--      struct hv_netvsc_packet *packet = context;
--      struct hv_device *device = packet->device;
--      struct vmbus_channel *channel;
--      struct netvsc_device *net_device;
--      u64 transaction_id = 0;
--      bool fsend_receive_comp = false;
--      unsigned long flags;
--      struct net_device *ndev;
--      u32 status = NVSP_STAT_NONE;
--
--      /*
--       * Even though it seems logical to do a GetOutboundNetDevice() here to
--       * send out receive completion, we are using GetInboundNetDevice()
--       * since we may have disable outbound traffic already.
--       */
--      net_device = get_inbound_net_device(device);
--      if (!net_device)
--              return;
--      ndev = net_device->ndev;
--
--      /* Overloading use of the lock. */
--      spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--
--      if (packet->status != NVSP_STAT_SUCCESS)
--              packet->xfer_page_pkt->status = NVSP_STAT_FAIL;
--
--      packet->xfer_page_pkt->count--;
--
--      /*
--       * Last one in the line that represent 1 xfer page packet.
--       * Return the xfer page packet itself to the freelist
--       */
--      if (packet->xfer_page_pkt->count == 0) {
--              fsend_receive_comp = true;
--              channel = packet->xfer_page_pkt->channel;
--              transaction_id = packet->completion.recv.recv_completion_tid;
--              status = packet->xfer_page_pkt->status;
--              list_add_tail(&packet->xfer_page_pkt->list_ent,
--                            &net_device->recv_pkt_list);
--
--      }
--
--      /* Put the packet back */
--      list_add_tail(&packet->list_ent, &net_device->recv_pkt_list);
--      spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
--      /* Send a receive completion for the xfer page packet */
--      if (fsend_receive_comp)
--              netvsc_send_recv_completion(device, channel, net_device,
--                                          transaction_id, status);
--
--}
--
- static void netvsc_receive(struct netvsc_device *net_device,
-                       struct vmbus_channel *channel,
-                       struct hv_device *device,
-@@ -704,16 +641,13 @@ static void netvsc_receive(struct netvsc_device *net_device,
- {
-       struct vmtransfer_page_packet_header *vmxferpage_packet;
-       struct nvsp_message *nvsp_packet;
--      struct hv_netvsc_packet *netvsc_packet = NULL;
--      /* struct netvsc_driver *netvscDriver; */
--      struct xferpage_packet *xferpage_packet = NULL;
-+      struct hv_netvsc_packet nv_pkt;
-+      struct hv_netvsc_packet *netvsc_packet = &nv_pkt;
-+      u32 status = NVSP_STAT_SUCCESS;
-       int i;
-       int count = 0;
--      unsigned long flags;
-       struct net_device *ndev;
--      LIST_HEAD(listHead);
--
-       ndev = net_device->ndev;
-       /*
-@@ -746,78 +680,14 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               return;
-       }
--      /*
--       * Grab free packets (range count + 1) to represent this xfer
--       * page packet. +1 to represent the xfer page packet itself.
--       * We grab it here so that we know exactly how many we can
--       * fulfil
--       */
--      spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--      while (!list_empty(&net_device->recv_pkt_list)) {
--              list_move_tail(net_device->recv_pkt_list.next, &listHead);
--              if (++count == vmxferpage_packet->range_cnt + 1)
--                      break;
--      }
--      spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
--      /*
--       * We need at least 2 netvsc pkts (1 to represent the xfer
--       * page and at least 1 for the range) i.e. we can handled
--       * some of the xfer page packet ranges...
--       */
--      if (count < 2) {
--              netdev_err(ndev, "Got only %d netvsc pkt...needed "
--                      "%d pkts. Dropping this xfer page packet completely!\n",
--                      count, vmxferpage_packet->range_cnt + 1);
--
--              /* Return it to the freelist */
--              spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--              for (i = count; i != 0; i--) {
--                      list_move_tail(listHead.next,
--                                     &net_device->recv_pkt_list);
--              }
--              spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
--                                     flags);
--
--              netvsc_send_recv_completion(device, channel, net_device,
--                                          vmxferpage_packet->d.trans_id,
--                                          NVSP_STAT_FAIL);
--
--              return;
--      }
--
--      /* Remove the 1st packet to represent the xfer page packet itself */
--      xferpage_packet = (struct xferpage_packet *)listHead.next;
--      list_del(&xferpage_packet->list_ent);
--      xferpage_packet->status = NVSP_STAT_SUCCESS;
--      xferpage_packet->channel = channel;
--
--      /* This is how much we can satisfy */
--      xferpage_packet->count = count - 1;
--
--      if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
--              netdev_err(ndev, "Needed %d netvsc pkts to satisfy "
--                      "this xfer page...got %d\n",
--                      vmxferpage_packet->range_cnt, xferpage_packet->count);
--      }
-+      count = vmxferpage_packet->range_cnt;
-+      netvsc_packet->device = device;
-+      netvsc_packet->channel = channel;
-       /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */
--      for (i = 0; i < (count - 1); i++) {
--              netvsc_packet = (struct hv_netvsc_packet *)listHead.next;
--              list_del(&netvsc_packet->list_ent);
--
-+      for (i = 0; i < count; i++) {
-               /* Initialize the netvsc packet */
-               netvsc_packet->status = NVSP_STAT_SUCCESS;
--              netvsc_packet->xfer_page_pkt = xferpage_packet;
--              netvsc_packet->completion.recv.recv_completion =
--                                      netvsc_receive_completion;
--              netvsc_packet->completion.recv.recv_completion_ctx =
--                                      netvsc_packet;
--              netvsc_packet->device = device;
--              /* Save this so that we can send it back */
--              netvsc_packet->completion.recv.recv_completion_tid =
--                                      vmxferpage_packet->d.trans_id;
--
-               netvsc_packet->data = (void *)((unsigned long)net_device->
-                       recv_buf + vmxferpage_packet->ranges[i].byte_offset);
-               netvsc_packet->total_data_buflen =
-@@ -826,10 +696,12 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               /* Pass it to the upper layer */
-               rndis_filter_receive(device, netvsc_packet);
--              netvsc_receive_completion(netvsc_packet->
--                              completion.recv.recv_completion_ctx);
-+              if (netvsc_packet->status != NVSP_STAT_SUCCESS)
-+                      status = NVSP_STAT_FAIL;
-       }
-+      netvsc_send_recv_completion(device, channel, net_device,
-+                                  vmxferpage_packet->d.trans_id, status);
- }
-@@ -956,11 +828,9 @@ void netvsc_channel_cb(void *context)
- int netvsc_device_add(struct hv_device *device, void *additional_info)
- {
-       int ret = 0;
--      int i;
-       int ring_size =
-       ((struct netvsc_device_info *)additional_info)->ring_size;
-       struct netvsc_device *net_device;
--      struct hv_netvsc_packet *packet, *pos;
-       struct net_device *ndev;
-       net_device = alloc_net_device(device);
-@@ -981,18 +851,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       ndev = net_device->ndev;
-       /* Initialize the NetVSC channel extension */
--      spin_lock_init(&net_device->recv_pkt_list_lock);
--
--      INIT_LIST_HEAD(&net_device->recv_pkt_list);
--
--      for (i = 0; i < NETVSC_RECEIVE_PACKETLIST_COUNT; i++) {
--              packet = kzalloc(sizeof(struct hv_netvsc_packet), GFP_KERNEL);
--              if (!packet)
--                      break;
--
--              list_add_tail(&packet->list_ent,
--                            &net_device->recv_pkt_list);
--      }
-       init_completion(&net_device->channel_init_wait);
-       set_per_channel_state(device->channel, net_device->cb_buffer);
-@@ -1028,16 +886,8 @@ close:
- cleanup:
--      if (net_device) {
--              list_for_each_entry_safe(packet, pos,
--                                       &net_device->recv_pkt_list,
--                                       list_ent) {
--                      list_del(&packet->list_ent);
--                      kfree(packet);
--              }
--
-+      if (net_device)
-               kfree(net_device);
--      }
-       return ret;
- }
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 093cf3fc46b8..8f6d53a2ed95 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -638,7 +638,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-                                      packet->vlan_tci);
--      skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+      skb_record_rx_queue(skb, packet->channel->
-                           offermsg.offer.sub_channel_index %
-                           net->real_num_rx_queues);
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index d92cfbe43410..48f5a0fbd674 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -401,8 +401,6 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
-       pkt->total_data_buflen = rndis_pkt->data_len;
-       pkt->data = (void *)((unsigned long)pkt->data + data_offset);
--      pkt->is_data_pkt = true;
--
-       vlan = rndis_get_ppi(rndis_pkt, IEEE_8021Q_INFO);
-       if (vlan) {
-               pkt->vlan_tci = VLAN_TAG_PRESENT | vlan->vlanid |
--- 
-2.4.3
-
diff --git a/src/patches/linux/0003-Drivers-net-hyperv-Cleanup-the-netvsc-receive-callba.patch b/src/patches/linux/0003-Drivers-net-hyperv-Cleanup-the-netvsc-receive-callba.patch
deleted file mode 100644 (file)
index e0b82ea..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-From c9f2db35ac4f789930522d9d36200cb71b442bed Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 16 Feb 2014 16:38:45 -0800
-Subject: [PATCH 03/25] Drivers: net: hyperv: Cleanup the netvsc receive
- callback functio
-
-Get rid of the buffer allocation in the receive path for normal packets.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h |  2 ++
- drivers/net/hyperv/netvsc.c     | 33 ++++++++++-----------------------
- 2 files changed, 12 insertions(+), 23 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7645ba38bde8..01a16ea77a5a 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -506,6 +506,8 @@ struct netvsc_device {
-       /* Holds rndis device info */
-       void *extension;
-+      /* The recive buffer for this device */
-+      unsigned char cb_buffer[NETVSC_PACKET_SIZE];
- };
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 7fa2bbade327..9a0e9c6f1414 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -795,22 +795,16 @@ static void netvsc_channel_cb(void *context)
-       struct netvsc_device *net_device;
-       u32 bytes_recvd;
-       u64 request_id;
--      unsigned char *packet;
-       struct vmpacket_descriptor *desc;
-       unsigned char *buffer;
-       int bufferlen = NETVSC_PACKET_SIZE;
-       struct net_device *ndev;
--      packet = kzalloc(NETVSC_PACKET_SIZE * sizeof(unsigned char),
--                       GFP_ATOMIC);
--      if (!packet)
--              return;
--      buffer = packet;
--
-       net_device = get_inbound_net_device(device);
-       if (!net_device)
--              goto out;
-+              return;
-       ndev = net_device->ndev;
-+      buffer = net_device->cb_buffer;
-       do {
-               ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-@@ -838,23 +832,16 @@ static void netvsc_channel_cb(void *context)
-                                       break;
-                               }
--                              /* reset */
--                              if (bufferlen > NETVSC_PACKET_SIZE) {
--                                      kfree(buffer);
--                                      buffer = packet;
--                                      bufferlen = NETVSC_PACKET_SIZE;
--                              }
-                       } else {
--                              /* reset */
--                              if (bufferlen > NETVSC_PACKET_SIZE) {
--                                      kfree(buffer);
--                                      buffer = packet;
--                                      bufferlen = NETVSC_PACKET_SIZE;
--                              }
--
-+                              /*
-+                               * We are done for this pass.
-+                               */
-                               break;
-                       }
-+
-               } else if (ret == -ENOBUFS) {
-+                      if (bufferlen > NETVSC_PACKET_SIZE)
-+                              kfree(buffer);
-                       /* Handle large packet */
-                       buffer = kmalloc(bytes_recvd, GFP_ATOMIC);
-                       if (buffer == NULL) {
-@@ -869,8 +856,8 @@ static void netvsc_channel_cb(void *context)
-               }
-       } while (1);
--out:
--      kfree(buffer);
-+      if (bufferlen > NETVSC_PACKET_SIZE)
-+              kfree(buffer);
-       return;
- }
--- 
-2.4.3
-
diff --git a/src/patches/linux/0003-hyperv-Simplify-the-send_completion-variables.patch b/src/patches/linux/0003-hyperv-Simplify-the-send_completion-variables.patch
deleted file mode 100644 (file)
index dcab56f..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-From 893f66277799cd46bdf97429cc5d16a815a51273 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:44 -0700
-Subject: [PATCH 03/11] hyperv: Simplify the send_completion variables
-
-The union contains only one member now, so we use the variables in it directly.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 10 +++-------
- drivers/net/hyperv/netvsc.c       |  7 +++----
- drivers/net/hyperv/netvsc_drv.c   |  8 ++++----
- drivers/net/hyperv/rndis_filter.c |  2 +-
- 4 files changed, 11 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index a1af0f7711e2..d1f7826aa75f 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -136,13 +136,9 @@ struct hv_netvsc_packet {
-       u16 q_idx;
-       struct vmbus_channel *channel;
--      union {
--              struct {
--                      u64 send_completion_tid;
--                      void *send_completion_ctx;
--                      void (*send_completion)(void *context);
--              } send;
--      } completion;
-+      u64 send_completion_tid;
-+      void *send_completion_ctx;
-+      void (*send_completion)(void *context);
-       /* This points to the memory after page_buf */
-       struct rndis_message *rndis_msg;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index b10334773b32..bbee44635035 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -479,9 +479,8 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-               if (nvsc_packet) {
-                       q_idx = nvsc_packet->q_idx;
-                       channel = nvsc_packet->channel;
--                      nvsc_packet->completion.send.send_completion(
--                              nvsc_packet->completion.send.
--                              send_completion_ctx);
-+                      nvsc_packet->send_completion(nvsc_packet->
-+                                                   send_completion_ctx);
-               }
-               num_outstanding_sends =
-@@ -534,7 +533,7 @@ int netvsc_send(struct hv_device *device,
-               0xFFFFFFFF;
-       sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
--      if (packet->completion.send.send_completion)
-+      if (packet->send_completion)
-               req_id = (ulong)packet;
-       else
-               req_id = 0;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 8f6d53a2ed95..c76b66515e92 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -235,7 +235,7 @@ static void netvsc_xmit_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-       struct sk_buff *skb = (struct sk_buff *)
--              (unsigned long)packet->completion.send.send_completion_tid;
-+              (unsigned long)packet->send_completion_tid;
-       kfree(packet);
-@@ -425,9 +425,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-                               (num_data_pgs * sizeof(struct hv_page_buffer)));
-       /* Set the completion routine */
--      packet->completion.send.send_completion = netvsc_xmit_completion;
--      packet->completion.send.send_completion_ctx = packet;
--      packet->completion.send.send_completion_tid = (unsigned long)skb;
-+      packet->send_completion = netvsc_xmit_completion;
-+      packet->send_completion_ctx = packet;
-+      packet->send_completion_tid = (unsigned long)skb;
-       isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 48f5a0fbd674..99c527adae5b 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -236,7 +236,7 @@ static int rndis_filter_send_request(struct rndis_device *dev,
-                       packet->page_buf[0].len;
-       }
--      packet->completion.send.send_completion = NULL;
-+      packet->send_completion = NULL;
-       ret = netvsc_send(dev->net_dev->dev, packet);
-       return ret;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0004-hyperv-Add-latest-NetVSP-versions-to-auto-negotiatio.patch b/src/patches/linux/0004-hyperv-Add-latest-NetVSP-versions-to-auto-negotiatio.patch
deleted file mode 100644 (file)
index f9cd827..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-From 3c2a271d9681cc017947c5e027acc64707c30dee Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 19 Feb 2014 15:49:45 -0800
-Subject: [PATCH 04/25] hyperv: Add latest NetVSP versions to auto negotiation
-
-It auto negotiates the highest NetVSP version supported by both guest and host.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 53 +++++++++++++++++++++++++++++++++++++++++
- drivers/net/hyperv/netvsc.c     | 25 ++++++++++++-------
- drivers/net/hyperv/netvsc_drv.c |  2 +-
- 3 files changed, 70 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 01a16ea77a5a..39fc230f5c20 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -139,6 +139,8 @@ int rndis_filter_set_device_mac(struct hv_device *hdev, char *mac);
- #define NVSP_PROTOCOL_VERSION_1               2
- #define NVSP_PROTOCOL_VERSION_2               0x30002
-+#define NVSP_PROTOCOL_VERSION_4               0x40000
-+#define NVSP_PROTOCOL_VERSION_5               0x50000
- enum {
-       NVSP_MSG_TYPE_NONE = 0,
-@@ -193,6 +195,23 @@ enum {
-       NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE,
-       NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE_COMP,
-+
-+      NVSP_MSG2_MAX = NVSP_MSG2_TYPE_ALLOC_CHIMNEY_HANDLE_COMP,
-+
-+      /* Version 4 messages */
-+      NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION,
-+      NVSP_MSG4_TYPE_SWITCH_DATA_PATH,
-+      NVSP_MSG4_TYPE_UPLINK_CONNECT_STATE_DEPRECATED,
-+
-+      NVSP_MSG4_MAX = NVSP_MSG4_TYPE_UPLINK_CONNECT_STATE_DEPRECATED,
-+
-+      /* Version 5 messages */
-+      NVSP_MSG5_TYPE_OID_QUERY_EX,
-+      NVSP_MSG5_TYPE_OID_QUERY_EX_COMP,
-+      NVSP_MSG5_TYPE_SUBCHANNEL,
-+      NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE,
-+
-+      NVSP_MSG5_MAX = NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE,
- };
- enum {
-@@ -447,10 +466,44 @@ union nvsp_2_message_uber {
-       struct nvsp_2_free_rxbuf free_rxbuf;
- } __packed;
-+enum nvsp_subchannel_operation {
-+      NVSP_SUBCHANNEL_NONE = 0,
-+      NVSP_SUBCHANNEL_ALLOCATE,
-+      NVSP_SUBCHANNEL_MAX
-+};
-+
-+struct nvsp_5_subchannel_request {
-+      u32 op;
-+      u32 num_subchannels;
-+} __packed;
-+
-+struct nvsp_5_subchannel_complete {
-+      u32 status;
-+      u32 num_subchannels; /* Actual number of subchannels allocated */
-+} __packed;
-+
-+struct nvsp_5_send_indirect_table {
-+      /* The number of entries in the send indirection table */
-+      u32 count;
-+
-+      /* The offset of the send indireciton table from top of this struct.
-+       * The send indirection table tells which channel to put the send
-+       * traffic on. Each entry is a channel number.
-+       */
-+      u32 offset;
-+} __packed;
-+
-+union nvsp_5_message_uber {
-+      struct nvsp_5_subchannel_request subchn_req;
-+      struct nvsp_5_subchannel_complete subchn_comp;
-+      struct nvsp_5_send_indirect_table send_table;
-+} __packed;
-+
- union nvsp_all_messages {
-       union nvsp_message_init_uber init_msg;
-       union nvsp_1_message_uber v1_msg;
-       union nvsp_2_message_uber v2_msg;
-+      union nvsp_5_message_uber v5_msg;
- } __packed;
- /* ALL Messages */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 9a0e9c6f1414..1a0280dcba7e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -290,7 +290,7 @@ static int negotiate_nvsp_ver(struct hv_device *device,
-           NVSP_STAT_SUCCESS)
-               return -EINVAL;
--      if (nvsp_ver != NVSP_PROTOCOL_VERSION_2)
-+      if (nvsp_ver == NVSP_PROTOCOL_VERSION_1)
-               return 0;
-       /* NVSPv2 only: Send NDIS config */
-@@ -314,6 +314,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
-       struct nvsp_message *init_packet;
-       int ndis_version;
-       struct net_device *ndev;
-+      u32 ver_list[] = { NVSP_PROTOCOL_VERSION_1, NVSP_PROTOCOL_VERSION_2,
-+              NVSP_PROTOCOL_VERSION_4, NVSP_PROTOCOL_VERSION_5 };
-+      int i, num_ver = 4; /* number of different NVSP versions */
-       net_device = get_outbound_net_device(device);
-       if (!net_device)
-@@ -323,13 +326,14 @@ static int netvsc_connect_vsp(struct hv_device *device)
-       init_packet = &net_device->channel_init_pkt;
-       /* Negotiate the latest NVSP protocol supported */
--      if (negotiate_nvsp_ver(device, net_device, init_packet,
--                             NVSP_PROTOCOL_VERSION_2) == 0) {
--              net_device->nvsp_version = NVSP_PROTOCOL_VERSION_2;
--      } else if (negotiate_nvsp_ver(device, net_device, init_packet,
--                                  NVSP_PROTOCOL_VERSION_1) == 0) {
--              net_device->nvsp_version = NVSP_PROTOCOL_VERSION_1;
--      } else {
-+      for (i = num_ver - 1; i >= 0; i--)
-+              if (negotiate_nvsp_ver(device, net_device, init_packet,
-+                                     ver_list[i])  == 0) {
-+                      net_device->nvsp_version = ver_list[i];
-+                      break;
-+              }
-+
-+      if (i < 0) {
-               ret = -EPROTO;
-               goto cleanup;
-       }
-@@ -339,7 +343,10 @@ static int netvsc_connect_vsp(struct hv_device *device)
-       /* Send the ndis version */
-       memset(init_packet, 0, sizeof(struct nvsp_message));
--      ndis_version = 0x00050001;
-+      if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_4)
-+              ndis_version = 0x00050001;
-+      else
-+              ndis_version = 0x0006001e;
-       init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_NDIS_VER;
-       init_packet->msg.v1_msg.
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 28020f83ba6f..8e3a0b00099b 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -328,7 +328,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
-       if (nvdev == NULL || nvdev->destroy)
-               return -ENODEV;
--      if (nvdev->nvsp_version == NVSP_PROTOCOL_VERSION_2)
-+      if (nvdev->nvsp_version >= NVSP_PROTOCOL_VERSION_2)
-               limit = NETVSC_MTU;
-       if (mtu < 68 || mtu > limit)
--- 
-2.4.3
-
diff --git a/src/patches/linux/0004-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch b/src/patches/linux/0004-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch
deleted file mode 100644 (file)
index bc09122..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-From c25aaf814a63f9d9c4e45416f13d70ef0aa0be2e Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 10:14:31 -0700
-Subject: [PATCH 04/11] hyperv: Enable sendbuf mechanism on the send path
-
-We send packets using a copy-free mechanism (this is the Guest to Host transport
-via VMBUS). While this is obviously optimal for large packets,
-it may not be optimal for small packets. Hyper-V host supports
-a second mechanism for sending packets that is "copy based". We implement that
-mechanism in this patch.
-
-In this version of the patch I have addressed a comment from David Miller.
-
-With this patch (and all of the other offload and VRSS patches), we are now able
-to almost saturate a 10G interface between Linux VMs on Hyper-V
-on different hosts - close to  9 Gbps as measured via iperf.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h |  14 +++
- drivers/net/hyperv/netvsc.c     | 226 ++++++++++++++++++++++++++++++++++++++--
- drivers/net/hyperv/netvsc_drv.c |   3 +-
- 3 files changed, 234 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d1f7826aa75f..4b7df5a5c966 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -140,6 +140,8 @@ struct hv_netvsc_packet {
-       void *send_completion_ctx;
-       void (*send_completion)(void *context);
-+      u32 send_buf_index;
-+
-       /* This points to the memory after page_buf */
-       struct rndis_message *rndis_msg;
-@@ -582,6 +584,9 @@ struct nvsp_message {
- #define NETVSC_RECEIVE_BUFFER_SIZE            (1024*1024*16)  /* 16MB */
- #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY     (1024*1024*15)  /* 15MB */
-+#define NETVSC_SEND_BUFFER_SIZE                       (1024 * 1024)   /* 1MB */
-+#define NETVSC_INVALID_INDEX                  -1
-+
- #define NETVSC_RECEIVE_BUFFER_ID              0xcafe
-@@ -607,6 +612,15 @@ struct netvsc_device {
-       u32 recv_section_cnt;
-       struct nvsp_1_receive_buffer_section *recv_section;
-+      /* Send buffer allocated by us */
-+      void *send_buf;
-+      u32 send_buf_size;
-+      u32 send_buf_gpadl_handle;
-+      u32 send_section_cnt;
-+      u32 send_section_size;
-+      unsigned long *send_section_map;
-+      int map_words;
-+
-       /* Used for NetVSP initialization protocol */
-       struct completion channel_init_wait;
-       struct nvsp_message channel_init_pkt;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index bbee44635035..c041f63a6d30 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -28,6 +28,7 @@
- #include <linux/slab.h>
- #include <linux/netdevice.h>
- #include <linux/if_ether.h>
-+#include <asm/sync_bitops.h>
- #include "hyperv_net.h"
-@@ -80,7 +81,7 @@ get_in_err:
- }
--static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-+static int netvsc_destroy_buf(struct netvsc_device *net_device)
- {
-       struct nvsp_message *revoke_packet;
-       int ret = 0;
-@@ -146,10 +147,62 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-               net_device->recv_section = NULL;
-       }
-+      /* Deal with the send buffer we may have setup.
-+       * If we got a  send section size, it means we received a
-+       * SendsendBufferComplete msg (ie sent
-+       * NvspMessage1TypeSendReceiveBuffer msg) therefore, we need
-+       * to send a revoke msg here
-+       */
-+      if (net_device->send_section_size) {
-+              /* Send the revoke receive buffer */
-+              revoke_packet = &net_device->revoke_packet;
-+              memset(revoke_packet, 0, sizeof(struct nvsp_message));
-+
-+              revoke_packet->hdr.msg_type =
-+                      NVSP_MSG1_TYPE_REVOKE_SEND_BUF;
-+              revoke_packet->msg.v1_msg.revoke_recv_buf.id = 0;
-+
-+              ret = vmbus_sendpacket(net_device->dev->channel,
-+                                     revoke_packet,
-+                                     sizeof(struct nvsp_message),
-+                                     (unsigned long)revoke_packet,
-+                                     VM_PKT_DATA_INBAND, 0);
-+              /* If we failed here, we might as well return and
-+               * have a leak rather than continue and a bugchk
-+               */
-+              if (ret != 0) {
-+                      netdev_err(ndev, "unable to send "
-+                                 "revoke send buffer to netvsp\n");
-+                      return ret;
-+              }
-+      }
-+      /* Teardown the gpadl on the vsp end */
-+      if (net_device->send_buf_gpadl_handle) {
-+              ret = vmbus_teardown_gpadl(net_device->dev->channel,
-+                                         net_device->send_buf_gpadl_handle);
-+
-+              /* If we failed here, we might as well return and have a leak
-+               * rather than continue and a bugchk
-+               */
-+              if (ret != 0) {
-+                      netdev_err(ndev,
-+                                 "unable to teardown send buffer's gpadl\n");
-+                      return ret;
-+              }
-+              net_device->recv_buf_gpadl_handle = 0;
-+      }
-+      if (net_device->send_buf) {
-+              /* Free up the receive buffer */
-+              free_pages((unsigned long)net_device->send_buf,
-+                         get_order(net_device->send_buf_size));
-+              net_device->send_buf = NULL;
-+      }
-+      kfree(net_device->send_section_map);
-+
-       return ret;
- }
--static int netvsc_init_recv_buf(struct hv_device *device)
-+static int netvsc_init_buf(struct hv_device *device)
- {
-       int ret = 0;
-       int t;
-@@ -248,10 +301,90 @@ static int netvsc_init_recv_buf(struct hv_device *device)
-               goto cleanup;
-       }
-+      /* Now setup the send buffer.
-+       */
-+      net_device->send_buf =
-+              (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO,
-+                                       get_order(net_device->send_buf_size));
-+      if (!net_device->send_buf) {
-+              netdev_err(ndev, "unable to allocate send "
-+                         "buffer of size %d\n", net_device->send_buf_size);
-+              ret = -ENOMEM;
-+              goto cleanup;
-+      }
-+
-+      /* Establish the gpadl handle for this buffer on this
-+       * channel.  Note: This call uses the vmbus connection rather
-+       * than the channel to establish the gpadl handle.
-+       */
-+      ret = vmbus_establish_gpadl(device->channel, net_device->send_buf,
-+                                  net_device->send_buf_size,
-+                                  &net_device->send_buf_gpadl_handle);
-+      if (ret != 0) {
-+              netdev_err(ndev,
-+                         "unable to establish send buffer's gpadl\n");
-+              goto cleanup;
-+      }
-+
-+      /* Notify the NetVsp of the gpadl handle */
-+      init_packet = &net_device->channel_init_pkt;
-+      memset(init_packet, 0, sizeof(struct nvsp_message));
-+      init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_SEND_BUF;
-+      init_packet->msg.v1_msg.send_recv_buf.gpadl_handle =
-+              net_device->send_buf_gpadl_handle;
-+      init_packet->msg.v1_msg.send_recv_buf.id = 0;
-+
-+      /* Send the gpadl notification request */
-+      ret = vmbus_sendpacket(device->channel, init_packet,
-+                             sizeof(struct nvsp_message),
-+                             (unsigned long)init_packet,
-+                             VM_PKT_DATA_INBAND,
-+                             VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+      if (ret != 0) {
-+              netdev_err(ndev,
-+                         "unable to send send buffer's gpadl to netvsp\n");
-+              goto cleanup;
-+      }
-+
-+      t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+      BUG_ON(t == 0);
-+
-+      /* Check the response */
-+      if (init_packet->msg.v1_msg.
-+          send_send_buf_complete.status != NVSP_STAT_SUCCESS) {
-+              netdev_err(ndev, "Unable to complete send buffer "
-+                         "initialization with NetVsp - status %d\n",
-+                         init_packet->msg.v1_msg.
-+                         send_recv_buf_complete.status);
-+              ret = -EINVAL;
-+              goto cleanup;
-+      }
-+
-+      /* Parse the response */
-+      net_device->send_section_size = init_packet->msg.
-+                              v1_msg.send_send_buf_complete.section_size;
-+
-+      /* Section count is simply the size divided by the section size.
-+       */
-+      net_device->send_section_cnt =
-+              net_device->send_buf_size/net_device->send_section_size;
-+
-+      dev_info(&device->device, "Send section size: %d, Section count:%d\n",
-+               net_device->send_section_size, net_device->send_section_cnt);
-+
-+      /* Setup state for managing the send buffer. */
-+      net_device->map_words = DIV_ROUND_UP(net_device->send_section_cnt,
-+                                           BITS_PER_LONG);
-+
-+      net_device->send_section_map =
-+              kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-+      if (net_device->send_section_map == NULL)
-+              goto cleanup;
-+
-       goto exit;
- cleanup:
--      netvsc_destroy_recv_buf(net_device);
-+      netvsc_destroy_buf(net_device);
- exit:
-       return ret;
-@@ -369,8 +502,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
-               net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
-       else
-               net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+      net_device->send_buf_size = NETVSC_SEND_BUFFER_SIZE;
--      ret = netvsc_init_recv_buf(device);
-+      ret = netvsc_init_buf(device);
- cleanup:
-       return ret;
-@@ -378,7 +512,7 @@ cleanup:
- static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- {
--      netvsc_destroy_recv_buf(net_device);
-+      netvsc_destroy_buf(net_device);
- }
- /*
-@@ -440,6 +574,12 @@ static inline u32 hv_ringbuf_avail_percent(
-       return avail_write * 100 / ring_info->ring_datasize;
- }
-+static inline void netvsc_free_send_slot(struct netvsc_device *net_device,
-+                                       u32 index)
-+{
-+      sync_change_bit(index, net_device->send_section_map);
-+}
-+
- static void netvsc_send_completion(struct netvsc_device *net_device,
-                                  struct hv_device *device,
-                                  struct vmpacket_descriptor *packet)
-@@ -447,6 +587,7 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-       struct nvsp_message *nvsp_packet;
-       struct hv_netvsc_packet *nvsc_packet;
-       struct net_device *ndev;
-+      u32 send_index;
-       ndev = net_device->ndev;
-@@ -477,6 +618,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-               /* Notify the layer above us */
-               if (nvsc_packet) {
-+                      send_index = nvsc_packet->send_buf_index;
-+                      if (send_index != NETVSC_INVALID_INDEX)
-+                              netvsc_free_send_slot(net_device, send_index);
-                       q_idx = nvsc_packet->q_idx;
-                       channel = nvsc_packet->channel;
-                       nvsc_packet->send_completion(nvsc_packet->
-@@ -504,6 +648,52 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- }
-+static u32 netvsc_get_next_send_section(struct netvsc_device *net_device)
-+{
-+      unsigned long index;
-+      u32 max_words = net_device->map_words;
-+      unsigned long *map_addr = (unsigned long *)net_device->send_section_map;
-+      u32 section_cnt = net_device->send_section_cnt;
-+      int ret_val = NETVSC_INVALID_INDEX;
-+      int i;
-+      int prev_val;
-+
-+      for (i = 0; i < max_words; i++) {
-+              if (!~(map_addr[i]))
-+                      continue;
-+              index = ffz(map_addr[i]);
-+              prev_val = sync_test_and_set_bit(index, &map_addr[i]);
-+              if (prev_val)
-+                      continue;
-+              if ((index + (i * BITS_PER_LONG)) >= section_cnt)
-+                      break;
-+              ret_val = (index + (i * BITS_PER_LONG));
-+              break;
-+      }
-+      return ret_val;
-+}
-+
-+u32 netvsc_copy_to_send_buf(struct netvsc_device *net_device,
-+                          unsigned int section_index,
-+                          struct hv_netvsc_packet *packet)
-+{
-+      char *start = net_device->send_buf;
-+      char *dest = (start + (section_index * net_device->send_section_size));
-+      int i;
-+      u32 msg_size = 0;
-+
-+      for (i = 0; i < packet->page_buf_cnt; i++) {
-+              char *src = phys_to_virt(packet->page_buf[i].pfn << PAGE_SHIFT);
-+              u32 offset = packet->page_buf[i].offset;
-+              u32 len = packet->page_buf[i].len;
-+
-+              memcpy(dest, (src + offset), len);
-+              msg_size += len;
-+              dest += len;
-+      }
-+      return msg_size;
-+}
-+
- int netvsc_send(struct hv_device *device,
-                       struct hv_netvsc_packet *packet)
- {
-@@ -513,6 +703,10 @@ int netvsc_send(struct hv_device *device,
-       struct net_device *ndev;
-       struct vmbus_channel *out_channel = NULL;
-       u64 req_id;
-+      unsigned int section_index = NETVSC_INVALID_INDEX;
-+      u32 msg_size = 0;
-+      struct sk_buff *skb;
-+
-       net_device = get_outbound_net_device(device);
-       if (!net_device)
-@@ -528,10 +722,26 @@ int netvsc_send(struct hv_device *device,
-               sendMessage.msg.v1_msg.send_rndis_pkt.channel_type = 1;
-       }
--      /* Not using send buffer section */
-+      /* Attempt to send via sendbuf */
-+      if (packet->total_data_buflen < net_device->send_section_size) {
-+              section_index = netvsc_get_next_send_section(net_device);
-+              if (section_index != NETVSC_INVALID_INDEX) {
-+                      msg_size = netvsc_copy_to_send_buf(net_device,
-+                                                         section_index,
-+                                                         packet);
-+                      skb = (struct sk_buff *)
-+                            (unsigned long)packet->send_completion_tid;
-+                      if (skb)
-+                              dev_kfree_skb_any(skb);
-+                      packet->page_buf_cnt = 0;
-+              }
-+      }
-+      packet->send_buf_index = section_index;
-+
-+
-       sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_index =
--              0xFFFFFFFF;
--      sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-+              section_index;
-+      sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = msg_size;
-       if (packet->send_completion)
-               req_id = (ulong)packet;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index c76b66515e92..939e3af60ec4 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -236,10 +236,11 @@ static void netvsc_xmit_completion(void *context)
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-       struct sk_buff *skb = (struct sk_buff *)
-               (unsigned long)packet->send_completion_tid;
-+      u32 index = packet->send_buf_index;
-       kfree(packet);
--      if (skb)
-+      if (skb && (index == NETVSC_INVALID_INDEX))
-               dev_kfree_skb_any(skb);
- }
--- 
-2.4.3
-
diff --git a/src/patches/linux/0005-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch b/src/patches/linux/0005-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch
deleted file mode 100644 (file)
index 4d00ad2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From e565e803d437b36c4fb4ced5e346827981183284 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Thu, 8 May 2014 15:14:10 -0700
-Subject: [PATCH 05/11] Add support for netvsc build without CONFIG_SYSFS flag
-
-This change ensures the driver can be built successfully without the
-CONFIG_SYSFS flag.
-MS-TFS: 182270
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 939e3af60ec4..083d084396d3 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -640,8 +640,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-                                      packet->vlan_tci);
-       skb_record_rx_queue(skb, packet->channel->
--                          offermsg.offer.sub_channel_index %
--                          net->real_num_rx_queues);
-+                          offermsg.offer.sub_channel_index);
-       net->stats.rx_packets++;
-       net->stats.rx_bytes += packet->total_data_buflen;
-@@ -824,8 +823,6 @@ static int netvsc_probe(struct hv_device *dev,
-       nvdev = hv_get_drvdata(dev);
-       netif_set_real_num_tx_queues(net, nvdev->num_chn);
-       netif_set_real_num_rx_queues(net, nvdev->num_chn);
--      dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
--               net->real_num_tx_queues, net->real_num_rx_queues);
-       ret = register_netdev(net);
-       if (ret != 0) {
--- 
-2.4.3
-
diff --git a/src/patches/linux/0005-Drivers-net-hyperv-Enable-scatter-gather-I-O.patch b/src/patches/linux/0005-Drivers-net-hyperv-Enable-scatter-gather-I-O.patch
deleted file mode 100644 (file)
index 27fb2d9..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-From 4c06034001e20ff9f6e2a1a3dfa155bf3f31440c Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:13 -0800
-Subject: [PATCH 05/25] Drivers: net: hyperv: Enable scatter gather I/O
-
-Cleanup the code and enable scatter gather I/O.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 153 ++++++++++++++++++++++++++++++----------
- 1 file changed, 114 insertions(+), 39 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 8e3a0b00099b..72961741be54 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -140,22 +140,124 @@ static void netvsc_xmit_completion(void *context)
-               dev_kfree_skb_any(skb);
- }
-+static u32 fill_pg_buf(struct page *page, u32 offset, u32 len,
-+                      struct hv_page_buffer *pb)
-+{
-+      int j = 0;
-+
-+      /* Deal with compund pages by ignoring unused part
-+       * of the page.
-+       */
-+      page += (offset >> PAGE_SHIFT);
-+      offset &= ~PAGE_MASK;
-+
-+      while (len > 0) {
-+              unsigned long bytes;
-+
-+              bytes = PAGE_SIZE - offset;
-+              if (bytes > len)
-+                      bytes = len;
-+              pb[j].pfn = page_to_pfn(page);
-+              pb[j].offset = offset;
-+              pb[j].len = bytes;
-+
-+              offset += bytes;
-+              len -= bytes;
-+
-+              if (offset == PAGE_SIZE && len) {
-+                      page++;
-+                      offset = 0;
-+                      j++;
-+              }
-+      }
-+
-+      return j + 1;
-+}
-+
-+static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-+                          struct hv_page_buffer *pb)
-+{
-+      u32 slots_used = 0;
-+      char *data = skb->data;
-+      int frags = skb_shinfo(skb)->nr_frags;
-+      int i;
-+
-+      /* The packet is laid out thus:
-+       * 1. hdr
-+       * 2. skb linear data
-+       * 3. skb fragment data
-+       */
-+      if (hdr != NULL)
-+              slots_used += fill_pg_buf(virt_to_page(hdr),
-+                                      offset_in_page(hdr),
-+                                      len, &pb[slots_used]);
-+
-+      slots_used += fill_pg_buf(virt_to_page(data),
-+                              offset_in_page(data),
-+                              skb_headlen(skb), &pb[slots_used]);
-+
-+      for (i = 0; i < frags; i++) {
-+              skb_frag_t *frag = skb_shinfo(skb)->frags + i;
-+
-+              slots_used += fill_pg_buf(skb_frag_page(frag),
-+                                      frag->page_offset,
-+                                      skb_frag_size(frag), &pb[slots_used]);
-+      }
-+}
-+
-+static int count_skb_frag_slots(struct sk_buff *skb)
-+{
-+      int i, frags = skb_shinfo(skb)->nr_frags;
-+      int pages = 0;
-+
-+      for (i = 0; i < frags; i++) {
-+              skb_frag_t *frag = skb_shinfo(skb)->frags + i;
-+              unsigned long size = skb_frag_size(frag);
-+              unsigned long offset = frag->page_offset;
-+
-+              /* Skip unused frames from start of page */
-+              offset &= ~PAGE_MASK;
-+              pages += PFN_UP(offset + size);
-+      }
-+      return pages;
-+}
-+
-+static int netvsc_get_slots(struct sk_buff *skb)
-+{
-+      char *data = skb->data;
-+      unsigned int offset = offset_in_page(data);
-+      unsigned int len = skb_headlen(skb);
-+      int slots;
-+      int frag_slots;
-+
-+      slots = DIV_ROUND_UP(offset + len, PAGE_SIZE);
-+      frag_slots = count_skb_frag_slots(skb);
-+      return slots + frag_slots;
-+}
-+
- static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- {
-       struct net_device_context *net_device_ctx = netdev_priv(net);
-       struct hv_netvsc_packet *packet;
-       int ret;
--      unsigned int i, num_pages, npg_data;
-+      unsigned int num_data_pages;
-       u32 skb_length = skb->len;
--      /* Add multipages for skb->data and additional 2 for RNDIS */
--      npg_data = (((unsigned long)skb->data + skb_headlen(skb) - 1)
--              >> PAGE_SHIFT) - ((unsigned long)skb->data >> PAGE_SHIFT) + 1;
--      num_pages = skb_shinfo(skb)->nr_frags + npg_data + 2;
-+      /* We will atmost need two pages to describe the rndis
-+       * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
-+       * of pages in a single packet.
-+       */
-+      num_data_pages = netvsc_get_slots(skb) + 2;
-+      if (num_data_pages > MAX_PAGE_BUFFER_COUNT) {
-+              netdev_err(net, "Packet too big: %u\n", skb->len);
-+              dev_kfree_skb(skb);
-+              net->stats.tx_dropped++;
-+              return NETDEV_TX_OK;
-+      }
-       /* Allocate a netvsc packet based on # of frags. */
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
--                       (num_pages * sizeof(struct hv_page_buffer)) +
-+                       (num_data_pages * sizeof(struct hv_page_buffer)) +
-                        sizeof(struct rndis_message) +
-                        NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-@@ -170,44 +272,17 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet->vlan_tci = skb->vlan_tci;
-       packet->extension = (void *)(unsigned long)packet +
--                              sizeof(struct hv_netvsc_packet) +
--                                  (num_pages * sizeof(struct hv_page_buffer));
-+                      sizeof(struct hv_netvsc_packet) +
-+                      (num_data_pages * sizeof(struct hv_page_buffer));
-       /* If the rndis msg goes beyond 1 page, we will add 1 later */
--      packet->page_buf_cnt = num_pages - 1;
-+      packet->page_buf_cnt = num_data_pages - 1;
-       /* Initialize it from the skb */
-       packet->total_data_buflen = skb->len;
-       /* Start filling in the page buffers starting after RNDIS buffer. */
--      packet->page_buf[1].pfn = virt_to_phys(skb->data) >> PAGE_SHIFT;
--      packet->page_buf[1].offset
--              = (unsigned long)skb->data & (PAGE_SIZE - 1);
--      if (npg_data == 1)
--              packet->page_buf[1].len = skb_headlen(skb);
--      else
--              packet->page_buf[1].len = PAGE_SIZE
--                      - packet->page_buf[1].offset;
--
--      for (i = 2; i <= npg_data; i++) {
--              packet->page_buf[i].pfn = virt_to_phys(skb->data
--                      + PAGE_SIZE * (i-1)) >> PAGE_SHIFT;
--              packet->page_buf[i].offset = 0;
--              packet->page_buf[i].len = PAGE_SIZE;
--      }
--      if (npg_data > 1)
--              packet->page_buf[npg_data].len = (((unsigned long)skb->data
--                      + skb_headlen(skb) - 1) & (PAGE_SIZE - 1)) + 1;
--
--      /* Additional fragments are after SKB data */
--      for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
--              const skb_frag_t *f = &skb_shinfo(skb)->frags[i];
--
--              packet->page_buf[i+npg_data+1].pfn =
--                      page_to_pfn(skb_frag_page(f));
--              packet->page_buf[i+npg_data+1].offset = f->page_offset;
--              packet->page_buf[i+npg_data+1].len = skb_frag_size(f);
--      }
-+      init_page_array(NULL, 0, skb, &packet->page_buf[1]);
-       /* Set the completion routine */
-       packet->completion.send.send_completion = netvsc_xmit_completion;
-@@ -454,8 +529,8 @@ static int netvsc_probe(struct hv_device *dev,
-       net->netdev_ops = &device_ops;
-       /* TODO: Add GSO and Checksum offload */
--      net->hw_features = 0;
--      net->features = NETIF_F_HW_VLAN_CTAG_TX;
-+      net->hw_features = NETIF_F_SG;
-+      net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG;
-       SET_ETHTOOL_OPS(net, &ethtool_ops);
-       SET_NETDEV_DEV(net, &dev->device);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0006-Drivers-net-hyperv-Cleanup-the-send-path.patch b/src/patches/linux/0006-Drivers-net-hyperv-Cleanup-the-send-path.patch
deleted file mode 100644 (file)
index 20fcb3f..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-From d972eb71fb95660fe74616901b55b0d7a336daed Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:14 -0800
-Subject: [PATCH 06/25] Drivers: net: hyperv: Cleanup the send path
-
-In preparation for enabling offloads, cleanup the send path.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   |  7 +---
- drivers/net/hyperv/netvsc_drv.c   | 88 +++++++++++++++++++++++++++++++--------
- drivers/net/hyperv/rndis_filter.c | 66 -----------------------------
- 3 files changed, 71 insertions(+), 90 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 39fc230f5c20..694bf7cada90 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -73,7 +73,7 @@ struct hv_netvsc_packet {
-       } completion;
-       /* This points to the memory after page_buf */
--      void *extension;
-+      struct rndis_message *rndis_msg;
-       u32 total_data_buflen;
-       /* Points to the send/receive buffer where the ethernet frame is */
-@@ -126,11 +126,6 @@ void rndis_filter_device_remove(struct hv_device *dev);
- int rndis_filter_receive(struct hv_device *dev,
-                       struct hv_netvsc_packet *pkt);
--
--
--int rndis_filter_send(struct hv_device *dev,
--                      struct hv_netvsc_packet *pkt);
--
- int rndis_filter_set_packet_filter(struct rndis_device *dev, u32 new_filter);
- int rndis_filter_set_device_mac(struct hv_device *hdev, char *mac);
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 72961741be54..87293a15e470 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -128,6 +128,27 @@ static int netvsc_close(struct net_device *net)
-       return ret;
- }
-+static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
-+                              int pkt_type)
-+{
-+      struct rndis_packet *rndis_pkt;
-+      struct rndis_per_packet_info *ppi;
-+
-+      rndis_pkt = &msg->msg.pkt;
-+      rndis_pkt->data_offset += ppi_size;
-+
-+      ppi = (struct rndis_per_packet_info *)((void *)rndis_pkt +
-+              rndis_pkt->per_pkt_info_offset + rndis_pkt->per_pkt_info_len);
-+
-+      ppi->size = ppi_size;
-+      ppi->type = pkt_type;
-+      ppi->ppi_offset = sizeof(struct rndis_per_packet_info);
-+
-+      rndis_pkt->per_pkt_info_len += ppi_size;
-+
-+      return ppi;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -174,8 +195,8 @@ static u32 fill_pg_buf(struct page *page, u32 offset, u32 len,
-       return j + 1;
- }
--static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
--                          struct hv_page_buffer *pb)
-+static u32 init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-+                         struct hv_page_buffer *pb)
- {
-       u32 slots_used = 0;
-       char *data = skb->data;
-@@ -203,6 +224,7 @@ static void init_page_array(void *hdr, u32 len, struct sk_buff *skb,
-                                       frag->page_offset,
-                                       skb_frag_size(frag), &pb[slots_used]);
-       }
-+      return slots_used;
- }
- static int count_skb_frag_slots(struct sk_buff *skb)
-@@ -240,15 +262,20 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       struct net_device_context *net_device_ctx = netdev_priv(net);
-       struct hv_netvsc_packet *packet;
-       int ret;
--      unsigned int num_data_pages;
-       u32 skb_length = skb->len;
-+      unsigned int num_data_pgs;
-+      struct rndis_message *rndis_msg;
-+      struct rndis_packet *rndis_pkt;
-+      u32 rndis_msg_size;
-+      bool isvlan;
-+      struct rndis_per_packet_info *ppi;
-       /* We will atmost need two pages to describe the rndis
-        * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
-        * of pages in a single packet.
-        */
--      num_data_pages = netvsc_get_slots(skb) + 2;
--      if (num_data_pages > MAX_PAGE_BUFFER_COUNT) {
-+      num_data_pgs = netvsc_get_slots(skb) + 2;
-+      if (num_data_pgs > MAX_PAGE_BUFFER_COUNT) {
-               netdev_err(net, "Packet too big: %u\n", skb->len);
-               dev_kfree_skb(skb);
-               net->stats.tx_dropped++;
-@@ -257,7 +284,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       /* Allocate a netvsc packet based on # of frags. */
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
--                       (num_data_pages * sizeof(struct hv_page_buffer)) +
-+                       (num_data_pgs * sizeof(struct hv_page_buffer)) +
-                        sizeof(struct rndis_message) +
-                        NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-@@ -271,26 +298,51 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet->vlan_tci = skb->vlan_tci;
--      packet->extension = (void *)(unsigned long)packet +
--                      sizeof(struct hv_netvsc_packet) +
--                      (num_data_pages * sizeof(struct hv_page_buffer));
--
--      /* If the rndis msg goes beyond 1 page, we will add 1 later */
--      packet->page_buf_cnt = num_data_pages - 1;
--
--      /* Initialize it from the skb */
-+      packet->is_data_pkt = true;
-       packet->total_data_buflen = skb->len;
--      /* Start filling in the page buffers starting after RNDIS buffer. */
--      init_page_array(NULL, 0, skb, &packet->page_buf[1]);
-+      packet->rndis_msg = (struct rndis_message *)((unsigned long)packet +
-+                              sizeof(struct hv_netvsc_packet) +
-+                              (num_data_pgs * sizeof(struct hv_page_buffer)));
-       /* Set the completion routine */
-       packet->completion.send.send_completion = netvsc_xmit_completion;
-       packet->completion.send.send_completion_ctx = packet;
-       packet->completion.send.send_completion_tid = (unsigned long)skb;
--      ret = rndis_filter_send(net_device_ctx->device_ctx,
--                                packet);
-+      isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-+
-+      /* Add the rndis header */
-+      rndis_msg = packet->rndis_msg;
-+      rndis_msg->ndis_msg_type = RNDIS_MSG_PACKET;
-+      rndis_msg->msg_len = packet->total_data_buflen;
-+      rndis_pkt = &rndis_msg->msg.pkt;
-+      rndis_pkt->data_offset = sizeof(struct rndis_packet);
-+      rndis_pkt->data_len = packet->total_data_buflen;
-+      rndis_pkt->per_pkt_info_offset = sizeof(struct rndis_packet);
-+
-+      rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-+
-+      if (isvlan) {
-+              struct ndis_pkt_8021q_info *vlan;
-+
-+              rndis_msg_size += NDIS_VLAN_PPI_SIZE;
-+              ppi = init_ppi_data(rndis_msg, NDIS_VLAN_PPI_SIZE,
-+                                      IEEE_8021Q_INFO);
-+              vlan = (struct ndis_pkt_8021q_info *)((void *)ppi +
-+                                              ppi->ppi_offset);
-+              vlan->vlanid = packet->vlan_tci & VLAN_VID_MASK;
-+              vlan->pri = (packet->vlan_tci & VLAN_PRIO_MASK) >>
-+                              VLAN_PRIO_SHIFT;
-+      }
-+
-+      /* Start filling in the page buffers with the rndis hdr */
-+      rndis_msg->msg_len += rndis_msg_size;
-+      packet->page_buf_cnt = init_page_array(rndis_msg, rndis_msg_size,
-+                                      skb, &packet->page_buf[0]);
-+
-+      ret = netvsc_send(net_device_ctx->device_ctx, packet);
-+
-       if (ret == 0) {
-               net->stats.tx_bytes += skb_length;
-               net->stats.tx_packets++;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 6a9f6021f09c..dcbf144ea7da 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -910,69 +910,3 @@ int rndis_filter_close(struct hv_device *dev)
-       return rndis_filter_close_device(nvdev->extension);
- }
--
--int rndis_filter_send(struct hv_device *dev,
--                           struct hv_netvsc_packet *pkt)
--{
--      struct rndis_message *rndis_msg;
--      struct rndis_packet *rndis_pkt;
--      u32 rndis_msg_size;
--      bool isvlan = pkt->vlan_tci & VLAN_TAG_PRESENT;
--
--      /* Add the rndis header */
--      rndis_msg = (struct rndis_message *)pkt->extension;
--
--      rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
--      if (isvlan)
--              rndis_msg_size += NDIS_VLAN_PPI_SIZE;
--
--      rndis_msg->ndis_msg_type = RNDIS_MSG_PACKET;
--      rndis_msg->msg_len = pkt->total_data_buflen +
--                                    rndis_msg_size;
--
--      rndis_pkt = &rndis_msg->msg.pkt;
--      rndis_pkt->data_offset = sizeof(struct rndis_packet);
--      if (isvlan)
--              rndis_pkt->data_offset += NDIS_VLAN_PPI_SIZE;
--      rndis_pkt->data_len = pkt->total_data_buflen;
--
--      if (isvlan) {
--              struct rndis_per_packet_info *ppi;
--              struct ndis_pkt_8021q_info *vlan;
--
--              rndis_pkt->per_pkt_info_offset = sizeof(struct rndis_packet);
--              rndis_pkt->per_pkt_info_len = NDIS_VLAN_PPI_SIZE;
--
--              ppi = (struct rndis_per_packet_info *)((ulong)rndis_pkt +
--                      rndis_pkt->per_pkt_info_offset);
--              ppi->size = NDIS_VLAN_PPI_SIZE;
--              ppi->type = IEEE_8021Q_INFO;
--              ppi->ppi_offset = sizeof(struct rndis_per_packet_info);
--
--              vlan = (struct ndis_pkt_8021q_info *)((ulong)ppi +
--                      ppi->ppi_offset);
--              vlan->vlanid = pkt->vlan_tci & VLAN_VID_MASK;
--              vlan->pri = (pkt->vlan_tci & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT;
--      }
--
--      pkt->is_data_pkt = true;
--      pkt->page_buf[0].pfn = virt_to_phys(rndis_msg) >> PAGE_SHIFT;
--      pkt->page_buf[0].offset =
--                      (unsigned long)rndis_msg & (PAGE_SIZE-1);
--      pkt->page_buf[0].len = rndis_msg_size;
--
--      /* Add one page_buf if the rndis msg goes beyond page boundary */
--      if (pkt->page_buf[0].offset + rndis_msg_size > PAGE_SIZE) {
--              int i;
--              for (i = pkt->page_buf_cnt; i > 1; i--)
--                      pkt->page_buf[i] = pkt->page_buf[i-1];
--              pkt->page_buf_cnt++;
--              pkt->page_buf[0].len = PAGE_SIZE - pkt->page_buf[0].offset;
--              pkt->page_buf[1].pfn = virt_to_phys((void *)((ulong)
--                      rndis_msg + pkt->page_buf[0].len)) >> PAGE_SHIFT;
--              pkt->page_buf[1].offset = 0;
--              pkt->page_buf[1].len = rndis_msg_size - pkt->page_buf[0].len;
--      }
--
--      return netvsc_send(dev, pkt);
--}
--- 
-2.4.3
-
diff --git a/src/patches/linux/0006-net-get-rid-of-SET_ETHTOOL_OPS.patch b/src/patches/linux/0006-net-get-rid-of-SET_ETHTOOL_OPS.patch
deleted file mode 100644 (file)
index e4a7a46..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-From 7ad24ea4bf620a32631d7b3069c3e30c078b0c3e Mon Sep 17 00:00:00 2001
-From: Wilfried Klaebe <w-lkml@lebenslange-mailadresse.de>
-Date: Sun, 11 May 2014 00:12:32 +0000
-Subject: [PATCH 06/11] net: get rid of SET_ETHTOOL_OPS
-
-net: get rid of SET_ETHTOOL_OPS
-
-Dave Miller mentioned he'd like to see SET_ETHTOOL_OPS gone.
-This does that.
-
-Mostly done via coccinelle script:
-@@
-struct ethtool_ops *ops;
-struct net_device *dev;
-@@
--       SET_ETHTOOL_OPS(dev, ops);
-+       dev->ethtool_ops = ops;
-
-Compile tested only, but I'd seriously wonder if this broke anything.
-
-Suggested-by: Dave Miller <davem@davemloft.net>
-Signed-off-by: Wilfried Klaebe <w-lkml@lebenslange-mailadresse.de>
-Acked-by: Felipe Balbi <balbi@ti.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 1de3ef5dd5d2..2e967a7bdb33 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -810,7 +810,7 @@ static int netvsc_probe(struct hv_device *dev,
-       net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
-                       NETIF_F_IP_CSUM | NETIF_F_TSO;
--      SET_ETHTOOL_OPS(net, &ethtool_ops);
-+      net->ethtool_ops = &ethtool_ops;
-       SET_NETDEV_DEV(net, &dev->device);
-       /* Notify the netvsc driver of the new device */
--- 
-2.4.3
-
diff --git a/src/patches/linux/0007-Drivers-net-hyperv-Enable-offloads-on-the-host.patch b/src/patches/linux/0007-Drivers-net-hyperv-Enable-offloads-on-the-host.patch
deleted file mode 100644 (file)
index a109f04..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-From 6b15b5f37e976a5f3840c7ea59560e10c6251250 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:15 -0800
-Subject: [PATCH 07/25] Drivers: net: hyperv: Enable offloads on the host
-
-Prior to enabling guest side offloads, enable the offloads on the host.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 55 +++++++++++++++++++++++++++
- drivers/net/hyperv/rndis_filter.c | 80 +++++++++++++++++++++++++++++++++++++++
- 2 files changed, 135 insertions(+)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 694bf7cada90..8bc4e766589b 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -721,6 +721,61 @@ struct ndis_pkt_8021q_info {
-       };
- };
-+struct ndis_oject_header {
-+      u8 type;
-+      u8 revision;
-+      u16 size;
-+};
-+
-+#define NDIS_OBJECT_TYPE_DEFAULT      0x80
-+#define NDIS_OFFLOAD_PARAMETERS_REVISION_3 3
-+#define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED  2
-+#define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED  2
-+#define NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
-+#define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
-+#define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
-+#define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
-+
-+/*
-+ * New offload OIDs for NDIS 6
-+ */
-+#define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xFC01020B /* query only */
-+#define OID_TCP_OFFLOAD_PARAMETERS 0xFC01020C         /* set only */
-+#define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xFC01020D/* query only */
-+#define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xFC01020E /* query only */
-+#define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xFC01020F /* query */
-+#define OID_OFFLOAD_ENCAPSULATION 0x0101010A /* set/query */
-+
-+struct ndis_offload_params {
-+      struct ndis_oject_header header;
-+      u8 ip_v4_csum;
-+      u8 tcp_ip_v4_csum;
-+      u8 udp_ip_v4_csum;
-+      u8 tcp_ip_v6_csum;
-+      u8 udp_ip_v6_csum;
-+      u8 lso_v1;
-+      u8 ip_sec_v1;
-+      u8 lso_v2_ipv4;
-+      u8 lso_v2_ipv6;
-+      u8 tcp_connection_ip_v4;
-+      u8 tcp_connection_ip_v6;
-+      u32 flags;
-+      u8 ip_sec_v2;
-+      u8 ip_sec_v2_ip_v4;
-+      struct {
-+              u8 rsc_ip_v4;
-+              u8 rsc_ip_v6;
-+      };
-+      struct {
-+              u8 encapsulated_packet_task_offload;
-+              u8 encapsulation_types;
-+      };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_pkt_8021q_info))
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index dcbf144ea7da..9b02f21097a7 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -627,6 +627,61 @@ cleanup:
-       return ret;
- }
-+int rndis_filter_set_offload_params(struct hv_device *hdev,
-+                              struct ndis_offload_params *req_offloads)
-+{
-+      struct netvsc_device *nvdev = hv_get_drvdata(hdev);
-+      struct rndis_device *rdev = nvdev->extension;
-+      struct net_device *ndev = nvdev->ndev;
-+      struct rndis_request *request;
-+      struct rndis_set_request *set;
-+      struct ndis_offload_params *offload_params;
-+      struct rndis_set_complete *set_complete;
-+      u32 extlen = sizeof(struct ndis_offload_params);
-+      int ret, t;
-+
-+      request = get_rndis_request(rdev, RNDIS_MSG_SET,
-+              RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+      if (!request)
-+              return -ENOMEM;
-+
-+      set = &request->request_msg.msg.set_req;
-+      set->oid = OID_TCP_OFFLOAD_PARAMETERS;
-+      set->info_buflen = extlen;
-+      set->info_buf_offset = sizeof(struct rndis_set_request);
-+      set->dev_vc_handle = 0;
-+
-+      offload_params = (struct ndis_offload_params *)((ulong)set +
-+                              set->info_buf_offset);
-+      *offload_params = *req_offloads;
-+      offload_params->header.type = NDIS_OBJECT_TYPE_DEFAULT;
-+      offload_params->header.revision = NDIS_OFFLOAD_PARAMETERS_REVISION_3;
-+      offload_params->header.size = extlen;
-+
-+      ret = rndis_filter_send_request(rdev, request);
-+      if (ret != 0)
-+              goto cleanup;
-+
-+      t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+      if (t == 0) {
-+              netdev_err(ndev, "timeout before we got aOFFLOAD set response...\n");
-+              /* can't put_rndis_request, since we may still receive a
-+               * send-completion.
-+               */
-+              return -EBUSY;
-+      } else {
-+              set_complete = &request->response_msg.msg.set_complete;
-+              if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+                      netdev_err(ndev, "Fail to set MAC on host side:0x%x\n",
-+                                 set_complete->status);
-+                      ret = -EINVAL;
-+              }
-+      }
-+
-+cleanup:
-+      put_rndis_request(rdev, request);
-+      return ret;
-+}
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
-@@ -826,6 +881,7 @@ int rndis_filter_device_add(struct hv_device *dev,
-       struct netvsc_device *net_device;
-       struct rndis_device *rndis_device;
-       struct netvsc_device_info *device_info = additional_info;
-+      struct ndis_offload_params offloads;
-       rndis_device = get_rndis_device();
-       if (!rndis_device)
-@@ -865,6 +921,26 @@ int rndis_filter_device_add(struct hv_device *dev,
-       memcpy(device_info->mac_adr, rndis_device->hw_mac_adr, ETH_ALEN);
-+      /* Turn on the offloads; the host supports all of the relevant
-+       * offloads.
-+       */
-+      memset(&offloads, 0, sizeof(struct ndis_offload_params));
-+      /* A value of zero means "no change"; now turn on what we
-+       * want.
-+       */
-+      offloads.ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+      offloads.tcp_ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+      offloads.udp_ip_v4_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+      offloads.tcp_ip_v6_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+      offloads.udp_ip_v6_csum = NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED;
-+      offloads.lso_v2_ipv4 = NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED;
-+
-+
-+      ret = rndis_filter_set_offload_params(dev, &offloads);
-+      if (ret)
-+              goto err_dev_remv;
-+
-+
-       rndis_filter_query_device_link_status(rndis_device);
-       device_info->link_state = rndis_device->link_state;
-@@ -874,6 +950,10 @@ int rndis_filter_device_add(struct hv_device *dev,
-                device_info->link_state ? "down" : "up");
-       return ret;
-+
-+err_dev_remv:
-+      rndis_filter_device_remove(dev);
-+      return ret;
- }
- void rndis_filter_device_remove(struct hv_device *dev)
--- 
-2.4.3
-
diff --git a/src/patches/linux/0007-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch b/src/patches/linux/0007-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch
deleted file mode 100644 (file)
index 0db5f72..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-From 307f099520b66504cf6c5638f3f404c48b9fb45b Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 21 May 2014 12:55:39 -0700
-Subject: [PATCH 07/11] hyperv: Add hash value into RNDIS Per-packet info
-
-It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
-so that the send completion notices can be spread across multiple channels.
-MS-TFS: 140273
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h |  4 ++++
- drivers/net/hyperv/netvsc_drv.c | 18 ++++++++++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4b7df5a5c966..6cc37c15e0bf 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -791,6 +791,7 @@ enum ndis_per_pkt_info_type {
-       IEEE_8021Q_INFO,
-       ORIGINAL_PKTINFO,
-       PACKET_CANCEL_ID,
-+      NBL_HASH_VALUE = PACKET_CANCEL_ID,
-       ORIGINAL_NET_BUFLIST,
-       CACHED_NET_BUFLIST,
-       SHORT_PKT_PADINFO,
-@@ -937,6 +938,9 @@ struct ndis_tcp_lso_info {
- #define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_tcp_lso_info))
-+#define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+              sizeof(u32))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 2e967a7bdb33..4fd71b75e666 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -224,9 +224,11 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-       if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-               return 0;
--      if (netvsc_set_hash(&hash, skb))
-+      if (netvsc_set_hash(&hash, skb)) {
-               q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-                       ndev->real_num_tx_queues;
-+              skb_set_hash(skb, hash, PKT_HASH_TYPE_L3);
-+      }
-       return q_idx;
- }
-@@ -384,6 +386,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       struct ndis_tcp_lso_info *lso_info;
-       int  hdr_offset;
-       u32 net_trans_info;
-+      u32 hash;
-       /* We will atmost need two pages to describe the rndis
-@@ -402,9 +405,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-                        (num_data_pgs * sizeof(struct hv_page_buffer)) +
-                        sizeof(struct rndis_message) +
--                       NDIS_VLAN_PPI_SIZE +
--                       NDIS_CSUM_PPI_SIZE +
--                       NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
-+                       NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-+                       NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-               /* out of memory, drop packet */
-               netdev_err(net, "unable to allocate hv_netvsc_packet\n");
-@@ -443,6 +445,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-+      hash = skb_get_hash_raw(skb);
-+      if (hash != 0 && net->real_num_tx_queues > 1) {
-+              rndis_msg_size += NDIS_HASH_PPI_SIZE;
-+              ppi = init_ppi_data(rndis_msg, NDIS_HASH_PPI_SIZE,
-+                                  NBL_HASH_VALUE);
-+              *(u32 *)((void *)ppi + ppi->ppi_offset) = hash;
-+      }
-+
-       if (isvlan) {
-               struct ndis_pkt_8021q_info *vlan;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0008-Drivers-net-hyperv-Enable-receive-side-IP-checksum-o.patch b/src/patches/linux/0008-Drivers-net-hyperv-Enable-receive-side-IP-checksum-o.patch
deleted file mode 100644 (file)
index e77e9f2..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-From 59e0c70c618668522a9431686f7e3a69ef396dff Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:16 -0800
-Subject: [PATCH 08/25] Drivers: net: hyperv: Enable receive side IP checksum
- offload
-
-Enable receive side checksum offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 33 ++++++++++++++++++++++++++++++++-
- drivers/net/hyperv/netvsc_drv.c   | 19 +++++++++++++++----
- drivers/net/hyperv/rndis_filter.c |  4 +++-
- 3 files changed, 50 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 8bc4e766589b..faeb74623fbd 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -30,6 +30,7 @@
- /* Fwd declaration */
- struct hv_netvsc_packet;
-+struct ndis_tcp_ip_checksum_info;
- /* Represent the xfer page packet which contains 1 or more netvsc packet */
- struct xferpage_packet {
-@@ -117,7 +118,8 @@ int netvsc_send(struct hv_device *device,
- void netvsc_linkstatus_callback(struct hv_device *device_obj,
-                               unsigned int status);
- int netvsc_recv_callback(struct hv_device *device_obj,
--                      struct hv_netvsc_packet *packet);
-+                      struct hv_netvsc_packet *packet,
-+                      struct ndis_tcp_ip_checksum_info *csum_info);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -776,9 +778,38 @@ struct ndis_offload_params {
-       };
- };
-+struct ndis_tcp_ip_checksum_info {
-+      union {
-+              struct {
-+                      u32 is_ipv4:1;
-+                      u32 is_ipv6:1;
-+                      u32 tcp_checksum:1;
-+                      u32 udp_checksum:1;
-+                      u32 ip_header_checksum:1;
-+                      u32 reserved:11;
-+                      u32 tcp_header_offset:10;
-+              } transmit;
-+              struct {
-+                      u32 tcp_checksum_failed:1;
-+                      u32 udp_checksum_failed:1;
-+                      u32 ip_checksum_failed:1;
-+                      u32 tcp_checksum_succeeded:1;
-+                      u32 udp_checksum_succeeded:1;
-+                      u32 ip_checksum_succeeded:1;
-+                      u32 loopback:1;
-+                      u32 tcp_checksum_value_invalid:1;
-+                      u32 ip_checksum_value_invalid:1;
-+              } receive;
-+              u32  value;
-+      };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_pkt_8021q_info))
-+#define NDIS_CSUM_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+              sizeof(struct ndis_tcp_ip_checksum_info))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 87293a15e470..7438360b7a02 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -392,7 +392,8 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
-  * "wire" on the specified device.
-  */
- int netvsc_recv_callback(struct hv_device *device_obj,
--                              struct hv_netvsc_packet *packet)
-+                              struct hv_netvsc_packet *packet,
-+                              struct ndis_tcp_ip_checksum_info *csum_info)
- {
-       struct net_device *net;
-       struct sk_buff *skb;
-@@ -419,7 +420,17 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-               packet->total_data_buflen);
-       skb->protocol = eth_type_trans(skb, net);
--      skb->ip_summed = CHECKSUM_NONE;
-+      if (csum_info) {
-+              /* We only look at the IP checksum here.
-+               * Should we be dropping the packet if checksum
-+               * failed? How do we deal with other checksums - TCP/UDP?
-+               */
-+              if (csum_info->receive.ip_checksum_succeeded)
-+                      skb->ip_summed = CHECKSUM_UNNECESSARY;
-+              else
-+                      skb->ip_summed = CHECKSUM_NONE;
-+      }
-+
-       if (packet->vlan_tci & VLAN_TAG_PRESENT)
-               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-                                      packet->vlan_tci);
-@@ -581,8 +592,8 @@ static int netvsc_probe(struct hv_device *dev,
-       net->netdev_ops = &device_ops;
-       /* TODO: Add GSO and Checksum offload */
--      net->hw_features = NETIF_F_SG;
--      net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG;
-+      net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG;
-+      net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM;
-       SET_ETHTOOL_OPS(net, &ethtool_ops);
-       SET_NETDEV_DEV(net, &dev->device);
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 9b02f21097a7..4a37e3db9e32 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -370,6 +370,7 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
-       struct rndis_packet *rndis_pkt;
-       u32 data_offset;
-       struct ndis_pkt_8021q_info *vlan;
-+      struct ndis_tcp_ip_checksum_info *csum_info;
-       rndis_pkt = &msg->msg.pkt;
-@@ -408,7 +409,8 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
-               pkt->vlan_tci = 0;
-       }
--      netvsc_recv_callback(dev->net_dev->dev, pkt);
-+      csum_info = rndis_get_ppi(rndis_pkt, TCPIP_CHKSUM_PKTINFO);
-+      netvsc_recv_callback(dev->net_dev->dev, pkt, csum_info);
- }
- int rndis_filter_receive(struct hv_device *dev,
--- 
-2.4.3
-
diff --git a/src/patches/linux/0008-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch b/src/patches/linux/0008-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch
deleted file mode 100644 (file)
index b774f81..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From 2f18423d7ebf8044a9edaca840be5ae199fb32f6 Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej@redhat.com>
-Date: Mon, 16 Jun 2014 16:59:02 -0400
-Subject: [PATCH 08/11] hyperv: fix apparent cut-n-paste error in send path
- teardown
-
-c25aaf814a63: "hyperv: Enable sendbuf mechanism on the send path" added
-some teardown code that looks like it was copied from the recieve path
-above, but missed a variable name replacement.
-
-Signed-off-by: Dave Jones <davej@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index c041f63a6d30..4ed38eaecea8 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -189,7 +189,7 @@ static int netvsc_destroy_buf(struct netvsc_device *net_device)
-                                  "unable to teardown send buffer's gpadl\n");
-                       return ret;
-               }
--              net_device->recv_buf_gpadl_handle = 0;
-+              net_device->send_buf_gpadl_handle = 0;
-       }
-       if (net_device->send_buf) {
-               /* Free up the receive buffer */
--- 
-2.4.3
-
diff --git a/src/patches/linux/0009-Drivers-net-hyperv-Enable-send-side-checksum-offload.patch b/src/patches/linux/0009-Drivers-net-hyperv-Enable-send-side-checksum-offload.patch
deleted file mode 100644 (file)
index db42108..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-From d2a0be7f4263eb669af84240c5424a72cce4cdb4 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:17 -0800
-Subject: [PATCH 09/25] Drivers: net: hyperv: Enable send side checksum offload
-
-Enable send side checksum offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 10 ++++++
- drivers/net/hyperv/netvsc_drv.c | 69 +++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 77 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index faeb74623fbd..4cf238234321 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -1035,6 +1035,16 @@ struct rndis_message {
- #define NDIS_PACKET_TYPE_FUNCTIONAL   0x00000400
- #define NDIS_PACKET_TYPE_MAC_FRAME    0x00000800
-+#define INFO_IPV4       2
-+#define INFO_IPV6       4
-+#define INFO_TCP        2
-+#define INFO_UDP        4
-+
-+#define TRANSPORT_INFO_NOT_IP   0
-+#define TRANSPORT_INFO_IPV4_TCP ((INFO_IPV4 << 16) | INFO_TCP)
-+#define TRANSPORT_INFO_IPV4_UDP ((INFO_IPV4 << 16) | INFO_UDP)
-+#define TRANSPORT_INFO_IPV6_TCP ((INFO_IPV6 << 16) | INFO_TCP)
-+#define TRANSPORT_INFO_IPV6_UDP ((INFO_IPV6 << 16) | INFO_UDP)
- #endif /* _HYPERV_NET_H */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 7438360b7a02..2fab69ac61ef 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -257,6 +257,35 @@ static int netvsc_get_slots(struct sk_buff *skb)
-       return slots + frag_slots;
- }
-+static u32 get_net_transport_info(struct sk_buff *skb, u32 *trans_off)
-+{
-+      u32 ret_val = TRANSPORT_INFO_NOT_IP;
-+
-+      if ((eth_hdr(skb)->h_proto != htons(ETH_P_IP)) &&
-+              (eth_hdr(skb)->h_proto != htons(ETH_P_IPV6))) {
-+              goto not_ip;
-+      }
-+
-+      *trans_off = skb_transport_offset(skb);
-+
-+      if ((eth_hdr(skb)->h_proto == htons(ETH_P_IP))) {
-+              struct iphdr *iphdr = ip_hdr(skb);
-+
-+              if (iphdr->protocol == IPPROTO_TCP)
-+                      ret_val = TRANSPORT_INFO_IPV4_TCP;
-+              else if (iphdr->protocol == IPPROTO_UDP)
-+                      ret_val = TRANSPORT_INFO_IPV4_UDP;
-+      } else {
-+              if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
-+                      ret_val = TRANSPORT_INFO_IPV6_TCP;
-+              else if (ipv6_hdr(skb)->nexthdr == IPPROTO_UDP)
-+                      ret_val = TRANSPORT_INFO_IPV6_UDP;
-+      }
-+
-+not_ip:
-+      return ret_val;
-+}
-+
- static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
- {
-       struct net_device_context *net_device_ctx = netdev_priv(net);
-@@ -269,6 +298,10 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       u32 rndis_msg_size;
-       bool isvlan;
-       struct rndis_per_packet_info *ppi;
-+      struct ndis_tcp_ip_checksum_info *csum_info;
-+      int  hdr_offset;
-+      u32 net_trans_info;
-+
-       /* We will atmost need two pages to describe the rndis
-        * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
-@@ -336,6 +369,37 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-                               VLAN_PRIO_SHIFT;
-       }
-+      net_trans_info = get_net_transport_info(skb, &hdr_offset);
-+      if (net_trans_info == TRANSPORT_INFO_NOT_IP)
-+              goto do_send;
-+
-+      /*
-+       * Setup the sendside checksum offload only if this is not a
-+       * GSO packet.
-+       */
-+      if (skb_is_gso(skb))
-+              goto do_send;
-+
-+      rndis_msg_size += NDIS_CSUM_PPI_SIZE;
-+      ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
-+                          TCPIP_CHKSUM_PKTINFO);
-+
-+      csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi +
-+                      ppi->ppi_offset);
-+
-+      if (net_trans_info & (INFO_IPV4 << 16))
-+              csum_info->transmit.is_ipv4 = 1;
-+      else
-+              csum_info->transmit.is_ipv6 = 1;
-+
-+      if (net_trans_info & INFO_TCP) {
-+              csum_info->transmit.tcp_checksum = 1;
-+              csum_info->transmit.tcp_header_offset = hdr_offset;
-+      } else if (net_trans_info & INFO_UDP) {
-+              csum_info->transmit.udp_checksum = 1;
-+      }
-+
-+do_send:
-       /* Start filling in the page buffers with the rndis hdr */
-       rndis_msg->msg_len += rndis_msg_size;
-       packet->page_buf_cnt = init_page_array(rndis_msg, rndis_msg_size,
-@@ -592,8 +656,9 @@ static int netvsc_probe(struct hv_device *dev,
-       net->netdev_ops = &device_ops;
-       /* TODO: Add GSO and Checksum offload */
--      net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG;
--      net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM;
-+      net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM;
-+      net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
-+                      NETIF_F_IP_CSUM;
-       SET_ETHTOOL_OPS(net, &ethtool_ops);
-       SET_NETDEV_DEV(net, &dev->device);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0009-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch b/src/patches/linux/0009-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch
deleted file mode 100644 (file)
index fcae531..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From dd1d3f8f9920926aa426589e542eed6bf58b7354 Mon Sep 17 00:00:00 2001
-From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Date: Wed, 23 Jul 2014 09:00:35 +0800
-Subject: [PATCH 09/11] hyperv: Fix error return code in netvsc_init_buf()
-
-Fix to return -ENOMEM from the kalloc error handling
-case instead of 0.
-
-Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 4ed38eaecea8..d97d5f39a04e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -378,8 +378,10 @@ static int netvsc_init_buf(struct hv_device *device)
-       net_device->send_section_map =
-               kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
--      if (net_device->send_section_map == NULL)
-+      if (net_device->send_section_map == NULL) {
-+              ret = -ENOMEM;
-               goto cleanup;
-+      }
-       goto exit;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0010-Drivers-net-hyperv-Enable-large-send-offload.patch b/src/patches/linux/0010-Drivers-net-hyperv-Enable-large-send-offload.patch
deleted file mode 100644 (file)
index 36be2a8..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-From a4ec4f58017b456281ee17c35fb82dfe4eab2193 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sat, 8 Mar 2014 19:23:18 -0800
-Subject: [PATCH 10/25] Drivers: net: hyperv: Enable large send offload
-
-Enable segmentation offload.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 40 ++++++++++++++++++++++++++++++++++++++++
- drivers/net/hyperv/netvsc_drv.c | 38 ++++++++++++++++++++++++++++++++++----
- 2 files changed, 74 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4cf238234321..7d06b4959383 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -742,6 +742,10 @@ struct ndis_oject_header {
- #define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
- #define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE   1
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4      0
-+#define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6      1
-+
- /*
-  * New offload OIDs for NDIS 6
-  */
-@@ -804,12 +808,48 @@ struct ndis_tcp_ip_checksum_info {
-       };
- };
-+struct ndis_tcp_lso_info {
-+      union {
-+              struct {
-+                      u32 unused:30;
-+                      u32 type:1;
-+                      u32 reserved2:1;
-+              } transmit;
-+              struct {
-+                      u32 mss:20;
-+                      u32 tcp_header_offset:10;
-+                      u32 type:1;
-+                      u32 reserved2:1;
-+              } lso_v1_transmit;
-+              struct {
-+                      u32 tcp_payload:30;
-+                      u32 type:1;
-+                      u32 reserved2:1;
-+              } lso_v1_transmit_complete;
-+              struct {
-+                      u32 mss:20;
-+                      u32 tcp_header_offset:10;
-+                      u32 type:1;
-+                      u32 ip_version:1;
-+              } lso_v2_transmit;
-+              struct {
-+                      u32 reserved:30;
-+                      u32 type:1;
-+                      u32 reserved2:1;
-+              } lso_v2_transmit_complete;
-+              u32  value;
-+      };
-+};
-+
- #define NDIS_VLAN_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_pkt_8021q_info))
- #define NDIS_CSUM_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_tcp_ip_checksum_info))
-+#define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+              sizeof(struct ndis_tcp_lso_info))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 2fab69ac61ef..5baa1fa7e692 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -299,6 +299,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       bool isvlan;
-       struct rndis_per_packet_info *ppi;
-       struct ndis_tcp_ip_checksum_info *csum_info;
-+      struct ndis_tcp_lso_info *lso_info;
-       int  hdr_offset;
-       u32 net_trans_info;
-@@ -378,7 +379,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-        * GSO packet.
-        */
-       if (skb_is_gso(skb))
--              goto do_send;
-+              goto do_lso;
-       rndis_msg_size += NDIS_CSUM_PPI_SIZE;
-       ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
-@@ -398,6 +399,35 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       } else if (net_trans_info & INFO_UDP) {
-               csum_info->transmit.udp_checksum = 1;
-       }
-+      goto do_send;
-+
-+do_lso:
-+      rndis_msg_size += NDIS_LSO_PPI_SIZE;
-+      ppi = init_ppi_data(rndis_msg, NDIS_LSO_PPI_SIZE,
-+                          TCP_LARGESEND_PKTINFO);
-+
-+      lso_info = (struct ndis_tcp_lso_info *)((void *)ppi +
-+                      ppi->ppi_offset);
-+
-+      lso_info->lso_v2_transmit.type = NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE;
-+      if (net_trans_info & (INFO_IPV4 << 16)) {
-+              lso_info->lso_v2_transmit.ip_version =
-+                      NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4;
-+              ip_hdr(skb)->tot_len = 0;
-+              ip_hdr(skb)->check = 0;
-+              tcp_hdr(skb)->check =
-+              ~csum_tcpudp_magic(ip_hdr(skb)->saddr,
-+                                 ip_hdr(skb)->daddr, 0, IPPROTO_TCP, 0);
-+      } else {
-+              lso_info->lso_v2_transmit.ip_version =
-+                      NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6;
-+              ipv6_hdr(skb)->payload_len = 0;
-+              tcp_hdr(skb)->check =
-+              ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
-+                              &ipv6_hdr(skb)->daddr, 0, IPPROTO_TCP, 0);
-+      }
-+      lso_info->lso_v2_transmit.tcp_header_offset = hdr_offset;
-+      lso_info->lso_v2_transmit.mss = skb_shinfo(skb)->gso_size;
- do_send:
-       /* Start filling in the page buffers with the rndis hdr */
-@@ -655,10 +685,10 @@ static int netvsc_probe(struct hv_device *dev,
-       net->netdev_ops = &device_ops;
--      /* TODO: Add GSO and Checksum offload */
--      net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM;
-+      net->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |
-+                              NETIF_F_TSO;
-       net->features = NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_RXCSUM |
--                      NETIF_F_IP_CSUM;
-+                      NETIF_F_IP_CSUM | NETIF_F_TSO;
-       SET_ETHTOOL_OPS(net, &ethtool_ops);
-       SET_NETDEV_DEV(net, &dev->device);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0010-hyperv-Fix-a-bug-in-netvsc_start_xmit.patch b/src/patches/linux/0010-hyperv-Fix-a-bug-in-netvsc_start_xmit.patch
deleted file mode 100644 (file)
index 5e08805..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From b3e774263908a834c1c0d5abf3a7658280e42fc7 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 28 Sep 2014 22:16:43 -0700
-Subject: [PATCH 10/11] hyperv: Fix a bug in netvsc_start_xmit()
-
-[ Upstream commit dedb845ded56ded1c62f5398a94ffa8615d4592d ]
-
-After the packet is successfully sent, we should not touch the skb
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-In this version of the patch I have fixed issues pointed out by David.
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Tested-by: Long Li <longli@microsoft.com>
-Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc_drv.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 4fd71b75e666..f15297201777 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -387,6 +387,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       int  hdr_offset;
-       u32 net_trans_info;
-       u32 hash;
-+      u32 skb_length = skb->len;
-       /* We will atmost need two pages to describe the rndis
-@@ -562,7 +563,7 @@ do_send:
- drop:
-       if (ret == 0) {
--              net->stats.tx_bytes += skb->len;
-+              net->stats.tx_bytes += skb_length;
-               net->stats.tx_packets++;
-       } else {
-               kfree(packet);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0011-hyperv-Change-the-receive-buffer-size-for-legacy-hos.patch b/src/patches/linux/0011-hyperv-Change-the-receive-buffer-size-for-legacy-hos.patch
deleted file mode 100644 (file)
index e3ee8cb..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-From 56b3f72d3fed7f9b8d17dcf5d81455fa1b4327d7 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Sun, 9 Mar 2014 16:10:59 -0700
-Subject: [PATCH 11/25] hyperv: Change the receive buffer size for legacy hosts
-
-Due to a bug in the Hyper-V host verion 2008R2, we need to use a slightly smaller
-receive buffer size, otherwise the buffer will not be accepted by the legacy hosts.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h | 1 +
- drivers/net/hyperv/netvsc.c     | 6 +++++-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 7d06b4959383..13010b4dae5b 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -513,6 +513,7 @@ struct nvsp_message {
- #define NETVSC_MTU 65536
- #define NETVSC_RECEIVE_BUFFER_SIZE            (1024*1024*16)  /* 16MB */
-+#define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY     (1024*1024*15)  /* 15MB */
- #define NETVSC_RECEIVE_BUFFER_ID              0xcafe
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 1a0280dcba7e..daddea2654ce 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -365,6 +365,11 @@ static int netvsc_connect_vsp(struct hv_device *device)
-               goto cleanup;
-       /* Post the big receive buffer to NetVSP */
-+      if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_2)
-+              net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
-+      else
-+              net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+
-       ret = netvsc_init_recv_buf(device);
- cleanup:
-@@ -898,7 +903,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       ndev = net_device->ndev;
-       /* Initialize the NetVSC channel extension */
--      net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-       spin_lock_init(&net_device->recv_pkt_list_lock);
-       INIT_LIST_HEAD(&net_device->recv_pkt_list);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0011-hyperv-Fix-a-bug-in-netvsc_send.patch b/src/patches/linux/0011-hyperv-Fix-a-bug-in-netvsc_send.patch
deleted file mode 100644 (file)
index 00f9c5d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-From 26875bba869bd91a1d8fef9229a56a1e6d9fef2b Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 5 Oct 2014 10:42:51 -0700
-Subject: [PATCH 11/11] hyperv: Fix a bug in netvsc_send()
-
-[ Upstream commit 3a67c9ccad926a168d8b7891537a452018368a5b ]
-
-After the packet is successfully sent, we should not touch the packet
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index d97d5f39a04e..7edf976ecfa0 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -708,6 +708,7 @@ int netvsc_send(struct hv_device *device,
-       unsigned int section_index = NETVSC_INVALID_INDEX;
-       u32 msg_size = 0;
-       struct sk_buff *skb;
-+      u16 q_idx = packet->q_idx;
-       net_device = get_outbound_net_device(device);
-@@ -772,24 +773,24 @@ int netvsc_send(struct hv_device *device,
-       if (ret == 0) {
-               atomic_inc(&net_device->num_outstanding_sends);
--              atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+              atomic_inc(&net_device->queue_sends[q_idx]);
-               if (hv_ringbuf_avail_percent(&out_channel->outbound) <
-                       RING_AVAIL_PERCENT_LOWATER) {
-                       netif_tx_stop_queue(netdev_get_tx_queue(
--                                          ndev, packet->q_idx));
-+                                          ndev, q_idx));
-                       if (atomic_read(&net_device->
--                              queue_sends[packet->q_idx]) < 1)
-+                              queue_sends[q_idx]) < 1)
-                               netif_tx_wake_queue(netdev_get_tx_queue(
--                                                  ndev, packet->q_idx));
-+                                                  ndev, q_idx));
-               }
-       } else if (ret == -EAGAIN) {
-               netif_tx_stop_queue(netdev_get_tx_queue(
--                                  ndev, packet->q_idx));
--              if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+                                  ndev, q_idx));
-+              if (atomic_read(&net_device->queue_sends[q_idx]) < 1) {
-                       netif_tx_wake_queue(netdev_get_tx_queue(
--                                          ndev, packet->q_idx));
-+                                          ndev, q_idx));
-                       ret = -ENOSPC;
-               }
-       } else {
--- 
-2.4.3
-
diff --git a/src/patches/linux/0012-Drivers-net-hyperv-Allocate-memory-for-all-possible-.patch b/src/patches/linux/0012-Drivers-net-hyperv-Allocate-memory-for-all-possible-.patch
deleted file mode 100644 (file)
index c626bb0..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From e0f6906eb7e5b395370da9499189d13b59020382 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:45 -0700
-Subject: [PATCH 12/25] Drivers: net: hyperv: Allocate memory for all possible
- per-pecket information
-
-An outgoing packet can potentially need per-packet information for
-all the offloads and VLAN tagging. Fix this issue.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 5baa1fa7e692..c76c85176644 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -320,7 +320,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-                        (num_data_pgs * sizeof(struct hv_page_buffer)) +
-                        sizeof(struct rndis_message) +
--                       NDIS_VLAN_PPI_SIZE, GFP_ATOMIC);
-+                       NDIS_VLAN_PPI_SIZE +
-+                       NDIS_CSUM_PPI_SIZE +
-+                       NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-               /* out of memory, drop packet */
-               netdev_err(net, "unable to allocate hv_netvsc_packet\n");
--- 
-2.4.3
-
diff --git a/src/patches/linux/0013-Drivers-net-hyperv-Negotiate-suitable-ndis-version-f.patch b/src/patches/linux/0013-Drivers-net-hyperv-Negotiate-suitable-ndis-version-f.patch
deleted file mode 100644 (file)
index 7044c52..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8a7882bada78e7d7355aafc0ca3c5696d25eb443 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:46 -0700
-Subject: [PATCH 13/25] Drivers: net: hyperv: Negotiate suitable ndis version
- for offload support
-
-Ws2008R2 supports ndis_version 6.1 and 6.1 is the minimal version required
-for various offloads. Negotiate ndis_version 6.1 when on ws2008r2.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index daddea2654ce..f7629ecefa84 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -344,7 +344,7 @@ static int netvsc_connect_vsp(struct hv_device *device)
-       memset(init_packet, 0, sizeof(struct nvsp_message));
-       if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_4)
--              ndis_version = 0x00050001;
-+              ndis_version = 0x00060001;
-       else
-               ndis_version = 0x0006001e;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0014-Drivers-net-hyperv-Address-UDP-checksum-issues.patch b/src/patches/linux/0014-Drivers-net-hyperv-Address-UDP-checksum-issues.patch
deleted file mode 100644 (file)
index eaf343e..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-From b822ee7a17efd1bc8c7584da5d0a2c042e9ca5b6 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 9 Apr 2014 15:00:47 -0700
-Subject: [PATCH 14/25] Drivers: net: hyperv: Address UDP checksum issues
-
-ws2008r2 does not support UDP checksum offload. Thus, we cannnot turn on
-UDP offload in the host. Also, on ws2012 and ws2012 r2, there appear to be
-an issue with UDP checksum offload.
-Fix this issue by computing the UDP checksum in the Hyper-V driver.
-
-Based on Dave Miller's comments, in this version, I have COWed the skb
-before modifying the UDP header (the checksum field).
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   |  1 +
- drivers/net/hyperv/netvsc_drv.c   | 26 +++++++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 12 +++++++++++-
- 3 files changed, 37 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 13010b4dae5b..d18f711d0b0c 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -747,6 +747,7 @@ struct ndis_oject_header {
- #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV4      0
- #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPV6      1
-+#define VERSION_4_OFFLOAD_SIZE                        22
- /*
-  * New offload OIDs for NDIS 6
-  */
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index c76c85176644..0d898876689e 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -399,7 +399,30 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-               csum_info->transmit.tcp_checksum = 1;
-               csum_info->transmit.tcp_header_offset = hdr_offset;
-       } else if (net_trans_info & INFO_UDP) {
--              csum_info->transmit.udp_checksum = 1;
-+              /* UDP checksum offload is not supported on ws2008r2.
-+               * Furthermore, on ws2012 and ws2012r2, there are some
-+               * issues with udp checksum offload from Linux guests.
-+               * (these are host issues).
-+               * For now compute the checksum here.
-+               */
-+              struct udphdr *uh;
-+              u16 udp_len;
-+
-+              ret = skb_cow_head(skb, 0);
-+              if (ret)
-+                      goto drop;
-+
-+              uh = udp_hdr(skb);
-+              udp_len = ntohs(uh->len);
-+              uh->check = 0;
-+              uh->check = csum_tcpudp_magic(ip_hdr(skb)->saddr,
-+                                            ip_hdr(skb)->daddr,
-+                                            udp_len, IPPROTO_UDP,
-+                                            csum_partial(uh, udp_len, 0));
-+              if (uh->check == 0)
-+                      uh->check = CSUM_MANGLED_0;
-+
-+              csum_info->transmit.udp_checksum = 0;
-       }
-       goto do_send;
-@@ -439,6 +462,7 @@ do_send:
-       ret = netvsc_send(net_device_ctx->device_ctx, packet);
-+drop:
-       if (ret == 0) {
-               net->stats.tx_bytes += skb_length;
-               net->stats.tx_packets++;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 4a37e3db9e32..143a98caf618 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -641,6 +641,16 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
-       struct rndis_set_complete *set_complete;
-       u32 extlen = sizeof(struct ndis_offload_params);
-       int ret, t;
-+      u32 vsp_version = nvdev->nvsp_version;
-+
-+      if (vsp_version <= NVSP_PROTOCOL_VERSION_4) {
-+              extlen = VERSION_4_OFFLOAD_SIZE;
-+              /* On NVSP_PROTOCOL_VERSION_4 and below, we do not support
-+               * UDP checksum offload.
-+               */
-+              req_offloads->udp_ip_v4_csum = 0;
-+              req_offloads->udp_ip_v6_csum = 0;
-+      }
-       request = get_rndis_request(rdev, RNDIS_MSG_SET,
-               RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-@@ -674,7 +684,7 @@ int rndis_filter_set_offload_params(struct hv_device *hdev,
-       } else {
-               set_complete = &request->response_msg.msg.set_complete;
-               if (set_complete->status != RNDIS_STATUS_SUCCESS) {
--                      netdev_err(ndev, "Fail to set MAC on host side:0x%x\n",
-+                      netdev_err(ndev, "Fail to set offload on host side:0x%x\n",
-                                  set_complete->status);
-                       ret = -EINVAL;
-               }
--- 
-2.4.3
-
diff --git a/src/patches/linux/0015-hyperv-Properly-handle-checksum-offload.patch b/src/patches/linux/0015-hyperv-Properly-handle-checksum-offload.patch
deleted file mode 100644 (file)
index 0760833..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From 540360773bad2b81f14c38ca92b62797fa32cbc6 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 11:58:25 -0700
-Subject: [PATCH 15/25] hyperv: Properly handle checksum offload
-
-Do checksum offload only if the client of the driver wants checksum to be
-offloaded.
-
-In V1 version of this patch, I  addressed comments from
-Stephen Hemminger <stephen@networkplumber.org> and
-Eric Dumazet <eric.dumazet@gmail.com>.
-
-In this version of the patch I have addressed comments from
-David Miller.
-
-This patch fixes a bug that is exposed in gateway scenarios.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 0d898876689e..ce6d870dd7ae 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -383,6 +383,10 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       if (skb_is_gso(skb))
-               goto do_lso;
-+      if ((skb->ip_summed == CHECKSUM_NONE) ||
-+          (skb->ip_summed == CHECKSUM_UNNECESSARY))
-+              goto do_send;
-+
-       rndis_msg_size += NDIS_CSUM_PPI_SIZE;
-       ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE,
-                           TCPIP_CHKSUM_PKTINFO);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0016-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch b/src/patches/linux/0016-hyperv-Add-support-for-virtual-Receive-Side-Scaling-.patch
deleted file mode 100644 (file)
index d01a428..0000000
+++ /dev/null
@@ -1,917 +0,0 @@
-From 44559a96c6864eb6e95db0ae896c621b82e605f3 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 10:20:28 -0700
-Subject: [PATCH 16/25] hyperv: Add support for virtual Receive Side Scaling
- (vRSS)
-
-This feature allows multiple channels to be used by each virtual NIC.
-It is available on Hyper-V host 2012 R2.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 110 +++++++++++++++++++++-
- drivers/net/hyperv/netvsc.c       | 136 +++++++++++++++++++++------
- drivers/net/hyperv/netvsc_drv.c   | 103 ++++++++++++++++++++-
- drivers/net/hyperv/rndis_filter.c | 189 +++++++++++++++++++++++++++++++++++++-
- 4 files changed, 504 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d18f711d0b0c..57eb3f906d64 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -28,6 +28,96 @@
- #include <linux/hyperv.h>
- #include <linux/rndis.h>
-+/* RSS related */
-+#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203  /* query only */
-+#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204  /* query and set */
-+
-+#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
-+#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
-+
-+#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
-+#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
-+
-+struct ndis_obj_header {
-+      u8 type;
-+      u8 rev;
-+      u16 size;
-+} __packed;
-+
-+/* ndis_recv_scale_cap/cap_flag */
-+#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR       0x02000000
-+#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC       0x04000000
-+#define NDIS_RSS_CAPS_USING_MSI_X                 0x08000000
-+#define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS      0x10000000
-+#define NDIS_RSS_CAPS_SUPPORTS_MSI_X              0x20000000
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4          0x00000100
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6          0x00000200
-+#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX       0x00000400
-+
-+struct ndis_recv_scale_cap { /* NDIS_RECEIVE_SCALE_CAPABILITIES */
-+      struct ndis_obj_header hdr;
-+      u32 cap_flag;
-+      u32 num_int_msg;
-+      u32 num_recv_que;
-+      u16 num_indirect_tabent;
-+} __packed;
-+
-+
-+/* ndis_recv_scale_param flags */
-+#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED     0x0001
-+#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED    0x0002
-+#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED       0x0004
-+#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED     0x0008
-+#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS            0x0010
-+
-+/* Hash info bits */
-+#define NDIS_HASH_FUNC_TOEPLITZ 0x00000001
-+#define NDIS_HASH_IPV4          0x00000100
-+#define NDIS_HASH_TCP_IPV4      0x00000200
-+#define NDIS_HASH_IPV6          0x00000400
-+#define NDIS_HASH_IPV6_EX       0x00000800
-+#define NDIS_HASH_TCP_IPV6      0x00001000
-+#define NDIS_HASH_TCP_IPV6_EX   0x00002000
-+
-+#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * 4)
-+#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2   40
-+
-+#define ITAB_NUM 128
-+#define HASH_KEYLEN NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2
-+extern u8 netvsc_hash_key[];
-+
-+struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
-+      struct ndis_obj_header hdr;
-+
-+      /* Qualifies the rest of the information */
-+      u16 flag;
-+
-+      /* The base CPU number to do receive processing. not used */
-+      u16 base_cpu_number;
-+
-+      /* This describes the hash function and type being enabled */
-+      u32 hashinfo;
-+
-+      /* The size of indirection table array */
-+      u16 indirect_tabsize;
-+
-+      /* The offset of the indirection table from the beginning of this
-+       * structure
-+       */
-+      u32 indirect_taboffset;
-+
-+      /* The size of the hash secret key */
-+      u16 hashkey_size;
-+
-+      /* The offset of the secret key from the beginning of this structure */
-+      u32 kashkey_offset;
-+
-+      u32 processor_masks_offset;
-+      u32 num_processor_masks;
-+      u32 processor_masks_entry_size;
-+};
-+
- /* Fwd declaration */
- struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
-@@ -39,6 +129,8 @@ struct xferpage_packet {
-       /* # of netvsc packets this xfer packet contains */
-       u32 count;
-+
-+      struct vmbus_channel *channel;
- };
- /*
-@@ -54,6 +146,9 @@ struct hv_netvsc_packet {
-       bool is_data_pkt;
-       u16 vlan_tci;
-+      u16 q_idx;
-+      struct vmbus_channel *channel;
-+
-       /*
-        * Valid only for receives when we break a xfer page packet
-        * into multiple netvsc packets
-@@ -120,6 +215,7 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
- int netvsc_recv_callback(struct hv_device *device_obj,
-                       struct hv_netvsc_packet *packet,
-                       struct ndis_tcp_ip_checksum_info *csum_info);
-+void netvsc_channel_cb(void *context);
- int rndis_filter_open(struct hv_device *dev);
- int rndis_filter_close(struct hv_device *dev);
- int rndis_filter_device_add(struct hv_device *dev,
-@@ -522,6 +618,8 @@ struct nvsp_message {
- #define NETVSC_PACKET_SIZE                      2048
-+#define VRSS_SEND_TAB_SIZE 16
-+
- /* Per netvsc channel-specific */
- struct netvsc_device {
-       struct hv_device *dev;
-@@ -555,10 +653,20 @@ struct netvsc_device {
-       struct net_device *ndev;
-+      struct vmbus_channel *chn_table[NR_CPUS];
-+      u32 send_table[VRSS_SEND_TAB_SIZE];
-+      u32 num_chn;
-+      atomic_t queue_sends[NR_CPUS];
-+
-       /* Holds rndis device info */
-       void *extension;
--      /* The recive buffer for this device */
-+
-+      int ring_size;
-+
-+      /* The primary channel callback buffer */
-       unsigned char cb_buffer[NETVSC_PACKET_SIZE];
-+      /* The sub channel callback buffer */
-+      unsigned char *sub_cb_buf;
- };
- /* NdisInitialize message */
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index f7629ecefa84..e7e77f12bc38 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -422,6 +422,9 @@ int netvsc_device_remove(struct hv_device *device)
-               kfree(netvsc_packet);
-       }
-+      if (net_device->sub_cb_buf)
-+              vfree(net_device->sub_cb_buf);
-+
-       kfree(net_device);
-       return 0;
- }
-@@ -461,7 +464,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-           (nvsp_packet->hdr.msg_type ==
-            NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE) ||
-           (nvsp_packet->hdr.msg_type ==
--           NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE)) {
-+           NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE) ||
-+          (nvsp_packet->hdr.msg_type ==
-+           NVSP_MSG5_TYPE_SUBCHANNEL)) {
-               /* Copy the response back */
-               memcpy(&net_device->channel_init_pkt, nvsp_packet,
-                      sizeof(struct nvsp_message));
-@@ -469,28 +474,37 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-       } else if (nvsp_packet->hdr.msg_type ==
-                  NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE) {
-               int num_outstanding_sends;
-+              u16 q_idx = 0;
-+              struct vmbus_channel *channel = device->channel;
-+              int queue_sends;
-               /* Get the send context */
-               nvsc_packet = (struct hv_netvsc_packet *)(unsigned long)
-                       packet->trans_id;
-               /* Notify the layer above us */
--              if (nvsc_packet)
-+              if (nvsc_packet) {
-+                      q_idx = nvsc_packet->q_idx;
-+                      channel = nvsc_packet->channel;
-                       nvsc_packet->completion.send.send_completion(
-                               nvsc_packet->completion.send.
-                               send_completion_ctx);
-+              }
-               num_outstanding_sends =
-                       atomic_dec_return(&net_device->num_outstanding_sends);
-+              queue_sends = atomic_dec_return(&net_device->
-+                                              queue_sends[q_idx]);
-               if (net_device->destroy && num_outstanding_sends == 0)
-                       wake_up(&net_device->wait_drain);
--              if (netif_queue_stopped(ndev) && !net_device->start_remove &&
--                      (hv_ringbuf_avail_percent(&device->channel->outbound)
--                      > RING_AVAIL_PERCENT_HIWATER ||
--                      num_outstanding_sends < 1))
--                              netif_wake_queue(ndev);
-+              if (netif_tx_queue_stopped(netdev_get_tx_queue(ndev, q_idx)) &&
-+                  !net_device->start_remove &&
-+                  (hv_ringbuf_avail_percent(&channel->outbound) >
-+                   RING_AVAIL_PERCENT_HIWATER || queue_sends < 1))
-+                              netif_tx_wake_queue(netdev_get_tx_queue(
-+                                                  ndev, q_idx));
-       } else {
-               netdev_err(ndev, "Unknown send completion packet type- "
-                          "%d received!!\n", nvsp_packet->hdr.msg_type);
-@@ -505,6 +519,7 @@ int netvsc_send(struct hv_device *device,
-       int ret = 0;
-       struct nvsp_message sendMessage;
-       struct net_device *ndev;
-+      struct vmbus_channel *out_channel = NULL;
-       u64 req_id;
-       net_device = get_outbound_net_device(device);
-@@ -531,15 +546,20 @@ int netvsc_send(struct hv_device *device,
-       else
-               req_id = 0;
-+      out_channel = net_device->chn_table[packet->q_idx];
-+      if (out_channel == NULL)
-+              out_channel = device->channel;
-+      packet->channel = out_channel;
-+
-       if (packet->page_buf_cnt) {
--              ret = vmbus_sendpacket_pagebuffer(device->channel,
-+              ret = vmbus_sendpacket_pagebuffer(out_channel,
-                                                 packet->page_buf,
-                                                 packet->page_buf_cnt,
-                                                 &sendMessage,
-                                                 sizeof(struct nvsp_message),
-                                                 req_id);
-       } else {
--              ret = vmbus_sendpacket(device->channel, &sendMessage,
-+              ret = vmbus_sendpacket(out_channel, &sendMessage,
-                               sizeof(struct nvsp_message),
-                               req_id,
-                               VM_PKT_DATA_INBAND,
-@@ -548,17 +568,24 @@ int netvsc_send(struct hv_device *device,
-       if (ret == 0) {
-               atomic_inc(&net_device->num_outstanding_sends);
--              if (hv_ringbuf_avail_percent(&device->channel->outbound) <
-+              atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+
-+              if (hv_ringbuf_avail_percent(&out_channel->outbound) <
-                       RING_AVAIL_PERCENT_LOWATER) {
--                      netif_stop_queue(ndev);
-+                      netif_tx_stop_queue(netdev_get_tx_queue(
-+                                          ndev, packet->q_idx));
-+
-                       if (atomic_read(&net_device->
--                              num_outstanding_sends) < 1)
--                              netif_wake_queue(ndev);
-+                              queue_sends[packet->q_idx]) < 1)
-+                              netif_tx_wake_queue(netdev_get_tx_queue(
-+                                                  ndev, packet->q_idx));
-               }
-       } else if (ret == -EAGAIN) {
--              netif_stop_queue(ndev);
--              if (atomic_read(&net_device->num_outstanding_sends) < 1) {
--                      netif_wake_queue(ndev);
-+              netif_tx_stop_queue(netdev_get_tx_queue(
-+                                  ndev, packet->q_idx));
-+              if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+                      netif_tx_wake_queue(netdev_get_tx_queue(
-+                                          ndev, packet->q_idx));
-                       ret = -ENOSPC;
-               }
-       } else {
-@@ -570,6 +597,7 @@ int netvsc_send(struct hv_device *device,
- }
- static void netvsc_send_recv_completion(struct hv_device *device,
-+                                      struct vmbus_channel *channel,
-                                       struct netvsc_device *net_device,
-                                       u64 transaction_id, u32 status)
- {
-@@ -587,7 +615,7 @@ static void netvsc_send_recv_completion(struct hv_device *device,
- retry_send_cmplt:
-       /* Send the completion */
--      ret = vmbus_sendpacket(device->channel, &recvcompMessage,
-+      ret = vmbus_sendpacket(channel, &recvcompMessage,
-                              sizeof(struct nvsp_message), transaction_id,
-                              VM_PKT_COMP, 0);
-       if (ret == 0) {
-@@ -618,6 +646,7 @@ static void netvsc_receive_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = context;
-       struct hv_device *device = packet->device;
-+      struct vmbus_channel *channel;
-       struct netvsc_device *net_device;
-       u64 transaction_id = 0;
-       bool fsend_receive_comp = false;
-@@ -649,6 +678,7 @@ static void netvsc_receive_completion(void *context)
-        */
-       if (packet->xfer_page_pkt->count == 0) {
-               fsend_receive_comp = true;
-+              channel = packet->xfer_page_pkt->channel;
-               transaction_id = packet->completion.recv.recv_completion_tid;
-               status = packet->xfer_page_pkt->status;
-               list_add_tail(&packet->xfer_page_pkt->list_ent,
-@@ -662,12 +692,13 @@ static void netvsc_receive_completion(void *context)
-       /* Send a receive completion for the xfer page packet */
-       if (fsend_receive_comp)
--              netvsc_send_recv_completion(device, net_device, transaction_id,
--                                      status);
-+              netvsc_send_recv_completion(device, channel, net_device,
-+                                          transaction_id, status);
- }
- static void netvsc_receive(struct netvsc_device *net_device,
-+                      struct vmbus_channel *channel,
-                       struct hv_device *device,
-                       struct vmpacket_descriptor *packet)
- {
-@@ -748,7 +779,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
-                                      flags);
--              netvsc_send_recv_completion(device, net_device,
-+              netvsc_send_recv_completion(device, channel, net_device,
-                                           vmxferpage_packet->d.trans_id,
-                                           NVSP_STAT_FAIL);
-@@ -759,6 +790,7 @@ static void netvsc_receive(struct netvsc_device *net_device,
-       xferpage_packet = (struct xferpage_packet *)listHead.next;
-       list_del(&xferpage_packet->list_ent);
-       xferpage_packet->status = NVSP_STAT_SUCCESS;
-+      xferpage_packet->channel = channel;
-       /* This is how much we can satisfy */
-       xferpage_packet->count = count - 1;
-@@ -800,10 +832,45 @@ static void netvsc_receive(struct netvsc_device *net_device,
- }
--static void netvsc_channel_cb(void *context)
-+
-+static void netvsc_send_table(struct hv_device *hdev,
-+                            struct vmpacket_descriptor *vmpkt)
-+{
-+      struct netvsc_device *nvscdev;
-+      struct net_device *ndev;
-+      struct nvsp_message *nvmsg;
-+      int i;
-+      u32 count, *tab;
-+
-+      nvscdev = get_outbound_net_device(hdev);
-+      if (!nvscdev)
-+              return;
-+      ndev = nvscdev->ndev;
-+
-+      nvmsg = (struct nvsp_message *)((unsigned long)vmpkt +
-+                                      (vmpkt->offset8 << 3));
-+
-+      if (nvmsg->hdr.msg_type != NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE)
-+              return;
-+
-+      count = nvmsg->msg.v5_msg.send_table.count;
-+      if (count != VRSS_SEND_TAB_SIZE) {
-+              netdev_err(ndev, "Received wrong send-table size:%u\n", count);
-+              return;
-+      }
-+
-+      tab = (u32 *)((unsigned long)&nvmsg->msg.v5_msg.send_table +
-+                    nvmsg->msg.v5_msg.send_table.offset);
-+
-+      for (i = 0; i < count; i++)
-+              nvscdev->send_table[i] = tab[i];
-+}
-+
-+void netvsc_channel_cb(void *context)
- {
-       int ret;
--      struct hv_device *device = context;
-+      struct vmbus_channel *channel = (struct vmbus_channel *)context;
-+      struct hv_device *device;
-       struct netvsc_device *net_device;
-       u32 bytes_recvd;
-       u64 request_id;
-@@ -812,14 +879,19 @@ static void netvsc_channel_cb(void *context)
-       int bufferlen = NETVSC_PACKET_SIZE;
-       struct net_device *ndev;
-+      if (channel->primary_channel != NULL)
-+              device = channel->primary_channel->device_obj;
-+      else
-+              device = channel->device_obj;
-+
-       net_device = get_inbound_net_device(device);
-       if (!net_device)
-               return;
-       ndev = net_device->ndev;
--      buffer = net_device->cb_buffer;
-+      buffer = get_per_channel_state(channel);
-       do {
--              ret = vmbus_recvpacket_raw(device->channel, buffer, bufferlen,
-+              ret = vmbus_recvpacket_raw(channel, buffer, bufferlen,
-                                          &bytes_recvd, &request_id);
-               if (ret == 0) {
-                       if (bytes_recvd > 0) {
-@@ -831,8 +903,12 @@ static void netvsc_channel_cb(void *context)
-                                       break;
-                               case VM_PKT_DATA_USING_XFER_PAGES:
--                                      netvsc_receive(net_device,
--                                                      device, desc);
-+                                      netvsc_receive(net_device, channel,
-+                                                     device, desc);
-+                                      break;
-+
-+                              case VM_PKT_DATA_INBAND:
-+                                      netvsc_send_table(device, desc);
-                                       break;
-                               default:
-@@ -893,6 +969,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-               goto cleanup;
-       }
-+      net_device->ring_size = ring_size;
-+
-       /*
-        * Coming into this function, struct net_device * is
-        * registered as the driver private data.
-@@ -917,10 +995,12 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       }
-       init_completion(&net_device->channel_init_wait);
-+      set_per_channel_state(device->channel, net_device->cb_buffer);
-+
-       /* Open the channel */
-       ret = vmbus_open(device->channel, ring_size * PAGE_SIZE,
-                        ring_size * PAGE_SIZE, NULL, 0,
--                       netvsc_channel_cb, device);
-+                       netvsc_channel_cb, device->channel);
-       if (ret != 0) {
-               netdev_err(ndev, "unable to open channel: %d\n", ret);
-@@ -930,6 +1010,8 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       /* Channel is opened */
-       pr_info("hv_netvsc channel opened successfully\n");
-+      net_device->chn_table[0] = device->channel;
-+
-       /* Connect with the NetVsp */
-       ret = netvsc_connect_vsp(device);
-       if (ret != 0) {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index ce6d870dd7ae..e486dbd33f61 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -101,7 +101,7 @@ static int netvsc_open(struct net_device *net)
-               return ret;
-       }
--      netif_start_queue(net);
-+      netif_tx_start_all_queues(net);
-       nvdev = hv_get_drvdata(device_obj);
-       rdev = nvdev->extension;
-@@ -149,6 +149,88 @@ static void *init_ppi_data(struct rndis_message *msg, u32 ppi_size,
-       return ppi;
- }
-+union sub_key {
-+      u64 k;
-+      struct {
-+              u8 pad[3];
-+              u8 kb;
-+              u32 ka;
-+      };
-+};
-+
-+/* Toeplitz hash function
-+ * data: network byte order
-+ * return: host byte order
-+ */
-+static u32 comp_hash(u8 *key, int klen, u8 *data, int dlen)
-+{
-+      union sub_key subk;
-+      int k_next = 4;
-+      u8 dt;
-+      int i, j;
-+      u32 ret = 0;
-+
-+      subk.k = 0;
-+      subk.ka = ntohl(*(u32 *)key);
-+
-+      for (i = 0; i < dlen; i++) {
-+              subk.kb = key[k_next];
-+              k_next = (k_next + 1) % klen;
-+              dt = data[i];
-+              for (j = 0; j < 8; j++) {
-+                      if (dt & 0x80)
-+                              ret ^= subk.ka;
-+                      dt <<= 1;
-+                      subk.k <<= 1;
-+              }
-+      }
-+
-+      return ret;
-+}
-+
-+static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb)
-+{
-+      struct iphdr *iphdr;
-+      int data_len;
-+      bool ret = false;
-+
-+      if (eth_hdr(skb)->h_proto != htons(ETH_P_IP))
-+              return false;
-+
-+      iphdr = ip_hdr(skb);
-+
-+      if (iphdr->version == 4) {
-+              if (iphdr->protocol == IPPROTO_TCP)
-+                      data_len = 12;
-+              else
-+                      data_len = 8;
-+              *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN,
-+                                (u8 *)&iphdr->saddr, data_len);
-+              ret = true;
-+      }
-+
-+      return ret;
-+}
-+
-+static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-+                      void *accel_priv, select_queue_fallback_t fallback)
-+{
-+      struct net_device_context *net_device_ctx = netdev_priv(ndev);
-+      struct hv_device *hdev =  net_device_ctx->device_ctx;
-+      struct netvsc_device *nvsc_dev = hv_get_drvdata(hdev);
-+      u32 hash;
-+      u16 q_idx = 0;
-+
-+      if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-+              return 0;
-+
-+      if (netvsc_set_hash(&hash, skb))
-+              q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-+                      ndev->real_num_tx_queues;
-+
-+      return q_idx;
-+}
-+
- static void netvsc_xmit_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-@@ -334,6 +416,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet->vlan_tci = skb->vlan_tci;
-+      packet->q_idx = skb_get_queue_mapping(skb);
-+
-       packet->is_data_pkt = true;
-       packet->total_data_buflen = skb->len;
-@@ -559,6 +643,10 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-                                      packet->vlan_tci);
-+      skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+                          offermsg.offer.sub_channel_index %
-+                          net->real_num_rx_queues);
-+
-       net->stats.rx_packets++;
-       net->stats.rx_bytes += packet->total_data_buflen;
-@@ -607,7 +695,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
-       hv_set_drvdata(hdev, ndev);
-       device_info.ring_size = ring_size;
-       rndis_filter_device_add(hdev, &device_info);
--      netif_wake_queue(ndev);
-+      netif_tx_wake_all_queues(ndev);
-       return 0;
- }
-@@ -653,6 +741,7 @@ static const struct net_device_ops device_ops = {
-       .ndo_change_mtu =               netvsc_change_mtu,
-       .ndo_validate_addr =            eth_validate_addr,
-       .ndo_set_mac_address =          netvsc_set_mac_addr,
-+      .ndo_select_queue =             netvsc_select_queue,
- };
- /*
-@@ -699,9 +788,11 @@ static int netvsc_probe(struct hv_device *dev,
-       struct net_device *net = NULL;
-       struct net_device_context *net_device_ctx;
-       struct netvsc_device_info device_info;
-+      struct netvsc_device *nvdev;
-       int ret;
--      net = alloc_etherdev(sizeof(struct net_device_context));
-+      net = alloc_etherdev_mq(sizeof(struct net_device_context),
-+                              num_online_cpus());
-       if (!net)
-               return -ENOMEM;
-@@ -734,6 +825,12 @@ static int netvsc_probe(struct hv_device *dev,
-       }
-       memcpy(net->dev_addr, device_info.mac_adr, ETH_ALEN);
-+      nvdev = hv_get_drvdata(dev);
-+      netif_set_real_num_tx_queues(net, nvdev->num_chn);
-+      netif_set_real_num_rx_queues(net, nvdev->num_chn);
-+      dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
-+               net->real_num_tx_queues, net->real_num_rx_queues);
-+
-       ret = register_netdev(net);
-       if (ret != 0) {
-               pr_err("Unable to register netdev.\n");
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 143a98caf618..d92cfbe43410 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -31,7 +31,7 @@
- #include "hyperv_net.h"
--#define RNDIS_EXT_LEN 100
-+#define RNDIS_EXT_LEN PAGE_SIZE
- struct rndis_request {
-       struct list_head list_ent;
-       struct completion  wait_event;
-@@ -94,6 +94,8 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
-       rndis_msg->ndis_msg_type = msg_type;
-       rndis_msg->msg_len = msg_len;
-+      request->pkt.q_idx = 0;
-+
-       /*
-        * Set the request id. This field is always after the rndis header for
-        * request/response packet types so we just used the SetRequest as a
-@@ -509,6 +511,19 @@ static int rndis_filter_query_device(struct rndis_device *dev, u32 oid,
-       query->info_buflen = 0;
-       query->dev_vc_handle = 0;
-+      if (oid == OID_GEN_RECEIVE_SCALE_CAPABILITIES) {
-+              struct ndis_recv_scale_cap *cap;
-+
-+              request->request_msg.msg_len +=
-+                      sizeof(struct ndis_recv_scale_cap);
-+              query->info_buflen = sizeof(struct ndis_recv_scale_cap);
-+              cap = (struct ndis_recv_scale_cap *)((unsigned long)query +
-+                                                   query->info_buf_offset);
-+              cap->hdr.type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-+              cap->hdr.rev = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
-+              cap->hdr.size = sizeof(struct ndis_recv_scale_cap);
-+      }
-+
-       ret = rndis_filter_send_request(dev, request);
-       if (ret != 0)
-               goto cleanup;
-@@ -695,6 +710,89 @@ cleanup:
-       return ret;
- }
-+u8 netvsc_hash_key[HASH_KEYLEN] = {
-+      0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
-+      0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
-+      0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
-+      0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
-+      0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
-+};
-+
-+int rndis_filter_set_rss_param(struct rndis_device *rdev, int num_queue)
-+{
-+      struct net_device *ndev = rdev->net_dev->ndev;
-+      struct rndis_request *request;
-+      struct rndis_set_request *set;
-+      struct rndis_set_complete *set_complete;
-+      u32 extlen = sizeof(struct ndis_recv_scale_param) +
-+                   4*ITAB_NUM + HASH_KEYLEN;
-+      struct ndis_recv_scale_param *rssp;
-+      u32 *itab;
-+      u8 *keyp;
-+      int i, t, ret;
-+
-+      request = get_rndis_request(
-+                      rdev, RNDIS_MSG_SET,
-+                      RNDIS_MESSAGE_SIZE(struct rndis_set_request) + extlen);
-+      if (!request)
-+              return -ENOMEM;
-+
-+      set = &request->request_msg.msg.set_req;
-+      set->oid = OID_GEN_RECEIVE_SCALE_PARAMETERS;
-+      set->info_buflen = extlen;
-+      set->info_buf_offset = sizeof(struct rndis_set_request);
-+      set->dev_vc_handle = 0;
-+
-+      rssp = (struct ndis_recv_scale_param *)(set + 1);
-+      rssp->hdr.type = NDIS_OBJECT_TYPE_RSS_PARAMETERS;
-+      rssp->hdr.rev = NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2;
-+      rssp->hdr.size = sizeof(struct ndis_recv_scale_param);
-+      rssp->flag = 0;
-+      rssp->hashinfo = NDIS_HASH_FUNC_TOEPLITZ | NDIS_HASH_IPV4 |
-+                       NDIS_HASH_TCP_IPV4;
-+      rssp->indirect_tabsize = 4*ITAB_NUM;
-+      rssp->indirect_taboffset = sizeof(struct ndis_recv_scale_param);
-+      rssp->hashkey_size = HASH_KEYLEN;
-+      rssp->kashkey_offset = rssp->indirect_taboffset +
-+                             rssp->indirect_tabsize;
-+
-+      /* Set indirection table entries */
-+      itab = (u32 *)(rssp + 1);
-+      for (i = 0; i < ITAB_NUM; i++)
-+              itab[i] = i % num_queue;
-+
-+      /* Set hask key values */
-+      keyp = (u8 *)((unsigned long)rssp + rssp->kashkey_offset);
-+      for (i = 0; i < HASH_KEYLEN; i++)
-+              keyp[i] = netvsc_hash_key[i];
-+
-+
-+      ret = rndis_filter_send_request(rdev, request);
-+      if (ret != 0)
-+              goto cleanup;
-+
-+      t = wait_for_completion_timeout(&request->wait_event, 5*HZ);
-+      if (t == 0) {
-+              netdev_err(ndev, "timeout before we got a set response...\n");
-+              /* can't put_rndis_request, since we may still receive a
-+               * send-completion.
-+               */
-+              return -ETIMEDOUT;
-+      } else {
-+              set_complete = &request->response_msg.msg.set_complete;
-+              if (set_complete->status != RNDIS_STATUS_SUCCESS) {
-+                      netdev_err(ndev, "Fail to set RSS parameters:0x%x\n",
-+                                 set_complete->status);
-+                      ret = -EINVAL;
-+              }
-+      }
-+
-+cleanup:
-+      put_rndis_request(rdev, request);
-+      return ret;
-+}
-+
-+
- static int rndis_filter_query_device_link_status(struct rndis_device *dev)
- {
-       u32 size = sizeof(u32);
-@@ -886,6 +984,28 @@ static int rndis_filter_close_device(struct rndis_device *dev)
-       return ret;
- }
-+static void netvsc_sc_open(struct vmbus_channel *new_sc)
-+{
-+      struct netvsc_device *nvscdev;
-+      u16 chn_index = new_sc->offermsg.offer.sub_channel_index;
-+      int ret;
-+
-+      nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj);
-+
-+      if (chn_index >= nvscdev->num_chn)
-+              return;
-+
-+      set_per_channel_state(new_sc, nvscdev->sub_cb_buf + (chn_index - 1) *
-+                            NETVSC_PACKET_SIZE);
-+
-+      ret = vmbus_open(new_sc, nvscdev->ring_size * PAGE_SIZE,
-+                       nvscdev->ring_size * PAGE_SIZE, NULL, 0,
-+                       netvsc_channel_cb, new_sc);
-+
-+      if (ret == 0)
-+              nvscdev->chn_table[chn_index] = new_sc;
-+}
-+
- int rndis_filter_device_add(struct hv_device *dev,
-                                 void *additional_info)
- {
-@@ -894,6 +1014,10 @@ int rndis_filter_device_add(struct hv_device *dev,
-       struct rndis_device *rndis_device;
-       struct netvsc_device_info *device_info = additional_info;
-       struct ndis_offload_params offloads;
-+      struct nvsp_message *init_packet;
-+      int t;
-+      struct ndis_recv_scale_cap rsscap;
-+      u32 rsscap_size = sizeof(struct ndis_recv_scale_cap);
-       rndis_device = get_rndis_device();
-       if (!rndis_device)
-@@ -913,6 +1037,7 @@ int rndis_filter_device_add(struct hv_device *dev,
-       /* Initialize the rndis device */
-       net_device = hv_get_drvdata(dev);
-+      net_device->num_chn = 1;
-       net_device->extension = rndis_device;
-       rndis_device->net_dev = net_device;
-@@ -952,7 +1077,6 @@ int rndis_filter_device_add(struct hv_device *dev,
-       if (ret)
-               goto err_dev_remv;
--
-       rndis_filter_query_device_link_status(rndis_device);
-       device_info->link_state = rndis_device->link_state;
-@@ -961,7 +1085,66 @@ int rndis_filter_device_add(struct hv_device *dev,
-                rndis_device->hw_mac_adr,
-                device_info->link_state ? "down" : "up");
--      return ret;
-+      if (net_device->nvsp_version < NVSP_PROTOCOL_VERSION_5)
-+              return 0;
-+
-+      /* vRSS setup */
-+      memset(&rsscap, 0, rsscap_size);
-+      ret = rndis_filter_query_device(rndis_device,
-+                                      OID_GEN_RECEIVE_SCALE_CAPABILITIES,
-+                                      &rsscap, &rsscap_size);
-+      if (ret || rsscap.num_recv_que < 2)
-+              goto out;
-+
-+      net_device->num_chn = (num_online_cpus() < rsscap.num_recv_que) ?
-+                             num_online_cpus() : rsscap.num_recv_que;
-+      if (net_device->num_chn == 1)
-+              goto out;
-+
-+      net_device->sub_cb_buf = vzalloc((net_device->num_chn - 1) *
-+                                       NETVSC_PACKET_SIZE);
-+      if (!net_device->sub_cb_buf) {
-+              net_device->num_chn = 1;
-+              dev_info(&dev->device, "No memory for subchannels.\n");
-+              goto out;
-+      }
-+
-+      vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
-+
-+      init_packet = &net_device->channel_init_pkt;
-+      memset(init_packet, 0, sizeof(struct nvsp_message));
-+      init_packet->hdr.msg_type = NVSP_MSG5_TYPE_SUBCHANNEL;
-+      init_packet->msg.v5_msg.subchn_req.op = NVSP_SUBCHANNEL_ALLOCATE;
-+      init_packet->msg.v5_msg.subchn_req.num_subchannels =
-+                                              net_device->num_chn - 1;
-+      ret = vmbus_sendpacket(dev->channel, init_packet,
-+                             sizeof(struct nvsp_message),
-+                             (unsigned long)init_packet,
-+                             VM_PKT_DATA_INBAND,
-+                             VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+      if (ret)
-+              goto out;
-+      t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+      if (t == 0) {
-+              ret = -ETIMEDOUT;
-+              goto out;
-+      }
-+      if (init_packet->msg.v5_msg.subchn_comp.status !=
-+          NVSP_STAT_SUCCESS) {
-+              ret = -ENODEV;
-+              goto out;
-+      }
-+      net_device->num_chn = 1 +
-+              init_packet->msg.v5_msg.subchn_comp.num_subchannels;
-+
-+      vmbus_are_subchannels_present(dev->channel);
-+
-+      ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn);
-+
-+out:
-+      if (ret)
-+              net_device->num_chn = 1;
-+      return 0; /* return 0 because primary channel can be used alone */
- err_dev_remv:
-       rndis_filter_device_remove(dev);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0017-hyperv-Remove-recv_pkt_list-and-lock.patch b/src/patches/linux/0017-hyperv-Remove-recv_pkt_list-and-lock.patch
deleted file mode 100644 (file)
index 31465a1..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-From d6bf5567c1438b4f3b1bcff1a1525ddb1754df19 Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:43 -0700
-Subject: [PATCH 17/25] hyperv: Remove recv_pkt_list and lock
-
-Removed recv_pkt_list and lock, and updated related code, so that
-the locking overhead is reduced especially when multiple channels
-are in use.
-
-The recv_pkt_list isn't actually necessary because the packets are
-processed sequentially in each channel. It has been replaced by a
-local variable, and the related lock for this list is also removed.
-The is_data_pkt field is not used in receive path, so its assignment
-is cleaned up.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   |  33 --------
- drivers/net/hyperv/netvsc.c       | 174 +++-----------------------------------
- drivers/net/hyperv/netvsc_drv.c   |   2 +-
- drivers/net/hyperv/rndis_filter.c |   2 -
- 4 files changed, 13 insertions(+), 198 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 57eb3f906d64..a1af0f7711e2 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -119,27 +119,14 @@ struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
- };
- /* Fwd declaration */
--struct hv_netvsc_packet;
- struct ndis_tcp_ip_checksum_info;
--/* Represent the xfer page packet which contains 1 or more netvsc packet */
--struct xferpage_packet {
--      struct list_head list_ent;
--      u32 status;
--
--      /* # of netvsc packets this xfer packet contains */
--      u32 count;
--
--      struct vmbus_channel *channel;
--};
--
- /*
-  * Represent netvsc packet which contains 1 RNDIS and 1 ethernet frame
-  * within the RNDIS
-  */
- struct hv_netvsc_packet {
-       /* Bookkeeping stuff */
--      struct list_head list_ent;
-       u32 status;
-       struct hv_device *device;
-@@ -149,19 +136,8 @@ struct hv_netvsc_packet {
-       u16 q_idx;
-       struct vmbus_channel *channel;
--      /*
--       * Valid only for receives when we break a xfer page packet
--       * into multiple netvsc packets
--       */
--      struct xferpage_packet *xfer_page_pkt;
--
-       union {
-               struct {
--                      u64 recv_completion_tid;
--                      void *recv_completion_ctx;
--                      void (*recv_completion)(void *context);
--              } recv;
--              struct {
-                       u64 send_completion_tid;
-                       void *send_completion_ctx;
-                       void (*send_completion)(void *context);
-@@ -613,9 +589,6 @@ struct nvsp_message {
- #define NETVSC_RECEIVE_BUFFER_ID              0xcafe
--/* Preallocated receive packets */
--#define NETVSC_RECEIVE_PACKETLIST_COUNT               256
--
- #define NETVSC_PACKET_SIZE                      2048
- #define VRSS_SEND_TAB_SIZE 16
-@@ -630,12 +603,6 @@ struct netvsc_device {
-       wait_queue_head_t wait_drain;
-       bool start_remove;
-       bool destroy;
--      /*
--       * List of free preallocated hv_netvsc_packet to represent receive
--       * packet
--       */
--      struct list_head recv_pkt_list;
--      spinlock_t recv_pkt_list_lock;
-       /* Receive buffer allocated by us but manages by NetVSP */
-       void *recv_buf;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index e7e77f12bc38..b10334773b32 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -387,7 +387,6 @@ static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- int netvsc_device_remove(struct hv_device *device)
- {
-       struct netvsc_device *net_device;
--      struct hv_netvsc_packet *netvsc_packet, *pos;
-       unsigned long flags;
-       net_device = hv_get_drvdata(device);
-@@ -416,12 +415,6 @@ int netvsc_device_remove(struct hv_device *device)
-       vmbus_close(device->channel);
-       /* Release all resources */
--      list_for_each_entry_safe(netvsc_packet, pos,
--                               &net_device->recv_pkt_list, list_ent) {
--              list_del(&netvsc_packet->list_ent);
--              kfree(netvsc_packet);
--      }
--
-       if (net_device->sub_cb_buf)
-               vfree(net_device->sub_cb_buf);
-@@ -641,62 +634,6 @@ retry_send_cmplt:
-       }
- }
--/* Send a receive completion packet to RNDIS device (ie NetVsp) */
--static void netvsc_receive_completion(void *context)
--{
--      struct hv_netvsc_packet *packet = context;
--      struct hv_device *device = packet->device;
--      struct vmbus_channel *channel;
--      struct netvsc_device *net_device;
--      u64 transaction_id = 0;
--      bool fsend_receive_comp = false;
--      unsigned long flags;
--      struct net_device *ndev;
--      u32 status = NVSP_STAT_NONE;
--
--      /*
--       * Even though it seems logical to do a GetOutboundNetDevice() here to
--       * send out receive completion, we are using GetInboundNetDevice()
--       * since we may have disable outbound traffic already.
--       */
--      net_device = get_inbound_net_device(device);
--      if (!net_device)
--              return;
--      ndev = net_device->ndev;
--
--      /* Overloading use of the lock. */
--      spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--
--      if (packet->status != NVSP_STAT_SUCCESS)
--              packet->xfer_page_pkt->status = NVSP_STAT_FAIL;
--
--      packet->xfer_page_pkt->count--;
--
--      /*
--       * Last one in the line that represent 1 xfer page packet.
--       * Return the xfer page packet itself to the freelist
--       */
--      if (packet->xfer_page_pkt->count == 0) {
--              fsend_receive_comp = true;
--              channel = packet->xfer_page_pkt->channel;
--              transaction_id = packet->completion.recv.recv_completion_tid;
--              status = packet->xfer_page_pkt->status;
--              list_add_tail(&packet->xfer_page_pkt->list_ent,
--                            &net_device->recv_pkt_list);
--
--      }
--
--      /* Put the packet back */
--      list_add_tail(&packet->list_ent, &net_device->recv_pkt_list);
--      spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
--      /* Send a receive completion for the xfer page packet */
--      if (fsend_receive_comp)
--              netvsc_send_recv_completion(device, channel, net_device,
--                                          transaction_id, status);
--
--}
--
- static void netvsc_receive(struct netvsc_device *net_device,
-                       struct vmbus_channel *channel,
-                       struct hv_device *device,
-@@ -704,16 +641,13 @@ static void netvsc_receive(struct netvsc_device *net_device,
- {
-       struct vmtransfer_page_packet_header *vmxferpage_packet;
-       struct nvsp_message *nvsp_packet;
--      struct hv_netvsc_packet *netvsc_packet = NULL;
--      /* struct netvsc_driver *netvscDriver; */
--      struct xferpage_packet *xferpage_packet = NULL;
-+      struct hv_netvsc_packet nv_pkt;
-+      struct hv_netvsc_packet *netvsc_packet = &nv_pkt;
-+      u32 status = NVSP_STAT_SUCCESS;
-       int i;
-       int count = 0;
--      unsigned long flags;
-       struct net_device *ndev;
--      LIST_HEAD(listHead);
--
-       ndev = net_device->ndev;
-       /*
-@@ -746,78 +680,14 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               return;
-       }
--      /*
--       * Grab free packets (range count + 1) to represent this xfer
--       * page packet. +1 to represent the xfer page packet itself.
--       * We grab it here so that we know exactly how many we can
--       * fulfil
--       */
--      spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--      while (!list_empty(&net_device->recv_pkt_list)) {
--              list_move_tail(net_device->recv_pkt_list.next, &listHead);
--              if (++count == vmxferpage_packet->range_cnt + 1)
--                      break;
--      }
--      spin_unlock_irqrestore(&net_device->recv_pkt_list_lock, flags);
--
--      /*
--       * We need at least 2 netvsc pkts (1 to represent the xfer
--       * page and at least 1 for the range) i.e. we can handled
--       * some of the xfer page packet ranges...
--       */
--      if (count < 2) {
--              netdev_err(ndev, "Got only %d netvsc pkt...needed "
--                      "%d pkts. Dropping this xfer page packet completely!\n",
--                      count, vmxferpage_packet->range_cnt + 1);
--
--              /* Return it to the freelist */
--              spin_lock_irqsave(&net_device->recv_pkt_list_lock, flags);
--              for (i = count; i != 0; i--) {
--                      list_move_tail(listHead.next,
--                                     &net_device->recv_pkt_list);
--              }
--              spin_unlock_irqrestore(&net_device->recv_pkt_list_lock,
--                                     flags);
--
--              netvsc_send_recv_completion(device, channel, net_device,
--                                          vmxferpage_packet->d.trans_id,
--                                          NVSP_STAT_FAIL);
--
--              return;
--      }
--
--      /* Remove the 1st packet to represent the xfer page packet itself */
--      xferpage_packet = (struct xferpage_packet *)listHead.next;
--      list_del(&xferpage_packet->list_ent);
--      xferpage_packet->status = NVSP_STAT_SUCCESS;
--      xferpage_packet->channel = channel;
--
--      /* This is how much we can satisfy */
--      xferpage_packet->count = count - 1;
--
--      if (xferpage_packet->count != vmxferpage_packet->range_cnt) {
--              netdev_err(ndev, "Needed %d netvsc pkts to satisfy "
--                      "this xfer page...got %d\n",
--                      vmxferpage_packet->range_cnt, xferpage_packet->count);
--      }
-+      count = vmxferpage_packet->range_cnt;
-+      netvsc_packet->device = device;
-+      netvsc_packet->channel = channel;
-       /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */
--      for (i = 0; i < (count - 1); i++) {
--              netvsc_packet = (struct hv_netvsc_packet *)listHead.next;
--              list_del(&netvsc_packet->list_ent);
--
-+      for (i = 0; i < count; i++) {
-               /* Initialize the netvsc packet */
-               netvsc_packet->status = NVSP_STAT_SUCCESS;
--              netvsc_packet->xfer_page_pkt = xferpage_packet;
--              netvsc_packet->completion.recv.recv_completion =
--                                      netvsc_receive_completion;
--              netvsc_packet->completion.recv.recv_completion_ctx =
--                                      netvsc_packet;
--              netvsc_packet->device = device;
--              /* Save this so that we can send it back */
--              netvsc_packet->completion.recv.recv_completion_tid =
--                                      vmxferpage_packet->d.trans_id;
--
-               netvsc_packet->data = (void *)((unsigned long)net_device->
-                       recv_buf + vmxferpage_packet->ranges[i].byte_offset);
-               netvsc_packet->total_data_buflen =
-@@ -826,10 +696,12 @@ static void netvsc_receive(struct netvsc_device *net_device,
-               /* Pass it to the upper layer */
-               rndis_filter_receive(device, netvsc_packet);
--              netvsc_receive_completion(netvsc_packet->
--                              completion.recv.recv_completion_ctx);
-+              if (netvsc_packet->status != NVSP_STAT_SUCCESS)
-+                      status = NVSP_STAT_FAIL;
-       }
-+      netvsc_send_recv_completion(device, channel, net_device,
-+                                  vmxferpage_packet->d.trans_id, status);
- }
-@@ -956,11 +828,9 @@ void netvsc_channel_cb(void *context)
- int netvsc_device_add(struct hv_device *device, void *additional_info)
- {
-       int ret = 0;
--      int i;
-       int ring_size =
-       ((struct netvsc_device_info *)additional_info)->ring_size;
-       struct netvsc_device *net_device;
--      struct hv_netvsc_packet *packet, *pos;
-       struct net_device *ndev;
-       net_device = alloc_net_device(device);
-@@ -981,18 +851,6 @@ int netvsc_device_add(struct hv_device *device, void *additional_info)
-       ndev = net_device->ndev;
-       /* Initialize the NetVSC channel extension */
--      spin_lock_init(&net_device->recv_pkt_list_lock);
--
--      INIT_LIST_HEAD(&net_device->recv_pkt_list);
--
--      for (i = 0; i < NETVSC_RECEIVE_PACKETLIST_COUNT; i++) {
--              packet = kzalloc(sizeof(struct hv_netvsc_packet), GFP_KERNEL);
--              if (!packet)
--                      break;
--
--              list_add_tail(&packet->list_ent,
--                            &net_device->recv_pkt_list);
--      }
-       init_completion(&net_device->channel_init_wait);
-       set_per_channel_state(device->channel, net_device->cb_buffer);
-@@ -1028,16 +886,8 @@ close:
- cleanup:
--      if (net_device) {
--              list_for_each_entry_safe(packet, pos,
--                                       &net_device->recv_pkt_list,
--                                       list_ent) {
--                      list_del(&packet->list_ent);
--                      kfree(packet);
--              }
--
-+      if (net_device)
-               kfree(net_device);
--      }
-       return ret;
- }
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index e486dbd33f61..6cc4db064fec 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -643,7 +643,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-               __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-                                      packet->vlan_tci);
--      skb_record_rx_queue(skb, packet->xfer_page_pkt->channel->
-+      skb_record_rx_queue(skb, packet->channel->
-                           offermsg.offer.sub_channel_index %
-                           net->real_num_rx_queues);
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index d92cfbe43410..48f5a0fbd674 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -401,8 +401,6 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
-       pkt->total_data_buflen = rndis_pkt->data_len;
-       pkt->data = (void *)((unsigned long)pkt->data + data_offset);
--      pkt->is_data_pkt = true;
--
-       vlan = rndis_get_ppi(rndis_pkt, IEEE_8021Q_INFO);
-       if (vlan) {
-               pkt->vlan_tci = VLAN_TAG_PRESENT | vlan->vlanid |
--- 
-2.4.3
-
diff --git a/src/patches/linux/0018-hyperv-Simplify-the-send_completion-variables.patch b/src/patches/linux/0018-hyperv-Simplify-the-send_completion-variables.patch
deleted file mode 100644 (file)
index 82b742b..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-From d6eeeb452c1e6e7cf14f4a581a8f2ea2c50ec17a Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Mon, 21 Apr 2014 14:54:44 -0700
-Subject: [PATCH 18/25] hyperv: Simplify the send_completion variables
-
-The union contains only one member now, so we use the variables in it directly.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h   | 10 +++-------
- drivers/net/hyperv/netvsc.c       |  7 +++----
- drivers/net/hyperv/netvsc_drv.c   |  8 ++++----
- drivers/net/hyperv/rndis_filter.c |  2 +-
- 4 files changed, 11 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index a1af0f7711e2..d1f7826aa75f 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -136,13 +136,9 @@ struct hv_netvsc_packet {
-       u16 q_idx;
-       struct vmbus_channel *channel;
--      union {
--              struct {
--                      u64 send_completion_tid;
--                      void *send_completion_ctx;
--                      void (*send_completion)(void *context);
--              } send;
--      } completion;
-+      u64 send_completion_tid;
-+      void *send_completion_ctx;
-+      void (*send_completion)(void *context);
-       /* This points to the memory after page_buf */
-       struct rndis_message *rndis_msg;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index b10334773b32..bbee44635035 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -479,9 +479,8 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-               if (nvsc_packet) {
-                       q_idx = nvsc_packet->q_idx;
-                       channel = nvsc_packet->channel;
--                      nvsc_packet->completion.send.send_completion(
--                              nvsc_packet->completion.send.
--                              send_completion_ctx);
-+                      nvsc_packet->send_completion(nvsc_packet->
-+                                                   send_completion_ctx);
-               }
-               num_outstanding_sends =
-@@ -534,7 +533,7 @@ int netvsc_send(struct hv_device *device,
-               0xFFFFFFFF;
-       sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
--      if (packet->completion.send.send_completion)
-+      if (packet->send_completion)
-               req_id = (ulong)packet;
-       else
-               req_id = 0;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 6cc4db064fec..f3d3525ed42d 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -235,7 +235,7 @@ static void netvsc_xmit_completion(void *context)
- {
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-       struct sk_buff *skb = (struct sk_buff *)
--              (unsigned long)packet->completion.send.send_completion_tid;
-+              (unsigned long)packet->send_completion_tid;
-       kfree(packet);
-@@ -426,9 +426,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-                               (num_data_pgs * sizeof(struct hv_page_buffer)));
-       /* Set the completion routine */
--      packet->completion.send.send_completion = netvsc_xmit_completion;
--      packet->completion.send.send_completion_ctx = packet;
--      packet->completion.send.send_completion_tid = (unsigned long)skb;
-+      packet->send_completion = netvsc_xmit_completion;
-+      packet->send_completion_ctx = packet;
-+      packet->send_completion_tid = (unsigned long)skb;
-       isvlan = packet->vlan_tci & VLAN_TAG_PRESENT;
-diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 48f5a0fbd674..99c527adae5b 100644
---- a/drivers/net/hyperv/rndis_filter.c
-+++ b/drivers/net/hyperv/rndis_filter.c
-@@ -236,7 +236,7 @@ static int rndis_filter_send_request(struct rndis_device *dev,
-                       packet->page_buf[0].len;
-       }
--      packet->completion.send.send_completion = NULL;
-+      packet->send_completion = NULL;
-       ret = netvsc_send(dev->net_dev->dev, packet);
-       return ret;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0019-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch b/src/patches/linux/0019-hyperv-Enable-sendbuf-mechanism-on-the-send-path.patch
deleted file mode 100644 (file)
index 3940865..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-From 4685e50349d5dc5fe485c898ca3ce539e93a0118 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Wed, 30 Apr 2014 10:14:31 -0700
-Subject: [PATCH 19/25] hyperv: Enable sendbuf mechanism on the send path
-
-We send packets using a copy-free mechanism (this is the Guest to Host transport
-via VMBUS). While this is obviously optimal for large packets,
-it may not be optimal for small packets. Hyper-V host supports
-a second mechanism for sending packets that is "copy based". We implement that
-mechanism in this patch.
-
-In this version of the patch I have addressed a comment from David Miller.
-
-With this patch (and all of the other offload and VRSS patches), we are now able
-to almost saturate a 10G interface between Linux VMs on Hyper-V
-on different hosts - close to  9 Gbps as measured via iperf.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h |  14 +++
- drivers/net/hyperv/netvsc.c     | 226 ++++++++++++++++++++++++++++++++++++++--
- drivers/net/hyperv/netvsc_drv.c |   3 +-
- 3 files changed, 234 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d1f7826aa75f..4b7df5a5c966 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -140,6 +140,8 @@ struct hv_netvsc_packet {
-       void *send_completion_ctx;
-       void (*send_completion)(void *context);
-+      u32 send_buf_index;
-+
-       /* This points to the memory after page_buf */
-       struct rndis_message *rndis_msg;
-@@ -582,6 +584,9 @@ struct nvsp_message {
- #define NETVSC_RECEIVE_BUFFER_SIZE            (1024*1024*16)  /* 16MB */
- #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY     (1024*1024*15)  /* 15MB */
-+#define NETVSC_SEND_BUFFER_SIZE                       (1024 * 1024)   /* 1MB */
-+#define NETVSC_INVALID_INDEX                  -1
-+
- #define NETVSC_RECEIVE_BUFFER_ID              0xcafe
-@@ -607,6 +612,15 @@ struct netvsc_device {
-       u32 recv_section_cnt;
-       struct nvsp_1_receive_buffer_section *recv_section;
-+      /* Send buffer allocated by us */
-+      void *send_buf;
-+      u32 send_buf_size;
-+      u32 send_buf_gpadl_handle;
-+      u32 send_section_cnt;
-+      u32 send_section_size;
-+      unsigned long *send_section_map;
-+      int map_words;
-+
-       /* Used for NetVSP initialization protocol */
-       struct completion channel_init_wait;
-       struct nvsp_message channel_init_pkt;
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index bbee44635035..c041f63a6d30 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -28,6 +28,7 @@
- #include <linux/slab.h>
- #include <linux/netdevice.h>
- #include <linux/if_ether.h>
-+#include <asm/sync_bitops.h>
- #include "hyperv_net.h"
-@@ -80,7 +81,7 @@ get_in_err:
- }
--static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-+static int netvsc_destroy_buf(struct netvsc_device *net_device)
- {
-       struct nvsp_message *revoke_packet;
-       int ret = 0;
-@@ -146,10 +147,62 @@ static int netvsc_destroy_recv_buf(struct netvsc_device *net_device)
-               net_device->recv_section = NULL;
-       }
-+      /* Deal with the send buffer we may have setup.
-+       * If we got a  send section size, it means we received a
-+       * SendsendBufferComplete msg (ie sent
-+       * NvspMessage1TypeSendReceiveBuffer msg) therefore, we need
-+       * to send a revoke msg here
-+       */
-+      if (net_device->send_section_size) {
-+              /* Send the revoke receive buffer */
-+              revoke_packet = &net_device->revoke_packet;
-+              memset(revoke_packet, 0, sizeof(struct nvsp_message));
-+
-+              revoke_packet->hdr.msg_type =
-+                      NVSP_MSG1_TYPE_REVOKE_SEND_BUF;
-+              revoke_packet->msg.v1_msg.revoke_recv_buf.id = 0;
-+
-+              ret = vmbus_sendpacket(net_device->dev->channel,
-+                                     revoke_packet,
-+                                     sizeof(struct nvsp_message),
-+                                     (unsigned long)revoke_packet,
-+                                     VM_PKT_DATA_INBAND, 0);
-+              /* If we failed here, we might as well return and
-+               * have a leak rather than continue and a bugchk
-+               */
-+              if (ret != 0) {
-+                      netdev_err(ndev, "unable to send "
-+                                 "revoke send buffer to netvsp\n");
-+                      return ret;
-+              }
-+      }
-+      /* Teardown the gpadl on the vsp end */
-+      if (net_device->send_buf_gpadl_handle) {
-+              ret = vmbus_teardown_gpadl(net_device->dev->channel,
-+                                         net_device->send_buf_gpadl_handle);
-+
-+              /* If we failed here, we might as well return and have a leak
-+               * rather than continue and a bugchk
-+               */
-+              if (ret != 0) {
-+                      netdev_err(ndev,
-+                                 "unable to teardown send buffer's gpadl\n");
-+                      return ret;
-+              }
-+              net_device->recv_buf_gpadl_handle = 0;
-+      }
-+      if (net_device->send_buf) {
-+              /* Free up the receive buffer */
-+              free_pages((unsigned long)net_device->send_buf,
-+                         get_order(net_device->send_buf_size));
-+              net_device->send_buf = NULL;
-+      }
-+      kfree(net_device->send_section_map);
-+
-       return ret;
- }
--static int netvsc_init_recv_buf(struct hv_device *device)
-+static int netvsc_init_buf(struct hv_device *device)
- {
-       int ret = 0;
-       int t;
-@@ -248,10 +301,90 @@ static int netvsc_init_recv_buf(struct hv_device *device)
-               goto cleanup;
-       }
-+      /* Now setup the send buffer.
-+       */
-+      net_device->send_buf =
-+              (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO,
-+                                       get_order(net_device->send_buf_size));
-+      if (!net_device->send_buf) {
-+              netdev_err(ndev, "unable to allocate send "
-+                         "buffer of size %d\n", net_device->send_buf_size);
-+              ret = -ENOMEM;
-+              goto cleanup;
-+      }
-+
-+      /* Establish the gpadl handle for this buffer on this
-+       * channel.  Note: This call uses the vmbus connection rather
-+       * than the channel to establish the gpadl handle.
-+       */
-+      ret = vmbus_establish_gpadl(device->channel, net_device->send_buf,
-+                                  net_device->send_buf_size,
-+                                  &net_device->send_buf_gpadl_handle);
-+      if (ret != 0) {
-+              netdev_err(ndev,
-+                         "unable to establish send buffer's gpadl\n");
-+              goto cleanup;
-+      }
-+
-+      /* Notify the NetVsp of the gpadl handle */
-+      init_packet = &net_device->channel_init_pkt;
-+      memset(init_packet, 0, sizeof(struct nvsp_message));
-+      init_packet->hdr.msg_type = NVSP_MSG1_TYPE_SEND_SEND_BUF;
-+      init_packet->msg.v1_msg.send_recv_buf.gpadl_handle =
-+              net_device->send_buf_gpadl_handle;
-+      init_packet->msg.v1_msg.send_recv_buf.id = 0;
-+
-+      /* Send the gpadl notification request */
-+      ret = vmbus_sendpacket(device->channel, init_packet,
-+                             sizeof(struct nvsp_message),
-+                             (unsigned long)init_packet,
-+                             VM_PKT_DATA_INBAND,
-+                             VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
-+      if (ret != 0) {
-+              netdev_err(ndev,
-+                         "unable to send send buffer's gpadl to netvsp\n");
-+              goto cleanup;
-+      }
-+
-+      t = wait_for_completion_timeout(&net_device->channel_init_wait, 5*HZ);
-+      BUG_ON(t == 0);
-+
-+      /* Check the response */
-+      if (init_packet->msg.v1_msg.
-+          send_send_buf_complete.status != NVSP_STAT_SUCCESS) {
-+              netdev_err(ndev, "Unable to complete send buffer "
-+                         "initialization with NetVsp - status %d\n",
-+                         init_packet->msg.v1_msg.
-+                         send_recv_buf_complete.status);
-+              ret = -EINVAL;
-+              goto cleanup;
-+      }
-+
-+      /* Parse the response */
-+      net_device->send_section_size = init_packet->msg.
-+                              v1_msg.send_send_buf_complete.section_size;
-+
-+      /* Section count is simply the size divided by the section size.
-+       */
-+      net_device->send_section_cnt =
-+              net_device->send_buf_size/net_device->send_section_size;
-+
-+      dev_info(&device->device, "Send section size: %d, Section count:%d\n",
-+               net_device->send_section_size, net_device->send_section_cnt);
-+
-+      /* Setup state for managing the send buffer. */
-+      net_device->map_words = DIV_ROUND_UP(net_device->send_section_cnt,
-+                                           BITS_PER_LONG);
-+
-+      net_device->send_section_map =
-+              kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
-+      if (net_device->send_section_map == NULL)
-+              goto cleanup;
-+
-       goto exit;
- cleanup:
--      netvsc_destroy_recv_buf(net_device);
-+      netvsc_destroy_buf(net_device);
- exit:
-       return ret;
-@@ -369,8 +502,9 @@ static int netvsc_connect_vsp(struct hv_device *device)
-               net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE_LEGACY;
-       else
-               net_device->recv_buf_size = NETVSC_RECEIVE_BUFFER_SIZE;
-+      net_device->send_buf_size = NETVSC_SEND_BUFFER_SIZE;
--      ret = netvsc_init_recv_buf(device);
-+      ret = netvsc_init_buf(device);
- cleanup:
-       return ret;
-@@ -378,7 +512,7 @@ cleanup:
- static void netvsc_disconnect_vsp(struct netvsc_device *net_device)
- {
--      netvsc_destroy_recv_buf(net_device);
-+      netvsc_destroy_buf(net_device);
- }
- /*
-@@ -440,6 +574,12 @@ static inline u32 hv_ringbuf_avail_percent(
-       return avail_write * 100 / ring_info->ring_datasize;
- }
-+static inline void netvsc_free_send_slot(struct netvsc_device *net_device,
-+                                       u32 index)
-+{
-+      sync_change_bit(index, net_device->send_section_map);
-+}
-+
- static void netvsc_send_completion(struct netvsc_device *net_device,
-                                  struct hv_device *device,
-                                  struct vmpacket_descriptor *packet)
-@@ -447,6 +587,7 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-       struct nvsp_message *nvsp_packet;
-       struct hv_netvsc_packet *nvsc_packet;
-       struct net_device *ndev;
-+      u32 send_index;
-       ndev = net_device->ndev;
-@@ -477,6 +618,9 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
-               /* Notify the layer above us */
-               if (nvsc_packet) {
-+                      send_index = nvsc_packet->send_buf_index;
-+                      if (send_index != NETVSC_INVALID_INDEX)
-+                              netvsc_free_send_slot(net_device, send_index);
-                       q_idx = nvsc_packet->q_idx;
-                       channel = nvsc_packet->channel;
-                       nvsc_packet->send_completion(nvsc_packet->
-@@ -504,6 +648,52 @@ static void netvsc_send_completion(struct netvsc_device *net_device,
- }
-+static u32 netvsc_get_next_send_section(struct netvsc_device *net_device)
-+{
-+      unsigned long index;
-+      u32 max_words = net_device->map_words;
-+      unsigned long *map_addr = (unsigned long *)net_device->send_section_map;
-+      u32 section_cnt = net_device->send_section_cnt;
-+      int ret_val = NETVSC_INVALID_INDEX;
-+      int i;
-+      int prev_val;
-+
-+      for (i = 0; i < max_words; i++) {
-+              if (!~(map_addr[i]))
-+                      continue;
-+              index = ffz(map_addr[i]);
-+              prev_val = sync_test_and_set_bit(index, &map_addr[i]);
-+              if (prev_val)
-+                      continue;
-+              if ((index + (i * BITS_PER_LONG)) >= section_cnt)
-+                      break;
-+              ret_val = (index + (i * BITS_PER_LONG));
-+              break;
-+      }
-+      return ret_val;
-+}
-+
-+u32 netvsc_copy_to_send_buf(struct netvsc_device *net_device,
-+                          unsigned int section_index,
-+                          struct hv_netvsc_packet *packet)
-+{
-+      char *start = net_device->send_buf;
-+      char *dest = (start + (section_index * net_device->send_section_size));
-+      int i;
-+      u32 msg_size = 0;
-+
-+      for (i = 0; i < packet->page_buf_cnt; i++) {
-+              char *src = phys_to_virt(packet->page_buf[i].pfn << PAGE_SHIFT);
-+              u32 offset = packet->page_buf[i].offset;
-+              u32 len = packet->page_buf[i].len;
-+
-+              memcpy(dest, (src + offset), len);
-+              msg_size += len;
-+              dest += len;
-+      }
-+      return msg_size;
-+}
-+
- int netvsc_send(struct hv_device *device,
-                       struct hv_netvsc_packet *packet)
- {
-@@ -513,6 +703,10 @@ int netvsc_send(struct hv_device *device,
-       struct net_device *ndev;
-       struct vmbus_channel *out_channel = NULL;
-       u64 req_id;
-+      unsigned int section_index = NETVSC_INVALID_INDEX;
-+      u32 msg_size = 0;
-+      struct sk_buff *skb;
-+
-       net_device = get_outbound_net_device(device);
-       if (!net_device)
-@@ -528,10 +722,26 @@ int netvsc_send(struct hv_device *device,
-               sendMessage.msg.v1_msg.send_rndis_pkt.channel_type = 1;
-       }
--      /* Not using send buffer section */
-+      /* Attempt to send via sendbuf */
-+      if (packet->total_data_buflen < net_device->send_section_size) {
-+              section_index = netvsc_get_next_send_section(net_device);
-+              if (section_index != NETVSC_INVALID_INDEX) {
-+                      msg_size = netvsc_copy_to_send_buf(net_device,
-+                                                         section_index,
-+                                                         packet);
-+                      skb = (struct sk_buff *)
-+                            (unsigned long)packet->send_completion_tid;
-+                      if (skb)
-+                              dev_kfree_skb_any(skb);
-+                      packet->page_buf_cnt = 0;
-+              }
-+      }
-+      packet->send_buf_index = section_index;
-+
-+
-       sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_index =
--              0xFFFFFFFF;
--      sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = 0;
-+              section_index;
-+      sendMessage.msg.v1_msg.send_rndis_pkt.send_buf_section_size = msg_size;
-       if (packet->send_completion)
-               req_id = (ulong)packet;
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index f3d3525ed42d..9a19aa5672e6 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -236,10 +236,11 @@ static void netvsc_xmit_completion(void *context)
-       struct hv_netvsc_packet *packet = (struct hv_netvsc_packet *)context;
-       struct sk_buff *skb = (struct sk_buff *)
-               (unsigned long)packet->send_completion_tid;
-+      u32 index = packet->send_buf_index;
-       kfree(packet);
--      if (skb)
-+      if (skb && (index == NETVSC_INVALID_INDEX))
-               dev_kfree_skb_any(skb);
- }
--- 
-2.4.3
-
diff --git a/src/patches/linux/0020-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch b/src/patches/linux/0020-Add-support-for-netvsc-build-without-CONFIG_SYSFS-fl.patch
deleted file mode 100644 (file)
index b610b54..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From 3f0b77385356301cf4718a94f76a4068588ecb8e Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Thu, 8 May 2014 15:14:10 -0700
-Subject: [PATCH 20/25] Add support for netvsc build without CONFIG_SYSFS flag
-
-This change ensures the driver can be built successfully without the
-CONFIG_SYSFS flag.
-MS-TFS: 182270
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc_drv.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 9a19aa5672e6..346f1aeb9c24 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -645,8 +645,7 @@ int netvsc_recv_callback(struct hv_device *device_obj,
-                                      packet->vlan_tci);
-       skb_record_rx_queue(skb, packet->channel->
--                          offermsg.offer.sub_channel_index %
--                          net->real_num_rx_queues);
-+                          offermsg.offer.sub_channel_index);
-       net->stats.rx_packets++;
-       net->stats.rx_bytes += packet->total_data_buflen;
-@@ -829,8 +828,6 @@ static int netvsc_probe(struct hv_device *dev,
-       nvdev = hv_get_drvdata(dev);
-       netif_set_real_num_tx_queues(net, nvdev->num_chn);
-       netif_set_real_num_rx_queues(net, nvdev->num_chn);
--      dev_info(&dev->device, "real num tx,rx queues:%u, %u\n",
--               net->real_num_tx_queues, net->real_num_rx_queues);
-       ret = register_netdev(net);
-       if (ret != 0) {
--- 
-2.4.3
-
diff --git a/src/patches/linux/0021-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch b/src/patches/linux/0021-hyperv-Add-hash-value-into-RNDIS-Per-packet-info.patch
deleted file mode 100644 (file)
index c522d28..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-From 1267d9b235e7612f8cdfa842a0433bb82e75f7fb Mon Sep 17 00:00:00 2001
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 21 May 2014 12:55:39 -0700
-Subject: [PATCH 21/25] hyperv: Add hash value into RNDIS Per-packet info
-
-It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
-so that the send completion notices can be spread across multiple channels.
-MS-TFS: 140273
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/hyperv_net.h |  4 ++++
- drivers/net/hyperv/netvsc_drv.c | 18 ++++++++++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index 4b7df5a5c966..6cc37c15e0bf 100644
---- a/drivers/net/hyperv/hyperv_net.h
-+++ b/drivers/net/hyperv/hyperv_net.h
-@@ -791,6 +791,7 @@ enum ndis_per_pkt_info_type {
-       IEEE_8021Q_INFO,
-       ORIGINAL_PKTINFO,
-       PACKET_CANCEL_ID,
-+      NBL_HASH_VALUE = PACKET_CANCEL_ID,
-       ORIGINAL_NET_BUFLIST,
-       CACHED_NET_BUFLIST,
-       SHORT_PKT_PADINFO,
-@@ -937,6 +938,9 @@ struct ndis_tcp_lso_info {
- #define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-               sizeof(struct ndis_tcp_lso_info))
-+#define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
-+              sizeof(u32))
-+
- /* Format of Information buffer passed in a SetRequest for the OID */
- /* OID_GEN_RNDIS_CONFIG_PARAMETER. */
- struct rndis_config_parameter_info {
-diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
-index 346f1aeb9c24..bd3b3acd04dc 100644
---- a/drivers/net/hyperv/netvsc_drv.c
-+++ b/drivers/net/hyperv/netvsc_drv.c
-@@ -224,9 +224,11 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
-       if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
-               return 0;
--      if (netvsc_set_hash(&hash, skb))
-+      if (netvsc_set_hash(&hash, skb)) {
-               q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
-                       ndev->real_num_tx_queues;
-+              skb_set_hash(skb, hash, PKT_HASH_TYPE_L3);
-+      }
-       return q_idx;
- }
-@@ -385,6 +387,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       struct ndis_tcp_lso_info *lso_info;
-       int  hdr_offset;
-       u32 net_trans_info;
-+      u32 hash;
-       /* We will atmost need two pages to describe the rndis
-@@ -403,9 +406,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       packet = kzalloc(sizeof(struct hv_netvsc_packet) +
-                        (num_data_pgs * sizeof(struct hv_page_buffer)) +
-                        sizeof(struct rndis_message) +
--                       NDIS_VLAN_PPI_SIZE +
--                       NDIS_CSUM_PPI_SIZE +
--                       NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
-+                       NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
-+                       NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE, GFP_ATOMIC);
-       if (!packet) {
-               /* out of memory, drop packet */
-               netdev_err(net, "unable to allocate hv_netvsc_packet\n");
-@@ -444,6 +446,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
-       rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
-+      hash = skb_get_hash_raw(skb);
-+      if (hash != 0 && net->real_num_tx_queues > 1) {
-+              rndis_msg_size += NDIS_HASH_PPI_SIZE;
-+              ppi = init_ppi_data(rndis_msg, NDIS_HASH_PPI_SIZE,
-+                                  NBL_HASH_VALUE);
-+              *(u32 *)((void *)ppi + ppi->ppi_offset) = hash;
-+      }
-+
-       if (isvlan) {
-               struct ndis_pkt_8021q_info *vlan;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0022-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch b/src/patches/linux/0022-hyperv-fix-apparent-cut-n-paste-error-in-send-path-t.patch
deleted file mode 100644 (file)
index d849ebb..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From ee99150c7f34737e4382e7199d2ffe3dfbb54a5c Mon Sep 17 00:00:00 2001
-From: Dave Jones <davej@redhat.com>
-Date: Mon, 16 Jun 2014 16:59:02 -0400
-Subject: [PATCH 22/25] hyperv: fix apparent cut-n-paste error in send path
- teardown
-
-c25aaf814a63: "hyperv: Enable sendbuf mechanism on the send path" added
-some teardown code that looks like it was copied from the recieve path
-above, but missed a variable name replacement.
-
-Signed-off-by: Dave Jones <davej@redhat.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index c041f63a6d30..4ed38eaecea8 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -189,7 +189,7 @@ static int netvsc_destroy_buf(struct netvsc_device *net_device)
-                                  "unable to teardown send buffer's gpadl\n");
-                       return ret;
-               }
--              net_device->recv_buf_gpadl_handle = 0;
-+              net_device->send_buf_gpadl_handle = 0;
-       }
-       if (net_device->send_buf) {
-               /* Free up the receive buffer */
--- 
-2.4.3
-
diff --git a/src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch b/src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch
deleted file mode 100644 (file)
index ab0960d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From f1009dfec7c439a958bd9ed8893dd6aa692c61f5 Mon Sep 17 00:00:00 2001
-From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Date: Wed, 23 Jul 2014 09:00:35 +0800
-Subject: [PATCH 23/25] hyperv: Fix error return code in netvsc_init_buf()
-
-Fix to return -ENOMEM from the kalloc error handling
-case instead of 0.
-
-Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
-Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/hyperv/netvsc.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index 4ed38eaecea8..d97d5f39a04e 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -378,8 +378,10 @@ static int netvsc_init_buf(struct hv_device *device)
-       net_device->send_section_map =
-               kzalloc(net_device->map_words * sizeof(ulong), GFP_KERNEL);
--      if (net_device->send_section_map == NULL)
-+      if (net_device->send_section_map == NULL) {
-+              ret = -ENOMEM;
-               goto cleanup;
-+      }
-       goto exit;
--- 
-2.4.3
-
diff --git a/src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch b/src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch
deleted file mode 100644 (file)
index 8495fa2..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-From 38bca2d5bd6fdaa0b8e1e415f79d89322c6825a8 Mon Sep 17 00:00:00 2001
-From: KY Srinivasan <kys@microsoft.com>
-Date: Sun, 5 Oct 2014 10:42:51 -0700
-Subject: [PATCH 24/25] hyperv: Fix a bug in netvsc_send()
-
-[ Upstream commit 3a67c9ccad926a168d8b7891537a452018368a5b ]
-
-After the packet is successfully sent, we should not touch the packet
-as it may have been freed. This patch is based on the work done by
-Long Li <longli@microsoft.com>.
-
-David, please queue this up for stable.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/hyperv/netvsc.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
-index d97d5f39a04e..7edf976ecfa0 100644
---- a/drivers/net/hyperv/netvsc.c
-+++ b/drivers/net/hyperv/netvsc.c
-@@ -708,6 +708,7 @@ int netvsc_send(struct hv_device *device,
-       unsigned int section_index = NETVSC_INVALID_INDEX;
-       u32 msg_size = 0;
-       struct sk_buff *skb;
-+      u16 q_idx = packet->q_idx;
-       net_device = get_outbound_net_device(device);
-@@ -772,24 +773,24 @@ int netvsc_send(struct hv_device *device,
-       if (ret == 0) {
-               atomic_inc(&net_device->num_outstanding_sends);
--              atomic_inc(&net_device->queue_sends[packet->q_idx]);
-+              atomic_inc(&net_device->queue_sends[q_idx]);
-               if (hv_ringbuf_avail_percent(&out_channel->outbound) <
-                       RING_AVAIL_PERCENT_LOWATER) {
-                       netif_tx_stop_queue(netdev_get_tx_queue(
--                                          ndev, packet->q_idx));
-+                                          ndev, q_idx));
-                       if (atomic_read(&net_device->
--                              queue_sends[packet->q_idx]) < 1)
-+                              queue_sends[q_idx]) < 1)
-                               netif_tx_wake_queue(netdev_get_tx_queue(
--                                                  ndev, packet->q_idx));
-+                                                  ndev, q_idx));
-               }
-       } else if (ret == -EAGAIN) {
-               netif_tx_stop_queue(netdev_get_tx_queue(
--                                  ndev, packet->q_idx));
--              if (atomic_read(&net_device->queue_sends[packet->q_idx]) < 1) {
-+                                  ndev, q_idx));
-+              if (atomic_read(&net_device->queue_sends[q_idx]) < 1) {
-                       netif_tx_wake_queue(netdev_get_tx_queue(
--                                          ndev, packet->q_idx));
-+                                          ndev, q_idx));
-                       ret = -ENOSPC;
-               }
-       } else {
--- 
-2.4.3
-
diff --git a/src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch b/src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch
deleted file mode 100644 (file)
index 47037be..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 4b71288758aa1d510402b84ca93b1ef566575d22 Mon Sep 17 00:00:00 2001
-From: "K. Y. Srinivasan" <kys@microsoft.com>
-Date: Mon, 3 Feb 2014 12:42:45 -0800
-Subject: [PATCH 25/25] Drivers: hv: vmbus: Support per-channel driver state
-
-As we implement Virtual Receive Side Scaling on the networking side
-(the VRSS patches are currently under review), it will be useful to have
-per-channel state that vmbus drivers can manage. Add support for
-managing per-channel state.
-
-Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- include/linux/hyperv.h | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
-index 6088058a3e00..732dc7e37e96 100644
---- a/include/linux/hyperv.h
-+++ b/include/linux/hyperv.h
-@@ -1045,6 +1045,10 @@ struct vmbus_channel {
-        * This will be NULL for the primary channel.
-        */
-       struct vmbus_channel *primary_channel;
-+      /*
-+       * Support per-channel state for use by vmbus drivers.
-+       */
-+      void *per_channel_state;
- };
- static inline void set_channel_read_state(struct vmbus_channel *c, bool state)
-@@ -1052,6 +1056,16 @@ static inline void set_channel_read_state(struct vmbus_channel *c, bool state)
-       c->batched_reading = state;
- }
-+static inline void set_per_channel_state(struct vmbus_channel *c, void *s)
-+{
-+      c->per_channel_state = s;
-+}
-+
-+static inline void *get_per_channel_state(struct vmbus_channel *c)
-+{
-+      return c->per_channel_state;
-+}
-+
- void vmbus_onmessage(void *context);
- int vmbus_request_offers(void);
--- 
-2.4.3
-
diff --git a/src/patches/linux/0100-crypto-aesni-Add-support-for-192-256-bit-keys-to-AES.patch b/src/patches/linux/0100-crypto-aesni-Add-support-for-192-256-bit-keys-to-AES.patch
deleted file mode 100644 (file)
index 51b4394..0000000
+++ /dev/null
@@ -1,689 +0,0 @@
-From bcdbd313c0e6fd630a8945fd58dc5383631dc6dd Mon Sep 17 00:00:00 2001
-From: Timothy McCaffrey <timothy.mccaffrey@unisys.com>
-Date: Tue, 13 Jan 2015 13:16:43 -0500
-Subject: [PATCH] crypto: aesni - Add support for 192 & 256 bit keys to AESNI
- RFC4106
-
-These patches fix the RFC4106 implementation in the aesni-intel
-module so it supports 192 & 256 bit keys.
-
-Since the AVX support that was added to this module also only
-supports 128 bit keys, and this patch only affects the SSE
-implementation, changes were also made to use the SSE version
-if key sizes other than 128 are specified.
-
-RFC4106 specifies that 192 & 256 bit keys must be supported (section
-8.4).
-
-Also, this should fix Strongswan issue 341 where the aesni module
-needs to be unloaded if 256 bit keys are used:
-
-http://wiki.strongswan.org/issues/341
-
-This patch has been tested with Sandy Bridge and Haswell processors.
-With 128 bit keys and input buffers > 512 bytes a slight performance
-degradation was noticed (~1%).  For input buffers of less than 512
-bytes there was no performance impact.  Compared to 128 bit keys,
-256 bit key size performance is approx. .5 cycles per byte slower
-on Sandy Bridge, and .37 cycles per byte slower on Haswell (vs.
-SSE code).
-
-This patch has also been tested with StrongSwan IPSec connections
-where it worked correctly.
-
-I created this diff from a git clone of crypto-2.6.git.
-
-Any questions, please feel free to contact me.
-
-Signed-off-by: Timothy McCaffrey <timothy.mccaffrey@unisys.com>
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
----
- arch/x86/crypto/aesni-intel_asm.S  | 342 +++++++++++++++++++------------------
- arch/x86/crypto/aesni-intel_glue.c |  31 +++-
- 2 files changed, 202 insertions(+), 171 deletions(-)
-
-diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
-index c92c7d8..f5cdfbf 100644
---- a/arch/x86/crypto/aesni-intel_asm.S
-+++ b/arch/x86/crypto/aesni-intel_asm.S
-@@ -33,12 +33,23 @@
- #include <asm/inst.h>
- #include <asm/alternative-asm.h>
-+/*
-+ * The following macros are used to move an (un)aligned 16 byte value to/from
-+ * an XMM register.  This can done for either FP or integer values, for FP use
-+ * movaps (move aligned packed single) or integer use movdqa (move double quad
-+ * aligned).  It doesn't make a performance difference which instruction is used
-+ * since Nehalem (original Core i7) was released.  However, the movaps is a byte
-+ * shorter, so that is the one we'll use for now. (same for unaligned).
-+ */
-+#define MOVADQ        movaps
-+#define MOVUDQ        movups
-+
- #ifdef __x86_64__
-+
- .data
- .align 16
- .Lgf128mul_x_ble_mask:
-       .octa 0x00000000000000010000000000000087
--
- POLY:   .octa 0xC2000000000000000000000000000001
- TWOONE: .octa 0x00000001000000000000000000000001
-@@ -90,6 +101,7 @@ enc:        .octa 0x2
- #define arg8 STACK_OFFSET+16(%r14)
- #define arg9 STACK_OFFSET+24(%r14)
- #define arg10 STACK_OFFSET+32(%r14)
-+#define keysize 2*15*16(%arg1)
- #endif
-@@ -214,10 +226,12 @@ enc:        .octa 0x2
- .macro INITIAL_BLOCKS_DEC num_initial_blocks TMP1 TMP2 TMP3 TMP4 TMP5 XMM0 XMM1 \
- XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
-+        MOVADQ     SHUF_MASK(%rip), %xmm14
-       mov        arg7, %r10           # %r10 = AAD
-       mov        arg8, %r15           # %r15 = aadLen
-       mov        %r15, %r11
-       pxor       %xmm\i, %xmm\i
-+
- _get_AAD_loop\num_initial_blocks\operation:
-       movd       (%r10), \TMP1
-       pslldq     $12, \TMP1
-@@ -226,6 +240,7 @@ _get_AAD_loop\num_initial_blocks\operation:
-       add        $4, %r10
-       sub        $4, %r15
-       jne        _get_AAD_loop\num_initial_blocks\operation
-+
-       cmp        $16, %r11
-       je         _get_AAD_loop2_done\num_initial_blocks\operation
-       mov        $16, %r15
-@@ -234,8 +249,8 @@ _get_AAD_loop2\num_initial_blocks\operation:
-       sub        $4, %r15
-       cmp        %r11, %r15
-       jne        _get_AAD_loop2\num_initial_blocks\operation
-+
- _get_AAD_loop2_done\num_initial_blocks\operation:
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM   %xmm14, %xmm\i # byte-reflect the AAD data
-       xor        %r11, %r11 # initialise the data pointer offset as zero
-@@ -244,59 +259,34 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       mov        %arg5, %rax                      # %rax = *Y0
-       movdqu     (%rax), \XMM0                    # XMM0 = Y0
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM   %xmm14, \XMM0
- .if (\i == 5) || (\i == 6) || (\i == 7)
-+      MOVADQ          ONE(%RIP),\TMP1
-+      MOVADQ          (%arg1),\TMP2
- .irpc index, \i_seq
--      paddd      ONE(%rip), \XMM0                 # INCR Y0
-+      paddd      \TMP1, \XMM0                 # INCR Y0
-       movdqa     \XMM0, %xmm\index
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM   %xmm14, %xmm\index      # perform a 16 byte swap
--
--.endr
--.irpc index, \i_seq
--      pxor       16*0(%arg1), %xmm\index
--.endr
--.irpc index, \i_seq
--      movaps 0x10(%rdi), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 1
--.endr
--.irpc index, \i_seq
--      movaps 0x20(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
-+      pxor       \TMP2, %xmm\index
- .endr
--.irpc index, \i_seq
--      movaps 0x30(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x40(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x50(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x60(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x70(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x80(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x90(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
-+      lea     0x10(%arg1),%r10
-+      mov     keysize,%eax
-+      shr     $2,%eax                         # 128->4, 192->6, 256->8
-+      add     $5,%eax                       # 128->9, 192->11, 256->13
-+
-+aes_loop_initial_dec\num_initial_blocks:
-+      MOVADQ  (%r10),\TMP1
-+.irpc index, \i_seq
-+      AESENC  \TMP1, %xmm\index
- .endr
-+      add     $16,%r10
-+      sub     $1,%eax
-+      jnz     aes_loop_initial_dec\num_initial_blocks
-+
-+      MOVADQ  (%r10), \TMP1
- .irpc index, \i_seq
--      movaps 0xa0(%arg1), \TMP1
--      AESENCLAST \TMP1, %xmm\index         # Round 10
-+      AESENCLAST \TMP1, %xmm\index         # Last Round
- .endr
- .irpc index, \i_seq
-       movdqu     (%arg3 , %r11, 1), \TMP1
-@@ -306,10 +296,8 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       add        $16, %r11
-       movdqa     \TMP1, %xmm\index
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM         %xmm14, %xmm\index
--
--              # prepare plaintext/ciphertext for GHASH computation
-+                # prepare plaintext/ciphertext for GHASH computation
- .endr
- .endif
-       GHASH_MUL  %xmm\i, \TMP3, \TMP1, \TMP2, \TMP4, \TMP5, \XMM1
-@@ -339,30 +327,28 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- * Precomputations for HashKey parallel with encryption of first 4 blocks.
- * Haskey_i_k holds XORed values of the low and high parts of the Haskey_i
- */
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM1
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      MOVADQ     ONE(%rip), \TMP1
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM1
-       PSHUFB_XMM  %xmm14, \XMM1        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM2
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM2
-       PSHUFB_XMM  %xmm14, \XMM2        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM3
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM3
-       PSHUFB_XMM %xmm14, \XMM3        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM4
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM4
-       PSHUFB_XMM %xmm14, \XMM4        # perform a 16 byte swap
--      pxor       16*0(%arg1), \XMM1
--      pxor       16*0(%arg1), \XMM2
--      pxor       16*0(%arg1), \XMM3
--      pxor       16*0(%arg1), \XMM4
-+      MOVADQ     0(%arg1),\TMP1
-+      pxor       \TMP1, \XMM1
-+      pxor       \TMP1, \XMM2
-+      pxor       \TMP1, \XMM3
-+      pxor       \TMP1, \XMM4
-       movdqa     \TMP3, \TMP5
-       pshufd     $78, \TMP3, \TMP1
-       pxor       \TMP3, \TMP1
-@@ -400,7 +386,23 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       pshufd     $78, \TMP5, \TMP1
-       pxor       \TMP5, \TMP1
-       movdqa     \TMP1, HashKey_4_k(%rsp)
--      movaps 0xa0(%arg1), \TMP2
-+      lea        0xa0(%arg1),%r10
-+      mov        keysize,%eax
-+      shr        $2,%eax                      # 128->4, 192->6, 256->8
-+      sub        $4,%eax                      # 128->0, 192->2, 256->4
-+      jz         aes_loop_pre_dec_done\num_initial_blocks
-+
-+aes_loop_pre_dec\num_initial_blocks:
-+      MOVADQ     (%r10),\TMP2
-+.irpc index, 1234
-+      AESENC     \TMP2, %xmm\index
-+.endr
-+      add        $16,%r10
-+      sub        $1,%eax
-+      jnz        aes_loop_pre_dec\num_initial_blocks
-+
-+aes_loop_pre_dec_done\num_initial_blocks:
-+      MOVADQ     (%r10), \TMP2
-       AESENCLAST \TMP2, \XMM1
-       AESENCLAST \TMP2, \XMM2
-       AESENCLAST \TMP2, \XMM3
-@@ -422,15 +424,11 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       movdqu     \XMM4, 16*3(%arg2 , %r11 , 1)
-       movdqa     \TMP1, \XMM4
-       add        $64, %r11
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
-       pxor       \XMMDst, \XMM1
- # combine GHASHed value with the corresponding ciphertext
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
- _initial_blocks_done\num_initial_blocks\operation:
-@@ -452,6 +450,7 @@ _initial_blocks_done\num_initial_blocks\operation:
- .macro INITIAL_BLOCKS_ENC num_initial_blocks TMP1 TMP2 TMP3 TMP4 TMP5 XMM0 XMM1 \
- XMM2 XMM3 XMM4 XMMDst TMP6 TMP7 i i_seq operation
-+        MOVADQ     SHUF_MASK(%rip), %xmm14
-       mov        arg7, %r10           # %r10 = AAD
-       mov        arg8, %r15           # %r15 = aadLen
-       mov        %r15, %r11
-@@ -473,7 +472,6 @@ _get_AAD_loop2\num_initial_blocks\operation:
-       cmp        %r11, %r15
-       jne        _get_AAD_loop2\num_initial_blocks\operation
- _get_AAD_loop2_done\num_initial_blocks\operation:
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM   %xmm14, %xmm\i # byte-reflect the AAD data
-       xor        %r11, %r11 # initialise the data pointer offset as zero
-@@ -482,59 +480,35 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       mov        %arg5, %rax                      # %rax = *Y0
-       movdqu     (%rax), \XMM0                    # XMM0 = Y0
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM   %xmm14, \XMM0
- .if (\i == 5) || (\i == 6) || (\i == 7)
--.irpc index, \i_seq
--      paddd      ONE(%rip), \XMM0                 # INCR Y0
--      movdqa     \XMM0, %xmm\index
--        movdqa     SHUF_MASK(%rip), %xmm14
--      PSHUFB_XMM   %xmm14, %xmm\index      # perform a 16 byte swap
--.endr
--.irpc index, \i_seq
--      pxor       16*0(%arg1), %xmm\index
--.endr
--.irpc index, \i_seq
--      movaps 0x10(%rdi), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 1
--.endr
--.irpc index, \i_seq
--      movaps 0x20(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
-+      MOVADQ          ONE(%RIP),\TMP1
-+      MOVADQ          0(%arg1),\TMP2
- .irpc index, \i_seq
--      movaps 0x30(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
-+      paddd           \TMP1, \XMM0                 # INCR Y0
-+      MOVADQ          \XMM0, %xmm\index
-+      PSHUFB_XMM      %xmm14, %xmm\index      # perform a 16 byte swap
-+      pxor            \TMP2, %xmm\index
- .endr
--.irpc index, \i_seq
--      movaps 0x40(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x50(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x60(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x70(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x80(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
--.endr
--.irpc index, \i_seq
--      movaps 0x90(%arg1), \TMP1
--      AESENC     \TMP1, %xmm\index          # Round 2
-+      lea     0x10(%arg1),%r10
-+      mov     keysize,%eax
-+      shr     $2,%eax                         # 128->4, 192->6, 256->8
-+      add     $5,%eax                       # 128->9, 192->11, 256->13
-+
-+aes_loop_initial_enc\num_initial_blocks:
-+      MOVADQ  (%r10),\TMP1
-+.irpc index, \i_seq
-+      AESENC  \TMP1, %xmm\index
- .endr
-+      add     $16,%r10
-+      sub     $1,%eax
-+      jnz     aes_loop_initial_enc\num_initial_blocks
-+
-+      MOVADQ  (%r10), \TMP1
- .irpc index, \i_seq
--      movaps 0xa0(%arg1), \TMP1
--      AESENCLAST \TMP1, %xmm\index         # Round 10
-+      AESENCLAST \TMP1, %xmm\index         # Last Round
- .endr
- .irpc index, \i_seq
-       movdqu     (%arg3 , %r11, 1), \TMP1
-@@ -542,8 +516,6 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       movdqu     %xmm\index, (%arg2 , %r11, 1)
-       # write back plaintext/ciphertext for num_initial_blocks
-       add        $16, %r11
--
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM         %xmm14, %xmm\index
-               # prepare plaintext/ciphertext for GHASH computation
-@@ -576,30 +548,28 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
- * Precomputations for HashKey parallel with encryption of first 4 blocks.
- * Haskey_i_k holds XORed values of the low and high parts of the Haskey_i
- */
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM1
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      MOVADQ     ONE(%RIP),\TMP1
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM1
-       PSHUFB_XMM  %xmm14, \XMM1        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM2
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM2
-       PSHUFB_XMM  %xmm14, \XMM2        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM3
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM3
-       PSHUFB_XMM %xmm14, \XMM3        # perform a 16 byte swap
--      paddd      ONE(%rip), \XMM0              # INCR Y0
--      movdqa     \XMM0, \XMM4
--        movdqa     SHUF_MASK(%rip), %xmm14
-+      paddd      \TMP1, \XMM0              # INCR Y0
-+      MOVADQ     \XMM0, \XMM4
-       PSHUFB_XMM %xmm14, \XMM4        # perform a 16 byte swap
--      pxor       16*0(%arg1), \XMM1
--      pxor       16*0(%arg1), \XMM2
--      pxor       16*0(%arg1), \XMM3
--      pxor       16*0(%arg1), \XMM4
-+      MOVADQ     0(%arg1),\TMP1
-+      pxor       \TMP1, \XMM1
-+      pxor       \TMP1, \XMM2
-+      pxor       \TMP1, \XMM3
-+      pxor       \TMP1, \XMM4
-       movdqa     \TMP3, \TMP5
-       pshufd     $78, \TMP3, \TMP1
-       pxor       \TMP3, \TMP1
-@@ -637,7 +607,23 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       pshufd     $78, \TMP5, \TMP1
-       pxor       \TMP5, \TMP1
-       movdqa     \TMP1, HashKey_4_k(%rsp)
--      movaps 0xa0(%arg1), \TMP2
-+      lea        0xa0(%arg1),%r10
-+      mov        keysize,%eax
-+      shr        $2,%eax                      # 128->4, 192->6, 256->8
-+      sub        $4,%eax                      # 128->0, 192->2, 256->4
-+      jz         aes_loop_pre_enc_done\num_initial_blocks
-+
-+aes_loop_pre_enc\num_initial_blocks:
-+      MOVADQ     (%r10),\TMP2
-+.irpc index, 1234
-+      AESENC     \TMP2, %xmm\index
-+.endr
-+      add        $16,%r10
-+      sub        $1,%eax
-+      jnz        aes_loop_pre_enc\num_initial_blocks
-+
-+aes_loop_pre_enc_done\num_initial_blocks:
-+      MOVADQ     (%r10), \TMP2
-       AESENCLAST \TMP2, \XMM1
-       AESENCLAST \TMP2, \XMM2
-       AESENCLAST \TMP2, \XMM3
-@@ -656,15 +642,11 @@ _get_AAD_loop2_done\num_initial_blocks\operation:
-       movdqu     \XMM4, 16*3(%arg2 , %r11 , 1)
-       add        $64, %r11
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM1 # perform a 16 byte swap
-       pxor       \XMMDst, \XMM1
- # combine GHASHed value with the corresponding ciphertext
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM2 # perform a 16 byte swap
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM3 # perform a 16 byte swap
--        movdqa     SHUF_MASK(%rip), %xmm14
-       PSHUFB_XMM %xmm14, \XMM4 # perform a 16 byte swap
- _initial_blocks_done\num_initial_blocks\operation:
-@@ -795,7 +777,23 @@ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
-       AESENC    \TMP3, \XMM3
-       AESENC    \TMP3, \XMM4
-       PCLMULQDQ 0x00, \TMP5, \XMM8          # XMM8 = a0*b0
--      movaps 0xa0(%arg1), \TMP3
-+      lea       0xa0(%arg1),%r10
-+      mov       keysize,%eax
-+      shr       $2,%eax                       # 128->4, 192->6, 256->8
-+      sub       $4,%eax                       # 128->0, 192->2, 256->4
-+      jz        aes_loop_par_enc_done
-+
-+aes_loop_par_enc:
-+      MOVADQ    (%r10),\TMP3
-+.irpc index, 1234
-+      AESENC    \TMP3, %xmm\index
-+.endr
-+      add       $16,%r10
-+      sub       $1,%eax
-+      jnz       aes_loop_par_enc
-+
-+aes_loop_par_enc_done:
-+      MOVADQ    (%r10), \TMP3
-       AESENCLAST \TMP3, \XMM1           # Round 10
-       AESENCLAST \TMP3, \XMM2
-       AESENCLAST \TMP3, \XMM3
-@@ -987,8 +985,24 @@ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation
-       AESENC    \TMP3, \XMM3
-       AESENC    \TMP3, \XMM4
-       PCLMULQDQ 0x00, \TMP5, \XMM8          # XMM8 = a0*b0
--      movaps 0xa0(%arg1), \TMP3
--      AESENCLAST \TMP3, \XMM1           # Round 10
-+      lea       0xa0(%arg1),%r10
-+      mov       keysize,%eax
-+      shr       $2,%eax                       # 128->4, 192->6, 256->8
-+      sub       $4,%eax                       # 128->0, 192->2, 256->4
-+      jz        aes_loop_par_dec_done
-+
-+aes_loop_par_dec:
-+      MOVADQ    (%r10),\TMP3
-+.irpc index, 1234
-+      AESENC    \TMP3, %xmm\index
-+.endr
-+      add       $16,%r10
-+      sub       $1,%eax
-+      jnz       aes_loop_par_dec
-+
-+aes_loop_par_dec_done:
-+      MOVADQ    (%r10), \TMP3
-+      AESENCLAST \TMP3, \XMM1           # last round
-       AESENCLAST \TMP3, \XMM2
-       AESENCLAST \TMP3, \XMM3
-       AESENCLAST \TMP3, \XMM4
-@@ -1156,33 +1170,29 @@ TMP7 XMM1 XMM2 XMM3 XMM4 XMMDst
-       pxor      \TMP6, \XMMDst            # reduced result is in XMMDst
- .endm
--/* Encryption of a single block done*/
--.macro ENCRYPT_SINGLE_BLOCK XMM0 TMP1
--      pxor    (%arg1), \XMM0
--        movaps 16(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 32(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 48(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 64(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 80(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 96(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 112(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 128(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 144(%arg1), \TMP1
--      AESENC  \TMP1, \XMM0
--        movaps 160(%arg1), \TMP1
--      AESENCLAST      \TMP1, \XMM0
--.endm
-+/* Encryption of a single block
-+* uses eax & r10
-+*/
-+.macro ENCRYPT_SINGLE_BLOCK XMM0 TMP1
-+      pxor            (%arg1), \XMM0
-+      mov             keysize,%eax
-+      shr             $2,%eax                 # 128->4, 192->6, 256->8
-+      add             $5,%eax                 # 128->9, 192->11, 256->13
-+      lea             16(%arg1), %r10   # get first expanded key address
-+
-+_esb_loop_\@:
-+      MOVADQ          (%r10),\TMP1
-+      AESENC          \TMP1,\XMM0
-+      add             $16,%r10
-+      sub             $1,%eax
-+      jnz             _esb_loop_\@
-+
-+      MOVADQ          (%r10),\TMP1
-+      AESENCLAST      \TMP1,\XMM0
-+.endm
- /*****************************************************************************
- * void aesni_gcm_dec(void *aes_ctx,    // AES Key schedule. Starts on a 16 byte boundary.
- *                   u8 *out,           // Plaintext output. Encrypt in-place is allowed.
-diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
-index 6d4faba..bfaf817 100644
---- a/arch/x86/crypto/aesni-intel_glue.c
-+++ b/arch/x86/crypto/aesni-intel_glue.c
-@@ -177,7 +177,8 @@ static void aesni_gcm_enc_avx(void *ctx, u8 *out,
-                       u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
-                       u8 *auth_tag, unsigned long auth_tag_len)
- {
--      if (plaintext_len < AVX_GEN2_OPTSIZE) {
-+        struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+      if ((plaintext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)){
-               aesni_gcm_enc(ctx, out, in, plaintext_len, iv, hash_subkey, aad,
-                               aad_len, auth_tag, auth_tag_len);
-       } else {
-@@ -192,7 +193,8 @@ static void aesni_gcm_dec_avx(void *ctx, u8 *out,
-                       u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
-                       u8 *auth_tag, unsigned long auth_tag_len)
- {
--      if (ciphertext_len < AVX_GEN2_OPTSIZE) {
-+        struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+      if ((ciphertext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
-               aesni_gcm_dec(ctx, out, in, ciphertext_len, iv, hash_subkey, aad,
-                               aad_len, auth_tag, auth_tag_len);
-       } else {
-@@ -226,7 +228,8 @@ static void aesni_gcm_enc_avx2(void *ctx, u8 *out,
-                       u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
-                       u8 *auth_tag, unsigned long auth_tag_len)
- {
--      if (plaintext_len < AVX_GEN2_OPTSIZE) {
-+       struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+      if ((plaintext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
-               aesni_gcm_enc(ctx, out, in, plaintext_len, iv, hash_subkey, aad,
-                               aad_len, auth_tag, auth_tag_len);
-       } else if (plaintext_len < AVX_GEN4_OPTSIZE) {
-@@ -245,7 +248,8 @@ static void aesni_gcm_dec_avx2(void *ctx, u8 *out,
-                       u8 *hash_subkey, const u8 *aad, unsigned long aad_len,
-                       u8 *auth_tag, unsigned long auth_tag_len)
- {
--      if (ciphertext_len < AVX_GEN2_OPTSIZE) {
-+       struct crypto_aes_ctx *aes_ctx = (struct crypto_aes_ctx*)ctx;
-+      if ((ciphertext_len < AVX_GEN2_OPTSIZE) || (aes_ctx-> key_length != AES_KEYSIZE_128)) {
-               aesni_gcm_dec(ctx, out, in, ciphertext_len, iv, hash_subkey,
-                               aad, aad_len, auth_tag, auth_tag_len);
-       } else if (ciphertext_len < AVX_GEN4_OPTSIZE) {
-@@ -878,7 +882,8 @@ static int rfc4106_set_key(struct crypto_aead *parent, const u8 *key,
-       }
-       /*Account for 4 byte nonce at the end.*/
-       key_len -= 4;
--      if (key_len != AES_KEYSIZE_128) {
-+      if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 &&
-+          key_len != AES_KEYSIZE_256) {
-               crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
-@@ -989,6 +994,7 @@ static int __driver_rfc4106_encrypt(struct aead_request *req)
-       __be32 counter = cpu_to_be32(1);
-       struct crypto_aead *tfm = crypto_aead_reqtfm(req);
-       struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm);
-+      u32 key_len = ctx->aes_key_expanded.key_length;
-       void *aes_ctx = &(ctx->aes_key_expanded);
-       unsigned long auth_tag_len = crypto_aead_authsize(tfm);
-       u8 iv_tab[16+AESNI_ALIGN];
-@@ -1003,6 +1009,13 @@ static int __driver_rfc4106_encrypt(struct aead_request *req)
-       /* to 8 or 12 bytes */
-       if (unlikely(req->assoclen != 8 && req->assoclen != 12))
-               return -EINVAL;
-+      if (unlikely(auth_tag_len != 8 && auth_tag_len != 12 && auth_tag_len != 16))
-+              return -EINVAL;
-+      if (unlikely(key_len != AES_KEYSIZE_128 &&
-+                   key_len != AES_KEYSIZE_192 &&
-+                   key_len != AES_KEYSIZE_256))
-+              return -EINVAL;
-+
-       /* IV below built */
-       for (i = 0; i < 4; i++)
-               *(iv+i) = ctx->nonce[i];
-@@ -1067,6 +1080,7 @@ static int __driver_rfc4106_decrypt(struct aead_request *req)
-       int retval = 0;
-       struct crypto_aead *tfm = crypto_aead_reqtfm(req);
-       struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm);
-+      u32 key_len = ctx->aes_key_expanded.key_length;
-       void *aes_ctx = &(ctx->aes_key_expanded);
-       unsigned long auth_tag_len = crypto_aead_authsize(tfm);
-       u8 iv_and_authTag[32+AESNI_ALIGN];
-@@ -1080,6 +1094,13 @@ static int __driver_rfc4106_decrypt(struct aead_request *req)
-       if (unlikely((req->cryptlen < auth_tag_len) ||
-               (req->assoclen != 8 && req->assoclen != 12)))
-               return -EINVAL;
-+      if (unlikely(auth_tag_len != 8 && auth_tag_len != 12 && auth_tag_len != 16))
-+              return -EINVAL;
-+      if (unlikely(key_len != AES_KEYSIZE_128 &&
-+                   key_len != AES_KEYSIZE_192 &&
-+                   key_len != AES_KEYSIZE_256))
-+              return -EINVAL;
-+
-       /* Assuming we are supporting rfc4106 64-bit extended */
-       /* sequence numbers We need to have the AAD length */
-       /* equal to 8 or 12 bytes */
--- 
-2.7.4
-
diff --git a/src/patches/linux/0110-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch b/src/patches/linux/0110-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
deleted file mode 100644 (file)
index a47f080..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-From a289eb38cfb481de48e36b481c72fb2492c6d242 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Thu, 13 Oct 2016 13:07:36 -0700
-Subject: [PATCH] mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
-
-commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 upstream.
-
-This is an ancient bug that was actually attempted to be fixed once
-(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
-get_user_pages() race for write access") but that was then undone due to
-problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
-
-In the meantime, the s390 situation has long been fixed, and we can now
-fix it by checking the pte_dirty() bit properly (and do it better).  The
-s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
-software dirty bits") which made it into v3.9.  Earlier kernels will
-have to look at the page state itself.
-
-Also, the VM has become more scalable, and what used a purely
-theoretical race back then has become easier to trigger.
-
-To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
-we already did a COW" rather than play racy games with FOLL_WRITE that
-is very fundamental, and then use the pte dirty flag to validate that
-the FOLL_COW flag is still valid.
-
-Reported-and-tested-by: Phil "not Paul" Oester <kernel@linuxace.com>
-Acked-by: Hugh Dickins <hughd@google.com>
-Reviewed-by: Michal Hocko <mhocko@suse.com>
-Cc: Andy Lutomirski <luto@kernel.org>
-Cc: Kees Cook <keescook@chromium.org>
-Cc: Oleg Nesterov <oleg@redhat.com>
-Cc: Willy Tarreau <w@1wt.eu>
-Cc: Nick Piggin <npiggin@gmail.com>
-Cc: Greg Thelen <gthelen@google.com>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Jiri Slaby <jslaby@suse.cz>
----
- include/linux/mm.h |  1 +
- mm/memory.c        | 14 ++++++++++++--
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index 5aef73c..6f56355 100644
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -1964,6 +1964,7 @@ static inline struct page *follow_page(struct vm_area_struct *vma,
- #define FOLL_HWPOISON 0x100   /* check page is hwpoisoned */
- #define FOLL_NUMA     0x200   /* force NUMA hinting page fault */
- #define FOLL_MIGRATION        0x400   /* wait for page to replace migration entry */
-+#define FOLL_COW      0x4000  /* internal GUP flag */
- typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
-                       void *data);
-diff --git a/mm/memory.c b/mm/memory.c
-index e9f4d40..5c1df12 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1449,6 +1449,16 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
- }
- EXPORT_SYMBOL_GPL(zap_vma_ptes);
-+/*
-+ * FOLL_FORCE can write to even unwritable pte's, but only
-+ * after we've gone through a COW cycle and they are dirty.
-+ */
-+static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
-+{
-+      return pte_write(pte) ||
-+              ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
-+}
-+
- /**
-  * follow_page_mask - look up a page descriptor from a user-virtual address
-  * @vma: vm_area_struct mapping @address
-@@ -1569,7 +1579,7 @@ split_fallthrough:
-       }
-       if ((flags & FOLL_NUMA) && pte_numa(pte))
-               goto no_page;
--      if ((flags & FOLL_WRITE) && !pte_write(pte))
-+      if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags))
-               goto unlock;
-       page = vm_normal_page(vma, address, pte);
-@@ -1866,7 +1876,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
-                                */
-                               if ((ret & VM_FAULT_WRITE) &&
-                                   !(vma->vm_flags & VM_WRITE))
--                                      foll_flags &= ~FOLL_WRITE;
-+                                      foll_flags |= FOLL_COW;
-                               cond_resched();
-                       }
--- 
-2.7.4
-
diff --git a/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch b/src/patches/linux/backports-4.2.6-1_ath10k_remove_logspam.patch
new file mode 100644 (file)
index 0000000..bdb1534
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c
+--- backports-4.2.6-1.org/drivers/net/wireless/ath/ath10k/htt_rx.c     2015-11-15 22:19:40.000000000 +0100
++++ backports-4.2.6-1/drivers/net/wireless/ath/ath10k/htt_rx.c 2016-03-26 10:48:17.189430101 +0100
+@@ -1476,7 +1476,7 @@
+        */
+       if (!rx_status->freq) {
+-              ath10k_warn(ar, "no channel configured; ignoring frame(s)!\n");
++              ath10k_dbg(ar,ATH10K_DBG_DATA ,"no channel configured; ignoring frame(s)!\n");
+               return false;
+       }
similarity index 72%
rename from src/patches/linux-3.14.22-imq.patch
rename to src/patches/linux/linux-4.9-imq.diff
index 219d4fb3a1c12fca3480dab1c83d7153d78f5f8b..2c9e0c1f76301b79e0476484fdc227846027c9fd 100644 (file)
@@ -1,8 +1,8 @@
 diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index 494b888..851e01f 100644
+index 95c32f2..93fada5 100644
 --- a/drivers/net/Kconfig
 +++ b/drivers/net/Kconfig
-@@ -203,6 +203,125 @@ config RIONET_RX_SIZE
+@@ -260,6 +260,125 @@ config RIONET_RX_SIZE
        depends on RIONET
        default "128"
  
@@ -17,7 +17,7 @@ index 494b888..851e01f 100644
 +        and distribute bandwidth among them. Iptables is used to specify
 +        through which IMQ device, if any, packets travel.
 +
-+        More information at: http://www.linuximq.net/
++        More information at: https://github.com/imq/linuximq
 +
 +        To compile this driver as a module, choose M here: the module
 +        will be called imq.  If unsure, say N.
@@ -45,7 +45,7 @@ index 494b888..851e01f 100644
 +        This settings are specially usefull when trying to use IMQ
 +        to shape NATed clients.
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
@@ -60,7 +60,7 @@ index 494b888..851e01f 100644
 +        PREROUTING:   After NAT
 +        POSTROUTING:  After NAT
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
@@ -75,7 +75,7 @@ index 494b888..851e01f 100644
 +        PREROUTING:   After NAT
 +        POSTROUTING:  Before NAT
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
@@ -90,7 +90,7 @@ index 494b888..851e01f 100644
 +        PREROUTING:   Before NAT
 +        POSTROUTING:  After NAT
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
@@ -105,7 +105,7 @@ index 494b888..851e01f 100644
 +        PREROUTING:   Before NAT
 +        POSTROUTING:  Before NAT
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
@@ -121,31 +121,31 @@ index 494b888..851e01f 100644
 +
 +        The default value is 16.
 +
-+        More information can be found at: www.linuximq.net
++        More information can be found at: https://github.com/imq/linuximq
 +
 +        If not sure leave the default settings alone.
 +
  config TUN
        tristate "Universal TUN/TAP device driver support"
-       select CRC32
+       depends on INET
 diff --git a/drivers/net/Makefile b/drivers/net/Makefile
-index 3fef8a8..12dafc0 100644
+index 7336cbd..d6d7ad4 100644
 --- a/drivers/net/Makefile
 +++ b/drivers/net/Makefile
-@@ -9,6 +9,7 @@ obj-$(CONFIG_BONDING) += bonding/
- obj-$(CONFIG_DUMMY) += dummy.o
+@@ -11,6 +11,7 @@ obj-$(CONFIG_DUMMY) += dummy.o
  obj-$(CONFIG_EQUALIZER) += eql.o
  obj-$(CONFIG_IFB) += ifb.o
+ obj-$(CONFIG_MACSEC) += macsec.o
 +obj-$(CONFIG_IMQ) += imq.o
  obj-$(CONFIG_MACVLAN) += macvlan.o
  obj-$(CONFIG_MACVTAP) += macvtap.o
  obj-$(CONFIG_MII) += mii.o
 diff --git a/drivers/net/imq.c b/drivers/net/imq.c
 new file mode 100644
-index 0000000..2140535
+index 0000000..bc3b997
 --- /dev/null
 +++ b/drivers/net/imq.c
-@@ -0,0 +1,1011 @@
+@@ -0,0 +1,907 @@
 +/*
 + *             Pseudo-driver for the intermediate queue device.
 + *
@@ -158,144 +158,7 @@ index 0000000..2140535
 + *
 + *            The first version was written by Martin Devera, <devik@cdi.cz>
 + *
-+ * Credits:    Jan Rafaj <imq2t@cedric.vabo.cz>
-+ *              - Update patch to 2.4.21
-+ *             Sebastian Strollo <sstrollo@nortelnetworks.com>
-+ *              - Fix "Dead-loop on netdevice imq"-issue
-+ *             Marcel Sebek <sebek64@post.cz>
-+ *              - Update to 2.6.2-rc1
-+ *
-+ *           After some time of inactivity there is a group taking care
-+ *           of IMQ again: http://www.linuximq.net
-+ *
-+ *
-+ *           2004/06/30 - New version of IMQ patch to kernels <=2.6.7
-+ *             including the following changes:
-+ *
-+ *           - Correction of ipv6 support "+"s issue (Hasso Tepper)
-+ *           - Correction of imq_init_devs() issue that resulted in
-+ *           kernel OOPS unloading IMQ as module (Norbert Buchmuller)
-+ *           - Addition of functionality to choose number of IMQ devices
-+ *           during kernel config (Andre Correa)
-+ *           - Addition of functionality to choose how IMQ hooks on
-+ *           PRE and POSTROUTING (after or before NAT) (Andre Correa)
-+ *           - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
-+ *
-+ *
-+ *             2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
-+ *             released with almost no problems. 2.6.14-x was released
-+ *             with some important changes: nfcache was removed; After
-+ *             some weeks of trouble we figured out that some IMQ fields
-+ *             in skb were missing in skbuff.c - skb_clone and copy_skb_header.
-+ *             These functions are correctly patched by this new patch version.
-+ *
-+ *             Thanks for all who helped to figure out all the problems with
-+ *             2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
-+ *             Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
-+ *             I didn't forget anybody). I apologize again for my lack of time.
-+ *
-+ *
-+ *             2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead
-+ *             of qdisc_restart() and moved qdisc_run() to tasklet to avoid
-+ *             recursive locking. New initialization routines to fix 'rmmod' not
-+ *             working anymore. Used code from ifb.c. (Jussi Kivilinna)
-+ *
-+ *             2008/08/06 - 2.6.26 - (JK)
-+ *              - Replaced tasklet with 'netif_schedule()'.
-+ *              - Cleaned up and added comments for imq_nf_queue().
-+ *
-+ *             2009/04/12
-+ *              - Add skb_save_cb/skb_restore_cb helper functions for backuping
-+ *                control buffer. This is needed because qdisc-layer on kernels
-+ *                2.6.27 and newer overwrite control buffer. (Jussi Kivilinna)
-+ *              - Add better locking for IMQ device. Hopefully this will solve
-+ *                SMP issues. (Jussi Kivilinna)
-+ *              - Port to 2.6.27
-+ *              - Port to 2.6.28
-+ *              - Port to 2.6.29 + fix rmmod not working
-+ *
-+ *             2009/04/20 - (Jussi Kivilinna)
-+ *              - Use netdevice feature flags to avoid extra packet handling
-+ *                by core networking layer and possibly increase performance.
-+ *
-+ *             2009/09/26 - (Jussi Kivilinna)
-+ *              - Add imq_nf_reinject_lockless to fix deadlock with
-+ *                imq_nf_queue/imq_nf_reinject.
-+ *
-+ *             2009/12/08 - (Jussi Kivilinna)
-+ *              - Port to 2.6.32
-+ *              - Add check for skb->nf_queue_entry==NULL in imq_dev_xmit()
-+ *              - Also add better error checking for skb->nf_queue_entry usage
-+ *
-+ *             2010/02/25 - (Jussi Kivilinna)
-+ *              - Port to 2.6.33
-+ *
-+ *             2010/08/15 - (Jussi Kivilinna)
-+ *              - Port to 2.6.35
-+ *              - Simplify hook registration by using nf_register_hooks.
-+ *              - nf_reinject doesn't need spinlock around it, therefore remove
-+ *                imq_nf_reinject function. Other nf_reinject users protect
-+ *                their own data with spinlock. With IMQ however all data is
-+ *                needed is stored per skbuff, so no locking is needed.
-+ *              - Changed IMQ to use 'separate' NF_IMQ_QUEUE instead of
-+ *                NF_QUEUE, this allows working coexistance of IMQ and other
-+ *                NF_QUEUE users.
-+ *              - Make IMQ multi-queue. Number of IMQ device queues can be
-+ *                increased with 'numqueues' module parameters. Default number
-+ *                of queues is 1, in other words by default IMQ works as
-+ *                single-queue device. Multi-queue selection is based on
-+ *                IFB multi-queue patch by Changli Gao <xiaosuo@gmail.com>.
-+ *
-+ *             2011/03/18 - (Jussi Kivilinna)
-+ *              - Port to 2.6.38
-+ *
-+ *             2011/07/12 - (syoder89@gmail.com)
-+ *              - Crash fix that happens when the receiving interface has more
-+ *                than one queue (add missing skb_set_queue_mapping in
-+ *                imq_select_queue).
-+ *
-+ *             2011/07/26 - (Jussi Kivilinna)
-+ *              - Add queue mapping checks for packets exiting IMQ.
-+ *              - Port to 3.0
-+ *
-+ *             2011/08/16 - (Jussi Kivilinna)
-+ *              - Clear IFF_TX_SKB_SHARING flag that was added for linux 3.0.2
-+ *
-+ *             2011/11/03 - Germano Michel <germanomichel@gmail.com>
-+ *              - Fix IMQ for net namespaces
-+ *
-+ *             2011/11/04 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.1
-+ *              - Clean-up, move 'get imq device pointer by imqX name' to
-+ *                separate function from imq_nf_queue().
-+ *
-+ *             2012/01/05 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.2
-+ *
-+ *             2012/03/19 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.3
-+ *
-+ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.7
-+ *              - Fix checkpatch.pl warnings
-+ *
-+ *             2013/09/10 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ *              - Fixed GSO handling for 3.10, see imq_nf_queue() for comments.
-+ *              - Don't copy skb->cb_next when copying or cloning skbuffs.
-+ *
-+ *             2013/09/16 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ *              - Port to 3.11
-+ *
-+ *             2013/11/12 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ *              - Port to 3.12
-+ *
-+ *             2014/02/07 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
-+ *              - Port to 3.13
-+ *
-+ *           Also, many thanks to pablo Sebastian Greco for making the initial
-+ *           patch and to those who helped the testing.
-+ *
-+ *             More info at: http://www.linuximq.net/ (Andre Correa)
++ *                       See Creditis.txt
 + */
 +
 +#include <linux/module.h>
@@ -331,7 +194,6 @@ index 0000000..2140535
 +      {
 +      /* imq_ingress_ipv4 */
 +              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
 +              .pf             = PF_INET,
 +              .hooknum        = NF_INET_PRE_ROUTING,
 +#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
@@ -343,7 +205,6 @@ index 0000000..2140535
 +      {
 +      /* imq_egress_ipv4 */
 +              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
 +              .pf             = PF_INET,
 +              .hooknum        = NF_INET_POST_ROUTING,
 +#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
@@ -356,7 +217,6 @@ index 0000000..2140535
 +      {
 +      /* imq_ingress_ipv6 */
 +              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
 +              .pf             = PF_INET6,
 +              .hooknum        = NF_INET_PRE_ROUTING,
 +#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
@@ -368,7 +228,6 @@ index 0000000..2140535
 +      {
 +      /* imq_egress_ipv6 */
 +              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
 +              .pf             = PF_INET6,
 +              .hooknum        = NF_INET_POST_ROUTING,
 +#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
@@ -391,6 +250,7 @@ index 0000000..2140535
 +#define IMQ_MAX_QUEUES 32
 +static int numqueues = 1;
 +static u32 imq_hashrnd;
++static int imq_dev_accurate_stats = 1;
 +
 +static inline __be16 pppoe_proto(const struct sk_buff *skb)
 +{
@@ -605,7 +465,7 @@ index 0000000..2140535
 +      struct nf_queue_entry *entry = skb->nf_queue_entry;
 +
 +      skb->nf_queue_entry = NULL;
-+      dev->trans_start = jiffies;
++      netif_trans_update(dev);
 +
 +      dev->stats.tx_bytes += skb->len;
 +      dev->stats.tx_packets++;
@@ -677,9 +537,8 @@ index 0000000..2140535
 +{
 +      struct nf_queue_entry *entry = kmemdup(e, e->size, GFP_ATOMIC);
 +      if (entry) {
-+              if (nf_queue_entry_get_refs(entry))
++              nf_queue_entry_get_refs(entry);
 +                      return entry;
-+              kfree(entry);
 +      }
 +      return NULL;
 +}
@@ -774,9 +633,6 @@ index 0000000..2140535
 +              goto out_no_dev;
 +      }
 +
-+      if (!skb_is_gso(entry->skb))
-+              return __imq_nf_queue(entry, dev);
-+
 +      /* Since 3.10.x, GSO handling moved here as result of upstream commit
 +       * a5fedd43d5f6c94c71053a66e4c3d2e35f1731a2 (netfilter: move
 +       * skb_gso_segment into nfnetlink_queue module).
@@ -787,7 +643,7 @@ index 0000000..2140535
 +
 +      skb = entry->skb;
 +
-+      switch (entry->pf) {
++      switch (entry->state.pf) {
 +      case NFPROTO_IPV4:
 +              skb->protocol = htons(ETH_P_IP);
 +              break;
@@ -796,6 +652,9 @@ index 0000000..2140535
 +              break;
 +      }
 +
++      if (!skb_is_gso(entry->skb))
++              return __imq_nf_queue(entry, dev);
++
 +      nf_bridge_adjust_skb_data(skb);
 +      segs = skb_gso_segment(skb, 0);
 +      /* Does not use PTR_ERR to limit the number of error codes that can be
@@ -836,8 +695,9 @@ index 0000000..2140535
 +
 +static int __imq_nf_queue(struct nf_queue_entry *entry, struct net_device *dev)
 +{
-+      struct sk_buff *skb_orig, *skb, *skb_shared;
++      struct sk_buff *skb_orig, *skb, *skb_shared, *skb_popd;
 +      struct Qdisc *q;
++      struct sk_buff *to_free = NULL;
 +      struct netdev_queue *txq;
 +      spinlock_t *root_lock;
 +      int users;
@@ -861,8 +721,6 @@ index 0000000..2140535
 +              entry->skb = skb;
 +      }
 +
-+      skb->nf_queue_entry = entry;
-+
 +      dev->stats.rx_bytes += skb->len;
 +      dev->stats.rx_packets++;
 +
@@ -888,6 +746,7 @@ index 0000000..2140535
 +      if (unlikely(!q->enqueue))
 +              goto packet_not_eaten_by_imq_dev;
 +
++      skb->nf_queue_entry = entry;
 +      root_lock = qdisc_lock(q);
 +      spin_lock(root_lock);
 +
@@ -897,23 +756,58 @@ index 0000000..2140535
 +
 +      /* backup skb->cb, as qdisc layer will overwrite it */
 +      skb_save_cb(skb_shared);
-+      qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
-+
++      qdisc_enqueue_root(skb_shared, q, &to_free); /* might kfree_skb */
 +      if (likely(atomic_read(&skb_shared->users) == users + 1)) {
++              bool validate;
++
 +              kfree_skb(skb_shared); /* decrease reference count by one */
 +
 +              skb->destructor = &imq_skb_destructor;
 +
++              skb_popd = qdisc_dequeue_skb(q, &validate);
++
 +              /* cloned? */
 +              if (unlikely(skb_orig))
 +                      kfree_skb(skb_orig); /* free original */
 +
 +              spin_unlock(root_lock);
-+              rcu_read_unlock_bh();
 +
++#if 0
 +              /* schedule qdisc dequeue */
 +              __netif_schedule(q);
-+
++#else
++              if (likely(skb_popd)) {
++                      /* Note that we validate skb (GSO, checksum, ...) outside of locks */
++                      if (validate)
++                      skb_popd = validate_xmit_skb_list(skb_popd, dev);
++
++                      if (skb_popd) {
++                              int dummy_ret;
++                              int cpu = smp_processor_id(); /* ok because BHs are off */
++
++                              txq = skb_get_tx_queue(dev, skb_popd);
++                              /*
++                              IMQ device will not be frozen or stoped, and it always be successful.
++                              So we need not check its status and return value to accelerate.
++                              */
++                              if (imq_dev_accurate_stats && txq->xmit_lock_owner != cpu) {
++                                      HARD_TX_LOCK(dev, txq, cpu);
++                                      if (!netif_xmit_frozen_or_stopped(txq)) {
++                                              dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret);
++                                      }
++                                      HARD_TX_UNLOCK(dev, txq);
++                              } else {
++                                      if (!netif_xmit_frozen_or_stopped(txq)) {
++                                              dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret);
++                                      }
++                              }
++                      }
++              } else {
++                      /* No ready skb, then schedule it */
++                      __netif_schedule(q);
++              }
++#endif
++              rcu_read_unlock_bh();
 +              retval = 0;
 +              goto out;
 +      } else {
@@ -939,16 +833,16 @@ index 0000000..2140535
 +      }
 +      retval = -1;
 +out:
++      if (unlikely(to_free)) {
++              kfree_skb_list(to_free);
++      }
 +      return retval;
 +}
-+
-+static unsigned int imq_nf_hook(const struct nf_hook_ops *hook_ops,
-+                              struct sk_buff *pskb,
-+                              const struct net_device *indev,
-+                              const struct net_device *outdev,
-+                              int (*okfn)(struct sk_buff *))
++static unsigned int imq_nf_hook(void *priv,
++                              struct sk_buff *skb,
++                              const struct nf_hook_state *state)
 +{
-+      return (pskb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
++      return (skb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
 +}
 +
 +static int imq_close(struct net_device *dev)
@@ -1033,7 +927,7 @@ index 0000000..2140535
 +      struct net_device *dev;
 +      int ret;
 +
-+      dev = alloc_netdev_mq(0, "imq%d", imq_setup, numqueues);
++      dev = alloc_netdev_mq(0, "imq%d", NET_NAME_UNKNOWN, imq_setup, numqueues);
 +      if (!dev)
 +              return -ENOMEM;
 +
@@ -1109,8 +1003,8 @@ index 0000000..2140535
 +              return err;
 +      }
 +
-+      pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
-+              numdevs, numqueues);
++      pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d, imq_dev_accurate_stats = %d)\n",
++              numdevs, numqueues, imq_dev_accurate_stats);
 +
 +#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
 +      pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
@@ -1150,13 +1044,15 @@ index 0000000..2140535
 +
 +module_param(numdevs, int, 0);
 +module_param(numqueues, int, 0);
++module_param(imq_dev_accurate_stats, int, 0);
 +MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
 +MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_PARM_DESC(imq_dev_accurate_stats, "Notify if need the accurate imq device stats");
++
++MODULE_AUTHOR("https://github.com/imq/linuximq");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See https://github.com/imq/linuximq/wiki for more information.");
 +MODULE_LICENSE("GPL");
 +MODULE_ALIAS_RTNL_LINK("imq");
-+
 diff --git a/include/linux/imq.h b/include/linux/imq.h
 new file mode 100644
 index 0000000..1babb09
@@ -1176,6 +1072,30 @@ index 0000000..1babb09
 +
 +#endif /* _IMQ_H */
 +
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index e16a2a9..4a1090a 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -3669,6 +3669,19 @@ static inline void netif_tx_unlock_bh(struct net_device *dev)
+       }                                               \
+ }
++#define HARD_TX_LOCK_BH(dev, txq) {           \
++    if ((dev->features & NETIF_F_LLTX) == 0) {  \
++        __netif_tx_lock_bh(txq);      \
++    }                       \
++}
++
++#define HARD_TX_UNLOCK_BH(dev, txq) {          \
++    if ((dev->features & NETIF_F_LLTX) == 0) {  \
++        __netif_tx_unlock_bh(txq);         \
++    }                       \
++}
++
++
+ static inline void netif_tx_disable(struct net_device *dev)
+ {
+       unsigned int i;
 diff --git a/include/linux/netfilter/xt_IMQ.h b/include/linux/netfilter/xt_IMQ.h
 new file mode 100644
 index 0000000..9b07230
@@ -1224,20 +1144,21 @@ index 0000000..198ac01
 +#endif /* _IP6T_IMQ_H */
 +
 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index ad8f859..8473090 100644
+index c8f9fa6..6c425c2 100644
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -33,6 +33,9 @@
- #include <linux/dma-mapping.h>
- #include <linux/netdev_features.h>
- #include <net/flow_keys.h>
+@@ -39,6 +39,10 @@
+ #include <linux/in6.h>
+ #include <linux/if_packet.h>
+ #include <net/flow.h>
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +#include <linux/imq.h>
 +#endif
++
  
- /* A. Checksumming of received packets by device.
-  *
-@@ -441,6 +444,9 @@ struct sk_buff {
+ /* The interface for checksum offload between the stack and networking drivers
+  * is as follows...
+@@ -654,6 +658,9 @@ struct sk_buff {
         * first. This is owned by whoever has the skb queued ATM.
         */
        char                    cb[48] __aligned(8);
@@ -1246,28 +1167,28 @@ index ad8f859..8473090 100644
 +#endif
  
        unsigned long           _skb_refdst;
- #ifdef CONFIG_XFRM
-@@ -476,6 +482,9 @@ struct sk_buff {
+       void                    (*destructor)(struct sk_buff *skb);
+@@ -663,6 +670,9 @@ struct sk_buff {
  #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
        struct nf_conntrack     *nfct;
  #endif
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      struct nf_queue_entry   *nf_queue_entry;
++       struct nf_queue_entry   *nf_queue_entry;
 +#endif
- #ifdef CONFIG_BRIDGE_NETFILTER
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
        struct nf_bridge_info   *nf_bridge;
  #endif
-@@ -513,6 +522,9 @@ struct sk_buff {
-        */
-       __u8                    encapsulation:1;
-       /* 6/8 bit hole (depending on ndisc_nodetype presence) */
+@@ -743,6 +753,9 @@ struct sk_buff {
+       __u8                    offload_fwd_mark:1;
+ #endif
+       /* 2, 4 or 5 bit hole */
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +      __u8                    imq_flags:IMQ_F_BITS;
 +#endif
-       kmemcheck_bitfield_end(flags2);
  
- #if defined CONFIG_NET_DMA || defined CONFIG_NET_RX_BUSY_POLL
-@@ -653,6 +665,12 @@ void kfree_skb_list(struct sk_buff *segs);
+ #ifdef CONFIG_NET_SCHED
+       __u16                   tc_index;       /* traffic control index */
+@@ -903,6 +916,12 @@ void kfree_skb_list(struct sk_buff *segs);
  void skb_tx_error(struct sk_buff *skb);
  void consume_skb(struct sk_buff *skb);
  void  __kfree_skb(struct sk_buff *skb);
@@ -1280,24 +1201,24 @@ index ad8f859..8473090 100644
  extern struct kmem_cache *skbuff_head_cache;
  
  void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
-@@ -2739,6 +2757,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
-       nf_conntrack_get(src->nfct);
-       dst->nfctinfo = src->nfctinfo;
+@@ -3594,6 +3613,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src,
+       if (copy)
+               dst->nfctinfo = src->nfctinfo;
  #endif
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      dst->imq_flags = src->imq_flags;
-+      dst->nf_queue_entry = src->nf_queue_entry;
++       dst->imq_flags = src->imq_flags;
++       dst->nf_queue_entry = src->nf_queue_entry;
 +#endif
- #ifdef CONFIG_BRIDGE_NETFILTER
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
        dst->nf_bridge  = src->nf_bridge;
        nf_bridge_get(src->nf_bridge);
 diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h
-index 84a53d7..6ffb593 100644
+index 2280cfe..ec8fa51 100644
 --- a/include/net/netfilter/nf_queue.h
 +++ b/include/net/netfilter/nf_queue.h
-@@ -33,6 +33,12 @@ struct nf_queue_handler {
- void nf_register_queue_handler(const struct nf_queue_handler *qh);
- void nf_unregister_queue_handler(void);
+@@ -30,6 +30,12 @@ struct nf_queue_handler {
+ void nf_register_queue_handler(struct net *net, const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(struct net *net);
  void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
 +void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
 +
@@ -1306,13 +1227,44 @@ index 84a53d7..6ffb593 100644
 +void nf_unregister_queue_imq_handler(void);
 +#endif
  
bool nf_queue_entry_get_refs(struct nf_queue_entry *entry);
void nf_queue_entry_get_refs(struct nf_queue_entry *entry);
  void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
+index cd334c9..6757228 100644
+--- a/include/net/pkt_sched.h
++++ b/include/net/pkt_sched.h
+@@ -105,6 +105,8 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q,
+ void __qdisc_run(struct Qdisc *q);
++struct sk_buff *qdisc_dequeue_skb(struct Qdisc *q, bool *validate);
++
+ static inline void qdisc_run(struct Qdisc *q)
+ {
+       if (qdisc_run_begin(q))
+diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
+index e6aa0a2..08b37dc 100644
+--- a/include/net/sch_generic.h
++++ b/include/net/sch_generic.h
+@@ -518,6 +518,13 @@ static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
+       return sch->enqueue(skb, sch, to_free);
+ }
++static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch,
++                                    struct sk_buff **to_free)
++{
++    qdisc_skb_cb(skb)->pkt_len = skb->len;
++    return qdisc_enqueue(skb, sch, to_free) & NET_XMIT_MASK;
++}
++
+ static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
+ {
+       return q->flags & TCQ_F_CPUSTATS;
 diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
-index ef1b1f8..079e5ff 100644
+index d93f949..23fb6d1 100644
 --- a/include/uapi/linux/netfilter.h
 +++ b/include/uapi/linux/netfilter.h
-@@ -13,7 +13,8 @@
+@@ -14,7 +14,8 @@
  #define NF_QUEUE 3
  #define NF_REPEAT 4
  #define NF_STOP 5
@@ -1323,62 +1275,53 @@ index ef1b1f8..079e5ff 100644
  /* we overload the higher bits for encoding auxiliary data such as the queue
   * number or errno values. Not nice, but better than additional function
 diff --git a/net/core/dev.c b/net/core/dev.c
-index 3ed11a5..fd62030 100644
+index 6666b28..3e12add 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -132,6 +132,9 @@
- #include <linux/hashtable.h>
- #include <linux/vmalloc.h>
- #include <linux/if_macvlan.h>
+@@ -141,6 +141,9 @@
+ #include <linux/netfilter_ingress.h>
+ #include <linux/sctp.h>
+ #include <linux/crash_dump.h>
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +#include <linux/imq.h>
 +#endif
  
  #include "net-sysfs.h"
  
-@@ -2611,7 +2614,12 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
-                       }
-               }
+@@ -2906,7 +2909,12 @@ static int xmit_one(struct sk_buff *skb, struct net_device *dev,
+       unsigned int len;
+       int rc;
  
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+              if (!list_empty(&ptype_all) &&
-+                                      !(skb->imq_flags & IMQ_F_ENQUEUE))
++      if ((!list_empty(&ptype_all) || !list_empty(&dev->ptype_all)) &&
++              !(skb->imq_flags & IMQ_F_ENQUEUE))
 +#else
-               if (!list_empty(&ptype_all))
+       if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
 +#endif
-                       dev_queue_xmit_nit(skb, dev);
+               dev_queue_xmit_nit(skb, dev);
+       len = skb->len;
+@@ -2945,6 +2953,8 @@ struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *de
+       return skb;
+ }
  
-               skb_len = skb->len;
++EXPORT_SYMBOL_GPL(dev_hard_start_xmit);
++
+ static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
+                                         netdev_features_t features)
+ {
 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index baf6fc4..7d30d78 100644
+index 9bf1289..e3fcf17 100644
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
-@@ -77,6 +77,115 @@
- struct kmem_cache *skbuff_head_cache __read_mostly;
+@@ -82,6 +82,87 @@ struct kmem_cache *skbuff_head_cache __read_mostly;
  static struct kmem_cache *skbuff_fclone_cache __read_mostly;
+ int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS;
+ EXPORT_SYMBOL(sysctl_max_skb_frags);
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +static struct kmem_cache *skbuff_cb_store_cache __read_mostly;
 +#endif
 +
-+static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
-+                                struct pipe_buffer *buf)
-+{
-+      put_page(buf->page);
-+}
-+
-+static void sock_pipe_buf_get(struct pipe_inode_info *pipe,
-+                              struct pipe_buffer *buf)
-+{
-+      get_page(buf->page);
-+}
-+
-+static int sock_pipe_buf_steal(struct pipe_inode_info *pipe,
-+                             struct pipe_buffer *buf)
-+{
-+      return 1;
-+}
-+
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +/* Control buffer save/restore for IMQ devices */
 +struct skb_cb_table {
@@ -1434,6 +1377,7 @@ index baf6fc4..7d30d78 100644
 +}
 +EXPORT_SYMBOL(skb_restore_cb);
 +
++static void skb_copy_stored_cb(struct sk_buff *   , const struct sk_buff *     ) __attribute__ ((unused));
 +static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old)
 +{
 +      struct skb_cb_table *next;
@@ -1455,21 +1399,10 @@ index baf6fc4..7d30d78 100644
 +      spin_unlock(&skb_cb_store_lock);
 +}
 +#endif
-+
-+/* Pipe buffer operations for a socket. */
-+static const struct pipe_buf_operations sock_pipe_buf_ops = {
-+      .can_merge = 0,
-+      .map = generic_pipe_buf_map,
-+      .unmap = generic_pipe_buf_unmap,
-+      .confirm = generic_pipe_buf_confirm,
-+      .release = sock_pipe_buf_release,
-+      .steal = sock_pipe_buf_steal,
-+      .get = sock_pipe_buf_get,
-+};
  
  /**
   *    skb_panic - private function for out-of-line support
-@@ -563,6 +672,28 @@ static void skb_release_head_state(struct sk_buff *skb)
+@@ -654,6 +735,28 @@ static void skb_release_head_state(struct sk_buff *skb)
                WARN_ON(in_irq());
                skb->destructor(skb);
        }
@@ -1481,7 +1414,7 @@ index baf6fc4..7d30d78 100644
 +      while (skb->cb_next != NULL) {
 +              if (net_ratelimit())
 +                      pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
-+                              (unsigned int)skb->cb_next);
++                              (unsigned int)(uintptr_t)skb->cb_next);
 +
 +              skb_restore_cb(skb);
 +      }
@@ -1498,18 +1431,18 @@ index baf6fc4..7d30d78 100644
  #if IS_ENABLED(CONFIG_NF_CONNTRACK)
        nf_conntrack_put(skb->nfct);
  #endif
-@@ -694,6 +825,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
+@@ -843,6 +946,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
        new->sp                 = secpath_get(old->sp);
  #endif
-       memcpy(new->cb, old->cb, sizeof(old->cb));
+       __nf_copy(new, old, false);
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +      new->cb_next = NULL;
 +      /*skb_copy_stored_cb(new, old);*/
 +#endif
-       new->csum               = old->csum;
-       new->local_df           = old->local_df;
-       new->pkt_type           = old->pkt_type;
-@@ -3233,6 +3368,13 @@ void __init skb_init(void)
+       /* Note : this field could be in headers_start/headers_end section
+        * It is not yet because we do not want to have a 16 bit hole
+@@ -3464,6 +3571,13 @@ void __init skb_init(void)
                                                0,
                                                SLAB_HWCACHE_ALIGN|SLAB_PANIC,
                                                NULL);
@@ -1524,10 +1457,10 @@ index baf6fc4..7d30d78 100644
  
  /**
 diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index 12f7ef0..deb1c9d 100644
+index 59eb4ed..8020b07 100644
 --- a/net/ipv6/ip6_output.c
 +++ b/net/ipv6/ip6_output.c
-@@ -64,9 +64,6 @@ static int ip6_finish_output2(struct sk_buff *skb)
+@@ -66,9 +66,6 @@ static int ip6_finish_output2(struct net *net, struct sock *sk, struct sk_buff *
        struct in6_addr *nexthop;
        int ret;
  
@@ -1537,25 +1470,25 @@ index 12f7ef0..deb1c9d 100644
        if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
                struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
  
-@@ -143,6 +140,13 @@ int ip6_output(struct sk_buff *skb)
+@@ -150,6 +147,13 @@ int ip6_output(struct net *net, struct sock *sk, struct sk_buff *skb)
                return 0;
        }
  
 +      /*
-+       * IMQ-patch: moved setting skb->dev and skb->protocol from
-+       * ip6_finish_output2 to fix crashing at netif_skb_features().
-+       */
++      * IMQ-patch: moved setting skb->dev and skb->protocol from
++      * ip6_finish_output2 to fix crashing at netif_skb_features().
++      */
 +      skb->protocol = htons(ETH_P_IPV6);
 +      skb->dev = dev;
 +
-       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
+       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING,
+                           net, sk, skb, NULL, dev,
                            ip6_finish_output,
-                           !(IP6CB(skb)->flags & IP6SKB_REROUTED));
 diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
-index e9410d1..ba801d5 100644
+index 4a2e5a3..fc5cc9a 100644
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -751,6 +751,18 @@ config NETFILTER_XT_TARGET_LOG
+@@ -833,6 +833,18 @@ config NETFILTER_XT_TARGET_LOG
  
          To compile it as a module, choose M here.  If unsure, say N.
  
@@ -1575,10 +1508,10 @@ index e9410d1..ba801d5 100644
        tristate '"MARK" target support'
        depends on NETFILTER_ADVANCED
 diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
-index bffdad7..050e613 100644
+index e5c5e1e..3128bc5 100644
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -103,6 +103,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
+@@ -119,6 +119,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
@@ -1587,43 +1520,29 @@ index bffdad7..050e613 100644
  obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
 diff --git a/net/netfilter/core.c b/net/netfilter/core.c
-index 1fbab0c..4493417 100644
+index 004af03..768a08b 100644
 --- a/net/netfilter/core.c
 +++ b/net/netfilter/core.c
-@@ -191,9 +191,11 @@ next_hook:
+@@ -360,8 +360,11 @@ int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state)
                ret = NF_DROP_GETERR(verdict);
                if (ret == 0)
                        ret = -EPERM;
 -      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
 +      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE ||
 +                 (verdict & NF_VERDICT_MASK) == NF_IMQ_QUEUE) {
-               int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
--                                              verdict >> NF_VERDICT_QBITS);
-+                                              verdict >> NF_VERDICT_QBITS,
-+                                              verdict & NF_VERDICT_MASK);
-               if (err < 0) {
-                       if (err == -ECANCELED)
-                               goto next_hook;
-diff --git a/net/netfilter/nf_internals.h b/net/netfilter/nf_internals.h
-index 61a3c92..5388a0e 100644
---- a/net/netfilter/nf_internals.h
-+++ b/net/netfilter/nf_internals.h
-@@ -23,7 +23,7 @@ unsigned int nf_iterate(struct list_head *head, struct sk_buff *skb,
- int nf_queue(struct sk_buff *skb, struct nf_hook_ops *elem, u_int8_t pf,
-            unsigned int hook, struct net_device *indev,
-            struct net_device *outdev, int (*okfn)(struct sk_buff *),
--           unsigned int queuenum);
-+           unsigned int queuenum, unsigned int queuetype);
- int __init netfilter_queue_init(void);
- /* nf_log.c */
+               ret = nf_queue(skb, state, &entry, verdict);
++              if (ret == -ECANCELED)
++                      goto next_hook;
+               if (ret == 1 && entry)
+                       goto next_hook;
+       }
 diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
-index 5d24b1f..28317dc 100644
+index 8f08d75..c12c9eb 100644
 --- a/net/netfilter/nf_queue.c
 +++ b/net/netfilter/nf_queue.c
 @@ -27,6 +27,23 @@
+  * receives, no matter what.
   */
- static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
  
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
@@ -1644,22 +1563,24 @@ index 5d24b1f..28317dc 100644
 +
  /* return EBUSY when somebody else is registered, return EEXIST if the
   * same handler is registered, return 0 in case of success. */
- void nf_register_queue_handler(const struct nf_queue_handler *qh)
-@@ -105,7 +122,8 @@ int nf_queue(struct sk_buff *skb,
-                     struct net_device *indev,
-                     struct net_device *outdev,
                    int (*okfn)(struct sk_buff *),
+ void nf_register_queue_handler(struct net *net, const struct nf_queue_handler *qh)
+@@ -108,16 +125,28 @@ void nf_queue_nf_hook_drop(struct net *net, const struct nf_hook_entry *entry)
+ }
static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
 -                    unsigned int queuenum)
-+                    unsigned int queuenum,
-+                    unsigned int queuetype)
++                    unsigned int verdict)
  {
        int status = -ENOENT;
        struct nf_queue_entry *entry = NULL;
-@@ -115,7 +133,17 @@ int nf_queue(struct sk_buff *skb,
-       /* QUEUE == DROP if no one is waiting, to be safe. */
-       rcu_read_lock();
+       const struct nf_afinfo *afinfo;
+       const struct nf_queue_handler *qh;
+       struct net *net = state->net;
++      unsigned int queuetype = verdict & NF_VERDICT_MASK;
++      unsigned int queuenum  = verdict >> NF_VERDICT_QBITS;
  
--      qh = rcu_dereference(queue_handler);
+       /* QUEUE == DROP if no one is waiting, to be safe. */
+-      qh = rcu_dereference(net->nf.queue_handler);
 +      if (queuetype == NF_IMQ_QUEUE) {
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +              qh = rcu_dereference(queue_imq_handler);
@@ -1668,28 +1589,39 @@ index 5d24b1f..28317dc 100644
 +              goto err_unlock;
 +#endif
 +      } else {
-+              qh = rcu_dereference(queue_handler);
++              qh = rcu_dereference(net->nf.queue_handler);
 +      }
 +
        if (!qh) {
                status = -ESRCH;
-               goto err_unlock;
-@@ -205,9 +233,11 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
+               goto err;
+@@ -164,8 +193,14 @@ int nf_queue(struct sk_buff *skb, struct nf_hook_state *state,
+       int ret;
+       RCU_INIT_POINTER(state->hook_entries, entry);
+-      ret = __nf_queue(skb, state, verdict >> NF_VERDICT_QBITS);
++      ret = __nf_queue(skb, state, verdict);
+       if (ret < 0) {
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++              if (ret == -ECANCELED && skb->imq_flags == 0) { // down interface
++                      *entryp = rcu_dereference(entry->next);
++                      return 1;
++              }
++#endif
+               if (ret == -ESRCH &&
+                   (verdict & NF_VERDICT_FLAG_QUEUE_BYPASS)) {
+                       *entryp = rcu_dereference(entry->next);
+@@ -218,6 +253,7 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
                local_bh_enable();
                break;
        case NF_QUEUE:
 +      case NF_IMQ_QUEUE:
-               err = nf_queue(skb, elem, entry->pf, entry->hook,
-                               entry->indev, entry->outdev, entry->okfn,
--                              verdict >> NF_VERDICT_QBITS);
-+                              verdict >> NF_VERDICT_QBITS,
-+                              verdict & NF_VERDICT_MASK);
-               if (err < 0) {
-                       if (err == -ECANCELED)
-                               goto next_hook;
+               err = nf_queue(skb, &entry->state, &hook_entry, verdict);
+               if (err == 1) {
+                       if (hook_entry)
 diff --git a/net/netfilter/xt_IMQ.c b/net/netfilter/xt_IMQ.c
 new file mode 100644
-index 0000000..1c3cd66
+index 0000000..f9c5817
 --- /dev/null
 +++ b/net/netfilter/xt_IMQ.c
 @@ -0,0 +1,72 @@
@@ -1759,9 +1691,28 @@ index 0000000..1c3cd66
 +module_init(imq_init);
 +module_exit(imq_fini);
 +
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_AUTHOR("https://github.com/imq/linuximq");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See https://github.com/imq/linuximq/wiki for more information.");
 +MODULE_LICENSE("GPL");
 +MODULE_ALIAS("ipt_IMQ");
 +MODULE_ALIAS("ip6t_IMQ");
 +
+diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
+index 6cfb6e9..4c675e9 100644
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -154,6 +154,14 @@ static struct sk_buff *dequeue_skb(struct Qdisc *q, bool *validate,
+       return skb;
+ }
++struct sk_buff *qdisc_dequeue_skb(struct Qdisc *q, bool *validate)
++{
++      int packets;
++
++      return dequeue_skb(q, validate, &packets);
++}
++EXPORT_SYMBOL(qdisc_dequeue_skb);
++
+ /*
+  * Transmit possibly several skbs, and handle the return status as
+  * required. Owning running seqcount bit guarantees that
similarity index 82%
rename from src/patches/linux-3.14-layer7-filter.patch
rename to src/patches/linux/linux-4.9.13-layer7.patch
index ba799f73fa7c8c4ae5eeeca859351dc7f9654518..e5b5d227cfd474bb634e5ab549b12548926b11a1 100644 (file)
@@ -1,7 +1,9 @@
-diff -Naur linux-3.14.22.org/include/linux/netfilter/xt_layer7.h linux-3.14.22/include/linux/netfilter/xt_layer7.h
---- linux-3.14.22.org/include/linux/netfilter/xt_layer7.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/include/linux/netfilter/xt_layer7.h  2014-10-24 15:33:21.281274380 +0200
-@@ -0,0 +1,14 @@
+diff --git a/include/linux/netfilter/xt_layer7.h b/include/linux/netfilter/xt_layer7.h
+new file mode 100644
+index 0000000..147cd64
+--- /dev/null
++++ b/include/linux/netfilter/xt_layer7.h
+@@ -0,0 +1,13 @@
 +#ifndef _XT_LAYER7_H
 +#define _XT_LAYER7_H
 +
@@ -12,16 +14,30 @@ diff -Naur linux-3.14.22.org/include/linux/netfilter/xt_layer7.h linux-3.14.22/i
 +    char protocol[MAX_PROTOCOL_LEN];
 +    char pattern[MAX_PATTERN_LEN];
 +    u_int8_t invert;
-+    u_int8_t pkt;
 +};
 +
 +#endif /* _XT_LAYER7_H */
-diff -Naur linux-3.14.22.org/include/net/netfilter/nf_conntrack.h linux-3.14.22/include/net/netfilter/nf_conntrack.h
---- linux-3.14.22.org/include/net/netfilter/nf_conntrack.h     2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/include/net/netfilter/nf_conntrack.h 2014-10-24 15:33:21.281274380 +0200
-@@ -105,6 +105,22 @@
-       struct net *ct_net;
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 32810f2..b1e6b5c 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -663,6 +663,9 @@ struct sk_buff {
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+       struct nf_conntrack     *nfct;
  #endif
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      char                    layer7_flags[1];
++#endif
+ #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
+       struct nf_bridge_info   *nf_bridge;
+ #endif
+diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
+index d9d52c0..99b7a82 100644
+--- a/include/net/netfilter/nf_conntrack.h
++++ b/include/net/netfilter/nf_conntrack.h
+@@ -120,6 +120,23 @@ struct nf_conn {
+       /* Extensions */
+       struct nf_ct_ext *ext;
  
 +#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || \
 +    defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
@@ -36,27 +52,18 @@ diff -Naur linux-3.14.22.org/include/net/netfilter/nf_conntrack.h linux-3.14.22/
 +               */
 +              char *app_data;
 +              unsigned int app_data_len;
++              unsigned int packets;
 +      } layer7;
 +#endif
 +
        /* Storage reserved for other modules, must be the last member */
        union nf_conntrack_proto proto;
  };
-diff -Naur linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild linux-3.14.22/include/uapi/linux/netfilter/Kbuild
---- linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild      2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/include/uapi/linux/netfilter/Kbuild  2014-10-24 15:34:39.721663344 +0200
-@@ -59,6 +59,7 @@
- header-y += xt_iprange.h
- header-y += xt_ipvs.h
- header-y += xt_l2tp.h
-+header-y += xt_layer7.h
- header-y += xt_length.h
- header-y += xt_limit.h
- header-y += xt_mac.h
-diff -Naur linux-3.14.22.org/net/netfilter/Kconfig linux-3.14.22/net/netfilter/Kconfig
---- linux-3.14.22.org/net/netfilter/Kconfig    2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/Kconfig        2014-10-24 15:33:21.281274380 +0200
-@@ -1153,6 +1153,26 @@
+diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
+index e8d56d9..ab4ae1d 100644
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -1238,6 +1238,26 @@ config NETFILTER_XT_MATCH_L2TP
  
        To compile it as a module, choose M here. If unsure, say N.
  
@@ -83,23 +90,11 @@ diff -Naur linux-3.14.22.org/net/netfilter/Kconfig linux-3.14.22/net/netfilter/K
  config NETFILTER_XT_MATCH_LENGTH
        tristate '"length" match support'
        depends on NETFILTER_ADVANCED
-@@ -1347,6 +1367,12 @@
-         To compile it as a module, choose M here.  If unsure, say N.
-+config NETFILTER_XT_MATCH_LAYER7_DEBUG
-+      bool 'Layer 7 debugging output'
-+      depends on NETFILTER_XT_MATCH_LAYER7
-+      help
-+        Say Y to get lots of debugging output.
-+
- config NETFILTER_XT_MATCH_STATISTIC
-       tristate '"statistic" match support'
-       depends on NETFILTER_ADVANCED
-diff -Naur linux-3.14.22.org/net/netfilter/Makefile linux-3.14.22/net/netfilter/Makefile
---- linux-3.14.22.org/net/netfilter/Makefile   2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/Makefile       2014-10-24 15:33:21.281274380 +0200
-@@ -158,6 +158,7 @@
+diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
+index c23c3c8..916b9d5 100644
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -174,6 +174,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
@@ -107,42 +102,43 @@ diff -Naur linux-3.14.22.org/net/netfilter/Makefile linux-3.14.22/net/netfilter/
  obj-$(CONFIG_NETFILTER_XT_MATCH_STATISTIC) += xt_statistic.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
-diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_core.c linux-3.14.22/net/netfilter/nf_conntrack_core.c
---- linux-3.14.22.org/net/netfilter/nf_conntrack_core.c        2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/nf_conntrack_core.c    2014-10-24 15:33:21.281274380 +0200
-@@ -220,6 +220,13 @@
-        * too. */
+diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
+index 0f87e5d..1f355a0 100644
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -406,6 +406,11 @@ destroy_conntrack(struct nf_conntrack *nfct)
+        */
        nf_ct_remove_expectations(ct);
  
 +#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
-+      if(ct->layer7.app_proto)
-+              kfree(ct->layer7.app_proto);
 +      if(ct->layer7.app_data)
 +              kfree(ct->layer7.app_data);
 +#endif
 +
-       /* We overload first tuple to link into unconfirmed or dying list.*/
-       BUG_ON(hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
-       hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
-diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c linux-3.14.22/net/netfilter/nf_conntrack_standalone.c
---- linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c  2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/net/netfilter/nf_conntrack_standalone.c      2014-10-24 15:33:21.285274399 +0200
-@@ -240,6 +240,12 @@
-       if (ct_show_delta_time(s, ct))
-               goto release;
+       nf_ct_del_from_dying_or_unconfirmed_list(ct);
+       local_bh_enable();
+diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
+index 5f446cd..92f29f9 100644
+--- a/net/netfilter/nf_conntrack_standalone.c
++++ b/net/netfilter/nf_conntrack_standalone.c
+@@ -274,6 +274,11 @@ static int ct_seq_show(struct seq_file *s, void *v)
+       ct_show_zone(s, ct, NF_CT_DEFAULT_ZONE_DIR);
+       ct_show_delta_time(s, ct);
  
 +#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
-+      if(ct->layer7.app_proto &&
-+           seq_printf(s, "l7proto=%s ", ct->layer7.app_proto))
-+              return -ENOSPC;
++      if(ct->layer7.app_proto)
++              seq_printf(s, "l7proto=%s ", ct->layer7.app_proto);
 +#endif
 +
-       if (seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use)))
-               goto release;
+       seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use));
  
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.c linux-3.14.22/net/netfilter/regexp/regexp.c
---- linux-3.14.22.org/net/netfilter/regexp/regexp.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regexp.c        2014-10-24 15:33:21.285274399 +0200
+       if (seq_has_overflowed(s))
+diff --git a/net/netfilter/regexp/regexp.c b/net/netfilter/regexp/regexp.c
+new file mode 100644
+index 0000000..9006988
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.c
 @@ -0,0 +1,1197 @@
 +/*
 + * regcomp and regexec -- regsub and regerror are elsewhere
@@ -1341,9 +1337,11 @@ diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.c linux-3.14.22/net/net
 +#endif
 +
 +
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.h linux-3.14.22/net/netfilter/regexp/regexp.h
---- linux-3.14.22.org/net/netfilter/regexp/regexp.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regexp.h        2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regexp.h b/net/netfilter/regexp/regexp.h
+new file mode 100644
+index 0000000..a72eba7
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.h
 @@ -0,0 +1,41 @@
 +/*
 + * Definitions etc. for regexp(3) routines.
@@ -1386,18 +1384,22 @@ diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.h linux-3.14.22/net/net
 +void regerror(char *s);
 +
 +#endif
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regmagic.h linux-3.14.22/net/netfilter/regexp/regmagic.h
---- linux-3.14.22.org/net/netfilter/regexp/regmagic.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regmagic.h      2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regmagic.h b/net/netfilter/regexp/regmagic.h
+new file mode 100644
+index 0000000..5acf447
+--- /dev/null
++++ b/net/netfilter/regexp/regmagic.h
 @@ -0,0 +1,5 @@
 +/*
 + * The first byte of the regexp internal "program" is actually this magic
 + * number; the start node begins in the second byte.
 + */
 +#define       MAGIC   0234
-diff -Naur linux-3.14.22.org/net/netfilter/regexp/regsub.c linux-3.14.22/net/netfilter/regexp/regsub.c
---- linux-3.14.22.org/net/netfilter/regexp/regsub.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/regexp/regsub.c        2014-10-24 15:33:21.285274399 +0200
+diff --git a/net/netfilter/regexp/regsub.c b/net/netfilter/regexp/regsub.c
+new file mode 100644
+index 0000000..339631f
+--- /dev/null
++++ b/net/netfilter/regexp/regsub.c
 @@ -0,0 +1,95 @@
 +/*
 + * regsub
@@ -1494,10 +1496,12 @@ diff -Naur linux-3.14.22.org/net/netfilter/regexp/regsub.c linux-3.14.22/net/net
 +      }
 +      *dst++ = '\0';
 +}
-diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilter/xt_layer7.c
---- linux-3.14.22.org/net/netfilter/xt_layer7.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/net/netfilter/xt_layer7.c    2014-10-24 15:33:21.285274399 +0200
-@@ -0,0 +1,665 @@
+diff --git a/net/netfilter/xt_layer7.c b/net/netfilter/xt_layer7.c
+new file mode 100644
+index 0000000..4a4f3f9
+--- /dev/null
++++ b/net/netfilter/xt_layer7.c
+@@ -0,0 +1,682 @@
 +/*
 +  Kernel module to match application layer (OSI layer 7) data in connections.
 +
@@ -1521,13 +1525,14 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +#include <net/ip.h>
 +#include <net/tcp.h>
 +#include <linux/module.h>
-+#include <linux/seq_file.h>
 +#include <linux/skbuff.h>
 +#include <linux/netfilter.h>
 +#include <net/netfilter/nf_conntrack.h>
 +#include <net/netfilter/nf_conntrack_core.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
 +#include <net/netfilter/nf_conntrack_extend.h>
 +#include <net/netfilter/nf_conntrack_acct.h>
++#endif
 +#include <linux/netfilter/x_tables.h>
 +#include <linux/netfilter/xt_layer7.h>
 +#include <linux/ctype.h>
@@ -1536,10 +1541,10 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +#include "regexp/regexp.c"
 +
 +MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>, Arne Fitzenreiter <arne_f@ipfire.org>");
 +MODULE_DESCRIPTION("iptables application layer match module");
 +MODULE_ALIAS("ipt_layer7");
-+MODULE_VERSION("2.21");
++MODULE_VERSION("2.30");
 +
 +static int maxdatalen = 2048; // this is the default
 +module_param(maxdatalen, int, 0444);
@@ -1560,18 +1565,12 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      struct pattern_cache * next;
 +} * first_pattern_cache = NULL;
 +
-+DEFINE_SPINLOCK(l7_lock);
++static struct proto_cache {
++      char * proto_string;
++      struct proto_cache * next;
++} * first_proto_cache = NULL;
 +
-+static int total_acct_packets(struct nf_conn *ct)
-+{
-+      struct nf_conn_counter *acct;
-+
-+      BUG_ON(ct == NULL);
-+      acct = nf_conn_acct_find(ct);
-+      if (!acct)
-+              return 0;
-+      return (atomic64_read(&acct[IP_CT_DIR_ORIGINAL].packets) + atomic64_read(&acct[IP_CT_DIR_REPLY].packets));
-+}
++DEFINE_SPINLOCK(l7_lock);
 +
 +#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
 +/* Converts an unfriendly string into a friendly one by
@@ -1704,69 +1703,91 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      return node->pattern;
 +}
 +
-+static int can_handle(const struct sk_buff *skb)
++static char * get_protostr_ptr(const char * protocol)
 +{
-+      struct iphdr iphdr_tmp;
-+      struct iphdr *iphdr;
-+      int offset;
-+
-+      if (!ip_hdr(skb))
-+              return 0;
++      struct proto_cache * node             = first_proto_cache;
++      struct proto_cache * last_proto_cache = first_proto_cache;
++      struct proto_cache * tmp;
 +
-+      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
-+
-+      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
-+      if (!iphdr)
-+              return 0;
++      while (node != NULL) {
++              if (!strcmp(node->proto_string, protocol))
++              return node->proto_string;
 +
-+      if (iphdr->protocol == IPPROTO_TCP ||
-+          iphdr->protocol == IPPROTO_UDP ||
-+          iphdr->protocol == IPPROTO_ICMP)
-+              return 1;
++              last_proto_cache = node;/* points at the last non-NULL node */
++              node = node->next;
++      }
 +
-+      return 0;
-+}
++      /* If we reach the end of the list, then we have not yet cached protocol
++         Be paranoid about running out of memory to avoid list corruption. */
++      tmp = kmalloc(sizeof(struct proto_cache), GFP_ATOMIC);
 +
-+static int app_data_offset(const struct sk_buff *skb)
-+{
-+      int offset;
-+      struct iphdr iphdr_tmp;
-+      struct iphdr *iphdr;
-+      struct tcphdr tcphdr_tmp;
-+      struct tcphdr *tcphdr;
++      if(!tmp) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "proto_cache add, bailing.\n");
++              return NULL;
++      }
 +
-+      if (!ip_hdr(skb))
-+              return -1;
++      tmp->proto_string = kmalloc(strlen(protocol) + 1   , GFP_ATOMIC);
++      tmp->next = NULL;
 +
-+      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++      if(!tmp->proto_string) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "proto_cache add, bailing.\n");
++              kfree(tmp->proto_string);
++              kfree(tmp);
++              return NULL;
++      }
 +
-+      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
-+      if (!iphdr)
-+              return -1;
++      /* Ok.  The new node is all ready now. */
++      node = tmp;
 +
-+      offset += iphdr->ihl * 4;
++      if(first_proto_cache == NULL) /* list is empty */
++              first_proto_cache = node; /* make node the beginning */
++      else
++              last_proto_cache->next = node; /* attach node to the end */
 +
-+      if (iphdr->protocol == IPPROTO_TCP) {
-+              tcphdr = skb_header_pointer(skb, offset, sizeof(*tcphdr),
-+                                          &tcphdr_tmp);
-+              if (!tcphdr)
-+                      return -1;
++      strcpy(node->proto_string, protocol);
++      return node->proto_string;
++}
 +
-+              offset += tcphdr->doff * 4;
++static int can_handle(const struct sk_buff *skb)
++{
++      if(!ip_hdr(skb)) /* not IP */
++              return 0;
++      if(ip_hdr(skb)->protocol != IPPROTO_TCP &&
++         ip_hdr(skb)->protocol != IPPROTO_UDP &&
++         ip_hdr(skb)->protocol != IPPROTO_ICMP)
++              return 0;
++      return 1;
++}
 +
-+              return offset;
++/* Returns offset the into the skb->data that the application data starts */
++static int app_data_offset(const struct sk_buff *skb)
++{
++      /* In case we are ported somewhere (ebtables?) where ip_hdr(skb)
++      isn't set, this can be gotten from 4*(skb->data[0] & 0x0f) as well. */
++      int ip_hl = 4*ip_hdr(skb)->ihl;
++
++      if( ip_hdr(skb)->protocol == IPPROTO_TCP ) {
++              /* 12 == offset into TCP header for the header length field.
++              Can't get this with skb->h.th->doff because the tcphdr
++              struct doesn't get set when routing (this is confirmed to be
++              true in Netfilter as well as QoS.) */
++              int tcp_hl = 4*(skb->data[ip_hl + 12] >> 4);
++
++              return ip_hl + tcp_hl;
++      } else if( ip_hdr(skb)->protocol == IPPROTO_UDP  ) {
++              return ip_hl + 8; /* UDP header is always 8 bytes */
++      } else if( ip_hdr(skb)->protocol == IPPROTO_ICMP ) {
++              return ip_hl + 8; /* ICMP header is 8 bytes */
++      } else {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: tried to handle unknown "
++                                      "protocol!\n");
++              return ip_hl + 8; /* something reasonable */
 +      }
-+
-+      if (iphdr->protocol == IPPROTO_UDP)
-+              return offset + 8;
-+
-+      if (iphdr->protocol == IPPROTO_ICMP)
-+              return offset + 8;
-+
-+      if (net_ratelimit())
-+              pr_err(KERN_ERR "layer7: tried to handle unknown protocol!\n");
-+
-+      return offset + 8; /* something reasonable */
 +}
 +
 +/* handles whether there's a match when we aren't appending data anymore */
@@ -1787,7 +1808,7 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +                        hex_print(master_conntrack->layer7.app_data);
 +                      DPRINTK("\nl7-filter gave up after %d bytes "
 +                              "(%d packets):\n%s\n",
-+                              strlen(f), total_acct_packets(master_conntrack), f);
++                              strlen(f), master_conntrack->layer7.packets, f);
 +                      kfree(f);
 +                      DPRINTK("In hex: %s\n", g);
 +                      kfree(g);
@@ -1801,18 +1822,7 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      if(master_conntrack->layer7.app_proto){
 +              /* Here child connections set their .app_proto (for /proc) */
 +              if(!conntrack->layer7.app_proto) {
-+                      conntrack->layer7.app_proto = 
-+                        kmalloc(strlen(master_conntrack->layer7.app_proto)+1, 
-+                          GFP_ATOMIC);
-+                      if(!conntrack->layer7.app_proto){
-+                              if (net_ratelimit())
-+                                      printk(KERN_ERR "layer7: out of memory "
-+                                                      "in match_no_append, "
-+                                                      "bailing.\n");
-+                              return 1;
-+                      }
-+                      strcpy(conntrack->layer7.app_proto, 
-+                              master_conntrack->layer7.app_proto);
++                      conntrack->layer7.app_proto = master_conntrack->layer7.app_proto;
 +              }
 +
 +              return (!strcmp(master_conntrack->layer7.app_proto, 
@@ -1821,75 +1831,39 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      else {
 +              /* If not classified, set to "unknown" to distinguish from
 +              connections that are still being tested. */
-+              master_conntrack->layer7.app_proto = 
-+                      kmalloc(strlen("unknown")+1, GFP_ATOMIC);
-+              if(!master_conntrack->layer7.app_proto){
-+                      if (net_ratelimit())
-+                              printk(KERN_ERR "layer7: out of memory in "
-+                                              "match_no_append, bailing.\n");
-+                      return 1;
-+              }
-+              strcpy(master_conntrack->layer7.app_proto, "unknown");
++              master_conntrack->layer7.app_proto = get_protostr_ptr("unknown");
 +              return 0;
 +      }
 +}
 +
 +/* add the new app data to the conntrack.  Return number of bytes added. */
-+static int add_datastr(char *target, int offset, char *app_data, int len)
++static int add_data(struct nf_conn * master_conntrack,
++                    char * app_data, int appdatalen)
 +{
 +      int length = 0, i;
-+      if (!target) return 0;
++      int oldlength = master_conntrack->layer7.app_data_len;
++
++      /* This is a fix for a race condition by Deti Fliegl. However, I'm not 
++         clear on whether the race condition exists or whether this really 
++         fixes it.  I might just be being dense... Anyway, if it's not really 
++         a fix, all it does is waste a very small amount of time. */
++      if(!master_conntrack->layer7.app_data) return 0;
 +
 +      /* Strip nulls. Make everything lower case (our regex lib doesn't
 +      do case insensitivity).  Add it to the end of the current data. */
-+      for(i = 0; i < maxdatalen-offset-1 && i < len; i++) {
++      for(i = 0; i < maxdatalen-oldlength-1 &&
++                 i < appdatalen; i++) {
 +              if(app_data[i] != '\0') {
 +                      /* the kernel version of tolower mungs 'upper ascii' */
-+                      target[length+offset] =
++                      master_conntrack->layer7.app_data[length+oldlength] =
 +                              isascii(app_data[i])? 
 +                                      tolower(app_data[i]) : app_data[i];
 +                      length++;
 +              }
 +      }
-+      target[length+offset] = '\0';
-+
-+      return length;
-+}
-+
-+/* add the new app data to the buffer.  Return number of bytes added. */
-+static int add_data(char *target, int offset, const struct sk_buff *skb)
-+{
-+      int length, length_sum = 0;
-+      int data_start = app_data_offset(skb);
-+      int remaining = skb->len - data_start;
-+      int to_copy;
-+      uint8_t buf[512];
-+      uint8_t *data;
-+
-+      while ((offset < maxdatalen - 1) && (remaining > 0)) {
-+              to_copy = min_t(int, remaining, sizeof(buf));
-+
-+              data = skb_header_pointer(skb, data_start, to_copy, buf);
-+              length = add_datastr(target, offset, data, to_copy);
-+
-+              remaining -= to_copy;
-+              data_start += to_copy;
-+              offset += length;
-+              length_sum += length;
-+      }
 +
-+      return length_sum;
-+}
-+
-+/* add the new app data to the conntrack.  Return number of bytes added. */
-+static int add_data_conntrack(struct nf_conn *master_conntrack,
-+                            const struct sk_buff *skb)
-+{
-+      int length;
-+
-+      length = add_data(master_conntrack->layer7.app_data,
-+                        master_conntrack->layer7.app_data_len, skb);
-+      master_conntrack->layer7.app_data_len += length;
++      master_conntrack->layer7.app_data[length+oldlength] = '\0';
++      master_conntrack->layer7.app_data_len = length + oldlength;
 +
 +      return length;
 +}
@@ -1941,23 +1915,42 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      return count;
 +}
 +
-+static bool match(const struct sk_buff *skbin, struct xt_action_param *par)
++static bool
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++match(const struct sk_buff *skbin, struct xt_action_param *par)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++match(const struct sk_buff *skbin, const struct xt_match_param *par)
++#else
++match(const struct sk_buff *skbin,
++      const struct net_device *in,
++      const struct net_device *out,
++      const struct xt_match *match,
++      const void *matchinfo,
++      int offset,
++      unsigned int protoff,
++      bool *hotdrop)
++#endif
 +{
 +      /* sidestep const without getting a compiler warning... */
-+      struct sk_buff *skb = (struct sk_buff *)skbin;
++      struct sk_buff * skb = (struct sk_buff *)skbin; 
 +
-+      const struct xt_layer7_info * info = par->matchinfo;
++      const struct xt_layer7_info * info = 
++      #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++              par->matchinfo;
++      #else
++              matchinfo;
++      #endif
 +
 +      enum ip_conntrack_info master_ctinfo, ctinfo;
 +      struct nf_conn *master_conntrack, *conntrack;
-+      unsigned char *tmp_data;
-+      unsigned int pattern_result;
++      unsigned char * app_data;
++      unsigned int pattern_result, appdatalen;
 +      regexp * comppattern;
 +
 +      /* Be paranoid/incompetent - lock the entire match function. */
 +      spin_lock_bh(&l7_lock);
 +
-+      if (!can_handle(skbin)) {
++      if(!can_handle(skb)){
 +              DPRINTK("layer7: This is some protocol I can't handle.\n");
 +              spin_unlock_bh(&l7_lock);
 +              return info->invert;
@@ -1966,9 +1959,8 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      /* Treat parent & all its children together as one connection, except
 +      for the purpose of setting conntrack->layer7.app_proto in the actual
 +      connection. This makes /proc/net/ip_conntrack more satisfying. */
-+      conntrack = nf_ct_get(skbin, &ctinfo);
-+      master_conntrack = nf_ct_get(skbin, &master_ctinfo);
-+      if (!conntrack || !master_conntrack) {
++      if(!(conntrack = nf_ct_get(skb, &ctinfo)) ||
++         !(master_conntrack=nf_ct_get(skb,&master_ctinfo))){
 +              DPRINTK("layer7: couldn't get conntrack.\n");
 +              spin_unlock_bh(&l7_lock);
 +              return info->invert;
@@ -1978,48 +1970,47 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      while (master_ct(master_conntrack) != NULL)
 +              master_conntrack = master_ct(master_conntrack);
 +
++      /* free unused conntrack data if different master conntrack exists */
++      if (master_conntrack != conntrack) {
++              if (conntrack->layer7.app_data) {
++                      DPRINTK("layer7: free unused conntrack memory.\n");
++                      kfree(conntrack->layer7.app_data);
++                      conntrack->layer7.app_data = NULL; /* don't free again */
++              }
++      }
++
 +      /* if we've classified it or seen too many packets */
-+      if(!info->pkt && (total_acct_packets(master_conntrack) > num_packets ||
-+         master_conntrack->layer7.app_proto)) {
++      if( master_conntrack->layer7.packets >= num_packets ||
++         master_conntrack->layer7.app_proto) {
 +
 +              pattern_result = match_no_append(conntrack, master_conntrack, 
 +                                               ctinfo, master_ctinfo, info);
 +
-+              /* skb->cb[0] == seen. Don't do things twice if there are 
-+              multiple l7 rules. I'm not sure that using cb for this purpose 
-+              is correct, even though it says "put your private variables 
-+              there". But it doesn't look like it is being used for anything
-+              else in the skbs that make it here. */
-+              skb->cb[0] = 1; /* marking it seen here's probably irrelevant */
++              skb->layer7_flags[0] = 1; /* marking it seen here's probably irrelevant */
 +
 +              spin_unlock_bh(&l7_lock);
 +              return (pattern_result ^ info->invert);
 +      }
 +
-+      /* the return value gets checked later, when we're ready to use it */
-+      comppattern = compile_and_cache(info->pattern, info->protocol);
-+
-+      if (info->pkt) {
-+              tmp_data = kmalloc(maxdatalen, GFP_ATOMIC);
-+              if(!tmp_data){
++      if(skb_is_nonlinear(skb)){
++              if(skb_linearize(skb) != 0){
 +                      if (net_ratelimit())
-+                              printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++                              printk(KERN_ERR "layer7: failed to linearize "
++                                              "packet, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
 +                      return info->invert;
 +              }
++      }
 +
-+              tmp_data[0] = '\0';
-+              add_data(tmp_data, 0, skbin);
-+              pattern_result = ((comppattern && regexec(comppattern, tmp_data)) ? 1 : 0);
-+
-+              kfree(tmp_data);
-+              tmp_data = NULL;
-+              spin_unlock_bh(&l7_lock);
++      /* now that the skb is linearized, it's safe to set these. */
++      app_data = skb->data + app_data_offset(skb);
++      appdatalen = skb_tail_pointer(skb) - app_data;
 +
-+              return (pattern_result ^ info->invert);
-+      }
++      /* the return value gets checked later, when we're ready to use it */
++      comppattern = compile_and_cache(info->pattern, info->protocol);
 +
-+      /* On the first packet of a connection, allocate space for app data */
-+      if(total_acct_packets(master_conntrack) == 1 && !skb->cb[0] && 
++      /* allocate space for app data if not done */
++      if(master_conntrack->layer7.packets < num_packets && 
 +         !master_conntrack->layer7.app_data){
 +              master_conntrack->layer7.app_data = 
 +                      kmalloc(maxdatalen, GFP_ATOMIC);
@@ -2034,19 +2025,12 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +              master_conntrack->layer7.app_data[0] = '\0';
 +      }
 +
-+      /* Can be here, but unallocated, if numpackets is increased near
-+      the beginning of a connection */
-+      if(master_conntrack->layer7.app_data == NULL){
-+              spin_unlock_bh(&l7_lock);
-+              return info->invert; /* unmatched */
-+      }
-+
-+      if(!skb->cb[0]){
++      if(!skb->layer7_flags[0]){
 +              int newbytes;
-+              newbytes = add_data_conntrack(master_conntrack, skb);
-+
++              master_conntrack->layer7.packets++;
++              newbytes = add_data(master_conntrack, app_data, appdatalen);
 +              if(newbytes == 0) { /* didn't add any data */
-+                      skb->cb[0] = 1;
++                      skb->layer7_flags[0] = 1;
 +                      /* Didn't match before, not going to match now */
 +                      spin_unlock_bh(&l7_lock);
 +                      return info->invert;
@@ -2063,7 +2047,7 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +              pattern_result = 2;
 +              DPRINTK("layer7: matched unset: not yet classified "
 +                      "(%d/%d packets)\n",
-+                        total_acct_packets(master_conntrack), num_packets);
++                        master_conntrack->layer7.packets, num_packets);
 +      /* If the regexp failed to compile, don't bother running it */
 +      } else if(comppattern && 
 +                regexec(comppattern, master_conntrack->layer7.app_data)){
@@ -2072,48 +2056,67 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +      } else pattern_result = 0;
 +
 +      if(pattern_result == 1) {
-+              master_conntrack->layer7.app_proto = 
-+                      kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
-+              if(!master_conntrack->layer7.app_proto){
-+                      if (net_ratelimit())
-+                              printk(KERN_ERR "layer7: out of memory in "
-+                                              "match, bailing.\n");
-+                      spin_unlock_bh(&l7_lock);
-+                      return (pattern_result ^ info->invert);
-+              }
-+              strcpy(master_conntrack->layer7.app_proto, info->protocol);
++              master_conntrack->layer7.app_proto=get_protostr_ptr(info->protocol);
 +      } else if(pattern_result > 1) { /* cleanup from "unset" */
 +              pattern_result = 1;
 +      }
 +
 +      /* mark the packet seen */
-+      skb->cb[0] = 1;
++      skb->layer7_flags[0] = 1;
 +
 +      spin_unlock_bh(&l7_lock);
 +      return (pattern_result ^ info->invert);
 +}
 +
 +// load nf_conntrack_ipv4
-+static int check(const struct xt_mtchk_param *par)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++static int
++#else
++static bool
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++check(const struct xt_mtchk_param *par)
 +{
 +        if (nf_ct_l3proto_try_module_get(par->match->family) < 0) {
 +                printk(KERN_WARNING "can't load conntrack support for "
 +                                    "proto=%d\n", par->match->family);
++#else
++check(const char *tablename, const void *inf,
++               const struct xt_match *match, void *matchinfo,
++               unsigned int hook_mask)
++{
++        if (nf_ct_l3proto_try_module_get(match->family) < 0) {
++                printk(KERN_WARNING "can't load conntrack support for "
++                                    "proto=%d\n", match->family);
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
 +              return -EINVAL;
 +      }
 +      return 0;
++#else
++                return 0;
++        }
++      return 1;
++#endif
 +}
 +
 +
-+static void destroy(const struct xt_mtdtor_param *par)
-+{
-+      nf_ct_l3proto_module_put(par->match->family);
-+}
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++      static void destroy(const struct xt_mtdtor_param *par)
++      {
++              nf_ct_l3proto_module_put(par->match->family);
++      }
++#else
++      static void destroy(const struct xt_match *match, void *matchinfo)
++      {
++              nf_ct_l3proto_module_put(match->family);
++      }
++#endif
 +
 +static struct xt_match xt_layer7_match[] __read_mostly = {
 +{
 +      .name           = "layer7",
-+      .family         = AF_INET,
++      .family         = NFPROTO_IPV4,
 +      .checkentry     = check,
 +      .match          = match,
 +      .destroy        = destroy,
@@ -2157,9 +2160,27 @@ diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilt
 +
 +static void __exit xt_layer7_fini(void)
 +{
++      struct pattern_cache * node               = first_pattern_cache;
++      struct pattern_cache * next               = first_pattern_cache;
++
 +      remove_proc_entry("layer7_numpackets", init_net.proc_net);
 +      xt_unregister_matches(xt_layer7_match, ARRAY_SIZE(xt_layer7_match));
++
++      /* Free pattern cache at module unload.
++      Important: don't free string cache because conntrack pointers are
++      still points to this strings */
++      spin_lock_bh(&l7_lock);
++      while (node != NULL) {
++              next=node->next;
++              if (node->regex_string!=NULL) kfree(node->regex_string);
++              if (node->pattern!=NULL) kfree(node->pattern);
++              kfree(node);
++              node=next;
++      }
++      spin_unlock_bh(&l7_lock);
++
 +}
 +
 +module_init(xt_layer7_init);
 +module_exit(xt_layer7_fini);
++
similarity index 85%
rename from src/patches/linux-3.14.22-ledtrig_netdev.patch
rename to src/patches/linux/linux-4.9.16-ledtrig_netdev.patch
index 4543c9c3ff52f4c7cd894b132773f8ddff70ca32..8a5f50ede5061f9a8b33fb677df4a183ecad4f36 100644 (file)
@@ -1,8 +1,8 @@
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/Kconfig linux-3.14.22/drivers/leds/trigger/Kconfig
---- linux-3.14.22.org/drivers/leds/trigger/Kconfig     2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/leds/trigger/Kconfig 2014-11-06 17:52:02.303748375 +0100
-@@ -108,4 +108,11 @@
-         This enables direct flash/torch on/off by the driver, kernel space.
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/Kconfig linux-4.9.16/drivers/leds/trigger/Kconfig
+--- linux-4.9.16.org/drivers/leds/trigger/Kconfig      2017-03-18 12:15:30.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/Kconfig  2017-03-18 16:53:42.290859631 +0100
+@@ -126,4 +126,11 @@
+         a different trigger.
          If unsure, say Y.
  
 +config LEDS_TRIGGER_NETDEV
@@ -13,10 +13,10 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/Kconfig linux-3.14.22/drivers/
 +        If unsure, say Y.
 +
  endif # LEDS_TRIGGERS
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22/drivers/leds/trigger/ledtrig-netdev.c
---- linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.22/drivers/leds/trigger/ledtrig-netdev.c        2014-11-06 17:47:09.913748236 +0100
-@@ -0,0 +1,438 @@
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c
+--- linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c 2017-03-18 16:53:44.280859607 +0100
+@@ -0,0 +1,444 @@
 +/*
 + * LED Kernel Netdev Trigger
 + *
@@ -87,7 +87,7 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +#define MODE_RX   4
 +
 +struct led_netdev_data {
-+      rwlock_t lock;
++      spinlock_t lock;
 +
 +      struct timer_list timer;
 +      struct notifier_block notifier;
@@ -111,8 +111,6 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +
 +      if ((trigger_data->mode & (MODE_TX | MODE_RX)) != 0 && trigger_data->link_up)
 +              mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
-+      else
-+              del_timer(&trigger_data->timer);
 +}
 +
 +static ssize_t led_device_name_show(struct device *dev,
@@ -121,9 +119,9 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      struct led_classdev *led_cdev = dev_get_drvdata(dev);
 +      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
 +
-+      read_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
 +      sprintf(buf, "%s\n", trigger_data->device_name);
-+      read_unlock(&trigger_data->lock);
++      spin_unlock_bh(&trigger_data->lock);
 +
 +      return strlen(buf) + 1;
 +}
@@ -137,21 +135,25 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      if (size < 0 || size >= IFNAMSIZ)
 +              return -EINVAL;
 +
-+      write_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
++      del_timer_sync(&trigger_data->timer);
 +
 +      strcpy(trigger_data->device_name, buf);
 +      if (size > 0 && trigger_data->device_name[size-1] == '\n')
 +              trigger_data->device_name[size-1] = 0;
++      trigger_data->link_up = 0;
++      trigger_data->last_activity = 0;
 +
 +      if (trigger_data->device_name[0] != 0) {
 +              /* check for existing device to update from */
 +              trigger_data->net_dev = dev_get_by_name(&init_net, trigger_data->device_name);
 +              if (trigger_data->net_dev != NULL)
 +                      trigger_data->link_up = (dev_get_flags(trigger_data->net_dev) & IFF_LOWER_UP) != 0;
-+              set_baseline_state(trigger_data); /* updates LEDs, may start timers */
 +      }
 +
-+      write_unlock(&trigger_data->lock);
++      set_baseline_state(trigger_data);
++      spin_unlock_bh(&trigger_data->lock);
++
 +      return size;
 +}
 +
@@ -163,7 +165,7 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      struct led_classdev *led_cdev = dev_get_drvdata(dev);
 +      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
 +
-+      read_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
 +
 +      if (trigger_data->mode == 0) {
 +              strcpy(buf, "none\n");
@@ -177,7 +179,7 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +              strcat(buf, "\n");
 +      }
 +
-+      read_unlock(&trigger_data->lock);
++      spin_unlock_bh(&trigger_data->lock);
 +
 +      return strlen(buf)+1;
 +}
@@ -218,10 +220,13 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      if (new_mode == -1)
 +              return -EINVAL;
 +
-+      write_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
++      del_timer_sync(&trigger_data->timer);
++
 +      trigger_data->mode = new_mode;
++
 +      set_baseline_state(trigger_data);
-+      write_unlock(&trigger_data->lock);
++      spin_unlock_bh(&trigger_data->lock);
 +
 +      return size;
 +}
@@ -234,9 +239,9 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      struct led_classdev *led_cdev = dev_get_drvdata(dev);
 +      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
 +
-+      read_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
 +      sprintf(buf, "%u\n", jiffies_to_msecs(trigger_data->interval));
-+      read_unlock(&trigger_data->lock);
++      spin_unlock_bh(&trigger_data->lock);
 +
 +      return strlen(buf) + 1;
 +}
@@ -256,10 +261,14 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +
 +      /* impose some basic bounds on the timer interval */
 +      if (count == size && value >= 5 && value <= 10000) {
-+              write_lock(&trigger_data->lock);
++              spin_lock_bh(&trigger_data->lock);
++              del_timer_sync(&trigger_data->timer);
++
 +              trigger_data->interval = msecs_to_jiffies(value);
++
 +              set_baseline_state(trigger_data); /* resets timer */
-+              write_unlock(&trigger_data->lock);
++              spin_unlock_bh(&trigger_data->lock);
++
 +              ret = count;
 +      }
 +
@@ -275,17 +284,20 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
 +      struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
 +
-+      if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
++      if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER && evt != NETDEV_CHANGENAME)
 +              return NOTIFY_DONE;
 +
-+      write_lock(&trigger_data->lock);
++      spin_lock_bh(&trigger_data->lock);
 +
 +      if (strcmp(dev->name, trigger_data->device_name))
 +              goto done;
 +
-+      if (evt == NETDEV_REGISTER) {
++      del_timer_sync(&trigger_data->timer);
++
++      if (evt == NETDEV_REGISTER || evt == NETDEV_CHANGENAME) {
 +              if (trigger_data->net_dev != NULL)
 +                      dev_put(trigger_data->net_dev);
++
 +              dev_hold(dev);
 +              trigger_data->net_dev = dev;
 +              trigger_data->link_up = 0;
@@ -304,7 +316,7 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      set_baseline_state(trigger_data);
 +
 +done:
-+      write_unlock(&trigger_data->lock);
++      spin_unlock_bh(&trigger_data->lock);
 +      return NOTIFY_DONE;
 +}
 +
@@ -316,12 +328,10 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      unsigned new_activity;
 +      struct rtnl_link_stats64 temp;
 +
-+      write_lock(&trigger_data->lock);
-+
 +      if (!trigger_data->link_up || !trigger_data->net_dev || (trigger_data->mode & (MODE_TX | MODE_RX)) == 0) {
 +              /* we don't need to do timer work, just reflect link state. */
 +              led_set_brightness(trigger_data->led_cdev, ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up) ? LED_FULL : LED_OFF);
-+              goto no_restart;
++              return;
 +      }
 +
 +      dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
@@ -353,9 +363,6 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +
 +      trigger_data->last_activity = new_activity;
 +      mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
-+
-+no_restart:
-+      write_unlock(&trigger_data->lock);
 +}
 +
 +static void netdev_trig_activate(struct led_classdev *led_cdev)
@@ -367,7 +374,7 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +      if (!trigger_data)
 +              return;
 +
-+      rwlock_init(&trigger_data->lock);
++      spin_lock_init(&trigger_data->lock);
 +
 +      trigger_data->notifier.notifier_call = netdev_trig_notify;
 +      trigger_data->notifier.priority = 10;
@@ -418,16 +425,15 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +              device_remove_file(led_cdev->dev, &dev_attr_mode);
 +              device_remove_file(led_cdev->dev, &dev_attr_interval);
 +
-+              write_lock(&trigger_data->lock);
++              spin_lock_bh(&trigger_data->lock);
++              del_timer_sync(&trigger_data->timer);
 +
 +              if (trigger_data->net_dev) {
 +                      dev_put(trigger_data->net_dev);
 +                      trigger_data->net_dev = NULL;
 +              }
 +
-+              write_unlock(&trigger_data->lock);
-+
-+              del_timer_sync(&trigger_data->timer);
++              spin_unlock_bh(&trigger_data->lock);
 +
 +              kfree(trigger_data);
 +      }
@@ -455,11 +461,11 @@ diff -Naur linux-3.14.22.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.14.22
 +MODULE_AUTHOR("Oliver Jowett <oliver@opencloud.com>");
 +MODULE_DESCRIPTION("Netdev LED trigger");
 +MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.22.org/drivers/leds/trigger/Makefile linux-3.14.22/drivers/leds/trigger/Makefile
---- linux-3.14.22.org/drivers/leds/trigger/Makefile    2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/leds/trigger/Makefile        2014-11-06 17:51:29.818748360 +0100
-@@ -8,3 +8,4 @@
- obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
+diff -Naur linux-4.9.16.org/drivers/leds/trigger/Makefile linux-4.9.16/drivers/leds/trigger/Makefile
+--- linux-4.9.16.org/drivers/leds/trigger/Makefile     2017-03-18 12:15:30.000000000 +0100
++++ linux-4.9.16/drivers/leds/trigger/Makefile 2017-03-18 16:53:44.280859607 +0100
+@@ -10,3 +10,4 @@
  obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT)  += ledtrig-transient.o
  obj-$(CONFIG_LEDS_TRIGGER_CAMERA)     += ledtrig-camera.o
+ obj-$(CONFIG_LEDS_TRIGGER_PANIC)      += ledtrig-panic.o
 +obj-$(CONFIG_LEDS_TRIGGER_NETDEV)     += ledtrig-netdev.o
diff --git a/src/patches/linux/linux-4.9.17-igb-e1000e_fix_lock_at_update_stats.patch b/src/patches/linux/linux-4.9.17-igb-e1000e_fix_lock_at_update_stats.patch
new file mode 100644 (file)
index 0000000..231d410
--- /dev/null
@@ -0,0 +1,47 @@
+diff -Naur linux-4.9.17.org/drivers/net/ethernet/intel/e1000e/netdev.c linux-4.9.17/drivers/net/ethernet/intel/e1000e/netdev.c
+--- linux-4.9.17.org/drivers/net/ethernet/intel/e1000e/netdev.c        2017-03-22 12:44:07.000000000 +0100
++++ linux-4.9.17/drivers/net/ethernet/intel/e1000e/netdev.c    2017-03-26 16:20:47.253511522 +0200
+@@ -5924,10 +5924,14 @@
+                                            struct rtnl_link_stats64 *stats)
+ {
+       struct e1000_adapter *adapter = netdev_priv(netdev);
++      int has_lock = 0;
+       memset(stats, 0, sizeof(struct rtnl_link_stats64));
+-      spin_lock(&adapter->stats64_lock);
+-      e1000e_update_stats(adapter);
++      if (spin_trylock(&adapter->stats64_lock)) {
++              e1000e_update_stats(adapter);
++              has_lock = 1;
++      }
++
+       /* Fill out the OS statistics structure */
+       stats->rx_bytes = adapter->stats.gorc;
+       stats->rx_packets = adapter->stats.gprc;
+@@ -5957,7 +5961,7 @@
+       /* Tx Dropped needs to be maintained elsewhere */
+-      spin_unlock(&adapter->stats64_lock);
++      if (has_lock) spin_unlock(&adapter->stats64_lock);
+       return stats;
+ }
+diff -Naur linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c
+--- linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c 2017-03-22 12:44:07.000000000 +0100
++++ linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c     2017-03-26 16:02:46.820093793 +0200
+@@ -5391,10 +5391,11 @@
+ {
+       struct igb_adapter *adapter = netdev_priv(netdev);
+-      spin_lock(&adapter->stats64_lock);
+-      igb_update_stats(adapter, &adapter->stats64);
++      if (spin_trylock(&adapter->stats64_lock)) {
++              igb_update_stats(adapter, &adapter->stats64);
++              spin_unlock(&adapter->stats64_lock);
++      }
+       memcpy(stats, &adapter->stats64, sizeof(*stats));
+-      spin_unlock(&adapter->stats64_lock);
+       return stats;
+ }
similarity index 87%
rename from src/patches/linux-3.14-apu_leds.patch
rename to src/patches/linux/linux-4.9.8-apu_leds.patch
index e887adc47c6e475323743a5c452272c3b5e9d60e..d34017896ddce68a9855ae60843185dd36ab042d 100644 (file)
@@ -1,7 +1,7 @@
-diff -Naur linux-3.14.65.org/arch/x86/Kconfig linux-3.14.65/arch/x86/Kconfig
---- linux-3.14.65.org/arch/x86/Kconfig 2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/arch/x86/Kconfig     2016-03-25 14:36:22.953256019 +0100
-@@ -2287,6 +2287,7 @@
+diff -Naur linux-4.9.8.org/arch/x86/Kconfig linux-4.9.8/arch/x86/Kconfig
+--- linux-4.9.8.org/arch/x86/Kconfig   2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/arch/x86/Kconfig       2017-02-09 19:29:59.244945360 +0100
+@@ -2604,6 +2604,7 @@
           - AC adapter status updates
           - Battery status updates
  
@@ -9,7 +9,7 @@ diff -Naur linux-3.14.65.org/arch/x86/Kconfig linux-3.14.65/arch/x86/Kconfig
  config ALIX
        bool "PCEngines ALIX System Support (LED setup)"
        select GPIOLIB
-@@ -2325,6 +2326,18 @@
+@@ -2642,6 +2643,18 @@
  
  endif # X86_32
  
@@ -28,9 +28,9 @@ diff -Naur linux-3.14.65.org/arch/x86/Kconfig linux-3.14.65/arch/x86/Kconfig
  config AMD_NB
        def_bool y
        depends on CPU_SUP_AMD && PCI
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu2-led.c linux-3.14.65/arch/x86/platform/apu/apu2-led.c
---- linux-3.14.65.org/arch/x86/platform/apu/apu2-led.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/apu2-led.c     2016-03-25 15:04:34.476689422 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/apu2-led.c linux-4.9.8/arch/x86/platform/apu/apu2-led.c
+--- linux-4.9.8.org/arch/x86/platform/apu/apu2-led.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/apu2-led.c       2017-02-09 19:29:59.244945360 +0100
 @@ -0,0 +1,180 @@
 +/*
 + * LEDs driver for PCEngines apu2
@@ -212,9 +212,9 @@ diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu2-led.c linux-3.14.65/arch
 +MODULE_AUTHOR("Arne Fitzenreiter");
 +MODULE_DESCRIPTION("PCEngines apu2 LED driver");
 +MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu-led.c linux-3.14.65/arch/x86/platform/apu/apu-led.c
---- linux-3.14.65.org/arch/x86/platform/apu/apu-led.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/apu-led.c      2016-03-25 15:05:35.776693425 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/apu-led.c linux-4.9.8/arch/x86/platform/apu/apu-led.c
+--- linux-4.9.8.org/arch/x86/platform/apu/apu-led.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/apu-led.c        2017-02-09 19:29:59.244945360 +0100
 @@ -0,0 +1,181 @@
 +/*
 + * LEDs driver for PCEngines apu
@@ -397,18 +397,18 @@ diff -Naur linux-3.14.65.org/arch/x86/platform/apu/apu-led.c linux-3.14.65/arch/
 +MODULE_AUTHOR("Christian Herzog");
 +MODULE_DESCRIPTION("PCEngines apu LED driver");
 +MODULE_LICENSE("GPL");
-diff -Naur linux-3.14.65.org/arch/x86/platform/apu/Makefile linux-3.14.65/arch/x86/platform/apu/Makefile
---- linux-3.14.65.org/arch/x86/platform/apu/Makefile   1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/apu/Makefile       2016-03-25 14:35:30.506585952 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/apu/Makefile linux-4.9.8/arch/x86/platform/apu/Makefile
+--- linux-4.9.8.org/arch/x86/platform/apu/Makefile     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/apu/Makefile 2017-02-09 19:29:59.244945360 +0100
 @@ -0,0 +1,2 @@
 +obj-$(CONFIG_APULED)          += apu-led.o
 +obj-$(CONFIG_APU2LED)         += apu2-led.o
-diff -Naur linux-3.14.65.org/arch/x86/platform/Makefile linux-3.14.65/arch/x86/platform/Makefile
---- linux-3.14.65.org/arch/x86/platform/Makefile       2016-03-16 16:42:30.000000000 +0100
-+++ linux-3.14.65/arch/x86/platform/Makefile   2016-03-25 14:31:04.079903947 +0100
+diff -Naur linux-4.9.8.org/arch/x86/platform/Makefile linux-4.9.8/arch/x86/platform/Makefile
+--- linux-4.9.8.org/arch/x86/platform/Makefile 2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/arch/x86/platform/Makefile     2017-02-09 19:32:31.768269470 +0100
 @@ -1,4 +1,5 @@
  # Platform specific code goes here
 +obj-y += apu/
+ obj-y += atom/
  obj-y += ce4100/
  obj-y += efi/
- obj-y += geode/
diff --git a/src/patches/linux/linux-4.9.8-ath_ignore_eeprom_regd.patch b/src/patches/linux/linux-4.9.8-ath_ignore_eeprom_regd.patch
new file mode 100644 (file)
index 0000000..ca835eb
--- /dev/null
@@ -0,0 +1,39 @@
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ath/regd.c linux-4.9.8/drivers/net/wireless/ath/regd.c
+--- linux-4.9.8.org/drivers/net/wireless/ath/regd.c    2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ath/regd.c        2017-02-11 15:31:20.502527360 +0100
+@@ -341,6 +341,8 @@
+       struct ieee80211_channel *ch;
+       unsigned int i;
++      return;
++
+       for (band = 0; band < NUM_NL80211_BANDS; band++) {
+               if (!wiphy->bands[band])
+                       continue;
+@@ -374,6 +376,8 @@
+ {
+       struct ieee80211_supported_band *sband;
++      return;
++
+       sband = wiphy->bands[NL80211_BAND_2GHZ];
+       if (!sband)
+               return;
+@@ -402,6 +406,8 @@
+       struct ieee80211_channel *ch;
+       unsigned int i;
++      return;
++
+       if (!wiphy->bands[NL80211_BAND_5GHZ])
+               return;
+@@ -632,6 +638,8 @@
+ {
+       const struct ieee80211_regdomain *regd;
++      return 0;
++
+       wiphy->reg_notifier = reg_notifier;
+       wiphy->regulatory_flags |= REGULATORY_STRICT_REG |
+                                  REGULATORY_CUSTOM_REG;
similarity index 59%
rename from src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
rename to src/patches/linux/linux-4.9.8-iwlwifi-noibss_only_on_radar_chan.patch
index a6a950b910c7dc02099124b08acd825c431300c7..b057809255b1c89dec94fd87eead4c0ffbd8dfca 100644 (file)
@@ -1,7 +1,7 @@
-diff -Naur linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
---- linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c  2014-10-15 08:42:04.000000000 +0200
-+++ linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c      2014-10-24 17:33:57.165155190 +0200
-@@ -613,14 +613,15 @@
+diff -Naur linux-4.9.8.org/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c linux-4.9.8/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c
+--- linux-4.9.8.org/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c      2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c  2017-02-11 10:35:20.216560908 +0100
+@@ -615,14 +615,15 @@
                        /* set no-HT40, will enable as appropriate later */
                        channel->flags = IEEE80211_CHAN_NO_HT40;
  
diff --git a/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch b/src/patches/linux/linux-4.9.8-rt2x00usb_suppress_queue_warnings.patch
new file mode 100644 (file)
index 0000000..e145cb4
--- /dev/null
@@ -0,0 +1,42 @@
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
+--- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2800usb.c     2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2800usb.c 2017-02-11 10:50:04.909859370 +0100
+@@ -448,7 +448,7 @@
+       rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, &reg);
+       if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX0Q)) {
+-              rt2x00_warn(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
++              rt2x00_dbg(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n");
+               rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40012);
+@@ -463,7 +463,7 @@
+       rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, &reg);
+       if (rt2x00_get_field32(reg, TXRXQ_PCNT_TX1Q)) {
+-              rt2x00_warn(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
++              rt2x00_dbg(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n");
+               rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf4000a);
+@@ -613,7 +613,7 @@
+               if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
+                            !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
+-                      rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
++                      rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
+                                   entry->entry_idx, qid);
+                       break;
+               }
+diff -Naur linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
+--- linux-4.9.8.org/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c     2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c 2017-02-11 10:50:04.909859370 +0100
+@@ -524,7 +524,7 @@
+ static void rt2x00usb_watchdog_tx_dma(struct data_queue *queue)
+ {
+-      rt2x00_warn(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced forced reset\n",
++      rt2x00_dbg(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced reset\n",
+                   queue->qid);
+       rt2x00queue_stop_queue(queue);
diff --git a/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch b/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch
new file mode 100644 (file)
index 0000000..79bd5e6
--- /dev/null
@@ -0,0 +1,31 @@
+diff -Naur linux-4.9.8.org/sound/pci/cs5535audio/cs5535audio.c linux-4.9.8/sound/pci/cs5535audio/cs5535audio.c
+--- linux-4.9.8.org/sound/pci/cs5535audio/cs5535audio.c        2017-02-04 09:47:29.000000000 +0100
++++ linux-4.9.8/sound/pci/cs5535audio/cs5535audio.c    2017-02-09 19:24:55.658297050 +0100
+@@ -83,9 +83,9 @@
+                       break;
+               udelay(1);
+       } while (--timeout);
+-      if (!timeout)
+-              dev_err(cs5535au->card->dev,
+-                      "Failure writing to cs5535 codec\n");
++//    if (!timeout)
++//            dev_err(cs5535au->card->dev,
++//                    "Failure writing to cs5535 codec\n");
+ }
+ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
+@@ -109,10 +109,10 @@
+                       break;
+               udelay(1);
+       } while (--timeout);
+-      if (!timeout)
+-              dev_err(cs5535au->card->dev,
+-                      "Failure reading codec reg 0x%x, Last value=0x%x\n",
+-                      reg, val);
++//    if (!timeout)
++//            dev_err(cs5535au->card->dev,
++//                    "Failure reading codec reg 0x%x, Last value=0x%x\n",
++//                    reg, val);
+       return (unsigned short) val;
+ }
diff --git a/src/patches/net-tools-1.60-iphdr-redef.patch b/src/patches/net-tools-1.60-iphdr-redef.patch
new file mode 100644 (file)
index 0000000..23b6dfe
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur net-tools-1.60.org/iptunnel.c net-tools-1.60/iptunnel.c
+--- net-tools-1.60.org/iptunnel.c      2001-04-08 19:04:23.000000000 +0200
++++ net-tools-1.60/iptunnel.c  2017-02-07 17:37:17.956405434 +0100
+@@ -26,7 +26,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <netinet/in.h>
+-#include <netinet/ip.h>
++#include <linux/ip.h>
+ #include <arpa/inet.h>
+ #if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1))
+ #include <net/if.h>
diff --git a/src/patches/postfix-2.10.0-build_with_kernel4x.patch b/src/patches/postfix-2.10.0-build_with_kernel4x.patch
new file mode 100644 (file)
index 0000000..73b6859
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur postfix-2.10.0.org/makedefs postfix-2.10.0/makedefs
+--- postfix-2.10.0.org/makedefs        2013-02-04 02:33:13.000000000 +0100
++++ postfix-2.10.0/makedefs    2017-02-08 10:10:56.713314716 +0100
+@@ -347,7 +347,7 @@
+                      fi;;
+               esac
+               ;;
+-    Linux.3*) SYSTYPE=LINUX3
++    Linux.[34]*)      SYSTYPE=LINUX3
+               case "$CCARGS" in
+                *-DNO_DB*) ;;
+                *) if [ -f /usr/include/db.h ]
diff --git a/src/patches/ppp/ppp-2.4.7-headers_4.9.patch b/src/patches/ppp/ppp-2.4.7-headers_4.9.patch
new file mode 100644 (file)
index 0000000..633eb04
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur ppp-2.4.7.org/pppd/plugins/rp-pppoe/plugin.c ppp-2.4.7/pppd/plugins/rp-pppoe/plugin.c
+--- ppp-2.4.7.org/pppd/plugins/rp-pppoe/plugin.c       2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7/pppd/plugins/rp-pppoe/plugin.c   2017-02-09 08:45:12.567493723 +0100
+@@ -49,6 +49,8 @@
+ #include <net/ethernet.h>
+ #include <net/if_arp.h>
+ #include <linux/ppp_defs.h>
++#define _LINUX_IN_H
++#define _LINUX_IN6_H
+ #include <linux/if_pppox.h>
+ #ifndef _ROOT_PATH
diff --git a/src/patches/udev-208-fix_uint8_t.patch b/src/patches/udev-208-fix_uint8_t.patch
new file mode 100644 (file)
index 0000000..06aee3b
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur systemd-208.org/src/udev/mtd_probe/mtd_probe.h systemd-208/src/udev/mtd_probe/mtd_probe.h
+--- systemd-208.org/src/udev/mtd_probe/mtd_probe.h     2013-08-13 22:02:47.000000000 +0200
++++ systemd-208/src/udev/mtd_probe/mtd_probe.h 2017-02-07 18:08:33.492985563 +0100
+@@ -18,6 +18,7 @@
+  */
+ #include <mtd/mtd-user.h>
++#include <stdint.h>
+ /* Full oob structure as written on the flash */
+ struct sm_oob {