summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2019-01-25 01:29:59 -0800
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2019-01-25 01:29:59 -0800
commitd86f8a7be5e7a3b59bd5338158cbcf3a1736cbae (patch)
tree87f66f53add17109f1f99c87e2ad41217504d1fe
parentUpdated to 4.19.8.a (diff)
downloadlinux-libre-hardened-ck-d86f8a7be5e7a3b59bd5338158cbcf3a1736cbae.tar.xz
Updated to 4.20.4.a
-rw-r--r--PKGBUILD49
-rw-r--r--config.x86_64132
-rw-r--r--patch-4.20-ck1-jcmod1.patch (renamed from patch-4.19-ck1-jcmod2.patch)712
3 files changed, 542 insertions, 351 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 9e3f6f3..f6bd4d8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -17,16 +17,16 @@
# Parabola version disables modules for components that lack free firmware
pkgbase=linux-libre-hardened-ck
-_majver=4.19
-_minver=8
+_majver=4.20
+_minver=4
_pkgver=${_majver}.${_minver}
_gnumajver=${_majver}-gnu
_gnupkgver=${_pkgver}-gnu
_hardenedver=a
_NUMAdisable=y
_ckpatchversion=1
-_ckpatchname="patch-${_majver}-ck${_ckpatchversion}"
-_jcpatchversion=2
+_ckpatch="patch-${_majver}-ck${_ckpatchversion}"
+_jcpatchversion=1
_gcc_more_v='20180509'
_srcname=linux-${_majver}
pkgver=${_pkgver}.${_hardenedver}
@@ -40,9 +40,9 @@ conflicts=('linux-hardened-ck')
options=('!strip')
source=(https://linux-libre.fsfla.org/pub/linux-libre/releases/${_gnumajver}/linux-libre-${_gnumajver}.tar.xz{,.sign}
https://linux-libre.fsfla.org/pub/linux-libre/releases/${_gnupkgver}/patch-${_gnumajver}-${_gnupkgver}.xz{,.sign}
- https://github.com/anthraxx/linux-hardened/releases/download/${_pkgver}.${_hardenedver}/linux-hardened-${_pkgver}.${_hardenedver}.patch{,.sig}
+ https://github.com/anthraxx/linux-hardened/releases/download/${pkgver}/linux-hardened-${pkgver}.patch{,.sig}
patch-${_majver}-ck${_ckpatchversion}-jcmod${_jcpatchversion}.patch
- #http://ck.kolivas.org/patches/4.0/${_majver}/${_majver}-ck${_ckpatchversion}/${_ckpatchname}.xz
+ #http://ck.kolivas.org/patches/4.0/${_majver}/${_majver}-ck${_ckpatchversion}/${_ckpatch}.xz
enable_additional_cpu_optimizations-$_gcc_more_v.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/$_gcc_more_v.tar.gz
ath9k-regdom-hack.patch
config.x86_64 # the main kernel config files
@@ -50,16 +50,16 @@ source=(https://linux-libre.fsfla.org/pub/linux-libre/releases/${_gnumajver}/lin
90-linux.hook # pacman hook for initramfs regeneration
linux.preset # standard config files for mkinitcpio ramdisk
)
-sha256sums=('d06d7a0d59a96ab04e7af63244627d1d5aa2d99db84f81f559f0f8e7e58f94c8'
+sha256sums=('b80d5c0076dfa11ee8af63ad0b4795569d098b77020d2fffc797b892ba455a1f'
'SKIP'
- 'ac7fd6ede3613a024cbecb9aa421dd22d0ea7a6c201280c6eb22c812fbae1067'
+ '1779591b0385789d7f63f1ad4a21c82871d138e5412fca79465280c1366d7650'
'SKIP'
- '6e36f941f608d6cca54f81efc661ea91eb6fc69c58d0dbbbe57d455bb5803f2b'
+ 'b795a107eceb2fd4ab51f7a7f06f700b6f6827cca277a2d8f94be28eeeb924b4'
'SKIP'
- 'c7e090301b6fb3d6f320aeaee6747077ed616ccaf3d22d0d5937d5ea5116ffd8'
+ '90ab0d864452726a7b43f49debeb32ab4dc5d0ec65cb8b3f64c940a2469ab650'
'226e30068ea0fecdb22f337391385701996bfbdba37cdcf0f1dbf55f1080542d'
'e7ebf050c22bcec0028c0b3c79fd6d3913b0370ecc6a23dfe78ce475630cf503'
- 'd3aba22671ca554c92406e30620a2ce3fb6e25297208e7a358d4cb7564f528d8'
+ '506d2baba3e1d8b00056153225b9ca31f3f06f0bcbf2f538160a450fc4760750'
'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21'
'75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65')
@@ -80,7 +80,7 @@ prepare() {
patch -Np1 < ../patch-${_gnumajver}-${_gnupkgver}
# Hotfixes
- # msg2 "Applying hotfixes"
+# msg2 "Applying hotfixes"
# linux hardened patch
msg2 "Applying hardened patch"
@@ -114,26 +114,13 @@ prepare() {
cp ../config.x86_64 .config
#fi
- ### Optionally disable NUMA for 64-bit kernels only
- # (x86 kernels do not support NUMA)
- if [ -n "$_NUMAdisable" ]; then
- msg "Disabling NUMA from kernel config..."
- sed -i -e 's/CONFIG_NUMA=y/# CONFIG_NUMA is not set/' \
- -i -e '/CONFIG_AMD_NUMA=y/d' \
- -i -e '/CONFIG_X86_64_ACPI_NUMA=y/d' \
- -i -e '/CONFIG_NODES_SPAN_OTHER_NODES=y/d' \
- -i -e '/# CONFIG_NUMA_EMU is not set/d' \
- -i -e '/CONFIG_NODES_SHIFT=5/d' \
- -i -e '/CONFIG_NEED_MULTIPLE_NODES=y/d' \
- -i -e '/# CONFIG_MOVABLE_NODE is not set/d' \
- -i -e '/CONFIG_USE_PERCPU_NUMA_NODE_ID=y/d' \
- -i -e '/CONFIG_ACPI_NUMA=y/d' ./.config
- fi
-
make olddefconfig
make menuconfig
+ # Remove sublevel when no sublevel exists
+# sed -i '/SUBLEVEL = 0/d' Makefile
+
make -s kernelrelease > ../version
# workaround for make -s kernelrelease not applying
@@ -173,7 +160,7 @@ _package() {
cd $_srcname
msg2 "Installing boot image..."
- install -Dm644 "$(make -s image_name)" "$pkgdir/boot/vmlinuz-$pkgbase"
+ install -Dm600 "$(make -s image_name)" "$pkgdir/boot/vmlinuz-$pkgbase"
msg2 "Installing modules..."
mkdir -p "$modulesdir"
@@ -227,7 +214,9 @@ _package-headers() {
cp -t "$builddir" -a scripts
# add objtool for external module building and enabled VALIDATION_STACK option
- install -Dt "$builddir/tools/objtool" tools/objtool/objtool
+ if [[ -e tools/objtool/objtool ]]; then
+ install -Dt "$builddir/tools/objtool" tools/objtool/objtool
+ fi
# add xfs and shmem for aufs building
mkdir -p "$builddir"/{fs/xfs,mm}
diff --git a/config.x86_64 b/config.x86_64
index 9db1e52..ef7a71c 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -1,10 +1,10 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.19.6 Kernel Configuration
+# Linux/x86 4.20.4 Kernel Configuration
#
#
-# Compiler: gcc (GCC) 8.2.1 20180831
+# Compiler: gcc (GCC) 8.2.1 20181127
#
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=80201
@@ -70,6 +70,7 @@ CONFIG_SPARSE_IRQ=y
# CONFIG_GENERIC_IRQ_DEBUGFS is not set
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_ARCH_CLOCKSOURCE_INIT=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
@@ -98,12 +99,15 @@ CONFIG_PREEMPT_COUNT=y
CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_SCHED_AVG_IRQ=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_PSI=y
+CONFIG_PSI_DEFAULT_DISABLED=y
CONFIG_CPU_ISOLATION=y
#
@@ -304,6 +308,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
+CONFIG_PARAVIRT_XXL=y
# CONFIG_PARAVIRT_DEBUG is not set
CONFIG_PARAVIRT_SPINLOCKS=y
# CONFIG_QUEUED_LOCK_STAT is not set
@@ -322,7 +327,6 @@ CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_JAILHOUSE_GUEST=y
-CONFIG_NO_BOOTMEM=y
# CONFIG_MK8 is not set
# CONFIG_MK8SSE3 is not set
# CONFIG_MK10 is not set
@@ -360,6 +364,7 @@ CONFIG_X86_DEBUGCTLMSR=y
CONFIG_PROCESSOR_SELECT=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
@@ -409,6 +414,7 @@ CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
# CONFIG_X86_5LEVEL is not set
CONFIG_X86_DIRECT_GBPAGES=y
+# CONFIG_X86_CPA_STATISTICS is not set
CONFIG_ARCH_HAS_MEM_ENCRYPT=y
CONFIG_AMD_MEM_ENCRYPT=y
CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=y
@@ -561,6 +567,7 @@ CONFIG_ACPI_APEI_ERST_DEBUG=m
CONFIG_DPTF_POWER=m
CONFIG_ACPI_WATCHDOG=y
CONFIG_ACPI_EXTLOG=m
+CONFIG_ACPI_ADXL=y
CONFIG_PMIC_OPREGION=y
CONFIG_CRC_PMIC_OPREGION=y
CONFIG_XPOWER_PMIC_OPREGION=y
@@ -657,6 +664,7 @@ CONFIG_PCI_LOCKLESS_CONFIG=y
CONFIG_PCI_IOV=y
CONFIG_PCI_PRI=y
CONFIG_PCI_PASID=y
+CONFIG_PCI_P2PDMA=y
CONFIG_PCI_LABEL=y
CONFIG_PCI_HYPERV=m
CONFIG_HOTPLUG_PCI=y
@@ -763,8 +771,6 @@ CONFIG_HAVE_GENERIC_GUP=y
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
-CONFIG_DELL_RBU=m
-CONFIG_DCDBAS=m
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=m
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
@@ -851,6 +857,7 @@ CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
@@ -860,6 +867,7 @@ CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
CONFIG_HAVE_RCU_TABLE_FREE=y
CONFIG_HAVE_RCU_TABLE_INVALIDATE=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
@@ -870,6 +878,7 @@ 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_ARCH_STACKLEAK=y
CONFIG_HAVE_STACKPROTECTOR=y
CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
CONFIG_STACKPROTECTOR=y
@@ -923,7 +932,7 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
+# CONFIG_MODVERSIONS is not set
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
@@ -983,6 +992,7 @@ CONFIG_BLOCK_COMPAT=y
CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLK_MQ_RDMA=y
+CONFIG_BLK_PM=y
#
# IO Schedulers
@@ -1023,7 +1033,7 @@ CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
-CONFIG_BINFMT_MISC=m
+CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
#
@@ -1037,7 +1047,6 @@ CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
-CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_MEMORY_ISOLATION=y
@@ -1299,6 +1308,7 @@ CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
+CONFIG_NFT_XFRM=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
@@ -1467,7 +1477,6 @@ CONFIG_IP_VS_PE_SIP=m
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
CONFIG_NF_TABLES_IPV4=y
@@ -1515,7 +1524,6 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration
#
-CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
CONFIG_NF_TABLES_IPV6=y
@@ -1635,6 +1643,7 @@ CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_BRCM_PREPEND=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
+CONFIG_NET_DSA_TAG_GSWIP=y
CONFIG_NET_DSA_TAG_KSZ=y
CONFIG_NET_DSA_TAG_LAN9303=y
CONFIG_NET_DSA_TAG_MTK=y
@@ -1688,6 +1697,7 @@ CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_CBS=m
CONFIG_NET_SCH_ETF=m
+CONFIG_NET_SCH_TAPRIO=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
@@ -1772,6 +1782,7 @@ CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
CONFIG_BATMAN_ADV_MCAST=y
# CONFIG_BATMAN_ADV_DEBUGFS is not set
+# CONFIG_BATMAN_ADV_TRACING is not set
CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=m
CONFIG_OPENVSWITCH_VXLAN=m
@@ -1792,6 +1803,7 @@ CONFIG_HSR=m
CONFIG_NET_SWITCHDEV=y
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NET_NCSI=y
+CONFIG_NCSI_OEM_CMD_GET_MAC=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
@@ -1971,8 +1983,6 @@ CONFIG_LIB80211_CRYPT_TKIP=m
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
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
@@ -2044,6 +2054,7 @@ CONFIG_LWTUNNEL_BPF=y
CONFIG_DST_CACHE=y
CONFIG_GRO_CELLS=y
CONFIG_SOCK_VALIDATE_XMIT=y
+CONFIG_NET_SOCK_MSG=y
CONFIG_NET_DEVLINK=m
CONFIG_MAY_USE_DEVLINK=m
CONFIG_PAGE_POOL=y
@@ -2223,7 +2234,6 @@ CONFIG_MTD_NAND_DISKONCHIP=m
# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y
-CONFIG_MTD_NAND_DOCG4=m
CONFIG_MTD_NAND_CAFE=m
CONFIG_MTD_NAND_NANDSIM=m
CONFIG_MTD_NAND_PLATFORM=m
@@ -2284,7 +2294,6 @@ CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
CONFIG_ZRAM=m
CONFIG_ZRAM_WRITEBACK=y
# CONFIG_ZRAM_MEMORY_TRACKING is not set
-CONFIG_BLK_DEV_DAC960=m
CONFIG_BLK_DEV_UMEM=m
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
@@ -2366,6 +2375,7 @@ CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
# CONFIG_EEPROM_93XX46 is not set
CONFIG_EEPROM_IDT_89HPESX=m
+CONFIG_EEPROM_EE1004=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -2521,9 +2531,12 @@ CONFIG_SCSI_UFSHCD_PCI=m
# CONFIG_SCSI_UFS_DWC_TC_PCI is not set
CONFIG_SCSI_UFSHCD_PLATFORM=m
# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
+CONFIG_SCSI_UFS_BSG=y
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_FLASHPOINT=y
+CONFIG_SCSI_MYRB=m
+CONFIG_SCSI_MYRS=m
CONFIG_VMWARE_PVSCSI=m
CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_HYPERV_STORAGE=m
@@ -2697,7 +2710,6 @@ CONFIG_BCACHE=m
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=m
-CONFIG_DM_MQ_DEFAULT=y
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
@@ -2844,8 +2856,10 @@ CONFIG_B53=m
CONFIG_B53_MDIO_DRIVER=m
CONFIG_B53_MMAP_DRIVER=m
CONFIG_B53_SRAB_DRIVER=m
+CONFIG_B53_SERDES=m
CONFIG_NET_DSA_BCM_SF2=m
CONFIG_NET_DSA_LOOP=m
+CONFIG_NET_DSA_LANTIQ_GSWIP=m
CONFIG_NET_DSA_MT7530=m
CONFIG_MICROCHIP_KSZ=m
CONFIG_MICROCHIP_KSZ_SPI_DRIVER=m
@@ -2990,12 +3004,16 @@ CONFIG_IXGBE=m
CONFIG_IXGBE_HWMON=y
CONFIG_IXGBE_DCA=y
CONFIG_IXGBE_DCB=y
+CONFIG_IXGBE_IPSEC=y
CONFIG_IXGBEVF=m
+CONFIG_IXGBEVF_IPSEC=y
CONFIG_I40E=m
CONFIG_I40E_DCB=y
+CONFIG_IAVF=m
CONFIG_I40EVF=m
CONFIG_ICE=m
CONFIG_FM10K=m
+CONFIG_IGC=m
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
@@ -3063,6 +3081,7 @@ CONFIG_NFP_APP_FLOWER=y
CONFIG_NFP_APP_ABM_NIC=y
# CONFIG_NFP_DEBUG is not set
CONFIG_NET_VENDOR_NI=y
+CONFIG_NI_XGE_MANAGEMENT_ENET=m
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=m
CONFIG_NE2K_PCI=m
@@ -3468,9 +3487,14 @@ CONFIG_MWL8K=m
CONFIG_WLAN_VENDOR_MEDIATEK=y
CONFIG_MT7601U=m
CONFIG_MT76_CORE=m
+CONFIG_MT76_LEDS=y
CONFIG_MT76_USB=m
-CONFIG_MT76x2_COMMON=m
+CONFIG_MT76x02_LIB=m
+CONFIG_MT76x02_USB=m
+CONFIG_MT76x0_COMMON=m
CONFIG_MT76x0U=m
+CONFIG_MT76x0E=m
+CONFIG_MT76x2_COMMON=m
CONFIG_MT76x2E=m
CONFIG_MT76x2U=m
CONFIG_WLAN_VENDOR_RALINK=y
@@ -3575,7 +3599,7 @@ CONFIG_IEEE802154_ADF7242=m
CONFIG_IEEE802154_CA8210=m
# CONFIG_IEEE802154_CA8210_DEBUGFS is not set
CONFIG_IEEE802154_MCR20A=m
-# CONFIG_IEEE802154_HWSIM is not set
+CONFIG_IEEE802154_HWSIM=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
@@ -4251,6 +4275,7 @@ CONFIG_I2C_PIIX4=m
CONFIG_I2C_CHT_WC=m
CONFIG_I2C_NFORCE2=m
CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_NVIDIA_GPU=m
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=m
CONFIG_I2C_SIS96X=m
@@ -4436,6 +4461,7 @@ CONFIG_GPIO_LYNXPOINT=m
CONFIG_GPIO_MB86S7X=m
CONFIG_GPIO_MENZ127=m
CONFIG_GPIO_MOCKUP=m
+CONFIG_GPIO_SIOX=m
CONFIG_GPIO_SYSCON=m
CONFIG_GPIO_VX855=m
CONFIG_GPIO_XILINX=m
@@ -4975,6 +5001,7 @@ CONFIG_MFD_AS3711=y
CONFIG_MFD_AS3722=m
CONFIG_PMIC_ADP5520=y
CONFIG_MFD_AAT2870_CORE=y
+CONFIG_MFD_AT91_USART=m
CONFIG_MFD_ATMEL_FLEXCOM=m
CONFIG_MFD_ATMEL_HLCDC=m
CONFIG_MFD_BCM590XX=m
@@ -5265,6 +5292,7 @@ CONFIG_MEDIA_CEC_SUPPORT=y
# CONFIG_CEC_PIN_ERROR_INJ is not set
CONFIG_MEDIA_CONTROLLER=y
# CONFIG_MEDIA_CONTROLLER_DVB is not set
+# CONFIG_MEDIA_CONTROLLER_REQUEST_API is not set
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEO_V4L2=m
@@ -5955,6 +5983,7 @@ CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
CONFIG_DRM_DP_CEC=y
CONFIG_DRM_TTM=m
@@ -5988,7 +6017,9 @@ CONFIG_DRM_AMD_ACP=y
#
CONFIG_DRM_AMD_DC=y
CONFIG_DRM_AMD_DC_DCN1_0=y
+CONFIG_DRM_AMD_DC_DCN1_01=y
# CONFIG_DEBUG_KERNEL_DC is not set
+CONFIG_HSA_AMD=y
#
# AMD Library routines
@@ -6020,6 +6051,7 @@ CONFIG_DRM_I915_GVT_KVMGT=m
# CONFIG_DRM_I915_SELFTEST is not set
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
+# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
CONFIG_DRM_VGEM=m
CONFIG_DRM_VKMS=m
CONFIG_DRM_VMWGFX=m
@@ -6078,8 +6110,10 @@ CONFIG_DRM_SIL_SII8620=m
CONFIG_DRM_SII902X=m
CONFIG_DRM_SII9234=m
CONFIG_DRM_THINE_THC63LVD1024=m
+CONFIG_DRM_TOSHIBA_TC358764=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_TI_TFP410=m
+CONFIG_DRM_TI_SN65DSI86=m
CONFIG_DRM_I2C_ADV7511=m
CONFIG_DRM_I2C_ADV7511_AUDIO=y
CONFIG_DRM_I2C_ADV7533=y
@@ -6088,7 +6122,6 @@ CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI_CEC=m
-CONFIG_HSA_AMD=m
CONFIG_DRM_ARCPGU=m
CONFIG_DRM_HISI_HIBMC=m
CONFIG_DRM_MXS=y
@@ -6109,10 +6142,10 @@ CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
# Frame buffer Devices
#
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -6174,7 +6207,6 @@ CONFIG_FB_EFI=y
CONFIG_XEN_FBDEV_FRONTEND=m
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
-# CONFIG_FB_BROADSHEET is not set
CONFIG_FB_HYPERV=m
CONFIG_FB_SIMPLE=y
# CONFIG_FB_SSD1307 is not set
@@ -6189,8 +6221,6 @@ CONFIG_LCD_ILI9320=m
CONFIG_LCD_TDO24M=m
CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
-CONFIG_LCD_S6E63M0=m
-CONFIG_LCD_LD9040=m
CONFIG_LCD_AMS369FG06=m
CONFIG_LCD_LMS501KF03=m
CONFIG_LCD_HX8357=m
@@ -6445,6 +6475,7 @@ CONFIG_SND_SOC_AMD_ACP=m
CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m
CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m
CONFIG_SND_ATMEL_SOC=m
+CONFIG_SND_SOC_MIKROE_PROTO=m
CONFIG_SND_DESIGNWARE_I2S=m
CONFIG_SND_DESIGNWARE_PCM=y
@@ -6480,8 +6511,10 @@ CONFIG_SND_SOC_INTEL_HASWELL=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m
-CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m
CONFIG_SND_SOC_INTEL_SKYLAKE=m
+CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m
+CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y
+CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m
CONFIG_SND_SOC_ACPI_INTEL_MATCH=m
CONFIG_SND_SOC_INTEL_MACH=y
CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
@@ -6504,7 +6537,9 @@ CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m
CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH=m
CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH=m
CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH=m
+CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH=m
CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m
+CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m
#
# STMicroelectronics STM32 SOC audio support
@@ -6567,7 +6602,9 @@ CONFIG_SND_SOC_ES8328_I2C=m
CONFIG_SND_SOC_ES8328_SPI=m
CONFIG_SND_SOC_GTM601=m
CONFIG_SND_SOC_HDAC_HDMI=m
+CONFIG_SND_SOC_HDAC_HDA=m
CONFIG_SND_SOC_INNO_RK3036=m
+CONFIG_SND_SOC_MAX98088=m
CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_MAX98357A=m
CONFIG_SND_SOC_MAX98504=m
@@ -6586,6 +6623,9 @@ CONFIG_SND_SOC_PCM179X_SPI=m
CONFIG_SND_SOC_PCM186X=m
CONFIG_SND_SOC_PCM186X_I2C=m
CONFIG_SND_SOC_PCM186X_SPI=m
+CONFIG_SND_SOC_PCM3060=m
+CONFIG_SND_SOC_PCM3060_I2C=m
+CONFIG_SND_SOC_PCM3060_SPI=m
CONFIG_SND_SOC_PCM3168A=m
CONFIG_SND_SOC_PCM3168A_I2C=m
CONFIG_SND_SOC_PCM3168A_SPI=m
@@ -6670,6 +6710,7 @@ CONFIG_SND_SOC_MAX9759=m
CONFIG_SND_SOC_MT6351=m
CONFIG_SND_SOC_NAU8540=m
CONFIG_SND_SOC_NAU8810=m
+CONFIG_SND_SOC_NAU8822=m
CONFIG_SND_SOC_NAU8824=m
CONFIG_SND_SOC_NAU8825=m
CONFIG_SND_SOC_TPA6130A2=m
@@ -6706,6 +6747,7 @@ CONFIG_HID_ASUS=m
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=m
CONFIG_HID_BETOP_FF=m
+CONFIG_HID_BIGBEN_FF=m
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_CORSAIR=m
@@ -7191,6 +7233,7 @@ CONFIG_TYPEC_RT1711H=m
CONFIG_TYPEC_FUSB302=m
CONFIG_TYPEC_WCOVE=m
CONFIG_TYPEC_UCSI=m
+CONFIG_UCSI_CCG=m
CONFIG_UCSI_ACPI=m
CONFIG_TYPEC_TPS6598X=m
@@ -7203,10 +7246,10 @@ CONFIG_TYPEC_MUX_PI3USB30532=m
# USB Type-C Alternate Mode drivers
#
CONFIG_TYPEC_DP_ALTMODE=m
+CONFIG_USB_ROLE_SWITCH=m
CONFIG_USB_ROLES_INTEL_XHCI=m
CONFIG_USB_LED_TRIG=y
CONFIG_USB_ULPI_BUS=m
-CONFIG_USB_ROLE_SWITCH=m
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m
@@ -7278,6 +7321,7 @@ CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
#
CONFIG_LEDS_88PM860X=m
CONFIG_LEDS_AAT1290=m
+CONFIG_LEDS_AN30259A=m
CONFIG_LEDS_APU=m
CONFIG_LEDS_AS3645A=m
CONFIG_LEDS_BCM6328=m
@@ -7360,6 +7404,7 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_NETDEV=m
+CONFIG_LEDS_TRIGGER_PATTERN=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
CONFIG_INFINIBAND=m
@@ -7534,7 +7579,6 @@ CONFIG_RTC_DRV_DS1685=y
# CONFIG_RTC_DRV_DS17285 is not set
# CONFIG_RTC_DRV_DS17485 is not set
# CONFIG_RTC_DRV_DS17885 is not set
-# CONFIG_RTC_DS1685_PROC_REGS is not set
CONFIG_RTC_DRV_DS1742=m
CONFIG_RTC_DRV_DS2404=m
CONFIG_RTC_DRV_DA9052=m
@@ -7605,6 +7649,7 @@ CONFIG_DMA_ENGINE_RAID=y
#
CONFIG_SYNC_FILE=y
# CONFIG_SW_SYNC is not set
+CONFIG_UDMABUF=y
CONFIG_DCA=m
CONFIG_AUXDISPLAY=y
CONFIG_HD44780=m
@@ -7787,6 +7832,7 @@ CONFIG_COMEDI_AMPLC_PC236=m
CONFIG_COMEDI_DAS08=m
CONFIG_COMEDI_NI_LABPC=m
CONFIG_COMEDI_NI_TIO=m
+CONFIG_COMEDI_NI_ROUTING=m
CONFIG_RTL8192U=m
CONFIG_RTLLIB=m
CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -7902,7 +7948,6 @@ CONFIG_FWTTY_MAX_TOTAL_PORTS=64
CONFIG_FWTTY_MAX_CARD_PORTS=32
CONFIG_MTD_SPINAND_MT29F=m
CONFIG_MTD_SPINAND_ONDIEECC=y
-CONFIG_DGNC=m
CONFIG_GS_FPGABOOT=m
CONFIG_UNISYSSPAR=y
CONFIG_COMMON_CLK_XLNX_CLKWZRD=m
@@ -7940,6 +7985,7 @@ CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
# CONFIG_EROFS_FS_USE_VM_MAP_RAM is not set
# CONFIG_EROFS_FAULT_INJECTION is not set
+CONFIG_EROFS_FS_IO_MAX_RETRIES=5
CONFIG_EROFS_FS_ZIP=y
CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=2
# CONFIG_EROFS_FS_ZIP_NO_CACHE is not set
@@ -7951,6 +7997,7 @@ CONFIG_ACER_WIRELESS=m
CONFIG_ACERHDF=m
CONFIG_ALIENWARE_WMI=m
CONFIG_ASUS_LAPTOP=m
+CONFIG_DCDBAS=m
CONFIG_DELL_SMBIOS=m
CONFIG_DELL_SMBIOS_WMI=y
CONFIG_DELL_SMBIOS_SMM=y
@@ -7961,6 +8008,7 @@ CONFIG_DELL_WMI_AIO=m
CONFIG_DELL_WMI_LED=m
CONFIG_DELL_SMO8800=m
CONFIG_DELL_RBTN=m
+CONFIG_DELL_RBU=m
CONFIG_FUJITSU_LAPTOP=m
CONFIG_FUJITSU_TABLET=m
CONFIG_AMILO_RFKILL=m
@@ -7968,6 +8016,7 @@ CONFIG_GPD_POCKET_FAN=m
CONFIG_HP_ACCEL=m
CONFIG_HP_WIRELESS=m
CONFIG_HP_WMI=m
+CONFIG_LG_LAPTOP=m
CONFIG_MSI_LAPTOP=m
CONFIG_PANASONIC_LAPTOP=m
CONFIG_COMPAL_LAPTOP=m
@@ -8026,6 +8075,7 @@ CONFIG_INTEL_TURBO_MAX_3=y
CONFIG_TOUCHSCREEN_DMI=y
CONFIG_INTEL_CHTDC_TI_PWRBTN=m
CONFIG_I2C_MULTI_INSTANTIATE=m
+CONFIG_INTEL_ATOMISP2_PM=m
CONFIG_PMC_ATOM=y
CONFIG_CHROME_PLATFORMS=y
CONFIG_CHROMEOS_LAPTOP=m
@@ -8203,6 +8253,9 @@ CONFIG_IIO_TRIGGERED_EVENT=m
#
CONFIG_ADIS16201=m
CONFIG_ADIS16209=m
+CONFIG_ADXL372=m
+CONFIG_ADXL372_SPI=m
+CONFIG_ADXL372_I2C=m
CONFIG_BMA180=m
CONFIG_BMA220=m
CONFIG_BMC150_ACCEL=m
@@ -8272,12 +8325,14 @@ CONFIG_MAX1363=m
CONFIG_MAX9611=m
CONFIG_MCP320X=m
CONFIG_MCP3422=m
+CONFIG_MCP3911=m
CONFIG_MEN_Z188_ADC=m
CONFIG_NAU7802=m
CONFIG_PALMAS_GPADC=m
CONFIG_QCOM_VADC_COMMON=m
CONFIG_QCOM_SPMI_IADC=m
CONFIG_QCOM_SPMI_VADC=m
+CONFIG_QCOM_SPMI_ADC5=m
CONFIG_SD_ADC_MODULATOR=m
CONFIG_TI_ADC081C=m
CONFIG_TI_ADC0832=m
@@ -8353,6 +8408,7 @@ CONFIG_AD5592R=m
CONFIG_AD5593R=m
CONFIG_AD5504=m
CONFIG_AD5624R_SPI=m
+CONFIG_LTC1660=m
CONFIG_LTC2632=m
CONFIG_AD5686=m
CONFIG_AD5686_SPI=m
@@ -8601,6 +8657,7 @@ CONFIG_RFD77402=m
CONFIG_SRF04=m
CONFIG_SX9500=m
CONFIG_SRF08=m
+CONFIG_VL53L0X_I2C=m
#
# Resolver to digital converters
@@ -8681,10 +8738,12 @@ CONFIG_FMC_CHARDEV=m
#
CONFIG_GENERIC_PHY=y
CONFIG_BCM_KONA_USB2_PHY=m
+CONFIG_PHY_CADENCE_DP=m
CONFIG_PHY_PXA_28NM_HSIC=m
CONFIG_PHY_PXA_28NM_USB2=m
CONFIG_PHY_CPCAP_USB=m
CONFIG_PHY_MAPPHONE_MDM6600=m
+CONFIG_PHY_OCELOT_SERDES=m
CONFIG_PHY_QCOM_USB_HS=m
CONFIG_PHY_QCOM_USB_HSIC=m
CONFIG_PHY_SAMSUNG_USB2=m
@@ -8728,6 +8787,8 @@ CONFIG_RAVE_SP_EEPROM=m
# HW tracing support
#
CONFIG_STM=m
+CONFIG_STM_PROTO_BASIC=m
+CONFIG_STM_PROTO_SYS_T=m
# CONFIG_STM_DUMMY is not set
CONFIG_STM_SOURCE_CONSOLE=m
CONFIG_STM_SOURCE_HEARTBEAT=m
@@ -8959,6 +9020,7 @@ CONFIG_UBIFS_ATIME_SUPPORT=y
CONFIG_UBIFS_FS_XATTR=y
CONFIG_UBIFS_FS_ENCRYPTION=y
CONFIG_UBIFS_FS_SECURITY=y
+CONFIG_UBIFS_FS_AUTHENTICATION=y
CONFIG_CRAMFS=m
CONFIG_CRAMFS_BLOCKDEV=y
CONFIG_CRAMFS_MTD=y
@@ -9062,7 +9124,6 @@ CONFIG_CIFS=m
# CONFIG_CIFS_ALLOW_INSECURE_LEGACY is not set
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
@@ -9074,6 +9135,7 @@ CONFIG_CODA_FS=m
CONFIG_AFS_FS=m
# CONFIG_AFS_DEBUG is not set
CONFIG_AFS_FSCACHE=y
+# CONFIG_AFS_DEBUG_CURSOR is not set
CONFIG_9P_FS=m
CONFIG_9P_FSCACHE=y
CONFIG_9P_FS_POSIX_ACL=y
@@ -9227,7 +9289,6 @@ CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_SIMD=m
@@ -9263,8 +9324,9 @@ CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_CFB=m
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_OFB=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m
CONFIG_CRYPTO_KEYWRAP=m
@@ -9300,9 +9362,6 @@ CONFIG_CRYPTO_SHA1=y
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=y
CONFIG_CRYPTO_SHA3=m
@@ -9403,7 +9462,10 @@ CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DEV_CCREE=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m
CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS8_PRIVATE_KEY_PARSER=m
+CONFIG_TPM_KEY_PARSER=m
CONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
@@ -9490,7 +9552,7 @@ CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_BTREE=y
CONFIG_INTERVAL_TREE=y
-CONFIG_RADIX_TREE_MULTIORDER=y
+CONFIG_XARRAY_MULTI=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
@@ -9748,6 +9810,7 @@ CONFIG_LKDTM=m
# CONFIG_TEST_BITMAP is not set
# CONFIG_TEST_BITFIELD is not set
# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_XARRAY is not set
# CONFIG_TEST_OVERFLOW is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_TEST_HASH is not set
@@ -9762,6 +9825,7 @@ CONFIG_LKDTM=m
# CONFIG_TEST_UDELAY is not set
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_TEST_KMOD is not set
+# CONFIG_TEST_MEMCAT_P is not set
# CONFIG_MEMTEST is not set
CONFIG_BUG_ON_DATA_CORRUPTION=y
# CONFIG_SAMPLES is not set
diff --git a/patch-4.19-ck1-jcmod2.patch b/patch-4.20-ck1-jcmod1.patch
index 235d6f6..dd1f394 100644
--- a/patch-4.19-ck1-jcmod2.patch
+++ b/patch-4.20-ck1-jcmod1.patch
@@ -1,8 +1,8 @@
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index 92eb1f42240d..627365ae5499 100644
+index aefd358a5ca3..d83cc67a2e80 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -4001,6 +4001,14 @@
+@@ -4035,6 +4035,14 @@
Memory area to be used by remote processor image,
managed by CMA.
@@ -754,7 +754,7 @@ index 000000000000..ae28b85c9995
+
+Con Kolivas <kernel@kolivas.org> Sat, 29th October 2016
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
-index 37a679501ddc..e78109cf3458 100644
+index 1b8775298cf7..4f0a97784d35 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -41,6 +41,7 @@ show up in /proc/sys/kernel:
@@ -773,7 +773,7 @@ index 37a679501ddc..e78109cf3458 100644
- rtsig-max
- rtsig-nr
- seccomp/ ==> Documentation/userspace-api/seccomp_filter.rst
-@@ -97,6 +99,7 @@ show up in /proc/sys/kernel:
+@@ -98,6 +100,7 @@ show up in /proc/sys/kernel:
- unknown_nmi_panic
- watchdog
- watchdog_thresh
@@ -781,7 +781,7 @@ index 37a679501ddc..e78109cf3458 100644
- version
==============================================================
-@@ -435,6 +438,16 @@ When kptr_restrict is set to (2), kernel pointers printed using
+@@ -436,6 +439,16 @@ When kptr_restrict is set to (2), kernel pointers printed using
==============================================================
@@ -798,7 +798,7 @@ index 37a679501ddc..e78109cf3458 100644
l2cr: (PPC only)
This flag controls the L2 cache of G3 processor boards. If
-@@ -862,6 +875,20 @@ rebooting. ???
+@@ -863,6 +876,20 @@ rebooting. ???
==============================================================
@@ -819,7 +819,7 @@ index 37a679501ddc..e78109cf3458 100644
rtsig-max & rtsig-nr:
The file rtsig-max can be used to tune the maximum number
-@@ -1102,3 +1129,13 @@ The softlockup threshold is (2 * watchdog_thresh). Setting this
+@@ -1120,3 +1147,13 @@ The softlockup threshold is (2 * watchdog_thresh). Setting this
tunable to zero will disable lockup detection altogether.
==============================================================
@@ -834,10 +834,10 @@ index 37a679501ddc..e78109cf3458 100644
+
+==============================================================
diff --git a/arch/arc/configs/tb10x_defconfig b/arch/arc/configs/tb10x_defconfig
-index a7f65313f84a..5233307bf903 100644
+index e71ade3cf9c8..771f0bad7a3c 100644
--- a/arch/arc/configs/tb10x_defconfig
+++ b/arch/arc/configs/tb10x_defconfig
-@@ -28,7 +28,7 @@ CONFIG_ARC_PLAT_TB10X=y
+@@ -29,7 +29,7 @@ CONFIG_ARC_PLAT_TB10X=y
CONFIG_ARC_CACHE_LINE_SHIFT=5
CONFIG_HZ=250
CONFIG_ARC_BUILTIN_DTB_NAME="abilis_tb100_dvk"
@@ -847,7 +847,7 @@ index a7f65313f84a..5233307bf903 100644
CONFIG_NET=y
CONFIG_PACKET=y
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
-index e9bc88937b1e..73cde48ad00f 100644
+index bb6a35fb1dd7..ff58a38d0d5b 100644
--- a/arch/arm/configs/bcm2835_defconfig
+++ b/arch/arm/configs/bcm2835_defconfig
@@ -29,7 +29,7 @@ CONFIG_MODULE_UNLOAD=y
@@ -860,14 +860,13 @@ index e9bc88937b1e..73cde48ad00f 100644
CONFIG_KSM=y
CONFIG_CLEANCACHE=y
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
-index 7eca43ff69bb..689095192133 100644
+index 1ad5736c8fa6..cf116a40dc1c 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
-@@ -48,7 +48,7 @@ CONFIG_PCI_MSI=y
+@@ -44,6 +44,7 @@ CONFIG_PCI_MSI=y
CONFIG_PCI_IMX6=y
CONFIG_SMP=y
CONFIG_ARM_PSCI=y
--CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PREEMPT=y
CONFIG_HIGHMEM=y
CONFIG_FORCE_MAX_ZONEORDER=14
@@ -886,18 +885,30 @@ index 0bcdec7cc169..10ceaefa51e0 100644
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig
-index 7b8212857535..6c1b8a1d9d59 100644
+index 38480596c449..d509ff66f73a 100644
--- a/arch/arm/configs/mxs_defconfig
+++ b/arch/arm/configs/mxs_defconfig
-@@ -26,7 +26,7 @@ CONFIG_BLK_DEV_INTEGRITY=y
- # CONFIG_ARCH_MULTI_V7 is not set
- CONFIG_ARCH_MXS=y
- # CONFIG_ARM_THUMB is not set
+@@ -1,7 +1,7 @@
+ CONFIG_SYSVIPC=y
+ CONFIG_NO_HZ=y
+ CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT_VOLUNTARY=y
++CONFIG_PREEMPT_VOLUNTARY=n
+ CONFIG_TASKSTATS=y
+ CONFIG_TASK_DELAY_ACCT=y
+ CONFIG_TASK_XACCT=y
+@@ -27,6 +27,11 @@ CONFIG_MODVERSIONS=y
+ CONFIG_BLK_DEV_INTEGRITY=y
+ # CONFIG_IOSCHED_DEADLINE is not set
+ # CONFIG_IOSCHED_CFQ is not set
++# CONFIG_ARCH_MULTI_V7 is not set
++CONFIG_ARCH_MXS=y
++# CONFIG_ARM_THUMB is not set
+CONFIG_PREEMPT=y
- CONFIG_AEABI=y
++CONFIG_AEABI=y
CONFIG_NET=y
CONFIG_PACKET=y
+ CONFIG_UNIX=y
diff --git a/arch/blackfin/configs/BF518F-EZBRD_defconfig b/arch/blackfin/configs/BF518F-EZBRD_defconfig
new file mode 100644
index 000000000000..39b91dfa55b5
@@ -4243,7 +4254,7 @@ index 7ee736f20774..8663c0043a56 100644
CONFIG_HIBERNATION=y
CONFIG_PM_DEBUG=y
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
-index c9ef3c532169..1298454c0499 100644
+index 9fcccb4490b9..7f2b6c226eed 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -64,11 +64,6 @@ static struct task_struct *spusched_task;
@@ -5348,10 +5359,10 @@ index 000000000000..e8c4003cbd81
+CONFIG_CRC_CCITT=m
+CONFIG_CRC7=m
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 1a0be022f91d..cfa268364ec7 100644
+index 8689e794a43c..6f3519674169 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -1009,6 +1009,21 @@ config NR_CPUS
+@@ -1002,6 +1002,22 @@ config NR_CPUS
config SCHED_SMT
def_bool y if SMP
@@ -5370,10 +5381,11 @@ index 1a0be022f91d..cfa268364ec7 100644
+
+ If unsure say Y here.
+
++
config SCHED_MC
def_bool y
prompt "Multi-core scheduler support"
-@@ -1043,6 +1059,80 @@ config SCHED_MC_PRIO
+@@ -1032,6 +1048,97 @@ config SCHED_MC_PRIO
If unsure say Y here.
@@ -5441,6 +5453,22 @@ index 1a0be022f91d..cfa268364ec7 100644
+ rqshare=smp
+
+ If unsure, say N.
++
++config RQ_ALL
++ bool "NUMA"
++ depends on SMP && SCHED_MUQSS
++ help
++ With this option enabled, the CPU scheduler will have one runqueue
++ regardless of the architecture configuration, including across NUMA
++ nodes. This can substantially decrease throughput in NUMA
++ configurations, but light NUMA designs will not be dramatically
++ affected. This option should only be chosen if latency is the prime
++ concern.
++
++ This can still be enabled runtime with the boot parameter
++ rqshare=all
++
++ If unsure, say N.
+endchoice
+
+config SHARERQ
@@ -5449,12 +5477,13 @@ index 1a0be022f91d..cfa268364ec7 100644
+ default 1 if RQ_SMT
+ default 2 if RQ_MC
+ default 3 if RQ_SMP
++ default 4 if RQ_ALL
+
+
config UP_LATE_INIT
def_bool y
depends on !SMP && X86_LOCAL_APIC
-@@ -1405,7 +1495,7 @@ config HIGHMEM64G
+@@ -1393,7 +1500,7 @@ config HIGHMEM64G
endchoice
choice
@@ -5463,7 +5492,7 @@ index 1a0be022f91d..cfa268364ec7 100644
default VMSPLIT_3G
depends on X86_32
---help---
-@@ -1425,17 +1515,17 @@ choice
+@@ -1413,17 +1520,17 @@ choice
option alone!
config VMSPLIT_3G
@@ -5487,7 +5516,7 @@ index 1a0be022f91d..cfa268364ec7 100644
config PAGE_OFFSET
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig
-index 0eb9f92f3717..e5890ae917e5 100644
+index 6c3ab05c231d..264b756b11e6 100644
--- a/arch/x86/configs/i386_defconfig
+++ b/arch/x86/configs/i386_defconfig
@@ -41,7 +41,7 @@ CONFIG_SMP=y
@@ -5500,7 +5529,7 @@ index 0eb9f92f3717..e5890ae917e5 100644
CONFIG_X86_MCE=y
CONFIG_X86_REBOOTFIXUPS=y
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig
-index e32fc1f274d8..4368ba4f7967 100644
+index ac9ae487cfeb..a229a3588dac 100644
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@ -40,7 +40,7 @@ CONFIG_SMP=y
@@ -5513,7 +5542,7 @@ index e32fc1f274d8..4368ba4f7967 100644
CONFIG_X86_MCE=y
CONFIG_MICROCODE=y
diff --git a/drivers/block/swim.c b/drivers/block/swim.c
-index 0e31884a9519..16fcfbde31d5 100644
+index 3fa6fcc34790..278486c8266d 100644
--- a/drivers/block/swim.c
+++ b/drivers/block/swim.c
@@ -332,7 +332,7 @@ static inline void swim_motor(struct swim __iomem *base,
@@ -5544,10 +5573,10 @@ index 0e31884a9519..16fcfbde31d5 100644
swim_select(base, RELAX);
if (!swim_readbit(base, STEP))
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
-index 2fee65886d50..4ca0bae3df58 100644
+index f036c8f98ea3..6492d10f78d4 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
-@@ -980,7 +980,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate)
+@@ -996,7 +996,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate)
* then host can communicate with new baudrate to controller
*/
set_current_state(TASK_UNINTERRUPTIBLE);
@@ -5557,10 +5586,10 @@ index 2fee65886d50..4ca0bae3df58 100644
if (qcadev->btsoc_type == QCA_WCN3990)
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
-index 7fc9612070a1..5a7f8a879001 100644
+index a74ce885b541..c86b80418bc6 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
-@@ -3453,7 +3453,7 @@ static void cleanup_smi_msgs(struct ipmi_smi *intf)
+@@ -3450,7 +3450,7 @@ static void cleanup_smi_msgs(struct ipmi_smi *intf)
/* Current message first, to preserve order */
while (intf->curr_msg && !list_empty(&intf->waiting_rcv_msgs)) {
/* Wait for the message to clear out. */
@@ -5570,10 +5599,10 @@ index 7fc9612070a1..5a7f8a879001 100644
/* No need for locks, the interface is down. */
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
-index 29e67a80fb20..73bd0eca5fe5 100644
+index ca9528c4f183..765b2506f919 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
-@@ -1208,7 +1208,7 @@ static void shutdown_ssif(void *send_info)
+@@ -1211,7 +1211,7 @@ static void shutdown_ssif(void *send_info)
/* make sure the driver is not looking for flags any more. */
while (ssif_info->ssif_state != SSIF_NORMAL)
@@ -5661,7 +5690,7 @@ index 6bbb0b1e6032..f4b83648c405 100644
static int tsl2563_adjust_gainlevel(struct tsl2563_chip *chip, u16 adc)
diff --git a/drivers/media/i2c/msp3400-driver.c b/drivers/media/i2c/msp3400-driver.c
-index 3db966db83eb..f0fab7676f72 100644
+index c63be01059b2..4872ae954389 100644
--- a/drivers/media/i2c/msp3400-driver.c
+++ b/drivers/media/i2c/msp3400-driver.c
@@ -179,7 +179,7 @@ static int msp_read(struct i2c_client *client, int dev, int addr)
@@ -5728,10 +5757,10 @@ index f752f3993687..23372af61ebf 100644
}
diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c
-index 4cdc6d2be85d..22c0803cbff3 100644
+index a66f8b872520..f6404a3af0a5 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
-@@ -1154,7 +1154,7 @@ void ivtv_s_std_dec(struct ivtv *itv, v4l2_std_id std)
+@@ -1155,7 +1155,7 @@ void ivtv_s_std_dec(struct ivtv *itv, v4l2_std_id std)
TASK_UNINTERRUPTIBLE);
if ((read_reg(IVTV_REG_DEC_LINE_FIELD) >> 16) < 100)
break;
@@ -5741,10 +5770,10 @@ index 4cdc6d2be85d..22c0803cbff3 100644
finish_wait(&itv->vsync_waitq, &wait);
mutex_lock(&itv->serialize_lock);
diff --git a/drivers/media/pci/ivtv/ivtv-streams.c b/drivers/media/pci/ivtv/ivtv-streams.c
-index d27c6df97566..e9ffc4eeb478 100644
+index a641f20e3f86..e1b40d2b4bed 100644
--- a/drivers/media/pci/ivtv/ivtv-streams.c
+++ b/drivers/media/pci/ivtv/ivtv-streams.c
-@@ -834,7 +834,7 @@ int ivtv_stop_v4l2_encode_stream(struct ivtv_stream *s, int gop_end)
+@@ -843,7 +843,7 @@ int ivtv_stop_v4l2_encode_stream(struct ivtv_stream *s, int gop_end)
while (!test_bit(IVTV_F_I_EOS, &itv->i_flags) &&
time_before(jiffies,
then + msecs_to_jiffies(2000))) {
@@ -5754,7 +5783,7 @@ index d27c6df97566..e9ffc4eeb478 100644
/* To convert jiffies to ms, we must multiply by 1000
diff --git a/drivers/media/radio/radio-mr800.c b/drivers/media/radio/radio-mr800.c
-index 0f292c6ba338..9d7f22fe1ca8 100644
+index ab1324f68199..3fdb422a5caa 100644
--- a/drivers/media/radio/radio-mr800.c
+++ b/drivers/media/radio/radio-mr800.c
@@ -378,7 +378,7 @@ static int vidioc_s_hw_freq_seek(struct file *file, void *priv,
@@ -5767,7 +5796,7 @@ index 0f292c6ba338..9d7f22fe1ca8 100644
break;
}
diff --git a/drivers/media/radio/radio-tea5777.c b/drivers/media/radio/radio-tea5777.c
-index 04ed1a5d1177..d593d28dc286 100644
+index 61f751cf1aa4..7eb30468091e 100644
--- a/drivers/media/radio/radio-tea5777.c
+++ b/drivers/media/radio/radio-tea5777.c
@@ -245,7 +245,7 @@ static int radio_tea5777_update_read_reg(struct radio_tea5777 *tea, int wait)
@@ -5780,7 +5809,7 @@ index 04ed1a5d1177..d593d28dc286 100644
}
diff --git a/drivers/media/radio/tea575x.c b/drivers/media/radio/tea575x.c
-index 7412fe1b10c6..92dce75e6ce9 100644
+index f89f83e04741..325987cd5997 100644
--- a/drivers/media/radio/tea575x.c
+++ b/drivers/media/radio/tea575x.c
@@ -416,7 +416,7 @@ int snd_tea575x_s_hw_freq_seek(struct file *file, struct snd_tea575x *tea,
@@ -5806,7 +5835,7 @@ index d6fb2e1a759a..7ac951b84beb 100644
return UCB_ADC_DAT(val);
diff --git a/drivers/misc/sgi-xp/xpc_channel.c b/drivers/misc/sgi-xp/xpc_channel.c
-index 05a890ce2ab8..f6eb97bc3a2c 100644
+index 8e6607fc8a67..b9ab770bbdb5 100644
--- a/drivers/misc/sgi-xp/xpc_channel.c
+++ b/drivers/misc/sgi-xp/xpc_channel.c
@@ -834,7 +834,7 @@ xpc_allocate_msg_wait(struct xpc_channel *ch)
@@ -5845,10 +5874,10 @@ index 13238a72a338..fc51ae55c63f 100644
return err;
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index c3c9ba44e2a1..1bc66289699f 100644
+index 77d3c85febf1..1c8f9592a88b 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2681,7 +2681,7 @@ static void lan78xx_terminate_urbs(struct lan78xx_net *dev)
+@@ -2670,7 +2670,7 @@ static void lan78xx_terminate_urbs(struct lan78xx_net *dev)
while (!skb_queue_empty(&dev->rxq) &&
!skb_queue_empty(&dev->txq) &&
!skb_queue_empty(&dev->done)) {
@@ -5858,7 +5887,7 @@ index c3c9ba44e2a1..1bc66289699f 100644
netif_dbg(dev, ifdown, dev->net,
"waited for %d urb completions\n", temp);
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index 770aa624147f..9384de186bf9 100644
+index 504282af27e5..da60ab9b56c7 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -770,7 +770,7 @@ static void wait_skb_queue_empty(struct sk_buff_head *q)
@@ -5919,10 +5948,10 @@ index 5d41dda6da4e..34705f6b423f 100644
}
else
diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
-index c5ece7ef08c6..9256fb502545 100644
+index 225638a1b09e..fd6e157161ea 100644
--- a/drivers/platform/x86/intel_ips.c
+++ b/drivers/platform/x86/intel_ips.c
-@@ -809,7 +809,7 @@ static int ips_adjust(void *data)
+@@ -798,7 +798,7 @@ static int ips_adjust(void *data)
ips_gpu_lower(ips);
sleep:
@@ -5931,7 +5960,7 @@ index c5ece7ef08c6..9256fb502545 100644
} while (!kthread_should_stop());
dev_dbg(ips->dev, "ips-adjust thread stopped\n");
-@@ -985,7 +985,7 @@ static int ips_monitor(void *data)
+@@ -974,7 +974,7 @@ static int ips_monitor(void *data)
seqno_timestamp = get_jiffies_64();
old_cpu_power = thm_readl(THM_CEC);
@@ -5940,7 +5969,7 @@ index c5ece7ef08c6..9256fb502545 100644
/* Collect an initial average */
for (i = 0; i < IPS_SAMPLE_COUNT; i++) {
-@@ -1012,7 +1012,7 @@ static int ips_monitor(void *data)
+@@ -1001,7 +1001,7 @@ static int ips_monitor(void *data)
mchp_samples[i] = mchp;
}
@@ -5949,7 +5978,7 @@ index c5ece7ef08c6..9256fb502545 100644
if (kthread_should_stop())
break;
}
-@@ -1039,7 +1039,7 @@ static int ips_monitor(void *data)
+@@ -1028,7 +1028,7 @@ static int ips_monitor(void *data)
* us to reduce the sample frequency if the CPU and GPU are idle.
*/
old_cpu_power = thm_readl(THM_CEC);
@@ -5990,7 +6019,7 @@ index 483c7993516b..fddbaa475066 100644
if (rtc_ctrl & WM8350_RTC_ALMSTS)
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c
-index 8cbd3c9f0b4c..7e3f9baa4ac6 100644
+index 96acfcecd540..8c9ae51d98c2 100644
--- a/drivers/scsi/fnic/fnic_scsi.c
+++ b/drivers/scsi/fnic/fnic_scsi.c
@@ -217,7 +217,7 @@ int fnic_fw_reset_handler(struct fnic *fnic)
@@ -6002,7 +6031,7 @@ index 8cbd3c9f0b4c..7e3f9baa4ac6 100644
spin_lock_irqsave(&fnic->wq_copy_lock[0], flags);
-@@ -2255,7 +2255,7 @@ static int fnic_clean_pending_aborts(struct fnic *fnic,
+@@ -2249,7 +2249,7 @@ static int fnic_clean_pending_aborts(struct fnic *fnic,
}
}
@@ -6012,10 +6041,10 @@ index 8cbd3c9f0b4c..7e3f9baa4ac6 100644
/* walk again to check, if IOs are still pending in fw */
if (fnic_is_abts_pending(fnic, lr_sc))
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
-index 5c7858e735c9..b56a01420918 100644
+index 4fa6703a9ec9..24740cdfc096 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
-@@ -5201,7 +5201,7 @@ lpfc_reset_flush_io_context(struct lpfc_vport *vport, uint16_t tgt_id,
+@@ -5211,7 +5211,7 @@ lpfc_reset_flush_io_context(struct lpfc_vport *vport, uint16_t tgt_id,
tgt_id, lun_id, context);
later = msecs_to_jiffies(2 * vport->cfg_devloss_tmo * 1000) + jiffies;
while (time_after(later, jiffies) && cnt) {
@@ -6025,10 +6054,10 @@ index 5c7858e735c9..b56a01420918 100644
}
if (cnt) {
diff --git a/drivers/scsi/snic/snic_scsi.c b/drivers/scsi/snic/snic_scsi.c
-index d9b2e46424aa..4a313a0f2039 100644
+index b3650c989ed4..7ed1fb285754 100644
--- a/drivers/scsi/snic/snic_scsi.c
+++ b/drivers/scsi/snic/snic_scsi.c
-@@ -2354,7 +2354,7 @@ snic_reset(struct Scsi_Host *shost, struct scsi_cmnd *sc)
+@@ -2353,7 +2353,7 @@ snic_reset(struct Scsi_Host *shost, struct scsi_cmnd *sc)
/* Wait for all the IOs that are entered in Qcmd */
while (atomic_read(&snic->ios_inflight))
@@ -6038,10 +6067,10 @@ index d9b2e46424aa..4a313a0f2039 100644
ret = snic_issue_hba_reset(snic, sc);
if (ret) {
diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c
-index 4dee2fc37aed..2bb1c1157636 100644
+index 5edf59ac6706..3784dc56d39c 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
-@@ -4650,7 +4650,7 @@ static int cs5529_wait_for_idle(struct comedi_device *dev)
+@@ -4723,7 +4723,7 @@ static int cs5529_wait_for_idle(struct comedi_device *dev)
if ((status & NI67XX_CAL_STATUS_BUSY) == 0)
break;
set_current_state(TASK_INTERRUPTIBLE);
@@ -6704,10 +6733,10 @@ index bbed039617a4..681ae041ea77 100644
pr_debug("%s(): task ending\n", __func__);
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
-index 2d9074295d7f..7df3e60e4e89 100644
+index a1febf155747..9321458b6e89 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
-@@ -5905,7 +5905,7 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
+@@ -5937,7 +5937,7 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
flush = BTRFS_RESERVE_FLUSH_LIMIT;
if (btrfs_transaction_in_commit(fs_info))
@@ -6730,7 +6759,7 @@ index ffca2abf13d0..89b2a7f7397e 100644
} else
continue;
diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 7e9f07bf260d..87b8b504d4ac 100644
+index ce3465479447..95567e7a25dc 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -459,7 +459,7 @@ static int proc_pid_schedstat(struct seq_file *m, struct pid_namespace *ns,
@@ -6784,10 +6813,10 @@ index 9e30ed6443db..7d6e7e7cdf9f 100644
}
diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 977cb57d7bc9..1cd022304c64 100644
+index 291a9bd5b97f..5b28a41d399e 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -28,6 +28,9 @@
+@@ -29,6 +29,9 @@
#include <linux/mm_types_task.h>
#include <linux/task_io_accounting.h>
#include <linux/rseq.h>
@@ -6797,7 +6826,7 @@ index 977cb57d7bc9..1cd022304c64 100644
/* task_struct member predeclarations (sorted alphabetically): */
struct audit_context;
-@@ -208,13 +211,40 @@ struct task_group;
+@@ -209,13 +212,40 @@ struct task_group;
extern void scheduler_tick(void);
@@ -6840,7 +6869,7 @@ index 977cb57d7bc9..1cd022304c64 100644
asmlinkage void schedule(void);
extern void schedule_preempt_disabled(void);
-@@ -613,9 +643,11 @@ struct task_struct {
+@@ -610,9 +640,11 @@ struct task_struct {
unsigned int flags;
unsigned int ptrace;
@@ -6853,7 +6882,7 @@ index 977cb57d7bc9..1cd022304c64 100644
#ifdef CONFIG_THREAD_INFO_IN_TASK
/* Current CPU: */
unsigned int cpu;
-@@ -640,10 +672,25 @@ struct task_struct {
+@@ -637,10 +669,25 @@ struct task_struct {
int static_prio;
int normal_prio;
unsigned int rt_priority;
@@ -6879,7 +6908,7 @@ index 977cb57d7bc9..1cd022304c64 100644
#ifdef CONFIG_CGROUP_SCHED
struct task_group *sched_task_group;
#endif
-@@ -797,6 +844,10 @@ struct task_struct {
+@@ -801,6 +848,10 @@ struct task_struct {
#ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
u64 utimescaled;
u64 stimescaled;
@@ -6890,7 +6919,7 @@ index 977cb57d7bc9..1cd022304c64 100644
#endif
u64 gtime;
struct prev_cputime prev_cputime;
-@@ -1209,6 +1260,40 @@ struct task_struct {
+@@ -1223,6 +1274,40 @@ struct task_struct {
*/
};
@@ -7068,7 +7097,7 @@ index 22627f80063e..17077cd6fc40 100644
/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
#define SCHED_RESET_ON_FORK 0x40000000
diff --git a/init/Kconfig b/init/Kconfig
-index 1e234e2f1cba..adb61defd6c3 100644
+index ed9352513c32..f6b7f26ec002 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -45,6 +45,18 @@ config THREAD_INFO_IN_TASK
@@ -7090,7 +7119,7 @@ index 1e234e2f1cba..adb61defd6c3 100644
config BROKEN
bool
-@@ -647,6 +659,7 @@ config NUMA_BALANCING
+@@ -680,6 +692,7 @@ config NUMA_BALANCING
depends on ARCH_SUPPORTS_NUMA_BALANCING
depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
depends on SMP && NUMA && MIGRATION
@@ -7098,7 +7127,7 @@ index 1e234e2f1cba..adb61defd6c3 100644
help
This option adds support for automatic NUMA aware memory/task placement.
The mechanism is quite primitive and is based on migrating memory when
-@@ -754,9 +767,13 @@ menuconfig CGROUP_SCHED
+@@ -787,9 +800,13 @@ menuconfig CGROUP_SCHED
help
This feature lets CPU scheduler recognize task groups and control CPU
bandwidth allocation to such task groups. It uses cgroups to group
@@ -7114,7 +7143,7 @@ index 1e234e2f1cba..adb61defd6c3 100644
config FAIR_GROUP_SCHED
bool "Group scheduling for SCHED_OTHER"
depends on CGROUP_SCHED
-@@ -863,6 +880,7 @@ config CGROUP_DEVICE
+@@ -896,6 +913,7 @@ config CGROUP_DEVICE
config CGROUP_CPUACCT
bool "Simple CPU accounting controller"
@@ -7122,7 +7151,7 @@ index 1e234e2f1cba..adb61defd6c3 100644
help
Provides a simple controller for monitoring the
total CPU consumed by the tasks in a cgroup.
-@@ -981,6 +999,7 @@ config CHECKPOINT_RESTORE
+@@ -1014,6 +1032,7 @@ config CHECKPOINT_RESTORE
config SCHED_AUTOGROUP
bool "Automatic process group scheduling"
@@ -7169,10 +7198,10 @@ index 5aebe3be4d7c..2b576d3b2333 100644
#ifdef CONFIG_SMP
.pushable_tasks = PLIST_NODE_INIT(init_task.pushable_tasks, MAX_PRIO),
diff --git a/init/main.c b/init/main.c
-index 18f8f0140fa0..fe2d2d87e887 100644
+index ee147103ba1b..82ae377e8fab 100644
--- a/init/main.c
+++ b/init/main.c
-@@ -1079,6 +1079,8 @@ static int __ref kernel_init(void *unused)
+@@ -1086,6 +1086,8 @@ static int __ref kernel_init(void *unused)
rcu_end_inkernel_boot();
@@ -7289,7 +7318,7 @@ index cd1655122ec0..9cf10230d5fb 100644
\ No newline at end of file
+ bool
diff --git a/kernel/Makefile b/kernel/Makefile
-index 7a63d567fdb5..e9c738432f19 100644
+index 7343b3a9bff0..43ef9cdfad51 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -10,7 +10,7 @@ obj-y = fork.o exec_domain.o panic.o \
@@ -7302,7 +7331,7 @@ index 7a63d567fdb5..e9c738432f19 100644
obj-$(CONFIG_MODULES) += kmod.o
obj-$(CONFIG_MULTIUSER) += groups.o
diff --git a/kernel/delayacct.c b/kernel/delayacct.c
-index ca8ac2824f0b..ae824da28e4b 100644
+index 2a12b988c717..dba268ca115f 100644
--- a/kernel/delayacct.c
+++ b/kernel/delayacct.c
@@ -115,7 +115,7 @@ int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)
@@ -7365,7 +7394,7 @@ index 5f3e2baefca9..de3e5740679b 100644
bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ
---help---
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
-index fb86146037a7..b322b1a0caa0 100644
+index 9dbdccab3b6a..fa7821e0221e 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -23,9 +23,20 @@
@@ -7438,33 +7467,38 @@ index 087d18d771b5..fdddd187774a 100644
set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags);
to_kthread(p)->cpu = cpu;
diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c
-index 5bc349805e03..aa59b12d4c05 100644
+index 5bc349805e03..5572917ed7ce 100644
--- a/kernel/livepatch/transition.c
+++ b/kernel/livepatch/transition.c
-@@ -290,6 +290,12 @@ static int klp_check_stack(struct task_struct *task, char *err_buf)
- return 0;
- }
-
-+#ifdef CONFIG_SCHED_MUQSS
-+typedef unsigned long rq_flags_t;
-+#else
-+typedef struct rq_flags rq_flag_t;
-+#endif
-+
- /*
- * Try to safely switch a task to the target patch state. If it's currently
- * running, or it's sleeping on a to-be-patched or to-be-unpatched function, or
-@@ -298,7 +304,7 @@ static int klp_check_stack(struct task_struct *task, char *err_buf)
+@@ -298,7 +298,7 @@ static int klp_check_stack(struct task_struct *task, char *err_buf)
static bool klp_try_switch_task(struct task_struct *task)
{
struct rq *rq;
- struct rq_flags flags;
-+ rq_flags_t flags;
++ struct rq_flags rf;
int ret;
bool success = false;
char err_buf[STACK_ERR_BUF_SIZE];
+@@ -314,7 +314,7 @@ static bool klp_try_switch_task(struct task_struct *task)
+ * functions. If all goes well, switch the task to the target patch
+ * state.
+ */
+- rq = task_rq_lock(task, &flags);
++ rq = task_rq_lock(task, &rf);
+
+ if (task_running(rq, task) && task != current) {
+ snprintf(err_buf, STACK_ERR_BUF_SIZE,
+@@ -333,7 +333,7 @@ static bool klp_try_switch_task(struct task_struct *task)
+ task->patch_state = klp_target_state;
+
+ done:
+- task_rq_unlock(rq, task, &flags);
++ task_rq_unlock(rq, task, &rf);
+
+ /*
+ * Due to console deadlock issues, pr_debug() can't be used while
diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig
-index 9210379c0353..2dd2f03843cc 100644
+index 939a2056c87a..242f7e491e8d 100644
--- a/kernel/rcu/Kconfig
+++ b/kernel/rcu/Kconfig
@@ -93,7 +93,7 @@ config CONTEXT_TRACKING
@@ -7477,10 +7511,10 @@ index 9210379c0353..2dd2f03843cc 100644
The major pre-requirement for full dynticks to work is to
support the context tracking subsystem. But there are also
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
-index 7fe183404c38..05c8211d7a76 100644
+index 21fb5a5662b5..ced9f319a02f 100644
--- a/kernel/sched/Makefile
+++ b/kernel/sched/Makefile
-@@ -16,6 +16,17 @@ ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
+@@ -16,6 +16,18 @@ ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
CFLAGS_core.o := $(PROFILING) -fno-omit-frame-pointer
endif
@@ -7494,21 +7528,22 @@ index 7fe183404c38..05c8211d7a76 100644
+obj-$(CONFIG_CPU_FREQ) += cpufreq.o
+obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
+obj-$(CONFIG_CPU_ISOLATION) += isolation.o
++obj-$(CONFIG_PSI) += psi.o
+else
obj-y += core.o loadavg.o clock.o cputime.o
obj-y += idle.o fair.o rt.o deadline.o
obj-y += wait.o wait_bit.o swait.o completion.o
-@@ -29,3 +40,4 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq.o
- obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
+@@ -30,3 +42,4 @@ obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_CPU_ISOLATION) += isolation.o
+ obj-$(CONFIG_PSI) += psi.o
+endif
diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c
new file mode 100644
-index 000000000000..02e9eebab3d9
+index 000000000000..e8610b659791
--- /dev/null
+++ b/kernel/sched/MuQSS.c
-@@ -0,0 +1,7370 @@
+@@ -0,0 +1,7437 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * kernel/sched/MuQSS.c, was kernel/sched.c
@@ -7622,13 +7657,14 @@ index 000000000000..02e9eebab3d9
+
+void print_scheduler_version(void)
+{
-+ printk(KERN_INFO "MuQSS CPU scheduler v0.180 by Con Kolivas.\n");
++ printk(KERN_INFO "MuQSS CPU scheduler v0.185 by Con Kolivas.\n");
+}
+
+#define RQSHARE_NONE 0
+#define RQSHARE_SMT 1
+#define RQSHARE_MC 2
+#define RQSHARE_SMP 3
++#define RQSHARE_ALL 4
+
+/*
+ * This determines what level of runqueue sharing will be done and is
@@ -7650,10 +7686,14 @@ index 000000000000..02e9eebab3d9
+ rqshare = RQSHARE_MC;
+ return 0;
+ }
-+ if (!strncmp(str, "smp", 2)) {
++ if (!strncmp(str, "smp", 3)) {
+ rqshare = RQSHARE_SMP;
+ return 0;
+ }
++ if (!strncmp(str, "all", 3)) {
++ rqshare = RQSHARE_ALL;
++ return 0;
++ }
+ return 1;
+}
+__setup("rqshare=", set_rqshare);
@@ -7730,6 +7770,11 @@ index 000000000000..02e9eebab3d9
+{
+ return 0*SD_ASYM_PACKING;
+}
++
++#ifdef CONFIG_SCHED_SMT
++DEFINE_STATIC_KEY_FALSE(sched_smt_present);
++#endif
++
+#else
+struct rq *uprq;
+#endif /* CONFIG_SMP */
@@ -7759,9 +7804,7 @@ index 000000000000..02e9eebab3d9
+ * In theory, the compile should just see 0 here, and optimize out the call
+ * to sched_rt_avg_update. But I don't trust it...
+ */
-+#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
-+ s64 steal = 0, irq_delta = 0;
-+#endif
++ s64 __maybe_unused steal = 0, irq_delta = 0;
+#ifdef CONFIG_IRQ_TIME_ACCOUNTING
+ irq_delta = irq_time_read(cpu_of(rq)) - rq->prev_irq_time;
+
@@ -7800,7 +7843,7 @@ index 000000000000..02e9eebab3d9
+#endif
+ rq->clock_task += delta;
+
-+#ifdef HAVE_SCHED_AVG_IRQ
++#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
+ if (irq_delta + steal)
+ update_irq_load_avg(rq, irq_delta + steal);
+#endif
@@ -7846,16 +7889,6 @@ index 000000000000..02e9eebab3d9
+ }
+}
+
-+static inline int task_on_rq_queued(struct task_struct *p)
-+{
-+ return p->on_rq == TASK_ON_RQ_QUEUED;
-+}
-+
-+static inline int task_on_rq_migrating(struct task_struct *p)
-+{
-+ return p->on_rq == TASK_ON_RQ_MIGRATING;
-+}
-+
+/*
+ * Any time we have two runqueues locked we use that as an opportunity to
+ * synchronise niffies to the highest value as idle ticks may have artificially
@@ -8253,8 +8286,10 @@ index 000000000000..02e9eebab3d9
+ rq->best_key = rq->node->next[0]->key;
+ update_clocks(rq);
+
-+ if (!(flags & DEQUEUE_SAVE))
-+ sched_info_dequeued(task_rq(p), p);
++ if (!(flags & DEQUEUE_SAVE)) {
++ sched_info_dequeued(rq, p);
++ psi_dequeue(p, flags & DEQUEUE_SLEEP);
++ }
+ rq->nr_running--;
+ if (rt_task(p))
+ rq->rt_nr_running--;
@@ -8334,8 +8369,11 @@ index 000000000000..02e9eebab3d9
+ * so mask out ~microseconds as the random seed for skiplist insertion.
+ */
+ update_clocks(rq);
-+ if (!(flags & ENQUEUE_RESTORE))
++ if (!(flags & ENQUEUE_RESTORE)) {
+ sched_info_queued(rq, p);
++ psi_enqueue(p, flags & ENQUEUE_WAKEUP);
++ }
++
+ randseed = (rq->niffies >> 10) & 0xFFFFFFFF;
+ skiplist_insert(rq->sl, &p->node, sl_id, p, randseed);
+ rq->best_key = rq->node->next[0]->key;
@@ -8522,10 +8560,6 @@ index 000000000000..02e9eebab3d9
+#define CPUIDLE_THREAD_BUSY (16)
+#define CPUIDLE_DIFF_NODE (32)
+
-+#ifdef CONFIG_SCHED_SMT
-+DEFINE_STATIC_KEY_FALSE(sched_smt_present);
-+#endif
-+
+/*
+ * The best idle CPU is chosen according to the CPUIDLE ranking above where the
+ * lowest value would give the most suitable CPU to schedule p onto next. The
@@ -8714,7 +8748,7 @@ index 000000000000..02e9eebab3d9
+/*
+ * activate_task - move a task to the runqueue. Enter with rq locked.
+ */
-+static void activate_task(struct task_struct *p, struct rq *rq)
++static void activate_task(struct task_struct *p, struct rq *rq, int flags)
+{
+ resched_if_idle(rq);
+
@@ -8733,7 +8767,7 @@ index 000000000000..02e9eebab3d9
+ if (task_contributes_to_load(p))
+ rq->nr_uninterruptible--;
+
-+ enqueue_task(rq, p, 0);
++ enqueue_task(rq, p, flags);
+ p->on_rq = TASK_ON_RQ_QUEUED;
+}
+
@@ -8741,13 +8775,16 @@ index 000000000000..02e9eebab3d9
+ * deactivate_task - If it's running, it's not on the runqueue and we can just
+ * decrement the nr_running. Enter with rq locked.
+ */
-+static inline void deactivate_task(struct task_struct *p, struct rq *rq)
++static inline void deactivate_task(struct task_struct *p, struct rq *rq, int flags)
+{
+ if (task_contributes_to_load(p))
+ rq->nr_uninterruptible++;
+
+ p->on_rq = 0;
-+ sched_info_dequeued(rq, p);
++ if (!(flags & DEQUEUE_SAVE)) {
++ sched_info_dequeued(rq, p);
++ psi_dequeue(p, flags & DEQUEUE_SLEEP);
++ }
+}
+
+#ifdef CONFIG_SMP
@@ -8838,7 +8875,7 @@ index 000000000000..02e9eebab3d9
+ int cpu, bool deactivate)
+{
+ if (deactivate)
-+ deactivate_task(p, rq);
++ deactivate_task(p, rq, DEQUEUE_SLEEP);
+ else {
+#ifdef CONFIG_SMP
+ /*
@@ -8893,7 +8930,7 @@ index 000000000000..02e9eebab3d9
+unsigned long wait_task_inactive(struct task_struct *p, long match_state)
+{
+ int running, queued;
-+ unsigned long flags;
++ struct rq_flags rf;
+ unsigned long ncsw;
+ struct rq *rq;
+
@@ -8922,14 +8959,14 @@ index 000000000000..02e9eebab3d9
+ * lock now, to be *sure*. If we're wrong, we'll
+ * just go back and repeat.
+ */
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ trace_sched_wait_task(p);
+ running = task_running(rq, p);
+ queued = task_on_rq_queued(p);
+ ncsw = 0;
+ if (!match_state || p->state == match_state)
+ ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+
+ /*
+ * If it changed from the expected state, bail out now.
@@ -9172,9 +9209,9 @@ index 000000000000..02e9eebab3d9
+ __schedstat_inc(rq->ttwu_count);
+}
+
-+static inline void ttwu_activate(struct rq *rq, struct task_struct *p)
++static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
+{
-+ activate_task(p, rq);
++ activate_task(p, rq, en_flags);
+
+ /* if a worker is waking up, notify the workqueue */
+ if (p->flags & PF_WQ_WORKER)
@@ -9203,14 +9240,19 @@ index 000000000000..02e9eebab3d9
+static void
+ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags)
+{
++ int en_flags = ENQUEUE_WAKEUP;
++
+ lockdep_assert_held(rq->lock);
+
+#ifdef CONFIG_SMP
+ if (p->sched_contributes_to_load)
+ rq->nr_uninterruptible--;
++
++ if (wake_flags & WF_MIGRATED)
++ en_flags |= ENQUEUE_MIGRATED;
+#endif
+
-+ ttwu_activate(rq, p);
++ ttwu_activate(rq, p, en_flags);
+ ttwu_do_wakeup(rq, p, wake_flags);
+}
+
@@ -9225,12 +9267,12 @@ index 000000000000..02e9eebab3d9
+ struct rq *rq;
+ int ret = 0;
+
-+ rq = __task_rq_lock(p);
++ rq = __task_rq_lock(p, NULL);
+ if (likely(task_on_rq_queued(p))) {
+ ttwu_do_wakeup(rq, p, wake_flags);
+ ret = 1;
+ }
-+ __task_rq_unlock(rq);
++ __task_rq_unlock(rq, NULL);
+
+ return ret;
+}
@@ -9241,17 +9283,17 @@ index 000000000000..02e9eebab3d9
+ struct rq *rq = this_rq();
+ struct llist_node *llist = llist_del_all(&rq->wake_list);
+ struct task_struct *p, *t;
-+ unsigned long flags;
++ struct rq_flags rf;
+
+ if (!llist)
+ return;
+
-+ rq_lock_irqsave(rq, &flags);
++ rq_lock_irqsave(rq, &rf);
+
+ llist_for_each_entry_safe(p, t, llist, wake_entry)
+ ttwu_do_activate(rq, p, 0);
+
-+ rq_unlock_irqrestore(rq, &flags);
++ rq_unlock_irqrestore(rq, &rf);
+}
+
+void scheduler_ipi(void)
@@ -9299,7 +9341,7 @@ index 000000000000..02e9eebab3d9
+void wake_up_if_idle(int cpu)
+{
+ struct rq *rq = cpu_rq(cpu);
-+ unsigned long flags;
++ struct rq_flags rf;
+
+ rcu_read_lock();
+
@@ -9309,11 +9351,11 @@ index 000000000000..02e9eebab3d9
+ if (set_nr_if_polling(rq->idle)) {
+ trace_sched_wake_idle_without_ipi(cpu);
+ } else {
-+ rq_lock_irqsave(rq, &flags);
++ rq_lock_irqsave(rq, &rf);
+ if (likely(is_idle_task(rq->curr)))
+ smp_sched_reschedule(cpu);
+ /* Else cpu is not in idle, do nothing here */
-+ rq_unlock_irqrestore(rq, &flags);
++ rq_unlock_irqrestore(rq, &rf);
+ }
+
+out:
@@ -9515,8 +9557,11 @@ index 000000000000..02e9eebab3d9
+ }
+
+ cpu = select_best_cpu(p);
-+ if (task_cpu(p) != cpu)
++ if (task_cpu(p) != cpu) {
++ wake_flags |= WF_MIGRATED;
++ psi_ttwu_dequeue(p);
+ set_task_cpu(p, cpu);
++ }
+
+#else /* CONFIG_SMP */
+
@@ -9576,7 +9621,7 @@ index 000000000000..02e9eebab3d9
+ delayacct_blkio_end(p);
+ atomic_dec(&rq->nr_iowait);
+ }
-+ ttwu_activate(rq, p);
++ ttwu_activate(rq, p, ENQUEUE_WAKEUP);
+ }
+
+ ttwu_do_wakeup(rq, p, 0);
@@ -9921,7 +9966,7 @@ index 000000000000..02e9eebab3d9
+ time_slice_expired(p, new_rq);
+ try_preempt(p, new_rq);
+ }
-+ activate_task(p, new_rq);
++ activate_task(p, new_rq, 0);
+ double_rq_unlock(rq, new_rq);
+ raw_spin_unlock_irqrestore(&p->pi_lock, flags);
+}
@@ -10085,7 +10130,7 @@ index 000000000000..02e9eebab3d9
+ raw_spin_unlock(rq->lock);
+
+ raw_spin_lock(&prev->pi_lock);
-+ rq = __task_rq_lock(prev);
++ rq = __task_rq_lock(prev, NULL);
+ /* Check that someone else hasn't already queued prev */
+ if (likely(!task_queued(prev))) {
+ enqueue_task(rq, prev, 0);
@@ -10366,6 +10411,18 @@ index 000000000000..02e9eebab3d9
+}
+
+/*
++ * Consumers of these two interfaces, like for example the cpufreq menu
++ * governor are using nonsensical data. Boosting frequency for a CPU that has
++ * IO-wait which might not even end up running the task when it does become
++ * runnable.
++ */
++
++unsigned long nr_iowait_cpu(int cpu)
++{
++ return atomic_read(&cpu_rq(cpu)->nr_iowait);
++}
++
++/*
+ * IO-wait accounting, and how its mostly bollocks (on SMP).
+ *
+ * The idea behind IO-wait account is to account the idle time that we could
@@ -10400,41 +10457,16 @@ index 000000000000..02e9eebab3d9
+ unsigned long i, sum = 0;
+
+ for_each_possible_cpu(i)
-+ sum += atomic_read(&cpu_rq(i)->nr_iowait);
++ sum += nr_iowait_cpu(i);
+
+ return sum;
+}
+
-+/*
-+ * Consumers of these two interfaces, like for example the cpufreq menu
-+ * governor are using nonsensical data. Boosting frequency for a CPU that has
-+ * IO-wait which might not even end up running the task when it does become
-+ * runnable.
-+ */
-+
-+unsigned long nr_iowait_cpu(int cpu)
-+{
-+ struct rq *this = cpu_rq(cpu);
-+ return atomic_read(&this->nr_iowait);
-+}
-+
+unsigned long nr_active(void)
+{
+ return nr_running() + nr_uninterruptible();
+}
+
-+/*
-+ * I/O wait is the number of running or queued tasks with their ->rq pointer
-+ * set to this cpu as being the CPU they're more likely to run on.
-+ */
-+void get_iowait_load(unsigned long *nr_waiters, unsigned long *load)
-+{
-+ struct rq *rq = this_rq();
-+
-+ *nr_waiters = atomic_read(&rq->nr_iowait);
-+ *load = rq_load(rq);
-+}
-+
+/* Variables and functions for calc_load */
+static unsigned long calc_load_update;
+unsigned long avenrun[3];
@@ -10455,18 +10487,6 @@ index 000000000000..02e9eebab3d9
+ loads[2] = (avenrun[2] + offset) << shift;
+}
+
-+static unsigned long
-+calc_load(unsigned long load, unsigned long exp, unsigned long active)
-+{
-+ unsigned long newload;
-+
-+ newload = load * exp + active * (FIXED_1 - exp);
-+ if (active >= load)
-+ newload += FIXED_1-1;
-+
-+ return newload / FIXED_1;
-+}
-+
+/*
+ * calc_load - update the avenrun load estimates every LOAD_FREQ seconds.
+ */
@@ -10485,6 +10505,75 @@ index 000000000000..02e9eebab3d9
+ calc_load_update = jiffies + LOAD_FREQ;
+}
+
++/**
++ * fixed_power_int - compute: x^n, in O(log n) time
++ *
++ * @x: base of the power
++ * @frac_bits: fractional bits of @x
++ * @n: power to raise @x to.
++ *
++ * By exploiting the relation between the definition of the natural power
++ * function: x^n := x*x*...*x (x multiplied by itself for n times), and
++ * the binary encoding of numbers used by computers: n := \Sum n_i * 2^i,
++ * (where: n_i \elem {0, 1}, the binary vector representing n),
++ * we find: x^n := x^(\Sum n_i * 2^i) := \Prod x^(n_i * 2^i), which is
++ * of course trivially computable in O(log_2 n), the length of our binary
++ * vector.
++ */
++static unsigned long
++fixed_power_int(unsigned long x, unsigned int frac_bits, unsigned int n)
++{
++ unsigned long result = 1UL << frac_bits;
++
++ if (n) {
++ for (;;) {
++ if (n & 1) {
++ result *= x;
++ result += 1UL << (frac_bits - 1);
++ result >>= frac_bits;
++ }
++ n >>= 1;
++ if (!n)
++ break;
++ x *= x;
++ x += 1UL << (frac_bits - 1);
++ x >>= frac_bits;
++ }
++ }
++
++ return result;
++}
++
++/*
++ * a1 = a0 * e + a * (1 - e)
++ *
++ * a2 = a1 * e + a * (1 - e)
++ * = (a0 * e + a * (1 - e)) * e + a * (1 - e)
++ * = a0 * e^2 + a * (1 - e) * (1 + e)
++ *
++ * a3 = a2 * e + a * (1 - e)
++ * = (a0 * e^2 + a * (1 - e) * (1 + e)) * e + a * (1 - e)
++ * = a0 * e^3 + a * (1 - e) * (1 + e + e^2)
++ *
++ * ...
++ *
++ * an = a0 * e^n + a * (1 - e) * (1 + e + ... + e^n-1) [1]
++ * = a0 * e^n + a * (1 - e) * (1 - e^n)/(1 - e)
++ * = a0 * e^n + a * (1 - e^n)
++ *
++ * [1] application of the geometric series:
++ *
++ * n 1 - x^(n+1)
++ * S_n := \Sum x^i = -------------
++ * i=0 1 - x
++ */
++unsigned long
++calc_load_n(unsigned long load, unsigned long exp,
++ unsigned long active, unsigned int n)
++{
++ return calc_load(load, fixed_power_int(exp, FSHIFT, n), active);
++}
++
+DEFINE_PER_CPU(struct kernel_stat, kstat);
+DEFINE_PER_CPU(struct kernel_cpustat, kernel_cpustat);
+
@@ -10698,7 +10787,7 @@ index 000000000000..02e9eebab3d9
+ */
+unsigned long long task_sched_runtime(struct task_struct *p)
+{
-+ unsigned long flags;
++ struct rq_flags rf;
+ struct rq *rq;
+ u64 ns;
+
@@ -10718,9 +10807,9 @@ index 000000000000..02e9eebab3d9
+ return tsk_seruntime(p);
+#endif
+
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ ns = p->sched_time + do_task_delta_exec(p, rq);
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+
+ return ns;
+}
@@ -10884,7 +10973,7 @@ index 000000000000..02e9eebab3d9
+ task_tick(rq);
+
+out_unlock:
-+ rq_unlock_irq(rq);
++ rq_unlock_irq(rq, NULL);
+
+out_requeue:
+ /*
@@ -10956,6 +11045,7 @@ index 000000000000..02e9eebab3d9
+ task_tick(rq);
+ rq->last_scheduler_tick = rq->last_jiffy;
+ rq->last_tick = rq->clock;
++ psi_task_tick(rq);
+ perf_event_task_tick();
+ sched_stop_tick(rq, cpu);
+}
@@ -11413,7 +11503,7 @@ index 000000000000..02e9eebab3d9
+ if (unlikely(preempt && prev != idle && !test_tsk_need_resched(prev))) {
+ rq->preempt = NULL;
+ clear_preempt_need_resched();
-+ rq_unlock_irq(rq);
++ rq_unlock_irq(rq, NULL);
+ return;
+ }
+ rq->preempt = NULL;
@@ -11801,7 +11891,7 @@ index 000000000000..02e9eebab3d9
+ if (p->pi_top_task == pi_task && prio == p->prio)
+ return;
+
-+ rq = __task_rq_lock(p);
++ rq = __task_rq_lock(p, NULL);
+ update_rq_clock(rq);
+ /*
+ * Set under pi_lock && rq->lock, such that the value can be used under
@@ -11852,7 +11942,7 @@ index 000000000000..02e9eebab3d9
+ try_preempt(p, rq);
+ }
+out_unlock:
-+ __task_rq_unlock(rq);
++ __task_rq_unlock(rq, NULL);
+}
+#else
+static inline int rt_effective_prio(struct task_struct *p, int prio)
@@ -11873,7 +11963,7 @@ index 000000000000..02e9eebab3d9
+void set_user_nice(struct task_struct *p, long nice)
+{
+ int new_static, old_static;
-+ unsigned long flags;
++ struct rq_flags rf;
+ struct rq *rq;
+
+ if (task_nice(p) == nice || nice < MIN_NICE || nice > MAX_NICE)
@@ -11883,7 +11973,7 @@ index 000000000000..02e9eebab3d9
+ * We have to be careful, if called from sys_setpriority(),
+ * the task might be in the middle of scheduling on another CPU.
+ */
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ update_rq_clock(rq);
+
+ /*
@@ -11913,7 +12003,7 @@ index 000000000000..02e9eebab3d9
+ resched_task(p);
+ }
+out_unlock:
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+}
+EXPORT_SYMBOL(set_user_nice);
+
@@ -12097,7 +12187,8 @@ index 000000000000..02e9eebab3d9
+ bool user, bool pi)
+{
+ int retval, policy = attr->sched_policy, oldpolicy = -1, priority = attr->sched_priority;
-+ unsigned long flags, rlim_rtprio = 0;
++ unsigned long rlim_rtprio = 0;
++ struct rq_flags rf;
+ int reset_on_fork;
+ struct rq *rq;
+
@@ -12214,14 +12305,14 @@ index 000000000000..02e9eebab3d9
+ * To be able to change p->policy safely, the runqueue lock must be
+ * held.
+ */
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ update_rq_clock(rq);
+
+ /*
+ * Changing the policy of the stop threads its a very bad idea:
+ */
+ if (p == rq->stop) {
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+ return -EINVAL;
+ }
+
@@ -12230,20 +12321,20 @@ index 000000000000..02e9eebab3d9
+ */
+ if (unlikely(policy == p->policy && (!is_rt_policy(policy) ||
+ priority == p->rt_priority))) {
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+ return 0;
+ }
+
+ /* Re-check policy now with rq lock held */
+ if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
+ policy = oldpolicy = -1;
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+ goto recheck;
+ }
+ p->sched_reset_on_fork = reset_on_fork;
+
+ __setscheduler(p, rq, policy, priority, pi);
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+
+ if (pi)
+ rt_mutex_adjust_pi(p);
@@ -13076,7 +13167,7 @@ index 000000000000..02e9eebab3d9
+{
+ struct task_struct *p;
+ unsigned int time_slice;
-+ unsigned long flags;
++ struct rq_flags rf;
+ struct rq *rq;
+ int retval;
+
@@ -13093,9 +13184,9 @@ index 000000000000..02e9eebab3d9
+ if (retval)
+ goto out_unlock;
+
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ time_slice = p->policy == SCHED_FIFO ? 0 : MS_TO_NS(task_timeslice(p));
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+
+ rcu_read_unlock();
+ *t = ns_to_timespec64(time_slice);
@@ -13118,7 +13209,7 @@ index 000000000000..02e9eebab3d9
+ * an error code.
+ */
+SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
-+ struct timespec __user *, interval)
++ struct __kernel_timespec __user *, interval)
+{
+ struct timespec64 t;
+ int retval = sched_rr_get_interval(pid, &t);
@@ -13129,16 +13220,16 @@ index 000000000000..02e9eebab3d9
+ return retval;
+}
+
-+#ifdef CONFIG_COMPAT
++#ifdef CONFIG_COMPAT_32BIT_TIME
+COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
+ compat_pid_t, pid,
-+ struct compat_timespec __user *, interval)
++ struct old_timespec32 __user *, interval)
+{
+ struct timespec64 t;
+ int retval = sched_rr_get_interval(pid, &t);
+
+ if (retval == 0)
-+ retval = compat_put_timespec64(&t, interval);
++ retval = put_old_timespec32(&t, interval);
+ return retval;
+}
+#endif
@@ -13268,10 +13359,10 @@ index 000000000000..02e9eebab3d9
+ if (needs_other_cpu(p, task_cpu(p))) {
+ struct rq *rq;
+
-+ rq = __task_rq_lock(p);
++ rq = __task_rq_lock(p, NULL);
+ set_task_cpu(p, valid_task_cpu(p));
+ resched_task(p);
-+ __task_rq_unlock(rq);
++ __task_rq_unlock(rq, NULL);
+ }
+}
+#endif
@@ -13362,12 +13453,12 @@ index 000000000000..02e9eebab3d9
+void resched_cpu(int cpu)
+{
+ struct rq *rq = cpu_rq(cpu);
-+ unsigned long flags;
++ struct rq_flags rf;
+
-+ rq_lock_irqsave(rq, &flags);
++ rq_lock_irqsave(rq, &rf);
+ if (cpu_online(cpu) || cpu == smp_processor_id())
+ resched_curr(rq);
-+ rq_unlock_irqrestore(rq, &flags);
++ rq_unlock_irqrestore(rq, &rf);
+}
+
+#ifdef CONFIG_SMP
@@ -13487,11 +13578,11 @@ index 000000000000..02e9eebab3d9
+ const struct cpumask *cpu_valid_mask = cpu_active_mask;
+ bool queued = false, running_wrong = false, kthread;
+ struct cpumask old_mask;
-+ unsigned long flags;
++ struct rq_flags rf;
+ int cpu, ret = 0;
+ struct rq *rq;
+
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ update_rq_clock(rq);
+
+ kthread = !!(p->flags & PF_KTHREAD);
@@ -13569,7 +13660,7 @@ index 000000000000..02e9eebab3d9
+ if (running_wrong)
+ preempt_disable();
+out:
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+
+ if (running_wrong) {
+ __schedule(true);
@@ -13997,7 +14088,7 @@ index 000000000000..02e9eebab3d9
+int sched_cpu_activate(unsigned int cpu)
+{
+ struct rq *rq = cpu_rq(cpu);
-+ unsigned long flags;
++ struct rq_flags rf;
+
+ set_cpu_active(cpu, true);
+
@@ -14015,13 +14106,13 @@ index 000000000000..02e9eebab3d9
+ * 2) At runtime, if cpuset_cpu_active() fails to rebuild the
+ * domains.
+ */
-+ rq_lock_irqsave(rq, &flags);
++ rq_lock_irqsave(rq, &rf);
+ if (rq->rd) {
+ BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
+ set_rq_online(rq);
+ }
+ unbind_zero(cpu);
-+ rq_unlock_irqrestore(rq, &flags);
++ rq_unlock_irqrestore(rq, &rf);
+
+ return 0;
+}
@@ -14130,7 +14221,7 @@ index 000000000000..02e9eebab3d9
+
+void __init sched_init_smp(void)
+{
-+ struct rq *rq, *other_rq, *leader;
++ struct rq *rq, *other_rq, *leader = cpu_rq(0);
+ struct sched_domain *sd;
+ int cpu, other_cpu, i;
+#ifdef CONFIG_SCHED_SMT
@@ -14141,11 +14232,14 @@ index 000000000000..02e9eebab3d9
+ /*
+ * There's no userspace yet to cause hotplug operations; hence all the
+ * cpu masks are stable and all blatant races in the below code cannot
-+ * happen.
++ * happen. The hotplug lock is nevertheless taken to satisfy lockdep,
++ * but there won't be any contention on it.
+ */
++ cpus_read_lock();
+ mutex_lock(&sched_domains_mutex);
+ sched_init_domains(cpu_active_mask);
+ mutex_unlock(&sched_domains_mutex);
++ cpus_read_unlock();
+
+ /* Move init over to a non-isolated CPU */
+ if (set_cpus_allowed_ptr(current, housekeeping_cpumask(HK_FLAG_DOMAIN)) < 0)
@@ -14170,10 +14264,11 @@ index 000000000000..02e9eebab3d9
+ for_each_domain(cpu, sd) {
+ if (sd->level > SD_LV_MC)
+ continue;
-+ leader = NULL;
++ if (rqshare != RQSHARE_ALL)
++ leader = NULL;
+ /* Set locality to local node if not already found lower */
+ for_each_cpu(other_cpu, sched_domain_span(sd)) {
-+ if (rqshare == RQSHARE_SMP) {
++ if (rqshare >= RQSHARE_SMP) {
+ other_rq = cpu_rq(other_cpu);
+
+ /* Set the smp_leader to the first CPU */
@@ -14380,21 +14475,26 @@ index 000000000000..02e9eebab3d9
+ }
+ }
+ switch (rqshare) {
++ case RQSHARE_ALL:
++ /* This should only ever read 1 */
++ printk(KERN_INFO "MuQSS runqueue share type ALL total runqueues: %d\n",
++ total_runqueues);
++ break;
+ case RQSHARE_SMP:
+ printk(KERN_INFO "MuQSS runqueue share type SMP total runqueues: %d\n",
-+ total_runqueues);
++ total_runqueues);
+ break;
+ case RQSHARE_MC:
+ printk(KERN_INFO "MuQSS runqueue share type MC total runqueues: %d\n",
-+ total_runqueues);
++ total_runqueues);
+ break;
+ case RQSHARE_SMT:
+ printk(KERN_INFO "MuQSS runqueue share type SMT total runqueues: %d\n",
-+ total_runqueues);
++ total_runqueues);
+ break;
+ case RQSHARE_NONE:
-+ printk(KERN_INFO "MuQSS runqueue share type none total runqueues: %d\n",
-+ total_runqueues);
++ printk(KERN_INFO "MuQSS runqueue share type NONE total runqueues: %d\n",
++ total_runqueues);
+ break;
+ }
+
@@ -14554,6 +14654,8 @@ index 000000000000..02e9eebab3d9
+#endif /* SMP */
+
+ init_schedstats();
++
++ psi_init();
+}
+
+#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
@@ -14635,7 +14737,7 @@ index 000000000000..02e9eebab3d9
+static inline void normalise_rt_tasks(void)
+{
+ struct task_struct *g, *p;
-+ unsigned long flags;
++ struct rq_flags rf;
+ struct rq *rq;
+
+ read_lock(&tasklist_lock);
@@ -14649,9 +14751,9 @@ index 000000000000..02e9eebab3d9
+ if (!rt_task(p) && !iso_task(p))
+ continue;
+
-+ rq = task_rq_lock(p, &flags);
++ rq = task_rq_lock(p, &rf);
+ __setscheduler(p, rq, SCHED_NORMAL, 0, false);
-+ task_rq_unlock(rq, p, &flags);
++ task_rq_unlock(rq, p, &rf);
+ }
+ read_unlock(&tasklist_lock);
+}
@@ -14881,29 +14983,30 @@ index 000000000000..02e9eebab3d9
+#undef CREATE_TRACE_POINTS
diff --git a/kernel/sched/MuQSS.h b/kernel/sched/MuQSS.h
new file mode 100644
-index 000000000000..e3687ebaeb71
+index 000000000000..78642f59b3f2
--- /dev/null
+++ b/kernel/sched/MuQSS.h
-@@ -0,0 +1,881 @@
+@@ -0,0 +1,917 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef MUQSS_SCHED_H
+#define MUQSS_SCHED_H
+
+#include <linux/sched/clock.h>
-+#include <linux/sched/wake_q.h>
-+#include <linux/sched/signal.h>
-+#include <linux/sched/mm.h>
+#include <linux/sched/cpufreq.h>
-+#include <linux/sched/stat.h>
-+#include <linux/sched/nohz.h>
++#include <linux/sched/cputime.h>
+#include <linux/sched/debug.h>
+#include <linux/sched/hotplug.h>
++#include <linux/sched/init.h>
++#include <linux/sched/isolation.h>
++#include <linux/sched/mm.h>
++#include <linux/sched/nohz.h>
++#include <linux/sched/signal.h>
++#include <linux/sched/smt.h>
++#include <linux/sched/stat.h>
+#include <linux/sched/task.h>
+#include <linux/sched/task_stack.h>
+#include <linux/sched/topology.h>
-+#include <linux/sched/cputime.h>
-+#include <linux/sched/init.h>
-+#include <linux/sched/isolation.h>
++#include <linux/sched/wake_q.h>
+
+#include <uapi/linux/sched/types.h>
+
@@ -14917,10 +15020,10 @@ index 000000000000..e3687ebaeb71
+#include <linux/kthread.h>
+#include <linux/livepatch.h>
+#include <linux/proc_fs.h>
++#include <linux/psi.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/skip_list.h>
-+#include <linux/stackprotector.h>
+#include <linux/stop_machine.h>
+#include <linux/suspend.h>
+#include <linux/swait.h>
@@ -14946,10 +15049,6 @@ index 000000000000..e3687ebaeb71
+
+struct rq;
+
-+#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
-+#define HAVE_SCHED_AVG_IRQ
-+#endif
-+
+#ifdef CONFIG_SMP
+
+static inline bool sched_asym_prefer(int a, int b)
@@ -14972,8 +15071,12 @@ index 000000000000..e3687ebaeb71
+ cpumask_var_t span;
+ cpumask_var_t online;
+
-+ /* Indicate more than one runnable task for any CPU */
-+ bool overload;
++ /*
++ * Indicate pullable load on at least one CPU, e.g:
++ * - More than one runnable task
++ * - Running task is misfit
++ */
++ int overload;
+
+ /*
+ * The bit corresponding to a CPU gets set here if such CPU has more
@@ -15064,7 +15167,7 @@ index 000000000000..e3687ebaeb71
+
+ u64 load_update; /* When we last updated load */
+ unsigned long load_avg; /* Rolling load average */
-+#ifdef HAVE_SCHED_AVG_IRQ
++#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
+ u64 irq_load_update; /* When we last updated IRQ load */
+ unsigned long irq_load_avg; /* Rolling IRQ load average */
+#endif
@@ -15161,6 +15264,10 @@ index 000000000000..e3687ebaeb71
+#endif
+};
+
++struct rq_flags {
++ unsigned long flags;
++};
++
+#ifdef CONFIG_SMP
+struct rq *cpu_rq(int cpu);
+#endif
@@ -15193,6 +15300,16 @@ index 000000000000..e3687ebaeb71
+#endif
+}
+
++static inline int task_on_rq_queued(struct task_struct *p)
++{
++ return p->on_rq == TASK_ON_RQ_QUEUED;
++}
++
++static inline int task_on_rq_migrating(struct task_struct *p)
++{
++ return p->on_rq == TASK_ON_RQ_MIGRATING;
++}
++
+static inline void rq_lock(struct rq *rq)
+ __acquires(rq->lock)
+{
@@ -15211,51 +15328,51 @@ index 000000000000..e3687ebaeb71
+ raw_spin_lock_irq(rq->lock);
+}
+
-+static inline void rq_unlock_irq(struct rq *rq)
++static inline void rq_unlock_irq(struct rq *rq, struct rq_flags __always_unused *rf)
+ __releases(rq->lock)
+{
+ raw_spin_unlock_irq(rq->lock);
+}
+
-+static inline void rq_lock_irqsave(struct rq *rq, unsigned long *flags)
++static inline void rq_lock_irqsave(struct rq *rq, struct rq_flags *rf)
+ __acquires(rq->lock)
+{
-+ raw_spin_lock_irqsave(rq->lock, *flags);
++ raw_spin_lock_irqsave(rq->lock, rf->flags);
+}
+
-+static inline void rq_unlock_irqrestore(struct rq *rq, unsigned long *flags)
++static inline void rq_unlock_irqrestore(struct rq *rq, struct rq_flags *rf)
+ __releases(rq->lock)
+{
-+ raw_spin_unlock_irqrestore(rq->lock, *flags);
++ raw_spin_unlock_irqrestore(rq->lock, rf->flags);
+}
+
-+static inline struct rq *task_rq_lock(struct task_struct *p, unsigned long *flags)
++static inline struct rq *task_rq_lock(struct task_struct *p, struct rq_flags *rf)
+ __acquires(p->pi_lock)
+ __acquires(rq->lock)
+{
+ struct rq *rq;
+
+ while (42) {
-+ raw_spin_lock_irqsave(&p->pi_lock, *flags);
++ raw_spin_lock_irqsave(&p->pi_lock, rf->flags);
+ rq = task_rq(p);
+ raw_spin_lock(rq->lock);
+ if (likely(rq == task_rq(p)))
+ break;
+ raw_spin_unlock(rq->lock);
-+ raw_spin_unlock_irqrestore(&p->pi_lock, *flags);
++ raw_spin_unlock_irqrestore(&p->pi_lock, rf->flags);
+ }
+ return rq;
+}
+
-+static inline void task_rq_unlock(struct rq *rq, struct task_struct *p, unsigned long *flags)
++static inline void task_rq_unlock(struct rq *rq, struct task_struct *p, struct rq_flags *rf)
+ __releases(rq->lock)
+ __releases(p->pi_lock)
+{
+ rq_unlock(rq);
-+ raw_spin_unlock_irqrestore(&p->pi_lock, *flags);
++ raw_spin_unlock_irqrestore(&p->pi_lock, rf->flags);
+}
+
-+static inline struct rq *__task_rq_lock(struct task_struct *p)
++static inline struct rq *__task_rq_lock(struct task_struct *p, struct rq_flags __always_unused *rf)
+ __acquires(rq->lock)
+{
+ struct rq *rq;
@@ -15272,11 +15389,23 @@ index 000000000000..e3687ebaeb71
+ return rq;
+}
+
-+static inline void __task_rq_unlock(struct rq *rq)
++static inline void __task_rq_unlock(struct rq *rq, struct rq_flags __always_unused *rf)
+{
+ rq_unlock(rq);
+}
+
++static inline struct rq *
++this_rq_lock_irq(struct rq_flags *rf)
++ __acquires(rq->lock)
++{
++ struct rq *rq;
++
++ local_irq_disable();
++ rq = this_rq();
++ rq_lock(rq);
++ return rq;
++}
++
+/*
+ * {de,en}queue flags: Most not used on MuQSS.
+ *
@@ -15296,10 +15425,18 @@ index 000000000000..e3687ebaeb71
+ *
+ */
+
++#define DEQUEUE_SLEEP 0x01
+#define DEQUEUE_SAVE 0x02 /* matches ENQUEUE_RESTORE */
+
++#define ENQUEUE_WAKEUP 0x01
+#define ENQUEUE_RESTORE 0x02
+
++#ifdef CONFIG_SMP
++#define ENQUEUE_MIGRATED 0x40
++#else
++#define ENQUEUE_MIGRATED 0x00
++#endif
++
+static inline u64 __rq_clock_broken(struct rq *rq)
+{
+ return READ_ONCE(rq->clock);
@@ -15407,10 +15544,11 @@ index 000000000000..e3687ebaeb71
+ * CPU capacity of this group, SCHED_CAPACITY_SCALE being max capacity
+ * for a single CPU.
+ */
-+ unsigned long capacity;
-+ unsigned long min_capacity; /* Min per-CPU capacity in group */
-+ unsigned long next_update;
-+ int imbalance; /* XXX unrelated to capacity but shared group state */
++ unsigned long capacity;
++ unsigned long min_capacity; /* Min per-CPU capacity in group */
++ unsigned long max_capacity; /* Max per-CPU capacity in group */
++ unsigned long next_update;
++ int imbalance; /* XXX unrelated to capacity but shared group state */
+
+#ifdef CONFIG_SCHED_DEBUG
+ int id;
@@ -15732,7 +15870,7 @@ index 000000000000..e3687ebaeb71
+ return ret;
+}
+
-+#ifdef HAVE_SCHED_AVG_IRQ
++#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
+static inline unsigned long cpu_util_irq(struct rq *rq)
+{
+ unsigned long ret = READ_ONCE(rq->irq_load_avg);
@@ -15861,7 +15999,7 @@ index 0796f938c4f0..adae86c2c889 100644
task_cputime(p, &cputime.utime, &cputime.stime);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
-index 16f84142f2f4..cf9343a7620d 100644
+index f5516bae0c1b..c14cd1bcdbd0 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -224,6 +224,8 @@ static void cpuidle_idle_call(void)
@@ -15895,7 +16033,7 @@ index 16f84142f2f4..cf9343a7620d 100644
__current_clr_polling();
/*
-@@ -368,6 +374,7 @@ void cpu_startup_entry(enum cpuhp_state state)
+@@ -353,6 +359,7 @@ void cpu_startup_entry(enum cpuhp_state state)
do_idle();
}
@@ -15903,13 +16041,13 @@ index 16f84142f2f4..cf9343a7620d 100644
/*
* idle-task scheduling class.
*/
-@@ -480,3 +487,4 @@ const struct sched_class idle_sched_class = {
+@@ -465,3 +472,4 @@ const struct sched_class idle_sched_class = {
.switched_to = switched_to_idle,
.update_curr = update_curr_idle,
};
+#endif /* CONFIG_SCHED_MUQSS */
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index 9683f458aec7..6a65812cb262 100644
+index 4e524ab589c9..7d1309c5b238 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2,6 +2,19 @@
@@ -15932,7 +16070,7 @@ index 9683f458aec7..6a65812cb262 100644
#include <linux/sched.h>
#include <linux/sched/autogroup.h>
-@@ -2244,3 +2257,30 @@ unsigned long scale_irq_capacity(unsigned long util, unsigned long irq, unsigned
+@@ -2262,3 +2275,30 @@ unsigned long scale_irq_capacity(unsigned long util, unsigned long irq, unsigned
return util;
}
#endif
@@ -15964,7 +16102,7 @@ index 9683f458aec7..6a65812cb262 100644
+#endif
+#endif /* CONFIG_SCHED_MUQSS */
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
-index 505a41c42b96..47a053a38e26 100644
+index 8d7f15ba5916..c76ebb593eea 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -219,7 +219,11 @@ void rq_attach_root(struct rq *rq, struct root_domain *rd)
@@ -16146,10 +16284,10 @@ index 000000000000..bf5c6e97e139
+ l->entries--;
+}
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index cc02050fd0c4..7dac6885128e 100644
+index 5fc724e4e454..a16902f32e6a 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
-@@ -126,9 +126,17 @@ static int __maybe_unused one __read_only = 1;
+@@ -127,9 +127,17 @@ static int __maybe_unused one __read_only = 1;
static int __maybe_unused two __read_only = 2;
static int __maybe_unused four __read_only = 4;
static unsigned long one_ul __read_only = 1;
@@ -16170,7 +16308,7 @@ index cc02050fd0c4..7dac6885128e 100644
static int ten_thousand __read_only = 10000;
#endif
#ifdef CONFIG_PERF_EVENTS
-@@ -295,7 +303,7 @@ static struct ctl_table sysctl_base_table[] = {
+@@ -296,7 +304,7 @@ static struct ctl_table sysctl_base_table[] = {
{ }
};
@@ -16179,7 +16317,7 @@ index cc02050fd0c4..7dac6885128e 100644
static int min_sched_granularity_ns __read_only = 100000; /* 100 usecs */
static int max_sched_granularity_ns __read_only = NSEC_PER_SEC; /* 1 second */
static int min_wakeup_granularity_ns __read_only; /* 0 usecs */
-@@ -312,6 +320,7 @@ static int max_extfrag_threshold = 1000;
+@@ -313,6 +321,7 @@ static int max_extfrag_threshold = 1000;
#endif
static struct ctl_table kern_table[] = {
@@ -16187,7 +16325,7 @@ index cc02050fd0c4..7dac6885128e 100644
{
.procname = "sched_child_runs_first",
.data = &sysctl_sched_child_runs_first,
-@@ -466,6 +475,7 @@ static struct ctl_table kern_table[] = {
+@@ -467,6 +476,7 @@ static struct ctl_table kern_table[] = {
.extra1 = &one,
},
#endif
@@ -16195,7 +16333,7 @@ index cc02050fd0c4..7dac6885128e 100644
#ifdef CONFIG_PROVE_LOCKING
{
.procname = "prove_locking",
-@@ -1031,6 +1041,62 @@ static struct ctl_table kern_table[] = {
+@@ -1032,6 +1042,62 @@ static struct ctl_table kern_table[] = {
.proc_handler = proc_dointvec,
},
#endif
@@ -16275,7 +16413,7 @@ index 8c0e4092f661..faf30b861235 100644
/**
* clockevents_increase_min_delta - raise minimum delta of a clock event device
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
-index e1a549c9e399..f767487c8b44 100644
+index 9cdd74bd2d27..0f7f27adf16b 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -2026,3 +2026,117 @@ int __sched schedule_hrtimeout(ktime_t *expires,
@@ -16397,7 +16535,7 @@ index e1a549c9e399..f767487c8b44 100644
+}
+EXPORT_SYMBOL(schedule_msec_hrtimeout_uninterruptible);
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
-index ce32cf741b25..2c6a78e6930f 100644
+index 8f0644af40be..e3481bf47b94 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -829,7 +829,7 @@ static void check_thread_timers(struct task_struct *tsk,
@@ -16427,7 +16565,7 @@ index ce32cf741b25..2c6a78e6930f 100644
/*
* At the soft limit, send a SIGXCPU every second.
*/
-@@ -1094,7 +1094,7 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
+@@ -1091,7 +1091,7 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
struct task_cputime task_sample;
task_cputime(tsk, &task_sample.utime, &task_sample.stime);
@@ -16567,10 +16705,10 @@ index 11e9daa4a568..4c4e1d5bdf42 100644
struct wakeup_test_data *x = data;
diff --git a/mm/vmscan.c b/mm/vmscan.c
-index c5ef7240cbcb..3f04308b6445 100644
+index 62ac0c488624..f11656681f7b 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
-@@ -159,7 +159,7 @@ struct scan_control {
+@@ -160,7 +160,7 @@ struct scan_control {
/*
* From 0 .. 100. Higher means more swappy.
*/
@@ -16580,7 +16718,7 @@ index c5ef7240cbcb..3f04308b6445 100644
* The total number of pages which are beyond the high watermark within all
* zones.
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
-index 7f6938405fa1..369ad3eca2a3 100644
+index 6ac919847ce6..37bcc0bafe51 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -1900,7 +1900,7 @@ static void pktgen_mark_device(const struct pktgen_net *pn, const char *ifname)
@@ -16725,10 +16863,10 @@ index 643863bb32e0..fc318d71a8a3 100644
}
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
-index 461d951917c0..b5eb57ba4af4 100644
+index a5178845065b..e5ac94b38742 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
-@@ -131,7 +131,7 @@ static void dapm_assert_locked(struct snd_soc_dapm_context *dapm)
+@@ -130,7 +130,7 @@ static void dapm_assert_locked(struct snd_soc_dapm_context *dapm)
static void pop_wait(u32 pop_time)
{
if (pop_time)