Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
423e19eeef |
@@ -207,7 +207,7 @@ _smt_nice="true"
|
|||||||
_random_trust_cpu="true"
|
_random_trust_cpu="true"
|
||||||
|
|
||||||
# Timer frequency - "100" "250" "300" "500" "750" "1000" ("2000" is available for cacule cpusched only) - More options available in kernel config prompt when left empty depending on selected cpusched with the default option pointed with a ">" (2000 for cacule, 100 for muqss and 1000 for other cpu schedulers)
|
# Timer frequency - "100" "250" "300" "500" "750" "1000" ("2000" is available for cacule cpusched only) - More options available in kernel config prompt when left empty depending on selected cpusched with the default option pointed with a ">" (2000 for cacule, 100 for muqss and 1000 for other cpu schedulers)
|
||||||
_timer_freq="1000"
|
_timer_freq="500"
|
||||||
|
|
||||||
# Default CPU governor - "performance", "ondemand", "schedutil" or leave empty for default (schedutil)
|
# Default CPU governor - "performance", "ondemand", "schedutil" or leave empty for default (schedutil)
|
||||||
_default_cpu_gov="ondemand"
|
_default_cpu_gov="ondemand"
|
||||||
@@ -246,18 +246,18 @@ _NR_CPUS_value=""
|
|||||||
|
|
||||||
#### LEGACY OPTIONS ####
|
#### LEGACY OPTIONS ####
|
||||||
|
|
||||||
# Upstreamed version of Fsync from Linux 5.16 for previous kernel versions - https://github.com/andrealmeid/futex_waitv_patches
|
# Set to "true" to enable support for fsync, an experimental replacement for esync found in Valve Proton 4.11+ - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305
|
||||||
# ! Only affect 5.13, 5.14 and 5.15 kernel branches. Safely ignored for 5.16 or newer !
|
# Can be enabled alongside _futex_waitv on 5.13+ to use it as a fallback for older Proton builds
|
||||||
_fsync_backport="true"
|
_fsync="true"
|
||||||
|
|
||||||
# Fsync legacy, known as FUTEX_WAIT_MULTIPLE (opcode 31) - previous version of fsync required for Valve Proton 4.11, 5.0 and 5.13 - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305
|
# Set to "true" to enable backported patches to add support for the futex_waitv() syscall, a new interface for fsync. Upstream as of 5.16 and requires a wine/proton with builtin support for it - https://github.com/ValveSoftware/wine/pull/128
|
||||||
_fsync_legacy="true"
|
# !! Disables futex2 interfaces support !!
|
||||||
|
# https://github.com/andrealmeid/futex_waitv_patches
|
||||||
|
_futex_waitv="true"
|
||||||
|
|
||||||
# Set to "true" to enable support for futex2, a DEPRECATED interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync legacy to use it as a fallback
|
# Set to "true" to enable support for futex2, an experimental interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync to use it as a fallback
|
||||||
# https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev
|
# https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev
|
||||||
# ! Only affect 5.10-5.14 kernel branches. Safely ignored for 5.15 or newer !
|
_futex2="true"
|
||||||
# ! required _fsync_backport="false" !
|
|
||||||
_fsync_futex2="false"
|
|
||||||
|
|
||||||
# Set to "true" to add back missing symbol for AES-NI/AVX support on ZFS - This is a legacy option that can be ignored on 5.10+ kernels - https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch
|
# Set to "true" to add back missing symbol for AES-NI/AVX support on ZFS - This is a legacy option that can be ignored on 5.10+ kernels - https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch
|
||||||
_zfsfix="true"
|
_zfsfix="true"
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 5.15.106 Kernel Configuration
|
# Linux/x86 5.15.61 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (TkG-mostlyportable) 12.1.1 20220515"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=120201
|
CONFIG_GCC_VERSION=120101
|
||||||
CONFIG_CLANG_VERSION=0
|
CONFIG_CLANG_VERSION=0
|
||||||
CONFIG_AS_IS_GNU=y
|
CONFIG_AS_IS_GNU=y
|
||||||
CONFIG_AS_VERSION=24000
|
CONFIG_AS_VERSION=20244315
|
||||||
CONFIG_LD_IS_BFD=y
|
CONFIG_LD_IS_BFD=y
|
||||||
CONFIG_LD_VERSION=24000
|
CONFIG_LD_VERSION=20244315
|
||||||
CONFIG_LLD_VERSION=0
|
CONFIG_LLD_VERSION=0
|
||||||
CONFIG_CC_CAN_LINK=y
|
CONFIG_CC_CAN_LINK=y
|
||||||
CONFIG_CC_CAN_LINK_STATIC=y
|
CONFIG_CC_CAN_LINK_STATIC=y
|
||||||
@@ -18,7 +18,6 @@ CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
|||||||
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
|
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
|
||||||
CONFIG_CC_HAS_ASM_INLINE=y
|
CONFIG_CC_HAS_ASM_INLINE=y
|
||||||
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
|
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
|
||||||
CONFIG_PAHOLE_VERSION=124
|
|
||||||
CONFIG_IRQ_WORK=y
|
CONFIG_IRQ_WORK=y
|
||||||
CONFIG_BUILDTIME_TABLE_SORT=y
|
CONFIG_BUILDTIME_TABLE_SORT=y
|
||||||
CONFIG_THREAD_INFO_IN_TASK=y
|
CONFIG_THREAD_INFO_IN_TASK=y
|
||||||
@@ -438,7 +437,7 @@ CONFIG_I8K=m
|
|||||||
CONFIG_MICROCODE=y
|
CONFIG_MICROCODE=y
|
||||||
CONFIG_MICROCODE_INTEL=y
|
CONFIG_MICROCODE_INTEL=y
|
||||||
CONFIG_MICROCODE_AMD=y
|
CONFIG_MICROCODE_AMD=y
|
||||||
# CONFIG_MICROCODE_LATE_LOADING is not set
|
# CONFIG_MICROCODE_OLD_INTERFACE is not set
|
||||||
CONFIG_X86_MSR=y
|
CONFIG_X86_MSR=y
|
||||||
CONFIG_X86_CPUID=y
|
CONFIG_X86_CPUID=y
|
||||||
CONFIG_X86_5LEVEL=y
|
CONFIG_X86_5LEVEL=y
|
||||||
@@ -1143,7 +1142,6 @@ CONFIG_INET_ESP=m
|
|||||||
CONFIG_INET_ESP_OFFLOAD=m
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_ESPINTCP=y
|
CONFIG_INET_ESPINTCP=y
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_TABLE_PERTURB_ORDER=16
|
|
||||||
CONFIG_INET_XFRM_TUNNEL=m
|
CONFIG_INET_XFRM_TUNNEL=m
|
||||||
CONFIG_INET_TUNNEL=m
|
CONFIG_INET_TUNNEL=m
|
||||||
CONFIG_INET_DIAG=m
|
CONFIG_INET_DIAG=m
|
||||||
@@ -1709,6 +1707,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
|
|||||||
#
|
#
|
||||||
CONFIG_NET_CLS=y
|
CONFIG_NET_CLS=y
|
||||||
CONFIG_NET_CLS_BASIC=m
|
CONFIG_NET_CLS_BASIC=m
|
||||||
|
CONFIG_NET_CLS_TCINDEX=m
|
||||||
CONFIG_NET_CLS_ROUTE4=m
|
CONFIG_NET_CLS_ROUTE4=m
|
||||||
CONFIG_NET_CLS_FW=m
|
CONFIG_NET_CLS_FW=m
|
||||||
CONFIG_NET_CLS_U32=m
|
CONFIG_NET_CLS_U32=m
|
||||||
@@ -9899,7 +9898,6 @@ CONFIG_GCC_PLUGIN_STRUCTLEAK=y
|
|||||||
# Memory initialization
|
# Memory initialization
|
||||||
#
|
#
|
||||||
CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
|
CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
|
||||||
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y
|
|
||||||
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
|
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
|
||||||
# CONFIG_INIT_STACK_NONE is not set
|
# CONFIG_INIT_STACK_NONE is not set
|
||||||
# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
|
# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
|
||||||
@@ -10353,8 +10351,6 @@ CONFIG_SYMBOLIC_ERRNAME=y
|
|||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# end of printk and dmesg options
|
# end of printk and dmesg options
|
||||||
|
|
||||||
CONFIG_AS_HAS_NON_CONST_LEB128=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Compile-time checks and compiler options
|
# Compile-time checks and compiler options
|
||||||
#
|
#
|
||||||
@@ -10364,7 +10360,6 @@ CONFIG_DEBUG_INFO=y
|
|||||||
# CONFIG_DEBUG_INFO_SPLIT is not set
|
# CONFIG_DEBUG_INFO_SPLIT is not set
|
||||||
# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
|
# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
|
||||||
CONFIG_DEBUG_INFO_DWARF4=y
|
CONFIG_DEBUG_INFO_DWARF4=y
|
||||||
# CONFIG_DEBUG_INFO_DWARF5 is not set
|
|
||||||
CONFIG_DEBUG_INFO_BTF=y
|
CONFIG_DEBUG_INFO_BTF=y
|
||||||
CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
||||||
CONFIG_DEBUG_INFO_BTF_MODULES=y
|
CONFIG_DEBUG_INFO_BTF_MODULES=y
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.1.23 Kernel Configuration
|
# Linux/x86 6.1.0-arch1 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.0"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=120201
|
CONFIG_GCC_VERSION=120200
|
||||||
CONFIG_CLANG_VERSION=0
|
CONFIG_CLANG_VERSION=0
|
||||||
CONFIG_AS_IS_GNU=y
|
CONFIG_AS_IS_GNU=y
|
||||||
CONFIG_AS_VERSION=24000
|
CONFIG_AS_VERSION=23900
|
||||||
CONFIG_LD_IS_BFD=y
|
CONFIG_LD_IS_BFD=y
|
||||||
CONFIG_LD_VERSION=24000
|
CONFIG_LD_VERSION=23900
|
||||||
CONFIG_LLD_VERSION=0
|
CONFIG_LLD_VERSION=0
|
||||||
CONFIG_CC_CAN_LINK=y
|
CONFIG_CC_CAN_LINK=y
|
||||||
CONFIG_CC_CAN_LINK_STATIC=y
|
CONFIG_CC_CAN_LINK_STATIC=y
|
||||||
@@ -206,7 +206,6 @@ CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
|
|||||||
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
|
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
|
||||||
CONFIG_CC_HAS_INT128=y
|
CONFIG_CC_HAS_INT128=y
|
||||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
|
||||||
CONFIG_GCC12_NO_ARRAY_BOUNDS=y
|
CONFIG_GCC12_NO_ARRAY_BOUNDS=y
|
||||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||||
CONFIG_ARCH_SUPPORTS_INT128=y
|
CONFIG_ARCH_SUPPORTS_INT128=y
|
||||||
@@ -1785,6 +1784,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
|
|||||||
#
|
#
|
||||||
CONFIG_NET_CLS=y
|
CONFIG_NET_CLS=y
|
||||||
CONFIG_NET_CLS_BASIC=m
|
CONFIG_NET_CLS_BASIC=m
|
||||||
|
CONFIG_NET_CLS_TCINDEX=m
|
||||||
CONFIG_NET_CLS_ROUTE4=m
|
CONFIG_NET_CLS_ROUTE4=m
|
||||||
CONFIG_NET_CLS_FW=m
|
CONFIG_NET_CLS_FW=m
|
||||||
CONFIG_NET_CLS_U32=m
|
CONFIG_NET_CLS_U32=m
|
||||||
@@ -4456,6 +4456,7 @@ CONFIG_SERIAL_ARC_NR_PORTS=1
|
|||||||
CONFIG_SERIAL_RP2=m
|
CONFIG_SERIAL_RP2=m
|
||||||
CONFIG_SERIAL_RP2_NR_UARTS=32
|
CONFIG_SERIAL_RP2_NR_UARTS=32
|
||||||
CONFIG_SERIAL_FSL_LPUART=m
|
CONFIG_SERIAL_FSL_LPUART=m
|
||||||
|
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
|
||||||
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
||||||
CONFIG_SERIAL_MEN_Z135=m
|
CONFIG_SERIAL_MEN_Z135=m
|
||||||
CONFIG_SERIAL_SPRD=m
|
CONFIG_SERIAL_SPRD=m
|
||||||
@@ -6526,6 +6527,7 @@ CONFIG_DRM=y
|
|||||||
CONFIG_DRM_MIPI_DBI=m
|
CONFIG_DRM_MIPI_DBI=m
|
||||||
CONFIG_DRM_MIPI_DSI=y
|
CONFIG_DRM_MIPI_DSI=y
|
||||||
# CONFIG_DRM_DEBUG_MM is not set
|
# CONFIG_DRM_DEBUG_MM is not set
|
||||||
|
CONFIG_DRM_USE_DYNAMIC_DEBUG=y
|
||||||
CONFIG_DRM_KMS_HELPER=y
|
CONFIG_DRM_KMS_HELPER=y
|
||||||
CONFIG_DRM_FBDEV_EMULATION=y
|
CONFIG_DRM_FBDEV_EMULATION=y
|
||||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||||
@@ -6596,6 +6598,7 @@ CONFIG_DRM_I915_FORCE_PROBE="*"
|
|||||||
CONFIG_DRM_I915_CAPTURE_ERROR=y
|
CONFIG_DRM_I915_CAPTURE_ERROR=y
|
||||||
CONFIG_DRM_I915_COMPRESS_ERROR=y
|
CONFIG_DRM_I915_COMPRESS_ERROR=y
|
||||||
CONFIG_DRM_I915_USERPTR=y
|
CONFIG_DRM_I915_USERPTR=y
|
||||||
|
CONFIG_DRM_I915_GVT=y
|
||||||
CONFIG_DRM_I915_GVT_KVMGT=m
|
CONFIG_DRM_I915_GVT_KVMGT=m
|
||||||
CONFIG_DRM_I915_PXP=y
|
CONFIG_DRM_I915_PXP=y
|
||||||
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
|
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
|
||||||
@@ -6606,7 +6609,6 @@ CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
|
|||||||
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
|
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
|
||||||
CONFIG_DRM_I915_STOP_TIMEOUT=100
|
CONFIG_DRM_I915_STOP_TIMEOUT=100
|
||||||
CONFIG_DRM_I915_TIMESLICE_DURATION=1
|
CONFIG_DRM_I915_TIMESLICE_DURATION=1
|
||||||
CONFIG_DRM_I915_GVT=y
|
|
||||||
CONFIG_DRM_VGEM=m
|
CONFIG_DRM_VGEM=m
|
||||||
CONFIG_DRM_VKMS=m
|
CONFIG_DRM_VKMS=m
|
||||||
CONFIG_DRM_VMWGFX=m
|
CONFIG_DRM_VMWGFX=m
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.2.10 Kernel Configuration
|
# Linux/x86 6.2.5-arch1 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
@@ -4494,6 +4494,7 @@ CONFIG_SERIAL_ARC_NR_PORTS=1
|
|||||||
CONFIG_SERIAL_RP2=m
|
CONFIG_SERIAL_RP2=m
|
||||||
CONFIG_SERIAL_RP2_NR_UARTS=32
|
CONFIG_SERIAL_RP2_NR_UARTS=32
|
||||||
CONFIG_SERIAL_FSL_LPUART=m
|
CONFIG_SERIAL_FSL_LPUART=m
|
||||||
|
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
|
||||||
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
||||||
CONFIG_SERIAL_MEN_Z135=m
|
CONFIG_SERIAL_MEN_Z135=m
|
||||||
CONFIG_SERIAL_SPRD=m
|
CONFIG_SERIAL_SPRD=m
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.3.0-arch1 Kernel Configuration
|
# Linux/x86 6.3.0-rc1 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
@@ -206,6 +206,7 @@ CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
|
|||||||
CONFIG_CC_HAS_INT128=y
|
CONFIG_CC_HAS_INT128=y
|
||||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||||
|
CONFIG_GCC12_NO_ARRAY_BOUNDS=y
|
||||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||||
CONFIG_ARCH_SUPPORTS_INT128=y
|
CONFIG_ARCH_SUPPORTS_INT128=y
|
||||||
CONFIG_NUMA_BALANCING=y
|
CONFIG_NUMA_BALANCING=y
|
||||||
@@ -480,7 +481,7 @@ CONFIG_X86_PAT=y
|
|||||||
CONFIG_ARCH_USES_PG_UNCACHED=y
|
CONFIG_ARCH_USES_PG_UNCACHED=y
|
||||||
CONFIG_X86_UMIP=y
|
CONFIG_X86_UMIP=y
|
||||||
CONFIG_CC_HAS_IBT=y
|
CONFIG_CC_HAS_IBT=y
|
||||||
CONFIG_X86_KERNEL_IBT=y
|
# CONFIG_X86_KERNEL_IBT is not set
|
||||||
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
|
CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
|
||||||
# CONFIG_X86_INTEL_TSX_MODE_OFF is not set
|
# CONFIG_X86_INTEL_TSX_MODE_OFF is not set
|
||||||
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
|
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
|
||||||
@@ -992,6 +993,7 @@ CONFIG_EFI_PARTITION=y
|
|||||||
# CONFIG_CMDLINE_PARTITION is not set
|
# CONFIG_CMDLINE_PARTITION is not set
|
||||||
# end of Partition Types
|
# end of Partition Types
|
||||||
|
|
||||||
|
CONFIG_BLOCK_COMPAT=y
|
||||||
CONFIG_BLK_MQ_PCI=y
|
CONFIG_BLK_MQ_PCI=y
|
||||||
CONFIG_BLK_MQ_VIRTIO=y
|
CONFIG_BLK_MQ_VIRTIO=y
|
||||||
CONFIG_BLK_MQ_RDMA=y
|
CONFIG_BLK_MQ_RDMA=y
|
||||||
@@ -1048,18 +1050,18 @@ CONFIG_ZSWAP_DEFAULT_ON=y
|
|||||||
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
|
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
|
||||||
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set
|
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set
|
||||||
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
|
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
|
||||||
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set
|
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4=y
|
||||||
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
|
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
|
||||||
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
|
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set
|
||||||
CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd"
|
CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lz4"
|
||||||
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD is not set
|
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD is not set
|
||||||
# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
|
CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD=y
|
||||||
CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC=y
|
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set
|
||||||
CONFIG_ZSWAP_ZPOOL_DEFAULT="zsmalloc"
|
CONFIG_ZSWAP_ZPOOL_DEFAULT="z3fold"
|
||||||
CONFIG_ZBUD=y
|
CONFIG_ZBUD=y
|
||||||
CONFIG_Z3FOLD=y
|
CONFIG_Z3FOLD=y
|
||||||
CONFIG_ZSMALLOC=y
|
CONFIG_ZSMALLOC=y
|
||||||
CONFIG_ZSMALLOC_STAT=y
|
# CONFIG_ZSMALLOC_STAT is not set
|
||||||
CONFIG_ZSMALLOC_CHAIN_SIZE=8
|
CONFIG_ZSMALLOC_CHAIN_SIZE=8
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -2274,7 +2276,6 @@ CONFIG_HMEM_REPORTING=y
|
|||||||
CONFIG_SYS_HYPERVISOR=y
|
CONFIG_SYS_HYPERVISOR=y
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||||
CONFIG_SOC_BUS=y
|
|
||||||
CONFIG_REGMAP=y
|
CONFIG_REGMAP=y
|
||||||
CONFIG_REGMAP_I2C=y
|
CONFIG_REGMAP_I2C=y
|
||||||
CONFIG_REGMAP_SLIMBUS=m
|
CONFIG_REGMAP_SLIMBUS=m
|
||||||
@@ -2285,7 +2286,6 @@ CONFIG_REGMAP_IRQ=y
|
|||||||
CONFIG_REGMAP_SOUNDWIRE=m
|
CONFIG_REGMAP_SOUNDWIRE=m
|
||||||
CONFIG_REGMAP_SOUNDWIRE_MBQ=m
|
CONFIG_REGMAP_SOUNDWIRE_MBQ=m
|
||||||
CONFIG_REGMAP_SCCB=m
|
CONFIG_REGMAP_SCCB=m
|
||||||
CONFIG_REGMAP_SPI_AVMM=m
|
|
||||||
CONFIG_DMA_SHARED_BUFFER=y
|
CONFIG_DMA_SHARED_BUFFER=y
|
||||||
# CONFIG_DMA_FENCE_TRACE is not set
|
# CONFIG_DMA_FENCE_TRACE is not set
|
||||||
# end of Generic Driver Options
|
# end of Generic Driver Options
|
||||||
@@ -2527,13 +2527,13 @@ CONFIG_BLK_DEV_FD=m
|
|||||||
CONFIG_CDROM=m
|
CONFIG_CDROM=m
|
||||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
|
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
|
||||||
CONFIG_ZRAM=m
|
CONFIG_ZRAM=m
|
||||||
# CONFIG_ZRAM_DEF_COMP_LZORLE is not set
|
CONFIG_ZRAM_DEF_COMP_LZORLE=y
|
||||||
CONFIG_ZRAM_DEF_COMP_ZSTD=y
|
# CONFIG_ZRAM_DEF_COMP_ZSTD is not set
|
||||||
# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
|
# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
|
||||||
# CONFIG_ZRAM_DEF_COMP_LZO is not set
|
# CONFIG_ZRAM_DEF_COMP_LZO is not set
|
||||||
# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set
|
# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set
|
||||||
# CONFIG_ZRAM_DEF_COMP_842 is not set
|
# CONFIG_ZRAM_DEF_COMP_842 is not set
|
||||||
CONFIG_ZRAM_DEF_COMP="zstd"
|
CONFIG_ZRAM_DEF_COMP="lzo-rle"
|
||||||
CONFIG_ZRAM_WRITEBACK=y
|
CONFIG_ZRAM_WRITEBACK=y
|
||||||
# CONFIG_ZRAM_MEMORY_TRACKING is not set
|
# CONFIG_ZRAM_MEMORY_TRACKING is not set
|
||||||
CONFIG_ZRAM_MULTI_COMP=y
|
CONFIG_ZRAM_MULTI_COMP=y
|
||||||
@@ -2905,26 +2905,7 @@ CONFIG_PATA_NS87410=m
|
|||||||
CONFIG_PATA_OPTI=m
|
CONFIG_PATA_OPTI=m
|
||||||
CONFIG_PATA_PCMCIA=m
|
CONFIG_PATA_PCMCIA=m
|
||||||
CONFIG_PATA_RZ1000=m
|
CONFIG_PATA_RZ1000=m
|
||||||
CONFIG_PATA_PARPORT=m
|
# CONFIG_PATA_PARPORT is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Parallel IDE protocol modules
|
|
||||||
#
|
|
||||||
CONFIG_PATA_PARPORT_ATEN=m
|
|
||||||
CONFIG_PATA_PARPORT_BPCK=m
|
|
||||||
CONFIG_PATA_PARPORT_COMM=m
|
|
||||||
CONFIG_PATA_PARPORT_DSTR=m
|
|
||||||
CONFIG_PATA_PARPORT_FIT2=m
|
|
||||||
CONFIG_PATA_PARPORT_FIT3=m
|
|
||||||
CONFIG_PATA_PARPORT_EPAT=m
|
|
||||||
CONFIG_PATA_PARPORT_EPATC8=y
|
|
||||||
CONFIG_PATA_PARPORT_EPIA=m
|
|
||||||
CONFIG_PATA_PARPORT_FRIQ=m
|
|
||||||
CONFIG_PATA_PARPORT_FRPW=m
|
|
||||||
CONFIG_PATA_PARPORT_KBIC=m
|
|
||||||
CONFIG_PATA_PARPORT_KTTI=m
|
|
||||||
CONFIG_PATA_PARPORT_ON20=m
|
|
||||||
CONFIG_PATA_PARPORT_ON26=m
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generic fallback / legacy drivers
|
# Generic fallback / legacy drivers
|
||||||
@@ -3102,12 +3083,12 @@ CONFIG_NET_DSA_MV88E6060=m
|
|||||||
CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m
|
CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m
|
||||||
CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m
|
CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m
|
||||||
CONFIG_NET_DSA_MICROCHIP_KSZ_SPI=m
|
CONFIG_NET_DSA_MICROCHIP_KSZ_SPI=m
|
||||||
CONFIG_NET_DSA_MICROCHIP_KSZ_PTP=y
|
# CONFIG_NET_DSA_MICROCHIP_KSZ_PTP is not set
|
||||||
CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m
|
CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m
|
||||||
CONFIG_NET_DSA_MV88E6XXX=m
|
CONFIG_NET_DSA_MV88E6XXX=m
|
||||||
CONFIG_NET_DSA_MV88E6XXX_PTP=y
|
CONFIG_NET_DSA_MV88E6XXX_PTP=y
|
||||||
CONFIG_NET_DSA_MSCC_FELIX_DSA_LIB=m
|
CONFIG_NET_DSA_MSCC_FELIX_DSA_LIB=m
|
||||||
CONFIG_NET_DSA_MSCC_OCELOT_EXT=m
|
# CONFIG_NET_DSA_MSCC_OCELOT_EXT is not set
|
||||||
CONFIG_NET_DSA_MSCC_SEVILLE=m
|
CONFIG_NET_DSA_MSCC_SEVILLE=m
|
||||||
CONFIG_NET_DSA_AR9331=m
|
CONFIG_NET_DSA_AR9331=m
|
||||||
CONFIG_NET_DSA_QCA8K=m
|
CONFIG_NET_DSA_QCA8K=m
|
||||||
@@ -3352,7 +3333,6 @@ CONFIG_MICROSOFT_MANA=m
|
|||||||
CONFIG_NET_VENDOR_MYRI=y
|
CONFIG_NET_VENDOR_MYRI=y
|
||||||
CONFIG_MYRI10GE=m
|
CONFIG_MYRI10GE=m
|
||||||
CONFIG_MYRI10GE_DCA=y
|
CONFIG_MYRI10GE_DCA=y
|
||||||
CONFIG_FEALNX=m
|
|
||||||
CONFIG_NET_VENDOR_NI=y
|
CONFIG_NET_VENDOR_NI=y
|
||||||
CONFIG_NI_XGE_MANAGEMENT_ENET=m
|
CONFIG_NI_XGE_MANAGEMENT_ENET=m
|
||||||
CONFIG_NET_VENDOR_NATSEMI=y
|
CONFIG_NET_VENDOR_NATSEMI=y
|
||||||
@@ -3527,7 +3507,7 @@ CONFIG_MOTORCOMM_PHY=m
|
|||||||
CONFIG_NATIONAL_PHY=m
|
CONFIG_NATIONAL_PHY=m
|
||||||
CONFIG_NXP_C45_TJA11XX_PHY=m
|
CONFIG_NXP_C45_TJA11XX_PHY=m
|
||||||
CONFIG_NXP_TJA11XX_PHY=m
|
CONFIG_NXP_TJA11XX_PHY=m
|
||||||
CONFIG_NCN26000_PHY=m
|
# CONFIG_NCN26000_PHY is not set
|
||||||
CONFIG_AT803X_PHY=m
|
CONFIG_AT803X_PHY=m
|
||||||
CONFIG_QSEMI_PHY=m
|
CONFIG_QSEMI_PHY=m
|
||||||
CONFIG_REALTEK_PHY=m
|
CONFIG_REALTEK_PHY=m
|
||||||
@@ -3769,9 +3749,7 @@ CONFIG_ATH11K_DEBUG=y
|
|||||||
CONFIG_ATH11K_DEBUGFS=y
|
CONFIG_ATH11K_DEBUGFS=y
|
||||||
# CONFIG_ATH11K_TRACING is not set
|
# CONFIG_ATH11K_TRACING is not set
|
||||||
CONFIG_ATH11K_SPECTRAL=y
|
CONFIG_ATH11K_SPECTRAL=y
|
||||||
CONFIG_ATH12K=m
|
# CONFIG_ATH12K is not set
|
||||||
CONFIG_ATH12K_DEBUG=y
|
|
||||||
CONFIG_ATH12K_TRACING=y
|
|
||||||
CONFIG_WLAN_VENDOR_ATMEL=y
|
CONFIG_WLAN_VENDOR_ATMEL=y
|
||||||
CONFIG_ATMEL=m
|
CONFIG_ATMEL=m
|
||||||
CONFIG_PCI_ATMEL=m
|
CONFIG_PCI_ATMEL=m
|
||||||
@@ -4484,12 +4462,12 @@ CONFIG_SERIAL_8250_NR_UARTS=32
|
|||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=32
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=32
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_PCI1XXXX=m
|
CONFIG_SERIAL_8250_PCI1XXXX=y
|
||||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
|
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
|
||||||
CONFIG_SERIAL_8250_RSA=y
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
CONFIG_SERIAL_8250_DWLIB=y
|
CONFIG_SERIAL_8250_DWLIB=y
|
||||||
CONFIG_SERIAL_8250_DFL=m
|
# CONFIG_SERIAL_8250_DFL is not set
|
||||||
CONFIG_SERIAL_8250_DW=m
|
CONFIG_SERIAL_8250_DW=m
|
||||||
CONFIG_SERIAL_8250_RT288X=y
|
CONFIG_SERIAL_8250_RT288X=y
|
||||||
CONFIG_SERIAL_8250_LPSS=y
|
CONFIG_SERIAL_8250_LPSS=y
|
||||||
@@ -4521,6 +4499,7 @@ CONFIG_SERIAL_ARC_NR_PORTS=1
|
|||||||
CONFIG_SERIAL_RP2=m
|
CONFIG_SERIAL_RP2=m
|
||||||
CONFIG_SERIAL_RP2_NR_UARTS=32
|
CONFIG_SERIAL_RP2_NR_UARTS=32
|
||||||
CONFIG_SERIAL_FSL_LPUART=m
|
CONFIG_SERIAL_FSL_LPUART=m
|
||||||
|
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
|
||||||
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
CONFIG_SERIAL_FSL_LINFLEXUART=m
|
||||||
CONFIG_SERIAL_MEN_Z135=m
|
CONFIG_SERIAL_MEN_Z135=m
|
||||||
CONFIG_SERIAL_SPRD=m
|
CONFIG_SERIAL_SPRD=m
|
||||||
@@ -5088,8 +5067,8 @@ CONFIG_BATTERY_GAUGE_LTC2941=m
|
|||||||
CONFIG_BATTERY_GOLDFISH=m
|
CONFIG_BATTERY_GOLDFISH=m
|
||||||
CONFIG_BATTERY_RT5033=m
|
CONFIG_BATTERY_RT5033=m
|
||||||
CONFIG_CHARGER_RT9455=m
|
CONFIG_CHARGER_RT9455=m
|
||||||
CONFIG_CHARGER_RT9467=m
|
# CONFIG_CHARGER_RT9467 is not set
|
||||||
CONFIG_CHARGER_RT9471=m
|
# CONFIG_CHARGER_RT9471 is not set
|
||||||
CONFIG_CHARGER_CROS_USBPD=m
|
CONFIG_CHARGER_CROS_USBPD=m
|
||||||
CONFIG_CHARGER_CROS_PCHG=m
|
CONFIG_CHARGER_CROS_PCHG=m
|
||||||
CONFIG_CHARGER_BD99954=m
|
CONFIG_CHARGER_BD99954=m
|
||||||
@@ -5191,7 +5170,7 @@ CONFIG_SENSORS_MAX6639=m
|
|||||||
CONFIG_SENSORS_MAX6650=m
|
CONFIG_SENSORS_MAX6650=m
|
||||||
CONFIG_SENSORS_MAX6697=m
|
CONFIG_SENSORS_MAX6697=m
|
||||||
CONFIG_SENSORS_MAX31790=m
|
CONFIG_SENSORS_MAX31790=m
|
||||||
CONFIG_SENSORS_MC34VR500=m
|
# CONFIG_SENSORS_MC34VR500 is not set
|
||||||
CONFIG_SENSORS_MCP3021=m
|
CONFIG_SENSORS_MCP3021=m
|
||||||
CONFIG_SENSORS_MLXREG_FAN=m
|
CONFIG_SENSORS_MLXREG_FAN=m
|
||||||
CONFIG_SENSORS_TC654=m
|
CONFIG_SENSORS_TC654=m
|
||||||
@@ -5265,8 +5244,7 @@ CONFIG_SENSORS_MAX8688=m
|
|||||||
CONFIG_SENSORS_MP2888=m
|
CONFIG_SENSORS_MP2888=m
|
||||||
CONFIG_SENSORS_MP2975=m
|
CONFIG_SENSORS_MP2975=m
|
||||||
CONFIG_SENSORS_MP5023=m
|
CONFIG_SENSORS_MP5023=m
|
||||||
CONFIG_SENSORS_MPQ7932_REGULATOR=y
|
# CONFIG_SENSORS_MPQ7932 is not set
|
||||||
CONFIG_SENSORS_MPQ7932=m
|
|
||||||
CONFIG_SENSORS_PIM4328=m
|
CONFIG_SENSORS_PIM4328=m
|
||||||
CONFIG_SENSORS_PLI1209BC=m
|
CONFIG_SENSORS_PLI1209BC=m
|
||||||
CONFIG_SENSORS_PLI1209BC_REGULATOR=y
|
CONFIG_SENSORS_PLI1209BC_REGULATOR=y
|
||||||
@@ -5274,8 +5252,7 @@ CONFIG_SENSORS_PM6764TR=m
|
|||||||
CONFIG_SENSORS_PXE1610=m
|
CONFIG_SENSORS_PXE1610=m
|
||||||
CONFIG_SENSORS_Q54SJ108A2=m
|
CONFIG_SENSORS_Q54SJ108A2=m
|
||||||
CONFIG_SENSORS_STPDDC60=m
|
CONFIG_SENSORS_STPDDC60=m
|
||||||
CONFIG_SENSORS_TDA38640=m
|
# CONFIG_SENSORS_TDA38640 is not set
|
||||||
CONFIG_SENSORS_TDA38640_REGULATOR=y
|
|
||||||
CONFIG_SENSORS_TPS40422=m
|
CONFIG_SENSORS_TPS40422=m
|
||||||
CONFIG_SENSORS_TPS53679=m
|
CONFIG_SENSORS_TPS53679=m
|
||||||
CONFIG_SENSORS_TPS546D24=m
|
CONFIG_SENSORS_TPS546D24=m
|
||||||
@@ -5342,7 +5319,6 @@ CONFIG_SENSORS_W83627EHF=m
|
|||||||
CONFIG_SENSORS_WM831X=m
|
CONFIG_SENSORS_WM831X=m
|
||||||
CONFIG_SENSORS_WM8350=m
|
CONFIG_SENSORS_WM8350=m
|
||||||
CONFIG_SENSORS_XGENE=m
|
CONFIG_SENSORS_XGENE=m
|
||||||
CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ACPI drivers
|
# ACPI drivers
|
||||||
@@ -5641,9 +5617,8 @@ CONFIG_MFD_WCD934X=m
|
|||||||
CONFIG_MFD_ATC260X=m
|
CONFIG_MFD_ATC260X=m
|
||||||
CONFIG_MFD_ATC260X_I2C=m
|
CONFIG_MFD_ATC260X_I2C=m
|
||||||
CONFIG_RAVE_SP_CORE=m
|
CONFIG_RAVE_SP_CORE=m
|
||||||
CONFIG_MFD_INTEL_M10_BMC_CORE=m
|
# CONFIG_MFD_INTEL_M10_BMC_SPI is not set
|
||||||
CONFIG_MFD_INTEL_M10_BMC_SPI=m
|
# CONFIG_MFD_INTEL_M10_BMC_PMCI is not set
|
||||||
CONFIG_MFD_INTEL_M10_BMC_PMCI=m
|
|
||||||
# end of Multifunction device drivers
|
# end of Multifunction device drivers
|
||||||
|
|
||||||
CONFIG_REGULATOR=y
|
CONFIG_REGULATOR=y
|
||||||
@@ -5693,7 +5668,7 @@ CONFIG_REGULATOR_MAX8952=m
|
|||||||
CONFIG_REGULATOR_MAX8997=m
|
CONFIG_REGULATOR_MAX8997=m
|
||||||
CONFIG_REGULATOR_MAX8998=m
|
CONFIG_REGULATOR_MAX8998=m
|
||||||
CONFIG_REGULATOR_MAX20086=m
|
CONFIG_REGULATOR_MAX20086=m
|
||||||
CONFIG_REGULATOR_MAX20411=m
|
# CONFIG_REGULATOR_MAX20411 is not set
|
||||||
CONFIG_REGULATOR_MAX77693=m
|
CONFIG_REGULATOR_MAX77693=m
|
||||||
CONFIG_REGULATOR_MAX77826=m
|
CONFIG_REGULATOR_MAX77826=m
|
||||||
CONFIG_REGULATOR_MC13XXX_CORE=m
|
CONFIG_REGULATOR_MC13XXX_CORE=m
|
||||||
@@ -6040,9 +6015,9 @@ CONFIG_VIDEO_DT3155=m
|
|||||||
CONFIG_VIDEO_IVTV=m
|
CONFIG_VIDEO_IVTV=m
|
||||||
CONFIG_VIDEO_IVTV_ALSA=m
|
CONFIG_VIDEO_IVTV_ALSA=m
|
||||||
# CONFIG_VIDEO_FB_IVTV is not set
|
# CONFIG_VIDEO_FB_IVTV is not set
|
||||||
CONFIG_VIDEO_HEXIUM_GEMINI=m
|
# CONFIG_VIDEO_HEXIUM_GEMINI is not set
|
||||||
CONFIG_VIDEO_HEXIUM_ORION=m
|
# CONFIG_VIDEO_HEXIUM_ORION is not set
|
||||||
CONFIG_VIDEO_MXB=m
|
# CONFIG_VIDEO_MXB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Media capture/analog/hybrid TV support
|
# Media capture/analog/hybrid TV support
|
||||||
@@ -6086,10 +6061,7 @@ CONFIG_DVB_PLUTO2=m
|
|||||||
CONFIG_DVB_PT1=m
|
CONFIG_DVB_PT1=m
|
||||||
CONFIG_DVB_PT3=m
|
CONFIG_DVB_PT3=m
|
||||||
CONFIG_DVB_SMIPCIE=m
|
CONFIG_DVB_SMIPCIE=m
|
||||||
CONFIG_DVB_BUDGET_CORE=m
|
# CONFIG_DVB_BUDGET_CORE is not set
|
||||||
CONFIG_DVB_BUDGET=m
|
|
||||||
CONFIG_DVB_BUDGET_CI=m
|
|
||||||
CONFIG_DVB_BUDGET_AV=m
|
|
||||||
CONFIG_VIDEO_IPU3_CIO2=m
|
CONFIG_VIDEO_IPU3_CIO2=m
|
||||||
CONFIG_CIO2_BRIDGE=y
|
CONFIG_CIO2_BRIDGE=y
|
||||||
CONFIG_RADIO_ADAPTERS=m
|
CONFIG_RADIO_ADAPTERS=m
|
||||||
@@ -6248,8 +6220,6 @@ CONFIG_UVC_COMMON=m
|
|||||||
CONFIG_VIDEO_CX2341X=m
|
CONFIG_VIDEO_CX2341X=m
|
||||||
CONFIG_VIDEO_TVEEPROM=m
|
CONFIG_VIDEO_TVEEPROM=m
|
||||||
CONFIG_DVB_B2C2_FLEXCOP=m
|
CONFIG_DVB_B2C2_FLEXCOP=m
|
||||||
CONFIG_VIDEO_SAA7146=m
|
|
||||||
CONFIG_VIDEO_SAA7146_VV=m
|
|
||||||
CONFIG_SMS_SIANO_MDTV=m
|
CONFIG_SMS_SIANO_MDTV=m
|
||||||
CONFIG_SMS_SIANO_RC=y
|
CONFIG_SMS_SIANO_RC=y
|
||||||
# CONFIG_SMS_SIANO_DEBUGFS is not set
|
# CONFIG_SMS_SIANO_DEBUGFS is not set
|
||||||
@@ -6290,7 +6260,7 @@ CONFIG_VIDEO_IMX219=m
|
|||||||
CONFIG_VIDEO_IMX258=m
|
CONFIG_VIDEO_IMX258=m
|
||||||
CONFIG_VIDEO_IMX274=m
|
CONFIG_VIDEO_IMX274=m
|
||||||
CONFIG_VIDEO_IMX290=m
|
CONFIG_VIDEO_IMX290=m
|
||||||
CONFIG_VIDEO_IMX296=m
|
# CONFIG_VIDEO_IMX296 is not set
|
||||||
CONFIG_VIDEO_IMX319=m
|
CONFIG_VIDEO_IMX319=m
|
||||||
CONFIG_VIDEO_IMX355=m
|
CONFIG_VIDEO_IMX355=m
|
||||||
CONFIG_VIDEO_MAX9271_LIB=m
|
CONFIG_VIDEO_MAX9271_LIB=m
|
||||||
@@ -6329,7 +6299,7 @@ CONFIG_VIDEO_OV7670=m
|
|||||||
CONFIG_VIDEO_OV772X=m
|
CONFIG_VIDEO_OV772X=m
|
||||||
CONFIG_VIDEO_OV7740=m
|
CONFIG_VIDEO_OV7740=m
|
||||||
CONFIG_VIDEO_OV8856=m
|
CONFIG_VIDEO_OV8856=m
|
||||||
CONFIG_VIDEO_OV8858=m
|
# CONFIG_VIDEO_OV8858 is not set
|
||||||
CONFIG_VIDEO_OV8865=m
|
CONFIG_VIDEO_OV8865=m
|
||||||
CONFIG_VIDEO_OV9640=m
|
CONFIG_VIDEO_OV9640=m
|
||||||
CONFIG_VIDEO_OV9650=m
|
CONFIG_VIDEO_OV9650=m
|
||||||
@@ -6375,9 +6345,6 @@ CONFIG_VIDEO_CS53L32A=m
|
|||||||
CONFIG_VIDEO_MSP3400=m
|
CONFIG_VIDEO_MSP3400=m
|
||||||
CONFIG_VIDEO_SONY_BTF_MPX=m
|
CONFIG_VIDEO_SONY_BTF_MPX=m
|
||||||
CONFIG_VIDEO_TDA7432=m
|
CONFIG_VIDEO_TDA7432=m
|
||||||
CONFIG_VIDEO_TDA9840=m
|
|
||||||
CONFIG_VIDEO_TEA6415C=m
|
|
||||||
CONFIG_VIDEO_TEA6420=m
|
|
||||||
CONFIG_VIDEO_TVAUDIO=m
|
CONFIG_VIDEO_TVAUDIO=m
|
||||||
CONFIG_VIDEO_UDA1342=m
|
CONFIG_VIDEO_UDA1342=m
|
||||||
CONFIG_VIDEO_VP27SMPX=m
|
CONFIG_VIDEO_VP27SMPX=m
|
||||||
@@ -6500,13 +6467,10 @@ CONFIG_DVB_STV6110=m
|
|||||||
CONFIG_DVB_TDA10071=m
|
CONFIG_DVB_TDA10071=m
|
||||||
CONFIG_DVB_TDA10086=m
|
CONFIG_DVB_TDA10086=m
|
||||||
CONFIG_DVB_TDA8083=m
|
CONFIG_DVB_TDA8083=m
|
||||||
CONFIG_DVB_TDA8261=m
|
|
||||||
CONFIG_DVB_TDA826X=m
|
CONFIG_DVB_TDA826X=m
|
||||||
CONFIG_DVB_TS2020=m
|
CONFIG_DVB_TS2020=m
|
||||||
CONFIG_DVB_TUA6100=m
|
|
||||||
CONFIG_DVB_TUNER_CX24113=m
|
CONFIG_DVB_TUNER_CX24113=m
|
||||||
CONFIG_DVB_TUNER_ITD1000=m
|
CONFIG_DVB_TUNER_ITD1000=m
|
||||||
CONFIG_DVB_VES1X93=m
|
|
||||||
CONFIG_DVB_ZL10036=m
|
CONFIG_DVB_ZL10036=m
|
||||||
CONFIG_DVB_ZL10039=m
|
CONFIG_DVB_ZL10039=m
|
||||||
|
|
||||||
@@ -6526,7 +6490,6 @@ CONFIG_DVB_DIB7000P=m
|
|||||||
CONFIG_DVB_DRXD=m
|
CONFIG_DVB_DRXD=m
|
||||||
CONFIG_DVB_EC100=m
|
CONFIG_DVB_EC100=m
|
||||||
CONFIG_DVB_GP8PSK_FE=m
|
CONFIG_DVB_GP8PSK_FE=m
|
||||||
CONFIG_DVB_L64781=m
|
|
||||||
CONFIG_DVB_MT352=m
|
CONFIG_DVB_MT352=m
|
||||||
CONFIG_DVB_NXT6000=m
|
CONFIG_DVB_NXT6000=m
|
||||||
CONFIG_DVB_RTL2830=m
|
CONFIG_DVB_RTL2830=m
|
||||||
@@ -6729,8 +6692,8 @@ CONFIG_DRM_PANEL=y
|
|||||||
#
|
#
|
||||||
# Display Panels
|
# Display Panels
|
||||||
#
|
#
|
||||||
CONFIG_DRM_PANEL_AUO_A030JTN01=m
|
# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set
|
||||||
CONFIG_DRM_PANEL_ORISETECH_OTA5601A=m
|
# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set
|
||||||
CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
|
CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
|
||||||
CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m
|
CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m
|
||||||
# end of Display Panels
|
# end of Display Panels
|
||||||
@@ -6913,7 +6876,7 @@ CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
|||||||
# end of Graphics support
|
# end of Graphics support
|
||||||
|
|
||||||
CONFIG_DRM_ACCEL=y
|
CONFIG_DRM_ACCEL=y
|
||||||
CONFIG_DRM_ACCEL_HABANALABS=m
|
# CONFIG_DRM_ACCEL_HABANALABS is not set
|
||||||
CONFIG_DRM_ACCEL_IVPU=m
|
CONFIG_DRM_ACCEL_IVPU=m
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
CONFIG_SOUND_OSS_CORE=y
|
CONFIG_SOUND_OSS_CORE=y
|
||||||
@@ -7434,7 +7397,7 @@ CONFIG_SND_SOC_HDAC_HDMI=m
|
|||||||
CONFIG_SND_SOC_HDAC_HDA=m
|
CONFIG_SND_SOC_HDAC_HDA=m
|
||||||
CONFIG_SND_SOC_HDA=m
|
CONFIG_SND_SOC_HDA=m
|
||||||
CONFIG_SND_SOC_ICS43432=m
|
CONFIG_SND_SOC_ICS43432=m
|
||||||
CONFIG_SND_SOC_IDT821034=m
|
# CONFIG_SND_SOC_IDT821034 is not set
|
||||||
CONFIG_SND_SOC_INNO_RK3036=m
|
CONFIG_SND_SOC_INNO_RK3036=m
|
||||||
CONFIG_SND_SOC_MAX98088=m
|
CONFIG_SND_SOC_MAX98088=m
|
||||||
CONFIG_SND_SOC_MAX98090=m
|
CONFIG_SND_SOC_MAX98090=m
|
||||||
@@ -7769,7 +7732,7 @@ CONFIG_HID_MCP2221=m
|
|||||||
#
|
#
|
||||||
# HID-BPF support
|
# HID-BPF support
|
||||||
#
|
#
|
||||||
CONFIG_HID_BPF=y
|
# CONFIG_HID_BPF is not set
|
||||||
# end of HID-BPF support
|
# end of HID-BPF support
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -7780,7 +7743,7 @@ CONFIG_HID_PID=y
|
|||||||
CONFIG_USB_HIDDEV=y
|
CONFIG_USB_HIDDEV=y
|
||||||
# end of USB HID support
|
# end of USB HID support
|
||||||
|
|
||||||
CONFIG_I2C_HID=m
|
CONFIG_I2C_HID=y
|
||||||
CONFIG_I2C_HID_ACPI=m
|
CONFIG_I2C_HID_ACPI=m
|
||||||
CONFIG_I2C_HID_CORE=m
|
CONFIG_I2C_HID_CORE=m
|
||||||
|
|
||||||
@@ -8207,7 +8170,7 @@ CONFIG_TYPEC_WUSB3801=m
|
|||||||
# USB Type-C Multiplexer/DeMultiplexer Switch support
|
# USB Type-C Multiplexer/DeMultiplexer Switch support
|
||||||
#
|
#
|
||||||
CONFIG_TYPEC_MUX_FSA4480=m
|
CONFIG_TYPEC_MUX_FSA4480=m
|
||||||
CONFIG_TYPEC_MUX_GPIO_SBU=m
|
# CONFIG_TYPEC_MUX_GPIO_SBU is not set
|
||||||
CONFIG_TYPEC_MUX_PI3USB30532=m
|
CONFIG_TYPEC_MUX_PI3USB30532=m
|
||||||
CONFIG_TYPEC_MUX_INTEL_PMC=m
|
CONFIG_TYPEC_MUX_INTEL_PMC=m
|
||||||
# end of USB Type-C Multiplexer/DeMultiplexer Switch support
|
# end of USB Type-C Multiplexer/DeMultiplexer Switch support
|
||||||
@@ -8624,7 +8587,7 @@ CONFIG_INTEL_IDXD_SVM=y
|
|||||||
CONFIG_INTEL_IDXD_PERFMON=y
|
CONFIG_INTEL_IDXD_PERFMON=y
|
||||||
CONFIG_INTEL_IOATDMA=m
|
CONFIG_INTEL_IOATDMA=m
|
||||||
CONFIG_PLX_DMA=m
|
CONFIG_PLX_DMA=m
|
||||||
CONFIG_XILINX_XDMA=m
|
# CONFIG_XILINX_XDMA is not set
|
||||||
CONFIG_AMD_PTDMA=m
|
CONFIG_AMD_PTDMA=m
|
||||||
CONFIG_QCOM_HIDMA_MGMT=m
|
CONFIG_QCOM_HIDMA_MGMT=m
|
||||||
CONFIG_QCOM_HIDMA=m
|
CONFIG_QCOM_HIDMA=m
|
||||||
@@ -8722,7 +8685,7 @@ CONFIG_MLX5_VDPA_NET=m
|
|||||||
# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
|
# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
|
||||||
CONFIG_VP_VDPA=m
|
CONFIG_VP_VDPA=m
|
||||||
CONFIG_ALIBABA_ENI_VDPA=m
|
CONFIG_ALIBABA_ENI_VDPA=m
|
||||||
CONFIG_SNET_VDPA=m
|
# CONFIG_SNET_VDPA is not set
|
||||||
CONFIG_VHOST_IOTLB=m
|
CONFIG_VHOST_IOTLB=m
|
||||||
CONFIG_VHOST_RING=m
|
CONFIG_VHOST_RING=m
|
||||||
CONFIG_VHOST=m
|
CONFIG_VHOST=m
|
||||||
@@ -8793,6 +8756,7 @@ CONFIG_RTLLIB_CRYPTO_WEP=m
|
|||||||
CONFIG_RTL8192E=m
|
CONFIG_RTL8192E=m
|
||||||
CONFIG_RTL8723BS=m
|
CONFIG_RTL8723BS=m
|
||||||
CONFIG_R8712U=m
|
CONFIG_R8712U=m
|
||||||
|
CONFIG_R8188EU=m
|
||||||
CONFIG_RTS5208=m
|
CONFIG_RTS5208=m
|
||||||
CONFIG_VT6655=m
|
CONFIG_VT6655=m
|
||||||
CONFIG_VT6656=m
|
CONFIG_VT6656=m
|
||||||
@@ -8863,11 +8827,7 @@ CONFIG_VIDEO_ATOMISP_GC0310=m
|
|||||||
CONFIG_VIDEO_ATOMISP_OV2680=m
|
CONFIG_VIDEO_ATOMISP_OV2680=m
|
||||||
CONFIG_VIDEO_ATOMISP_OV5693=m
|
CONFIG_VIDEO_ATOMISP_OV5693=m
|
||||||
CONFIG_VIDEO_ATOMISP_LM3554=m
|
CONFIG_VIDEO_ATOMISP_LM3554=m
|
||||||
CONFIG_DVB_AV7110_IR=y
|
# CONFIG_DVB_AV7110 is not set
|
||||||
CONFIG_DVB_AV7110=m
|
|
||||||
CONFIG_DVB_AV7110_OSD=y
|
|
||||||
CONFIG_DVB_BUDGET_PATCH=m
|
|
||||||
CONFIG_DVB_SP8870=m
|
|
||||||
CONFIG_VIDEO_IPU3_IMGU=m
|
CONFIG_VIDEO_IPU3_IMGU=m
|
||||||
# CONFIG_STAGING_MEDIA_DEPRECATED is not set
|
# CONFIG_STAGING_MEDIA_DEPRECATED is not set
|
||||||
CONFIG_LTE_GDM724X=m
|
CONFIG_LTE_GDM724X=m
|
||||||
@@ -8890,7 +8850,7 @@ CONFIG_CROS_EC=m
|
|||||||
CONFIG_CROS_EC_I2C=m
|
CONFIG_CROS_EC_I2C=m
|
||||||
CONFIG_CROS_EC_ISHTP=m
|
CONFIG_CROS_EC_ISHTP=m
|
||||||
CONFIG_CROS_EC_SPI=m
|
CONFIG_CROS_EC_SPI=m
|
||||||
CONFIG_CROS_EC_UART=m
|
# CONFIG_CROS_EC_UART is not set
|
||||||
CONFIG_CROS_EC_LPC=m
|
CONFIG_CROS_EC_LPC=m
|
||||||
CONFIG_CROS_EC_PROTO=y
|
CONFIG_CROS_EC_PROTO=y
|
||||||
CONFIG_CROS_KBD_LED_BACKLIGHT=m
|
CONFIG_CROS_KBD_LED_BACKLIGHT=m
|
||||||
@@ -9032,7 +8992,7 @@ CONFIG_INTEL_PUNIT_IPC=m
|
|||||||
CONFIG_INTEL_RST=m
|
CONFIG_INTEL_RST=m
|
||||||
CONFIG_INTEL_SDSI=m
|
CONFIG_INTEL_SDSI=m
|
||||||
CONFIG_INTEL_SMARTCONNECT=m
|
CONFIG_INTEL_SMARTCONNECT=m
|
||||||
CONFIG_INTEL_TPMI=m
|
# CONFIG_INTEL_TPMI is not set
|
||||||
CONFIG_INTEL_TURBO_MAX_3=y
|
CONFIG_INTEL_TURBO_MAX_3=y
|
||||||
CONFIG_INTEL_VSEC=m
|
CONFIG_INTEL_VSEC=m
|
||||||
CONFIG_MSI_LAPTOP=m
|
CONFIG_MSI_LAPTOP=m
|
||||||
@@ -9190,7 +9150,7 @@ CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m
|
|||||||
#
|
#
|
||||||
# end of Enable LiteX SoC Builder specific drivers
|
# end of Enable LiteX SoC Builder specific drivers
|
||||||
|
|
||||||
CONFIG_WPCM450_SOC=m
|
# CONFIG_WPCM450_SOC is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Qualcomm SoC drivers
|
# Qualcomm SoC drivers
|
||||||
@@ -9394,14 +9354,14 @@ CONFIG_TI_ADC108S102=m
|
|||||||
CONFIG_TI_ADC128S052=m
|
CONFIG_TI_ADC128S052=m
|
||||||
CONFIG_TI_ADC161S626=m
|
CONFIG_TI_ADC161S626=m
|
||||||
CONFIG_TI_ADS1015=m
|
CONFIG_TI_ADS1015=m
|
||||||
CONFIG_TI_ADS7924=m
|
# CONFIG_TI_ADS7924 is not set
|
||||||
CONFIG_TI_ADS7950=m
|
CONFIG_TI_ADS7950=m
|
||||||
CONFIG_TI_ADS8344=m
|
CONFIG_TI_ADS8344=m
|
||||||
CONFIG_TI_ADS8688=m
|
CONFIG_TI_ADS8688=m
|
||||||
CONFIG_TI_ADS124S08=m
|
CONFIG_TI_ADS124S08=m
|
||||||
CONFIG_TI_ADS131E08=m
|
CONFIG_TI_ADS131E08=m
|
||||||
CONFIG_TI_AM335X_ADC=m
|
CONFIG_TI_AM335X_ADC=m
|
||||||
CONFIG_TI_LMP92064=m
|
# CONFIG_TI_LMP92064 is not set
|
||||||
CONFIG_TI_TLC4541=m
|
CONFIG_TI_TLC4541=m
|
||||||
CONFIG_TI_TSC2046=m
|
CONFIG_TI_TSC2046=m
|
||||||
CONFIG_TWL4030_MADC=m
|
CONFIG_TWL4030_MADC=m
|
||||||
@@ -9527,7 +9487,7 @@ CONFIG_LTC1660=m
|
|||||||
CONFIG_LTC2632=m
|
CONFIG_LTC2632=m
|
||||||
CONFIG_M62332=m
|
CONFIG_M62332=m
|
||||||
CONFIG_MAX517=m
|
CONFIG_MAX517=m
|
||||||
CONFIG_MAX5522=m
|
# CONFIG_MAX5522 is not set
|
||||||
CONFIG_MAX5821=m
|
CONFIG_MAX5821=m
|
||||||
CONFIG_MCP4725=m
|
CONFIG_MCP4725=m
|
||||||
CONFIG_MCP4922=m
|
CONFIG_MCP4922=m
|
||||||
@@ -9742,7 +9702,7 @@ CONFIG_SENSORS_HMC5843_SPI=m
|
|||||||
CONFIG_SENSORS_RM3100=m
|
CONFIG_SENSORS_RM3100=m
|
||||||
CONFIG_SENSORS_RM3100_I2C=m
|
CONFIG_SENSORS_RM3100_I2C=m
|
||||||
CONFIG_SENSORS_RM3100_SPI=m
|
CONFIG_SENSORS_RM3100_SPI=m
|
||||||
CONFIG_TI_TMAG5273=m
|
# CONFIG_TI_TMAG5273 is not set
|
||||||
CONFIG_YAMAHA_YAS530=m
|
CONFIG_YAMAHA_YAS530=m
|
||||||
# end of Magnetometer sensors
|
# end of Magnetometer sensors
|
||||||
|
|
||||||
@@ -10028,7 +9988,6 @@ CONFIG_FPGA_DFL_FME_REGION=m
|
|||||||
CONFIG_FPGA_DFL_AFU=m
|
CONFIG_FPGA_DFL_AFU=m
|
||||||
CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m
|
CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m
|
||||||
CONFIG_FPGA_DFL_PCI=m
|
CONFIG_FPGA_DFL_PCI=m
|
||||||
CONFIG_FPGA_M10_BMC_SEC_UPDATE=m
|
|
||||||
CONFIG_FPGA_MGR_MICROCHIP_SPI=m
|
CONFIG_FPGA_MGR_MICROCHIP_SPI=m
|
||||||
CONFIG_FPGA_MGR_LATTICE_SYSCONFIG=m
|
CONFIG_FPGA_MGR_LATTICE_SYSCONFIG=m
|
||||||
CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI=m
|
CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI=m
|
||||||
@@ -10336,8 +10295,7 @@ CONFIG_EROFS_FS_SECURITY=y
|
|||||||
CONFIG_EROFS_FS_ZIP=y
|
CONFIG_EROFS_FS_ZIP=y
|
||||||
CONFIG_EROFS_FS_ZIP_LZMA=y
|
CONFIG_EROFS_FS_ZIP_LZMA=y
|
||||||
CONFIG_EROFS_FS_ONDEMAND=y
|
CONFIG_EROFS_FS_ONDEMAND=y
|
||||||
CONFIG_EROFS_FS_PCPU_KTHREAD=y
|
# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
|
||||||
CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI=y
|
|
||||||
CONFIG_VBOXSF_FS=m
|
CONFIG_VBOXSF_FS=m
|
||||||
CONFIG_NETWORK_FILESYSTEMS=y
|
CONFIG_NETWORK_FILESYSTEMS=y
|
||||||
CONFIG_NFS_FS=m
|
CONFIG_NFS_FS=m
|
||||||
@@ -10384,8 +10342,8 @@ CONFIG_RPCSEC_GSS_KRB5=m
|
|||||||
CONFIG_RPCSEC_GSS_KRB5_CRYPTOSYSTEM=y
|
CONFIG_RPCSEC_GSS_KRB5_CRYPTOSYSTEM=y
|
||||||
# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_DES is not set
|
# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_DES is not set
|
||||||
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
|
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
|
||||||
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y
|
# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set
|
||||||
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y
|
# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2 is not set
|
||||||
CONFIG_SUNRPC_DEBUG=y
|
CONFIG_SUNRPC_DEBUG=y
|
||||||
CONFIG_SUNRPC_XPRT_RDMA=m
|
CONFIG_SUNRPC_XPRT_RDMA=m
|
||||||
CONFIG_CEPH_FS=m
|
CONFIG_CEPH_FS=m
|
||||||
@@ -10734,7 +10692,7 @@ CONFIG_CRYPTO_CRC64_ROCKSOFT=y
|
|||||||
CONFIG_CRYPTO_DEFLATE=m
|
CONFIG_CRYPTO_DEFLATE=m
|
||||||
CONFIG_CRYPTO_LZO=m
|
CONFIG_CRYPTO_LZO=m
|
||||||
CONFIG_CRYPTO_842=m
|
CONFIG_CRYPTO_842=m
|
||||||
CONFIG_CRYPTO_LZ4=m
|
CONFIG_CRYPTO_LZ4=y
|
||||||
CONFIG_CRYPTO_LZ4HC=m
|
CONFIG_CRYPTO_LZ4HC=m
|
||||||
CONFIG_CRYPTO_ZSTD=y
|
CONFIG_CRYPTO_ZSTD=y
|
||||||
# end of Compression
|
# end of Compression
|
||||||
@@ -10788,8 +10746,8 @@ CONFIG_CRYPTO_TWOFISH_X86_64=m
|
|||||||
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
|
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
|
||||||
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
|
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
|
||||||
CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=m
|
CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=m
|
||||||
CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64=m
|
# CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64 is not set
|
||||||
CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64=m
|
# CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64 is not set
|
||||||
CONFIG_CRYPTO_CHACHA20_X86_64=m
|
CONFIG_CRYPTO_CHACHA20_X86_64=m
|
||||||
CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m
|
CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m
|
||||||
CONFIG_CRYPTO_NHPOLY1305_SSE2=m
|
CONFIG_CRYPTO_NHPOLY1305_SSE2=m
|
||||||
@@ -10932,7 +10890,7 @@ CONFIG_ZLIB_INFLATE=y
|
|||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
CONFIG_LZO_COMPRESS=y
|
CONFIG_LZO_COMPRESS=y
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
CONFIG_LZO_DECOMPRESS=y
|
||||||
CONFIG_LZ4_COMPRESS=m
|
CONFIG_LZ4_COMPRESS=y
|
||||||
CONFIG_LZ4HC_COMPRESS=m
|
CONFIG_LZ4HC_COMPRESS=m
|
||||||
CONFIG_LZ4_DECOMPRESS=y
|
CONFIG_LZ4_DECOMPRESS=y
|
||||||
CONFIG_ZSTD_COMMON=y
|
CONFIG_ZSTD_COMMON=y
|
||||||
@@ -11078,7 +11036,6 @@ CONFIG_DEBUG_INFO_DWARF5=y
|
|||||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||||
CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
|
CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
|
||||||
# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
|
# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
|
||||||
# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
|
|
||||||
# CONFIG_DEBUG_INFO_SPLIT is not set
|
# CONFIG_DEBUG_INFO_SPLIT is not set
|
||||||
CONFIG_DEBUG_INFO_BTF=y
|
CONFIG_DEBUG_INFO_BTF=y
|
||||||
CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
||||||
|
@@ -252,7 +252,7 @@ _set_cpu_scheduler() {
|
|||||||
["bore"]="BORE (Burst-Oriented Response Enhancer) CPU Scheduler"
|
["bore"]="BORE (Burst-Oriented Response Enhancer) CPU Scheduler"
|
||||||
)
|
)
|
||||||
|
|
||||||
# CPU SCHED selector - _projectc_unoff=1 sets unofficial Project C revision flag for a given version
|
# CPU SCHED selector
|
||||||
if [ "$_kver" = "504" ]; then
|
if [ "$_kver" = "504" ]; then
|
||||||
_avail_cpu_scheds=("pds" "bmq" "muqss" "cacule" "cfs")
|
_avail_cpu_scheds=("pds" "bmq" "muqss" "cacule" "cfs")
|
||||||
elif [ "$_kver" = "507" ]; then
|
elif [ "$_kver" = "507" ]; then
|
||||||
@@ -285,8 +285,7 @@ _set_cpu_scheduler() {
|
|||||||
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
|
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
|
||||||
elif [ "$_kver" = "602" ]; then
|
elif [ "$_kver" = "602" ]; then
|
||||||
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
|
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
|
||||||
elif [ "$_kver" = "603" ]; then
|
_projectc_unoff=1
|
||||||
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt")
|
|
||||||
else
|
else
|
||||||
_avail_cpu_scheds=("cfs")
|
_avail_cpu_scheds=("cfs")
|
||||||
fi
|
fi
|
||||||
@@ -727,10 +726,6 @@ _tkg_srcprep() {
|
|||||||
rev=2
|
rev=2
|
||||||
elif [ "$_kver" = "601" ]; then
|
elif [ "$_kver" = "601" ]; then
|
||||||
rev=1
|
rev=1
|
||||||
elif [ "$_kver" = "602" ]; then
|
|
||||||
rev=2
|
|
||||||
elif [ "$_kver" = "603" ]; then
|
|
||||||
rev=1
|
|
||||||
else
|
else
|
||||||
rev=0
|
rev=0
|
||||||
fi
|
fi
|
||||||
@@ -876,10 +871,6 @@ _tkg_srcprep() {
|
|||||||
# buggy project C/PSI interaction workaround
|
# buggy project C/PSI interaction workaround
|
||||||
if [ "${_cpusched}" = "pds" ] || [ "${_cpusched}" = "bmq" ]; then
|
if [ "${_cpusched}" = "pds" ] || [ "${_cpusched}" = "bmq" ]; then
|
||||||
_enable "PSI_DEFAULT_DISABLED"
|
_enable "PSI_DEFAULT_DISABLED"
|
||||||
# Disable MLX5_CORE on Prjc 6.3.y
|
|
||||||
if [ "$_kver" = "603" ]; then
|
|
||||||
_disable "MLX5_CORE"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$_custom_commandline" ]; then
|
if [ -n "$_custom_commandline" ]; then
|
||||||
@@ -945,7 +936,7 @@ _tkg_srcprep() {
|
|||||||
_cpu_marchs+=("k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver")
|
_cpu_marchs+=("k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver")
|
||||||
_cpu_marchs+=("steamroller" "excavator" "zen" "zen2" "zen3" "zen4" "mpsc" "atom" "core2" "nehalem" "westmere")
|
_cpu_marchs+=("steamroller" "excavator" "zen" "zen2" "zen3" "zen4" "mpsc" "atom" "core2" "nehalem" "westmere")
|
||||||
_cpu_marchs+=("bonnell" "silvermont" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake")
|
_cpu_marchs+=("bonnell" "silvermont" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake")
|
||||||
_cpu_marchs+=("skylakex" "cannonlake" "icelake" "goldmont" "goldmontplus" "cascadelake" "emeraldrapids")
|
_cpu_marchs+=("skylakex" "cannonlake" "icelake" "goldmont" "goldmontplus" "cascadelake")
|
||||||
_cpu_marchs+=("cooperlake" "tigerlake" "sapphirerapids" "rocketlake" "alderlake" "raptorlake" "meteorlake")
|
_cpu_marchs+=("cooperlake" "tigerlake" "sapphirerapids" "rocketlake" "alderlake" "raptorlake" "meteorlake")
|
||||||
|
|
||||||
typeset -A _generic_march_map
|
typeset -A _generic_march_map
|
||||||
@@ -1400,10 +1391,10 @@ _tkg_srcprep() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# fsync (futex_waitv) support
|
# futex_waitv support
|
||||||
tkgpatch="$srcdir/0007-v${_basekernel}-futex_waitv.patch"
|
tkgpatch="$srcdir/0007-v${_basekernel}-futex_waitv.patch"
|
||||||
if [ -e "$tkgpatch" ]; then
|
if [ -e "$tkgpatch" ]; then
|
||||||
if [ -z "$_fsync_backport" ]; then
|
if [ -z "$_futex_waitv" ]; then
|
||||||
plain ""
|
plain ""
|
||||||
plain "Enable support for futex_waitv, backported patches for fsync from 5.16 Kernel"
|
plain "Enable support for futex_waitv, backported patches for fsync from 5.16 Kernel"
|
||||||
plain "! Will disable futex2 patchset !"
|
plain "! Will disable futex2 patchset !"
|
||||||
@@ -1411,33 +1402,33 @@ _tkg_srcprep() {
|
|||||||
plain "https://github.com/ValveSoftware/wine/pull/128"
|
plain "https://github.com/ValveSoftware/wine/pull/128"
|
||||||
read -rp "`echo $' > N/y : '`" CONDITION9;
|
read -rp "`echo $' > N/y : '`" CONDITION9;
|
||||||
fi
|
fi
|
||||||
if [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then
|
if [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then
|
||||||
_msg="Patching fsync support"
|
_msg="Patching futex_waitv support"
|
||||||
_tkg_patcher
|
_tkg_patcher
|
||||||
_fsync_futex2="false"
|
_futex2="false"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
_fsync_backport="false"
|
_futex_waitv="false"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# fsync legacy support
|
# fsync support
|
||||||
if [[ $_kver > 515 ]] || [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then
|
if [[ $_kver > 515 ]] || [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then
|
||||||
tkgpatch="$srcdir/0007-v${_basekernel}-fsync_legacy_via_futex_waitv.patch"
|
tkgpatch="$srcdir/0007-v${_basekernel}-fsync1_via_futex_waitv.patch"
|
||||||
else
|
else
|
||||||
tkgpatch="$srcdir/0007-v${_basekernel}-fsync_legacy.patch"
|
tkgpatch="$srcdir/0007-v${_basekernel}-fsync.patch"
|
||||||
fi
|
fi
|
||||||
if [ -e "$tkgpatch" ]; then
|
if [ -e "$tkgpatch" ]; then
|
||||||
if [ -z "$_fsync_legacy" ]; then
|
if [ -z "$_fsync" ]; then
|
||||||
plain ""
|
plain ""
|
||||||
plain "Enable support for FUTEX_WAIT_MULTIPLE (opcode 31) - fsync legacy used in Valve Proton 4.11, 5.0 and 5.13"
|
plain "Enable support for fsync, an experimental replacement for esync in Valve Proton 4.11+"
|
||||||
plain "https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305"
|
plain "https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305"
|
||||||
if [[ "$CONDITION9" =~ [yY] ]] || [ "$_fsync_backport" = "true" ]; then
|
if [[ "$CONDITION9" =~ [yY] ]] || [ "$_futex_waitv" = "true" ]; then
|
||||||
plain "Will be used as a fallback to futex_waitv on older Proton builds if enabled"
|
plain "Will be used as a fallback to futex_waitv on older Proton builds if enabled"
|
||||||
fi
|
fi
|
||||||
read -rp "`echo $' > N/y : '`" CONDITION10;
|
read -rp "`echo $' > N/y : '`" CONDITION10;
|
||||||
fi
|
fi
|
||||||
if [[ "$CONDITION10" =~ [yY] ]] || [ "$_fsync_legacy" = "true" ]; then
|
if [[ "$CONDITION10" =~ [yY] ]] || [ "$_fsync" = "true" ]; then
|
||||||
_msg="Patching fsync legacy support"
|
_msg="Patching Fsync support"
|
||||||
_tkg_patcher
|
_tkg_patcher
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -1445,15 +1436,15 @@ _tkg_srcprep() {
|
|||||||
# futex2 support
|
# futex2 support
|
||||||
tkgpatch="$srcdir/0007-v${_basekernel}-futex2_interface.patch"
|
tkgpatch="$srcdir/0007-v${_basekernel}-futex2_interface.patch"
|
||||||
if [ -e "$tkgpatch" ]; then
|
if [ -e "$tkgpatch" ]; then
|
||||||
if [ -z "$_fsync_futex2" ]; then
|
if [ -z "$_futex2" ]; then
|
||||||
plain ""
|
plain ""
|
||||||
plain "Enable support for futex2, a DEPRECATED replacement for esync and fsync in Valve Proton 5.13 experimental"
|
plain "Enable support for futex2, an experimental replacement for esync and fsync in Valve Proton 5.13 experimental"
|
||||||
plain "Can be enabled alongside fsync legacy patchset to have a fallback option"
|
plain "Can be enabled alongside regular fsync patchset to have a fallback option"
|
||||||
plain "https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev"
|
plain "https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev"
|
||||||
plain "https://github.com/ValveSoftware/Proton/issues/4568"
|
plain "https://github.com/ValveSoftware/Proton/issues/4568"
|
||||||
read -rp "`echo $' > N/y : '`" CONDITION11;
|
read -rp "`echo $' > N/y : '`" CONDITION11;
|
||||||
fi
|
fi
|
||||||
if [[ "$CONDITION11" =~ [yY] ]] || [ "$_fsync_futex2" = "true" ]; then
|
if [[ "$CONDITION11" =~ [yY] ]] || [ "$_futex2" = "true" ]; then
|
||||||
_msg="Patching futex2 support"
|
_msg="Patching futex2 support"
|
||||||
_tkg_patcher
|
_tkg_patcher
|
||||||
_enable "FUTEX2"
|
_enable "FUTEX2"
|
||||||
|
165
linux-tkg-patches/5.17/0007-v5.17-fsync.patch
Normal file
165
linux-tkg-patches/5.17/0007-v5.17-fsync.patch
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
From b70e738f08403950aa3053c36b98c6b0eeb0eb90 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@collabora.com>
|
||||||
|
Date: Mon, 25 Oct 2021 09:49:42 -0300
|
||||||
|
Subject: [PATCH] futex: Add entry point for FUTEX_WAIT_MULTIPLE (opcode 31)
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Add an option to wait on multiple futexes using the old interface, that
|
||||||
|
uses opcode 31 through futex() syscall. Do that by just translation the
|
||||||
|
old interface to use the new code. This allows old and stable versions
|
||||||
|
of Proton to still use fsync in new kernel releases.
|
||||||
|
|
||||||
|
Signed-off-by: André Almeida <andrealmeid@collabora.com>
|
||||||
|
---
|
||||||
|
include/uapi/linux/futex.h | 12 ++++++
|
||||||
|
kernel/futex/core.c | 75 +++++++++++++++++++++++++++++++++++++-
|
||||||
|
2 files changed, 86 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
|
||||||
|
index 2a06b99f9803..417c5d89b745 100644
|
||||||
|
--- a/include/uapi/linux/futex.h
|
||||||
|
+++ b/include/uapi/linux/futex.h
|
||||||
|
@@ -22,6 +22,7 @@
|
||||||
|
#define FUTEX_WAIT_REQUEUE_PI 11
|
||||||
|
#define FUTEX_CMP_REQUEUE_PI 12
|
||||||
|
#define FUTEX_LOCK_PI2 13
|
||||||
|
+#define FUTEX_WAIT_MULTIPLE 31
|
||||||
|
|
||||||
|
#define FUTEX_PRIVATE_FLAG 128
|
||||||
|
#define FUTEX_CLOCK_REALTIME 256
|
||||||
|
@@ -68,6 +69,17 @@ struct futex_waitv {
|
||||||
|
__u32 __reserved;
|
||||||
|
};
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * struct futex_wait_block - Block of futexes to be waited for
|
||||||
|
+ * @uaddr: User address of the futex
|
||||||
|
+ * @val: Futex value expected by userspace
|
||||||
|
+ * @bitset: Bitset for the optional bitmasked wakeup
|
||||||
|
+ */
|
||||||
|
+struct futex_wait_block {
|
||||||
|
+ __u32 __user *uaddr;
|
||||||
|
+ __u32 val;
|
||||||
|
+ __u32 bitset;
|
||||||
|
+};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support for robust futexes: the kernel cleans up held futexes at
|
||||||
|
diff --git a/kernel/futex/core.c b/kernel/futex/core.c
|
||||||
|
index 4a9e7ce3714a..c3f2e65afab8 100644
|
||||||
|
--- a/kernel/futex/core.c
|
||||||
|
+++ b/kernel/futex/core.c
|
||||||
|
@@ -4012,6 +4012,7 @@ static __always_inline bool futex_cmd_has_timeout(u32 cmd)
|
||||||
|
case FUTEX_LOCK_PI2:
|
||||||
|
case FUTEX_WAIT_BITSET:
|
||||||
|
case FUTEX_WAIT_REQUEUE_PI:
|
||||||
|
+ case FUTEX_WAIT_MULTIPLE:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
@@ -4024,13 +4025,79 @@ futex_init_timeout(u32 cmd, u32 op, struct timespec64 *ts, ktime_t *t)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
*t = timespec64_to_ktime(*ts);
|
||||||
|
- if (cmd == FUTEX_WAIT)
|
||||||
|
+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
*t = ktime_add_safe(ktime_get(), *t);
|
||||||
|
else if (cmd != FUTEX_LOCK_PI && !(op & FUTEX_CLOCK_REALTIME))
|
||||||
|
*t = timens_ktime_to_host(CLOCK_MONOTONIC, *t);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * futex_read_wait_block - Read an array of futex_wait_block from userspace
|
||||||
|
+ * @uaddr: Userspace address of the block
|
||||||
|
+ * @count: Number of blocks to be read
|
||||||
|
+ *
|
||||||
|
+ * This function creates and allocate an array of futex_q (we zero it to
|
||||||
|
+ * initialize the fields) and then, for each futex_wait_block element from
|
||||||
|
+ * userspace, fill a futex_q element with proper values.
|
||||||
|
+ */
|
||||||
|
+inline struct futex_vector *futex_read_wait_block(u32 __user *uaddr, u32 count)
|
||||||
|
+{
|
||||||
|
+ unsigned int i;
|
||||||
|
+ struct futex_vector *futexv;
|
||||||
|
+ struct futex_wait_block fwb;
|
||||||
|
+ struct futex_wait_block __user *entry =
|
||||||
|
+ (struct futex_wait_block __user *)uaddr;
|
||||||
|
+
|
||||||
|
+ if (!count || count > FUTEX_WAITV_MAX)
|
||||||
|
+ return ERR_PTR(-EINVAL);
|
||||||
|
+
|
||||||
|
+ futexv = kcalloc(count, sizeof(*futexv), GFP_KERNEL);
|
||||||
|
+ if (!futexv)
|
||||||
|
+ return ERR_PTR(-ENOMEM);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < count; i++) {
|
||||||
|
+ if (copy_from_user(&fwb, &entry[i], sizeof(fwb))) {
|
||||||
|
+ kfree(futexv);
|
||||||
|
+ return ERR_PTR(-EFAULT);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ futexv[i].w.flags = FUTEX_32;
|
||||||
|
+ futexv[i].w.val = fwb.val;
|
||||||
|
+ futexv[i].w.uaddr = (uintptr_t) (fwb.uaddr);
|
||||||
|
+ futexv[i].q = futex_q_init;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return futexv;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int futex_wait_multiple(struct futex_vector *vs, unsigned int count,
|
||||||
|
+ struct hrtimer_sleeper *to);
|
||||||
|
+
|
||||||
|
+int futex_opcode_31(ktime_t *abs_time, u32 __user *uaddr, int count)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+ struct futex_vector *vs;
|
||||||
|
+ struct hrtimer_sleeper *to = NULL, timeout;
|
||||||
|
+
|
||||||
|
+ to = futex_setup_timer(abs_time, &timeout, 0, 0);
|
||||||
|
+
|
||||||
|
+ vs = futex_read_wait_block(uaddr, count);
|
||||||
|
+
|
||||||
|
+ if (IS_ERR(vs))
|
||||||
|
+ return PTR_ERR(vs);
|
||||||
|
+
|
||||||
|
+ ret = futex_wait_multiple(vs, count, abs_time ? to : NULL);
|
||||||
|
+ kfree(vs);
|
||||||
|
+
|
||||||
|
+ if (to) {
|
||||||
|
+ hrtimer_cancel(&to->timer);
|
||||||
|
+ destroy_hrtimer_on_stack(&to->timer);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
const struct __kernel_timespec __user *, utime,
|
||||||
|
u32 __user *, uaddr2, u32, val3)
|
||||||
|
@@ -4050,6 +4117,9 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
tp = &t;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
+ return futex_opcode_31(tp, uaddr, val);
|
||||||
|
+
|
||||||
|
return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4551,6 +4621,9 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
tp = &t;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
+ return futex_opcode_31(tp, uaddr, val);
|
||||||
|
+
|
||||||
|
return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
165
linux-tkg-patches/5.18/0007-v5.18-fsync.patch
Normal file
165
linux-tkg-patches/5.18/0007-v5.18-fsync.patch
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
From b70e738f08403950aa3053c36b98c6b0eeb0eb90 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@collabora.com>
|
||||||
|
Date: Mon, 25 Oct 2021 09:49:42 -0300
|
||||||
|
Subject: [PATCH] futex: Add entry point for FUTEX_WAIT_MULTIPLE (opcode 31)
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Add an option to wait on multiple futexes using the old interface, that
|
||||||
|
uses opcode 31 through futex() syscall. Do that by just translation the
|
||||||
|
old interface to use the new code. This allows old and stable versions
|
||||||
|
of Proton to still use fsync in new kernel releases.
|
||||||
|
|
||||||
|
Signed-off-by: André Almeida <andrealmeid@collabora.com>
|
||||||
|
---
|
||||||
|
include/uapi/linux/futex.h | 12 ++++++
|
||||||
|
kernel/futex/core.c | 75 +++++++++++++++++++++++++++++++++++++-
|
||||||
|
2 files changed, 86 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
|
||||||
|
index 2a06b99f9803..417c5d89b745 100644
|
||||||
|
--- a/include/uapi/linux/futex.h
|
||||||
|
+++ b/include/uapi/linux/futex.h
|
||||||
|
@@ -22,6 +22,7 @@
|
||||||
|
#define FUTEX_WAIT_REQUEUE_PI 11
|
||||||
|
#define FUTEX_CMP_REQUEUE_PI 12
|
||||||
|
#define FUTEX_LOCK_PI2 13
|
||||||
|
+#define FUTEX_WAIT_MULTIPLE 31
|
||||||
|
|
||||||
|
#define FUTEX_PRIVATE_FLAG 128
|
||||||
|
#define FUTEX_CLOCK_REALTIME 256
|
||||||
|
@@ -68,6 +69,17 @@ struct futex_waitv {
|
||||||
|
__u32 __reserved;
|
||||||
|
};
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * struct futex_wait_block - Block of futexes to be waited for
|
||||||
|
+ * @uaddr: User address of the futex
|
||||||
|
+ * @val: Futex value expected by userspace
|
||||||
|
+ * @bitset: Bitset for the optional bitmasked wakeup
|
||||||
|
+ */
|
||||||
|
+struct futex_wait_block {
|
||||||
|
+ __u32 __user *uaddr;
|
||||||
|
+ __u32 val;
|
||||||
|
+ __u32 bitset;
|
||||||
|
+};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support for robust futexes: the kernel cleans up held futexes at
|
||||||
|
diff --git a/kernel/futex/core.c b/kernel/futex/core.c
|
||||||
|
index 4a9e7ce3714a..c3f2e65afab8 100644
|
||||||
|
--- a/kernel/futex/core.c
|
||||||
|
+++ b/kernel/futex/core.c
|
||||||
|
@@ -4012,6 +4012,7 @@ static __always_inline bool futex_cmd_has_timeout(u32 cmd)
|
||||||
|
case FUTEX_LOCK_PI2:
|
||||||
|
case FUTEX_WAIT_BITSET:
|
||||||
|
case FUTEX_WAIT_REQUEUE_PI:
|
||||||
|
+ case FUTEX_WAIT_MULTIPLE:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
@@ -4024,13 +4025,79 @@ futex_init_timeout(u32 cmd, u32 op, struct timespec64 *ts, ktime_t *t)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
*t = timespec64_to_ktime(*ts);
|
||||||
|
- if (cmd == FUTEX_WAIT)
|
||||||
|
+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
*t = ktime_add_safe(ktime_get(), *t);
|
||||||
|
else if (cmd != FUTEX_LOCK_PI && !(op & FUTEX_CLOCK_REALTIME))
|
||||||
|
*t = timens_ktime_to_host(CLOCK_MONOTONIC, *t);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * futex_read_wait_block - Read an array of futex_wait_block from userspace
|
||||||
|
+ * @uaddr: Userspace address of the block
|
||||||
|
+ * @count: Number of blocks to be read
|
||||||
|
+ *
|
||||||
|
+ * This function creates and allocate an array of futex_q (we zero it to
|
||||||
|
+ * initialize the fields) and then, for each futex_wait_block element from
|
||||||
|
+ * userspace, fill a futex_q element with proper values.
|
||||||
|
+ */
|
||||||
|
+inline struct futex_vector *futex_read_wait_block(u32 __user *uaddr, u32 count)
|
||||||
|
+{
|
||||||
|
+ unsigned int i;
|
||||||
|
+ struct futex_vector *futexv;
|
||||||
|
+ struct futex_wait_block fwb;
|
||||||
|
+ struct futex_wait_block __user *entry =
|
||||||
|
+ (struct futex_wait_block __user *)uaddr;
|
||||||
|
+
|
||||||
|
+ if (!count || count > FUTEX_WAITV_MAX)
|
||||||
|
+ return ERR_PTR(-EINVAL);
|
||||||
|
+
|
||||||
|
+ futexv = kcalloc(count, sizeof(*futexv), GFP_KERNEL);
|
||||||
|
+ if (!futexv)
|
||||||
|
+ return ERR_PTR(-ENOMEM);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < count; i++) {
|
||||||
|
+ if (copy_from_user(&fwb, &entry[i], sizeof(fwb))) {
|
||||||
|
+ kfree(futexv);
|
||||||
|
+ return ERR_PTR(-EFAULT);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ futexv[i].w.flags = FUTEX_32;
|
||||||
|
+ futexv[i].w.val = fwb.val;
|
||||||
|
+ futexv[i].w.uaddr = (uintptr_t) (fwb.uaddr);
|
||||||
|
+ futexv[i].q = futex_q_init;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return futexv;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int futex_wait_multiple(struct futex_vector *vs, unsigned int count,
|
||||||
|
+ struct hrtimer_sleeper *to);
|
||||||
|
+
|
||||||
|
+int futex_opcode_31(ktime_t *abs_time, u32 __user *uaddr, int count)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+ struct futex_vector *vs;
|
||||||
|
+ struct hrtimer_sleeper *to = NULL, timeout;
|
||||||
|
+
|
||||||
|
+ to = futex_setup_timer(abs_time, &timeout, 0, 0);
|
||||||
|
+
|
||||||
|
+ vs = futex_read_wait_block(uaddr, count);
|
||||||
|
+
|
||||||
|
+ if (IS_ERR(vs))
|
||||||
|
+ return PTR_ERR(vs);
|
||||||
|
+
|
||||||
|
+ ret = futex_wait_multiple(vs, count, abs_time ? to : NULL);
|
||||||
|
+ kfree(vs);
|
||||||
|
+
|
||||||
|
+ if (to) {
|
||||||
|
+ hrtimer_cancel(&to->timer);
|
||||||
|
+ destroy_hrtimer_on_stack(&to->timer);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
const struct __kernel_timespec __user *, utime,
|
||||||
|
u32 __user *, uaddr2, u32, val3)
|
||||||
|
@@ -4050,6 +4117,9 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
tp = &t;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
+ return futex_opcode_31(tp, uaddr, val);
|
||||||
|
+
|
||||||
|
return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4551,6 +4621,9 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
|
||||||
|
tp = &t;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (cmd == FUTEX_WAIT_MULTIPLE)
|
||||||
|
+ return futex_opcode_31(tp, uaddr, val);
|
||||||
|
+
|
||||||
|
return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@@ -17,20 +17,268 @@ index 6b3b59cc51d6..2a0072192c3d 100644
|
|||||||
|
|
||||||
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
int sched_thermal_decay_shift;
|
int sched_thermal_decay_shift;
|
||||||
static int __init setup_sched_thermal_decay_shift(char *str)
|
static int __init setup_sched_thermal_decay_shift(char *str)
|
||||||
|
|
||||||
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
|
|
||||||
index 051aaf65c..705df5511 100644
|
|
||||||
--- a/kernel/sched/topology.c
|
|
||||||
+++ b/kernel/sched/topology.c
|
|
||||||
@@ -208,7 +208,7 @@ sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent)
|
|
||||||
|
|
||||||
#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
|
From 5d5b708e3731e135ea7ae168571ad78d883e63e8 Mon Sep 17 00:00:00 2001
|
||||||
DEFINE_STATIC_KEY_FALSE(sched_energy_present);
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
-static unsigned int sysctl_sched_energy_aware = 1;
|
Date: Wed, 1 Feb 2023 10:17:47 +0000
|
||||||
+static unsigned int sysctl_sched_energy_aware = 0;
|
Subject: [PATCH 02/16] XANMOD: fair: Remove all energy efficiency functions
|
||||||
DEFINE_MUTEX(sched_energy_mutex);
|
|
||||||
bool sched_energy_update;
|
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
kernel/sched/fair.c | 224 +-------------------------------------------
|
||||||
|
1 file changed, 3 insertions(+), 221 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 0f8736991427..345cc5e9fa6e 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -19,6 +19,9 @@
|
||||||
|
*
|
||||||
|
* Adaptive scheduling granularity, math enhancements by Peter Zijlstra
|
||||||
|
* Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
|
||||||
|
+ *
|
||||||
|
+ * Remove energy efficiency functions by Alexandre Frade
|
||||||
|
+ * (C) 2021 Alexandre Frade <kernel@xanmod.org>
|
||||||
|
*/
|
||||||
|
#include <linux/energy_model.h>
|
||||||
|
#include <linux/mmap_lock.h>
|
||||||
|
@@ -7136,219 +7139,6 @@ eenv_pd_max_util(struct energy_env *eenv, struct cpumask *pd_cpus,
|
||||||
|
return min(max_util, eenv->cpu_cap);
|
||||||
|
}
|
||||||
|
|
||||||
|
-/*
|
||||||
|
- * compute_energy(): Use the Energy Model to estimate the energy that @pd would
|
||||||
|
- * consume for a given utilization landscape @eenv. When @dst_cpu < 0, the task
|
||||||
|
- * contribution is ignored.
|
||||||
|
- */
|
||||||
|
-static inline unsigned long
|
||||||
|
-compute_energy(struct energy_env *eenv, struct perf_domain *pd,
|
||||||
|
- struct cpumask *pd_cpus, struct task_struct *p, int dst_cpu)
|
||||||
|
-{
|
||||||
|
- unsigned long max_util = eenv_pd_max_util(eenv, pd_cpus, p, dst_cpu);
|
||||||
|
- unsigned long busy_time = eenv->pd_busy_time;
|
||||||
|
-
|
||||||
|
- if (dst_cpu >= 0)
|
||||||
|
- busy_time = min(eenv->pd_cap, busy_time + eenv->task_busy_time);
|
||||||
|
-
|
||||||
|
- return em_cpu_energy(pd->em_pd, max_util, busy_time, eenv->cpu_cap);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-/*
|
||||||
|
- * find_energy_efficient_cpu(): Find most energy-efficient target CPU for the
|
||||||
|
- * waking task. find_energy_efficient_cpu() looks for the CPU with maximum
|
||||||
|
- * spare capacity in each performance domain and uses it as a potential
|
||||||
|
- * candidate to execute the task. Then, it uses the Energy Model to figure
|
||||||
|
- * out which of the CPU candidates is the most energy-efficient.
|
||||||
|
- *
|
||||||
|
- * The rationale for this heuristic is as follows. In a performance domain,
|
||||||
|
- * all the most energy efficient CPU candidates (according to the Energy
|
||||||
|
- * Model) are those for which we'll request a low frequency. When there are
|
||||||
|
- * several CPUs for which the frequency request will be the same, we don't
|
||||||
|
- * have enough data to break the tie between them, because the Energy Model
|
||||||
|
- * only includes active power costs. With this model, if we assume that
|
||||||
|
- * frequency requests follow utilization (e.g. using schedutil), the CPU with
|
||||||
|
- * the maximum spare capacity in a performance domain is guaranteed to be among
|
||||||
|
- * the best candidates of the performance domain.
|
||||||
|
- *
|
||||||
|
- * In practice, it could be preferable from an energy standpoint to pack
|
||||||
|
- * small tasks on a CPU in order to let other CPUs go in deeper idle states,
|
||||||
|
- * but that could also hurt our chances to go cluster idle, and we have no
|
||||||
|
- * ways to tell with the current Energy Model if this is actually a good
|
||||||
|
- * idea or not. So, find_energy_efficient_cpu() basically favors
|
||||||
|
- * cluster-packing, and spreading inside a cluster. That should at least be
|
||||||
|
- * a good thing for latency, and this is consistent with the idea that most
|
||||||
|
- * of the energy savings of EAS come from the asymmetry of the system, and
|
||||||
|
- * not so much from breaking the tie between identical CPUs. That's also the
|
||||||
|
- * reason why EAS is enabled in the topology code only for systems where
|
||||||
|
- * SD_ASYM_CPUCAPACITY is set.
|
||||||
|
- *
|
||||||
|
- * NOTE: Forkees are not accepted in the energy-aware wake-up path because
|
||||||
|
- * they don't have any useful utilization data yet and it's not possible to
|
||||||
|
- * forecast their impact on energy consumption. Consequently, they will be
|
||||||
|
- * placed by find_idlest_cpu() on the least loaded CPU, which might turn out
|
||||||
|
- * to be energy-inefficient in some use-cases. The alternative would be to
|
||||||
|
- * bias new tasks towards specific types of CPUs first, or to try to infer
|
||||||
|
- * their util_avg from the parent task, but those heuristics could hurt
|
||||||
|
- * other use-cases too. So, until someone finds a better way to solve this,
|
||||||
|
- * let's keep things simple by re-using the existing slow path.
|
||||||
|
- */
|
||||||
|
-static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
|
||||||
|
-{
|
||||||
|
- struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
|
||||||
|
- unsigned long prev_delta = ULONG_MAX, best_delta = ULONG_MAX;
|
||||||
|
- unsigned long p_util_min = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MIN) : 0;
|
||||||
|
- unsigned long p_util_max = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MAX) : 1024;
|
||||||
|
- struct root_domain *rd = this_rq()->rd;
|
||||||
|
- int cpu, best_energy_cpu, target = -1;
|
||||||
|
- struct sched_domain *sd;
|
||||||
|
- struct perf_domain *pd;
|
||||||
|
- struct energy_env eenv;
|
||||||
|
-
|
||||||
|
- rcu_read_lock();
|
||||||
|
- pd = rcu_dereference(rd->pd);
|
||||||
|
- if (!pd || READ_ONCE(rd->overutilized))
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Energy-aware wake-up happens on the lowest sched_domain starting
|
||||||
|
- * from sd_asym_cpucapacity spanning over this_cpu and prev_cpu.
|
||||||
|
- */
|
||||||
|
- sd = rcu_dereference(*this_cpu_ptr(&sd_asym_cpucapacity));
|
||||||
|
- while (sd && !cpumask_test_cpu(prev_cpu, sched_domain_span(sd)))
|
||||||
|
- sd = sd->parent;
|
||||||
|
- if (!sd)
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- target = prev_cpu;
|
||||||
|
-
|
||||||
|
- sync_entity_load_avg(&p->se);
|
||||||
|
- if (!uclamp_task_util(p, p_util_min, p_util_max))
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- eenv_task_busy_time(&eenv, p, prev_cpu);
|
||||||
|
-
|
||||||
|
- for (; pd; pd = pd->next) {
|
||||||
|
- unsigned long util_min = p_util_min, util_max = p_util_max;
|
||||||
|
- unsigned long cpu_cap, cpu_thermal_cap, util;
|
||||||
|
- unsigned long cur_delta, max_spare_cap = 0;
|
||||||
|
- unsigned long rq_util_min, rq_util_max;
|
||||||
|
- unsigned long prev_spare_cap = 0;
|
||||||
|
- int max_spare_cap_cpu = -1;
|
||||||
|
- unsigned long base_energy;
|
||||||
|
-
|
||||||
|
- cpumask_and(cpus, perf_domain_span(pd), cpu_online_mask);
|
||||||
|
-
|
||||||
|
- if (cpumask_empty(cpus))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- /* Account thermal pressure for the energy estimation */
|
||||||
|
- cpu = cpumask_first(cpus);
|
||||||
|
- cpu_thermal_cap = arch_scale_cpu_capacity(cpu);
|
||||||
|
- cpu_thermal_cap -= arch_scale_thermal_pressure(cpu);
|
||||||
|
-
|
||||||
|
- eenv.cpu_cap = cpu_thermal_cap;
|
||||||
|
- eenv.pd_cap = 0;
|
||||||
|
-
|
||||||
|
- for_each_cpu(cpu, cpus) {
|
||||||
|
- struct rq *rq = cpu_rq(cpu);
|
||||||
|
-
|
||||||
|
- eenv.pd_cap += cpu_thermal_cap;
|
||||||
|
-
|
||||||
|
- if (!cpumask_test_cpu(cpu, sched_domain_span(sd)))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- if (!cpumask_test_cpu(cpu, p->cpus_ptr))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- util = cpu_util_next(cpu, p, cpu);
|
||||||
|
- cpu_cap = capacity_of(cpu);
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Skip CPUs that cannot satisfy the capacity request.
|
||||||
|
- * IOW, placing the task there would make the CPU
|
||||||
|
- * overutilized. Take uclamp into account to see how
|
||||||
|
- * much capacity we can get out of the CPU; this is
|
||||||
|
- * aligned with sched_cpu_util().
|
||||||
|
- */
|
||||||
|
- if (uclamp_is_used() && !uclamp_rq_is_idle(rq)) {
|
||||||
|
- /*
|
||||||
|
- * Open code uclamp_rq_util_with() except for
|
||||||
|
- * the clamp() part. Ie: apply max aggregation
|
||||||
|
- * only. util_fits_cpu() logic requires to
|
||||||
|
- * operate on non clamped util but must use the
|
||||||
|
- * max-aggregated uclamp_{min, max}.
|
||||||
|
- */
|
||||||
|
- rq_util_min = uclamp_rq_get(rq, UCLAMP_MIN);
|
||||||
|
- rq_util_max = uclamp_rq_get(rq, UCLAMP_MAX);
|
||||||
|
-
|
||||||
|
- util_min = max(rq_util_min, p_util_min);
|
||||||
|
- util_max = max(rq_util_max, p_util_max);
|
||||||
|
- }
|
||||||
|
- if (!util_fits_cpu(util, util_min, util_max, cpu))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- lsub_positive(&cpu_cap, util);
|
||||||
|
-
|
||||||
|
- if (cpu == prev_cpu) {
|
||||||
|
- /* Always use prev_cpu as a candidate. */
|
||||||
|
- prev_spare_cap = cpu_cap;
|
||||||
|
- } else if (cpu_cap > max_spare_cap) {
|
||||||
|
- /*
|
||||||
|
- * Find the CPU with the maximum spare capacity
|
||||||
|
- * among the remaining CPUs in the performance
|
||||||
|
- * domain.
|
||||||
|
- */
|
||||||
|
- max_spare_cap = cpu_cap;
|
||||||
|
- max_spare_cap_cpu = cpu;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (max_spare_cap_cpu < 0 && prev_spare_cap == 0)
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- eenv_pd_busy_time(&eenv, cpus, p);
|
||||||
|
- /* Compute the 'base' energy of the pd, without @p */
|
||||||
|
- base_energy = compute_energy(&eenv, pd, cpus, p, -1);
|
||||||
|
-
|
||||||
|
- /* Evaluate the energy impact of using prev_cpu. */
|
||||||
|
- if (prev_spare_cap > 0) {
|
||||||
|
- prev_delta = compute_energy(&eenv, pd, cpus, p,
|
||||||
|
- prev_cpu);
|
||||||
|
- /* CPU utilization has changed */
|
||||||
|
- if (prev_delta < base_energy)
|
||||||
|
- goto unlock;
|
||||||
|
- prev_delta -= base_energy;
|
||||||
|
- best_delta = min(best_delta, prev_delta);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Evaluate the energy impact of using max_spare_cap_cpu. */
|
||||||
|
- if (max_spare_cap_cpu >= 0 && max_spare_cap > prev_spare_cap) {
|
||||||
|
- cur_delta = compute_energy(&eenv, pd, cpus, p,
|
||||||
|
- max_spare_cap_cpu);
|
||||||
|
- /* CPU utilization has changed */
|
||||||
|
- if (cur_delta < base_energy)
|
||||||
|
- goto unlock;
|
||||||
|
- cur_delta -= base_energy;
|
||||||
|
- if (cur_delta < best_delta) {
|
||||||
|
- best_delta = cur_delta;
|
||||||
|
- best_energy_cpu = max_spare_cap_cpu;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- rcu_read_unlock();
|
||||||
|
-
|
||||||
|
- if (best_delta < prev_delta)
|
||||||
|
- target = best_energy_cpu;
|
||||||
|
-
|
||||||
|
- return target;
|
||||||
|
-
|
||||||
|
-unlock:
|
||||||
|
- rcu_read_unlock();
|
||||||
|
-
|
||||||
|
- return target;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* select_task_rq_fair: Select target runqueue for the waking task in domains
|
||||||
|
* that have the relevant SD flag set. In practice, this is SD_BALANCE_WAKE,
|
||||||
|
@@ -7376,14 +7166,6 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
|
||||||
|
lockdep_assert_held(&p->pi_lock);
|
||||||
|
if (wake_flags & WF_TTWU) {
|
||||||
|
record_wakee(p);
|
||||||
|
-
|
||||||
|
- if (sched_energy_enabled()) {
|
||||||
|
- new_cpu = find_energy_efficient_cpu(p, prev_cpu);
|
||||||
|
- if (new_cpu >= 0)
|
||||||
|
- return new_cpu;
|
||||||
|
- new_cpu = prev_cpu;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
want_affine = !wake_wide(p) && cpumask_test_cpu(cpu, p->cpus_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -17,20 +17,301 @@ index 6b3b59cc51d6..2a0072192c3d 100644
|
|||||||
|
|
||||||
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
int sched_thermal_decay_shift;
|
int sched_thermal_decay_shift;
|
||||||
static int __init setup_sched_thermal_decay_shift(char *str)
|
static int __init setup_sched_thermal_decay_shift(char *str)
|
||||||
|
|
||||||
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
|
|
||||||
index 051aaf65c..705df5511 100644
|
|
||||||
--- a/kernel/sched/topology.c
|
|
||||||
+++ b/kernel/sched/topology.c
|
|
||||||
@@ -208,7 +208,7 @@ sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent)
|
|
||||||
|
|
||||||
#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
|
From 5d5b708e3731e135ea7ae168571ad78d883e63e8 Mon Sep 17 00:00:00 2001
|
||||||
DEFINE_STATIC_KEY_FALSE(sched_energy_present);
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
-static unsigned int sysctl_sched_energy_aware = 1;
|
Date: Wed, 1 Feb 2023 10:17:47 +0000
|
||||||
+static unsigned int sysctl_sched_energy_aware = 0;
|
Subject: [PATCH 02/16] XANMOD: fair: Remove all energy efficiency functions
|
||||||
DEFINE_MUTEX(sched_energy_mutex);
|
|
||||||
bool sched_energy_update;
|
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
kernel/sched/fair.c | 224 +-------------------------------------------
|
||||||
|
1 file changed, 3 insertions(+), 221 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 0f8736991427..345cc5e9fa6e 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -19,6 +19,9 @@
|
||||||
|
*
|
||||||
|
* Adaptive scheduling granularity, math enhancements by Peter Zijlstra
|
||||||
|
* Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
|
||||||
|
+ *
|
||||||
|
+ * Remove energy efficiency functions by Alexandre Frade
|
||||||
|
+ * (C) 2021 Alexandre Frade <kernel@xanmod.org>
|
||||||
|
*/
|
||||||
|
#include <linux/energy_model.h>
|
||||||
|
#include <linux/mmap_lock.h>
|
||||||
|
@@ -7327,252 +7327,6 @@ eenv_pd_max_util(struct energy_env *eenv, struct cpumask *pd_cpus,
|
||||||
|
return min(max_util, eenv->cpu_cap);
|
||||||
|
}
|
||||||
|
|
||||||
|
-/*
|
||||||
|
- * compute_energy(): Use the Energy Model to estimate the energy that @pd would
|
||||||
|
- * consume for a given utilization landscape @eenv. When @dst_cpu < 0, the task
|
||||||
|
- * contribution is ignored.
|
||||||
|
- */
|
||||||
|
-static inline unsigned long
|
||||||
|
-compute_energy(struct energy_env *eenv, struct perf_domain *pd,
|
||||||
|
- struct cpumask *pd_cpus, struct task_struct *p, int dst_cpu)
|
||||||
|
-{
|
||||||
|
- unsigned long max_util = eenv_pd_max_util(eenv, pd_cpus, p, dst_cpu);
|
||||||
|
- unsigned long busy_time = eenv->pd_busy_time;
|
||||||
|
-
|
||||||
|
- if (dst_cpu >= 0)
|
||||||
|
- busy_time = min(eenv->pd_cap, busy_time + eenv->task_busy_time);
|
||||||
|
-
|
||||||
|
- return em_cpu_energy(pd->em_pd, max_util, busy_time, eenv->cpu_cap);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-/*
|
||||||
|
- * find_energy_efficient_cpu(): Find most energy-efficient target CPU for the
|
||||||
|
- * waking task. find_energy_efficient_cpu() looks for the CPU with maximum
|
||||||
|
- * spare capacity in each performance domain and uses it as a potential
|
||||||
|
- * candidate to execute the task. Then, it uses the Energy Model to figure
|
||||||
|
- * out which of the CPU candidates is the most energy-efficient.
|
||||||
|
- *
|
||||||
|
- * The rationale for this heuristic is as follows. In a performance domain,
|
||||||
|
- * all the most energy efficient CPU candidates (according to the Energy
|
||||||
|
- * Model) are those for which we'll request a low frequency. When there are
|
||||||
|
- * several CPUs for which the frequency request will be the same, we don't
|
||||||
|
- * have enough data to break the tie between them, because the Energy Model
|
||||||
|
- * only includes active power costs. With this model, if we assume that
|
||||||
|
- * frequency requests follow utilization (e.g. using schedutil), the CPU with
|
||||||
|
- * the maximum spare capacity in a performance domain is guaranteed to be among
|
||||||
|
- * the best candidates of the performance domain.
|
||||||
|
- *
|
||||||
|
- * In practice, it could be preferable from an energy standpoint to pack
|
||||||
|
- * small tasks on a CPU in order to let other CPUs go in deeper idle states,
|
||||||
|
- * but that could also hurt our chances to go cluster idle, and we have no
|
||||||
|
- * ways to tell with the current Energy Model if this is actually a good
|
||||||
|
- * idea or not. So, find_energy_efficient_cpu() basically favors
|
||||||
|
- * cluster-packing, and spreading inside a cluster. That should at least be
|
||||||
|
- * a good thing for latency, and this is consistent with the idea that most
|
||||||
|
- * of the energy savings of EAS come from the asymmetry of the system, and
|
||||||
|
- * not so much from breaking the tie between identical CPUs. That's also the
|
||||||
|
- * reason why EAS is enabled in the topology code only for systems where
|
||||||
|
- * SD_ASYM_CPUCAPACITY is set.
|
||||||
|
- *
|
||||||
|
- * NOTE: Forkees are not accepted in the energy-aware wake-up path because
|
||||||
|
- * they don't have any useful utilization data yet and it's not possible to
|
||||||
|
- * forecast their impact on energy consumption. Consequently, they will be
|
||||||
|
- * placed by find_idlest_cpu() on the least loaded CPU, which might turn out
|
||||||
|
- * to be energy-inefficient in some use-cases. The alternative would be to
|
||||||
|
- * bias new tasks towards specific types of CPUs first, or to try to infer
|
||||||
|
- * their util_avg from the parent task, but those heuristics could hurt
|
||||||
|
- * other use-cases too. So, until someone finds a better way to solve this,
|
||||||
|
- * let's keep things simple by re-using the existing slow path.
|
||||||
|
- */
|
||||||
|
-static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
|
||||||
|
-{
|
||||||
|
- struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
|
||||||
|
- unsigned long prev_delta = ULONG_MAX, best_delta = ULONG_MAX;
|
||||||
|
- unsigned long p_util_min = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MIN) : 0;
|
||||||
|
- unsigned long p_util_max = uclamp_is_used() ? uclamp_eff_value(p, UCLAMP_MAX) : 1024;
|
||||||
|
- struct root_domain *rd = this_rq()->rd;
|
||||||
|
- int cpu, best_energy_cpu, target = -1;
|
||||||
|
- int prev_fits = -1, best_fits = -1;
|
||||||
|
- unsigned long best_thermal_cap = 0;
|
||||||
|
- unsigned long prev_thermal_cap = 0;
|
||||||
|
- struct sched_domain *sd;
|
||||||
|
- struct perf_domain *pd;
|
||||||
|
- struct energy_env eenv;
|
||||||
|
-
|
||||||
|
- rcu_read_lock();
|
||||||
|
- pd = rcu_dereference(rd->pd);
|
||||||
|
- if (!pd || READ_ONCE(rd->overutilized))
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Energy-aware wake-up happens on the lowest sched_domain starting
|
||||||
|
- * from sd_asym_cpucapacity spanning over this_cpu and prev_cpu.
|
||||||
|
- */
|
||||||
|
- sd = rcu_dereference(*this_cpu_ptr(&sd_asym_cpucapacity));
|
||||||
|
- while (sd && !cpumask_test_cpu(prev_cpu, sched_domain_span(sd)))
|
||||||
|
- sd = sd->parent;
|
||||||
|
- if (!sd)
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- target = prev_cpu;
|
||||||
|
-
|
||||||
|
- sync_entity_load_avg(&p->se);
|
||||||
|
- if (!uclamp_task_util(p, p_util_min, p_util_max))
|
||||||
|
- goto unlock;
|
||||||
|
-
|
||||||
|
- eenv_task_busy_time(&eenv, p, prev_cpu);
|
||||||
|
-
|
||||||
|
- for (; pd; pd = pd->next) {
|
||||||
|
- unsigned long util_min = p_util_min, util_max = p_util_max;
|
||||||
|
- unsigned long cpu_cap, cpu_thermal_cap, util;
|
||||||
|
- unsigned long cur_delta, max_spare_cap = 0;
|
||||||
|
- unsigned long rq_util_min, rq_util_max;
|
||||||
|
- unsigned long prev_spare_cap = 0;
|
||||||
|
- int max_spare_cap_cpu = -1;
|
||||||
|
- unsigned long base_energy;
|
||||||
|
- int fits, max_fits = -1;
|
||||||
|
-
|
||||||
|
- cpumask_and(cpus, perf_domain_span(pd), cpu_online_mask);
|
||||||
|
-
|
||||||
|
- if (cpumask_empty(cpus))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- /* Account thermal pressure for the energy estimation */
|
||||||
|
- cpu = cpumask_first(cpus);
|
||||||
|
- cpu_thermal_cap = arch_scale_cpu_capacity(cpu);
|
||||||
|
- cpu_thermal_cap -= arch_scale_thermal_pressure(cpu);
|
||||||
|
-
|
||||||
|
- eenv.cpu_cap = cpu_thermal_cap;
|
||||||
|
- eenv.pd_cap = 0;
|
||||||
|
-
|
||||||
|
- for_each_cpu(cpu, cpus) {
|
||||||
|
- struct rq *rq = cpu_rq(cpu);
|
||||||
|
-
|
||||||
|
- eenv.pd_cap += cpu_thermal_cap;
|
||||||
|
-
|
||||||
|
- if (!cpumask_test_cpu(cpu, sched_domain_span(sd)))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- if (!cpumask_test_cpu(cpu, p->cpus_ptr))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- util = cpu_util_next(cpu, p, cpu);
|
||||||
|
- cpu_cap = capacity_of(cpu);
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Skip CPUs that cannot satisfy the capacity request.
|
||||||
|
- * IOW, placing the task there would make the CPU
|
||||||
|
- * overutilized. Take uclamp into account to see how
|
||||||
|
- * much capacity we can get out of the CPU; this is
|
||||||
|
- * aligned with sched_cpu_util().
|
||||||
|
- */
|
||||||
|
- if (uclamp_is_used() && !uclamp_rq_is_idle(rq)) {
|
||||||
|
- /*
|
||||||
|
- * Open code uclamp_rq_util_with() except for
|
||||||
|
- * the clamp() part. Ie: apply max aggregation
|
||||||
|
- * only. util_fits_cpu() logic requires to
|
||||||
|
- * operate on non clamped util but must use the
|
||||||
|
- * max-aggregated uclamp_{min, max}.
|
||||||
|
- */
|
||||||
|
- rq_util_min = uclamp_rq_get(rq, UCLAMP_MIN);
|
||||||
|
- rq_util_max = uclamp_rq_get(rq, UCLAMP_MAX);
|
||||||
|
-
|
||||||
|
- util_min = max(rq_util_min, p_util_min);
|
||||||
|
- util_max = max(rq_util_max, p_util_max);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- fits = util_fits_cpu(util, util_min, util_max, cpu);
|
||||||
|
- if (!fits)
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- lsub_positive(&cpu_cap, util);
|
||||||
|
-
|
||||||
|
- if (cpu == prev_cpu) {
|
||||||
|
- /* Always use prev_cpu as a candidate. */
|
||||||
|
- prev_spare_cap = cpu_cap;
|
||||||
|
- prev_fits = fits;
|
||||||
|
- } else if ((fits > max_fits) ||
|
||||||
|
- ((fits == max_fits) && (cpu_cap > max_spare_cap))) {
|
||||||
|
- /*
|
||||||
|
- * Find the CPU with the maximum spare capacity
|
||||||
|
- * among the remaining CPUs in the performance
|
||||||
|
- * domain.
|
||||||
|
- */
|
||||||
|
- max_spare_cap = cpu_cap;
|
||||||
|
- max_spare_cap_cpu = cpu;
|
||||||
|
- max_fits = fits;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (max_spare_cap_cpu < 0 && prev_spare_cap == 0)
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- eenv_pd_busy_time(&eenv, cpus, p);
|
||||||
|
- /* Compute the 'base' energy of the pd, without @p */
|
||||||
|
- base_energy = compute_energy(&eenv, pd, cpus, p, -1);
|
||||||
|
-
|
||||||
|
- /* Evaluate the energy impact of using prev_cpu. */
|
||||||
|
- if (prev_spare_cap > 0) {
|
||||||
|
- prev_delta = compute_energy(&eenv, pd, cpus, p,
|
||||||
|
- prev_cpu);
|
||||||
|
- /* CPU utilization has changed */
|
||||||
|
- if (prev_delta < base_energy)
|
||||||
|
- goto unlock;
|
||||||
|
- prev_delta -= base_energy;
|
||||||
|
- prev_thermal_cap = cpu_thermal_cap;
|
||||||
|
- best_delta = min(best_delta, prev_delta);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Evaluate the energy impact of using max_spare_cap_cpu. */
|
||||||
|
- if (max_spare_cap_cpu >= 0 && max_spare_cap > prev_spare_cap) {
|
||||||
|
- /* Current best energy cpu fits better */
|
||||||
|
- if (max_fits < best_fits)
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Both don't fit performance hint (i.e. uclamp_min)
|
||||||
|
- * but best energy cpu has better capacity.
|
||||||
|
- */
|
||||||
|
- if ((max_fits < 0) &&
|
||||||
|
- (cpu_thermal_cap <= best_thermal_cap))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- cur_delta = compute_energy(&eenv, pd, cpus, p,
|
||||||
|
- max_spare_cap_cpu);
|
||||||
|
- /* CPU utilization has changed */
|
||||||
|
- if (cur_delta < base_energy)
|
||||||
|
- goto unlock;
|
||||||
|
- cur_delta -= base_energy;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Both fit for the task but best energy cpu has lower
|
||||||
|
- * energy impact.
|
||||||
|
- */
|
||||||
|
- if ((max_fits > 0) && (best_fits > 0) &&
|
||||||
|
- (cur_delta >= best_delta))
|
||||||
|
- continue;
|
||||||
|
-
|
||||||
|
- best_delta = cur_delta;
|
||||||
|
- best_energy_cpu = max_spare_cap_cpu;
|
||||||
|
- best_fits = max_fits;
|
||||||
|
- best_thermal_cap = cpu_thermal_cap;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- rcu_read_unlock();
|
||||||
|
-
|
||||||
|
- if ((best_fits > prev_fits) ||
|
||||||
|
- ((best_fits > 0) && (best_delta < prev_delta)) ||
|
||||||
|
- ((best_fits < 0) && (best_thermal_cap > prev_thermal_cap)))
|
||||||
|
- target = best_energy_cpu;
|
||||||
|
-
|
||||||
|
- return target;
|
||||||
|
-
|
||||||
|
-unlock:
|
||||||
|
- rcu_read_unlock();
|
||||||
|
-
|
||||||
|
- return target;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* select_task_rq_fair: Select target runqueue for the waking task in domains
|
||||||
|
* that have the relevant SD flag set. In practice, this is SD_BALANCE_WAKE,
|
||||||
|
@@ -7376,14 +7166,6 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
|
||||||
|
lockdep_assert_held(&p->pi_lock);
|
||||||
|
if (wake_flags & WF_TTWU) {
|
||||||
|
record_wakee(p);
|
||||||
|
-
|
||||||
|
- if (sched_energy_enabled()) {
|
||||||
|
- new_cpu = find_energy_efficient_cpu(p, prev_cpu);
|
||||||
|
- if (new_cpu >= 0)
|
||||||
|
- return new_cpu;
|
||||||
|
- new_cpu = prev_cpu;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
want_affine = !wake_wide(p) && cpumask_test_cpu(cpu, p->cpus_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
@@ -1,90 +0,0 @@
|
|||||||
From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tk-Glitch <ti3nou@gmail.com>
|
|
||||||
Date: Wed, 4 Jul 2018 04:30:08 +0200
|
|
||||||
Subject: glitched - PDS
|
|
||||||
|
|
||||||
diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
|
|
||||||
index 2a202a846757..1d9c7ed79b11 100644
|
|
||||||
--- a/kernel/Kconfig.hz
|
|
||||||
+++ b/kernel/Kconfig.hz
|
|
||||||
@@ -4,7 +4,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Timer frequency"
|
|
||||||
- default HZ_250
|
|
||||||
+ default HZ_500
|
|
||||||
help
|
|
||||||
Allows the configuration of the timer frequency. It is customary
|
|
||||||
to have the timer interrupt run at 1000 Hz but 100 Hz may be more
|
|
||||||
@@ -39,6 +39,13 @@ choice
|
|
||||||
on SMP and NUMA systems and exactly dividing by both PAL and
|
|
||||||
NTSC frame rates for video and multimedia work.
|
|
||||||
|
|
||||||
+ config HZ_500
|
|
||||||
+ bool "500 HZ"
|
|
||||||
+ help
|
|
||||||
+ 500 Hz is a balanced timer frequency. Provides fast interactivity
|
|
||||||
+ on desktops with great smoothness without increasing CPU power
|
|
||||||
+ consumption and sacrificing the battery life on laptops.
|
|
||||||
+
|
|
||||||
config HZ_1000
|
|
||||||
bool "1000 HZ"
|
|
||||||
help
|
|
||||||
@@ -52,6 +59,7 @@ config HZ
|
|
||||||
default 100 if HZ_100
|
|
||||||
default 250 if HZ_250
|
|
||||||
default 300 if HZ_300
|
|
||||||
+ default 500 if HZ_500
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
|
|
||||||
config SCHED_HRTICK
|
|
||||||
|
|
||||||
diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
|
|
||||||
index 2a202a846757..1d9c7ed79b11 100644
|
|
||||||
--- a/kernel/Kconfig.hz
|
|
||||||
+++ b/kernel/Kconfig.hz
|
|
||||||
@@ -4,7 +4,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Timer frequency"
|
|
||||||
- default HZ_500
|
|
||||||
+ default HZ_750
|
|
||||||
help
|
|
||||||
Allows the configuration of the timer frequency. It is customary
|
|
||||||
to have the timer interrupt run at 1000 Hz but 100 Hz may be more
|
|
||||||
@@ -46,6 +46,13 @@ choice
|
|
||||||
on desktops with great smoothness without increasing CPU power
|
|
||||||
consumption and sacrificing the battery life on laptops.
|
|
||||||
|
|
||||||
+ config HZ_750
|
|
||||||
+ bool "750 HZ"
|
|
||||||
+ help
|
|
||||||
+ 750 Hz is a good timer frequency for desktops. Provides fast
|
|
||||||
+ interactivity with great smoothness without sacrificing too
|
|
||||||
+ much throughput.
|
|
||||||
+
|
|
||||||
config HZ_1000
|
|
||||||
bool "1000 HZ"
|
|
||||||
help
|
|
||||||
@@ -60,6 +67,7 @@ config HZ
|
|
||||||
default 250 if HZ_250
|
|
||||||
default 300 if HZ_300
|
|
||||||
default 500 if HZ_500
|
|
||||||
+ default 750 if HZ_750
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
|
|
||||||
config SCHED_HRTICK
|
|
||||||
|
|
||||||
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
|
||||||
index 9270a4370d54..30d01e647417 100644
|
|
||||||
--- a/mm/vmscan.c
|
|
||||||
+++ b/mm/vmscan.c
|
|
||||||
@@ -169,7 +169,7 @@
|
|
||||||
/*
|
|
||||||
* From 0 .. 200. Higher means more swappy.
|
|
||||||
*/
|
|
||||||
-int vm_swappiness = 60;
|
|
||||||
+int vm_swappiness = 20;
|
|
||||||
|
|
||||||
static void set_task_reclaim_state(struct task_struct *task,
|
|
||||||
struct reclaim_state *rs)
|
|
@@ -182,11 +182,11 @@ index 4700d24e5d55..8f7a3d7fd9c1 100644
|
|||||||
/*
|
/*
|
||||||
* Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset.
|
* Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset.
|
||||||
* The device will throw a Link Down error on AER-capable systems and
|
* The device will throw a Link Down error on AER-capable systems and
|
||||||
@@ -5102,6 +5102,7 @@
|
@@ -4513,6 +4613,7 @@ static const struct pci_dev_acs_enabled {
|
||||||
|
{ PCI_VENDOR_ID_ZHAOXIN, 0x9083, pci_quirk_mf_endpoint_acs },
|
||||||
|
/* Zhaoxin Root/Downstream Ports */
|
||||||
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
||||||
/* Wangxun nics */
|
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||||
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
|
||||||
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1,90 +0,0 @@
|
|||||||
From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tk-Glitch <ti3nou@gmail.com>
|
|
||||||
Date: Wed, 4 Jul 2018 04:30:08 +0200
|
|
||||||
Subject: glitched - BMQ
|
|
||||||
|
|
||||||
diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
|
|
||||||
index 2a202a846757..1d9c7ed79b11 100644
|
|
||||||
--- a/kernel/Kconfig.hz
|
|
||||||
+++ b/kernel/Kconfig.hz
|
|
||||||
@@ -4,7 +4,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Timer frequency"
|
|
||||||
- default HZ_250
|
|
||||||
+ default HZ_500
|
|
||||||
help
|
|
||||||
Allows the configuration of the timer frequency. It is customary
|
|
||||||
to have the timer interrupt run at 1000 Hz but 100 Hz may be more
|
|
||||||
@@ -39,6 +39,13 @@ choice
|
|
||||||
on SMP and NUMA systems and exactly dividing by both PAL and
|
|
||||||
NTSC frame rates for video and multimedia work.
|
|
||||||
|
|
||||||
+ config HZ_500
|
|
||||||
+ bool "500 HZ"
|
|
||||||
+ help
|
|
||||||
+ 500 Hz is a balanced timer frequency. Provides fast interactivity
|
|
||||||
+ on desktops with great smoothness without increasing CPU power
|
|
||||||
+ consumption and sacrificing the battery life on laptops.
|
|
||||||
+
|
|
||||||
config HZ_1000
|
|
||||||
bool "1000 HZ"
|
|
||||||
help
|
|
||||||
@@ -52,6 +59,7 @@ config HZ
|
|
||||||
default 100 if HZ_100
|
|
||||||
default 250 if HZ_250
|
|
||||||
default 300 if HZ_300
|
|
||||||
+ default 500 if HZ_500
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
|
|
||||||
config SCHED_HRTICK
|
|
||||||
|
|
||||||
diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
|
|
||||||
index 2a202a846757..1d9c7ed79b11 100644
|
|
||||||
--- a/kernel/Kconfig.hz
|
|
||||||
+++ b/kernel/Kconfig.hz
|
|
||||||
@@ -4,7 +4,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Timer frequency"
|
|
||||||
- default HZ_500
|
|
||||||
+ default HZ_750
|
|
||||||
help
|
|
||||||
Allows the configuration of the timer frequency. It is customary
|
|
||||||
to have the timer interrupt run at 1000 Hz but 100 Hz may be more
|
|
||||||
@@ -46,6 +46,13 @@ choice
|
|
||||||
on desktops with great smoothness without increasing CPU power
|
|
||||||
consumption and sacrificing the battery life on laptops.
|
|
||||||
|
|
||||||
+ config HZ_750
|
|
||||||
+ bool "750 HZ"
|
|
||||||
+ help
|
|
||||||
+ 750 Hz is a good timer frequency for desktops. Provides fast
|
|
||||||
+ interactivity with great smoothness without sacrificing too
|
|
||||||
+ much throughput.
|
|
||||||
+
|
|
||||||
config HZ_1000
|
|
||||||
bool "1000 HZ"
|
|
||||||
help
|
|
||||||
@@ -60,6 +67,7 @@ config HZ
|
|
||||||
default 250 if HZ_250
|
|
||||||
default 300 if HZ_300
|
|
||||||
default 500 if HZ_500
|
|
||||||
+ default 750 if HZ_750
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
|
|
||||||
config SCHED_HRTICK
|
|
||||||
|
|
||||||
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
|
||||||
index 9270a4370d54..30d01e647417 100644
|
|
||||||
--- a/mm/vmscan.c
|
|
||||||
+++ b/mm/vmscan.c
|
|
||||||
@@ -169,7 +169,7 @@
|
|
||||||
/*
|
|
||||||
* From 0 .. 200. Higher means more swappy.
|
|
||||||
*/
|
|
||||||
-int vm_swappiness = 60;
|
|
||||||
+int vm_swappiness = 20;
|
|
||||||
|
|
||||||
static void set_task_reclaim_state(struct task_struct *task,
|
|
||||||
struct reclaim_state *rs)
|
|
@@ -1,18 +0,0 @@
|
|||||||
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
|
|
||||||
index 6b423eebfd5d..61e3271675d6 100644
|
|
||||||
--- a/drivers/cpufreq/cpufreq_ondemand.c
|
|
||||||
+++ b/drivers/cpufreq/cpufreq_ondemand.c
|
|
||||||
@@ -21,10 +21,10 @@
|
|
||||||
#include "cpufreq_ondemand.h"
|
|
||||||
|
|
||||||
/* On-demand governor macros */
|
|
||||||
-#define DEF_FREQUENCY_UP_THRESHOLD (80)
|
|
||||||
-#define DEF_SAMPLING_DOWN_FACTOR (1)
|
|
||||||
+#define DEF_FREQUENCY_UP_THRESHOLD (55)
|
|
||||||
+#define DEF_SAMPLING_DOWN_FACTOR (5)
|
|
||||||
#define MAX_SAMPLING_DOWN_FACTOR (100000)
|
|
||||||
-#define MICRO_FREQUENCY_UP_THRESHOLD (95)
|
|
||||||
+#define MICRO_FREQUENCY_UP_THRESHOLD (63)
|
|
||||||
#define MICRO_FREQUENCY_MIN_SAMPLE_RATE (10000)
|
|
||||||
#define MIN_FREQUENCY_UP_THRESHOLD (1)
|
|
||||||
#define MAX_FREQUENCY_UP_THRESHOLD (100)
|
|
@@ -64,41 +64,3 @@ index 2c7171e0b0010..85de313ddec29 100644
|
|||||||
select CPU_FREQ_GOV_PERFORMANCE
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
help
|
help
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
|
|
||||||
index 08eced097bd8..2eb2c66843a8 100644
|
|
||||||
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
|
|
||||||
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
|
|
||||||
@@ -1276,7 +1276,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|
||||||
r = drm_sched_job_add_dependency(&leader->base, fence);
|
|
||||||
if (r) {
|
|
||||||
dma_fence_put(fence);
|
|
||||||
- goto error_cleanup;
|
|
||||||
+ return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1303,7 +1303,8 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|
||||||
}
|
|
||||||
if (r) {
|
|
||||||
r = -EAGAIN;
|
|
||||||
- goto error_unlock;
|
|
||||||
+ mutex_unlock(&p->adev->notifier_lock);
|
|
||||||
+ return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
p->fence = dma_fence_get(&leader->base.s_fence->finished);
|
|
||||||
@@ -1350,14 +1351,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|
||||||
mutex_unlock(&p->adev->notifier_lock);
|
|
||||||
mutex_unlock(&p->bo_list->bo_list_mutex);
|
|
||||||
return 0;
|
|
||||||
-
|
|
||||||
-error_unlock:
|
|
||||||
- mutex_unlock(&p->adev->notifier_lock);
|
|
||||||
-
|
|
||||||
-error_cleanup:
|
|
||||||
- for (i = 0; i < p->gang_size; ++i)
|
|
||||||
- drm_sched_job_cleanup(&p->jobs[i]->base);
|
|
||||||
- return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cleanup the parser structure */
|
|
||||||
|
@@ -5,7 +5,7 @@ index 70392fd2f..34f98648f 100755
|
|||||||
@@ -25,7 +25,7 @@ fi
|
@@ -25,7 +25,7 @@ fi
|
||||||
|
|
||||||
+PROVIDES_DRM=""
|
+PROVIDES_DRM=""
|
||||||
if grep -q CONFIG_DRM=y include/config/auto.conf; then
|
if grep -q CONFIG_DRM=y .config; then
|
||||||
- PROVIDES=kernel-drm
|
- PROVIDES=kernel-drm
|
||||||
+ PROVIDES_DRM="Provides: kernel-drm = %{version}"
|
+ PROVIDES_DRM="Provides: kernel-drm = %{version}"
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user