Compare commits
99 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6212cc9be5 | ||
|
1454d6c705 | ||
|
d9da42be99 | ||
|
20aea5a14a | ||
|
18f10e2989 | ||
|
d1caaffa2e | ||
|
097c2ed1b5 | ||
|
cc5e53f109 | ||
|
37369b74eb | ||
|
bf02edcc5e | ||
|
a4c0ab6b9f | ||
|
6aab0087df | ||
|
0bce3a438d | ||
|
b5e9b0a2d7 | ||
|
cf3ead6032 | ||
|
52fec34536 | ||
|
ad587009c1 | ||
|
654cad0486 | ||
|
b4dc19e393 | ||
|
ed68908438 | ||
|
a83739ccdb | ||
|
f8438aab4e | ||
|
3c22a1df74 | ||
|
f12ae96992 | ||
|
995e4b862e | ||
|
4408978fba | ||
|
d3290ee4f8 | ||
|
3e8afbe79f | ||
|
8a56e832e8 | ||
|
25c2172e13 | ||
|
d18c0870c6 | ||
|
432e560b92 | ||
|
4160cdc52b | ||
|
fb5ad72c94 | ||
|
65dc6bda2f | ||
|
44e228cc0f | ||
|
a0b63c0a3f | ||
|
231ecec0df | ||
|
de9e9855c2 | ||
|
a46f270646 | ||
|
5135834002 | ||
|
ff082aebba | ||
|
8ecdc882c3 | ||
|
e0c74e5e15 | ||
|
97c1bf4ce2 | ||
|
f63f1caaf4 | ||
|
1a69f04e6e | ||
|
ca58ae7353 | ||
|
8b578cde89 | ||
|
4a4455d8bb | ||
|
98657d2f4f | ||
|
e543974c90 | ||
|
2114c55a35 | ||
|
7b4bf31ffb | ||
|
e4bcfc88c8 | ||
|
e96e2b32b4 | ||
|
322a6ecf1f | ||
|
884be6016c | ||
|
40565b6947 | ||
|
dd2aef31ca | ||
|
f03e9cf1ae | ||
|
f10d9c2102 | ||
|
c0064e06be | ||
|
1ac2ea0fd2 | ||
|
eff2fa5684 | ||
|
ea3bfe9603 | ||
|
ca75dd59c3 | ||
|
ecd9931b34 | ||
|
69aa332c06 | ||
|
7287b74226 | ||
|
162820958b | ||
|
64f8c32eae | ||
|
992735baee | ||
|
92281e4045 | ||
|
59bb904128 | ||
|
9d26aea883 | ||
|
84f28d6e76 | ||
|
9903de97f9 | ||
|
ad326af2b2 | ||
|
544dffba6b | ||
|
53cf25acf9 | ||
|
9815727037 | ||
|
61b9172388 | ||
|
eb0fda3198 | ||
|
0c187fac4b | ||
|
a083c4abf2 | ||
|
93c0139a1c | ||
|
0beab34a82 | ||
|
61f911f5a5 | ||
|
5672eaa929 | ||
|
c0f8f6d68e | ||
|
1afda7c108 | ||
|
e6c1edf943 | ||
|
ddc5ffd463 | ||
|
2786ab2916 | ||
|
a586812578 | ||
|
77078d8340 | ||
|
f2561e8f52 | ||
|
ac13936ea1 |
90
.github/workflows/build-current-kernel-arch.yml
vendored
90
.github/workflows/build-current-kernel-arch.yml
vendored
@@ -6,10 +6,13 @@ on:
|
|||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
_anbox: "true"
|
_waydroid: "true"
|
||||||
_processor_opt: "generic"
|
_processor_opt: "generic"
|
||||||
PKGDEST: "/tmp/linux-tkg"
|
PKGDEST: "/tmp/linux-tkg"
|
||||||
_debugdisable: "true"
|
_debugdisable: "true"
|
||||||
|
_noccache: "true"
|
||||||
|
_STRIP: "true"
|
||||||
|
_kernel_on_diet: "true"
|
||||||
_kernel_work_folder: "/tmp"
|
_kernel_work_folder: "/tmp"
|
||||||
_kernel_source_folder: "/tmp"
|
_kernel_source_folder: "/tmp"
|
||||||
# _modprobeddb: "true"
|
# _modprobeddb: "true"
|
||||||
@@ -46,65 +49,34 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
./.github/get_latest_kver.sh
|
./.github/get_latest_kver.sh
|
||||||
latest_kernel="$(cat .github/latest-kernel)"
|
latest_kernel="$(cat .github/latest-kernel)"
|
||||||
echo "::set-output name=latest_kernel::$latest_kernel"
|
echo "latest_kernel=$latest_kernel" >> $GITHUB_OUTPUT
|
||||||
new_kernel=0
|
new_kernel=0
|
||||||
[[ "$latest_kernel" != "$latest_release" ]] || new_kernel=$?
|
[[ "$latest_kernel" != "$latest_release" ]] || new_kernel=$?
|
||||||
echo "::set-output name=new_kernel::$new_kernel"
|
echo "new_kernel=$new_kernel" >> $GITHUB_OUTPUT
|
||||||
env:
|
env:
|
||||||
latest_release: ${{ steps.latest_release.outputs.release }}
|
latest_release: ${{ steps.latest_release.outputs.release }}
|
||||||
|
|
||||||
build-pds:
|
#cleanup-ubuntu:
|
||||||
env:
|
|
||||||
_cpusched: "pds"
|
|
||||||
|
|
||||||
# The following code is repeated in each build job
|
# runs-on: ubuntu-latest
|
||||||
# Can be factorized once YAML anchors get implemented in Github
|
# needs: [check-for-newer-kernel]
|
||||||
# See https://github.com/actions/runner/issues/1182 for status
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
# steps:
|
||||||
container: archlinux:latest
|
# - name: Free Disk Space (Ubuntu)
|
||||||
|
# uses: hirnidrin/free-disk-space@main
|
||||||
|
# with:
|
||||||
|
# this might remove tools that are actually needed,
|
||||||
|
# if set to "true" but frees about 6 GB
|
||||||
|
# tool-cache: false
|
||||||
|
|
||||||
needs: ["check-for-newer-kernel"]
|
# all of these default to true, but feel free to set to
|
||||||
|
# "false" if necessary for your workflow
|
||||||
# the == 0 test is for "true" because it tests the exit code of a bash test
|
# android: true
|
||||||
if: |
|
# dotnet: true
|
||||||
github.ref == 'refs/heads/master' &&
|
# haskell: true
|
||||||
needs.check-for-newer-kernel.outputs.new_kernel == '0'
|
# large-packages: true
|
||||||
|
# docker-images: false
|
||||||
steps:
|
# swap-storage: true
|
||||||
# We need to install git so the checkout is done with it
|
|
||||||
- name: Install git
|
|
||||||
run: pacman -Syu --noconfirm git
|
|
||||||
|
|
||||||
- name: Checkount linux-tkg
|
|
||||||
uses: actions/checkout@v3.0.2
|
|
||||||
|
|
||||||
# 1. Install deps needed for building and sudo
|
|
||||||
# 2. create a user "user" and give it passwordless sudo
|
|
||||||
# and necessary permissions
|
|
||||||
# because makepkg absolutely refuses to run as root
|
|
||||||
- name: Prepare for makepkg
|
|
||||||
run: |
|
|
||||||
pacman -Syu --noconfirm base-devel sudo
|
|
||||||
useradd user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
||||||
chown user -R ..
|
|
||||||
chown user -R /tmp
|
|
||||||
|
|
||||||
# - name: "[debug] make dummy modprobed-db file for faster ci"
|
|
||||||
# run: |
|
|
||||||
# touch "${_modprobeddb_db_path}"
|
|
||||||
# echo "${_modprobeddb_db_path}"
|
|
||||||
|
|
||||||
- name: Compile Kernel
|
|
||||||
run: su user -c "yes '' | makepkg --noconfirm -s"
|
|
||||||
# run: |
|
|
||||||
# mkdir -p "$PKGDEST"
|
|
||||||
# echo "test" > "$PKGDEST"/linux-$_cpusched.pkg.tar.zst
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: kernel-packages-${{ env._cpusched }}
|
|
||||||
path: ${{ env.PKGDEST }}/linux*.pkg.tar.zst
|
|
||||||
|
|
||||||
build-cfs:
|
build-cfs:
|
||||||
env:
|
env:
|
||||||
@@ -113,7 +85,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: archlinux:latest
|
container: archlinux:latest
|
||||||
|
|
||||||
needs: ["check-for-newer-kernel"]
|
needs: [check-for-newer-kernel]
|
||||||
if: |
|
if: |
|
||||||
github.ref == 'refs/heads/master' &&
|
github.ref == 'refs/heads/master' &&
|
||||||
needs.check-for-newer-kernel.outputs.new_kernel == '0'
|
needs.check-for-newer-kernel.outputs.new_kernel == '0'
|
||||||
@@ -136,6 +108,7 @@ jobs:
|
|||||||
useradd user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
useradd user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
chown user -R ..
|
chown user -R ..
|
||||||
chown user -R /tmp
|
chown user -R /tmp
|
||||||
|
echo -e 'CONFIG_FAT_FS=m\nCONFIG_MSDOS_FS=m\nCONFIG_VFAT_FS=m\nCONFIG_FAT_DEFAULT_CODEPAGE=437\nCONFIG_FAT_DEFAULT_IOCHARSET="ascii"\nCONFIG_FAT_DEFAULT_UTF8=y\nCONFIG_EXFAT_FS=m\nCONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"\n# CONFIG_NTFS_FS is not set\nCONFIG_NTFS3_FS=m\n# CONFIG_NTFS3_64BIT_CLUSTER is not set\nCONFIG_NTFS3_LZX_XPRESS=y\nCONFIG_NTFS3_FS_POSIX_ACL=y' > FS_modprobed-db.myfrag
|
||||||
|
|
||||||
# - name: "[debug] make dummy modprobed-db file for faster ci"
|
# - name: "[debug] make dummy modprobed-db file for faster ci"
|
||||||
# run: |
|
# run: |
|
||||||
@@ -153,14 +126,14 @@ jobs:
|
|||||||
name: kernel-packages-${{ env._cpusched }}
|
name: kernel-packages-${{ env._cpusched }}
|
||||||
path: ${{ env.PKGDEST }}/linux*.pkg.tar.zst
|
path: ${{ env.PKGDEST }}/linux*.pkg.tar.zst
|
||||||
|
|
||||||
build-bmq:
|
build-bore-eevdf:
|
||||||
env:
|
env:
|
||||||
_cpusched: "bmq"
|
_cpusched: "bore-eevdf"
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: archlinux:latest
|
container: archlinux:latest
|
||||||
|
|
||||||
needs: ["check-for-newer-kernel"]
|
needs: [check-for-newer-kernel]
|
||||||
if: |
|
if: |
|
||||||
github.ref == 'refs/heads/master' &&
|
github.ref == 'refs/heads/master' &&
|
||||||
needs.check-for-newer-kernel.outputs.new_kernel == '0'
|
needs.check-for-newer-kernel.outputs.new_kernel == '0'
|
||||||
@@ -183,6 +156,7 @@ jobs:
|
|||||||
useradd user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
useradd user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
chown user -R ..
|
chown user -R ..
|
||||||
chown user -R /tmp
|
chown user -R /tmp
|
||||||
|
echo -e 'CONFIG_FAT_FS=m\nCONFIG_MSDOS_FS=m\nCONFIG_VFAT_FS=m\nCONFIG_FAT_DEFAULT_CODEPAGE=437\nCONFIG_FAT_DEFAULT_IOCHARSET="ascii"\nCONFIG_FAT_DEFAULT_UTF8=y\nCONFIG_EXFAT_FS=m\nCONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"\n# CONFIG_NTFS_FS is not set\nCONFIG_NTFS3_FS=m\n# CONFIG_NTFS3_64BIT_CLUSTER is not set\nCONFIG_NTFS3_LZX_XPRESS=y\nCONFIG_NTFS3_FS_POSIX_ACL=y' > FS_modprobed-db.myfrag
|
||||||
|
|
||||||
# - name: "[debug] make dummy modprobed-db file for faster ci"
|
# - name: "[debug] make dummy modprobed-db file for faster ci"
|
||||||
# run: |
|
# run: |
|
||||||
@@ -204,7 +178,7 @@ jobs:
|
|||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
needs: [check-for-newer-kernel, "build-pds", "build-cfs", "build-bmq"]
|
needs: [check-for-newer-kernel, "build-cfs", "build-bore-eevdf"]
|
||||||
steps:
|
steps:
|
||||||
- name: Download release artifacts
|
- name: Download release artifacts
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
@@ -217,6 +191,6 @@ jobs:
|
|||||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
automatic_release_tag: ${{ needs.check-for-newer-kernel.outputs.latest_kernel }}
|
automatic_release_tag: ${{ needs.check-for-newer-kernel.outputs.latest_kernel }}
|
||||||
prerelease: false
|
prerelease: false
|
||||||
title: "${{ needs.check-for-newer-kernel.outputs.latest_kernel }}"
|
title: "[experimental] ${{ needs.check-for-newer-kernel.outputs.latest_kernel }}"
|
||||||
files: |
|
files: |
|
||||||
${{ env.PKGDEST }}/kernel-packages-*/*
|
${{ env.PKGDEST }}/kernel-packages-*/*
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -24,3 +24,6 @@ logs/*
|
|||||||
kernel_updates
|
kernel_updates
|
||||||
gnupg/
|
gnupg/
|
||||||
*sha256sum*
|
*sha256sum*
|
||||||
|
current_env
|
||||||
|
linux-kernel.git/
|
||||||
|
linux-src-git/
|
||||||
|
19
PKGBUILD
19
PKGBUILD
@@ -123,7 +123,20 @@ build() {
|
|||||||
CFLAGS+=" ${_compileropt}"
|
CFLAGS+=" ${_compileropt}"
|
||||||
|
|
||||||
# build!
|
# build!
|
||||||
_runtime=$( time ( schedtool -B -n 1 -e ionice -n 1 make ${_force_all_threads} ${llvm_opt} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 ) || _runtime=$( time ( make ${_force_all_threads} ${llvm_opt} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 )
|
if pacman -Qq schedtool &> /dev/null; then
|
||||||
|
msg2 "Using schedtool"
|
||||||
|
_schedtool="command schedtool -B -n 1"
|
||||||
|
_ionice="command ionice -n 1"
|
||||||
|
fi
|
||||||
|
_runtime=$(
|
||||||
|
if [ -n "$_schedtool" ]; then
|
||||||
|
_pid="$(exec bash -c 'echo "$PPID"')"
|
||||||
|
$_schedtool "$_pid" ||:
|
||||||
|
$_ionice -p "$_pid" ||:
|
||||||
|
fi
|
||||||
|
time ( make ${_force_all_threads} ${llvm_opt} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3
|
||||||
|
return $?
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
hackbase() {
|
hackbase() {
|
||||||
@@ -159,11 +172,11 @@ hackbase() {
|
|||||||
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
||||||
|
|
||||||
msg2 "Installing modules..."
|
msg2 "Installing modules..."
|
||||||
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
|
ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
|
||||||
DEPMOD=/doesnt/exist modules_install # Suppress depmod
|
DEPMOD=/doesnt/exist modules_install # Suppress depmod
|
||||||
|
|
||||||
# remove build and source links
|
# remove build and source links
|
||||||
rm "$modulesdir"/{source,build}
|
rm -f "$modulesdir"/{source,build}
|
||||||
|
|
||||||
# install cleanup pacman hook and script
|
# install cleanup pacman hook and script
|
||||||
sed -e "s|cleanup|${pkgbase}-cleanup|g" "${srcdir}"/90-cleanup.hook |
|
sed -e "s|cleanup|${pkgbase}-cleanup|g" "${srcdir}"/90-cleanup.hook |
|
||||||
|
38
README.md
38
README.md
@@ -1,6 +1,6 @@
|
|||||||
## linux-tkg
|
## linux-tkg
|
||||||
|
|
||||||
This repository provides scripts to automatically download, patch and compile the Linux Kernel from [the official Linux git repository](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git), with a selection of patches aiming for better desktop/gaming experience. The provided patches can be enabled/disabled by editing the `customization.cfg` file and/or by following the interactive install script. You can also use your own patches (more information in `customization.cfg` file).
|
This repository provides scripts to automatically download, patch and compile the Linux Kernel from [the official Linux git repository](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git), with a selection of patches aiming for better desktop/gaming experience. The provided patches can be enabled/disabled by editing the `customization.cfg` file and/or by following the interactive install script. You can use an external config file (default is `$HOME/.config/frogminer/linux-tkg.cfg`, tweakable with the `_EXT_CONFIG_PATH` variable in `customization.cfg`). You can also use your own patches (more information in `customization.cfg` file).
|
||||||
|
|
||||||
### Important information
|
### Important information
|
||||||
|
|
||||||
@@ -43,46 +43,14 @@ The `customization.cfg` file offers many toggles for extra tweaks:
|
|||||||
- Using [Modprobed-db](https://github.com/graysky2/modprobed-db)'s database can reduce the compilation time and produce a smaller kernel which will only contain the modules listed in it. **NOT recommended**
|
- Using [Modprobed-db](https://github.com/graysky2/modprobed-db)'s database can reduce the compilation time and produce a smaller kernel which will only contain the modules listed in it. **NOT recommended**
|
||||||
- **Warning**: make sure to read [thoroughly about it first](https://wiki.archlinux.org/index.php/Modprobed-db) since it comes with caveats that can lead to an unbootable kernel.
|
- **Warning**: make sure to read [thoroughly about it first](https://wiki.archlinux.org/index.php/Modprobed-db) since it comes with caveats that can lead to an unbootable kernel.
|
||||||
- "Zenify" patchset using core blk, mm and scheduler tweaks from Zen
|
- "Zenify" patchset using core blk, mm and scheduler tweaks from Zen
|
||||||
- [Anbox](https://wiki.archlinux.org/title/Anbox) support (See [Anbox usage](https://github.com/Frogging-Family/linux-tkg#anbox-usage))
|
|
||||||
- `ZFS` FPU symbols (<5.9)
|
- `ZFS` FPU symbols (<5.9)
|
||||||
- Overrides for missing ACS capabilities
|
- Overrides for missing ACS capabilities
|
||||||
|
- [Waydroid](https://wiki.archlinux.org/title/Waydroid) support
|
||||||
- Provide own kernel `.config` file
|
- Provide own kernel `.config` file
|
||||||
- ...
|
- ...
|
||||||
#### User patches
|
#### User patches
|
||||||
|
|
||||||
To apply your own patch files using the provided scripts, you will need to put them in a `linux5y-tkg-userpatches` folder -- `y` needs to be changed with the kernel version the patch works on, _e.g_ `linux510-tkg-userpatches` -- at the same level as the `PKGBUILD` file, with the `.mypatch` extension. The script will by default ask if you want to apply them, one by one. The option `_user_patches` should be set to `true` in the `customization.cfg` file for this to work.
|
To apply your own patch files using the provided scripts, you will need to put them in a `linux<VERSION><PATCHLEVEL>-tkg-userpatches` folder -- where _VERSION_ and _PATCHLEVEL_ are the kernel version and patch level, as specified in [linux Makefile](https://github.com/torvalds/linux/blob/master/Makefile), the patch works on, _e.g_ `linux65-tkg-userpatches` -- at the same level as the `PKGBUILD` file, with the `.mypatch` extension. The script will by default ask if you want to apply them, one by one. The option `_user_patches` should be set to `true` in the `customization.cfg` file for this to work.
|
||||||
|
|
||||||
#### Anbox usage
|
|
||||||
|
|
||||||
**As of kernel 5.18, ashmem was dropped, breaking anbox. Their old Android 7 base doesn't allow moving to memfd so it might take a while to fix. The newer WayDroid alternative moved to using memfd thanks to an easier to work with Android 10 base. It still depends on binderfs, which is supported on 5.18+, but ashmem isn't a requirement for it anymore. An ashmem dkms driver can be used to circumvent the issue, but it currently is problematic on 5.19 and is likely to require active maintenance going forward. If you can, consider moving to WayDroid.**
|
|
||||||
|
|
||||||
When enabling the anbox support option, the `binder` and `ashmem` modules are built-in. You don't have to load them. However you'll need to mount binderfs :
|
|
||||||
```shell
|
|
||||||
sudo mkdir /dev/binderfs
|
|
||||||
sudo mount -t binder binder /dev/binderfs
|
|
||||||
```
|
|
||||||
|
|
||||||
To make this persistent, you can create `/etc/tmpfiles.d/anbox.conf` with the following content :
|
|
||||||
```
|
|
||||||
d! /dev/binderfs 0755 root root
|
|
||||||
```
|
|
||||||
After which you can add the following to your `/etc/fstab` :
|
|
||||||
```
|
|
||||||
binder /dev/binderfs binder nofail 0 0
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, if needed, start the anbox service :
|
|
||||||
```shell
|
|
||||||
systemctl start anbox-container-manager.service
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also enable the service for it to be auto-started on boot :
|
|
||||||
```shell
|
|
||||||
systemctl enable anbox-container-manager.service
|
|
||||||
```
|
|
||||||
|
|
||||||
You're set to run Anbox.
|
|
||||||
If you prefer automatic setup you can install `anbox-support` from AUR which will take care of everything by itself.
|
|
||||||
|
|
||||||
|
|
||||||
### Install procedure
|
### Install procedure
|
||||||
|
@@ -3,9 +3,9 @@
|
|||||||
# Linux distribution you are using, options are "Arch", "Ubuntu", "Debian", "Fedora", "Suse", "Gentoo", "Generic".
|
# Linux distribution you are using, options are "Arch", "Ubuntu", "Debian", "Fedora", "Suse", "Gentoo", "Generic".
|
||||||
# It is automatically set to "Arch" when using PKGBUILD.
|
# It is automatically set to "Arch" when using PKGBUILD.
|
||||||
# If left empty, the script will prompt
|
# If left empty, the script will prompt
|
||||||
_distro=""
|
_distro="Arch"
|
||||||
|
|
||||||
# Kernel Version - Options are "5.4", and from "5.7" to "5.19"
|
# Kernel Version - x.x format without the subversion (will always grab latest available subversion) is recommended
|
||||||
# you can also set a specific kernel version, e.g. "6.0-rc4" or "5.10.51",
|
# you can also set a specific kernel version, e.g. "6.0-rc4" or "5.10.51",
|
||||||
# -> note however that a "z" too small on a "x.y.z" version may make patches fail
|
# -> note however that a "z" too small on a "x.y.z" version may make patches fail
|
||||||
# as they got adapted for newer "z" values.
|
# as they got adapted for newer "z" values.
|
||||||
@@ -46,24 +46,30 @@ CUSTOM_GCC_PATH=""
|
|||||||
CUSTOM_LLVM_PATH=""
|
CUSTOM_LLVM_PATH=""
|
||||||
|
|
||||||
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
|
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
|
||||||
_force_all_threads="true"
|
_force_all_threads="false"
|
||||||
|
|
||||||
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
|
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
|
||||||
_noccache="false"
|
_noccache="false"
|
||||||
|
|
||||||
|
# [Experimental] Build only a subset of the default kernel modules list to speedup compile time and lower needed space to build kernel
|
||||||
|
# Notes:
|
||||||
|
# - If the kernel fails to boot with this option active, disable it and rebuild
|
||||||
|
# - This option cannot be used with _modprobeddb="true"
|
||||||
|
_kernel_on_diet="false"
|
||||||
|
|
||||||
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
|
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
|
||||||
# Using this option can trigger user prompts if the config doesn't go smoothly.
|
# Using this option can trigger user prompts if the config doesn't go smoothly.
|
||||||
# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time
|
# !!!! Make sure to have a well populated db !!!!
|
||||||
_modprobeddb="false"
|
_modprobeddb="false"
|
||||||
|
|
||||||
# modprobed-db database file location
|
# modprobed-db database file location
|
||||||
_modprobeddb_db_path=~/.config/modprobed.db
|
_modprobeddb_db_path=~/.config/modprobed.db
|
||||||
|
|
||||||
# Set to "1" to call make menuconfig, "2" to call make nconfig, "3" to call make xconfig, before building the kernel. Set to false to disable and skip the prompt.
|
# Set to "1" to call make menuconfig, "2" to call make nconfig, "3" to call make xconfig, before building the kernel. Set to false to disable and skip the prompt.
|
||||||
_menunconfig=""
|
_menunconfig="false"
|
||||||
|
|
||||||
# Set to true to generate a kernel config fragment from your changes in menuconfig/nconfig. Set to false to disable and skip the prompt.
|
# Set to true to generate a kernel config fragment from your changes in menuconfig/nconfig. Set to false to disable and skip the prompt.
|
||||||
_diffconfig=""
|
_diffconfig="false"
|
||||||
|
|
||||||
# Set to the file name where the generated config fragment should be written to. Only used if _diffconfig is active.
|
# Set to the file name where the generated config fragment should be written to. Only used if _diffconfig is active.
|
||||||
_diffconfig_name=""
|
_diffconfig_name=""
|
||||||
@@ -77,7 +83,7 @@ _dracut_options="--lz4"
|
|||||||
# Default (empty) : "config.x86_64" from the linux-tkg-config/5.y folder.
|
# Default (empty) : "config.x86_64" from the linux-tkg-config/5.y folder.
|
||||||
# "running-kernel" : Picks the .config file from the currently running kernel.
|
# "running-kernel" : Picks the .config file from the currently running kernel.
|
||||||
# It is recommended to be running an official kernel before running this script, to pick off a correct .config file
|
# It is recommended to be running an official kernel before running this script, to pick off a correct .config file
|
||||||
# "config_hardened.x86_64" : config file for a hardened kernel, available for kernel version "5.13", "5.10" and "5.4" .
|
# "config_hardened.x86_64" : config file for a hardened kernel, available for kernel version "5.15", "5.13", "5.11", "5.10", "5.7", "5.4".
|
||||||
# To get a complete hardened setup, you have to use "cfs" as _cpusched.
|
# To get a complete hardened setup, you have to use "cfs" as _cpusched.
|
||||||
# User provided value : custom user provided file, the given path should be relative to the PKGBUILD file. This enables for example to use a user stripped down .config file.
|
# User provided value : custom user provided file, the given path should be relative to the PKGBUILD file. This enables for example to use a user stripped down .config file.
|
||||||
# If the .config file isn't up to date with the chosen kernel version, any extra CONFIG_XXXX is set to its default value.
|
# If the .config file isn't up to date with the chosen kernel version, any extra CONFIG_XXXX is set to its default value.
|
||||||
@@ -96,12 +102,13 @@ _STRIP="true"
|
|||||||
|
|
||||||
# LEAVE AN EMPTY VALUE TO BE PROMPTED ABOUT FOLLOWING OPTIONS AT BUILD TIME
|
# LEAVE AN EMPTY VALUE TO BE PROMPTED ABOUT FOLLOWING OPTIONS AT BUILD TIME
|
||||||
|
|
||||||
# CPU scheduler - Options are "upds" (TkG's Undead PDS), "pds", "bmq", "muqss", "cacule", "tt", "bore" or "cfs" (kernel's default)
|
# CPU scheduler - Options are "pds", "bmq", "cacule", "tt", "bore", "bore-eevdf", "eevdf" or "cfs" (kernel's default)
|
||||||
_cpusched=""
|
# "upds" (TkG's Undead PDS) and "muqss" are also available on legacy kernel revisions
|
||||||
|
_cpusched="pds"
|
||||||
|
|
||||||
# Compiler to use - Options are "gcc" or "llvm".
|
# Compiler to use - Options are "gcc" or "llvm".
|
||||||
# For advanced users.
|
# For advanced users.
|
||||||
_compiler=""
|
_compiler="gcc"
|
||||||
|
|
||||||
# Force the use of the LLVM Integrated Assembler whether using LLVM, LTO or not.
|
# Force the use of the LLVM Integrated Assembler whether using LLVM, LTO or not.
|
||||||
# Set to "1" to enable.
|
# Set to "1" to enable.
|
||||||
@@ -131,7 +138,7 @@ _preempt_rt_force=""
|
|||||||
# For BMQ: 0: No yield.
|
# For BMQ: 0: No yield.
|
||||||
# 1: Deboost and requeue task. (Default)
|
# 1: Deboost and requeue task. (Default)
|
||||||
# 2: Set rq skip task.
|
# 2: Set rq skip task.
|
||||||
_sched_yield_type=""
|
_sched_yield_type="0"
|
||||||
|
|
||||||
# Round Robin interval is the longest duration two tasks with the same nice level will be delayed for. When CPU time is requested by a task, it receives a time slice equal
|
# Round Robin interval is the longest duration two tasks with the same nice level will be delayed for. When CPU time is requested by a task, it receives a time slice equal
|
||||||
# to the rr_interval in addition to a virtual deadline. When using yield_type 2, a low value can help offset the disadvantages of rescheduling a process that has yielded.
|
# to the rr_interval in addition to a virtual deadline. When using yield_type 2, a low value can help offset the disadvantages of rescheduling a process that has yielded.
|
||||||
@@ -139,7 +146,7 @@ _sched_yield_type=""
|
|||||||
# PDS default: 4ms"
|
# PDS default: 4ms"
|
||||||
# BMQ default: 2ms"
|
# BMQ default: 2ms"
|
||||||
# Set to "1" for 2ms, "2" for 4ms, "3" for 6ms, "4" for 8ms, or "default" to keep the chosen scheduler defaults.
|
# Set to "1" for 2ms, "2" for 4ms, "3" for 6ms, "4" for 8ms, or "default" to keep the chosen scheduler defaults.
|
||||||
_rr_interval=""
|
_rr_interval="default"
|
||||||
|
|
||||||
# Set to "true" to disable FUNCTION_TRACER/GRAPH_TRACER, lowering overhead but limiting debugging and analyzing of kernel functions - Kernel default is "false"
|
# Set to "true" to disable FUNCTION_TRACER/GRAPH_TRACER, lowering overhead but limiting debugging and analyzing of kernel functions - Kernel default is "false"
|
||||||
_ftracedisable="false"
|
_ftracedisable="false"
|
||||||
@@ -154,10 +161,10 @@ _misc_adds="true"
|
|||||||
# Full tickless can give higher performances in case you use isolation of CPUs for tasks
|
# Full tickless can give higher performances in case you use isolation of CPUs for tasks
|
||||||
# and it works only when using the nohz_full kernel parameter, otherwise behaves like idle.
|
# and it works only when using the nohz_full kernel parameter, otherwise behaves like idle.
|
||||||
# Just tickless idle perform better for most platforms.
|
# Just tickless idle perform better for most platforms.
|
||||||
_tickless=""
|
_tickless="2"
|
||||||
|
|
||||||
# Set to "true" to use ACS override patch - https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Bypassing_the_IOMMU_groups_.28ACS_override_patch.29 - Kernel default is "false"
|
# Set to "true" to use ACS override patch - https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Bypassing_the_IOMMU_groups_.28ACS_override_patch.29 - Kernel default is "false"
|
||||||
_acs_override=""
|
_acs_override="false"
|
||||||
|
|
||||||
# Set to "true" to add Bcache filesystem support. You'll have to install bcachefs-tools-git from AUR for utilities - https://bcachefs.org/ - If in doubt, set to "false"
|
# Set to "true" to add Bcache filesystem support. You'll have to install bcachefs-tools-git from AUR for utilities - https://bcachefs.org/ - If in doubt, set to "false"
|
||||||
# This can be buggy and isn't recommended on a production machine, also enabling this option will not allow you to enable MGLRU.
|
# This can be buggy and isn't recommended on a production machine, also enabling this option will not allow you to enable MGLRU.
|
||||||
@@ -167,14 +174,18 @@ _bcachefs="false"
|
|||||||
# ! Can't be used on multiple kernels installed side-by-side, which will require https://aur.archlinux.org/packages/winesync-dkms/ instead of this option !
|
# ! Can't be used on multiple kernels installed side-by-side, which will require https://aur.archlinux.org/packages/winesync-dkms/ instead of this option !
|
||||||
_winesync="false"
|
_winesync="false"
|
||||||
|
|
||||||
# Set to "true" to enable Binder and Ashmem, the kernel modules required to use the android emulator Anbox. ! This doesn't apply to 5.4.y !
|
# Set to "true" to enable Binder modules to use Waydroid Android containers
|
||||||
_anbox=""
|
_waydroid="false"
|
||||||
|
|
||||||
|
# Various patches and tweaks from Zen/Liquorix, Xanmod and the community - Default is "true"
|
||||||
|
_glitched_base="true"
|
||||||
|
|
||||||
# A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience (ZENIFY) - Default is "true"
|
# A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience (ZENIFY) - Default is "true"
|
||||||
|
# ! depends on _glitched_base="true" !
|
||||||
_zenify="true"
|
_zenify="true"
|
||||||
|
|
||||||
# compiler optimization level - 1. Optimize for performance (-O2); 2. Optimize harder (-O3); 3. Optimize for size (-Os) - Kernel default is "1"
|
# compiler optimization level - 1. Optimize for performance (-O2); 2. Optimize harder (-O3); 3. Optimize for size (-Os) - Kernel default is "1"
|
||||||
_compileroptlevel="1"
|
_compileroptlevel="2"
|
||||||
|
|
||||||
# CPU compiler optimizations - Defaults to prompt at kernel config if left empty
|
# CPU compiler optimizations - Defaults to prompt at kernel config if left empty
|
||||||
# AMD CPUs : "k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver" "steamroller" "excavator" "zen" "zen2" "zen3" "zen4" (zen3 opt support depends on GCC11) (zen4 opt support depends on GCC13)
|
# AMD CPUs : "k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver" "steamroller" "excavator" "zen" "zen2" "zen3" "zen4" (zen3 opt support depends on GCC11) (zen4 opt support depends on GCC13)
|
||||||
@@ -188,7 +199,7 @@ _compileroptlevel="1"
|
|||||||
# - "generic_v2" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v2
|
# - "generic_v2" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v2
|
||||||
# - "generic_v3" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v3
|
# - "generic_v3" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v3
|
||||||
# - "generic_v4" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v4
|
# - "generic_v4" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v4
|
||||||
_processor_opt=""
|
_processor_opt="skylake"
|
||||||
|
|
||||||
# CacULE only - Enable Response Driven Balancer, an experimental load balancer for CacULE
|
# CacULE only - Enable Response Driven Balancer, an experimental load balancer for CacULE
|
||||||
_cacule_rdb="false"
|
_cacule_rdb="false"
|
||||||
@@ -201,13 +212,13 @@ _cacule_rdb_interval="19"
|
|||||||
_tt_high_hz="false"
|
_tt_high_hz="false"
|
||||||
|
|
||||||
# MuQSS and PDS only - SMT (Hyperthreading) aware nice priority and policy support (SMT_NICE) - Kernel default is "true" - You can disable this on non-SMT/HT CPUs for lower overhead
|
# MuQSS and PDS only - SMT (Hyperthreading) aware nice priority and policy support (SMT_NICE) - Kernel default is "true" - You can disable this on non-SMT/HT CPUs for lower overhead
|
||||||
_smt_nice=""
|
_smt_nice="true"
|
||||||
|
|
||||||
# Trust the CPU manufacturer to initialize Linux's CRNG (RANDOM_TRUST_CPU) - Kernel default is "false"
|
# Trust the CPU manufacturer to initialize Linux's CRNG (RANDOM_TRUST_CPU) - Kernel default is "false"
|
||||||
_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=""
|
_timer_freq="1000"
|
||||||
|
|
||||||
# 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"
|
||||||
@@ -223,7 +234,7 @@ _aggressive_ondemand="true"
|
|||||||
_tcp_cong_alg=""
|
_tcp_cong_alg=""
|
||||||
|
|
||||||
# You can pass a default set of kernel command line options here - example: "intel_pstate=passive nowatchdog amdgpu.ppfeaturemask=0xfffd7fff mitigations=off"
|
# You can pass a default set of kernel command line options here - example: "intel_pstate=passive nowatchdog amdgpu.ppfeaturemask=0xfffd7fff mitigations=off"
|
||||||
_custom_commandline="intel_pstate=passive split_lock_detect=off"
|
_custom_commandline=""
|
||||||
|
|
||||||
# Selection of Clearlinux patches
|
# Selection of Clearlinux patches
|
||||||
_clear_patches="true"
|
_clear_patches="true"
|
||||||
@@ -231,12 +242,14 @@ _clear_patches="true"
|
|||||||
|
|
||||||
#### SPESHUL OPTION ####
|
#### SPESHUL OPTION ####
|
||||||
|
|
||||||
# If you want to bypass the stock naming scheme and enforce something else (example : "linux") - Useful for some bootloaders requiring manual entry editing on each release.
|
# [Arch only] If you want to bypass the stock naming scheme and enforce something else (example : "linux") - Useful for some bootloaders requiring manual entry editing on each release.
|
||||||
# !!! It will also change pkgname - If you don't explicitely need this, don't use it !!!
|
# !!! It will also change pkgname - If you don't explicitely need this, don't use it !!!
|
||||||
|
# Use _kernel_localversion instead on non-Arch based distros
|
||||||
_custom_pkgbase=""
|
_custom_pkgbase=""
|
||||||
|
|
||||||
# [non-Arch specific] Kernel localversion. Putting it to "Mario" will make for example the kernel version be 5.7.0-tkg-Mario (given by uname -r)
|
# [non-Arch only] Kernel localversion. Putting it to "Mario" will make for example the kernel version be 5.7.0-tkg-Mario (given by uname -r)
|
||||||
# If left empty, it will use "-tkg-${_cpusched}${_compiler}" where "${_cpusched}" will be replaced by the user chosen scheduler, ${_compiler} will be replaced by "-llvm" if clang is used (nothing for GCC).
|
# If left empty, it will use "-tkg-${_cpusched}${_compiler}" where "${_cpusched}" will be replaced by the user chosen scheduler, ${_compiler} will be replaced by "-llvm" if clang is used (nothing for GCC).
|
||||||
|
# Use _custom_pkgbase instead on Arch based distros
|
||||||
_kernel_localversion=""
|
_kernel_localversion=""
|
||||||
|
|
||||||
# Set to your maximum number of CPUs (physical + logical cores) - Lower means less overhead - You can set it to "$(nproc)" to use the current host's CPU(s) core count, or leave empty to use default
|
# Set to your maximum number of CPUs (physical + logical cores) - Lower means less overhead - You can set it to "$(nproc)" to use the current host's CPU(s) core count, or leave empty to use default
|
||||||
@@ -281,7 +294,7 @@ _mglru="true"
|
|||||||
# example: _community_patches="clear_nack_in_tend_isr.myrevert ffb_regression_fix.mypatch 0008-drm-amd-powerplay-force-the-trim-of-the-mclk-dpm-levels-if-OD-is-enabled.mypatch"
|
# example: _community_patches="clear_nack_in_tend_isr.myrevert ffb_regression_fix.mypatch 0008-drm-amd-powerplay-force-the-trim-of-the-mclk-dpm-levels-if-OD-is-enabled.mypatch"
|
||||||
_community_patches=""
|
_community_patches=""
|
||||||
|
|
||||||
# You can use your own patches by putting them in a subfolder called linux<version>-tkg-userpatches (e.g. linux510-tkg-userpatches) next to the PKGBUILD and giving them the .mypatch extension.
|
# You can use your own patches by putting them in a subfolder called linux<VERSION><PATCHLEVEL>-tkg-userpatches (see README.md for more info) next to the PKGBUILD and giving them the .mypatch extension.
|
||||||
# You can also revert patches by putting them in that same folder and giving them the .myrevert extension.
|
# You can also revert patches by putting them in that same folder and giving them the .myrevert extension.
|
||||||
|
|
||||||
# Also, userpatches variable below must be set to true for the above to work.
|
# Also, userpatches variable below must be set to true for the above to work.
|
||||||
|
49
install.sh
49
install.sh
@@ -67,17 +67,13 @@ _install_dependencies() {
|
|||||||
fi
|
fi
|
||||||
if [ "$_distro" = "Debian" -o "$_distro" = "Ubuntu" ]; then
|
if [ "$_distro" = "Debian" -o "$_distro" = "Ubuntu" ]; then
|
||||||
msg2 "Installing dependencies"
|
msg2 "Installing dependencies"
|
||||||
sudo apt install bc bison build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd ${clang_deps} -y
|
sudo apt install bc bison build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd debhelper ${clang_deps} -y
|
||||||
elif [ "$_distro" = "Fedora" ]; then
|
elif [ "$_distro" = "Fedora" ]; then
|
||||||
msg2 "Installing dependencies"
|
msg2 "Installing dependencies"
|
||||||
if [ $(rpm -E %fedora) = "32" ]; then
|
sudo dnf install perl bison ccache dwarves elfutils-devel elfutils-libelf-devel fedora-packager fedpkg flex gcc-c++ git grubby libXi-devel lz4 make ncurses-devel openssl openssl-devel perl-devel perl-generators pesign python3-devel qt5-qtbase-devel rpm-build rpmdevtools schedtool zstd bc rsync -y ${clang_deps} -y
|
||||||
sudo dnf install bison ccache dwarves elfutils-libelf-devel fedora-packager fedpkg flex gcc-c++ git grubby libXi-devel lz4 ncurses-devel openssl-devel pesign qt5-devel rpm-build rpmdevtools schedtool zstd ${clang_deps} -y
|
|
||||||
else
|
|
||||||
sudo dnf install bison ccache dwarves elfutils-devel elfutils-libelf-devel fedora-packager fedpkg flex gcc-c++ git grubby libXi-devel lz4 make ncurses-devel openssl openssl-devel perl-devel perl-generators pesign python3-devel qt5-qtbase-devel rpm-build rpmdevtools schedtool zstd -y ${clang_deps} -y
|
|
||||||
fi
|
|
||||||
elif [ "$_distro" = "Suse" ]; then
|
elif [ "$_distro" = "Suse" ]; then
|
||||||
msg2 "Installing dependencies"
|
msg2 "Installing dependencies"
|
||||||
sudo zypper install -y bc bison ccache dwarves elfutils flex gcc-c++ git libXi-devel libelf-devel libqt5-qtbase-common-devel libqt5-qtbase-devel lz4 make ncurses-devel openssl-devel patch pesign rpm-build rpmdevtools schedtool ${clang_deps}
|
sudo zypper install -y bc bison ccache dwarves elfutils flex gcc-c++ git libXi-devel libelf-devel libqt5-qtbase-common-devel libqt5-qtbase-devel lz4 make ncurses-devel openssl-devel patch pesign rpm-build rpmdevtools schedtool python3 rsync zstd ${clang_deps}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,10 +227,9 @@ if [ "$1" = "install" ]; then
|
|||||||
fi
|
fi
|
||||||
_headers_deb="linux-headers-${_kernelname}*.deb"
|
_headers_deb="linux-headers-${_kernelname}*.deb"
|
||||||
_image_deb="linux-image-${_kernelname}_*.deb"
|
_image_deb="linux-image-${_kernelname}_*.deb"
|
||||||
_kernel_devel_deb="linux-libc-dev_${_kernelname}*.deb"
|
|
||||||
|
|
||||||
cd DEBS
|
cd DEBS
|
||||||
sudo dpkg -i $_headers_deb $_image_deb $_kernel_devel_deb
|
sudo dpkg -i $_headers_deb $_image_deb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [[ "$_distro" =~ ^(Fedora|Suse)$ ]]; then
|
elif [[ "$_distro" =~ ^(Fedora|Suse)$ ]]; then
|
||||||
@@ -251,6 +246,9 @@ if [ "$1" = "install" ]; then
|
|||||||
|
|
||||||
_fedora_work_dir="$_kernel_work_folder_abs/linux-tkg-rpmbuild"
|
_fedora_work_dir="$_kernel_work_folder_abs/linux-tkg-rpmbuild"
|
||||||
|
|
||||||
|
msg2 "Add patched files to the diff.patch"
|
||||||
|
(cd ${_kernel_work_folder_abs} && git add -- . ':!linux-tkg-rpmbuild')
|
||||||
|
|
||||||
msg2 "Building kernel RPM packages"
|
msg2 "Building kernel RPM packages"
|
||||||
RPMOPTS="--define '_topdir ${_fedora_work_dir}'" make ${llvm_opt} -j ${_thread_num} rpm-pkg EXTRAVERSION="${_extra_ver_str}"
|
RPMOPTS="--define '_topdir ${_fedora_work_dir}'" make ${llvm_opt} -j ${_thread_num} rpm-pkg EXTRAVERSION="${_extra_ver_str}"
|
||||||
msg2 "Building successfully finished!"
|
msg2 "Building successfully finished!"
|
||||||
@@ -274,14 +272,34 @@ if [ "$1" = "install" ]; then
|
|||||||
_kernel_rpm="kernel-${_kernelname}*.rpm"
|
_kernel_rpm="kernel-${_kernelname}*.rpm"
|
||||||
# The headers are actually contained in the kernel-devel RPM and not the headers one...
|
# The headers are actually contained in the kernel-devel RPM and not the headers one...
|
||||||
_kernel_devel_rpm="kernel-devel-${_kernelname}*.rpm"
|
_kernel_devel_rpm="kernel-devel-${_kernelname}*.rpm"
|
||||||
|
_kernel_syms_rpm="kernel-syms-${_kernelname}*.rpm"
|
||||||
|
|
||||||
cd RPMS
|
cd RPMS
|
||||||
if [ "$_distro" = "Fedora" ]; then
|
if [ "$_distro" = "Fedora" ]; then
|
||||||
sudo dnf install $_kernel_rpm $_kernel_devel_rpm
|
sudo dnf install $_kernel_rpm $_kernel_devel_rpm
|
||||||
elif [ "$_distro" = "Suse" ]; then
|
elif [ "$_distro" = "Suse" ]; then
|
||||||
|
# It seems there is some weird behavior with relocking existing locks, so let's unlock first
|
||||||
|
sudo zypper removelock kernel-default-devel kernel-default kernel-devel kernel-syms
|
||||||
|
|
||||||
msg2 "Some files from 'linux-glibc-devel' will be replaced by files from the custom kernel-hearders package"
|
msg2 "Some files from 'linux-glibc-devel' will be replaced by files from the custom kernel-hearders package"
|
||||||
msg2 "To revert back to the original kernel headers do 'sudo zypper install -f linux-glibc-devel'"
|
msg2 "To revert back to the original kernel headers do 'sudo zypper install -f linux-glibc-devel'"
|
||||||
sudo zypper install --allow-unsigned-rpm $_kernel_rpm $_kernel_devel_rpm
|
sudo zypper install --oldpackage --allow-unsigned-rpm $_kernel_rpm $_kernel_devel_rpm $_kernel_syms_rpm
|
||||||
|
|
||||||
|
# Let's lock post install
|
||||||
|
warning "By default, system kernel updates will overwrite your custom kernel."
|
||||||
|
warning "Adding a lock will prevent this but skip system kernel updates."
|
||||||
|
msg2 "You can remove the lock if needed with 'sudo zypper removelock kernel-default-devel kernel-default kernel-devel kernel-syms'"
|
||||||
|
read -p "Would you like to lock system kernel packages ? Y/[n]: " _lock
|
||||||
|
if [[ "$_lock" =~ ^(Y|y|Yes|yes)$ ]]; then
|
||||||
|
sudo zypper addlock kernel-default-devel kernel-default kernel-devel kernel-syms
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$_distro" = "Suse" ]; then
|
||||||
|
msg2 "Creating initramfs"
|
||||||
|
sudo dracut --force --hostonly ${_dracut_options} --kver $_kernelname
|
||||||
|
msg2 "Updating GRUB"
|
||||||
|
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg2 "Install successful"
|
msg2 "Install successful"
|
||||||
@@ -372,10 +390,6 @@ if [ "$1" = "install" ]; then
|
|||||||
|
|
||||||
msg2 "Installing kernel"
|
msg2 "Installing kernel"
|
||||||
sudo make install
|
sudo make install
|
||||||
msg2 "Creating initramfs"
|
|
||||||
sudo dracut --force --hostonly ${_dracut_options} --kver $_kernelname
|
|
||||||
msg2 "Updating GRUB"
|
|
||||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
|
||||||
|
|
||||||
if [ "$_distro" = "Gentoo" ]; then
|
if [ "$_distro" = "Gentoo" ]; then
|
||||||
|
|
||||||
@@ -393,6 +407,13 @@ if [ "$1" = "install" ]; then
|
|||||||
sudo emerge @module-rebuild --keep-going
|
sudo emerge @module-rebuild --keep-going
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
msg2 "Creating initramfs"
|
||||||
|
sudo dracut --force --hostonly ${_dracut_options} --kver $_kernelname
|
||||||
|
msg2 "Updating GRUB"
|
||||||
|
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@@ -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.131 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=120201
|
CONFIG_GCC_VERSION=130201
|
||||||
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=24100
|
||||||
CONFIG_LD_IS_BFD=y
|
CONFIG_LD_IS_BFD=y
|
||||||
CONFIG_LD_VERSION=24000
|
CONFIG_LD_VERSION=24100
|
||||||
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,7 @@ 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_PAHOLE_VERSION=125
|
||||||
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
|
||||||
@@ -520,7 +520,9 @@ CONFIG_RETHUNK=y
|
|||||||
CONFIG_CPU_UNRET_ENTRY=y
|
CONFIG_CPU_UNRET_ENTRY=y
|
||||||
CONFIG_CPU_IBPB_ENTRY=y
|
CONFIG_CPU_IBPB_ENTRY=y
|
||||||
CONFIG_CPU_IBRS_ENTRY=y
|
CONFIG_CPU_IBRS_ENTRY=y
|
||||||
|
CONFIG_CPU_SRSO=y
|
||||||
CONFIG_SLS=y
|
CONFIG_SLS=y
|
||||||
|
# CONFIG_GDS_FORCE_MITIGATION is not set
|
||||||
CONFIG_ARCH_HAS_ADD_PAGES=y
|
CONFIG_ARCH_HAS_ADD_PAGES=y
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||||
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
|
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
|
||||||
@@ -756,6 +758,7 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|||||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||||
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
||||||
|
CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y
|
||||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||||
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||||
@@ -1627,7 +1630,6 @@ CONFIG_NET_DSA_TAG_XRS700X=m
|
|||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
CONFIG_VLAN_8021Q_GVRP=y
|
||||||
CONFIG_VLAN_8021Q_MVRP=y
|
CONFIG_VLAN_8021Q_MVRP=y
|
||||||
# CONFIG_DECNET is not set
|
|
||||||
CONFIG_LLC=m
|
CONFIG_LLC=m
|
||||||
CONFIG_LLC2=m
|
CONFIG_LLC2=m
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
@@ -2490,7 +2492,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|||||||
CONFIG_BLK_DEV_DRBD=m
|
CONFIG_BLK_DEV_DRBD=m
|
||||||
# CONFIG_DRBD_FAULT_INJECTION is not set
|
# CONFIG_DRBD_FAULT_INJECTION is not set
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_SX8=m
|
|
||||||
CONFIG_BLK_DEV_RAM=m
|
CONFIG_BLK_DEV_RAM=m
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||||
@@ -8388,9 +8389,10 @@ CONFIG_AMILO_RFKILL=m
|
|||||||
CONFIG_FUJITSU_LAPTOP=m
|
CONFIG_FUJITSU_LAPTOP=m
|
||||||
CONFIG_FUJITSU_TABLET=m
|
CONFIG_FUJITSU_TABLET=m
|
||||||
CONFIG_GPD_POCKET_FAN=m
|
CONFIG_GPD_POCKET_FAN=m
|
||||||
|
CONFIG_X86_PLATFORM_DRIVERS_HP=y
|
||||||
CONFIG_HP_ACCEL=m
|
CONFIG_HP_ACCEL=m
|
||||||
CONFIG_WIRELESS_HOTKEY=m
|
|
||||||
CONFIG_HP_WMI=m
|
CONFIG_HP_WMI=m
|
||||||
|
CONFIG_WIRELESS_HOTKEY=m
|
||||||
CONFIG_IBM_RTL=m
|
CONFIG_IBM_RTL=m
|
||||||
CONFIG_IDEAPAD_LAPTOP=m
|
CONFIG_IDEAPAD_LAPTOP=m
|
||||||
CONFIG_SENSORS_HDAPS=m
|
CONFIG_SENSORS_HDAPS=m
|
||||||
@@ -8816,6 +8818,11 @@ CONFIG_VIPERBOARD_ADC=m
|
|||||||
CONFIG_XILINX_XADC=m
|
CONFIG_XILINX_XADC=m
|
||||||
# end of Analog to digital converters
|
# end of Analog to digital converters
|
||||||
|
|
||||||
|
#
|
||||||
|
# Analog to digital and digital to analog converters
|
||||||
|
#
|
||||||
|
# end of Analog to digital and digital to analog converters
|
||||||
|
|
||||||
#
|
#
|
||||||
# Analog Front Ends
|
# Analog Front Ends
|
||||||
#
|
#
|
||||||
|
@@ -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.53 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=120201
|
CONFIG_GCC_VERSION=130201
|
||||||
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=24100
|
||||||
CONFIG_LD_IS_BFD=y
|
CONFIG_LD_IS_BFD=y
|
||||||
CONFIG_LD_VERSION=24000
|
CONFIG_LD_VERSION=24100
|
||||||
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
|
||||||
@@ -17,7 +17,7 @@ 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_PAHOLE_VERSION=125
|
||||||
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
|
||||||
@@ -207,7 +207,6 @@ 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
|
||||||
@@ -532,7 +531,9 @@ CONFIG_RETHUNK=y
|
|||||||
CONFIG_CPU_UNRET_ENTRY=y
|
CONFIG_CPU_UNRET_ENTRY=y
|
||||||
CONFIG_CPU_IBPB_ENTRY=y
|
CONFIG_CPU_IBPB_ENTRY=y
|
||||||
CONFIG_CPU_IBRS_ENTRY=y
|
CONFIG_CPU_IBRS_ENTRY=y
|
||||||
|
CONFIG_CPU_SRSO=y
|
||||||
CONFIG_SLS=y
|
CONFIG_SLS=y
|
||||||
|
# CONFIG_GDS_FORCE_MITIGATION is not set
|
||||||
CONFIG_ARCH_HAS_ADD_PAGES=y
|
CONFIG_ARCH_HAS_ADD_PAGES=y
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||||
|
|
||||||
@@ -778,6 +779,7 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|||||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||||
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
||||||
|
CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y
|
||||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||||
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||||
@@ -1137,6 +1139,7 @@ CONFIG_PTE_MARKER_UFFD_WP=y
|
|||||||
CONFIG_LRU_GEN=y
|
CONFIG_LRU_GEN=y
|
||||||
CONFIG_LRU_GEN_ENABLED=y
|
CONFIG_LRU_GEN_ENABLED=y
|
||||||
# CONFIG_LRU_GEN_STATS is not set
|
# CONFIG_LRU_GEN_STATS is not set
|
||||||
|
CONFIG_LOCK_MM_AND_FIND_VMA=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Data Access Monitoring
|
# Data Access Monitoring
|
||||||
@@ -6178,10 +6181,7 @@ CONFIG_MEDIA_ATTACH=y
|
|||||||
# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
|
# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
|
||||||
#
|
#
|
||||||
CONFIG_VIDEO_IR_I2C=m
|
CONFIG_VIDEO_IR_I2C=m
|
||||||
|
CONFIG_VIDEO_CAMERA_SENSOR=y
|
||||||
#
|
|
||||||
# Camera sensor devices
|
|
||||||
#
|
|
||||||
CONFIG_VIDEO_APTINA_PLL=m
|
CONFIG_VIDEO_APTINA_PLL=m
|
||||||
CONFIG_VIDEO_CCS_PLL=m
|
CONFIG_VIDEO_CCS_PLL=m
|
||||||
CONFIG_VIDEO_AR0521=m
|
CONFIG_VIDEO_AR0521=m
|
||||||
@@ -6247,7 +6247,6 @@ CONFIG_VIDEO_VS6624=m
|
|||||||
CONFIG_VIDEO_CCS=m
|
CONFIG_VIDEO_CCS=m
|
||||||
CONFIG_VIDEO_ET8EK8=m
|
CONFIG_VIDEO_ET8EK8=m
|
||||||
CONFIG_VIDEO_M5MOLS=m
|
CONFIG_VIDEO_M5MOLS=m
|
||||||
# end of Camera sensor devices
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Lens drivers
|
# Lens drivers
|
||||||
@@ -7366,6 +7365,7 @@ CONFIG_SND_SOC_RT1019=m
|
|||||||
CONFIG_SND_SOC_RT1308=m
|
CONFIG_SND_SOC_RT1308=m
|
||||||
CONFIG_SND_SOC_RT1308_SDW=m
|
CONFIG_SND_SOC_RT1308_SDW=m
|
||||||
CONFIG_SND_SOC_RT1316_SDW=m
|
CONFIG_SND_SOC_RT1316_SDW=m
|
||||||
|
CONFIG_SND_SOC_RT1318_SDW=m
|
||||||
CONFIG_SND_SOC_RT5514=m
|
CONFIG_SND_SOC_RT5514=m
|
||||||
CONFIG_SND_SOC_RT5514_SPI=m
|
CONFIG_SND_SOC_RT5514_SPI=m
|
||||||
CONFIG_SND_SOC_RT5616=m
|
CONFIG_SND_SOC_RT5616=m
|
||||||
@@ -8844,9 +8844,10 @@ CONFIG_AMILO_RFKILL=m
|
|||||||
CONFIG_FUJITSU_LAPTOP=m
|
CONFIG_FUJITSU_LAPTOP=m
|
||||||
CONFIG_FUJITSU_TABLET=m
|
CONFIG_FUJITSU_TABLET=m
|
||||||
CONFIG_GPD_POCKET_FAN=m
|
CONFIG_GPD_POCKET_FAN=m
|
||||||
|
CONFIG_X86_PLATFORM_DRIVERS_HP=y
|
||||||
CONFIG_HP_ACCEL=m
|
CONFIG_HP_ACCEL=m
|
||||||
CONFIG_WIRELESS_HOTKEY=m
|
|
||||||
CONFIG_HP_WMI=m
|
CONFIG_HP_WMI=m
|
||||||
|
CONFIG_WIRELESS_HOTKEY=m
|
||||||
CONFIG_IBM_RTL=m
|
CONFIG_IBM_RTL=m
|
||||||
CONFIG_IDEAPAD_LAPTOP=m
|
CONFIG_IDEAPAD_LAPTOP=m
|
||||||
CONFIG_SENSORS_HDAPS=m
|
CONFIG_SENSORS_HDAPS=m
|
||||||
@@ -10245,7 +10246,7 @@ CONFIG_SMB_SERVER=m
|
|||||||
CONFIG_SMB_SERVER_SMBDIRECT=y
|
CONFIG_SMB_SERVER_SMBDIRECT=y
|
||||||
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
|
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
|
||||||
CONFIG_SMB_SERVER_KERBEROS5=y
|
CONFIG_SMB_SERVER_KERBEROS5=y
|
||||||
CONFIG_SMBFS_COMMON=m
|
CONFIG_SMBFS=m
|
||||||
CONFIG_CODA_FS=m
|
CONFIG_CODA_FS=m
|
||||||
CONFIG_AFS_FS=m
|
CONFIG_AFS_FS=m
|
||||||
# CONFIG_AFS_DEBUG is not set
|
# CONFIG_AFS_DEBUG is not set
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.3.0-arch1 Kernel Configuration
|
# Linux/x86 6.3.8-arch1 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.1.1 20230429"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=120201
|
CONFIG_GCC_VERSION=130101
|
||||||
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=24000
|
||||||
@@ -17,7 +17,7 @@ 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_PAHOLE_VERSION=125
|
||||||
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
|
||||||
@@ -6834,7 +6834,7 @@ CONFIG_FB_EFI=y
|
|||||||
# CONFIG_FB_UDL is not set
|
# CONFIG_FB_UDL is not set
|
||||||
# CONFIG_FB_IBM_GXT4500 is not set
|
# CONFIG_FB_IBM_GXT4500 is not set
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
# CONFIG_XEN_FBDEV_FRONTEND is not set
|
CONFIG_XEN_FBDEV_FRONTEND=m
|
||||||
# CONFIG_FB_METRONOME is not set
|
# CONFIG_FB_METRONOME is not set
|
||||||
# CONFIG_FB_MB862XX is not set
|
# CONFIG_FB_MB862XX is not set
|
||||||
# CONFIG_FB_HYPERV is not set
|
# CONFIG_FB_HYPERV is not set
|
||||||
@@ -6976,7 +6976,7 @@ CONFIG_SND_SERIAL_U16550=m
|
|||||||
CONFIG_SND_MPU401=m
|
CONFIG_SND_MPU401=m
|
||||||
CONFIG_SND_PORTMAN2X4=m
|
CONFIG_SND_PORTMAN2X4=m
|
||||||
CONFIG_SND_AC97_POWER_SAVE=y
|
CONFIG_SND_AC97_POWER_SAVE=y
|
||||||
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
|
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=10
|
||||||
CONFIG_SND_SB_COMMON=m
|
CONFIG_SND_SB_COMMON=m
|
||||||
CONFIG_SND_PCI=y
|
CONFIG_SND_PCI=y
|
||||||
CONFIG_SND_AD1889=m
|
CONFIG_SND_AD1889=m
|
||||||
@@ -7081,7 +7081,7 @@ CONFIG_SND_HDA_CODEC_CA0132_DSP=y
|
|||||||
CONFIG_SND_HDA_CODEC_CMEDIA=m
|
CONFIG_SND_HDA_CODEC_CMEDIA=m
|
||||||
CONFIG_SND_HDA_CODEC_SI3054=m
|
CONFIG_SND_HDA_CODEC_SI3054=m
|
||||||
CONFIG_SND_HDA_GENERIC=m
|
CONFIG_SND_HDA_GENERIC=m
|
||||||
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
|
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10
|
||||||
CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
|
CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
|
||||||
# CONFIG_SND_HDA_CTL_DEV_ID is not set
|
# CONFIG_SND_HDA_CTL_DEV_ID is not set
|
||||||
# end of HD-Audio
|
# end of HD-Audio
|
||||||
@@ -8852,17 +8852,7 @@ CONFIG_AD2S1210=m
|
|||||||
|
|
||||||
# CONFIG_FB_SM750 is not set
|
# CONFIG_FB_SM750 is not set
|
||||||
CONFIG_STAGING_MEDIA=y
|
CONFIG_STAGING_MEDIA=y
|
||||||
CONFIG_INTEL_ATOMISP=y
|
# CONFIG_INTEL_ATOMISP is not set
|
||||||
CONFIG_VIDEO_ATOMISP=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_ISP2401=y
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV2722=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_GC2235=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_MSRLIST_HELPER=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_MT9M114=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_GC0310=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV2680=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV5693=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_LM3554=m
|
|
||||||
CONFIG_DVB_AV7110_IR=y
|
CONFIG_DVB_AV7110_IR=y
|
||||||
CONFIG_DVB_AV7110=m
|
CONFIG_DVB_AV7110=m
|
||||||
CONFIG_DVB_AV7110_OSD=y
|
CONFIG_DVB_AV7110_OSD=y
|
||||||
@@ -8994,6 +8984,7 @@ CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
|
|||||||
CONFIG_THINKPAD_LMI=m
|
CONFIG_THINKPAD_LMI=m
|
||||||
CONFIG_INTEL_ATOMISP2_PDX86=y
|
CONFIG_INTEL_ATOMISP2_PDX86=y
|
||||||
CONFIG_INTEL_ATOMISP2_LED=m
|
CONFIG_INTEL_ATOMISP2_LED=m
|
||||||
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
CONFIG_INTEL_IFS=m
|
CONFIG_INTEL_IFS=m
|
||||||
CONFIG_INTEL_SAR_INT1092=m
|
CONFIG_INTEL_SAR_INT1092=m
|
||||||
CONFIG_INTEL_SKL_INT3472=m
|
CONFIG_INTEL_SKL_INT3472=m
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file; DO NOT EDIT.
|
# Automatically generated file; DO NOT EDIT.
|
||||||
# Linux/x86 6.4.0-rc2 Kernel Configuration
|
# Linux/x86 6.4.16 Kernel Configuration
|
||||||
#
|
#
|
||||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.1.1 20230429"
|
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801"
|
||||||
CONFIG_CC_IS_GCC=y
|
CONFIG_CC_IS_GCC=y
|
||||||
CONFIG_GCC_VERSION=130101
|
CONFIG_GCC_VERSION=130201
|
||||||
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=24100
|
||||||
CONFIG_LD_IS_BFD=y
|
CONFIG_LD_IS_BFD=y
|
||||||
CONFIG_LD_VERSION=24000
|
CONFIG_LD_VERSION=24100
|
||||||
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
|
||||||
@@ -512,7 +512,7 @@ CONFIG_PHYSICAL_ALIGN=0x200000
|
|||||||
CONFIG_DYNAMIC_MEMORY_LAYOUT=y
|
CONFIG_DYNAMIC_MEMORY_LAYOUT=y
|
||||||
CONFIG_RANDOMIZE_MEMORY=y
|
CONFIG_RANDOMIZE_MEMORY=y
|
||||||
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
|
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
|
||||||
# CONFIG_ADDRESS_MASKING is not set
|
CONFIG_ADDRESS_MASKING=y
|
||||||
CONFIG_HOTPLUG_CPU=y
|
CONFIG_HOTPLUG_CPU=y
|
||||||
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
|
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
|
||||||
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
||||||
@@ -544,7 +544,9 @@ CONFIG_CALL_DEPTH_TRACKING=y
|
|||||||
# CONFIG_CALL_THUNKS_DEBUG is not set
|
# CONFIG_CALL_THUNKS_DEBUG is not set
|
||||||
CONFIG_CPU_IBPB_ENTRY=y
|
CONFIG_CPU_IBPB_ENTRY=y
|
||||||
CONFIG_CPU_IBRS_ENTRY=y
|
CONFIG_CPU_IBRS_ENTRY=y
|
||||||
|
CONFIG_CPU_SRSO=y
|
||||||
CONFIG_SLS=y
|
CONFIG_SLS=y
|
||||||
|
# CONFIG_GDS_FORCE_MITIGATION is not set
|
||||||
CONFIG_ARCH_HAS_ADD_PAGES=y
|
CONFIG_ARCH_HAS_ADD_PAGES=y
|
||||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||||
|
|
||||||
@@ -794,6 +796,7 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|||||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||||
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
|
||||||
|
CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y
|
||||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||||
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
||||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||||
@@ -1164,6 +1167,7 @@ CONFIG_LRU_GEN_ENABLED=y
|
|||||||
# CONFIG_LRU_GEN_STATS is not set
|
# CONFIG_LRU_GEN_STATS is not set
|
||||||
CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
|
CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
|
||||||
CONFIG_PER_VMA_LOCK=y
|
CONFIG_PER_VMA_LOCK=y
|
||||||
|
CONFIG_LOCK_MM_AND_FIND_VMA=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Data Access Monitoring
|
# Data Access Monitoring
|
||||||
@@ -2009,7 +2013,7 @@ CONFIG_BT_MTKSDIO=m
|
|||||||
CONFIG_BT_MTKUART=m
|
CONFIG_BT_MTKUART=m
|
||||||
CONFIG_BT_HCIRSI=m
|
CONFIG_BT_HCIRSI=m
|
||||||
CONFIG_BT_VIRTIO=m
|
CONFIG_BT_VIRTIO=m
|
||||||
# CONFIG_BT_NXPUART is not set
|
CONFIG_BT_NXPUART=m
|
||||||
# end of Bluetooth device drivers
|
# end of Bluetooth device drivers
|
||||||
|
|
||||||
CONFIG_AF_RXRPC=m
|
CONFIG_AF_RXRPC=m
|
||||||
@@ -2334,7 +2338,7 @@ CONFIG_ISCSI_IBFT=m
|
|||||||
CONFIG_FW_CFG_SYSFS=m
|
CONFIG_FW_CFG_SYSFS=m
|
||||||
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
|
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
|
||||||
CONFIG_SYSFB=y
|
CONFIG_SYSFB=y
|
||||||
# CONFIG_SYSFB_SIMPLEFB is not set
|
CONFIG_SYSFB_SIMPLEFB=y
|
||||||
CONFIG_FW_CS_DSP=m
|
CONFIG_FW_CS_DSP=m
|
||||||
CONFIG_GOOGLE_FIRMWARE=y
|
CONFIG_GOOGLE_FIRMWARE=y
|
||||||
# CONFIG_GOOGLE_SMI is not set
|
# CONFIG_GOOGLE_SMI is not set
|
||||||
@@ -2925,7 +2929,7 @@ CONFIG_PATA_PARPORT=m
|
|||||||
#
|
#
|
||||||
CONFIG_PATA_PARPORT_ATEN=m
|
CONFIG_PATA_PARPORT_ATEN=m
|
||||||
CONFIG_PATA_PARPORT_BPCK=m
|
CONFIG_PATA_PARPORT_BPCK=m
|
||||||
# CONFIG_PATA_PARPORT_BPCK6 is not set
|
CONFIG_PATA_PARPORT_BPCK6=m
|
||||||
CONFIG_PATA_PARPORT_COMM=m
|
CONFIG_PATA_PARPORT_COMM=m
|
||||||
CONFIG_PATA_PARPORT_DSTR=m
|
CONFIG_PATA_PARPORT_DSTR=m
|
||||||
CONFIG_PATA_PARPORT_FIT2=m
|
CONFIG_PATA_PARPORT_FIT2=m
|
||||||
@@ -3010,7 +3014,7 @@ CONFIG_TCM_FC=m
|
|||||||
CONFIG_ISCSI_TARGET=m
|
CONFIG_ISCSI_TARGET=m
|
||||||
CONFIG_ISCSI_TARGET_CXGB4=m
|
CONFIG_ISCSI_TARGET_CXGB4=m
|
||||||
CONFIG_SBP_TARGET=m
|
CONFIG_SBP_TARGET=m
|
||||||
# CONFIG_REMOTE_TARGET is not set
|
CONFIG_REMOTE_TARGET=m
|
||||||
CONFIG_FUSION=y
|
CONFIG_FUSION=y
|
||||||
CONFIG_FUSION_SPI=m
|
CONFIG_FUSION_SPI=m
|
||||||
CONFIG_FUSION_FC=m
|
CONFIG_FUSION_FC=m
|
||||||
@@ -3128,7 +3132,7 @@ CONFIG_NET_DSA_MSCC_OCELOT_EXT=m
|
|||||||
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
|
||||||
# CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT is not set
|
CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y
|
||||||
CONFIG_NET_DSA_SJA1105=m
|
CONFIG_NET_DSA_SJA1105=m
|
||||||
CONFIG_NET_DSA_SJA1105_PTP=y
|
CONFIG_NET_DSA_SJA1105_PTP=y
|
||||||
CONFIG_NET_DSA_SJA1105_TAS=y
|
CONFIG_NET_DSA_SJA1105_TAS=y
|
||||||
@@ -3175,7 +3179,7 @@ CONFIG_PCMCIA_NMCLAN=m
|
|||||||
CONFIG_AMD_XGBE=m
|
CONFIG_AMD_XGBE=m
|
||||||
CONFIG_AMD_XGBE_DCB=y
|
CONFIG_AMD_XGBE_DCB=y
|
||||||
CONFIG_AMD_XGBE_HAVE_ECC=y
|
CONFIG_AMD_XGBE_HAVE_ECC=y
|
||||||
# CONFIG_PDS_CORE is not set
|
CONFIG_PDS_CORE=m
|
||||||
CONFIG_NET_VENDOR_AQUANTIA=y
|
CONFIG_NET_VENDOR_AQUANTIA=y
|
||||||
CONFIG_AQTION=m
|
CONFIG_AQTION=m
|
||||||
CONFIG_NET_VENDOR_ARC=y
|
CONFIG_NET_VENDOR_ARC=y
|
||||||
@@ -3538,13 +3542,13 @@ CONFIG_MARVELL_88X2222_PHY=m
|
|||||||
CONFIG_MAXLINEAR_GPHY=m
|
CONFIG_MAXLINEAR_GPHY=m
|
||||||
CONFIG_MEDIATEK_GE_PHY=m
|
CONFIG_MEDIATEK_GE_PHY=m
|
||||||
CONFIG_MICREL_PHY=m
|
CONFIG_MICREL_PHY=m
|
||||||
# CONFIG_MICROCHIP_T1S_PHY is not set
|
CONFIG_MICROCHIP_T1S_PHY=m
|
||||||
CONFIG_MICROCHIP_PHY=m
|
CONFIG_MICROCHIP_PHY=m
|
||||||
CONFIG_MICROCHIP_T1_PHY=m
|
CONFIG_MICROCHIP_T1_PHY=m
|
||||||
CONFIG_MICROSEMI_PHY=m
|
CONFIG_MICROSEMI_PHY=m
|
||||||
CONFIG_MOTORCOMM_PHY=m
|
CONFIG_MOTORCOMM_PHY=m
|
||||||
CONFIG_NATIONAL_PHY=m
|
CONFIG_NATIONAL_PHY=m
|
||||||
# CONFIG_NXP_CBTX_PHY is not set
|
CONFIG_NXP_CBTX_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=m
|
||||||
@@ -4008,21 +4012,22 @@ CONFIG_RTL8XXXU_UNTESTED=y
|
|||||||
CONFIG_RTW88=m
|
CONFIG_RTW88=m
|
||||||
CONFIG_RTW88_CORE=m
|
CONFIG_RTW88_CORE=m
|
||||||
CONFIG_RTW88_PCI=m
|
CONFIG_RTW88_PCI=m
|
||||||
|
CONFIG_RTW88_SDIO=m
|
||||||
CONFIG_RTW88_USB=m
|
CONFIG_RTW88_USB=m
|
||||||
CONFIG_RTW88_8822B=m
|
CONFIG_RTW88_8822B=m
|
||||||
CONFIG_RTW88_8822C=m
|
CONFIG_RTW88_8822C=m
|
||||||
CONFIG_RTW88_8723D=m
|
CONFIG_RTW88_8723D=m
|
||||||
CONFIG_RTW88_8821C=m
|
CONFIG_RTW88_8821C=m
|
||||||
CONFIG_RTW88_8822BE=m
|
CONFIG_RTW88_8822BE=m
|
||||||
# CONFIG_RTW88_8822BS is not set
|
CONFIG_RTW88_8822BS=m
|
||||||
CONFIG_RTW88_8822BU=m
|
CONFIG_RTW88_8822BU=m
|
||||||
CONFIG_RTW88_8822CE=m
|
CONFIG_RTW88_8822CE=m
|
||||||
# CONFIG_RTW88_8822CS is not set
|
CONFIG_RTW88_8822CS=m
|
||||||
CONFIG_RTW88_8822CU=m
|
CONFIG_RTW88_8822CU=m
|
||||||
CONFIG_RTW88_8723DE=m
|
CONFIG_RTW88_8723DE=m
|
||||||
CONFIG_RTW88_8723DU=m
|
CONFIG_RTW88_8723DU=m
|
||||||
CONFIG_RTW88_8821CE=m
|
CONFIG_RTW88_8821CE=m
|
||||||
# CONFIG_RTW88_8821CS is not set
|
CONFIG_RTW88_8821CS=m
|
||||||
CONFIG_RTW88_8821CU=m
|
CONFIG_RTW88_8821CU=m
|
||||||
CONFIG_RTW88_DEBUG=y
|
CONFIG_RTW88_DEBUG=y
|
||||||
CONFIG_RTW88_DEBUGFS=y
|
CONFIG_RTW88_DEBUGFS=y
|
||||||
@@ -4309,7 +4314,7 @@ CONFIG_TOUCHSCREEN_MMS114=m
|
|||||||
CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
|
CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
|
||||||
CONFIG_TOUCHSCREEN_MSG2638=m
|
CONFIG_TOUCHSCREEN_MSG2638=m
|
||||||
CONFIG_TOUCHSCREEN_MTOUCH=m
|
CONFIG_TOUCHSCREEN_MTOUCH=m
|
||||||
# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set
|
CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS=m
|
||||||
CONFIG_TOUCHSCREEN_IMAGIS=m
|
CONFIG_TOUCHSCREEN_IMAGIS=m
|
||||||
CONFIG_TOUCHSCREEN_INEXIO=m
|
CONFIG_TOUCHSCREEN_INEXIO=m
|
||||||
CONFIG_TOUCHSCREEN_MK712=m
|
CONFIG_TOUCHSCREEN_MK712=m
|
||||||
@@ -4820,7 +4825,7 @@ CONFIG_PTP_1588_CLOCK_IDT82P33=m
|
|||||||
CONFIG_PTP_1588_CLOCK_IDTCM=m
|
CONFIG_PTP_1588_CLOCK_IDTCM=m
|
||||||
CONFIG_PTP_1588_CLOCK_VMW=m
|
CONFIG_PTP_1588_CLOCK_VMW=m
|
||||||
CONFIG_PTP_1588_CLOCK_OCP=m
|
CONFIG_PTP_1588_CLOCK_OCP=m
|
||||||
# CONFIG_PTP_DFL_TOD is not set
|
CONFIG_PTP_DFL_TOD=m
|
||||||
# end of PTP clock support
|
# end of PTP clock support
|
||||||
|
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
@@ -4879,6 +4884,7 @@ CONFIG_GPIOLIB_IRQCHIP=y
|
|||||||
CONFIG_GPIO_CDEV=y
|
CONFIG_GPIO_CDEV=y
|
||||||
CONFIG_GPIO_CDEV_V1=y
|
CONFIG_GPIO_CDEV_V1=y
|
||||||
CONFIG_GPIO_GENERIC=m
|
CONFIG_GPIO_GENERIC=m
|
||||||
|
CONFIG_GPIO_REGMAP=m
|
||||||
CONFIG_GPIO_MAX730X=m
|
CONFIG_GPIO_MAX730X=m
|
||||||
CONFIG_GPIO_IDIO_16=m
|
CONFIG_GPIO_IDIO_16=m
|
||||||
|
|
||||||
@@ -4893,6 +4899,7 @@ CONFIG_GPIO_ICH=m
|
|||||||
CONFIG_GPIO_MB86S7X=m
|
CONFIG_GPIO_MB86S7X=m
|
||||||
CONFIG_GPIO_MENZ127=m
|
CONFIG_GPIO_MENZ127=m
|
||||||
CONFIG_GPIO_SIOX=m
|
CONFIG_GPIO_SIOX=m
|
||||||
|
CONFIG_GPIO_TANGIER=m
|
||||||
CONFIG_GPIO_VX855=m
|
CONFIG_GPIO_VX855=m
|
||||||
CONFIG_GPIO_AMD_FCH=m
|
CONFIG_GPIO_AMD_FCH=m
|
||||||
# end of Memory mapped GPIO drivers
|
# end of Memory mapped GPIO drivers
|
||||||
@@ -4911,7 +4918,7 @@ CONFIG_GPIO_WS16C48=m
|
|||||||
#
|
#
|
||||||
# I2C GPIO expanders
|
# I2C GPIO expanders
|
||||||
#
|
#
|
||||||
# CONFIG_GPIO_FXL6408 is not set
|
CONFIG_GPIO_FXL6408=m
|
||||||
CONFIG_GPIO_MAX7300=m
|
CONFIG_GPIO_MAX7300=m
|
||||||
CONFIG_GPIO_MAX732X=m
|
CONFIG_GPIO_MAX732X=m
|
||||||
CONFIG_GPIO_PCA953X=m
|
CONFIG_GPIO_PCA953X=m
|
||||||
@@ -4931,7 +4938,7 @@ CONFIG_GPIO_CRYSTAL_COVE=m
|
|||||||
CONFIG_GPIO_DA9052=m
|
CONFIG_GPIO_DA9052=m
|
||||||
CONFIG_GPIO_DA9055=m
|
CONFIG_GPIO_DA9055=m
|
||||||
CONFIG_GPIO_DLN2=m
|
CONFIG_GPIO_DLN2=m
|
||||||
# CONFIG_GPIO_ELKHARTLAKE is not set
|
CONFIG_GPIO_ELKHARTLAKE=m
|
||||||
CONFIG_GPIO_JANZ_TTL=m
|
CONFIG_GPIO_JANZ_TTL=m
|
||||||
CONFIG_GPIO_KEMPLD=m
|
CONFIG_GPIO_KEMPLD=m
|
||||||
CONFIG_GPIO_LP3943=m
|
CONFIG_GPIO_LP3943=m
|
||||||
@@ -5248,7 +5255,7 @@ CONFIG_SENSORS_OXP=m
|
|||||||
CONFIG_SENSORS_PCF8591=m
|
CONFIG_SENSORS_PCF8591=m
|
||||||
CONFIG_PMBUS=m
|
CONFIG_PMBUS=m
|
||||||
CONFIG_SENSORS_PMBUS=m
|
CONFIG_SENSORS_PMBUS=m
|
||||||
# CONFIG_SENSORS_ACBEL_FSG032 is not set
|
CONFIG_SENSORS_ACBEL_FSG032=m
|
||||||
CONFIG_SENSORS_ADM1266=m
|
CONFIG_SENSORS_ADM1266=m
|
||||||
CONFIG_SENSORS_ADM1275=m
|
CONFIG_SENSORS_ADM1275=m
|
||||||
CONFIG_SENSORS_BEL_PFE=m
|
CONFIG_SENSORS_BEL_PFE=m
|
||||||
@@ -5735,12 +5742,12 @@ CONFIG_REGULATOR_PV88090=m
|
|||||||
CONFIG_REGULATOR_PWM=m
|
CONFIG_REGULATOR_PWM=m
|
||||||
CONFIG_REGULATOR_RC5T583=m
|
CONFIG_REGULATOR_RC5T583=m
|
||||||
CONFIG_REGULATOR_RT4801=m
|
CONFIG_REGULATOR_RT4801=m
|
||||||
# CONFIG_REGULATOR_RT4803 is not set
|
CONFIG_REGULATOR_RT4803=m
|
||||||
CONFIG_REGULATOR_RT4831=m
|
CONFIG_REGULATOR_RT4831=m
|
||||||
CONFIG_REGULATOR_RT5033=m
|
CONFIG_REGULATOR_RT5033=m
|
||||||
CONFIG_REGULATOR_RT5120=m
|
CONFIG_REGULATOR_RT5120=m
|
||||||
CONFIG_REGULATOR_RT5190A=m
|
CONFIG_REGULATOR_RT5190A=m
|
||||||
# CONFIG_REGULATOR_RT5739 is not set
|
CONFIG_REGULATOR_RT5739=m
|
||||||
CONFIG_REGULATOR_RT5759=m
|
CONFIG_REGULATOR_RT5759=m
|
||||||
CONFIG_REGULATOR_RT6160=m
|
CONFIG_REGULATOR_RT6160=m
|
||||||
CONFIG_REGULATOR_RT6190=m
|
CONFIG_REGULATOR_RT6190=m
|
||||||
@@ -6106,6 +6113,7 @@ CONFIG_DVB_BUDGET_CORE=m
|
|||||||
CONFIG_DVB_BUDGET=m
|
CONFIG_DVB_BUDGET=m
|
||||||
CONFIG_DVB_BUDGET_CI=m
|
CONFIG_DVB_BUDGET_CI=m
|
||||||
CONFIG_DVB_BUDGET_AV=m
|
CONFIG_DVB_BUDGET_AV=m
|
||||||
|
CONFIG_IPU_BRIDGE=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
|
||||||
@@ -6290,10 +6298,7 @@ CONFIG_MEDIA_ATTACH=y
|
|||||||
# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
|
# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
|
||||||
#
|
#
|
||||||
CONFIG_VIDEO_IR_I2C=m
|
CONFIG_VIDEO_IR_I2C=m
|
||||||
|
CONFIG_VIDEO_CAMERA_SENSOR=y
|
||||||
#
|
|
||||||
# Camera sensor devices
|
|
||||||
#
|
|
||||||
CONFIG_VIDEO_APTINA_PLL=m
|
CONFIG_VIDEO_APTINA_PLL=m
|
||||||
CONFIG_VIDEO_CCS_PLL=m
|
CONFIG_VIDEO_CCS_PLL=m
|
||||||
CONFIG_VIDEO_AR0521=m
|
CONFIG_VIDEO_AR0521=m
|
||||||
@@ -6355,7 +6360,6 @@ CONFIG_VIDEO_S5K5BAF=m
|
|||||||
CONFIG_VIDEO_S5K6A3=m
|
CONFIG_VIDEO_S5K6A3=m
|
||||||
CONFIG_VIDEO_CCS=m
|
CONFIG_VIDEO_CCS=m
|
||||||
CONFIG_VIDEO_ET8EK8=m
|
CONFIG_VIDEO_ET8EK8=m
|
||||||
# end of Camera sensor devices
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Lens drivers
|
# Lens drivers
|
||||||
@@ -6844,7 +6848,7 @@ CONFIG_FB_EFI=y
|
|||||||
# CONFIG_FB_UDL is not set
|
# CONFIG_FB_UDL is not set
|
||||||
# CONFIG_FB_IBM_GXT4500 is not set
|
# CONFIG_FB_IBM_GXT4500 is not set
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
# CONFIG_XEN_FBDEV_FRONTEND is not set
|
CONFIG_XEN_FBDEV_FRONTEND=m
|
||||||
# CONFIG_FB_METRONOME is not set
|
# CONFIG_FB_METRONOME is not set
|
||||||
# CONFIG_FB_MB862XX is not set
|
# CONFIG_FB_MB862XX is not set
|
||||||
# CONFIG_FB_HYPERV is not set
|
# CONFIG_FB_HYPERV is not set
|
||||||
@@ -6925,7 +6929,7 @@ CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
|||||||
CONFIG_DRM_ACCEL=y
|
CONFIG_DRM_ACCEL=y
|
||||||
CONFIG_DRM_ACCEL_HABANALABS=m
|
CONFIG_DRM_ACCEL_HABANALABS=m
|
||||||
CONFIG_DRM_ACCEL_IVPU=m
|
CONFIG_DRM_ACCEL_IVPU=m
|
||||||
# CONFIG_DRM_ACCEL_QAIC is not set
|
CONFIG_DRM_ACCEL_QAIC=m
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
CONFIG_SOUND_OSS_CORE=y
|
CONFIG_SOUND_OSS_CORE=y
|
||||||
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
|
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
|
||||||
@@ -6987,7 +6991,7 @@ CONFIG_SND_SERIAL_U16550=m
|
|||||||
CONFIG_SND_MPU401=m
|
CONFIG_SND_MPU401=m
|
||||||
CONFIG_SND_PORTMAN2X4=m
|
CONFIG_SND_PORTMAN2X4=m
|
||||||
CONFIG_SND_AC97_POWER_SAVE=y
|
CONFIG_SND_AC97_POWER_SAVE=y
|
||||||
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
|
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=10
|
||||||
CONFIG_SND_SB_COMMON=m
|
CONFIG_SND_SB_COMMON=m
|
||||||
CONFIG_SND_PCI=y
|
CONFIG_SND_PCI=y
|
||||||
CONFIG_SND_AD1889=m
|
CONFIG_SND_AD1889=m
|
||||||
@@ -7092,7 +7096,7 @@ CONFIG_SND_HDA_CODEC_CA0132_DSP=y
|
|||||||
CONFIG_SND_HDA_CODEC_CMEDIA=m
|
CONFIG_SND_HDA_CODEC_CMEDIA=m
|
||||||
CONFIG_SND_HDA_CODEC_SI3054=m
|
CONFIG_SND_HDA_CODEC_SI3054=m
|
||||||
CONFIG_SND_HDA_GENERIC=m
|
CONFIG_SND_HDA_GENERIC=m
|
||||||
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
|
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10
|
||||||
CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
|
CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
|
||||||
# CONFIG_SND_HDA_CTL_DEV_ID is not set
|
# CONFIG_SND_HDA_CTL_DEV_ID is not set
|
||||||
# end of HD-Audio
|
# end of HD-Audio
|
||||||
@@ -7408,9 +7412,11 @@ CONFIG_SND_SOC_CS35L41_I2C=m
|
|||||||
CONFIG_SND_SOC_CS35L45=m
|
CONFIG_SND_SOC_CS35L45=m
|
||||||
CONFIG_SND_SOC_CS35L45_SPI=m
|
CONFIG_SND_SOC_CS35L45_SPI=m
|
||||||
CONFIG_SND_SOC_CS35L45_I2C=m
|
CONFIG_SND_SOC_CS35L45_I2C=m
|
||||||
# CONFIG_SND_SOC_CS35L56_I2C is not set
|
CONFIG_SND_SOC_CS35L56=m
|
||||||
# CONFIG_SND_SOC_CS35L56_SPI is not set
|
CONFIG_SND_SOC_CS35L56_SHARED=m
|
||||||
# CONFIG_SND_SOC_CS35L56_SDW is not set
|
CONFIG_SND_SOC_CS35L56_I2C=m
|
||||||
|
CONFIG_SND_SOC_CS35L56_SPI=m
|
||||||
|
CONFIG_SND_SOC_CS35L56_SDW=m
|
||||||
CONFIG_SND_SOC_CS42L42_CORE=m
|
CONFIG_SND_SOC_CS42L42_CORE=m
|
||||||
CONFIG_SND_SOC_CS42L42=m
|
CONFIG_SND_SOC_CS42L42=m
|
||||||
CONFIG_SND_SOC_CS42L42_SDW=m
|
CONFIG_SND_SOC_CS42L42_SDW=m
|
||||||
@@ -7458,7 +7464,7 @@ CONFIG_SND_SOC_MAX98504=m
|
|||||||
CONFIG_SND_SOC_MAX9867=m
|
CONFIG_SND_SOC_MAX9867=m
|
||||||
CONFIG_SND_SOC_MAX98927=m
|
CONFIG_SND_SOC_MAX98927=m
|
||||||
CONFIG_SND_SOC_MAX98520=m
|
CONFIG_SND_SOC_MAX98520=m
|
||||||
# CONFIG_SND_SOC_MAX98363 is not set
|
CONFIG_SND_SOC_MAX98363=m
|
||||||
CONFIG_SND_SOC_MAX98373=m
|
CONFIG_SND_SOC_MAX98373=m
|
||||||
CONFIG_SND_SOC_MAX98373_I2C=m
|
CONFIG_SND_SOC_MAX98373_I2C=m
|
||||||
CONFIG_SND_SOC_MAX98373_SDW=m
|
CONFIG_SND_SOC_MAX98373_SDW=m
|
||||||
@@ -7523,7 +7529,7 @@ CONFIG_SND_SOC_RT711=m
|
|||||||
CONFIG_SND_SOC_RT711_SDW=m
|
CONFIG_SND_SOC_RT711_SDW=m
|
||||||
CONFIG_SND_SOC_RT711_SDCA_SDW=m
|
CONFIG_SND_SOC_RT711_SDCA_SDW=m
|
||||||
CONFIG_SND_SOC_RT712_SDCA_SDW=m
|
CONFIG_SND_SOC_RT712_SDCA_SDW=m
|
||||||
# CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW is not set
|
CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m
|
||||||
CONFIG_SND_SOC_RT715=m
|
CONFIG_SND_SOC_RT715=m
|
||||||
CONFIG_SND_SOC_RT715_SDW=m
|
CONFIG_SND_SOC_RT715_SDW=m
|
||||||
CONFIG_SND_SOC_RT715_SDCA_SDW=m
|
CONFIG_SND_SOC_RT715_SDCA_SDW=m
|
||||||
@@ -7799,7 +7805,7 @@ CONFIG_USB_HIDDEV=y
|
|||||||
|
|
||||||
CONFIG_I2C_HID=m
|
CONFIG_I2C_HID=m
|
||||||
CONFIG_I2C_HID_ACPI=m
|
CONFIG_I2C_HID_ACPI=m
|
||||||
# CONFIG_I2C_HID_OF is not set
|
CONFIG_I2C_HID_OF=m
|
||||||
CONFIG_I2C_HID_CORE=m
|
CONFIG_I2C_HID_CORE=m
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -8332,7 +8338,7 @@ CONFIG_LEDS_DA9052=m
|
|||||||
CONFIG_LEDS_DAC124S085=m
|
CONFIG_LEDS_DAC124S085=m
|
||||||
CONFIG_LEDS_PWM=m
|
CONFIG_LEDS_PWM=m
|
||||||
CONFIG_LEDS_REGULATOR=m
|
CONFIG_LEDS_REGULATOR=m
|
||||||
# CONFIG_LEDS_BD2606MVV is not set
|
CONFIG_LEDS_BD2606MVV=m
|
||||||
CONFIG_LEDS_BD2802=m
|
CONFIG_LEDS_BD2802=m
|
||||||
CONFIG_LEDS_INTEL_SS4200=m
|
CONFIG_LEDS_INTEL_SS4200=m
|
||||||
CONFIG_LEDS_LT3593=m
|
CONFIG_LEDS_LT3593=m
|
||||||
@@ -8362,7 +8368,7 @@ CONFIG_LEDS_TPS6105X=m
|
|||||||
#
|
#
|
||||||
CONFIG_LEDS_AS3645A=m
|
CONFIG_LEDS_AS3645A=m
|
||||||
CONFIG_LEDS_LM3601X=m
|
CONFIG_LEDS_LM3601X=m
|
||||||
# CONFIG_LEDS_MT6370_FLASH is not set
|
CONFIG_LEDS_MT6370_FLASH=m
|
||||||
CONFIG_LEDS_RT8515=m
|
CONFIG_LEDS_RT8515=m
|
||||||
CONFIG_LEDS_SGM3140=m
|
CONFIG_LEDS_SGM3140=m
|
||||||
|
|
||||||
@@ -8370,7 +8376,7 @@ CONFIG_LEDS_SGM3140=m
|
|||||||
# RGB LED drivers
|
# RGB LED drivers
|
||||||
#
|
#
|
||||||
CONFIG_LEDS_PWM_MULTICOLOR=m
|
CONFIG_LEDS_PWM_MULTICOLOR=m
|
||||||
# CONFIG_LEDS_MT6370_RGB is not set
|
CONFIG_LEDS_MT6370_RGB=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# LED Triggers
|
# LED Triggers
|
||||||
@@ -8864,17 +8870,7 @@ CONFIG_AD2S1210=m
|
|||||||
|
|
||||||
# CONFIG_FB_SM750 is not set
|
# CONFIG_FB_SM750 is not set
|
||||||
CONFIG_STAGING_MEDIA=y
|
CONFIG_STAGING_MEDIA=y
|
||||||
CONFIG_INTEL_ATOMISP=y
|
# CONFIG_INTEL_ATOMISP is not set
|
||||||
CONFIG_VIDEO_ATOMISP=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_ISP2401=y
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV2722=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_GC2235=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_MSRLIST_HELPER=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_MT9M114=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_GC0310=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV2680=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_OV5693=m
|
|
||||||
CONFIG_VIDEO_ATOMISP_LM3554=m
|
|
||||||
CONFIG_DVB_AV7110_IR=y
|
CONFIG_DVB_AV7110_IR=y
|
||||||
CONFIG_DVB_AV7110=m
|
CONFIG_DVB_AV7110=m
|
||||||
CONFIG_DVB_AV7110_OSD=y
|
CONFIG_DVB_AV7110_OSD=y
|
||||||
@@ -8994,7 +8990,7 @@ CONFIG_HP_WMI=m
|
|||||||
CONFIG_WIRELESS_HOTKEY=m
|
CONFIG_WIRELESS_HOTKEY=m
|
||||||
CONFIG_IBM_RTL=m
|
CONFIG_IBM_RTL=m
|
||||||
CONFIG_IDEAPAD_LAPTOP=m
|
CONFIG_IDEAPAD_LAPTOP=m
|
||||||
# CONFIG_LENOVO_YMC is not set
|
CONFIG_LENOVO_YMC=m
|
||||||
CONFIG_SENSORS_HDAPS=m
|
CONFIG_SENSORS_HDAPS=m
|
||||||
CONFIG_THINKPAD_ACPI=m
|
CONFIG_THINKPAD_ACPI=m
|
||||||
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
|
||||||
@@ -9006,6 +9002,7 @@ CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
|
|||||||
CONFIG_THINKPAD_LMI=m
|
CONFIG_THINKPAD_LMI=m
|
||||||
CONFIG_INTEL_ATOMISP2_PDX86=y
|
CONFIG_INTEL_ATOMISP2_PDX86=y
|
||||||
CONFIG_INTEL_ATOMISP2_LED=m
|
CONFIG_INTEL_ATOMISP2_LED=m
|
||||||
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
CONFIG_INTEL_IFS=m
|
CONFIG_INTEL_IFS=m
|
||||||
CONFIG_INTEL_SAR_INT1092=m
|
CONFIG_INTEL_SAR_INT1092=m
|
||||||
CONFIG_INTEL_SKL_INT3472=m
|
CONFIG_INTEL_SKL_INT3472=m
|
||||||
@@ -9037,7 +9034,7 @@ CONFIG_INTEL_VBTN=m
|
|||||||
CONFIG_INTEL_INT0002_VGPIO=m
|
CONFIG_INTEL_INT0002_VGPIO=m
|
||||||
CONFIG_INTEL_OAKTRAIL=m
|
CONFIG_INTEL_OAKTRAIL=m
|
||||||
CONFIG_INTEL_BXTWC_PMIC_TMU=m
|
CONFIG_INTEL_BXTWC_PMIC_TMU=m
|
||||||
# CONFIG_INTEL_BYTCRC_PWRSRC is not set
|
CONFIG_INTEL_BYTCRC_PWRSRC=m
|
||||||
CONFIG_INTEL_CHTDC_TI_PWRBTN=m
|
CONFIG_INTEL_CHTDC_TI_PWRBTN=m
|
||||||
CONFIG_INTEL_CHTWC_INT33FE=m
|
CONFIG_INTEL_CHTWC_INT33FE=m
|
||||||
CONFIG_INTEL_ISHTP_ECLITE=m
|
CONFIG_INTEL_ISHTP_ECLITE=m
|
||||||
@@ -9049,7 +9046,7 @@ CONFIG_INTEL_SMARTCONNECT=m
|
|||||||
CONFIG_INTEL_TPMI=m
|
CONFIG_INTEL_TPMI=m
|
||||||
CONFIG_INTEL_TURBO_MAX_3=y
|
CONFIG_INTEL_TURBO_MAX_3=y
|
||||||
CONFIG_INTEL_VSEC=m
|
CONFIG_INTEL_VSEC=m
|
||||||
# CONFIG_MSI_EC is not set
|
CONFIG_MSI_EC=m
|
||||||
CONFIG_MSI_LAPTOP=m
|
CONFIG_MSI_LAPTOP=m
|
||||||
CONFIG_MSI_WMI=m
|
CONFIG_MSI_WMI=m
|
||||||
CONFIG_PCENGINES_APU2=m
|
CONFIG_PCENGINES_APU2=m
|
||||||
@@ -9165,7 +9162,7 @@ CONFIG_SOUNDWIRE=m
|
|||||||
#
|
#
|
||||||
# SoundWire Devices
|
# SoundWire Devices
|
||||||
#
|
#
|
||||||
# CONFIG_SOUNDWIRE_AMD is not set
|
CONFIG_SOUNDWIRE_AMD=m
|
||||||
CONFIG_SOUNDWIRE_CADENCE=m
|
CONFIG_SOUNDWIRE_CADENCE=m
|
||||||
CONFIG_SOUNDWIRE_INTEL=m
|
CONFIG_SOUNDWIRE_INTEL=m
|
||||||
CONFIG_SOUNDWIRE_QCOM=m
|
CONFIG_SOUNDWIRE_QCOM=m
|
||||||
@@ -9271,6 +9268,7 @@ CONFIG_IIO_BUFFER_HW_CONSUMER=m
|
|||||||
CONFIG_IIO_KFIFO_BUF=m
|
CONFIG_IIO_KFIFO_BUF=m
|
||||||
CONFIG_IIO_TRIGGERED_BUFFER=m
|
CONFIG_IIO_TRIGGERED_BUFFER=m
|
||||||
CONFIG_IIO_CONFIGFS=m
|
CONFIG_IIO_CONFIGFS=m
|
||||||
|
CONFIG_IIO_GTS_HELPER=m
|
||||||
CONFIG_IIO_TRIGGER=y
|
CONFIG_IIO_TRIGGER=y
|
||||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||||
CONFIG_IIO_SW_DEVICE=m
|
CONFIG_IIO_SW_DEVICE=m
|
||||||
@@ -9410,7 +9408,7 @@ 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=m
|
||||||
# CONFIG_TI_ADS1100 is not set
|
CONFIG_TI_ADS1100=m
|
||||||
CONFIG_TI_ADS7950=m
|
CONFIG_TI_ADS7950=m
|
||||||
CONFIG_TI_ADS8344=m
|
CONFIG_TI_ADS8344=m
|
||||||
CONFIG_TI_ADS8688=m
|
CONFIG_TI_ADS8688=m
|
||||||
@@ -9705,7 +9703,7 @@ CONFIG_ISL29125=m
|
|||||||
CONFIG_HID_SENSOR_ALS=m
|
CONFIG_HID_SENSOR_ALS=m
|
||||||
CONFIG_HID_SENSOR_PROX=m
|
CONFIG_HID_SENSOR_PROX=m
|
||||||
CONFIG_JSA1212=m
|
CONFIG_JSA1212=m
|
||||||
# CONFIG_ROHM_BU27034 is not set
|
CONFIG_ROHM_BU27034=m
|
||||||
CONFIG_RPR0521=m
|
CONFIG_RPR0521=m
|
||||||
CONFIG_SENSORS_LM3533=m
|
CONFIG_SENSORS_LM3533=m
|
||||||
CONFIG_LTR501=m
|
CONFIG_LTR501=m
|
||||||
@@ -10008,8 +10006,8 @@ CONFIG_NVMEM_SYSFS=y
|
|||||||
#
|
#
|
||||||
# Layout Types
|
# Layout Types
|
||||||
#
|
#
|
||||||
# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set
|
CONFIG_NVMEM_LAYOUT_SL28_VPD=m
|
||||||
# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set
|
CONFIG_NVMEM_LAYOUT_ONIE_TLV=m
|
||||||
# end of Layout Types
|
# end of Layout Types
|
||||||
|
|
||||||
CONFIG_NVMEM_RAVE_SP_EEPROM=m
|
CONFIG_NVMEM_RAVE_SP_EEPROM=m
|
||||||
@@ -10434,7 +10432,7 @@ CONFIG_SMB_SERVER=m
|
|||||||
CONFIG_SMB_SERVER_SMBDIRECT=y
|
CONFIG_SMB_SERVER_SMBDIRECT=y
|
||||||
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
|
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
|
||||||
CONFIG_SMB_SERVER_KERBEROS5=y
|
CONFIG_SMB_SERVER_KERBEROS5=y
|
||||||
CONFIG_SMBFS_COMMON=m
|
CONFIG_SMBFS=m
|
||||||
CONFIG_CODA_FS=m
|
CONFIG_CODA_FS=m
|
||||||
CONFIG_AFS_FS=m
|
CONFIG_AFS_FS=m
|
||||||
# CONFIG_AFS_DEBUG is not set
|
# CONFIG_AFS_DEBUG is not set
|
||||||
@@ -11346,7 +11344,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
|
|||||||
CONFIG_FTRACE_MCOUNT_USE_CC=y
|
CONFIG_FTRACE_MCOUNT_USE_CC=y
|
||||||
CONFIG_TRACING_MAP=y
|
CONFIG_TRACING_MAP=y
|
||||||
CONFIG_SYNTH_EVENTS=y
|
CONFIG_SYNTH_EVENTS=y
|
||||||
# CONFIG_USER_EVENTS is not set
|
CONFIG_USER_EVENTS=y
|
||||||
CONFIG_HIST_TRIGGERS=y
|
CONFIG_HIST_TRIGGERS=y
|
||||||
# CONFIG_TRACE_EVENT_INJECT is not set
|
# CONFIG_TRACE_EVENT_INJECT is not set
|
||||||
# CONFIG_TRACEPOINT_BENCHMARK is not set
|
# CONFIG_TRACEPOINT_BENCHMARK is not set
|
||||||
|
14
linux-tkg-config/6.5/90-cleanup.hook
Normal file
14
linux-tkg-config/6.5/90-cleanup.hook
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[Trigger]
|
||||||
|
Type = File
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Operation = Remove
|
||||||
|
Target = usr/lib/modules/*/
|
||||||
|
Target = !usr/lib/modules/*/?*
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Cleaning up...
|
||||||
|
When = PostTransaction
|
||||||
|
Exec = /usr/share/libalpm/scripts/cleanup
|
||||||
|
NeedsTargets
|
||||||
|
|
10
linux-tkg-config/6.5/cleanup
Executable file
10
linux-tkg-config/6.5/cleanup
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for _f in /usr/lib/modules/*tkg*; do
|
||||||
|
if [[ ! -e ${_f}/vmlinuz ]]; then
|
||||||
|
rm -rf "$_f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# vim:set ft=sh sw=2 et:
|
||||||
|
|
11543
linux-tkg-config/6.5/config.x86_64
Normal file
11543
linux-tkg-config/6.5/config.x86_64
Normal file
File diff suppressed because it is too large
Load Diff
676
linux-tkg-config/6.5/minimal-modprobed.db
Normal file
676
linux-tkg-config/6.5/minimal-modprobed.db
Normal file
@@ -0,0 +1,676 @@
|
|||||||
|
8021q
|
||||||
|
8250_dw
|
||||||
|
842
|
||||||
|
842_compress
|
||||||
|
842_decompress
|
||||||
|
9p
|
||||||
|
9pnet
|
||||||
|
9pnet_virtio
|
||||||
|
ac97_bus
|
||||||
|
acer_wireless
|
||||||
|
acer_wmi
|
||||||
|
acpi_cpufreq
|
||||||
|
acpi_mdio
|
||||||
|
acpi_pad
|
||||||
|
acpi_tad
|
||||||
|
acpi_thermal_rel
|
||||||
|
aesni_intel
|
||||||
|
af_alg
|
||||||
|
af_key
|
||||||
|
af_packet
|
||||||
|
agpgart
|
||||||
|
ahci
|
||||||
|
algif_aead
|
||||||
|
algif_hash
|
||||||
|
algif_skcipher
|
||||||
|
alx
|
||||||
|
amd64_edac
|
||||||
|
amd_pmc
|
||||||
|
amd_pstate
|
||||||
|
amdgpu
|
||||||
|
amdxcp
|
||||||
|
apple_mfi_fastcharge
|
||||||
|
appletalk
|
||||||
|
asn1_encoder
|
||||||
|
asus_atk0110
|
||||||
|
asus_nb_wmi
|
||||||
|
asus_wmi
|
||||||
|
ata_generic
|
||||||
|
ata_piix
|
||||||
|
ath
|
||||||
|
ath9k_common
|
||||||
|
ath9k_htc
|
||||||
|
ath9k_hw
|
||||||
|
atkbd
|
||||||
|
atl1c
|
||||||
|
auth_rpcgss
|
||||||
|
autofs4
|
||||||
|
battery
|
||||||
|
bch
|
||||||
|
binder
|
||||||
|
binfmt_misc
|
||||||
|
blake2b_generic
|
||||||
|
bluetooth
|
||||||
|
bnep
|
||||||
|
bpf
|
||||||
|
bpf_preload
|
||||||
|
br_netfilter
|
||||||
|
bridge
|
||||||
|
btbcm
|
||||||
|
btcoexist
|
||||||
|
btintel
|
||||||
|
btmtk
|
||||||
|
btrfs
|
||||||
|
btrtl
|
||||||
|
btusb
|
||||||
|
button
|
||||||
|
cbc
|
||||||
|
ccm
|
||||||
|
ccp
|
||||||
|
cdc_acm
|
||||||
|
cdc_ether
|
||||||
|
cdc_mbim
|
||||||
|
cdc_ncm
|
||||||
|
cdc_wdm
|
||||||
|
cdrom
|
||||||
|
cec
|
||||||
|
cfbcopyarea
|
||||||
|
cfbfillrect
|
||||||
|
cfbimgblt
|
||||||
|
cfg80211
|
||||||
|
cgroup
|
||||||
|
ch341
|
||||||
|
chacha_x86_64
|
||||||
|
chipreg
|
||||||
|
cifs
|
||||||
|
cifs_arc4
|
||||||
|
cifs_md4
|
||||||
|
cls_cgroup
|
||||||
|
cmac
|
||||||
|
cmdlinepart
|
||||||
|
coretemp
|
||||||
|
cpufreq_ondemand
|
||||||
|
crc16
|
||||||
|
crc32_generic
|
||||||
|
crc32_pclmul
|
||||||
|
crc32c_generic
|
||||||
|
crc32c_intel
|
||||||
|
crc64
|
||||||
|
crc64_rocksoft
|
||||||
|
crc64_rocksoft_generic
|
||||||
|
crc_itu_t
|
||||||
|
crct10dif_pclmul
|
||||||
|
cryptd
|
||||||
|
crypto_null
|
||||||
|
crypto_simd
|
||||||
|
crypto_user
|
||||||
|
curve25519_x86_64
|
||||||
|
cuse
|
||||||
|
dca
|
||||||
|
des_generic
|
||||||
|
dm_crypt
|
||||||
|
dm_log
|
||||||
|
dm_mirror
|
||||||
|
dm_mod
|
||||||
|
dm_multipath
|
||||||
|
dm_region_hash
|
||||||
|
dm_round_robin
|
||||||
|
dmi_sysfs
|
||||||
|
dns_resolver
|
||||||
|
drm
|
||||||
|
drm_buddy
|
||||||
|
drm_display_helper
|
||||||
|
drm_kms_helper
|
||||||
|
drm_panel_orientation_quirks
|
||||||
|
drm_suballoc_helper
|
||||||
|
drm_ttm_helper
|
||||||
|
dvb_core
|
||||||
|
ebtable_filter
|
||||||
|
ebtables
|
||||||
|
ec_sys
|
||||||
|
ecb
|
||||||
|
ecc
|
||||||
|
ecdh_generic
|
||||||
|
edac_mce_amd
|
||||||
|
ee1004
|
||||||
|
eeepc_wmi
|
||||||
|
eeprom
|
||||||
|
efi_pstore
|
||||||
|
efivarfs
|
||||||
|
ehci_hcd
|
||||||
|
ehci_pci
|
||||||
|
enclosure
|
||||||
|
encrypted_keys
|
||||||
|
evdev
|
||||||
|
exfat
|
||||||
|
ext2
|
||||||
|
ext4
|
||||||
|
f2fs
|
||||||
|
fan
|
||||||
|
fat
|
||||||
|
fb_sys_fops
|
||||||
|
ff_memless
|
||||||
|
fixed_phy
|
||||||
|
fjes
|
||||||
|
fscache
|
||||||
|
ftdi_sio
|
||||||
|
fuse
|
||||||
|
fwnode_mdio
|
||||||
|
garp
|
||||||
|
gcm
|
||||||
|
gf128mul
|
||||||
|
ghash_clmulni_intel
|
||||||
|
ghash_generic
|
||||||
|
gigabyte_wmi
|
||||||
|
gpio_amdpt
|
||||||
|
gpio_generic
|
||||||
|
gpu_sched
|
||||||
|
grace
|
||||||
|
hfs
|
||||||
|
hfsplus
|
||||||
|
hid
|
||||||
|
hid_apple
|
||||||
|
hid_asus
|
||||||
|
hid_generic
|
||||||
|
hid_hyperv
|
||||||
|
hid_logitech_dj
|
||||||
|
hid_logitech_hidpp
|
||||||
|
hid_microsoft
|
||||||
|
hid_multitouch
|
||||||
|
hid_nintendo
|
||||||
|
hid_playstation
|
||||||
|
hid_roccat
|
||||||
|
hid_roccat_common
|
||||||
|
hid_roccat_koneplus
|
||||||
|
hid_roccat_ryos
|
||||||
|
hid_sony
|
||||||
|
hid_steam
|
||||||
|
hid_wiimote
|
||||||
|
hidp
|
||||||
|
hp_wmi
|
||||||
|
hv_balloon
|
||||||
|
hv_netvsc
|
||||||
|
hv_storvsc
|
||||||
|
hv_utils
|
||||||
|
hv_vmbus
|
||||||
|
hwmon_vid
|
||||||
|
hyperv_drm
|
||||||
|
hyperv_keyboard
|
||||||
|
i2c_algo_bit
|
||||||
|
i2c_core
|
||||||
|
i2c_dev
|
||||||
|
i2c_hid
|
||||||
|
i2c_hid_acpi
|
||||||
|
i2c_i801
|
||||||
|
i2c_mux
|
||||||
|
i2c_nvidia_gpu
|
||||||
|
i2c_piix4
|
||||||
|
i2c_smbus
|
||||||
|
i8042
|
||||||
|
i915
|
||||||
|
iTCO_vendor_support
|
||||||
|
iTCO_wdt
|
||||||
|
ib_cm
|
||||||
|
ib_core
|
||||||
|
idma64
|
||||||
|
igb
|
||||||
|
igc
|
||||||
|
inet_diag
|
||||||
|
input_leds
|
||||||
|
int3400_thermal
|
||||||
|
int3403_thermal
|
||||||
|
int340x_thermal_zone
|
||||||
|
intel_agp
|
||||||
|
intel_cstate
|
||||||
|
intel_gtt
|
||||||
|
intel_hid
|
||||||
|
intel_lpss
|
||||||
|
intel_lpss_pci
|
||||||
|
intel_pch_thermal
|
||||||
|
intel_pmc_bxt
|
||||||
|
intel_powerclamp
|
||||||
|
intel_rapl_common
|
||||||
|
intel_rapl_msr
|
||||||
|
intel_soc_dts_iosf
|
||||||
|
intel_tcc_cooling
|
||||||
|
intel_uncore
|
||||||
|
intel_vsec
|
||||||
|
intel_wmi_thunderbolt
|
||||||
|
iommu_v2
|
||||||
|
iommufd
|
||||||
|
ip6_tables
|
||||||
|
ip6_udp_tunnel
|
||||||
|
ip6t_REJECT
|
||||||
|
ip6t_rt
|
||||||
|
ip6table_filter
|
||||||
|
ip6table_mangle
|
||||||
|
ip6table_nat
|
||||||
|
ip6table_raw
|
||||||
|
ip6table_security
|
||||||
|
ip_set
|
||||||
|
ip_tables
|
||||||
|
ipmi_devintf
|
||||||
|
ipmi_msghandler
|
||||||
|
ipt_REJECT
|
||||||
|
iptable_filter
|
||||||
|
iptable_mangle
|
||||||
|
iptable_nat
|
||||||
|
iptable_raw
|
||||||
|
iptable_security
|
||||||
|
ipv6
|
||||||
|
ir_kbd_i2c
|
||||||
|
irqbypass
|
||||||
|
isofs
|
||||||
|
it87
|
||||||
|
iw_cm
|
||||||
|
iwlmei
|
||||||
|
iwlmvm
|
||||||
|
iwlwifi
|
||||||
|
jbd2
|
||||||
|
jc42
|
||||||
|
jfs
|
||||||
|
joydev
|
||||||
|
k10temp
|
||||||
|
ksmbd
|
||||||
|
kvm
|
||||||
|
kvm_amd
|
||||||
|
kvm_intel
|
||||||
|
led_class_multicolor
|
||||||
|
ledtrig_audio
|
||||||
|
ledtrig_timer
|
||||||
|
libahci
|
||||||
|
libarc4
|
||||||
|
libata
|
||||||
|
libchacha
|
||||||
|
libchacha20poly1305
|
||||||
|
libcrc32c
|
||||||
|
libcurve25519_generic
|
||||||
|
libdes
|
||||||
|
libphy
|
||||||
|
libps2
|
||||||
|
llc
|
||||||
|
lm75
|
||||||
|
lm83
|
||||||
|
lockd
|
||||||
|
loop
|
||||||
|
lpc_ich
|
||||||
|
lz4
|
||||||
|
lz4_compress
|
||||||
|
lz4hc_compress
|
||||||
|
lzo
|
||||||
|
lzo_rle
|
||||||
|
mac80211
|
||||||
|
mac_hid
|
||||||
|
mbcache
|
||||||
|
mc
|
||||||
|
mc44s803
|
||||||
|
md4
|
||||||
|
md_mod
|
||||||
|
mdio
|
||||||
|
mdio_devres
|
||||||
|
mei
|
||||||
|
mei_gsc
|
||||||
|
mei_hdcp
|
||||||
|
mei_me
|
||||||
|
mei_pxp
|
||||||
|
mii
|
||||||
|
minix
|
||||||
|
mmc_core
|
||||||
|
mousedev
|
||||||
|
mptcp_diag
|
||||||
|
mrp
|
||||||
|
msdos
|
||||||
|
msr
|
||||||
|
mt20xx
|
||||||
|
mt76
|
||||||
|
mt76_connac_lib
|
||||||
|
mt76_usb
|
||||||
|
mt76x02_lib
|
||||||
|
mt76x02_usb
|
||||||
|
mt76x2_common
|
||||||
|
mt76x2u
|
||||||
|
mt7921_common
|
||||||
|
mt7921e
|
||||||
|
mtd
|
||||||
|
mxm_wmi
|
||||||
|
nandcore
|
||||||
|
nbd
|
||||||
|
nct6683
|
||||||
|
nct6775
|
||||||
|
nct6775_core
|
||||||
|
netfs
|
||||||
|
nf_conntrack
|
||||||
|
nf_conntrack_broadcast
|
||||||
|
nf_conntrack_ftp
|
||||||
|
nf_conntrack_h323
|
||||||
|
nf_conntrack_irc
|
||||||
|
nf_conntrack_netbios_ns
|
||||||
|
nf_conntrack_netlink
|
||||||
|
nf_conntrack_pptp
|
||||||
|
nf_conntrack_sip
|
||||||
|
nf_conntrack_tftp
|
||||||
|
nf_defrag_ipv4
|
||||||
|
nf_defrag_ipv6
|
||||||
|
nf_nat
|
||||||
|
nf_nat_ftp
|
||||||
|
nf_nat_h323
|
||||||
|
nf_nat_irc
|
||||||
|
nf_nat_pptp
|
||||||
|
nf_nat_sip
|
||||||
|
nf_nat_tftp
|
||||||
|
nf_reject_ipv4
|
||||||
|
nf_reject_ipv6
|
||||||
|
nf_tables
|
||||||
|
nfnetlink
|
||||||
|
nfnetlink_log
|
||||||
|
nfnetlink_queue
|
||||||
|
nfs
|
||||||
|
nfsv4
|
||||||
|
nft_chain_nat
|
||||||
|
nft_compat
|
||||||
|
nft_ct
|
||||||
|
nft_fib
|
||||||
|
nft_fib_inet
|
||||||
|
nft_fib_ipv4
|
||||||
|
nft_fib_ipv6
|
||||||
|
nft_masq
|
||||||
|
nft_nat
|
||||||
|
nft_reject
|
||||||
|
nft_reject_inet
|
||||||
|
nft_reject_ipv4
|
||||||
|
nft_reject_ipv6
|
||||||
|
nft_xfrm
|
||||||
|
nilfs2
|
||||||
|
nlmon
|
||||||
|
nls_ascii
|
||||||
|
nls_cp437
|
||||||
|
nls_iso8859_1
|
||||||
|
nls_utf8
|
||||||
|
nouveau
|
||||||
|
ntfs
|
||||||
|
ntfs3
|
||||||
|
nvidia_wmi_ec_backlight
|
||||||
|
nvme
|
||||||
|
nvme_common
|
||||||
|
nvme_core
|
||||||
|
nvmem_rave_sp_eeprom
|
||||||
|
nvram
|
||||||
|
overlay
|
||||||
|
p8022
|
||||||
|
parport
|
||||||
|
parport_pc
|
||||||
|
pata_acpi
|
||||||
|
pcc_cpufreq
|
||||||
|
pcspkr
|
||||||
|
pinctrl_alderlake
|
||||||
|
pinctrl_amd
|
||||||
|
pkcs8_key_parser
|
||||||
|
pktcdvd
|
||||||
|
platform_profile
|
||||||
|
pmt_class
|
||||||
|
pmt_telemetry
|
||||||
|
poly1305_x86_64
|
||||||
|
polyval_clmulni
|
||||||
|
polyval_generic
|
||||||
|
ppdev
|
||||||
|
processor_thermal_device
|
||||||
|
processor_thermal_device_pci_legacy
|
||||||
|
processor_thermal_mbox
|
||||||
|
processor_thermal_rapl
|
||||||
|
processor_thermal_rfim
|
||||||
|
psmouse
|
||||||
|
psnap
|
||||||
|
qcserial
|
||||||
|
qrtr
|
||||||
|
r8152
|
||||||
|
r8153_ecm
|
||||||
|
r8169
|
||||||
|
radeon
|
||||||
|
raid1
|
||||||
|
raid6_pq
|
||||||
|
rapl
|
||||||
|
rave_sp
|
||||||
|
raw_diag
|
||||||
|
rc_core
|
||||||
|
realtek
|
||||||
|
rfcomm
|
||||||
|
rfkill
|
||||||
|
rndis_host
|
||||||
|
rndis_wlan
|
||||||
|
rng_core
|
||||||
|
roles
|
||||||
|
rpcsec_gss_krb5
|
||||||
|
rt2800lib
|
||||||
|
rt2800usb
|
||||||
|
rt2x00lib
|
||||||
|
rt2x00usb
|
||||||
|
rtl8192ee
|
||||||
|
rtl8723_common
|
||||||
|
rtl8723ae
|
||||||
|
rtl8723be
|
||||||
|
rtl8821ae
|
||||||
|
rtl_pci
|
||||||
|
rtlwifi
|
||||||
|
rtsx_pci
|
||||||
|
rtsx_pci_sdmmc
|
||||||
|
rtw88_8821c
|
||||||
|
rtw88_8821ce
|
||||||
|
rtw88_core
|
||||||
|
rtw88_pci
|
||||||
|
sch_cake
|
||||||
|
sch_fq_codel
|
||||||
|
sch_ingress
|
||||||
|
scsi_common
|
||||||
|
scsi_mod
|
||||||
|
scsi_transport_fc
|
||||||
|
scsi_transport_sas
|
||||||
|
sd_mod
|
||||||
|
selftests
|
||||||
|
serial_multi_instantiate
|
||||||
|
serio
|
||||||
|
serio_raw
|
||||||
|
ses
|
||||||
|
sg
|
||||||
|
sha512_ssse3
|
||||||
|
snd
|
||||||
|
snd_acp3x_pdm_dma
|
||||||
|
snd_acp3x_rn
|
||||||
|
snd_acp6x_pdm_dma
|
||||||
|
snd_acp_config
|
||||||
|
snd_acp_pci
|
||||||
|
snd_aloop
|
||||||
|
snd_compress
|
||||||
|
snd_ctl_led
|
||||||
|
snd_hda_codec
|
||||||
|
snd_hda_codec_generic
|
||||||
|
snd_hda_codec_hdmi
|
||||||
|
snd_hda_codec_realtek
|
||||||
|
snd_hda_core
|
||||||
|
snd_hda_ext_core
|
||||||
|
snd_hda_intel
|
||||||
|
snd_hrtimer
|
||||||
|
snd_hwdep
|
||||||
|
snd_intel_dspcfg
|
||||||
|
snd_intel_sdw_acpi
|
||||||
|
snd_pci_acp3x
|
||||||
|
snd_pci_acp5x
|
||||||
|
snd_pci_acp6x
|
||||||
|
snd_pci_ps
|
||||||
|
snd_pcm
|
||||||
|
snd_pcm_dmaengine
|
||||||
|
snd_rawmidi
|
||||||
|
snd_rn_pci_acp3x
|
||||||
|
snd_rpl_pci_acp6x
|
||||||
|
snd_seq
|
||||||
|
snd_seq_device
|
||||||
|
snd_seq_dummy
|
||||||
|
snd_seq_midi
|
||||||
|
snd_seq_midi_event
|
||||||
|
snd_seq_oss
|
||||||
|
snd_seq_virmidi
|
||||||
|
snd_soc_acp6x_mach
|
||||||
|
snd_soc_acpi
|
||||||
|
snd_soc_acpi_intel_match
|
||||||
|
snd_soc_core
|
||||||
|
snd_soc_dmic
|
||||||
|
snd_soc_hdac_hda
|
||||||
|
snd_soc_skl
|
||||||
|
snd_soc_sst_dsp
|
||||||
|
snd_soc_sst_ipc
|
||||||
|
snd_sof
|
||||||
|
snd_sof_amd_acp
|
||||||
|
snd_sof_amd_rembrandt
|
||||||
|
snd_sof_amd_renoir
|
||||||
|
snd_sof_intel_hda
|
||||||
|
snd_sof_intel_hda_common
|
||||||
|
snd_sof_intel_hda_mlink
|
||||||
|
snd_sof_pci
|
||||||
|
snd_sof_pci_intel_cnl
|
||||||
|
snd_sof_pci_intel_tgl
|
||||||
|
snd_sof_probes
|
||||||
|
snd_sof_utils
|
||||||
|
snd_sof_xtensa_dsp
|
||||||
|
snd_timer
|
||||||
|
snd_ua101
|
||||||
|
snd_ump
|
||||||
|
snd_usb_audio
|
||||||
|
snd_usb_us122l
|
||||||
|
snd_usb_usx2y
|
||||||
|
snd_usbmidi_lib
|
||||||
|
snd_virmidi
|
||||||
|
soundcore
|
||||||
|
soundwire_bus
|
||||||
|
soundwire_cadence
|
||||||
|
soundwire_generic_allocation
|
||||||
|
soundwire_intel
|
||||||
|
sp5100_tco
|
||||||
|
sparse_keymap
|
||||||
|
spi_intel
|
||||||
|
spi_intel_pci
|
||||||
|
spi_nor
|
||||||
|
squashfs
|
||||||
|
sr_mod
|
||||||
|
st
|
||||||
|
stp
|
||||||
|
sunrpc
|
||||||
|
syscopyarea
|
||||||
|
sysfillrect
|
||||||
|
sysimgblt
|
||||||
|
t10_pi
|
||||||
|
tap
|
||||||
|
tcp_bbr
|
||||||
|
tcp_diag
|
||||||
|
tda18271
|
||||||
|
tda827x
|
||||||
|
tda8290
|
||||||
|
tda9887
|
||||||
|
tea5761
|
||||||
|
tea5767
|
||||||
|
tee
|
||||||
|
tg3
|
||||||
|
thermal
|
||||||
|
thunderbolt
|
||||||
|
tiny_power_button
|
||||||
|
tls
|
||||||
|
tpm
|
||||||
|
tpm_crb
|
||||||
|
tpm_tis
|
||||||
|
tpm_tis_core
|
||||||
|
trusted
|
||||||
|
ttm
|
||||||
|
tun
|
||||||
|
tuner_simple
|
||||||
|
tuner_types
|
||||||
|
tunnel4
|
||||||
|
tunnel6
|
||||||
|
typec
|
||||||
|
typec_ucsi
|
||||||
|
uas
|
||||||
|
ucsi_acpi
|
||||||
|
ucsi_ccg
|
||||||
|
udf
|
||||||
|
udp_diag
|
||||||
|
udp_tunnel
|
||||||
|
ufs
|
||||||
|
uhci_hcd
|
||||||
|
uhid
|
||||||
|
uinput
|
||||||
|
uio
|
||||||
|
uio_pdrv_genirq
|
||||||
|
unix_diag
|
||||||
|
usb_common
|
||||||
|
usb_storage
|
||||||
|
usb_wwan
|
||||||
|
usbcore
|
||||||
|
usbhid
|
||||||
|
usbip_core
|
||||||
|
usbip_host
|
||||||
|
usbmon
|
||||||
|
usbnet
|
||||||
|
uvc
|
||||||
|
uvcvideo
|
||||||
|
uvesafb
|
||||||
|
v4l2_dv_timings
|
||||||
|
veth
|
||||||
|
vfat
|
||||||
|
vfio
|
||||||
|
vfio_iommu_type1
|
||||||
|
vfio_pci
|
||||||
|
vfio_pci_core
|
||||||
|
vhost
|
||||||
|
vhost_iotlb
|
||||||
|
vhost_net
|
||||||
|
video
|
||||||
|
videobuf2_common
|
||||||
|
videobuf2_memops
|
||||||
|
videobuf2_v4l2
|
||||||
|
videobuf2_vmalloc
|
||||||
|
videodev
|
||||||
|
virtio_pci
|
||||||
|
virtio_pci_legacy_dev
|
||||||
|
virtio_pci_modern_dev
|
||||||
|
virtio_scsi
|
||||||
|
vivaldi_fmap
|
||||||
|
vmw_vmci
|
||||||
|
vmw_vsock_virtio_transport_common
|
||||||
|
vmw_vsock_vmci_transport
|
||||||
|
vsock
|
||||||
|
vsock_loopback
|
||||||
|
wacom
|
||||||
|
watchdog
|
||||||
|
wireguard
|
||||||
|
wireless_hotkey
|
||||||
|
wmi
|
||||||
|
wmi_bmof
|
||||||
|
x86_pkg_temp_thermal
|
||||||
|
x_tables
|
||||||
|
xc2028
|
||||||
|
xc4000
|
||||||
|
xc5000
|
||||||
|
xfrm6_tunnel
|
||||||
|
xfrm_interface
|
||||||
|
xfs
|
||||||
|
xhci_hcd
|
||||||
|
xhci_pci
|
||||||
|
xhci_pci_renesas
|
||||||
|
xor
|
||||||
|
xpad
|
||||||
|
xt_CHECKSUM
|
||||||
|
xt_LOG
|
||||||
|
xt_MASQUERADE
|
||||||
|
xt_NFQUEUE
|
||||||
|
xt_REDIRECT
|
||||||
|
xt_addrtype
|
||||||
|
xt_cgroup
|
||||||
|
xt_comment
|
||||||
|
xt_conntrack
|
||||||
|
xt_hl
|
||||||
|
xt_limit
|
||||||
|
xt_mark
|
||||||
|
xt_nat
|
||||||
|
xt_recent
|
||||||
|
xt_state
|
||||||
|
xt_tcpudp
|
||||||
|
xxhash_generic
|
||||||
|
zlib_deflate
|
||||||
|
zram
|
14
linux-tkg-config/6.6/90-cleanup.hook
Normal file
14
linux-tkg-config/6.6/90-cleanup.hook
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[Trigger]
|
||||||
|
Type = File
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Operation = Remove
|
||||||
|
Target = usr/lib/modules/*/
|
||||||
|
Target = !usr/lib/modules/*/?*
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Cleaning up...
|
||||||
|
When = PostTransaction
|
||||||
|
Exec = /usr/share/libalpm/scripts/cleanup
|
||||||
|
NeedsTargets
|
||||||
|
|
10
linux-tkg-config/6.6/cleanup
Executable file
10
linux-tkg-config/6.6/cleanup
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for _f in /usr/lib/modules/*tkg*; do
|
||||||
|
if [[ ! -e ${_f}/vmlinuz ]]; then
|
||||||
|
rm -rf "$_f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# vim:set ft=sh sw=2 et:
|
||||||
|
|
11626
linux-tkg-config/6.6/config.x86_64
Normal file
11626
linux-tkg-config/6.6/config.x86_64
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# List of kernels that are maintained upstream
|
# List of kernels that are maintained upstream
|
||||||
_current_kernels=("6.4" "6.3" "6.2" "6.1" "6.0" "5.15" "5.10" "5.4")
|
_current_kernels=("6.6" "6.5" "6.4" "6.1" "5.15")
|
||||||
|
|
||||||
# List of kernels that are no longer maintained upstream
|
# List of kernels that are no longer maintained either upstream or locally
|
||||||
_eol_kernels=("5.19" "5.18" "5.17" "5.16" "5.14" "5.13" "5.12" "5.11" "5.9" "5.8" "5.7")
|
_eol_kernels=("6.3" "6.2" "6.0" "5.19" "5.18" "5.17" "5.16" "5.14" "5.13" "5.12" "5.11" "5.9" "5.8" "5.7" "5.4.230" "5.10.135")
|
||||||
|
|
||||||
typeset -Ag _kernel_git_remotes
|
typeset -Ag _kernel_git_remotes
|
||||||
_kernel_git_remotes=(
|
_kernel_git_remotes=(
|
||||||
@@ -39,32 +39,40 @@ done
|
|||||||
# PREEMPT_RT's supported kernel subversion
|
# PREEMPT_RT's supported kernel subversion
|
||||||
typeset -Ag _rt_subver_map
|
typeset -Ag _rt_subver_map
|
||||||
_rt_subver_map=(
|
_rt_subver_map=(
|
||||||
["5.4"]="230"
|
["5.4"]="248"
|
||||||
["5.9"]="1"
|
["5.9"]="1"
|
||||||
["5.10"]="168"
|
["5.10"]="192"
|
||||||
["5.11"]="4"
|
["5.11"]="4"
|
||||||
["5.14"]="2"
|
["5.14"]="2"
|
||||||
["5.15"]="96"
|
["5.15"]="129"
|
||||||
["5.16"]="2"
|
["5.16"]="2"
|
||||||
["5.17"]="1"
|
["5.17"]="1"
|
||||||
["6.0"]="5"
|
["6.0"]="5"
|
||||||
["6.1"]="12"
|
["6.1"]="46"
|
||||||
|
["6.3"]="3"
|
||||||
|
["6.4"]="6"
|
||||||
|
["6.5"]="2"
|
||||||
|
["6.6"]="rc1"
|
||||||
)
|
)
|
||||||
|
|
||||||
# PREEMPT_RT's patch revision for the kernel
|
# PREEMPT_RT's patch revision for the kernel
|
||||||
# We separated this to allow for forcing the application of the patch when _preempt_rt_force=1 on version mismatch
|
# We separated this to allow for forcing the application of the patch when _preempt_rt_force=1 on version mismatch
|
||||||
typeset -Ag _rt_rev_map
|
typeset -Ag _rt_rev_map
|
||||||
_rt_rev_map=(
|
_rt_rev_map=(
|
||||||
["5.4"]="80"
|
["5.4"]="83"
|
||||||
["5.9"]="20"
|
["5.9"]="20"
|
||||||
["5.10"]="83"
|
["5.10"]="92"
|
||||||
["5.11"]="11"
|
["5.11"]="11"
|
||||||
["5.14"]="21"
|
["5.14"]="21"
|
||||||
["5.15"]="61"
|
["5.15"]="67"
|
||||||
["5.16"]="19"
|
["5.16"]="19"
|
||||||
["5.17"]="17"
|
["5.17"]="17"
|
||||||
["6.0"]="14"
|
["6.0"]="14"
|
||||||
["6.1"]="7"
|
["6.1"]="14"
|
||||||
|
["6.3"]="15"
|
||||||
|
["6.4"]="8"
|
||||||
|
["6.5"]="8"
|
||||||
|
["6.6"]="1"
|
||||||
)
|
)
|
||||||
|
|
||||||
_undefine() {
|
_undefine() {
|
||||||
@@ -250,6 +258,8 @@ _set_cpu_scheduler() {
|
|||||||
["cacule"]="CacULE"
|
["cacule"]="CacULE"
|
||||||
["tt"]="TT (TaskType)"
|
["tt"]="TT (TaskType)"
|
||||||
["bore"]="BORE (Burst-Oriented Response Enhancer) CPU Scheduler"
|
["bore"]="BORE (Burst-Oriented Response Enhancer) CPU Scheduler"
|
||||||
|
["bore-eevdf"]="BORE (Burst-Oriented Response Enhancer - EEVDF variant) CPU Scheduler"
|
||||||
|
["eevdf"]="Earliest Eligible Virtual Deadline First (EEVDF) scheduler"
|
||||||
)
|
)
|
||||||
|
|
||||||
# CPU SCHED selector - _projectc_unoff=1 sets unofficial Project C revision flag for a given version
|
# CPU SCHED selector - _projectc_unoff=1 sets unofficial Project C revision flag for a given version
|
||||||
@@ -286,18 +296,32 @@ _set_cpu_scheduler() {
|
|||||||
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
|
elif [ "$_kver" = "603" ]; then
|
||||||
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt")
|
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
|
||||||
|
elif [ "$_kver" = "604" ]; then
|
||||||
|
_avail_cpu_scheds=("cfs" "eevdf" "pds" "bmq" "tt" "bore")
|
||||||
|
elif [ "$_kver" = "605" ]; then
|
||||||
|
_avail_cpu_scheds=("cfs" "eevdf" "pds" "bmq" "tt" "bore" "bore-eevdf")
|
||||||
|
elif [ "$_kver" = "606" ]; then
|
||||||
|
_avail_cpu_scheds=("eevdf" "bore")
|
||||||
else
|
else
|
||||||
_avail_cpu_scheds=("cfs")
|
_avail_cpu_scheds=("cfs")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${_preempt_rt}" = "1" ]; then
|
if [ "${_preempt_rt}" = "1" ]; then
|
||||||
warning "! Since you have enabled _preempt_rt, incompatible cpu schedulers will not be available !"
|
warning "! Since you have enabled _preempt_rt, incompatible cpu schedulers will not be available !"
|
||||||
if [[ "${_avail_cpu_scheds[*]}" =~ "bore" ]]; then
|
if [[ "${_avail_cpu_scheds[*]}" =~ "cfs" ]]; then
|
||||||
_avail_cpu_scheds=("cfs" "bore")
|
_avail_cpu_scheds_rt=("cfs")
|
||||||
else
|
|
||||||
_avail_cpu_scheds=("cfs")
|
|
||||||
fi
|
fi
|
||||||
|
if [[ "${_avail_cpu_scheds[*]}" =~ "eevdf" ]] && ! [[ "${_avail_cpu_scheds[*]}" =~ "cfs" ]]; then
|
||||||
|
_avail_cpu_scheds_rt=("eevdf")
|
||||||
|
fi
|
||||||
|
if [[ "${_avail_cpu_scheds[*]}" =~ "bore" ]]; then
|
||||||
|
_avail_cpu_scheds_rt+=("bore")
|
||||||
|
fi
|
||||||
|
if [[ "${_avail_cpu_scheds[*]}" =~ "bore-eevdf" ]] && ! [[ "${_avail_cpu_scheds[*]}" =~ "cfs" ]]; then
|
||||||
|
_avail_cpu_scheds_rt+=("bore-eevdf")
|
||||||
|
fi
|
||||||
|
_avail_cpu_scheds=(${_avail_cpu_scheds_rt[*]})
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Populate descriptions of the available CPU schedulers
|
# Populate descriptions of the available CPU schedulers
|
||||||
@@ -420,7 +444,7 @@ _setup_kernel_work_folder() {
|
|||||||
msg2 "First initialization of the linux source code git folder"
|
msg2 "First initialization of the linux source code git folder"
|
||||||
mkdir -p "$_kernel_source_folder_abs"
|
mkdir -p "$_kernel_source_folder_abs"
|
||||||
cd "$_kernel_source_folder_abs"
|
cd "$_kernel_source_folder_abs"
|
||||||
git init --bare
|
git -c init.defaultBranch=master init --bare
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$_kernel_source_folder_abs"
|
cd "$_kernel_source_folder_abs"
|
||||||
@@ -600,8 +624,13 @@ _tkg_srcprep() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${_distro}" = "Arch" ]; then
|
if [ "${_distro}" = "Arch" ]; then
|
||||||
echo "-$pkgrel-tkg-${_cpusched}${_compiler_name}" > localversion.10-pkgrel
|
if [ -n "$_custom_pkgbase" ]; then
|
||||||
echo -e "Version tail set to \"-$pkgrel-tkg-${_cpusched}${_compiler_name}\"\n" > "$_where"/logs/prepare.log.txt
|
echo "-$pkgrel-tkg-${_custom_pkgbase}" > localversion.10-pkgrel
|
||||||
|
echo -e "Version tail set to \"-$pkgrel-tkg-${_custom_pkgbase}\"\n" > "$_where"/logs/prepare.log.txt
|
||||||
|
else
|
||||||
|
echo "-$pkgrel-tkg-${_cpusched}${_compiler_name}" > localversion.10-pkgrel
|
||||||
|
echo -e "Version tail set to \"-$pkgrel-tkg-${_cpusched}${_compiler_name}\"\n" > "$_where"/logs/prepare.log.txt
|
||||||
|
fi
|
||||||
echo "" > localversion.20-pkgname
|
echo "" > localversion.20-pkgname
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -644,7 +673,7 @@ _tkg_srcprep() {
|
|||||||
|
|
||||||
# PREEMPT_RT patch
|
# PREEMPT_RT patch
|
||||||
if [ "${_preempt_rt}" = "1" ]; then
|
if [ "${_preempt_rt}" = "1" ]; then
|
||||||
if [ ${_rt_subver_map[$_basekernel]+_} = "_" ]; then
|
if [ "${_rt_subver_map[$_basekernel]+_}" = "_" ]; then
|
||||||
preempt_rt_ksubver="${_rt_subver_map[$_basekernel]}"
|
preempt_rt_ksubver="${_rt_subver_map[$_basekernel]}"
|
||||||
# Check if subversion is supported, skip check if forced
|
# Check if subversion is supported, skip check if forced
|
||||||
if [ "${_preempt_rt_force}" = "1" ] || [ "${preempt_rt_ksubver}" = "${_sub}" ]; then
|
if [ "${_preempt_rt_force}" = "1" ] || [ "${preempt_rt_ksubver}" = "${_sub}" ]; then
|
||||||
@@ -676,8 +705,10 @@ _tkg_srcprep() {
|
|||||||
_msg="Applying clear linux patches" && _tkg_patcher
|
_msg="Applying clear linux patches" && _tkg_patcher
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tkgpatch="$srcdir/0003-glitched-base.patch"
|
if [ "$_glitched_base" = "true" ]; then
|
||||||
_msg="Applying glitched base patch" && _tkg_patcher
|
tkgpatch="$srcdir/0003-glitched-base.patch"
|
||||||
|
_msg="Applying glitched base patch" && _tkg_patcher
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${_preempt_rt}" != "1" ]; then
|
if [ "${_preempt_rt}" != "1" ]; then
|
||||||
tkgpatch="$srcdir/0003-glitched-base-nonrt.patch"
|
tkgpatch="$srcdir/0003-glitched-base-nonrt.patch"
|
||||||
@@ -687,6 +718,11 @@ _tkg_srcprep() {
|
|||||||
tkgpatch="$srcdir/0013-fedora-rpm.patch"
|
tkgpatch="$srcdir/0013-fedora-rpm.patch"
|
||||||
_msg="RPM: fixing spec generator" && _tkg_patcher
|
_msg="RPM: fixing spec generator" && _tkg_patcher
|
||||||
|
|
||||||
|
if [ "$_distro" = "Suse" ]; then
|
||||||
|
tkgpatch="$srcdir/0013-suse-additions.patch"
|
||||||
|
_msg="Import Suse-specific patches" && _tkg_patcher
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z $_misc_adds ]; then
|
if [ -z $_misc_adds ]; then
|
||||||
plain "Enable misc additions ? They may contain temporary fixes pending upstream, or some other changes that can break on non-Arch distros."
|
plain "Enable misc additions ? They may contain temporary fixes pending upstream, or some other changes that can break on non-Arch distros."
|
||||||
read -rp "`echo $' > [Y]/n : '`" _interactive_misc_adds;
|
read -rp "`echo $' > [Y]/n : '`" _interactive_misc_adds;
|
||||||
@@ -817,10 +853,19 @@ _tkg_srcprep() {
|
|||||||
elif [ "${_cpusched}" = "cfs" ]; then
|
elif [ "${_cpusched}" = "cfs" ]; then
|
||||||
_msg="Applying Glitched CFS additions patch"
|
_msg="Applying Glitched CFS additions patch"
|
||||||
tkgpatch="$srcdir/0003-glitched-cfs-additions.patch" && _tkg_patcher
|
tkgpatch="$srcdir/0003-glitched-cfs-additions.patch" && _tkg_patcher
|
||||||
|
elif [[ "${_cpusched}" =~ "eevdf" ]]; then
|
||||||
|
_msg="Applying Earliest Eligible Virtual Deadline First (EEVDF) scheduler patch"
|
||||||
|
tkgpatch="$srcdir/0003-eevdf.patch" && _tkg_patcher
|
||||||
|
|
||||||
|
if [ "${_cpusched}" = "bore-eevdf" ]; then
|
||||||
|
_msg="Applying BORE-EEVDF patch"
|
||||||
|
curl "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/${_basekernel}/sched/0001-bore-eevdf.patch" > "$srcdir"/0001-bore-eevdf.patch
|
||||||
|
tkgpatch="$srcdir/0001-bore-eevdf.patch" && _tkg_patcher
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${_cpusched}" = "cfs" ] || [ "${_cpusched}" = "cacule" ] || [ "${_cpusched}" = "tt" ] || [ "${_cpusched}" = "bore" ]; then
|
if [ "${_cpusched}" = "cfs" ] || [ "${_cpusched}" = "cacule" ] || [ "${_cpusched}" = "tt" ] || [ "${_cpusched}" = "bore" ] || [[ "${_cpusched}" =~ "eevdf" ]]; then
|
||||||
_msg="Applying Glitched CFS patch"
|
_msg="Applying Glitched CFS/EEVDF patch"
|
||||||
tkgpatch="$srcdir/0003-glitched-cfs.patch" && _tkg_patcher
|
tkgpatch="$srcdir/0003-glitched-cfs.patch" && _tkg_patcher
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -851,6 +896,9 @@ _tkg_srcprep() {
|
|||||||
if [ "${_distro}" = "Arch" ]; then
|
if [ "${_distro}" = "Arch" ]; then
|
||||||
# Reset local version string if ever it's in the .config file
|
# Reset local version string if ever it's in the .config file
|
||||||
scripts/config --set-str localversion ""
|
scripts/config --set-str localversion ""
|
||||||
|
else
|
||||||
|
_disable "LOCALVERSION_AUTO"
|
||||||
|
scripts/config --set-str "DEFAULT_HOSTNAME" "(none)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z $_debug ]; then
|
if [ -z $_debug ]; then
|
||||||
@@ -867,19 +915,21 @@ _tkg_srcprep() {
|
|||||||
fi
|
fi
|
||||||
_disable "NTP_PPS" "ZSWAP_COMPRESSOR_DEFAULT_LZO" "PROFILE_ALL_BRANCHES"
|
_disable "NTP_PPS" "ZSWAP_COMPRESSOR_DEFAULT_LZO" "PROFILE_ALL_BRANCHES"
|
||||||
_enable "CRYPTO_LZ4" "CRYPTO_LZ4HC" "LZ4_COMPRESS" "LZ4HC_COMPRESS" "ZSWAP_COMPRESSOR_DEFAULT_LZ4" "X86_AMD_PSTATE" "AMD_PINCTRL"
|
_enable "CRYPTO_LZ4" "CRYPTO_LZ4HC" "LZ4_COMPRESS" "LZ4HC_COMPRESS" "ZSWAP_COMPRESSOR_DEFAULT_LZ4" "X86_AMD_PSTATE" "AMD_PINCTRL"
|
||||||
_disable "DEBUG_FORCE_FUNCTION_ALIGN_64B" "X86_P6_NOP"
|
_disable "DEBUG_FORCE_FUNCTION_ALIGN_64B" "X86_P6_NOP" "RCU_STRICT_GRACE_PERIOD"
|
||||||
scripts/config --set-str "ZSWAP_COMPRESSOR_DEFAULT" "lz4"
|
scripts/config --set-str "ZSWAP_COMPRESSOR_DEFAULT" "lz4"
|
||||||
_enable "CPU_FREQ_DEFAULT_GOV_SCHEDUTIL"
|
_enable "CPU_FREQ_DEFAULT_GOV_SCHEDUTIL"
|
||||||
_disable "CPU_FREQ_DEFAULT_GOV_ONDEMAND" "CPU_FREQ_DEFAULT_GOV_CONSERVATIVE" "CPU_FREQ_DEFAULT_GOV_PERFORMANCE" "CPU_FREQ_DEFAULT_GOV_PERFORMANCE_NODEF"
|
_disable "CPU_FREQ_DEFAULT_GOV_ONDEMAND" "CPU_FREQ_DEFAULT_GOV_CONSERVATIVE" "CPU_FREQ_DEFAULT_GOV_PERFORMANCE" "CPU_FREQ_DEFAULT_GOV_PERFORMANCE_NODEF"
|
||||||
_module "BLK_DEV_LOOP"
|
_module "BLK_DEV_LOOP"
|
||||||
|
|
||||||
|
# This leads to all kinds of issues everytime Arch enables it in defconfig. Let's disable it and be happy.
|
||||||
|
_disable "SYSFB_SIMPLEFB"
|
||||||
|
|
||||||
# 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
|
# Disable MLX5_CORE on Prjc
|
||||||
if [ "$_kver" = "603" ]; then
|
plain "Disable MLX5_CORE for Prjc"
|
||||||
_disable "MLX5_CORE"
|
_disable "MLX5_CORE"
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$_custom_commandline" ]; then
|
if [ -n "$_custom_commandline" ]; then
|
||||||
@@ -918,6 +968,9 @@ _tkg_srcprep() {
|
|||||||
if [[ "$_distro" = "Debian" || "$_distro" = "Ubuntu" ]]; then
|
if [[ "$_distro" = "Debian" || "$_distro" = "Ubuntu" ]]; then
|
||||||
#Help Debian cert compile problem.
|
#Help Debian cert compile problem.
|
||||||
scripts/config --set-str "SYSTEM_TRUSTED_KEYS" ""
|
scripts/config --set-str "SYSTEM_TRUSTED_KEYS" ""
|
||||||
|
#Debian/Ubuntu don't properly support zstd module compression
|
||||||
|
_disable "MODULE_COMPRESS_ZSTD"
|
||||||
|
_enable "MODULE_COMPRESS_NONE"
|
||||||
fi
|
fi
|
||||||
# Skip dbg package creation on non-Arch
|
# Skip dbg package creation on non-Arch
|
||||||
if [ "$_distro" != "Arch" ]; then
|
if [ "$_distro" != "Arch" ]; then
|
||||||
@@ -1048,7 +1101,7 @@ _tkg_srcprep() {
|
|||||||
# BMQ default config
|
# BMQ default config
|
||||||
_enable "SCHED_ALT" "SCHED_BMQ"
|
_enable "SCHED_ALT" "SCHED_BMQ"
|
||||||
_disable "SCHED_PDS"
|
_disable "SCHED_PDS"
|
||||||
elif [ "${_cpusched}" = "bore" ]; then
|
elif [[ "${_cpusched}" =~ "bore" ]]; then
|
||||||
_enable "SCHED_BORE"
|
_enable "SCHED_BORE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1170,9 +1223,9 @@ _tkg_srcprep() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# zenify
|
# zenify
|
||||||
if [ "$_zenify" = "false" ]; then
|
if [ "$_zenify" = "false" ] || [ "$_glitched_base" = "false" ]; then
|
||||||
_disable "ZENIFY"
|
_disable "ZENIFY"
|
||||||
else
|
elif [ "$_zenify" = "true" ] && [ "$_glitched_base" = "true" ]; then
|
||||||
_enable "ZENIFY"
|
_enable "ZENIFY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1259,8 +1312,10 @@ _tkg_srcprep() {
|
|||||||
["tt"]="5"
|
["tt"]="5"
|
||||||
["upds"]="5"
|
["upds"]="5"
|
||||||
["cfs"]="5"
|
["cfs"]="5"
|
||||||
|
["eevdf"]="5"
|
||||||
["bmq"]="5"
|
["bmq"]="5"
|
||||||
["bore"]="5"
|
["bore"]="5"
|
||||||
|
["bore-eevdf"]="3"
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ -n "$_timer_freq" && ! "${_avail_timer_frequencies[*]}" =~ "$_timer_freq" ]]; then
|
if [[ -n "$_timer_freq" && ! "${_avail_timer_frequencies[*]}" =~ "$_timer_freq" ]]; then
|
||||||
@@ -1569,22 +1624,19 @@ CONFIG_DEBUG_INFO_BTF_MODULES=y\r
|
|||||||
unset tkgpatch
|
unset tkgpatch
|
||||||
unset _msg
|
unset _msg
|
||||||
|
|
||||||
# Anbox modules
|
# Waydroid
|
||||||
if [ "$_basever" != "504" ]; then
|
if [ -z "$_waydroid" ]; then
|
||||||
if [ -z "$_anbox" ]; then
|
plain ""
|
||||||
plain ""
|
plain "Enable android modules for use with Waydroid?"
|
||||||
plain "Enable android modules for use with Anbox?"
|
plain "https://waydro.id"
|
||||||
plain "https://github.com/anbox/anbox"
|
read -rp "`echo $' > N/y : '`" CONDITION12;
|
||||||
read -rp "`echo $' > N/y : '`" CONDITION12;
|
fi
|
||||||
fi
|
if [[ "$CONDITION12" =~ [yY] ]] || [ "$_waydroid" = "true" ]; then
|
||||||
if [[ "$CONDITION12" =~ [yY] ]] || [ "$_anbox" = "true" ]; then
|
_enable "ANDROID" "ANDROID_BINDER_IPC" "ANDROID_BINDERFS"
|
||||||
_enable "ASHMEM" "ION" "ION_CMA_HEAP" "ANDROID" "ANDROID_BINDER_IPC" "ANDROID_BINDERFS"
|
_disable "ANDROID_BINDER_IPC_SELFTEST"
|
||||||
_disable "ION_SYSTEM_HEAP" "ANDROID_BINDER_IPC_SELFTEST"
|
scripts/config --set-str "ANDROID_BINDER_DEVICES" ""
|
||||||
scripts/config --set-str "ANDROID_BINDER_DEVICES" "binder,hwbinder,vndbinder"
|
if [[ "$CONDITION12" =~ [yY] ]]; then
|
||||||
warning "Please make sure to read up on how to use this; https://github.com/Frogging-Family/linux-tkg#anbox-usage"
|
read -rp "Press enter to continue..."
|
||||||
if [[ "$CONDITION12" =~ [yY] ]]; then
|
|
||||||
read -rp "Press enter to continue..."
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1638,17 +1690,23 @@ CONFIG_DEBUG_INFO_BTF_MODULES=y\r
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# modprobed-db
|
# modprobed-db
|
||||||
if [ -z "$_modprobeddb" ]; then
|
|
||||||
plain ""
|
if [[ "$_modprobeddb" = "true" && "$_kernel_on_diet" == "true" ]]; then
|
||||||
plain "Use modprobed db to clean config from unneeded modules?"
|
msg2 "_modprobeddb and _kernel_on_diet cannot be used together: it doesn't make sense, _kernel_on_diet uses our own modprobed list ;)"
|
||||||
plain "Speeds up compilation considerably. Requires root."
|
exit 1
|
||||||
plain "https://wiki.archlinux.org/index.php/Modprobed-db"
|
|
||||||
plain "!!!! Make sure to have a well populated db !!!!"
|
|
||||||
read -rp "`echo $' > N/y : '`" CONDITIONMPDB;
|
|
||||||
fi
|
fi
|
||||||
if [[ "$CONDITIONMPDB" =~ [yY] ]] || [ "$_modprobeddb" = "true" ]; then
|
|
||||||
if [ -f "$where"/"$_modprobeddb_db_path" ];then
|
if [[ "$_kernel_on_diet" == "true" && "$_kver" -lt 605 ]]; then
|
||||||
_modprobeddb_db_path="$where"/"$_modprobeddb_db_path"
|
msg2 "_kernel_on_diet not implemented for kernels older than 6.5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$_modprobeddb" = "true" || "$_kernel_on_diet" == "true" ]]; then
|
||||||
|
if [ -f "$_where"/"$_modprobeddb_db_path" ]; then
|
||||||
|
_modprobeddb_db_path="$_where"/"$_modprobeddb_db_path"
|
||||||
|
fi
|
||||||
|
if [ "$_kernel_on_diet" == "true" ]; then
|
||||||
|
_modprobeddb_db_path="$_where/minimal-modprobed.db"
|
||||||
fi
|
fi
|
||||||
if [ ! -f $_modprobeddb_db_path ]; then
|
if [ ! -f $_modprobeddb_db_path ]; then
|
||||||
msg2 "modprobed-db database not found"
|
msg2 "modprobed-db database not found"
|
||||||
@@ -1656,6 +1714,7 @@ CONFIG_DEBUG_INFO_BTF_MODULES=y\r
|
|||||||
fi
|
fi
|
||||||
# Workaround for: https://github.com/Tk-Glitch/PKGBUILDS/issues/404.
|
# Workaround for: https://github.com/Tk-Glitch/PKGBUILDS/issues/404.
|
||||||
# Long live #404!
|
# Long live #404!
|
||||||
|
# The page doesn't exist any longer haha
|
||||||
_disable "GPIO_BT8XX" "SND_SE6X" "SENSORS_ADM1021" "SENSORS_MAX6642" "SENSORS_ASUS_WMI_EC"
|
_disable "GPIO_BT8XX" "SND_SE6X" "SENSORS_ADM1021" "SENSORS_MAX6642" "SENSORS_ASUS_WMI_EC"
|
||||||
|
|
||||||
make LSMOD=$_modprobeddb_db_path localmodconfig ${llvm_opt}
|
make LSMOD=$_modprobeddb_db_path localmodconfig ${llvm_opt}
|
||||||
@@ -1690,14 +1749,6 @@ CONFIG_DEBUG_INFO_BTF_MODULES=y\r
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Distro specific workarounds in the .config file, when using Arch config file by default
|
|
||||||
if [ -z "$_configfile" ] || [ "$_configfile" = "config_hardened.x86_64" ]; then
|
|
||||||
if [[ "$_distro" =~ ^(Debian|Ubuntu)$ ]]; then
|
|
||||||
_disable "MODULE_COMPRESS_ZSTD"
|
|
||||||
_enable "MODULE_COMPRESS_NONE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# rewrite configuration
|
# rewrite configuration
|
||||||
msg2 "Setting config"
|
msg2 "Setting config"
|
||||||
make ${_config_updating} ${llvm_opt} |& tee -a "$_where"/logs/prepare.log.txt
|
make ${_config_updating} ${llvm_opt} |& tee -a "$_where"/logs/prepare.log.txt
|
||||||
|
@@ -183,11 +183,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
|
||||||
@@ -4513,6 +4613,7 @@ static const struct pci_dev_acs_enabled {
|
@@ -4513,6 +4613,7 @@ static const struct pci_dev_acs_enabled {
|
||||||
{ PCI_VENDOR_ID_ZHAOXIN, 0x9083, pci_quirk_mf_endpoint_acs },
|
{ PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },
|
||||||
/* Zhaoxin Root/Downstream Ports */
|
/* 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 },
|
||||||
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||||
|
/* Wangxun nics */
|
||||||
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -564,70 +564,73 @@ index 291b857a6e20..f3480cdb7497 100644
|
|||||||
"%s: %s:%d is running\n", __func__, task->comm,
|
"%s: %s:%d is running\n", __func__, task->comm,
|
||||||
task->pid);
|
task->pid);
|
||||||
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
|
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
|
||||||
index 6bb116c559b4..d4c8168a8270 100644
|
index 7779ee8abc2a..5b9893cdfb1b 100644
|
||||||
--- a/kernel/locking/rtmutex.c
|
--- a/kernel/locking/rtmutex.c
|
||||||
+++ b/kernel/locking/rtmutex.c
|
+++ b/kernel/locking/rtmutex.c
|
||||||
@@ -298,21 +298,25 @@ static __always_inline void
|
@@ -343,7 +343,7 @@ waiter_update_prio(struct rt_mutex_waite
|
||||||
waiter_update_prio(struct rt_mutex_waiter *waiter, struct task_struct *task)
|
lockdep_assert(RB_EMPTY_NODE(&waiter->tree.entry));
|
||||||
{
|
|
||||||
waiter->prio = __waiter_prio(task);
|
waiter->tree.prio = __waiter_prio(task);
|
||||||
- waiter->deadline = task->dl.deadline;
|
- waiter->tree.deadline = task->dl.deadline;
|
||||||
+ waiter->deadline = __tsk_deadline(task);
|
+ waiter->tree.deadline = __tsk_deadline(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only use with rt_mutex_waiter_{less,equal}()
|
@@ -364,16 +364,20 @@ waiter_clone_prio(struct rt_mutex_waiter
|
||||||
|
* Only use with rt_waiter_node_{less,equal}()
|
||||||
*/
|
*/
|
||||||
|
#define task_to_waiter_node(p) \
|
||||||
|
- &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
||||||
|
+ &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
||||||
#define task_to_waiter(p) \
|
#define task_to_waiter(p) \
|
||||||
- &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
&(struct rt_mutex_waiter){ .tree = *task_to_waiter_node(p) }
|
||||||
+ &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
|
||||||
|
static __always_inline int rt_waiter_node_less(struct rt_waiter_node *left,
|
||||||
static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
struct rt_waiter_node *right)
|
||||||
struct rt_mutex_waiter *right)
|
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline < right->deadline);
|
+ return (left->deadline < right->deadline);
|
||||||
+#else
|
+#else
|
||||||
if (left->prio < right->prio)
|
if (left->prio < right->prio)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
+#ifndef CONFIG_SCHED_BMQ
|
+#ifndef CONFIG_SCHED_BMQ
|
||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -321,16 +325,22 @@ static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
@@ -382,16 +386,22 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return dl_time_before(left->deadline, right->deadline);
|
return dl_time_before(left->deadline, right->deadline);
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
static __always_inline int rt_waiter_node_equal(struct rt_waiter_node *left,
|
||||||
struct rt_mutex_waiter *right)
|
struct rt_waiter_node *right)
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline == right->deadline);
|
+ return (left->deadline == right->deadline);
|
||||||
+#else
|
+#else
|
||||||
if (left->prio != right->prio)
|
if (left->prio != right->prio)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
+#ifndef CONFIG_SCHED_BMQ
|
+#ifndef CONFIG_SCHED_BMQ
|
||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -339,8 +349,10 @@ static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
@@ -400,8 +410,10 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return left->deadline == right->deadline;
|
return left->deadline == right->deadline;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool rt_mutex_steal(struct rt_mutex_waiter *waiter,
|
static inline bool rt_mutex_steal(struct rt_mutex_waiter *waiter,
|
||||||
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
|
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
|
||||||
index 978fcfca5871..0425ee149b4d 100644
|
index 978fcfca5871..0425ee149b4d 100644
|
||||||
@@ -9924,3 +9927,192 @@ index 588c7b983e3ba..8a6aa5b7279d3 100644
|
|||||||
/*
|
/*
|
||||||
* If we are going to sleep and we have plugged IO queued,
|
* If we are going to sleep and we have plugged IO queued,
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c
|
||||||
|
index ff4a45708a68e7c43f4e6494e120341514b31b56..f783788e3caa71e4c668ef0c0284dc77529b10f3 100644
|
||||||
|
--- a/kernel/sched/alt_core.c
|
||||||
|
+++ b/kernel/sched/alt_core.c
|
||||||
|
@@ -28,7 +28,6 @@
|
||||||
|
#include <linux/kprobes.h>
|
||||||
|
#include <linux/mmu_context.h>
|
||||||
|
#include <linux/nmi.h>
|
||||||
|
-#include <linux/profile.h>
|
||||||
|
#include <linux/rcupdate_wait.h>
|
||||||
|
#include <linux/security.h>
|
||||||
|
#include <linux/syscalls.h>
|
||||||
|
@@ -2236,9 +2235,10 @@ ttwu_stat(struct task_struct *p, int cpu, int wake_flags)
|
||||||
|
rq = this_rq();
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
- if (cpu == rq->cpu)
|
||||||
|
+ if (cpu == rq->cpu) {
|
||||||
|
__schedstat_inc(rq->ttwu_local);
|
||||||
|
- else {
|
||||||
|
+ __schedstat_inc(p->stats.nr_wakeups_local);
|
||||||
|
+ } else {
|
||||||
|
/** Alt schedule FW ToDo:
|
||||||
|
* How to do ttwu_wake_remote
|
||||||
|
*/
|
||||||
|
@@ -2246,6 +2246,7 @@ ttwu_stat(struct task_struct *p, int cpu, int wake_flags)
|
||||||
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
|
__schedstat_inc(rq->ttwu_count);
|
||||||
|
+ __schedstat_inc(p->stats.nr_wakeups);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -2895,6 +2896,11 @@ static inline void __sched_fork(unsigned long clone_flags, struct task_struct *p
|
||||||
|
p->stime = 0;
|
||||||
|
p->sched_time = 0;
|
||||||
|
|
||||||
|
+#ifdef CONFIG_SCHEDSTATS
|
||||||
|
+ /* Even if schedstat is disabled, there should not be garbage */
|
||||||
|
+ memset(&p->stats, 0, sizeof(p->stats));
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef CONFIG_PREEMPT_NOTIFIERS
|
||||||
|
INIT_HLIST_HEAD(&p->preempt_notifiers);
|
||||||
|
#endif
|
||||||
|
@@ -7397,6 +7403,10 @@ void normalize_rt_tasks(void)
|
||||||
|
if (p->flags & PF_KTHREAD)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
+ schedstat_set(p->stats.wait_start, 0);
|
||||||
|
+ schedstat_set(p->stats.sleep_start, 0);
|
||||||
|
+ schedstat_set(p->stats.block_start, 0);
|
||||||
|
+
|
||||||
|
if (!rt_task(p)) {
|
||||||
|
/*
|
||||||
|
* Renice negative nice level userspace
|
||||||
|
diff --git a/kernel/sched/alt_sched.h b/kernel/sched/alt_sched.h
|
||||||
|
index 289058a09bd53a96a9bc09cb2e9cb5ee8e42a3d0..f2b9e686d6a69c07f54c2cae36f7ce0ab70f9cb2 100644
|
||||||
|
--- a/kernel/sched/alt_sched.h
|
||||||
|
+++ b/kernel/sched/alt_sched.h
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
#include <linux/livepatch.h>
|
||||||
|
#include <linux/membarrier.h>
|
||||||
|
#include <linux/proc_fs.h>
|
||||||
|
+#include <linux/profile.h>
|
||||||
|
#include <linux/psi.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/stop_machine.h>
|
||||||
|
diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h
|
||||||
|
index 38f3698f5e5b31d35fe18c3c6c103a685475e64e..b9d597394316d2f5f16b6eb19f922b65bf9912fc 100644
|
||||||
|
--- a/kernel/sched/stats.h
|
||||||
|
+++ b/kernel/sched/stats.h
|
||||||
|
@@ -89,6 +89,7 @@ static inline void rq_sched_info_depart (struct rq *rq, unsigned long long delt
|
||||||
|
|
||||||
|
#endif /* CONFIG_SCHEDSTATS */
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
#ifdef CONFIG_FAIR_GROUP_SCHED
|
||||||
|
struct sched_entity_stats {
|
||||||
|
struct sched_entity se;
|
||||||
|
@@ -105,6 +106,7 @@ __schedstats_from_se(struct sched_entity *se)
|
||||||
|
#endif
|
||||||
|
return &task_of(se)->stats;
|
||||||
|
}
|
||||||
|
+#endif /* CONFIG_SCHED_ALT */
|
||||||
|
|
||||||
|
#ifdef CONFIG_PSI
|
||||||
|
void psi_task_change(struct task_struct *task, int clear, int set);
|
||||||
|
diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c
|
||||||
|
index 03772805e4f9f1bf881740c8dd14aef667fbecf2..4742bbdfb2d715a439c0d505b4f293a82b76b255 100644
|
||||||
|
--- a/kernel/sched/alt_core.c
|
||||||
|
+++ b/kernel/sched/alt_core.c
|
||||||
|
@@ -5661,9 +5661,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_lock();
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* Make sure no PI-waiters arrive (or leave) while we are
|
||||||
|
* changing the priority of the task:
|
||||||
|
@@ -5709,8 +5706,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
policy = oldpolicy = -1;
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
goto recheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5741,10 +5736,8 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
|
||||||
|
- if (pi) {
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
+ if (pi)
|
||||||
|
rt_mutex_adjust_pi(p);
|
||||||
|
- }
|
||||||
|
|
||||||
|
/* Run balance callbacks after we've adjusted the PI chain: */
|
||||||
|
balance_callbacks(rq, head);
|
||||||
|
@@ -5755,8 +5748,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
unlock:
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
|
||||||
|
index 2f6606f4a3ec941f78b85a8ff997f2a6c0405218..71f5da268ee8e597ee15b2b440b4a80f8a6adb1c 100644
|
||||||
|
--- a/kernel/cgroup/cpuset.c
|
||||||
|
+++ b/kernel/cgroup/cpuset.c
|
||||||
|
@@ -2509,12 +2509,15 @@ static int cpuset_can_attach(struct cgroup_taskset *tset)
|
||||||
|
if (ret)
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (dl_task(task)) {
|
||||||
|
cs->nr_migrate_dl_tasks++;
|
||||||
|
cs->sum_migrate_dl_bw += task->dl.dl_bw;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (!cs->nr_migrate_dl_tasks)
|
||||||
|
goto out_success;
|
||||||
|
|
||||||
|
@@ -2535,6 +2538,7 @@ static int cpuset_can_attach(struct cgroup_taskset *tset)
|
||||||
|
}
|
||||||
|
|
||||||
|
out_success:
|
||||||
|
+#endif
|
||||||
|
/*
|
||||||
|
* Mark attach is in progress. This makes validate_change() fail
|
||||||
|
* changes which zero cpus/mems_allowed.
|
||||||
|
@@ -2558,12 +2562,14 @@ static void cpuset_cancel_attach(struct cgroup_taskset *tset)
|
||||||
|
if (!cs->attach_in_progress)
|
||||||
|
wake_up(&cpuset_attach_wq);
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (cs->nr_migrate_dl_tasks) {
|
||||||
|
int cpu = cpumask_any(cs->effective_cpus);
|
||||||
|
|
||||||
|
dl_bw_free(cpu, cs->sum_migrate_dl_bw);
|
||||||
|
reset_migrate_dl_data(cs);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
mutex_unlock(&cpuset_mutex);
|
||||||
|
}
|
||||||
|
diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c
|
||||||
|
index 4742bbdfb2d715a439c0d505b4f293a82b76b255..8badb54c7d7b00bba30dbbd7206feeafbf919af2 100644
|
||||||
|
--- a/kernel/sched/alt_core.c
|
||||||
|
+++ b/kernel/sched/alt_core.c
|
||||||
|
@@ -7156,8 +7156,7 @@ int cpuset_cpumask_can_shrink(const struct cpumask __maybe_unused *cur,
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int task_can_attach(struct task_struct *p,
|
||||||
|
- const struct cpumask *cs_cpus_allowed)
|
||||||
|
+int task_can_attach(struct task_struct *p)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
@@ -183,11 +183,10 @@ 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
|
||||||
@@ -4513,6 +4613,7 @@ static const struct pci_dev_acs_enabled {
|
@@ -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 },
|
||||||
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
/* Wangxun nics */
|
||||||
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
|
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -90877,9 +90877,9 @@ index c3b582d19b62..9caa3eb8c6f7 100644
|
|||||||
size = synth_field_size(field->type);
|
size = synth_field_size(field->type);
|
||||||
if (size < 0) {
|
if (size < 0) {
|
||||||
@@ -698,23 +687,15 @@ static struct synth_field *parse_synth_field(int argc, char **argv,
|
@@ -698,23 +687,15 @@ static struct synth_field *parse_synth_field(int argc, char **argv,
|
||||||
goto free;
|
|
||||||
} else if (size == 0) {
|
} else if (size == 0) {
|
||||||
if (synth_field_is_string(field->type)) {
|
if (synth_field_is_string(field->type) ||
|
||||||
|
synth_field_is_stack(field->type)) {
|
||||||
- char *type;
|
- char *type;
|
||||||
-
|
-
|
||||||
- len = sizeof("__data_loc ") + strlen(field->type) + 1;
|
- len = sizeof("__data_loc ") + strlen(field->type) + 1;
|
||||||
|
@@ -551,67 +551,70 @@ diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
|
|||||||
index 7779ee8abc2a..5b9893cdfb1b 100644
|
index 7779ee8abc2a..5b9893cdfb1b 100644
|
||||||
--- a/kernel/locking/rtmutex.c
|
--- a/kernel/locking/rtmutex.c
|
||||||
+++ b/kernel/locking/rtmutex.c
|
+++ b/kernel/locking/rtmutex.c
|
||||||
@@ -300,21 +300,25 @@ static __always_inline void
|
@@ -343,7 +343,7 @@ waiter_update_prio(struct rt_mutex_waite
|
||||||
waiter_update_prio(struct rt_mutex_waiter *waiter, struct task_struct *task)
|
lockdep_assert(RB_EMPTY_NODE(&waiter->tree.entry));
|
||||||
{
|
|
||||||
waiter->prio = __waiter_prio(task);
|
waiter->tree.prio = __waiter_prio(task);
|
||||||
- waiter->deadline = task->dl.deadline;
|
- waiter->tree.deadline = task->dl.deadline;
|
||||||
+ waiter->deadline = __tsk_deadline(task);
|
+ waiter->tree.deadline = __tsk_deadline(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only use with rt_mutex_waiter_{less,equal}()
|
@@ -364,16 +364,20 @@ waiter_clone_prio(struct rt_mutex_waiter
|
||||||
|
* Only use with rt_waiter_node_{less,equal}()
|
||||||
*/
|
*/
|
||||||
|
#define task_to_waiter_node(p) \
|
||||||
|
- &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
||||||
|
+ &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
||||||
#define task_to_waiter(p) \
|
#define task_to_waiter(p) \
|
||||||
- &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
&(struct rt_mutex_waiter){ .tree = *task_to_waiter_node(p) }
|
||||||
+ &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
|
||||||
|
static __always_inline int rt_waiter_node_less(struct rt_waiter_node *left,
|
||||||
static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
struct rt_waiter_node *right)
|
||||||
struct rt_mutex_waiter *right)
|
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline < right->deadline);
|
+ return (left->deadline < right->deadline);
|
||||||
+#else
|
+#else
|
||||||
if (left->prio < right->prio)
|
if (left->prio < right->prio)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
+#ifndef CONFIG_SCHED_BMQ
|
+#ifndef CONFIG_SCHED_BMQ
|
||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -323,16 +327,22 @@ static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
@@ -382,16 +386,22 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return dl_time_before(left->deadline, right->deadline);
|
return dl_time_before(left->deadline, right->deadline);
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
static __always_inline int rt_waiter_node_equal(struct rt_waiter_node *left,
|
||||||
struct rt_mutex_waiter *right)
|
struct rt_waiter_node *right)
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline == right->deadline);
|
+ return (left->deadline == right->deadline);
|
||||||
+#else
|
+#else
|
||||||
if (left->prio != right->prio)
|
if (left->prio != right->prio)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
+#ifndef CONFIG_SCHED_BMQ
|
+#ifndef CONFIG_SCHED_BMQ
|
||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -341,8 +351,10 @@ static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
@@ -400,8 +410,10 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return left->deadline == right->deadline;
|
return left->deadline == right->deadline;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool rt_mutex_steal(struct rt_mutex_waiter *waiter,
|
static inline bool rt_mutex_steal(struct rt_mutex_waiter *waiter,
|
||||||
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
|
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
|
||||||
index 976092b7bd45..31d587c16ec1 100644
|
index 976092b7bd45..31d587c16ec1 100644
|
||||||
@@ -10130,3 +10133,104 @@ index a2d301f58ced..2ccdede8585c 100644
|
|||||||
};
|
};
|
||||||
struct wakeup_test_data *x = data;
|
struct wakeup_test_data *x = data;
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c
|
||||||
|
index 03772805e4f9f1bf881740c8dd14aef667fbecf2..4742bbdfb2d715a439c0d505b4f293a82b76b255 100644
|
||||||
|
--- a/kernel/sched/alt_core.c
|
||||||
|
+++ b/kernel/sched/alt_core.c
|
||||||
|
@@ -5661,9 +5661,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_lock();
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* Make sure no PI-waiters arrive (or leave) while we are
|
||||||
|
* changing the priority of the task:
|
||||||
|
@@ -5709,8 +5706,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
policy = oldpolicy = -1;
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
goto recheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5741,10 +5736,8 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
|
||||||
|
- if (pi) {
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
+ if (pi)
|
||||||
|
rt_mutex_adjust_pi(p);
|
||||||
|
- }
|
||||||
|
|
||||||
|
/* Run balance callbacks after we've adjusted the PI chain: */
|
||||||
|
balance_callbacks(rq, head);
|
||||||
|
@@ -5755,8 +5748,6 @@ static int __sched_setscheduler(struct task_struct *p,
|
||||||
|
unlock:
|
||||||
|
__task_access_unlock(p, lock);
|
||||||
|
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
|
||||||
|
- if (pi)
|
||||||
|
- cpuset_read_unlock();
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
|
||||||
|
index 2f6606f4a3ec941f78b85a8ff997f2a6c0405218..71f5da268ee8e597ee15b2b440b4a80f8a6adb1c 100644
|
||||||
|
--- a/kernel/cgroup/cpuset.c
|
||||||
|
+++ b/kernel/cgroup/cpuset.c
|
||||||
|
@@ -2509,12 +2509,15 @@ static int cpuset_can_attach(struct cgroup_taskset *tset)
|
||||||
|
if (ret)
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (dl_task(task)) {
|
||||||
|
cs->nr_migrate_dl_tasks++;
|
||||||
|
cs->sum_migrate_dl_bw += task->dl.dl_bw;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (!cs->nr_migrate_dl_tasks)
|
||||||
|
goto out_success;
|
||||||
|
|
||||||
|
@@ -2535,6 +2538,7 @@ static int cpuset_can_attach(struct cgroup_taskset *tset)
|
||||||
|
}
|
||||||
|
|
||||||
|
out_success:
|
||||||
|
+#endif
|
||||||
|
/*
|
||||||
|
* Mark attach is in progress. This makes validate_change() fail
|
||||||
|
* changes which zero cpus/mems_allowed.
|
||||||
|
@@ -2558,12 +2562,14 @@ static void cpuset_cancel_attach(struct cgroup_taskset *tset)
|
||||||
|
if (!cs->attach_in_progress)
|
||||||
|
wake_up(&cpuset_attach_wq);
|
||||||
|
|
||||||
|
+#ifndef CONFIG_SCHED_ALT
|
||||||
|
if (cs->nr_migrate_dl_tasks) {
|
||||||
|
int cpu = cpumask_any(cs->effective_cpus);
|
||||||
|
|
||||||
|
dl_bw_free(cpu, cs->sum_migrate_dl_bw);
|
||||||
|
reset_migrate_dl_data(cs);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
mutex_unlock(&cpuset_mutex);
|
||||||
|
}
|
||||||
|
diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c
|
||||||
|
index 4742bbdfb2d715a439c0d505b4f293a82b76b255..8badb54c7d7b00bba30dbbd7206feeafbf919af2 100644
|
||||||
|
--- a/kernel/sched/alt_core.c
|
||||||
|
+++ b/kernel/sched/alt_core.c
|
||||||
|
@@ -7156,8 +7156,7 @@ int cpuset_cpumask_can_shrink(const struct cpumask __maybe_unused *cur,
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int task_can_attach(struct task_struct *p,
|
||||||
|
- const struct cpumask *cs_effective_cpus)
|
||||||
|
+int task_can_attach(struct task_struct *p)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
400
linux-tkg-patches/6.1/0013-suse-additions.patch
Normal file
400
linux-tkg-patches/6.1/0013-suse-additions.patch
Normal file
@@ -0,0 +1,400 @@
|
|||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Wed, 7 Feb 2018 15:16:04 +0100
|
||||||
|
Subject: Add ksym-provides tool.
|
||||||
|
|
||||||
|
References: bsc#1077692
|
||||||
|
Patch-mainline: no, not needed
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
---
|
||||||
|
scripts/mod/Makefile | 6 +-
|
||||||
|
scripts/mod/ksym-provides.c | 124 ++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 129 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 scripts/mod/ksym-provides.c
|
||||||
|
|
||||||
|
--- a/scripts/mod/Makefile
|
||||||
|
+++ b/scripts/mod/Makefile
|
||||||
|
@@ -2,11 +2,15 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
|
||||||
|
|
||||||
|
-hostprogs-always-y += modpost mk_elfconfig
|
||||||
|
+hostprogs-always-y += modpost mk_elfconfig ksym-provides
|
||||||
|
always-y += empty.o
|
||||||
|
|
||||||
|
modpost-objs := modpost.o file2alias.o sumversion.o
|
||||||
|
|
||||||
|
+ksym-provides-objs := ksym-provides.o
|
||||||
|
+
|
||||||
|
+HOSTLDLIBS_ksym-provides := -lelf
|
||||||
|
+
|
||||||
|
devicetable-offsets-file := devicetable-offsets.h
|
||||||
|
|
||||||
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/scripts/mod/ksym-provides.c
|
||||||
|
@@ -0,0 +1,124 @@
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <gelf.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+int main(int argc, char *argv[])
|
||||||
|
+{
|
||||||
|
+ int fd;
|
||||||
|
+ Elf *elf;
|
||||||
|
+ Elf_Scn *scn;
|
||||||
|
+ GElf_Shdr shdr;
|
||||||
|
+ size_t strndx;
|
||||||
|
+ int ndx;
|
||||||
|
+ Elf_Data *symdata, *data;
|
||||||
|
+ GElf_Sym sym;
|
||||||
|
+ char *name;
|
||||||
|
+ const char * flavor = argv[1];
|
||||||
|
+ const char * prefix = "__crc_";
|
||||||
|
+ size_t prefixlen = strlen(prefix);
|
||||||
|
+ const char * symformat = "ksym(%s:%s) = %lx\n";
|
||||||
|
+
|
||||||
|
+ if (argc != 3) {
|
||||||
|
+ fprintf(stderr, "Usage: %s <flavor> <filename>\n", argv[0]);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (elf_version(EV_CURRENT) == EV_NONE) {
|
||||||
|
+ fprintf(stderr, "libelf initialization failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fd = open(argv[2], O_RDONLY);
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ perror("open failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf = elf_begin(fd, ELF_C_READ, NULL);
|
||||||
|
+ if (!elf) {
|
||||||
|
+ fprintf(stderr, "elf_begin failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_close;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = NULL;
|
||||||
|
+ while ((scn = elf_nextscn(elf, scn)) != NULL) {
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type == SHT_SYMTAB)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fputs("symbol table not found\n", stderr);
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ strndx = shdr.sh_link;
|
||||||
|
+
|
||||||
|
+ symdata = elf_getdata(scn, NULL);
|
||||||
|
+ if (!symdata) {
|
||||||
|
+ fprintf(stderr, "elf_getdata failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (ndx = 0; gelf_getsym(symdata, ndx, &sym) != NULL; ++ndx) {
|
||||||
|
+
|
||||||
|
+ name = elf_strptr(elf, strndx, sym.st_name);
|
||||||
|
+ if (!name) {
|
||||||
|
+ fprintf(stderr, "elf_strptr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (strncmp(prefix, name, prefixlen))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (sym.st_shndx >= SHN_LORESERVE) {
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ sym.st_value);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = elf_getscn(elf, sym.st_shndx);
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fprintf(stderr, "elf_getscn failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type != SHT_PROGBITS)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ data = elf_getdata_rawchunk(
|
||||||
|
+ elf, shdr.sh_offset + sym.st_value - shdr.sh_addr,
|
||||||
|
+ sizeof(GElf_Word), ELF_T_WORD);
|
||||||
|
+ if (!data) {
|
||||||
|
+ fprintf(stderr, "elf_getdata_rawchunk failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ (unsigned long) *(GElf_Word*)data->d_buf);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ close(fd);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ err_end:
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ err_close:
|
||||||
|
+ close(fd);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
From bb1a83cf109eee56c8dee26f7910c772f8c246fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Thu, 29 Jun 2023 17:47:16 +0200
|
||||||
|
Subject: [PATCH] depmod: Handle installing modules under a prefix
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: Never, upstream rejected
|
||||||
|
|
||||||
|
Some distributions aim at shipping all files in /usr.
|
||||||
|
|
||||||
|
The path under which kernel modules are installed is hardcoded to /lib
|
||||||
|
which conflicts with this goal.
|
||||||
|
|
||||||
|
When kmod provides the config command, use it to determine the correct
|
||||||
|
module installation path.
|
||||||
|
|
||||||
|
With kmod that does not provide the config command /lib/modules is used
|
||||||
|
as before.
|
||||||
|
|
||||||
|
Note: users can use
|
||||||
|
|
||||||
|
make MODLIB='$(INSTALL_MOD_PATH)/usr/lib/modules/$(KERNELRELEASE)'
|
||||||
|
|
||||||
|
to install modules from mainline kernel on usrmerged system.
|
||||||
|
Not great for KMPs, though
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Nacked-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
v2: Avoid error on systems with kmod that does not support config
|
||||||
|
command
|
||||||
|
v3: More verbose commit message
|
||||||
|
v4:
|
||||||
|
- Document jq requirement
|
||||||
|
- fix bashism
|
||||||
|
- Update to getting full module path, not just additional prefix
|
||||||
|
v5: switch to pkgconfig
|
||||||
|
---
|
||||||
|
Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 658ec2b8aa74..5a1889fc43c7 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1165,7 +1165,9 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
|
||||||
|
# makefile but the argument can be passed to make if needed.
|
||||||
|
#
|
||||||
|
|
||||||
|
-MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||||
|
+export KERNEL_MODULE_DIRECTORY := $(shell pkg-config --print-variables kmod 2>/dev/null | grep '^module_directory$$' >/dev/null && pkg-config --variable=module_directory kmod || echo /lib/modules)
|
||||||
|
+
|
||||||
|
+MODLIB = $(INSTALL_MOD_PATH)$(KERNEL_MODULE_DIRECTORY)/$(KERNELRELEASE)
|
||||||
|
export MODLIB
|
||||||
|
|
||||||
|
PHONY += prepare0
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 4d15c9fa058e6dee09324cfc93f48858d4296019 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Tue, 18 Jul 2023 18:58:43 +0200
|
||||||
|
Subject: [PATCH] Revert "kbuild: Hack for depmod not handling X.Y versions"
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: v6.6-rc1
|
||||||
|
Git-commit: 4d15c9fa058e6dee09324cfc93f48858d4296019
|
||||||
|
|
||||||
|
Remove hack for ancient version of module-init-tools that was added in
|
||||||
|
Linux 3.0.
|
||||||
|
|
||||||
|
Since then module-init-tools was replaced with kmod.
|
||||||
|
|
||||||
|
This hack adds an additional indirection, and causes confusing errors
|
||||||
|
to be printed when depmod fails.
|
||||||
|
|
||||||
|
Reverts commit 8fc62e594253 ("kbuild: Do not write to builddir in modules_install")
|
||||||
|
Reverts commit bfe5424a8b31 ("kbuild: Hack for depmod not handling X.Y versions")
|
||||||
|
|
||||||
|
Link: https://lore.kernel.org/linux-modules/CAK7LNAQMs3QBYfWcLkmOQdbbq7cj=7wWbK=AWhdTC2rAsKHXzQ@mail.gmail.com/
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
scripts/depmod.sh | 27 +--------------------------
|
||||||
|
1 file changed, 1 insertion(+), 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/depmod.sh b/scripts/depmod.sh
|
||||||
|
index 3643b4f896ed..fca689ba4f21 100755
|
||||||
|
--- a/scripts/depmod.sh
|
||||||
|
+++ b/scripts/depmod.sh
|
||||||
|
@@ -23,33 +23,8 @@ if [ -z $(command -v $DEPMOD) ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
-# older versions of depmod require the version string to start with three
|
||||||
|
-# numbers, so we cheat with a symlink here
|
||||||
|
-depmod_hack_needed=true
|
||||||
|
-tmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
|
||||||
|
-mkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
|
||||||
|
-if "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
|
||||||
|
- if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
|
||||||
|
- -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
|
||||||
|
- depmod_hack_needed=false
|
||||||
|
- fi
|
||||||
|
-fi
|
||||||
|
-rm -rf "$tmp_dir"
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
|
||||||
|
- ln -s "$KERNELRELEASE" "$symlink"
|
||||||
|
- KERNELRELEASE=99.98.$KERNELRELEASE
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
set -- -ae -F System.map
|
||||||
|
if test -n "$INSTALL_MOD_PATH"; then
|
||||||
|
set -- "$@" -b "$INSTALL_MOD_PATH"
|
||||||
|
fi
|
||||||
|
-"$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
-ret=$?
|
||||||
|
-
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- rm -f "$symlink"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-exit $ret
|
||||||
|
+exec "$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 0ec8a11bd6287ada08e6c13023ce47be5cdc4270 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 00:48:37 +0200
|
||||||
|
Subject: mkspec: Suse is using /usr/lib instead of the standard /lib symlink. Adapt.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index de170760d..2b5ee7b35 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -121,11 +121,11 @@ $S
|
||||||
|
$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
|
||||||
|
cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
|
||||||
|
cp .config %{buildroot}/boot/config-$KERNELRELEASE
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
|
||||||
|
+$S$M cd %{buildroot}/usr/lib/modules/$KERNELRELEASE
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
@@ -159,9 +159,9 @@ $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr (-, root, root)
|
||||||
|
-$M /lib/modules/$KERNELRELEASE
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$M /usr/lib/modules/$KERNELRELEASE
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
/boot/*
|
||||||
|
|
||||||
|
%files headers
|
||||||
|
@@ -171,6 +171,6 @@ $S$M
|
||||||
|
$S$M %files devel
|
||||||
|
$S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
EOF
|
||||||
|
|
||||||
|
From 23133fe6745d567db5b93dc9e6aecc32d31354bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jeff Mahoney <jeffm@suse.de>
|
||||||
|
Date: Tue, 31 Mar 2009 09:46:30 -0400
|
||||||
|
Subject: [PATCH] - doc/README.KSYMS: Add to repo.
|
||||||
|
|
||||||
|
---
|
||||||
|
doc/README.KSYMS | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
create mode 100644 doc/README.KSYMS
|
||||||
|
|
||||||
|
diff --git a/doc/README.KSYMS b/doc/README.KSYMS
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..39fe7878174
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/doc/README.KSYMS
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+This file is a place holder for the kernel-syms{,-rt} package. It is used
|
||||||
|
+to group build dependencies for all kernel flavors.
|
||||||
|
+
|
||||||
|
+The KMP build process will build KMPs against all installed kernel flavors
|
||||||
|
+automatically. If you don't need to build against other flavors than the
|
||||||
|
+ones you've already installed - it is safe to uninstall this package.
|
||||||
|
|
||||||
|
From 5cd5e149a95d37746a89850f4beddef4f0ad2224 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 14:06:44 +0200
|
||||||
|
Subject: Suse: Add kernel-syms package
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index ff8c33ead..51c94131e 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -88,6 +88,19 @@ $S$M %description -n kernel-devel
|
||||||
|
$S$M This package provides kernel headers and makefiles sufficient to build modules
|
||||||
|
$S$M against the $__KERNELRELEASE kernel package.
|
||||||
|
$S$M
|
||||||
|
+$S$M %package syms
|
||||||
|
+$S$M Summary: Kernel Symbol Versions (modversions) for the $__KERNELRELEASE kernel
|
||||||
|
+$S$M Group: Development/Sources
|
||||||
|
+$S$M AutoReqProv: no
|
||||||
|
+$S$M Provides: kernel-syms = %{version}
|
||||||
|
+$S$M Requires: kernel-devel = %{version}
|
||||||
|
+$S$M %description -n kernel-syms
|
||||||
|
+$S$M Kernel symbols, such as functions and variables, have version
|
||||||
|
+$S$M information attached to them. This package contains the symbol versions
|
||||||
|
+$S$M for the standard kernels.
|
||||||
|
+$S$M This package is needed for compiling kernel module packages with proper
|
||||||
|
+$S$M package dependencies.
|
||||||
|
+
|
||||||
|
$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
|
$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
$S %undefine _package_note_file
|
||||||
|
@@ -173,4 +189,8 @@ $S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M
|
||||||
|
+$S$M %files syms
|
||||||
|
+$S$M %defattr (-, root, root)
|
||||||
|
+$S$M /usr/src/kernels/$KERNELRELEASE/doc
|
||||||
|
EOF
|
97399
linux-tkg-patches/6.3/0008-6.3-bcachefs.patch
Normal file
97399
linux-tkg-patches/6.3/0008-6.3-bcachefs.patch
Normal file
File diff suppressed because it is too large
Load Diff
3640
linux-tkg-patches/6.4/0003-eevdf.patch
Normal file
3640
linux-tkg-patches/6.4/0003-eevdf.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -128,13 +128,11 @@ index 3a98439bba83..6efc4f907f58 100644
|
|||||||
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
From: Etienne Juvigny <Ti3noU@gmail.com>
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
Subject: [PATCH 07/17] Zenify & stuff
|
Subject: [PATCH 07/17] Add Zenify option
|
||||||
|
|
||||||
---
|
---
|
||||||
init/Kconfig | 32 ++++++++++++++++++++++++++++++++
|
init/Kconfig | 32 ++++++++++++++++++++++++++++++++
|
||||||
kernel/sched/fair.c | 25 +++++++++++++++++++++++++
|
1 file changed, 32 insertions(+)
|
||||||
mm/page-writeback.c | 8 ++++++++
|
|
||||||
3 files changed, 65 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/init/Kconfig b/init/Kconfig
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
index 3ae8678e1145..da708eed0f1e 100644
|
index 3ae8678e1145..da708eed0f1e 100644
|
||||||
@@ -179,103 +177,6 @@ index 3ae8678e1145..da708eed0f1e 100644
|
|||||||
config BROKEN
|
config BROKEN
|
||||||
bool
|
bool
|
||||||
|
|
||||||
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
|
||||||
index 6b3b59cc51d6..2a0072192c3d 100644
|
|
||||||
--- a/kernel/sched/fair.c
|
|
||||||
+++ b/kernel/sched/fair.c
|
|
||||||
@@ -37,8 +37,13 @@
|
|
||||||
*
|
|
||||||
* (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+unsigned int sysctl_sched_latency = 3000000ULL;
|
|
||||||
+static unsigned int normalized_sysctl_sched_latency = 3000000ULL;
|
|
||||||
+#else
|
|
||||||
unsigned int sysctl_sched_latency = 6000000ULL;
|
|
||||||
static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The initial- and re-scaling of tunables is configurable
|
|
||||||
@@ -58,21 +63,34 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_L
|
|
||||||
*
|
|
||||||
* (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+unsigned int sysctl_sched_min_granularity = 300000ULL;
|
|
||||||
+static unsigned int normalized_sysctl_sched_min_granularity = 300000ULL;
|
|
||||||
+#else
|
|
||||||
unsigned int sysctl_sched_min_granularity = 750000ULL;
|
|
||||||
static unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Minimal preemption granularity for CPU-bound SCHED_IDLE tasks.
|
|
||||||
* Applies only when SCHED_IDLE tasks compete with normal tasks.
|
|
||||||
*
|
|
||||||
* (default: 0.75 msec)
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+unsigned int sysctl_sched_idle_min_granularity = 300000ULL;
|
|
||||||
+#else
|
|
||||||
unsigned int sysctl_sched_idle_min_granularity = 750000ULL;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+static unsigned int sched_nr_latency = 10;
|
|
||||||
+#else
|
|
||||||
static unsigned int sched_nr_latency = 8;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* After fork, child runs first. If set to 0 (default) then
|
|
||||||
@@ -128,8 +149,12 @@ int __weak arch_asym_cpu_priority(int cpu)
|
|
||||||
*
|
|
||||||
* (default: 5 msec, units: microseconds)
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+static unsigned int sysctl_sched_cfs_bandwidth_slice = 3000UL;
|
|
||||||
+#else
|
|
||||||
static unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
|
||||||
static struct ctl_table sched_fair_sysctls[] = {
|
|
||||||
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
|
|
||||||
index 28b3e7a67565..01a1aef2b9b1 100644
|
|
||||||
--- a/mm/page-writeback.c
|
|
||||||
+++ b/mm/page-writeback.c
|
|
||||||
@@ -71,7 +71,11 @@ static long ratelimit_pages = 32;
|
|
||||||
/*
|
|
||||||
* Start background writeback (via writeback threads) at this percentage
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+static int dirty_background_ratio = 20;
|
|
||||||
+#else
|
|
||||||
static int dirty_background_ratio = 10;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* dirty_background_bytes starts at 0 (disabled) so that it is a function of
|
|
||||||
@@ -88,7 +92,11 @@ int vm_highmem_is_dirtyable;
|
|
||||||
/*
|
|
||||||
* The generator of dirty data starts writeback at this percentage
|
|
||||||
*/
|
|
||||||
+#ifdef CONFIG_ZENIFY
|
|
||||||
+static int vm_dirty_ratio = 50;
|
|
||||||
+#else
|
|
||||||
static int vm_dirty_ratio = 20;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* vm_dirty_bytes starts at 0 (disabled) so that it is a function of
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
||||||
|
|
||||||
From e92e67143385cf285851e12aa8b7f083dd38dd24 Mon Sep 17 00:00:00 2001
|
From e92e67143385cf285851e12aa8b7f083dd38dd24 Mon Sep 17 00:00:00 2001
|
||||||
From: Steven Barrett <damentz@liquorix.net>
|
From: Steven Barrett <damentz@liquorix.net>
|
||||||
|
@@ -34,3 +34,109 @@ index 051aaf65c..705df5511 100644
|
|||||||
static DEFINE_MUTEX(sched_energy_mutex);
|
static DEFINE_MUTEX(sched_energy_mutex);
|
||||||
static bool sched_energy_update;
|
static bool sched_energy_update;
|
||||||
|
|
||||||
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
|
Subject: [PATCH] Zenify & stuff
|
||||||
|
|
||||||
|
---
|
||||||
|
kernel/sched/fair.c | 25 +++++++++++++++++++++++++
|
||||||
|
mm/page-writeback.c | 8 ++++++++
|
||||||
|
2 files changed, 33 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 6b3b59cc51d6..2a0072192c3d 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -37,8 +37,13 @@
|
||||||
|
*
|
||||||
|
* (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_latency = 3000000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_latency = 3000000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_latency = 6000000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The initial- and re-scaling of tunables is configurable
|
||||||
|
@@ -58,21 +63,34 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_L
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Minimal preemption granularity for CPU-bound SCHED_IDLE tasks.
|
||||||
|
* Applies only when SCHED_IDLE tasks compete with normal tasks.
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_idle_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_idle_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sched_nr_latency = 10;
|
||||||
|
+#else
|
||||||
|
static unsigned int sched_nr_latency = 8;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After fork, child runs first. If set to 0 (default) then
|
||||||
|
@@ -128,8 +149,12 @@ int __weak arch_asym_cpu_priority(int cpu)
|
||||||
|
*
|
||||||
|
* (default: 5 msec, units: microseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sysctl_sched_cfs_bandwidth_slice = 3000UL;
|
||||||
|
+#else
|
||||||
|
static unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
static struct ctl_table sched_fair_sysctls[] = {
|
||||||
|
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
|
||||||
|
index 28b3e7a67565..01a1aef2b9b1 100644
|
||||||
|
--- a/mm/page-writeback.c
|
||||||
|
+++ b/mm/page-writeback.c
|
||||||
|
@@ -71,7 +71,11 @@ static long ratelimit_pages = 32;
|
||||||
|
/*
|
||||||
|
* Start background writeback (via writeback threads) at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int dirty_background_ratio = 20;
|
||||||
|
+#else
|
||||||
|
static int dirty_background_ratio = 10;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dirty_background_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
@@ -88,7 +92,11 @@ int vm_highmem_is_dirtyable;
|
||||||
|
/*
|
||||||
|
* The generator of dirty data starts writeback at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int vm_dirty_ratio = 50;
|
||||||
|
+#else
|
||||||
|
static int vm_dirty_ratio = 20;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vm_dirty_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
90
linux-tkg-patches/6.4/0005-glitched-pds.patch
Normal file
90
linux-tkg-patches/6.4/0005-glitched-pds.patch
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
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)
|
104592
linux-tkg-patches/6.4/0008-6.4-bcachefs.patch
Normal file
104592
linux-tkg-patches/6.4/0008-6.4-bcachefs.patch
Normal file
File diff suppressed because it is too large
Load Diff
90
linux-tkg-patches/6.4/0009-glitched-bmq.patch
Normal file
90
linux-tkg-patches/6.4/0009-glitched-bmq.patch
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
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)
|
18
linux-tkg-patches/6.4/0009-glitched-ondemand-bmq.patch
Normal file
18
linux-tkg-patches/6.4/0009-glitched-ondemand-bmq.patch
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
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)
|
11310
linux-tkg-patches/6.4/0009-prjc_v6.4-r0.patch
Normal file
11310
linux-tkg-patches/6.4/0009-prjc_v6.4-r0.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -64,3 +64,139 @@ index 2c7171e0b0010..85de313ddec29 100644
|
|||||||
select CPU_FREQ_GOV_PERFORMANCE
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
help
|
help
|
||||||
|
|
||||||
|
From 6ce292eefababf73880f3565acdb96cdc68f90ac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Mon, 7 Aug 2023 09:21:55 +0200
|
||||||
|
Subject: revert [PATCH] scsi: aacraid: Reply queue mapping to CPUs based on IRQ
|
||||||
|
affinity
|
||||||
|
|
||||||
|
Due to a regression on adaptec raid cards leading to reset on large random I/O
|
||||||
|
https://bugzilla.kernel.org/show_bug.cgi?id=217599
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
|
||||||
|
index 7c6efde75..5e115e8b2 100644
|
||||||
|
--- a/drivers/scsi/aacraid/aacraid.h
|
||||||
|
+++ b/drivers/scsi/aacraid/aacraid.h
|
||||||
|
@@ -1678,7 +1678,6 @@ struct aac_dev
|
||||||
|
u32 handle_pci_error;
|
||||||
|
bool init_reset;
|
||||||
|
u8 soft_reset_support;
|
||||||
|
- u8 use_map_queue;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define aac_adapter_interrupt(dev) \
|
||||||
|
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
|
||||||
|
index 3f062e401..deb32c9f4 100644
|
||||||
|
--- a/drivers/scsi/aacraid/commsup.c
|
||||||
|
+++ b/drivers/scsi/aacraid/commsup.c
|
||||||
|
@@ -223,12 +223,8 @@ int aac_fib_setup(struct aac_dev * dev)
|
||||||
|
struct fib *aac_fib_alloc_tag(struct aac_dev *dev, struct scsi_cmnd *scmd)
|
||||||
|
{
|
||||||
|
struct fib *fibptr;
|
||||||
|
- u32 blk_tag;
|
||||||
|
- int i;
|
||||||
|
|
||||||
|
- blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
|
||||||
|
- i = blk_mq_unique_tag_to_tag(blk_tag);
|
||||||
|
- fibptr = &dev->fibs[i];
|
||||||
|
+ fibptr = &dev->fibs[scsi_cmd_to_rq(scmd)->tag];
|
||||||
|
/*
|
||||||
|
* Null out fields that depend on being zero at the start of
|
||||||
|
* each I/O
|
||||||
|
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
|
||||||
|
index c4a36c0be..68f4dbcff 100644
|
||||||
|
--- a/drivers/scsi/aacraid/linit.c
|
||||||
|
+++ b/drivers/scsi/aacraid/linit.c
|
||||||
|
@@ -19,7 +19,6 @@
|
||||||
|
|
||||||
|
#include <linux/compat.h>
|
||||||
|
#include <linux/blkdev.h>
|
||||||
|
-#include <linux/blk-mq-pci.h>
|
||||||
|
#include <linux/completion.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
@@ -505,15 +504,6 @@ static int aac_slave_configure(struct scsi_device *sdev)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void aac_map_queues(struct Scsi_Host *shost)
|
||||||
|
-{
|
||||||
|
- struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
|
||||||
|
-
|
||||||
|
- blk_mq_pci_map_queues(&shost->tag_set.map[HCTX_TYPE_DEFAULT],
|
||||||
|
- aac->pdev, 0);
|
||||||
|
- aac->use_map_queue = true;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/**
|
||||||
|
* aac_change_queue_depth - alter queue depths
|
||||||
|
* @sdev: SCSI device we are considering
|
||||||
|
@@ -1498,7 +1488,6 @@ static const struct scsi_host_template aac_driver_template = {
|
||||||
|
.bios_param = aac_biosparm,
|
||||||
|
.shost_groups = aac_host_groups,
|
||||||
|
.slave_configure = aac_slave_configure,
|
||||||
|
- .map_queues = aac_map_queues,
|
||||||
|
.change_queue_depth = aac_change_queue_depth,
|
||||||
|
.sdev_groups = aac_dev_groups,
|
||||||
|
.eh_abort_handler = aac_eh_abort,
|
||||||
|
@@ -1786,8 +1775,6 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||||
|
shost->max_lun = AAC_MAX_LUN;
|
||||||
|
|
||||||
|
pci_set_drvdata(pdev, shost);
|
||||||
|
- shost->nr_hw_queues = aac->max_msix;
|
||||||
|
- shost->host_tagset = 1;
|
||||||
|
|
||||||
|
error = scsi_add_host(shost, &pdev->dev);
|
||||||
|
if (error)
|
||||||
|
@@ -1919,7 +1906,6 @@ static void aac_remove_one(struct pci_dev *pdev)
|
||||||
|
struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
|
||||||
|
|
||||||
|
aac_cancel_rescan_worker(aac);
|
||||||
|
- aac->use_map_queue = false;
|
||||||
|
scsi_remove_host(shost);
|
||||||
|
|
||||||
|
__aac_shutdown(aac);
|
||||||
|
diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
|
||||||
|
index 61949f374..11ef58204 100644
|
||||||
|
--- a/drivers/scsi/aacraid/src.c
|
||||||
|
+++ b/drivers/scsi/aacraid/src.c
|
||||||
|
@@ -493,10 +493,6 @@ static int aac_src_deliver_message(struct fib *fib)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
u16 vector_no;
|
||||||
|
- struct scsi_cmnd *scmd;
|
||||||
|
- u32 blk_tag;
|
||||||
|
- struct Scsi_Host *shost = dev->scsi_host_ptr;
|
||||||
|
- struct blk_mq_queue_map *qmap;
|
||||||
|
|
||||||
|
atomic_inc(&q->numpending);
|
||||||
|
|
||||||
|
@@ -509,25 +505,8 @@ static int aac_src_deliver_message(struct fib *fib)
|
||||||
|
if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE3)
|
||||||
|
&& dev->sa_firmware)
|
||||||
|
vector_no = aac_get_vector(dev);
|
||||||
|
- else {
|
||||||
|
- if (!fib->vector_no || !fib->callback_data) {
|
||||||
|
- if (shost && dev->use_map_queue) {
|
||||||
|
- qmap = &shost->tag_set.map[HCTX_TYPE_DEFAULT];
|
||||||
|
- vector_no = qmap->mq_map[raw_smp_processor_id()];
|
||||||
|
- }
|
||||||
|
- /*
|
||||||
|
- * We hardcode the vector_no for
|
||||||
|
- * reserved commands as a valid shost is
|
||||||
|
- * absent during the init
|
||||||
|
- */
|
||||||
|
- else
|
||||||
|
- vector_no = 0;
|
||||||
|
- } else {
|
||||||
|
- scmd = (struct scsi_cmnd *)fib->callback_data;
|
||||||
|
- blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
|
||||||
|
- vector_no = blk_mq_unique_tag_to_hwq(blk_tag);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ else
|
||||||
|
+ vector_no = fib->vector_no;
|
||||||
|
|
||||||
|
if (native_hba) {
|
||||||
|
if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {
|
||||||
|
@@ -1,20 +1,24 @@
|
|||||||
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
index 70392fd2f..34f98648f 100755
|
index 8049f0e2c..de170760d 100755
|
||||||
--- a/scripts/package/mkspec
|
--- a/scripts/package/mkspec
|
||||||
+++ b/scripts/package/mkspec
|
+++ b/scripts/package/mkspec
|
||||||
@@ -63,4 +66,4 @@ $S Source: kernel-$__KERNELRELEASE.tar.gz
|
@@ -53,2 +53,3 @@ $S Source2: diff.patch
|
||||||
|
Provides: kernel-$KERNELRELEASE
|
||||||
|
+ Provides: kernel-uname-r = %{version}
|
||||||
|
$S BuildRequires: bc binutils bison dwarves
|
||||||
|
@@ -69,4 +70,4 @@ $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
- Obsoletes: kernel-headers
|
- Obsoletes: kernel-headers
|
||||||
Provides: kernel-headers = %{version}
|
Provides: kernel-headers = %{version}
|
||||||
+ Provides: installonlypkg(kernel) = %{version}
|
+ Provides: installonlypkg(kernel) = %{version}
|
||||||
%description headers
|
%description headers
|
||||||
@@ -75,2 +78,5 @@ $S$M Summary: Development package for building kernel modules to match the $__KE
|
@@ -81,2 +82,5 @@ $S$M Summary: Development package for building kernel modules to match the $__KE
|
||||||
$S$M Group: System Environment/Kernel
|
$S$M Group: System Environment/Kernel
|
||||||
+$S$M Provides: kernel-devel = %{version}
|
+$S$M Provides: kernel-devel = %{version}
|
||||||
+$S$M Provides: kernel-devel-uname-r = %{version}
|
+$S$M Provides: kernel-devel-uname-r = %{version}
|
||||||
+$S$M Provides: installonlypkg(kernel) = %{version}
|
+$S$M Provides: installonlypkg(kernel) = %{version}
|
||||||
$S$M AutoReqProv: no
|
$S$M AutoReqProv: no
|
||||||
@@ -80,2 +86,18 @@ $S$M against the $__KERNELRELEASE kernel package.
|
@@ -86,2 +90,18 @@ $S$M against the $__KERNELRELEASE kernel package.
|
||||||
$S$M
|
$S$M
|
||||||
+$S # Opt out of a lot of Fedora hardening flags etc...
|
+$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
+$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
+$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
409
linux-tkg-patches/6.4/0013-suse-additions.patch
Normal file
409
linux-tkg-patches/6.4/0013-suse-additions.patch
Normal file
@@ -0,0 +1,409 @@
|
|||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Wed, 7 Feb 2018 15:16:04 +0100
|
||||||
|
Subject: Add ksym-provides tool.
|
||||||
|
|
||||||
|
References: bsc#1077692
|
||||||
|
Patch-mainline: no, not needed
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
---
|
||||||
|
scripts/mod/Makefile | 6 +-
|
||||||
|
scripts/mod/ksym-provides.c | 124 ++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 129 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 scripts/mod/ksym-provides.c
|
||||||
|
|
||||||
|
--- a/scripts/mod/Makefile
|
||||||
|
+++ b/scripts/mod/Makefile
|
||||||
|
@@ -2,11 +2,15 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
|
||||||
|
|
||||||
|
-hostprogs-always-y += modpost mk_elfconfig
|
||||||
|
+hostprogs-always-y += modpost mk_elfconfig ksym-provides
|
||||||
|
always-y += empty.o
|
||||||
|
|
||||||
|
modpost-objs := modpost.o file2alias.o sumversion.o
|
||||||
|
|
||||||
|
+ksym-provides-objs := ksym-provides.o
|
||||||
|
+
|
||||||
|
+HOSTLDLIBS_ksym-provides := -lelf
|
||||||
|
+
|
||||||
|
devicetable-offsets-file := devicetable-offsets.h
|
||||||
|
|
||||||
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/scripts/mod/ksym-provides.c
|
||||||
|
@@ -0,0 +1,124 @@
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <gelf.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+int main(int argc, char *argv[])
|
||||||
|
+{
|
||||||
|
+ int fd;
|
||||||
|
+ Elf *elf;
|
||||||
|
+ Elf_Scn *scn;
|
||||||
|
+ GElf_Shdr shdr;
|
||||||
|
+ size_t strndx;
|
||||||
|
+ int ndx;
|
||||||
|
+ Elf_Data *symdata, *data;
|
||||||
|
+ GElf_Sym sym;
|
||||||
|
+ char *name;
|
||||||
|
+ const char * flavor = argv[1];
|
||||||
|
+ const char * prefix = "__crc_";
|
||||||
|
+ size_t prefixlen = strlen(prefix);
|
||||||
|
+ const char * symformat = "ksym(%s:%s) = %lx\n";
|
||||||
|
+
|
||||||
|
+ if (argc != 3) {
|
||||||
|
+ fprintf(stderr, "Usage: %s <flavor> <filename>\n", argv[0]);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (elf_version(EV_CURRENT) == EV_NONE) {
|
||||||
|
+ fprintf(stderr, "libelf initialization failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fd = open(argv[2], O_RDONLY);
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ perror("open failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf = elf_begin(fd, ELF_C_READ, NULL);
|
||||||
|
+ if (!elf) {
|
||||||
|
+ fprintf(stderr, "elf_begin failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_close;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = NULL;
|
||||||
|
+ while ((scn = elf_nextscn(elf, scn)) != NULL) {
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type == SHT_SYMTAB)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fputs("symbol table not found\n", stderr);
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ strndx = shdr.sh_link;
|
||||||
|
+
|
||||||
|
+ symdata = elf_getdata(scn, NULL);
|
||||||
|
+ if (!symdata) {
|
||||||
|
+ fprintf(stderr, "elf_getdata failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (ndx = 0; gelf_getsym(symdata, ndx, &sym) != NULL; ++ndx) {
|
||||||
|
+
|
||||||
|
+ name = elf_strptr(elf, strndx, sym.st_name);
|
||||||
|
+ if (!name) {
|
||||||
|
+ fprintf(stderr, "elf_strptr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (strncmp(prefix, name, prefixlen))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (sym.st_shndx >= SHN_LORESERVE) {
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ sym.st_value);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = elf_getscn(elf, sym.st_shndx);
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fprintf(stderr, "elf_getscn failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type != SHT_PROGBITS)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ data = elf_getdata_rawchunk(
|
||||||
|
+ elf, shdr.sh_offset + sym.st_value - shdr.sh_addr,
|
||||||
|
+ sizeof(GElf_Word), ELF_T_WORD);
|
||||||
|
+ if (!data) {
|
||||||
|
+ fprintf(stderr, "elf_getdata_rawchunk failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ (unsigned long) *(GElf_Word*)data->d_buf);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ close(fd);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ err_end:
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ err_close:
|
||||||
|
+ close(fd);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
From bb1a83cf109eee56c8dee26f7910c772f8c246fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Thu, 29 Jun 2023 17:47:16 +0200
|
||||||
|
Subject: [PATCH] depmod: Handle installing modules under a prefix
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: Never, upstream rejected
|
||||||
|
|
||||||
|
Some distributions aim at shipping all files in /usr.
|
||||||
|
|
||||||
|
The path under which kernel modules are installed is hardcoded to /lib
|
||||||
|
which conflicts with this goal.
|
||||||
|
|
||||||
|
When kmod provides the config command, use it to determine the correct
|
||||||
|
module installation path.
|
||||||
|
|
||||||
|
With kmod that does not provide the config command /lib/modules is used
|
||||||
|
as before.
|
||||||
|
|
||||||
|
Note: users can use
|
||||||
|
|
||||||
|
make MODLIB='$(INSTALL_MOD_PATH)/usr/lib/modules/$(KERNELRELEASE)'
|
||||||
|
|
||||||
|
to install modules from mainline kernel on usrmerged system.
|
||||||
|
Not great for KMPs, though
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Nacked-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
v2: Avoid error on systems with kmod that does not support config
|
||||||
|
command
|
||||||
|
v3: More verbose commit message
|
||||||
|
v4:
|
||||||
|
- Document jq requirement
|
||||||
|
- fix bashism
|
||||||
|
- Update to getting full module path, not just additional prefix
|
||||||
|
v5: switch to pkgconfig
|
||||||
|
---
|
||||||
|
Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 658ec2b8aa74..5a1889fc43c7 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1165,7 +1165,9 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
|
||||||
|
# makefile but the argument can be passed to make if needed.
|
||||||
|
#
|
||||||
|
|
||||||
|
-MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||||
|
+export KERNEL_MODULE_DIRECTORY := $(shell pkg-config --print-variables kmod 2>/dev/null | grep '^module_directory$$' >/dev/null && pkg-config --variable=module_directory kmod || echo /lib/modules)
|
||||||
|
+
|
||||||
|
+MODLIB = $(INSTALL_MOD_PATH)$(KERNEL_MODULE_DIRECTORY)/$(KERNELRELEASE)
|
||||||
|
export MODLIB
|
||||||
|
|
||||||
|
PHONY += prepare0
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 4d15c9fa058e6dee09324cfc93f48858d4296019 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Tue, 18 Jul 2023 18:58:43 +0200
|
||||||
|
Subject: [PATCH] Revert "kbuild: Hack for depmod not handling X.Y versions"
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: v6.6-rc1
|
||||||
|
Git-commit: 4d15c9fa058e6dee09324cfc93f48858d4296019
|
||||||
|
|
||||||
|
Remove hack for ancient version of module-init-tools that was added in
|
||||||
|
Linux 3.0.
|
||||||
|
|
||||||
|
Since then module-init-tools was replaced with kmod.
|
||||||
|
|
||||||
|
This hack adds an additional indirection, and causes confusing errors
|
||||||
|
to be printed when depmod fails.
|
||||||
|
|
||||||
|
Reverts commit 8fc62e594253 ("kbuild: Do not write to builddir in modules_install")
|
||||||
|
Reverts commit bfe5424a8b31 ("kbuild: Hack for depmod not handling X.Y versions")
|
||||||
|
|
||||||
|
Link: https://lore.kernel.org/linux-modules/CAK7LNAQMs3QBYfWcLkmOQdbbq7cj=7wWbK=AWhdTC2rAsKHXzQ@mail.gmail.com/
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
scripts/depmod.sh | 27 +--------------------------
|
||||||
|
1 file changed, 1 insertion(+), 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/depmod.sh b/scripts/depmod.sh
|
||||||
|
index 3643b4f896ed..fca689ba4f21 100755
|
||||||
|
--- a/scripts/depmod.sh
|
||||||
|
+++ b/scripts/depmod.sh
|
||||||
|
@@ -23,33 +23,8 @@ if [ -z $(command -v $DEPMOD) ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
-# older versions of depmod require the version string to start with three
|
||||||
|
-# numbers, so we cheat with a symlink here
|
||||||
|
-depmod_hack_needed=true
|
||||||
|
-tmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
|
||||||
|
-mkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
|
||||||
|
-if "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
|
||||||
|
- if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
|
||||||
|
- -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
|
||||||
|
- depmod_hack_needed=false
|
||||||
|
- fi
|
||||||
|
-fi
|
||||||
|
-rm -rf "$tmp_dir"
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
|
||||||
|
- ln -s "$KERNELRELEASE" "$symlink"
|
||||||
|
- KERNELRELEASE=99.98.$KERNELRELEASE
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
set -- -ae -F System.map
|
||||||
|
if test -n "$INSTALL_MOD_PATH"; then
|
||||||
|
set -- "$@" -b "$INSTALL_MOD_PATH"
|
||||||
|
fi
|
||||||
|
-"$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
-ret=$?
|
||||||
|
-
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- rm -f "$symlink"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-exit $ret
|
||||||
|
+exec "$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 0ec8a11bd6287ada08e6c13023ce47be5cdc4270 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 00:48:37 +0200
|
||||||
|
Subject: mkspec: Suse is using /usr/lib instead of the standard /lib symlink. Adapt.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index de170760d..2b5ee7b35 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -121,11 +121,11 @@ $S
|
||||||
|
$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
|
||||||
|
cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
|
||||||
|
cp .config %{buildroot}/boot/config-$KERNELRELEASE
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
|
||||||
|
+$S$M cd %{buildroot}/usr/lib/modules/$KERNELRELEASE
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
@@ -159,9 +159,9 @@ $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr (-, root, root)
|
||||||
|
-$M /lib/modules/$KERNELRELEASE
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$M /usr/lib/modules/$KERNELRELEASE
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
/boot/*
|
||||||
|
|
||||||
|
%files headers
|
||||||
|
@@ -171,6 +171,6 @@ $S$M
|
||||||
|
$S$M %files devel
|
||||||
|
$S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
EOF
|
||||||
|
|
||||||
|
From 23133fe6745d567db5b93dc9e6aecc32d31354bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jeff Mahoney <jeffm@suse.de>
|
||||||
|
Date: Tue, 31 Mar 2009 09:46:30 -0400
|
||||||
|
Subject: [PATCH] - doc/README.KSYMS: Add to repo.
|
||||||
|
|
||||||
|
---
|
||||||
|
doc/README.KSYMS | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
create mode 100644 doc/README.KSYMS
|
||||||
|
|
||||||
|
diff --git a/doc/README.KSYMS b/doc/README.KSYMS
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..39fe7878174
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/doc/README.KSYMS
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+This file is a place holder for the kernel-syms{,-rt} package. It is used
|
||||||
|
+to group build dependencies for all kernel flavors.
|
||||||
|
+
|
||||||
|
+The KMP build process will build KMPs against all installed kernel flavors
|
||||||
|
+automatically. If you don't need to build against other flavors than the
|
||||||
|
+ones you've already installed - it is safe to uninstall this package.
|
||||||
|
|
||||||
|
From 5cd5e149a95d37746a89850f4beddef4f0ad2224 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 14:06:44 +0200
|
||||||
|
Subject: Suse: Add kernel-syms package
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index ff8c33ead..51c94131e 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -52,7 +52,7 @@ $S Source1: config
|
||||||
|
$S Source2: diff.patch
|
||||||
|
Provides: kernel-$KERNELRELEASE
|
||||||
|
Provides: kernel-uname-r = %{version}
|
||||||
|
-$S BuildRequires: bc binutils bison dwarves
|
||||||
|
+$S BuildRequires: bc binutils bison dwarves coreutils
|
||||||
|
$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||||
|
$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
|
||||||
|
@@ -88,6 +88,19 @@ $S$M %description -n kernel-devel
|
||||||
|
$S$M This package provides kernel headers and makefiles sufficient to build modules
|
||||||
|
$S$M against the $__KERNELRELEASE kernel package.
|
||||||
|
$S$M
|
||||||
|
+$S$M %package syms
|
||||||
|
+$S$M Summary: Kernel Symbol Versions (modversions) for the $__KERNELRELEASE kernel
|
||||||
|
+$S$M Group: Development/Sources
|
||||||
|
+$S$M AutoReqProv: no
|
||||||
|
+$S$M Provides: kernel-syms = %{version}
|
||||||
|
+$S$M Requires: kernel-devel = %{version}
|
||||||
|
+$S$M %description -n kernel-syms
|
||||||
|
+$S$M Kernel symbols, such as functions and variables, have version
|
||||||
|
+$S$M information attached to them. This package contains the symbol versions
|
||||||
|
+$S$M for the standard kernels.
|
||||||
|
+$S$M This package is needed for compiling kernel module packages with proper
|
||||||
|
+$S$M package dependencies.
|
||||||
|
+
|
||||||
|
$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
|
$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
$S %undefine _package_note_file
|
||||||
|
@@ -173,4 +189,8 @@ $S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M
|
||||||
|
+$S$M %files syms
|
||||||
|
+$S$M %defattr (-, root, root)
|
||||||
|
+$S$M /usr/src/kernels/$KERNELRELEASE/doc
|
||||||
|
EOF
|
@@ -0,0 +1,151 @@
|
|||||||
|
From d50977b164e708bf523a35ef53315355528c3ca6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||||||
|
Date: Mon, 16 Sep 2019 04:53:20 +0200
|
||||||
|
Subject: [PATCH] ZEN: Add sysctl and CONFIG to disallow unprivileged
|
||||||
|
CLONE_NEWUSER
|
||||||
|
|
||||||
|
Our default behavior continues to match the vanilla kernel.
|
||||||
|
---
|
||||||
|
include/linux/user_namespace.h | 4 ++++
|
||||||
|
init/Kconfig | 16 ++++++++++++++++
|
||||||
|
kernel/fork.c | 14 ++++++++++++++
|
||||||
|
kernel/sysctl.c | 12 ++++++++++++
|
||||||
|
kernel/user_namespace.c | 7 +++++++
|
||||||
|
5 files changed, 53 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
|
||||||
|
index 45f09bec02c485..87b20e2ee27445 100644
|
||||||
|
--- a/include/linux/user_namespace.h
|
||||||
|
+++ b/include/linux/user_namespace.h
|
||||||
|
@@ -148,6 +148,8 @@ static inline void set_userns_rlimit_max(struct user_namespace *ns,
|
||||||
|
|
||||||
|
#ifdef CONFIG_USER_NS
|
||||||
|
|
||||||
|
+extern int unprivileged_userns_clone;
|
||||||
|
+
|
||||||
|
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
|
||||||
|
{
|
||||||
|
if (ns)
|
||||||
|
@@ -181,6 +183,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);
|
||||||
|
struct ns_common *ns_get_owner(struct ns_common *ns);
|
||||||
|
#else
|
||||||
|
|
||||||
|
+#define unprivileged_userns_clone 0
|
||||||
|
+
|
||||||
|
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
|
||||||
|
{
|
||||||
|
return &init_user_ns;
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
index 94125d3b6893c7..9f7139b536f638 100644
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -1247,6 +1247,22 @@ config USER_NS
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
|
+config USER_NS_UNPRIVILEGED
|
||||||
|
+ bool "Allow unprivileged users to create namespaces"
|
||||||
|
+ default y
|
||||||
|
+ depends on USER_NS
|
||||||
|
+ help
|
||||||
|
+ When disabled, unprivileged users will not be able to create
|
||||||
|
+ new namespaces. Allowing users to create their own namespaces
|
||||||
|
+ has been part of several recent local privilege escalation
|
||||||
|
+ exploits, so if you need user namespaces but are
|
||||||
|
+ paranoid^Wsecurity-conscious you want to disable this.
|
||||||
|
+
|
||||||
|
+ This setting can be overridden at runtime via the
|
||||||
|
+ kernel.unprivileged_userns_clone sysctl.
|
||||||
|
+
|
||||||
|
+ If unsure, say Y.
|
||||||
|
+
|
||||||
|
config PID_NS
|
||||||
|
bool "PID Namespaces"
|
||||||
|
default y
|
||||||
|
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||||
|
index 08969f5aa38d59..ff601cb7a1fae0 100644
|
||||||
|
--- a/kernel/fork.c
|
||||||
|
+++ b/kernel/fork.c
|
||||||
|
@@ -98,6 +98,10 @@
|
||||||
|
#include <linux/io_uring.h>
|
||||||
|
#include <linux/bpf.h>
|
||||||
|
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+#include <linux/user_namespace.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <asm/pgalloc.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
#include <asm/mmu_context.h>
|
||||||
|
@@ -2008,6 +2012,10 @@ static __latent_entropy struct task_struct *copy_process(
|
||||||
|
if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
+ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone)
|
||||||
|
+ if (!capable(CAP_SYS_ADMIN))
|
||||||
|
+ return ERR_PTR(-EPERM);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Thread groups must share signals as well, and detached threads
|
||||||
|
* can only be started up within the thread group.
|
||||||
|
@@ -3166,6 +3174,12 @@ int ksys_unshare(unsigned long unshare_flags)
|
||||||
|
if (unshare_flags & CLONE_NEWNS)
|
||||||
|
unshare_flags |= CLONE_FS;
|
||||||
|
|
||||||
|
+ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) {
|
||||||
|
+ err = -EPERM;
|
||||||
|
+ if (!capable(CAP_SYS_ADMIN))
|
||||||
|
+ goto bad_unshare_out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
err = check_unshare_flags(unshare_flags);
|
||||||
|
if (err)
|
||||||
|
goto bad_unshare_out;
|
||||||
|
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
|
||||||
|
index c6d9dec11b749d..9a4514ad481b21 100644
|
||||||
|
--- a/kernel/sysctl.c
|
||||||
|
+++ b/kernel/sysctl.c
|
||||||
|
@@ -81,6 +81,9 @@
|
||||||
|
#ifdef CONFIG_RT_MUTEXES
|
||||||
|
#include <linux/rtmutex.h>
|
||||||
|
#endif
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+#include <linux/user_namespace.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* shared constants to be used in various sysctls */
|
||||||
|
const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 };
|
||||||
|
@@ -1659,6 +1662,15 @@ static struct ctl_table kern_table[] = {
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = proc_dointvec,
|
||||||
|
},
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+ {
|
||||||
|
+ .procname = "unprivileged_userns_clone",
|
||||||
|
+ .data = &unprivileged_userns_clone,
|
||||||
|
+ .maxlen = sizeof(int),
|
||||||
|
+ .mode = 0644,
|
||||||
|
+ .proc_handler = proc_dointvec,
|
||||||
|
+ },
|
||||||
|
+#endif
|
||||||
|
#ifdef CONFIG_PROC_SYSCTL
|
||||||
|
{
|
||||||
|
.procname = "tainted",
|
||||||
|
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
|
||||||
|
index 54211dbd516c57..16ca0c1516298d 100644
|
||||||
|
--- a/kernel/user_namespace.c
|
||||||
|
+++ b/kernel/user_namespace.c
|
||||||
|
@@ -22,6 +22,13 @@
|
||||||
|
#include <linux/bsearch.h>
|
||||||
|
#include <linux/sort.h>
|
||||||
|
|
||||||
|
+/* sysctl */
|
||||||
|
+#ifdef CONFIG_USER_NS_UNPRIVILEGED
|
||||||
|
+int unprivileged_userns_clone = 1;
|
||||||
|
+#else
|
||||||
|
+int unprivileged_userns_clone;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static struct kmem_cache *user_ns_cachep __read_mostly;
|
||||||
|
static DEFINE_MUTEX(userns_state_mutex);
|
||||||
|
|
476
linux-tkg-patches/6.5/0002-clear-patches.patch
Normal file
476
linux-tkg-patches/6.5/0002-clear-patches.patch
Normal file
@@ -0,0 +1,476 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Mon, 14 Mar 2016 11:10:58 -0600
|
||||||
|
Subject: [PATCH] pci pme wakeups
|
||||||
|
|
||||||
|
Reduce wakeups for PME checks, which are a workaround for miswired
|
||||||
|
boards (sadly, too many of them) in laptops.
|
||||||
|
---
|
||||||
|
drivers/pci/pci.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
|
||||||
|
index c9338f9..6974fbf 100644
|
||||||
|
--- a/drivers/pci/pci.c
|
||||||
|
+++ b/drivers/pci/pci.c
|
||||||
|
@@ -62,7 +62,7 @@ struct pci_pme_device {
|
||||||
|
struct pci_dev *dev;
|
||||||
|
};
|
||||||
|
|
||||||
|
-#define PME_TIMEOUT 1000 /* How long between PME checks */
|
||||||
|
+#define PME_TIMEOUT 4000 /* How long between PME checks */
|
||||||
|
|
||||||
|
static void pci_dev_d3_sleep(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sat, 19 Mar 2016 21:32:19 -0400
|
||||||
|
Subject: [PATCH] intel_idle: tweak cpuidle cstates
|
||||||
|
|
||||||
|
Increase target_residency in cpuidle cstate
|
||||||
|
|
||||||
|
Tune intel_idle to be a bit less agressive;
|
||||||
|
Clear linux is cleaner in hygiene (wakupes) than the average linux,
|
||||||
|
so we can afford changing these in a way that increases
|
||||||
|
performance while keeping power efficiency
|
||||||
|
---
|
||||||
|
drivers/idle/intel_idle.c | 44 +++++++++++++++++++--------------------
|
||||||
|
1 file changed, 22 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
|
||||||
|
index f449584..c994d24 100644
|
||||||
|
--- a/drivers/idle/intel_idle.c
|
||||||
|
+++ b/drivers/idle/intel_idle.c
|
||||||
|
@@ -531,7 +531,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -539,7 +539,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 33,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 900,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -547,7 +547,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 133,
|
||||||
|
- .target_residency = 400,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -555,7 +555,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x32",
|
||||||
|
.flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 166,
|
||||||
|
- .target_residency = 500,
|
||||||
|
+ .target_residency = 1500,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -563,7 +563,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 300,
|
||||||
|
- .target_residency = 900,
|
||||||
|
+ .target_residency = 2000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -571,7 +571,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 600,
|
||||||
|
- .target_residency = 1800,
|
||||||
|
+ .target_residency = 5000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -579,7 +579,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 2600,
|
||||||
|
- .target_residency = 7700,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -599,7 +599,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -607,7 +607,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 40,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -615,7 +615,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 133,
|
||||||
|
- .target_residency = 400,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -623,7 +623,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x32",
|
||||||
|
.flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 166,
|
||||||
|
- .target_residency = 500,
|
||||||
|
+ .target_residency = 2000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -631,7 +631,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 300,
|
||||||
|
- .target_residency = 900,
|
||||||
|
+ .target_residency = 4000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -639,7 +639,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 600,
|
||||||
|
- .target_residency = 1800,
|
||||||
|
+ .target_residency = 7000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -647,7 +647,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 2600,
|
||||||
|
- .target_residency = 7700,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -668,7 +668,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -676,7 +676,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 70,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -684,7 +684,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 85,
|
||||||
|
- .target_residency = 200,
|
||||||
|
+ .target_residency = 600,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -692,7 +692,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x33",
|
||||||
|
.flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 124,
|
||||||
|
- .target_residency = 800,
|
||||||
|
+ .target_residency = 3000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -700,7 +700,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 200,
|
||||||
|
- .target_residency = 800,
|
||||||
|
+ .target_residency = 3200,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -708,7 +708,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 480,
|
||||||
|
- .target_residency = 5000,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -716,7 +716,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 890,
|
||||||
|
- .target_residency = 5000,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -737,7 +737,7 @@ static struct cpuidle_state skx_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 300,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Fri, 6 Jan 2017 15:34:09 +0000
|
||||||
|
Subject: [PATCH] ipv4/tcp: allow the memory tuning for tcp to go a little
|
||||||
|
bigger than default
|
||||||
|
|
||||||
|
---
|
||||||
|
net/ipv4/tcp.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
|
||||||
|
index 30c1142..4345075 100644
|
||||||
|
--- a/net/ipv4/tcp.c
|
||||||
|
+++ b/net/ipv4/tcp.c
|
||||||
|
@@ -4201,8 +4201,8 @@ void __init tcp_init(void)
|
||||||
|
tcp_init_mem();
|
||||||
|
/* Set per-socket limits to no more than 1/128 the pressure threshold */
|
||||||
|
limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7);
|
||||||
|
- max_wshare = min(4UL*1024*1024, limit);
|
||||||
|
- max_rshare = min(6UL*1024*1024, limit);
|
||||||
|
+ max_wshare = min(16UL*1024*1024, limit);
|
||||||
|
+ max_rshare = min(16UL*1024*1024, limit);
|
||||||
|
|
||||||
|
init_net.ipv4.sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
|
||||||
|
init_net.ipv4.sysctl_tcp_wmem[1] = 16*1024;
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sun, 18 Feb 2018 23:35:41 +0000
|
||||||
|
Subject: [PATCH] locking: rwsem: spin faster
|
||||||
|
|
||||||
|
tweak rwsem owner spinning a bit
|
||||||
|
---
|
||||||
|
kernel/locking/rwsem.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
|
||||||
|
index f11b9bd..1bbfcc1 100644
|
||||||
|
--- a/kernel/locking/rwsem.c
|
||||||
|
+++ b/kernel/locking/rwsem.c
|
||||||
|
@@ -717,6 +717,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||||||
|
struct task_struct *new, *owner;
|
||||||
|
unsigned long flags, new_flags;
|
||||||
|
enum owner_state state;
|
||||||
|
+ int i = 0;
|
||||||
|
|
||||||
|
owner = rwsem_owner_flags(sem, &flags);
|
||||||
|
state = rwsem_owner_state(owner, flags, nonspinnable);
|
||||||
|
@@ -750,7 +751,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- cpu_relax();
|
||||||
|
+ if (i++ > 1000)
|
||||||
|
+ cpu_relax();
|
||||||
|
}
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Thu, 2 Jun 2016 23:36:32 -0500
|
||||||
|
Subject: [PATCH] initialize ata before graphics
|
||||||
|
|
||||||
|
ATA init is the long pole in the boot process, and its asynchronous.
|
||||||
|
move the graphics init after it so that ata and graphics initialize
|
||||||
|
in parallel
|
||||||
|
---
|
||||||
|
drivers/Makefile | 15 ++++++++-------
|
||||||
|
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/Makefile b/drivers/Makefile
|
||||||
|
index c0cd1b9..af1e2fb 100644
|
||||||
|
--- a/drivers/Makefile
|
||||||
|
+++ b/drivers/Makefile
|
||||||
|
@@ -59,15 +59,8 @@ obj-y += char/
|
||||||
|
# iommu/ comes before gpu as gpu are using iommu controllers
|
||||||
|
obj-y += iommu/
|
||||||
|
|
||||||
|
-# gpu/ comes after char for AGP vs DRM startup and after iommu
|
||||||
|
-obj-y += gpu/
|
||||||
|
-
|
||||||
|
obj-$(CONFIG_CONNECTOR) += connector/
|
||||||
|
|
||||||
|
-# i810fb and intelfb depend on char/agp/
|
||||||
|
-obj-$(CONFIG_FB_I810) += video/fbdev/i810/
|
||||||
|
-obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
|
||||||
|
-
|
||||||
|
obj-$(CONFIG_PARPORT) += parport/
|
||||||
|
obj-$(CONFIG_NVM) += lightnvm/
|
||||||
|
obj-y += base/ block/ misc/ mfd/ nfc/
|
||||||
|
@@ -80,6 +73,14 @@ obj-$(CONFIG_IDE) += ide/
|
||||||
|
obj-y += scsi/
|
||||||
|
obj-y += nvme/
|
||||||
|
obj-$(CONFIG_ATA) += ata/
|
||||||
|
+
|
||||||
|
+# gpu/ comes after char for AGP vs DRM startup and after iommu
|
||||||
|
+obj-y += gpu/
|
||||||
|
+
|
||||||
|
+# i810fb and intelfb depend on char/agp/
|
||||||
|
+obj-$(CONFIG_FB_I810) += video/fbdev/i810/
|
||||||
|
+obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
|
||||||
|
+
|
||||||
|
obj-$(CONFIG_TARGET_CORE) += target/
|
||||||
|
obj-$(CONFIG_MTD) += mtd/
|
||||||
|
obj-$(CONFIG_SPI) += spi/
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 676c2dc63592f52b716515573a3a825582a371e9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sat, 8 Dec 2018 18:21:32 +0000
|
||||||
|
Subject: [PATCH 1/9] x86/vdso: Use lfence instead of rep and nop
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
arch/x86/include/asm/vdso/processor.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/x86/include/asm/vdso/processor.h b/arch/x86/include/asm/vdso/processor.h
|
||||||
|
index 57b1a7034c64..e2c45674f989 100644
|
||||||
|
--- a/arch/x86/include/asm/vdso/processor.h
|
||||||
|
+++ b/arch/x86/include/asm/vdso/processor.h
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
|
||||||
|
static __always_inline void rep_nop(void)
|
||||||
|
{
|
||||||
|
- asm volatile("rep; nop" ::: "memory");
|
||||||
|
+ asm volatile("lfence" ::: "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
static __always_inline void cpu_relax(void)
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
||||||
|
From 48dc9669f8db68adc480ffc2698ed8204440e45b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Thu, 13 Dec 2018 01:00:49 +0000
|
||||||
|
Subject: [PATCH 2/9] sched/wait: Do accept() in LIFO order for cache
|
||||||
|
efficiency
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
include/linux/wait.h | 2 ++
|
||||||
|
kernel/sched/wait.c | 24 ++++++++++++++++++++++++
|
||||||
|
net/ipv4/inet_connection_sock.c | 2 +-
|
||||||
|
3 files changed, 27 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/wait.h b/include/linux/wait.h
|
||||||
|
index a0307b516b09..edc21128f387 100644
|
||||||
|
--- a/include/linux/wait.h
|
||||||
|
+++ b/include/linux/wait.h
|
||||||
|
@@ -165,6 +165,7 @@ static inline bool wq_has_sleeper(struct wait_queue_head *wq_head)
|
||||||
|
|
||||||
|
extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
+extern void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
|
||||||
|
@@ -1192,6 +1193,7 @@ do { \
|
||||||
|
*/
|
||||||
|
void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
bool prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
+void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout);
|
||||||
|
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
|
||||||
|
index 133b74730738..1647fb8662eb 100644
|
||||||
|
--- a/kernel/sched/wait.c
|
||||||
|
+++ b/kernel/sched/wait.c
|
||||||
|
@@ -47,6 +47,17 @@ void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(add_wait_queue_priority);
|
||||||
|
|
||||||
|
+void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
|
||||||
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
|
+
|
||||||
|
+ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
|
||||||
|
+ spin_lock_irqsave(&wq_head->lock, flags);
|
||||||
|
+ __add_wait_queue(wq_head, wq_entry);
|
||||||
|
+ spin_unlock_irqrestore(&wq_head->lock, flags);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL(add_wait_queue_exclusive_lifo);
|
||||||
|
+
|
||||||
|
void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
@@ -293,6 +304,19 @@ prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_ent
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(prepare_to_wait_exclusive);
|
||||||
|
|
||||||
|
+void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
|
||||||
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
|
+
|
||||||
|
+ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
|
||||||
|
+ spin_lock_irqsave(&wq_head->lock, flags);
|
||||||
|
+ if (list_empty(&wq_entry->entry))
|
||||||
|
+ __add_wait_queue(wq_head, wq_entry);
|
||||||
|
+ set_current_state(state);
|
||||||
|
+ spin_unlock_irqrestore(&wq_head->lock, flags);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL(prepare_to_wait_exclusive_lifo);
|
||||||
|
+
|
||||||
|
void init_wait_entry(struct wait_queue_entry *wq_entry, int flags)
|
||||||
|
{
|
||||||
|
wq_entry->flags = flags;
|
||||||
|
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
|
||||||
|
index f2c43f67187d..9885bfb429a2 100644
|
||||||
|
--- a/net/ipv4/inet_connection_sock.c
|
||||||
|
+++ b/net/ipv4/inet_connection_sock.c
|
||||||
|
@@ -606,7 +606,7 @@ static int inet_csk_wait_for_connect(struct sock *sk, long timeo)
|
||||||
|
* having to remove and re-insert us on the wait queue.
|
||||||
|
*/
|
||||||
|
for (;;) {
|
||||||
|
- prepare_to_wait_exclusive(sk_sleep(sk), &wait,
|
||||||
|
+ prepare_to_wait_exclusive_lifo(sk_sleep(sk), &wait,
|
||||||
|
TASK_INTERRUPTIBLE);
|
||||||
|
release_sock(sk);
|
||||||
|
if (reqsk_queue_empty(&icsk->icsk_accept_queue))
|
||||||
|
--
|
||||||
|
2.39.1
|
4622
linux-tkg-patches/6.5/0003-eevdf.patch
Normal file
4622
linux-tkg-patches/6.5/0003-eevdf.patch
Normal file
File diff suppressed because it is too large
Load Diff
783
linux-tkg-patches/6.5/0003-glitched-base.patch
Normal file
783
linux-tkg-patches/6.5/0003-glitched-base.patch
Normal file
@@ -0,0 +1,783 @@
|
|||||||
|
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: [PATCH 01/17] glitched
|
||||||
|
|
||||||
|
---
|
||||||
|
init/Makefile | 2 +-
|
||||||
|
1 file changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/init/Makefile b/init/Makefile
|
||||||
|
index baf3ab8d9d49..854e32e6aec7 100755
|
||||||
|
--- a/init/Makefile
|
||||||
|
+++ b/init/Makefile
|
||||||
|
@@ -19,7 +19,7 @@ else
|
||||||
|
|
||||||
|
# Maximum length of UTS_VERSION is 64 chars
|
||||||
|
filechk_uts_version = \
|
||||||
|
- utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "$(build-timestamp)" | cut -b -64); \
|
||||||
|
+ utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "TKG" "$(build-timestamp)" | cut -b -64); \
|
||||||
|
echo '$(pound)'define UTS_VERSION \""$${utsver}"\"
|
||||||
|
|
||||||
|
#
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From c304f43d14e98d4bf1215fc10bc5012f554bdd8a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 16:59:22 +0000
|
||||||
|
Subject: [PATCH 02/17] dcache: cache_pressure = 50 decreases the rate at which
|
||||||
|
VFS caches are reclaimed
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
fs/dcache.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||||
|
index 361ea7ab30ea..0c5cf69b241a 100644
|
||||||
|
--- a/fs/dcache.c
|
||||||
|
+++ b/fs/dcache.c
|
||||||
|
@@ -71,7 +71,7 @@
|
||||||
|
* If no ancestor relationship:
|
||||||
|
* arbitrary, since it's serialized on rename_lock
|
||||||
|
*/
|
||||||
|
-int sysctl_vfs_cache_pressure __read_mostly = 100;
|
||||||
|
+int sysctl_vfs_cache_pressure __read_mostly = 50;
|
||||||
|
EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure);
|
||||||
|
|
||||||
|
__cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock);
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
|
||||||
|
index f788cd61df21..2bfbb4213707 100644
|
||||||
|
--- a/kernel/sched/rt.c
|
||||||
|
+++ b/kernel/sched/rt.c
|
||||||
|
@@ -15,9 +15,9 @@ __read_mostly int scheduler_running;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* part of the period that we allow rt tasks to run in us.
|
||||||
|
- * default: 0.95s
|
||||||
|
+ * XanMod default: 0.98s
|
||||||
|
*/
|
||||||
|
-int sysctl_sched_rt_runtime = 950000;
|
||||||
|
+int sysctl_sched_rt_runtime = 980000;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From acc49f33a10f61dc66c423888cbb883ba46710e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 17:41:29 +0000
|
||||||
|
Subject: [PATCH 04/17] scripts: disable the localversion "+" tag of a git repo
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
scripts/setlocalversion | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
|
||||||
|
index 20f2efd57b11..0552d8b9f582 100755
|
||||||
|
--- a/scripts/setlocalversion
|
||||||
|
+++ b/scripts/setlocalversion
|
||||||
|
@@ -54,7 +54,7 @@ scm_version()
|
||||||
|
# If only the short version is requested, don't bother
|
||||||
|
# running further git commands
|
||||||
|
if $short; then
|
||||||
|
- echo "+"
|
||||||
|
+ #echo "+"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# If we are past the tagged commit, we pretty print it.
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 360c6833e07cc9fdef5746f6bc45bdbc7212288d Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||||||
|
Date: Fri, 26 Oct 2018 11:22:33 +0100
|
||||||
|
Subject: [PATCH 06/17] infiniband: Fix __read_overflow2 error with -O3
|
||||||
|
inlining
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/infiniband/core/addr.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
|
||||||
|
index 3a98439bba83..6efc4f907f58 100644
|
||||||
|
--- a/drivers/infiniband/core/addr.c
|
||||||
|
+++ b/drivers/infiniband/core/addr.c
|
||||||
|
@@ -820,6 +820,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid,
|
||||||
|
union {
|
||||||
|
struct sockaddr_in _sockaddr_in;
|
||||||
|
struct sockaddr_in6 _sockaddr_in6;
|
||||||
|
+ struct sockaddr_ib _sockaddr_ib;
|
||||||
|
} sgid_addr, dgid_addr;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
|
Subject: [PATCH 07/17] Add Zenify option
|
||||||
|
|
||||||
|
---
|
||||||
|
init/Kconfig | 32 ++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 32 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
index 3ae8678e1145..da708eed0f1e 100644
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -92,6 +92,38 @@ config THREAD_INFO_IN_TASK
|
||||||
|
|
||||||
|
menu "General setup"
|
||||||
|
|
||||||
|
+config ZENIFY
|
||||||
|
+ bool "A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience"
|
||||||
|
+ default y
|
||||||
|
+ help
|
||||||
|
+ Tunes the kernel for responsiveness at the cost of throughput and power usage.
|
||||||
|
+
|
||||||
|
+ --- Virtual Memory Subsystem ---------------------------
|
||||||
|
+
|
||||||
|
+ Mem dirty before bg writeback..: 10 % -> 20 %
|
||||||
|
+ Mem dirty before sync writeback: 20 % -> 50 %
|
||||||
|
+
|
||||||
|
+ --- Block Layer ----------------------------------------
|
||||||
|
+
|
||||||
|
+ Queue depth...............: 128 -> 512
|
||||||
|
+ Default MQ scheduler......: mq-deadline -> bfq
|
||||||
|
+
|
||||||
|
+ --- CFS CPU Scheduler ----------------------------------
|
||||||
|
+
|
||||||
|
+ Scheduling latency.............: 6 -> 3 ms
|
||||||
|
+ Minimal granularity............: 0.75 -> 0.3 ms
|
||||||
|
+ Wakeup granularity.............: 1 -> 0.5 ms
|
||||||
|
+ CPU migration cost.............: 0.5 -> 0.25 ms
|
||||||
|
+ Bandwidth slice size...........: 5 -> 3 ms
|
||||||
|
+ Ondemand fine upscaling limit..: 95 % -> 85 %
|
||||||
|
+
|
||||||
|
+ --- MuQSS CPU Scheduler --------------------------------
|
||||||
|
+
|
||||||
|
+ Scheduling interval............: 6 -> 3 ms
|
||||||
|
+ ISO task max realtime use......: 70 % -> 25 %
|
||||||
|
+ Ondemand coarse upscaling limit: 80 % -> 45 %
|
||||||
|
+ Ondemand fine upscaling limit..: 95 % -> 45 %
|
||||||
|
+
|
||||||
|
config BROKEN
|
||||||
|
bool
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From e92e67143385cf285851e12aa8b7f083dd38dd24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <damentz@liquorix.net>
|
||||||
|
Date: Sun, 16 Jan 2011 18:57:32 -0600
|
||||||
|
Subject: [PATCH 08/17] ZEN: Allow TCP YeAH as default congestion control
|
||||||
|
|
||||||
|
4.4: In my tests YeAH dramatically slowed down transfers over a WLAN,
|
||||||
|
reducing throughput from ~65Mbps (CUBIC) to ~7MBps (YeAH) over 10
|
||||||
|
seconds (netperf TCP_STREAM) including long stalls.
|
||||||
|
|
||||||
|
Be careful when choosing this. ~heftig
|
||||||
|
---
|
||||||
|
net/ipv4/Kconfig | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
|
||||||
|
index e64e59b536d3..bfb55ef7ebbe 100644
|
||||||
|
--- a/net/ipv4/Kconfig
|
||||||
|
+++ b/net/ipv4/Kconfig
|
||||||
|
@@ -691,6 +691,9 @@ choice
|
||||||
|
config DEFAULT_VEGAS
|
||||||
|
bool "Vegas" if TCP_CONG_VEGAS=y
|
||||||
|
|
||||||
|
+ config DEFAULT_YEAH
|
||||||
|
+ bool "YeAH" if TCP_CONG_YEAH=y
|
||||||
|
+
|
||||||
|
config DEFAULT_VENO
|
||||||
|
bool "Veno" if TCP_CONG_VENO=y
|
||||||
|
|
||||||
|
@@ -724,6 +727,7 @@ config DEFAULT_TCP_CONG
|
||||||
|
default "htcp" if DEFAULT_HTCP
|
||||||
|
default "hybla" if DEFAULT_HYBLA
|
||||||
|
default "vegas" if DEFAULT_VEGAS
|
||||||
|
+ default "yeah" if DEFAULT_YEAH
|
||||||
|
default "westwood" if DEFAULT_WESTWOOD
|
||||||
|
default "veno" if DEFAULT_VENO
|
||||||
|
default "reno" if DEFAULT_RENO
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 76dbe7477bfde1b5e8bf29a71b5af7ab2be9b98e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <steven@liquorix.net>
|
||||||
|
Date: Wed, 28 Nov 2018 19:01:27 -0600
|
||||||
|
Subject: [PATCH 09/17] zen: Use [defer+madvise] as default khugepaged defrag
|
||||||
|
strategy
|
||||||
|
|
||||||
|
For some reason, the default strategy to respond to THP fault fallbacks
|
||||||
|
is still just madvise, meaning stall if the program wants transparent
|
||||||
|
hugepages, but don't trigger a background reclaim / compaction if THP
|
||||||
|
begins to fail allocations. This creates a snowball affect where we
|
||||||
|
still use the THP code paths, but we almost always fail once a system
|
||||||
|
has been active and busy for a while.
|
||||||
|
|
||||||
|
The option "defer" was created for interactive systems where THP can
|
||||||
|
still improve performance. If we have to fallback to a regular page due
|
||||||
|
to an allocation failure or anything else, we will trigger a background
|
||||||
|
reclaim and compaction so future THP attempts succeed and previous
|
||||||
|
attempts eventually have their smaller pages combined without stalling
|
||||||
|
running applications.
|
||||||
|
|
||||||
|
We still want madvise to stall applications that explicitely want THP,
|
||||||
|
so defer+madvise _does_ make a ton of sense. Make it the default for
|
||||||
|
interactive systems, especially if the kernel maintainer left
|
||||||
|
transparent hugepages on "always".
|
||||||
|
|
||||||
|
Reasoning and details in the original patch: https://lwn.net/Articles/711248/
|
||||||
|
---
|
||||||
|
mm/huge_memory.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
|
||||||
|
index 74300e337c3c..9277f22c10a7 100644
|
||||||
|
--- a/mm/huge_memory.c
|
||||||
|
+++ b/mm/huge_memory.c
|
||||||
|
@@ -53,7 +53,11 @@ unsigned long transparent_hugepage_flags __read_mostly =
|
||||||
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
|
||||||
|
#endif
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)|
|
||||||
|
+#else
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)|
|
||||||
|
+#endif
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)|
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 2b65a1329cb220b43c19c4d0de5833fae9e2b22d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Wed, 24 Oct 2018 16:58:52 -0300
|
||||||
|
Subject: [PATCH 10/17] net/sched: allow configuring cake qdisc as default
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
net/sched/Kconfig | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
|
||||||
|
index 84badf00647e..6a922bca9f39 100644
|
||||||
|
--- a/net/sched/Kconfig
|
||||||
|
+++ b/net/sched/Kconfig
|
||||||
|
@@ -471,6 +471,9 @@ choice
|
||||||
|
config DEFAULT_SFQ
|
||||||
|
bool "Stochastic Fair Queue" if NET_SCH_SFQ
|
||||||
|
|
||||||
|
+ config DEFAULT_CAKE
|
||||||
|
+ bool "Common Applications Kept Enhanced" if NET_SCH_CAKE
|
||||||
|
+
|
||||||
|
config DEFAULT_PFIFO_FAST
|
||||||
|
bool "Priority FIFO Fast"
|
||||||
|
endchoice
|
||||||
|
@@ -481,6 +484,7 @@ config DEFAULT_NET_SCH
|
||||||
|
default "fq" if DEFAULT_FQ
|
||||||
|
default "fq_codel" if DEFAULT_FQ_CODEL
|
||||||
|
default "sfq" if DEFAULT_SFQ
|
||||||
|
+ default "cake" if DEFAULT_CAKE
|
||||||
|
default "pfifo_fast"
|
||||||
|
endif
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 90240bcd90a568878738e66c0d45bed3e38e347b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Fri, 19 Apr 2019 12:33:38 +0200
|
||||||
|
Subject: [PATCH 12/17] Set vm.max_map_count to 262144 by default
|
||||||
|
|
||||||
|
The value is still pretty low, and AMD64-ABI and ELF extended numbering
|
||||||
|
supports that, so we should be fine on modern x86 systems.
|
||||||
|
|
||||||
|
This fixes crashes in some applications using more than 65535 vmas (also
|
||||||
|
affects some windows games running in wine, such as Star Citizen).
|
||||||
|
---
|
||||||
|
include/linux/mm.h | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||||
|
index bc05c3588aa3..b0cefe94920d 100644
|
||||||
|
--- a/include/linux/mm.h
|
||||||
|
+++ b/include/linux/mm.h
|
||||||
|
@@ -190,8 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||||
|
* not a hard limit any more. Although some userspace tools can be surprised by
|
||||||
|
* that.
|
||||||
|
*/
|
||||||
|
-#define MAPCOUNT_ELF_CORE_MARGIN (5)
|
||||||
|
-#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
|
||||||
|
+#define DEFAULT_MAX_MAP_COUNT (262144)
|
||||||
|
|
||||||
|
extern int sysctl_max_map_count;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 3a34034dba5efe91bcec491efe8c66e8087f509b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Mon, 27 Jul 2020 00:19:18 +0200
|
||||||
|
Subject: [PATCH 13/17] mm: bump DEFAULT_MAX_MAP_COUNT
|
||||||
|
|
||||||
|
Some games such as Detroit: Become Human tend to be very crash prone with
|
||||||
|
lower values.
|
||||||
|
---
|
||||||
|
include/linux/mm.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||||
|
index b0cefe94920d..890165099b07 100644
|
||||||
|
--- a/include/linux/mm.h
|
||||||
|
+++ b/include/linux/mm.h
|
||||||
|
@@ -190,7 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||||
|
* not a hard limit any more. Although some userspace tools can be surprised by
|
||||||
|
* that.
|
||||||
|
*/
|
||||||
|
-#define DEFAULT_MAX_MAP_COUNT (262144)
|
||||||
|
+#define DEFAULT_MAX_MAP_COUNT (16777216)
|
||||||
|
|
||||||
|
extern int sysctl_max_map_count;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 977812938da7c7226415778c340832141d9278b7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 25 Nov 2019 15:13:06 -0300
|
||||||
|
Subject: [PATCH 14/17] elevator: set default scheduler to bfq for blk-mq
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
block/elevator.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/block/elevator.c b/block/elevator.c
|
||||||
|
index 4eab3d70e880..79669aa39d79 100644
|
||||||
|
--- a/block/elevator.c
|
||||||
|
+++ b/block/elevator.c
|
||||||
|
@@ -623,19 +623,19 @@ static inline bool elv_support_iosched(struct request_queue *q)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * For single queue devices, default to using mq-deadline. If we have multiple
|
||||||
|
- * queues or mq-deadline is not available, default to "none".
|
||||||
|
+ * For single queue devices, default to using bfq. If we have multiple
|
||||||
|
+ * queues or bfq is not available, default to "none".
|
||||||
|
*/
|
||||||
|
static struct elevator_type *elevator_get_default(struct request_queue *q)
|
||||||
|
{
|
||||||
|
if (q->tag_set && q->tag_set->flags & BLK_MQ_F_NO_SCHED_BY_DEFAULT)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (q->nr_hw_queues != 1 &&
|
||||||
|
!blk_mq_is_shared_tags(q->tag_set->flags))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- return elevator_find_get(q, "mq-deadline");
|
||||||
|
+ return elevator_find_get(q, "bfq");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 3c229f434aca65c4ca61772bc03c3e0370817b92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
Date: Mon, 3 Aug 2020 17:05:04 +0000
|
||||||
|
Subject: [PATCH 16/17] mm: set 2 megabytes for address_space-level file
|
||||||
|
read-ahead pages size
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
include/linux/pagemap.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
|
||||||
|
index cf2468da68e9..007dea784451 100644
|
||||||
|
--- a/include/linux/pagemap.h
|
||||||
|
+++ b/include/linux/pagemap.h
|
||||||
|
@@ -655,7 +655,7 @@ int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask);
|
||||||
|
void delete_from_page_cache_batch(struct address_space *mapping,
|
||||||
|
struct pagevec *pvec);
|
||||||
|
|
||||||
|
-#define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE)
|
||||||
|
+#define VM_READAHEAD_PAGES (SZ_2M / PAGE_SIZE)
|
||||||
|
|
||||||
|
void page_cache_sync_readahead(struct address_space *, struct file_ra_state *,
|
||||||
|
struct file *, pgoff_t index, unsigned long req_count);
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 716f41cf6631f3a85834dcb67b4ce99185b6387f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <steven@liquorix.net>
|
||||||
|
Date: Wed, 15 Jan 2020 20:43:56 -0600
|
||||||
|
Subject: [PATCH 17/17] ZEN: intel-pstate: Implement "enable" parameter
|
||||||
|
|
||||||
|
If intel-pstate is compiled into the kernel, it will preempt the loading
|
||||||
|
of acpi-cpufreq so you can take advantage of hardware p-states without
|
||||||
|
any friction.
|
||||||
|
|
||||||
|
However, intel-pstate is not completely superior to cpufreq's ondemand
|
||||||
|
for one reason. There's no concept of an up_threshold property.
|
||||||
|
|
||||||
|
In ondemand, up_threshold essentially reduces the maximum utilization to
|
||||||
|
compare against, allowing you to hit max frequencies and turbo boost
|
||||||
|
from a much lower core utilization.
|
||||||
|
|
||||||
|
With intel-pstate, you have the concept of minimum and maximum
|
||||||
|
performance, but no tunable that lets you define, maximum frequency
|
||||||
|
means 50% core utilization. For just this oversight, there's reasons
|
||||||
|
you may want ondemand.
|
||||||
|
|
||||||
|
Lets support setting "enable" in kernel boot parameters. This lets
|
||||||
|
kernel maintainers include "intel_pstate=disable" statically in the
|
||||||
|
static boot parameters, but let users of the kernel override this
|
||||||
|
selection.
|
||||||
|
---
|
||||||
|
Documentation/admin-guide/kernel-parameters.txt | 3 +++
|
||||||
|
drivers/cpufreq/intel_pstate.c | 2 ++
|
||||||
|
2 files changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
index fb95fad81c79..3e92fee81e33 100644
|
||||||
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
@@ -1857,6 +1857,9 @@
|
||||||
|
disable
|
||||||
|
Do not enable intel_pstate as the default
|
||||||
|
scaling driver for the supported processors
|
||||||
|
+ enable
|
||||||
|
+ Enable intel_pstate in-case "disable" was passed
|
||||||
|
+ previously in the kernel boot parameters
|
||||||
|
passive
|
||||||
|
Use intel_pstate as a scaling driver, but configure it
|
||||||
|
to work with generic cpufreq governors (instead of
|
||||||
|
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
|
||||||
|
index 36a469150ff9..aee891c9b78a 100644
|
||||||
|
--- a/drivers/cpufreq/intel_pstate.c
|
||||||
|
+++ b/drivers/cpufreq/intel_pstate.c
|
||||||
|
@@ -2845,6 +2845,8 @@ static int __init intel_pstate_setup(char *str)
|
||||||
|
if (!strcmp(str, "no_hwp"))
|
||||||
|
no_hwp = 1;
|
||||||
|
|
||||||
|
+ if (!strcmp(str, "enable"))
|
||||||
|
+ no_load = 0;
|
||||||
|
if (!strcmp(str, "force"))
|
||||||
|
force_load = 1;
|
||||||
|
if (!strcmp(str, "hwp_only"))
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 379cbab18b5c75c622b93e2c5abdfac141fe9654 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kenny Levinsen <kl@kl.wtf>
|
||||||
|
Date: Sun, 27 Dec 2020 14:43:13 +0000
|
||||||
|
Subject: [PATCH] ZEN: Input: evdev - use call_rcu when detaching client
|
||||||
|
|
||||||
|
Significant time was spent on synchronize_rcu in evdev_detach_client
|
||||||
|
when applications closed evdev devices. Switching VT away from a
|
||||||
|
graphical environment commonly leads to mass input device closures,
|
||||||
|
which could lead to noticable delays on systems with many input devices.
|
||||||
|
|
||||||
|
Replace synchronize_rcu with call_rcu, deferring reclaim of the evdev
|
||||||
|
client struct till after the RCU grace period instead of blocking the
|
||||||
|
calling application.
|
||||||
|
|
||||||
|
While this does not solve all slow evdev fd closures, it takes care of a
|
||||||
|
good portion of them, including this simple test:
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int idx, fd;
|
||||||
|
const char *path = "/dev/input/event0";
|
||||||
|
for (idx = 0; idx < 1000; idx++) {
|
||||||
|
if ((fd = open(path, O_RDWR)) == -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Time to completion of above test when run locally:
|
||||||
|
|
||||||
|
Before: 0m27.111s
|
||||||
|
After: 0m0.018s
|
||||||
|
|
||||||
|
Signed-off-by: Kenny Levinsen <kl@kl.wtf>
|
||||||
|
---
|
||||||
|
drivers/input/evdev.c | 19 +++++++++++--------
|
||||||
|
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
|
||||||
|
index 95f90699d2b17b..2b10fe29d2c8d9 100644
|
||||||
|
--- a/drivers/input/evdev.c
|
||||||
|
+++ b/drivers/input/evdev.c
|
||||||
|
@@ -46,6 +46,7 @@ struct evdev_client {
|
||||||
|
struct fasync_struct *fasync;
|
||||||
|
struct evdev *evdev;
|
||||||
|
struct list_head node;
|
||||||
|
+ struct rcu_head rcu;
|
||||||
|
enum input_clock_type clk_type;
|
||||||
|
bool revoked;
|
||||||
|
unsigned long *evmasks[EV_CNT];
|
||||||
|
@@ -377,13 +378,22 @@ static void evdev_attach_client(struct evdev *evdev,
|
||||||
|
spin_unlock(&evdev->client_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void evdev_reclaim_client(struct rcu_head *rp)
|
||||||
|
+{
|
||||||
|
+ struct evdev_client *client = container_of(rp, struct evdev_client, rcu);
|
||||||
|
+ unsigned int i;
|
||||||
|
+ for (i = 0; i < EV_CNT; ++i)
|
||||||
|
+ bitmap_free(client->evmasks[i]);
|
||||||
|
+ kvfree(client);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void evdev_detach_client(struct evdev *evdev,
|
||||||
|
struct evdev_client *client)
|
||||||
|
{
|
||||||
|
spin_lock(&evdev->client_lock);
|
||||||
|
list_del_rcu(&client->node);
|
||||||
|
spin_unlock(&evdev->client_lock);
|
||||||
|
- synchronize_rcu();
|
||||||
|
+ call_rcu(&client->rcu, evdev_reclaim_client);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int evdev_open_device(struct evdev *evdev)
|
||||||
|
@@ -436,7 +446,6 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
struct evdev_client *client = file->private_data;
|
||||||
|
struct evdev *evdev = client->evdev;
|
||||||
|
- unsigned int i;
|
||||||
|
|
||||||
|
mutex_lock(&evdev->mutex);
|
||||||
|
|
||||||
|
@@ -448,11 +457,6 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
|
evdev_detach_client(evdev, client);
|
||||||
|
|
||||||
|
- for (i = 0; i < EV_CNT; ++i)
|
||||||
|
- bitmap_free(client->evmasks[i]);
|
||||||
|
-
|
||||||
|
- kvfree(client);
|
||||||
|
-
|
||||||
|
evdev_close_device(evdev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -495,7 +499,6 @@ static int evdev_open(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
|
err_free_client:
|
||||||
|
evdev_detach_client(evdev, client);
|
||||||
|
- kvfree(client);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
From 2aafb56f20e4b63d8c4af172fe9d017c64bc4129 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:50:11 -0700
|
||||||
|
Subject: [PATCH] ZEN: mm: Lower the non-hugetlbpage pageblock size to reduce
|
||||||
|
scheduling delays
|
||||||
|
|
||||||
|
The page allocator processes free pages in groups of pageblocks, where
|
||||||
|
the size of a pageblock is typically quite large (1024 pages without
|
||||||
|
hugetlbpage support). Pageblocks are processed atomically with the zone
|
||||||
|
lock held, which can cause severe scheduling delays on both the CPU
|
||||||
|
going through the pageblock and any other CPUs waiting to acquire the
|
||||||
|
zone lock. A frequent offender is move_freepages_block(), which is used
|
||||||
|
by rmqueue() for page allocation.
|
||||||
|
|
||||||
|
As it turns out, there's no requirement for pageblocks to be so large,
|
||||||
|
so the pageblock order can simply be reduced to ease the scheduling
|
||||||
|
delays and zone lock contention. PAGE_ALLOC_COSTLY_ORDER is used as a
|
||||||
|
reasonable setting to ensure non-costly page allocation requests can
|
||||||
|
still be serviced without always needing to free up more than one
|
||||||
|
pageblock's worth of pages at a time.
|
||||||
|
|
||||||
|
This has a noticeable effect on overall system latency when memory
|
||||||
|
pressure is elevated. The various mm functions which operate on
|
||||||
|
pageblocks no longer appear in the preemptoff tracer, where previously
|
||||||
|
they would spend up to 100 ms on a mobile arm64 CPU processing a
|
||||||
|
pageblock with preemption disabled and the zone lock held.
|
||||||
|
|
||||||
|
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
---
|
||||||
|
include/linux/pageblock-flags.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h
|
||||||
|
index 5f1ae07d724b88..97cda629c9e909 100644
|
||||||
|
--- a/include/linux/pageblock-flags.h
|
||||||
|
+++ b/include/linux/pageblock-flags.h
|
||||||
|
@@ -48,7 +48,7 @@ extern unsigned int pageblock_order;
|
||||||
|
#else /* CONFIG_HUGETLB_PAGE */
|
||||||
|
|
||||||
|
/* If huge pages are not used, group by MAX_ORDER_NR_PAGES */
|
||||||
|
-#define pageblock_order MAX_ORDER
|
||||||
|
+#define pageblock_order PAGE_ALLOC_COSTLY_ORDER
|
||||||
|
|
||||||
|
#endif /* CONFIG_HUGETLB_PAGE */
|
||||||
|
|
||||||
|
|
||||||
|
From f22bc56be85e69c71c8e36041193856bb8b01525 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:50:32 -0700
|
||||||
|
Subject: [PATCH] ZEN: mm: Don't hog the CPU and zone lock in rmqueue_bulk()
|
||||||
|
|
||||||
|
There is noticeable scheduling latency and heavy zone lock contention
|
||||||
|
stemming from rmqueue_bulk's single hold of the zone lock while doing
|
||||||
|
its work, as seen with the preemptoff tracer. There's no actual need for
|
||||||
|
rmqueue_bulk() to hold the zone lock the entire time; it only does so
|
||||||
|
for supposed efficiency. As such, we can relax the zone lock and even
|
||||||
|
reschedule when IRQs are enabled in order to keep the scheduling delays
|
||||||
|
and zone lock contention at bay. Forward progress is still guaranteed,
|
||||||
|
as the zone lock can only be relaxed after page removal.
|
||||||
|
|
||||||
|
With this change, rmqueue_bulk() no longer appears as a serious offender
|
||||||
|
in the preemptoff tracer, and system latency is noticeably improved.
|
||||||
|
|
||||||
|
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
---
|
||||||
|
mm/page_alloc.c | 23 ++++++++++++++++++-----
|
||||||
|
1 file changed, 18 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||||
|
index a0b0397e29ee4c..87a983a356530c 100644
|
||||||
|
--- a/mm/page_alloc.c
|
||||||
|
+++ b/mm/page_alloc.c
|
||||||
|
@@ -3118,15 +3119,16 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype,
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Obtain a specified number of elements from the buddy allocator, all under
|
||||||
|
- * a single hold of the lock, for efficiency. Add them to the supplied list.
|
||||||
|
- * Returns the number of new pages which were placed at *list.
|
||||||
|
+ * Obtain a specified number of elements from the buddy allocator, and relax the
|
||||||
|
+ * zone lock when needed. Add them to the supplied list. Returns the number of
|
||||||
|
+ * new pages which were placed at *list.
|
||||||
|
*/
|
||||||
|
static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
unsigned long count, struct list_head *list,
|
||||||
|
int migratetype, unsigned int alloc_flags)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
- int i;
|
||||||
|
+ const bool can_resched = !preempt_count() && !irqs_disabled();
|
||||||
|
+ int i, allocated = 0, last_mod = 0;
|
||||||
|
|
||||||
|
/* Caller must hold IRQ-safe pcp->lock so IRQs are disabled. */
|
||||||
|
spin_lock(&zone->lock);
|
||||||
|
@@ -3137,6 +3138,18 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
if (unlikely(page == NULL))
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ /* Reschedule and ease the contention on the lock if needed */
|
||||||
|
+ if (i + 1 < count && ((can_resched && need_resched()) ||
|
||||||
|
+ spin_needbreak(&zone->lock))) {
|
||||||
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES,
|
||||||
|
+ -((i + 1 - last_mod) << order));
|
||||||
|
+ last_mod = i + 1;
|
||||||
|
+ spin_unlock(&zone->lock);
|
||||||
|
+ if (can_resched)
|
||||||
|
+ cond_resched();
|
||||||
|
+ spin_lock(&zone->lock);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (unlikely(check_pcp_refill(page, order)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
@@ -3163,7 +3176,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
* on i. Do not confuse with 'allocated' which is the number of
|
||||||
|
* pages added to the pcp list.
|
||||||
|
*/
|
||||||
|
- __mod_zone_page_state(zone, NR_FREE_PAGES, -(i << order));
|
||||||
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES, -((i - last_mod) << order));
|
||||||
|
spin_unlock(&zone->lock);
|
||||||
|
return allocated;
|
||||||
|
}
|
||||||
|
|
||||||
|
From 6329525a0fa10cd13f39b76948b1296150f75c95 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
Date: Mon, 29 Aug 2022 16:47:26 +0000
|
||||||
|
Subject: [PATCH 14/16] XANMOD: Makefile: Disable GCC vectorization on trees
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
Makefile | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 3f6628780eb2..35a5ae1ede42 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1069,6 +1069,9 @@ endif
|
||||||
|
KBUILD_CFLAGS-$(call gcc-min-version, 90100) += -Wno-alloc-size-larger-than
|
||||||
|
KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)
|
||||||
|
|
||||||
|
+# disable GCC vectorization on trees
|
||||||
|
+KBUILD_CFLAGS += $(call cc-option, -fno-tree-vectorize)
|
||||||
|
+
|
||||||
|
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||||
|
KBUILD_CFLAGS += -fno-strict-overflow
|
||||||
|
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
||||||
|
From f997578464b2c4c63e7bd1afbfef56212ee44f2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne JUVIGNY <ti3nou@gmail.com>
|
||||||
|
Date: Mon, 6 Mar 2023 13:54:09 +0100
|
||||||
|
Subject: Don't add -dirty versioning on unclean trees
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
|
||||||
|
index ca5795e16..ad0d94477 100755
|
||||||
|
--- a/scripts/setlocalversion
|
||||||
|
+++ b/scripts/setlocalversion
|
||||||
|
@@ -85,12 +85,12 @@ scm_version()
|
||||||
|
# git-diff-index does not refresh the index, so it may give misleading
|
||||||
|
# results.
|
||||||
|
# See git-update-index(1), git-diff-index(1), and git-status(1).
|
||||||
|
- if {
|
||||||
|
- git --no-optional-locks status -uno --porcelain 2>/dev/null ||
|
||||||
|
- git diff-index --name-only HEAD
|
||||||
|
- } | read dummy; then
|
||||||
|
- printf '%s' -dirty
|
||||||
|
- fi
|
||||||
|
+ #if {
|
||||||
|
+ # git --no-optional-locks status -uno --porcelain 2>/dev/null ||
|
||||||
|
+ # git diff-index --name-only HEAD
|
||||||
|
+ #} | read dummy; then
|
||||||
|
+ # printf '%s' -dirty
|
||||||
|
+ #fi
|
||||||
|
}
|
||||||
|
|
||||||
|
collect_files()
|
142
linux-tkg-patches/6.5/0003-glitched-cfs-additions.patch
Normal file
142
linux-tkg-patches/6.5/0003-glitched-cfs-additions.patch
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 6b3b59cc51d6..2a0072192c3d 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -81,10 +95,17 @@ unsigned int sysctl_sched_child_runs_first __read_mostly;
|
||||||
|
*
|
||||||
|
* (default: 1 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_wakeup_granularity = 500000UL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_wakeup_granularity = 500000UL;
|
||||||
|
+
|
||||||
|
+const_debug unsigned int sysctl_sched_migration_cost = 50000UL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_wakeup_granularity = 1000000UL;
|
||||||
|
static unsigned int normalized_sysctl_sched_wakeup_granularity = 1000000UL;
|
||||||
|
|
||||||
|
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int sched_thermal_decay_shift;
|
||||||
|
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)
|
||||||
|
DEFINE_STATIC_KEY_FALSE(sched_energy_present);
|
||||||
|
-static unsigned int sysctl_sched_energy_aware = 1;
|
||||||
|
+static unsigned int sysctl_sched_energy_aware = 0;
|
||||||
|
static DEFINE_MUTEX(sched_energy_mutex);
|
||||||
|
static bool sched_energy_update;
|
||||||
|
|
||||||
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
|
Subject: [PATCH] Zenify & stuff
|
||||||
|
|
||||||
|
---
|
||||||
|
kernel/sched/fair.c | 25 +++++++++++++++++++++++++
|
||||||
|
mm/page-writeback.c | 8 ++++++++
|
||||||
|
2 files changed, 33 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 6b3b59cc51d6..2a0072192c3d 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -37,8 +37,13 @@
|
||||||
|
*
|
||||||
|
* (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_latency = 3000000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_latency = 3000000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_latency = 6000000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The initial- and re-scaling of tunables is configurable
|
||||||
|
@@ -58,21 +63,34 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_L
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Minimal preemption granularity for CPU-bound SCHED_IDLE tasks.
|
||||||
|
* Applies only when SCHED_IDLE tasks compete with normal tasks.
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_idle_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_idle_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sched_nr_latency = 10;
|
||||||
|
+#else
|
||||||
|
static unsigned int sched_nr_latency = 8;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After fork, child runs first. If set to 0 (default) then
|
||||||
|
@@ -128,8 +149,12 @@ int __weak arch_asym_cpu_priority(int cpu)
|
||||||
|
*
|
||||||
|
* (default: 5 msec, units: microseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sysctl_sched_cfs_bandwidth_slice = 3000UL;
|
||||||
|
+#else
|
||||||
|
static unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
static struct ctl_table sched_fair_sysctls[] = {
|
||||||
|
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
|
||||||
|
index 28b3e7a67565..01a1aef2b9b1 100644
|
||||||
|
--- a/mm/page-writeback.c
|
||||||
|
+++ b/mm/page-writeback.c
|
||||||
|
@@ -71,7 +71,11 @@ static long ratelimit_pages = 32;
|
||||||
|
/*
|
||||||
|
* Start background writeback (via writeback threads) at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int dirty_background_ratio = 20;
|
||||||
|
+#else
|
||||||
|
static int dirty_background_ratio = 10;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dirty_background_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
@@ -88,7 +92,11 @@ int vm_highmem_is_dirtyable;
|
||||||
|
/*
|
||||||
|
* The generator of dirty data starts writeback at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int vm_dirty_ratio = 50;
|
||||||
|
+#else
|
||||||
|
static int vm_dirty_ratio = 20;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vm_dirty_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
--
|
||||||
|
2.28.0
|
118
linux-tkg-patches/6.5/0003-glitched-cfs.patch
Normal file
118
linux-tkg-patches/6.5/0003-glitched-cfs.patch
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
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/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)
|
||||||
|
|
||||||
|
From cba31b19f8c38696b13ba48e0e8b6dbe747d6bae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 17:31:25 +0000
|
||||||
|
Subject: [PATCH 10/16] XANMOD: mm/vmscan: vm_swappiness = 30 decreases the
|
||||||
|
amount of swapping
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
mm/vmscan.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||||
|
index 5b7b8d4f5297..549684b29418 100644
|
||||||
|
--- a/mm/vmscan.c
|
||||||
|
+++ b/mm/vmscan.c
|
||||||
|
@@ -190,7 +190,7 @@ struct scan_control {
|
||||||
|
/*
|
||||||
|
* From 0 .. 200. Higher means more swappy.
|
||||||
|
*/
|
||||||
|
-int vm_swappiness = 60;
|
||||||
|
+int vm_swappiness = 30;
|
||||||
|
|
||||||
|
static void set_task_reclaim_state(struct task_struct *task,
|
||||||
|
struct reclaim_state *rs)
|
||||||
|
--
|
||||||
|
2.39.1
|
90
linux-tkg-patches/6.5/0005-glitched-pds.patch
Normal file
90
linux-tkg-patches/6.5/0005-glitched-pds.patch
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
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)
|
193
linux-tkg-patches/6.5/0006-add-acs-overrides_iommu.patch
Normal file
193
linux-tkg-patches/6.5/0006-add-acs-overrides_iommu.patch
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
From cdeab384f48dd9c88e2dff2e9ad8d57dca1a1b1c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Weiman <mark.weiman@markzz.com>
|
||||||
|
Date: Sun, 12 Aug 2018 11:36:21 -0400
|
||||||
|
Subject: [PATCH] pci: Enable overrides for missing ACS capabilities
|
||||||
|
|
||||||
|
This an updated version of Alex Williamson's patch from:
|
||||||
|
https://lkml.org/lkml/2013/5/30/513
|
||||||
|
|
||||||
|
Original commit message follows:
|
||||||
|
|
||||||
|
PCIe ACS (Access Control Services) is the PCIe 2.0+ feature that
|
||||||
|
allows us to control whether transactions are allowed to be redirected
|
||||||
|
in various subnodes of a PCIe topology. For instance, if two
|
||||||
|
endpoints are below a root port or downsteam switch port, the
|
||||||
|
downstream port may optionally redirect transactions between the
|
||||||
|
devices, bypassing upstream devices. The same can happen internally
|
||||||
|
on multifunction devices. The transaction may never be visible to the
|
||||||
|
upstream devices.
|
||||||
|
|
||||||
|
One upstream device that we particularly care about is the IOMMU. If
|
||||||
|
a redirection occurs in the topology below the IOMMU, then the IOMMU
|
||||||
|
cannot provide isolation between devices. This is why the PCIe spec
|
||||||
|
encourages topologies to include ACS support. Without it, we have to
|
||||||
|
assume peer-to-peer DMA within a hierarchy can bypass IOMMU isolation.
|
||||||
|
|
||||||
|
Unfortunately, far too many topologies do not support ACS to make this
|
||||||
|
a steadfast requirement. Even the latest chipsets from Intel are only
|
||||||
|
sporadically supporting ACS. We have trouble getting interconnect
|
||||||
|
vendors to include the PCIe spec required PCIe capability, let alone
|
||||||
|
suggested features.
|
||||||
|
|
||||||
|
Therefore, we need to add some flexibility. The pcie_acs_override=
|
||||||
|
boot option lets users opt-in specific devices or sets of devices to
|
||||||
|
assume ACS support. The "downstream" option assumes full ACS support
|
||||||
|
on root ports and downstream switch ports. The "multifunction"
|
||||||
|
option assumes the subset of ACS features available on multifunction
|
||||||
|
endpoints and upstream switch ports are supported. The "id:nnnn:nnnn"
|
||||||
|
option enables ACS support on devices matching the provided vendor
|
||||||
|
and device IDs, allowing more strategic ACS overrides. These options
|
||||||
|
may be combined in any order. A maximum of 16 id specific overrides
|
||||||
|
are available. It's suggested to use the most limited set of options
|
||||||
|
necessary to avoid completely disabling ACS across the topology.
|
||||||
|
Note to hardware vendors, we have facilities to permanently quirk
|
||||||
|
specific devices which enforce isolation but not provide an ACS
|
||||||
|
capability. Please contact me to have your devices added and save
|
||||||
|
your customers the hassle of this boot option.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Weiman <mark.weiman@markzz.com>
|
||||||
|
---
|
||||||
|
.../admin-guide/kernel-parameters.txt | 9 ++
|
||||||
|
drivers/pci/quirks.c | 101 ++++++++++++++++++
|
||||||
|
2 files changed, 110 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
index aefd358a5ca3..173b3596fd9e 100644
|
||||||
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
@@ -3190,6 +3190,15 @@
|
||||||
|
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||||||
|
enabled, this kernel boot option can be used to
|
||||||
|
disable the use of MSI interrupts system-wide.
|
||||||
|
+ pcie_acs_override =
|
||||||
|
+ [PCIE] Override missing PCIe ACS support for:
|
||||||
|
+ downstream
|
||||||
|
+ All downstream ports - full ACS capabilities
|
||||||
|
+ multifunction
|
||||||
|
+ All multifunction devices - multifunction ACS subset
|
||||||
|
+ id:nnnn:nnnn
|
||||||
|
+ Specific device - full ACS capabilities
|
||||||
|
+ Specified as vid:did (vendor/device ID) in hex
|
||||||
|
noioapicquirk [APIC] Disable all boot interrupt quirks.
|
||||||
|
Safety option to keep boot IRQs enabled. This
|
||||||
|
should never be necessary.
|
||||||
|
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||||
|
index 4700d24e5d55..8f7a3d7fd9c1 100644
|
||||||
|
--- a/drivers/pci/quirks.c
|
||||||
|
+++ b/drivers/pci/quirks.c
|
||||||
|
@@ -3372,6 +3372,106 @@ static void quirk_no_bus_reset(struct pci_dev *dev)
|
||||||
|
dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool acs_on_downstream;
|
||||||
|
+static bool acs_on_multifunction;
|
||||||
|
+
|
||||||
|
+#define NUM_ACS_IDS 16
|
||||||
|
+struct acs_on_id {
|
||||||
|
+ unsigned short vendor;
|
||||||
|
+ unsigned short device;
|
||||||
|
+};
|
||||||
|
+static struct acs_on_id acs_on_ids[NUM_ACS_IDS];
|
||||||
|
+static u8 max_acs_id;
|
||||||
|
+
|
||||||
|
+static __init int pcie_acs_override_setup(char *p)
|
||||||
|
+{
|
||||||
|
+ if (!p)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
+ while (*p) {
|
||||||
|
+ if (!strncmp(p, "downstream", 10))
|
||||||
|
+ acs_on_downstream = true;
|
||||||
|
+ if (!strncmp(p, "multifunction", 13))
|
||||||
|
+ acs_on_multifunction = true;
|
||||||
|
+ if (!strncmp(p, "id:", 3)) {
|
||||||
|
+ char opt[5];
|
||||||
|
+ int ret;
|
||||||
|
+ long val;
|
||||||
|
+
|
||||||
|
+ if (max_acs_id >= NUM_ACS_IDS - 1) {
|
||||||
|
+ pr_warn("Out of PCIe ACS override slots (%d)\n",
|
||||||
|
+ NUM_ACS_IDS);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ p += 3;
|
||||||
|
+ snprintf(opt, 5, "%s", p);
|
||||||
|
+ ret = kstrtol(opt, 16, &val);
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+ acs_on_ids[max_acs_id].vendor = val;
|
||||||
|
+
|
||||||
|
+ p += strcspn(p, ":");
|
||||||
|
+ if (*p != ':') {
|
||||||
|
+ pr_warn("PCIe ACS invalid ID\n");
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ p++;
|
||||||
|
+ snprintf(opt, 5, "%s", p);
|
||||||
|
+ ret = kstrtol(opt, 16, &val);
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+ acs_on_ids[max_acs_id].device = val;
|
||||||
|
+ max_acs_id++;
|
||||||
|
+ }
|
||||||
|
+next:
|
||||||
|
+ p += strcspn(p, ",");
|
||||||
|
+ if (*p == ',')
|
||||||
|
+ p++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (acs_on_downstream || acs_on_multifunction || max_acs_id)
|
||||||
|
+ pr_warn("Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA\n");
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+early_param("pcie_acs_override", pcie_acs_override_setup);
|
||||||
|
+
|
||||||
|
+static int pcie_acs_overrides(struct pci_dev *dev, u16 acs_flags)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ /* Never override ACS for legacy devices or devices with ACS caps */
|
||||||
|
+ if (!pci_is_pcie(dev) ||
|
||||||
|
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
|
||||||
|
+ return -ENOTTY;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < max_acs_id; i++)
|
||||||
|
+ if (acs_on_ids[i].vendor == dev->vendor &&
|
||||||
|
+ acs_on_ids[i].device == dev->device)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ switch (pci_pcie_type(dev)) {
|
||||||
|
+ case PCI_EXP_TYPE_DOWNSTREAM:
|
||||||
|
+ case PCI_EXP_TYPE_ROOT_PORT:
|
||||||
|
+ if (acs_on_downstream)
|
||||||
|
+ return 1;
|
||||||
|
+ break;
|
||||||
|
+ case PCI_EXP_TYPE_ENDPOINT:
|
||||||
|
+ case PCI_EXP_TYPE_UPSTREAM:
|
||||||
|
+ case PCI_EXP_TYPE_LEG_END:
|
||||||
|
+ case PCI_EXP_TYPE_RC_END:
|
||||||
|
+ if (acs_on_multifunction && dev->multifunction)
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -ENOTTY;
|
||||||
|
+}
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
@@ -5102,6 +5102,7 @@
|
||||||
|
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
||||||
|
/* Wangxun nics */
|
||||||
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
|
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
166
linux-tkg-patches/6.5/0007-v6.5-fsync1_via_futex_waitv.patch
Normal file
166
linux-tkg-patches/6.5/0007-v6.5-fsync1_via_futex_waitv.patch
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
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 | 13 +++++++
|
||||||
|
kernel/futex/syscalls.c | 75 +++++++++++++++++++++++++++++++++++++-
|
||||||
|
2 files changed, 87 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
|
||||||
|
index 71a5df8d2689..d375ab21cbf8 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,18 @@ 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
|
||||||
|
* thread exit time.
|
||||||
|
diff --git a/kernel/futex/syscalls.c b/kernel/futex/syscalls.c
|
||||||
|
index 6f91a07a6a83..2f4d4c04ede2 100644
|
||||||
|
--- a/kernel/futex/syscalls.c
|
||||||
|
+++ b/kernel/futex/syscalls.c
|
||||||
|
@@ -158,6 +158,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;
|
||||||
|
@@ -170,13 +171,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)
|
||||||
|
@@ -196,6 +263,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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -392,6 +462,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
|
||||||
|
|
5105
linux-tkg-patches/6.5/0007-v6.5-winesync.patch
Normal file
5105
linux-tkg-patches/6.5/0007-v6.5-winesync.patch
Normal file
File diff suppressed because it is too large
Load Diff
98942
linux-tkg-patches/6.5/0008-6.5-bcachefs.patch
Normal file
98942
linux-tkg-patches/6.5/0008-6.5-bcachefs.patch
Normal file
File diff suppressed because it is too large
Load Diff
90
linux-tkg-patches/6.5/0009-glitched-bmq.patch
Normal file
90
linux-tkg-patches/6.5/0009-glitched-bmq.patch
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
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)
|
18
linux-tkg-patches/6.5/0009-glitched-ondemand-bmq.patch
Normal file
18
linux-tkg-patches/6.5/0009-glitched-ondemand-bmq.patch
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
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)
|
11283
linux-tkg-patches/6.5/0009-prjc_v6.5-r0.patch
Normal file
11283
linux-tkg-patches/6.5/0009-prjc_v6.5-r0.patch
Normal file
File diff suppressed because it is too large
Load Diff
66
linux-tkg-patches/6.5/0012-misc-additions.patch
Normal file
66
linux-tkg-patches/6.5/0012-misc-additions.patch
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
From e5e77ad2223f662e1615266d8ef39a8db7e65a70 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Felix=20H=C3=A4dicke?= <felixhaedicke@web.de>
|
||||||
|
Date: Thu, 19 Nov 2020 09:22:32 +0100
|
||||||
|
Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver
|
||||||
|
list
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The Apple Magic Trackpad 2 is handled by the magicmouse driver. And
|
||||||
|
there were severe stability issues when both drivers (hid-generic and
|
||||||
|
hid-magicmouse) were loaded for this device.
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241
|
||||||
|
|
||||||
|
Signed-off-by: Felix Hädicke <felixhaedicke@web.de>
|
||||||
|
---
|
||||||
|
drivers/hid/hid-quirks.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
||||||
|
index bf7ecab5d9e5..142e9dae2837 100644
|
||||||
|
--- a/drivers/hid/hid-quirks.c
|
||||||
|
+++ b/drivers/hid/hid-quirks.c
|
||||||
|
@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||||
|
#if IS_ENABLED(CONFIG_HID_MAGICMOUSE)
|
||||||
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
|
||||||
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
|
||||||
|
+ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
||||||
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
||||||
|
#endif
|
||||||
|
#if IS_ENABLED(CONFIG_HID_MAYFLASH)
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) },
|
||||||
|
--
|
||||||
|
cgit v1.2.3-1-gf6bb5
|
||||||
|
|
||||||
|
From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Wed, 3 Feb 2021 11:20:12 +0200
|
||||||
|
Subject: Revert "cpufreq: Avoid configuring old governors as default with intel_pstate"
|
||||||
|
|
||||||
|
This is an undesirable behavior for us since our aggressive ondemand performs
|
||||||
|
better than schedutil for gaming when using intel_pstate in passive mode.
|
||||||
|
Also it interferes with the option to select the desired default governor we have.
|
||||||
|
|
||||||
|
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
|
||||||
|
index 2c7171e0b0010..85de313ddec29 100644
|
||||||
|
--- a/drivers/cpufreq/Kconfig
|
||||||
|
+++ b/drivers/cpufreq/Kconfig
|
||||||
|
@@ -71,7 +71,6 @@ config CPU_FREQ_DEFAULT_GOV_USERSPACE
|
||||||
|
|
||||||
|
config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
||||||
|
bool "ondemand"
|
||||||
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
||||||
|
select CPU_FREQ_GOV_ONDEMAND
|
||||||
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
help
|
||||||
|
@@ -83,7 +84,6 @@ config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
||||||
|
|
||||||
|
config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
|
||||||
|
bool "conservative"
|
||||||
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
||||||
|
select CPU_FREQ_GOV_CONSERVATIVE
|
||||||
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
help
|
||||||
|
|
39
linux-tkg-patches/6.5/0013-fedora-rpm.patch
Normal file
39
linux-tkg-patches/6.5/0013-fedora-rpm.patch
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index 8049f0e2c..de170760d 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -53,2 +53,3 @@ $S Source2: diff.patch
|
||||||
|
Provides: kernel-$KERNELRELEASE
|
||||||
|
+ Provides: kernel-uname-r = %{version}
|
||||||
|
$S BuildRequires: bc binutils bison dwarves
|
||||||
|
@@ -69,4 +70,4 @@ $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
Group: Development/System
|
||||||
|
- Obsoletes: kernel-headers
|
||||||
|
Provides: kernel-headers = %{version}
|
||||||
|
+ Provides: installonlypkg(kernel) = %{version}
|
||||||
|
%description headers
|
||||||
|
@@ -81,2 +82,5 @@ $S$M Summary: Development package for building kernel modules to match the $__KE
|
||||||
|
$S$M Group: System Environment/Kernel
|
||||||
|
+$S$M Provides: kernel-devel = %{version}
|
||||||
|
+$S$M Provides: kernel-devel-uname-r = %{version}
|
||||||
|
+$S$M Provides: installonlypkg(kernel) = %{version}
|
||||||
|
$S$M AutoReqProv: no
|
||||||
|
@@ -86,2 +90,18 @@ $S$M against the $__KERNELRELEASE kernel package.
|
||||||
|
$S$M
|
||||||
|
+$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
|
+$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
+$S %undefine _package_note_file
|
||||||
|
+$S %undefine _auto_set_build_flags
|
||||||
|
+$S %undefine _include_frame_pointers
|
||||||
|
+$S %define _build_id_flags -Wl,--build-id=none
|
||||||
|
+$S %undefine _annotated_build
|
||||||
|
+$S %undefine _fortify_level
|
||||||
|
+$S %undefine _hardened_build
|
||||||
|
+$S %global _lto_cflags %{nil}
|
||||||
|
+$S %global _configure_gnuconfig_hack 0
|
||||||
|
+$S %global _configure_libtool_hardening_hack 0
|
||||||
|
+$S # Nearly had to go to the deep web to find documentation on this one... Gosh
|
||||||
|
+$S # See https://github.com/rpm-software-management/rpm/blob/master/macros.in#L471
|
||||||
|
+$S %define _build_id_links none
|
||||||
|
+$S
|
||||||
|
$S %prep
|
46
linux-tkg-patches/6.5/0013-optimize_harder_O3.patch
Normal file
46
linux-tkg-patches/6.5/0013-optimize_harder_O3.patch
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -442,7 +442,7 @@ endif
|
||||||
|
HOSTPKG_CONFIG = pkg-config
|
||||||
|
|
||||||
|
KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||||
|
- -O2 -fomit-frame-pointer -std=gnu11
|
||||||
|
+ -O3 -fomit-frame-pointer -std=gnu11
|
||||||
|
KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
|
||||||
|
KBUILD_USERLDFLAGS := $(USERLDFLAGS)
|
||||||
|
|
||||||
|
@@ -474,7 +474,7 @@ endif
|
||||||
|
-Wclippy::dbg_macro
|
||||||
|
|
||||||
|
KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||||||
|
-KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
|
||||||
|
+KBUILD_HOSTCXXFLAGS := -Wall -O3 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
|
||||||
|
KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \
|
||||||
|
-Zallow-features= $(HOSTRUSTFLAGS)
|
||||||
|
KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
|
||||||
|
@@ -757,7 +757,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
||||||
|
|
||||||
|
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
-KBUILD_CFLAGS += -O2
|
||||||
|
+KBUILD_CFLAGS += -O3
|
||||||
|
KBUILD_RUSTFLAGS += -Copt-level=2
|
||||||
|
else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
|
KBUILD_CFLAGS += -Os
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -1401,10 +1401,10 @@ choice
|
||||||
|
default CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
|
||||||
|
config CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
- bool "Optimize for performance (-O2)"
|
||||||
|
+ bool "Optimize for performance (-O3)"
|
||||||
|
help
|
||||||
|
This is the default optimization level for the kernel, building
|
||||||
|
- with the "-O2" compiler flag for best performance and most
|
||||||
|
+ with the "-O3" compiler flag for best performance and most
|
||||||
|
helpful compile-time warnings.
|
||||||
|
|
||||||
|
config CC_OPTIMIZE_FOR_SIZE
|
409
linux-tkg-patches/6.5/0013-suse-additions.patch
Normal file
409
linux-tkg-patches/6.5/0013-suse-additions.patch
Normal file
@@ -0,0 +1,409 @@
|
|||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Wed, 7 Feb 2018 15:16:04 +0100
|
||||||
|
Subject: Add ksym-provides tool.
|
||||||
|
|
||||||
|
References: bsc#1077692
|
||||||
|
Patch-mainline: no, not needed
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
---
|
||||||
|
scripts/mod/Makefile | 6 +-
|
||||||
|
scripts/mod/ksym-provides.c | 124 ++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 129 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 scripts/mod/ksym-provides.c
|
||||||
|
|
||||||
|
--- a/scripts/mod/Makefile
|
||||||
|
+++ b/scripts/mod/Makefile
|
||||||
|
@@ -2,11 +2,15 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
|
||||||
|
|
||||||
|
-hostprogs-always-y += modpost mk_elfconfig
|
||||||
|
+hostprogs-always-y += modpost mk_elfconfig ksym-provides
|
||||||
|
always-y += empty.o
|
||||||
|
|
||||||
|
modpost-objs := modpost.o file2alias.o sumversion.o
|
||||||
|
|
||||||
|
+ksym-provides-objs := ksym-provides.o
|
||||||
|
+
|
||||||
|
+HOSTLDLIBS_ksym-provides := -lelf
|
||||||
|
+
|
||||||
|
devicetable-offsets-file := devicetable-offsets.h
|
||||||
|
|
||||||
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/scripts/mod/ksym-provides.c
|
||||||
|
@@ -0,0 +1,124 @@
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <gelf.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+int main(int argc, char *argv[])
|
||||||
|
+{
|
||||||
|
+ int fd;
|
||||||
|
+ Elf *elf;
|
||||||
|
+ Elf_Scn *scn;
|
||||||
|
+ GElf_Shdr shdr;
|
||||||
|
+ size_t strndx;
|
||||||
|
+ int ndx;
|
||||||
|
+ Elf_Data *symdata, *data;
|
||||||
|
+ GElf_Sym sym;
|
||||||
|
+ char *name;
|
||||||
|
+ const char * flavor = argv[1];
|
||||||
|
+ const char * prefix = "__crc_";
|
||||||
|
+ size_t prefixlen = strlen(prefix);
|
||||||
|
+ const char * symformat = "ksym(%s:%s) = %lx\n";
|
||||||
|
+
|
||||||
|
+ if (argc != 3) {
|
||||||
|
+ fprintf(stderr, "Usage: %s <flavor> <filename>\n", argv[0]);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (elf_version(EV_CURRENT) == EV_NONE) {
|
||||||
|
+ fprintf(stderr, "libelf initialization failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fd = open(argv[2], O_RDONLY);
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ perror("open failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf = elf_begin(fd, ELF_C_READ, NULL);
|
||||||
|
+ if (!elf) {
|
||||||
|
+ fprintf(stderr, "elf_begin failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_close;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = NULL;
|
||||||
|
+ while ((scn = elf_nextscn(elf, scn)) != NULL) {
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type == SHT_SYMTAB)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fputs("symbol table not found\n", stderr);
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ strndx = shdr.sh_link;
|
||||||
|
+
|
||||||
|
+ symdata = elf_getdata(scn, NULL);
|
||||||
|
+ if (!symdata) {
|
||||||
|
+ fprintf(stderr, "elf_getdata failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (ndx = 0; gelf_getsym(symdata, ndx, &sym) != NULL; ++ndx) {
|
||||||
|
+
|
||||||
|
+ name = elf_strptr(elf, strndx, sym.st_name);
|
||||||
|
+ if (!name) {
|
||||||
|
+ fprintf(stderr, "elf_strptr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (strncmp(prefix, name, prefixlen))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (sym.st_shndx >= SHN_LORESERVE) {
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ sym.st_value);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = elf_getscn(elf, sym.st_shndx);
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fprintf(stderr, "elf_getscn failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type != SHT_PROGBITS)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ data = elf_getdata_rawchunk(
|
||||||
|
+ elf, shdr.sh_offset + sym.st_value - shdr.sh_addr,
|
||||||
|
+ sizeof(GElf_Word), ELF_T_WORD);
|
||||||
|
+ if (!data) {
|
||||||
|
+ fprintf(stderr, "elf_getdata_rawchunk failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ (unsigned long) *(GElf_Word*)data->d_buf);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ close(fd);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ err_end:
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ err_close:
|
||||||
|
+ close(fd);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
From bb1a83cf109eee56c8dee26f7910c772f8c246fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Thu, 29 Jun 2023 17:47:16 +0200
|
||||||
|
Subject: [PATCH] depmod: Handle installing modules under a prefix
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: Never, upstream rejected
|
||||||
|
|
||||||
|
Some distributions aim at shipping all files in /usr.
|
||||||
|
|
||||||
|
The path under which kernel modules are installed is hardcoded to /lib
|
||||||
|
which conflicts with this goal.
|
||||||
|
|
||||||
|
When kmod provides the config command, use it to determine the correct
|
||||||
|
module installation path.
|
||||||
|
|
||||||
|
With kmod that does not provide the config command /lib/modules is used
|
||||||
|
as before.
|
||||||
|
|
||||||
|
Note: users can use
|
||||||
|
|
||||||
|
make MODLIB='$(INSTALL_MOD_PATH)/usr/lib/modules/$(KERNELRELEASE)'
|
||||||
|
|
||||||
|
to install modules from mainline kernel on usrmerged system.
|
||||||
|
Not great for KMPs, though
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Nacked-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
v2: Avoid error on systems with kmod that does not support config
|
||||||
|
command
|
||||||
|
v3: More verbose commit message
|
||||||
|
v4:
|
||||||
|
- Document jq requirement
|
||||||
|
- fix bashism
|
||||||
|
- Update to getting full module path, not just additional prefix
|
||||||
|
v5: switch to pkgconfig
|
||||||
|
---
|
||||||
|
Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 658ec2b8aa74..5a1889fc43c7 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1165,7 +1165,9 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
|
||||||
|
# makefile but the argument can be passed to make if needed.
|
||||||
|
#
|
||||||
|
|
||||||
|
-MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||||
|
+export KERNEL_MODULE_DIRECTORY := $(shell pkg-config --print-variables kmod 2>/dev/null | grep '^module_directory$$' >/dev/null && pkg-config --variable=module_directory kmod || echo /lib/modules)
|
||||||
|
+
|
||||||
|
+MODLIB = $(INSTALL_MOD_PATH)$(KERNEL_MODULE_DIRECTORY)/$(KERNELRELEASE)
|
||||||
|
export MODLIB
|
||||||
|
|
||||||
|
PHONY += prepare0
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 4d15c9fa058e6dee09324cfc93f48858d4296019 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Tue, 18 Jul 2023 18:58:43 +0200
|
||||||
|
Subject: [PATCH] Revert "kbuild: Hack for depmod not handling X.Y versions"
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: v6.6-rc1
|
||||||
|
Git-commit: 4d15c9fa058e6dee09324cfc93f48858d4296019
|
||||||
|
|
||||||
|
Remove hack for ancient version of module-init-tools that was added in
|
||||||
|
Linux 3.0.
|
||||||
|
|
||||||
|
Since then module-init-tools was replaced with kmod.
|
||||||
|
|
||||||
|
This hack adds an additional indirection, and causes confusing errors
|
||||||
|
to be printed when depmod fails.
|
||||||
|
|
||||||
|
Reverts commit 8fc62e594253 ("kbuild: Do not write to builddir in modules_install")
|
||||||
|
Reverts commit bfe5424a8b31 ("kbuild: Hack for depmod not handling X.Y versions")
|
||||||
|
|
||||||
|
Link: https://lore.kernel.org/linux-modules/CAK7LNAQMs3QBYfWcLkmOQdbbq7cj=7wWbK=AWhdTC2rAsKHXzQ@mail.gmail.com/
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
scripts/depmod.sh | 27 +--------------------------
|
||||||
|
1 file changed, 1 insertion(+), 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/depmod.sh b/scripts/depmod.sh
|
||||||
|
index 3643b4f896ed..fca689ba4f21 100755
|
||||||
|
--- a/scripts/depmod.sh
|
||||||
|
+++ b/scripts/depmod.sh
|
||||||
|
@@ -23,33 +23,8 @@ if [ -z $(command -v $DEPMOD) ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
-# older versions of depmod require the version string to start with three
|
||||||
|
-# numbers, so we cheat with a symlink here
|
||||||
|
-depmod_hack_needed=true
|
||||||
|
-tmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
|
||||||
|
-mkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
|
||||||
|
-if "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
|
||||||
|
- if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
|
||||||
|
- -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
|
||||||
|
- depmod_hack_needed=false
|
||||||
|
- fi
|
||||||
|
-fi
|
||||||
|
-rm -rf "$tmp_dir"
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
|
||||||
|
- ln -s "$KERNELRELEASE" "$symlink"
|
||||||
|
- KERNELRELEASE=99.98.$KERNELRELEASE
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
set -- -ae -F System.map
|
||||||
|
if test -n "$INSTALL_MOD_PATH"; then
|
||||||
|
set -- "$@" -b "$INSTALL_MOD_PATH"
|
||||||
|
fi
|
||||||
|
-"$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
-ret=$?
|
||||||
|
-
|
||||||
|
-if $depmod_hack_needed; then
|
||||||
|
- rm -f "$symlink"
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-exit $ret
|
||||||
|
+exec "$DEPMOD" "$@" "$KERNELRELEASE"
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 0ec8a11bd6287ada08e6c13023ce47be5cdc4270 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 00:48:37 +0200
|
||||||
|
Subject: mkspec: Suse is using /usr/lib instead of the standard /lib symlink. Adapt.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index de170760d..2b5ee7b35 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -121,11 +121,11 @@ $S
|
||||||
|
$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
|
||||||
|
cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
|
||||||
|
cp .config %{buildroot}/boot/config-$KERNELRELEASE
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M rm -f %{buildroot}/usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
|
||||||
|
+$S$M cd %{buildroot}/usr/lib/modules/$KERNELRELEASE
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
|
||||||
|
$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
@@ -159,9 +159,9 @@ $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr (-, root, root)
|
||||||
|
-$M /lib/modules/$KERNELRELEASE
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$M %exclude /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$M /usr/lib/modules/$KERNELRELEASE
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$M %exclude /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
/boot/*
|
||||||
|
|
||||||
|
%files headers
|
||||||
|
@@ -171,6 +171,6 @@ $S$M
|
||||||
|
$S$M %files devel
|
||||||
|
$S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/build
|
||||||
|
-$S$M /lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
+$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
EOF
|
||||||
|
|
||||||
|
From 23133fe6745d567db5b93dc9e6aecc32d31354bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jeff Mahoney <jeffm@suse.de>
|
||||||
|
Date: Tue, 31 Mar 2009 09:46:30 -0400
|
||||||
|
Subject: [PATCH] - doc/README.KSYMS: Add to repo.
|
||||||
|
|
||||||
|
---
|
||||||
|
doc/README.KSYMS | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
create mode 100644 doc/README.KSYMS
|
||||||
|
|
||||||
|
diff --git a/doc/README.KSYMS b/doc/README.KSYMS
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..39fe7878174
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/doc/README.KSYMS
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+This file is a place holder for the kernel-syms{,-rt} package. It is used
|
||||||
|
+to group build dependencies for all kernel flavors.
|
||||||
|
+
|
||||||
|
+The KMP build process will build KMPs against all installed kernel flavors
|
||||||
|
+automatically. If you don't need to build against other flavors than the
|
||||||
|
+ones you've already installed - it is safe to uninstall this package.
|
||||||
|
|
||||||
|
From 5cd5e149a95d37746a89850f4beddef4f0ad2224 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tkg <tkg@froggi.es>
|
||||||
|
Date: Sat, 9 Sep 2023 14:06:44 +0200
|
||||||
|
Subject: Suse: Add kernel-syms package
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
|
||||||
|
index ff8c33ead..51c94131e 100755
|
||||||
|
--- a/scripts/package/mkspec
|
||||||
|
+++ b/scripts/package/mkspec
|
||||||
|
@@ -52,7 +52,7 @@ $S Source1: config
|
||||||
|
$S Source2: diff.patch
|
||||||
|
Provides: kernel-$KERNELRELEASE
|
||||||
|
Provides: kernel-uname-r = %{version}
|
||||||
|
-$S BuildRequires: bc binutils bison dwarves
|
||||||
|
+$S BuildRequires: bc binutils bison dwarves coreutils
|
||||||
|
$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||||
|
$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
|
||||||
|
@@ -88,6 +88,19 @@ $S$M %description -n kernel-devel
|
||||||
|
$S$M This package provides kernel headers and makefiles sufficient to build modules
|
||||||
|
$S$M against the $__KERNELRELEASE kernel package.
|
||||||
|
$S$M
|
||||||
|
+$S$M %package syms
|
||||||
|
+$S$M Summary: Kernel Symbol Versions (modversions) for the $__KERNELRELEASE kernel
|
||||||
|
+$S$M Group: Development/Sources
|
||||||
|
+$S$M AutoReqProv: no
|
||||||
|
+$S$M Provides: kernel-syms = %{version}
|
||||||
|
+$S$M Requires: kernel-devel = %{version}
|
||||||
|
+$S$M %description -n kernel-syms
|
||||||
|
+$S$M Kernel symbols, such as functions and variables, have version
|
||||||
|
+$S$M information attached to them. This package contains the symbol versions
|
||||||
|
+$S$M for the standard kernels.
|
||||||
|
+$S$M This package is needed for compiling kernel module packages with proper
|
||||||
|
+$S$M package dependencies.
|
||||||
|
+
|
||||||
|
$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
|
$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
$S %undefine _package_note_file
|
||||||
|
@@ -173,4 +189,8 @@ $S$M %defattr (-, root, root)
|
||||||
|
$S$M /usr/src/kernels/$KERNELRELEASE
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/build
|
||||||
|
$S$M /usr/lib/modules/$KERNELRELEASE/source
|
||||||
|
+$S$M
|
||||||
|
+$S$M %files syms
|
||||||
|
+$S$M %defattr (-, root, root)
|
||||||
|
+$S$M /usr/src/kernels/$KERNELRELEASE/doc
|
||||||
|
EOF
|
@@ -0,0 +1,151 @@
|
|||||||
|
From d50977b164e708bf523a35ef53315355528c3ca6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||||||
|
Date: Mon, 16 Sep 2019 04:53:20 +0200
|
||||||
|
Subject: [PATCH] ZEN: Add sysctl and CONFIG to disallow unprivileged
|
||||||
|
CLONE_NEWUSER
|
||||||
|
|
||||||
|
Our default behavior continues to match the vanilla kernel.
|
||||||
|
---
|
||||||
|
include/linux/user_namespace.h | 4 ++++
|
||||||
|
init/Kconfig | 16 ++++++++++++++++
|
||||||
|
kernel/fork.c | 14 ++++++++++++++
|
||||||
|
kernel/sysctl.c | 12 ++++++++++++
|
||||||
|
kernel/user_namespace.c | 7 +++++++
|
||||||
|
5 files changed, 53 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
|
||||||
|
index 45f09bec02c485..87b20e2ee27445 100644
|
||||||
|
--- a/include/linux/user_namespace.h
|
||||||
|
+++ b/include/linux/user_namespace.h
|
||||||
|
@@ -148,6 +148,8 @@ static inline void set_userns_rlimit_max(struct user_namespace *ns,
|
||||||
|
|
||||||
|
#ifdef CONFIG_USER_NS
|
||||||
|
|
||||||
|
+extern int unprivileged_userns_clone;
|
||||||
|
+
|
||||||
|
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
|
||||||
|
{
|
||||||
|
if (ns)
|
||||||
|
@@ -181,6 +183,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);
|
||||||
|
struct ns_common *ns_get_owner(struct ns_common *ns);
|
||||||
|
#else
|
||||||
|
|
||||||
|
+#define unprivileged_userns_clone 0
|
||||||
|
+
|
||||||
|
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
|
||||||
|
{
|
||||||
|
return &init_user_ns;
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
index 94125d3b6893c7..9f7139b536f638 100644
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -1247,6 +1247,22 @@ config USER_NS
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
|
+config USER_NS_UNPRIVILEGED
|
||||||
|
+ bool "Allow unprivileged users to create namespaces"
|
||||||
|
+ default y
|
||||||
|
+ depends on USER_NS
|
||||||
|
+ help
|
||||||
|
+ When disabled, unprivileged users will not be able to create
|
||||||
|
+ new namespaces. Allowing users to create their own namespaces
|
||||||
|
+ has been part of several recent local privilege escalation
|
||||||
|
+ exploits, so if you need user namespaces but are
|
||||||
|
+ paranoid^Wsecurity-conscious you want to disable this.
|
||||||
|
+
|
||||||
|
+ This setting can be overridden at runtime via the
|
||||||
|
+ kernel.unprivileged_userns_clone sysctl.
|
||||||
|
+
|
||||||
|
+ If unsure, say Y.
|
||||||
|
+
|
||||||
|
config PID_NS
|
||||||
|
bool "PID Namespaces"
|
||||||
|
default y
|
||||||
|
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||||
|
index 08969f5aa38d59..ff601cb7a1fae0 100644
|
||||||
|
--- a/kernel/fork.c
|
||||||
|
+++ b/kernel/fork.c
|
||||||
|
@@ -98,6 +98,10 @@
|
||||||
|
#include <linux/io_uring.h>
|
||||||
|
#include <linux/bpf.h>
|
||||||
|
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+#include <linux/user_namespace.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <asm/pgalloc.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
#include <asm/mmu_context.h>
|
||||||
|
@@ -2008,6 +2012,10 @@ static __latent_entropy struct task_struct *copy_process(
|
||||||
|
if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
+ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone)
|
||||||
|
+ if (!capable(CAP_SYS_ADMIN))
|
||||||
|
+ return ERR_PTR(-EPERM);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Thread groups must share signals as well, and detached threads
|
||||||
|
* can only be started up within the thread group.
|
||||||
|
@@ -3166,6 +3174,12 @@ int ksys_unshare(unsigned long unshare_flags)
|
||||||
|
if (unshare_flags & CLONE_NEWNS)
|
||||||
|
unshare_flags |= CLONE_FS;
|
||||||
|
|
||||||
|
+ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) {
|
||||||
|
+ err = -EPERM;
|
||||||
|
+ if (!capable(CAP_SYS_ADMIN))
|
||||||
|
+ goto bad_unshare_out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
err = check_unshare_flags(unshare_flags);
|
||||||
|
if (err)
|
||||||
|
goto bad_unshare_out;
|
||||||
|
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
|
||||||
|
index c6d9dec11b749d..9a4514ad481b21 100644
|
||||||
|
--- a/kernel/sysctl.c
|
||||||
|
+++ b/kernel/sysctl.c
|
||||||
|
@@ -81,6 +81,9 @@
|
||||||
|
#ifdef CONFIG_RT_MUTEXES
|
||||||
|
#include <linux/rtmutex.h>
|
||||||
|
#endif
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+#include <linux/user_namespace.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* shared constants to be used in various sysctls */
|
||||||
|
const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 };
|
||||||
|
@@ -1659,6 +1662,15 @@ static struct ctl_table kern_table[] = {
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = proc_dointvec,
|
||||||
|
},
|
||||||
|
+#ifdef CONFIG_USER_NS
|
||||||
|
+ {
|
||||||
|
+ .procname = "unprivileged_userns_clone",
|
||||||
|
+ .data = &unprivileged_userns_clone,
|
||||||
|
+ .maxlen = sizeof(int),
|
||||||
|
+ .mode = 0644,
|
||||||
|
+ .proc_handler = proc_dointvec,
|
||||||
|
+ },
|
||||||
|
+#endif
|
||||||
|
#ifdef CONFIG_PROC_SYSCTL
|
||||||
|
{
|
||||||
|
.procname = "tainted",
|
||||||
|
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
|
||||||
|
index 54211dbd516c57..16ca0c1516298d 100644
|
||||||
|
--- a/kernel/user_namespace.c
|
||||||
|
+++ b/kernel/user_namespace.c
|
||||||
|
@@ -22,6 +22,13 @@
|
||||||
|
#include <linux/bsearch.h>
|
||||||
|
#include <linux/sort.h>
|
||||||
|
|
||||||
|
+/* sysctl */
|
||||||
|
+#ifdef CONFIG_USER_NS_UNPRIVILEGED
|
||||||
|
+int unprivileged_userns_clone = 1;
|
||||||
|
+#else
|
||||||
|
+int unprivileged_userns_clone;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static struct kmem_cache *user_ns_cachep __read_mostly;
|
||||||
|
static DEFINE_MUTEX(userns_state_mutex);
|
||||||
|
|
476
linux-tkg-patches/6.6/0002-clear-patches.patch
Normal file
476
linux-tkg-patches/6.6/0002-clear-patches.patch
Normal file
@@ -0,0 +1,476 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Mon, 14 Mar 2016 11:10:58 -0600
|
||||||
|
Subject: [PATCH] pci pme wakeups
|
||||||
|
|
||||||
|
Reduce wakeups for PME checks, which are a workaround for miswired
|
||||||
|
boards (sadly, too many of them) in laptops.
|
||||||
|
---
|
||||||
|
drivers/pci/pci.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
|
||||||
|
index c9338f9..6974fbf 100644
|
||||||
|
--- a/drivers/pci/pci.c
|
||||||
|
+++ b/drivers/pci/pci.c
|
||||||
|
@@ -62,7 +62,7 @@ struct pci_pme_device {
|
||||||
|
struct pci_dev *dev;
|
||||||
|
};
|
||||||
|
|
||||||
|
-#define PME_TIMEOUT 1000 /* How long between PME checks */
|
||||||
|
+#define PME_TIMEOUT 4000 /* How long between PME checks */
|
||||||
|
|
||||||
|
static void pci_dev_d3_sleep(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sat, 19 Mar 2016 21:32:19 -0400
|
||||||
|
Subject: [PATCH] intel_idle: tweak cpuidle cstates
|
||||||
|
|
||||||
|
Increase target_residency in cpuidle cstate
|
||||||
|
|
||||||
|
Tune intel_idle to be a bit less agressive;
|
||||||
|
Clear linux is cleaner in hygiene (wakupes) than the average linux,
|
||||||
|
so we can afford changing these in a way that increases
|
||||||
|
performance while keeping power efficiency
|
||||||
|
---
|
||||||
|
drivers/idle/intel_idle.c | 44 +++++++++++++++++++--------------------
|
||||||
|
1 file changed, 22 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
|
||||||
|
index f449584..c994d24 100644
|
||||||
|
--- a/drivers/idle/intel_idle.c
|
||||||
|
+++ b/drivers/idle/intel_idle.c
|
||||||
|
@@ -531,7 +531,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -539,7 +539,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 33,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 900,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -547,7 +547,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 133,
|
||||||
|
- .target_residency = 400,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -555,7 +555,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x32",
|
||||||
|
.flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 166,
|
||||||
|
- .target_residency = 500,
|
||||||
|
+ .target_residency = 1500,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -563,7 +563,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 300,
|
||||||
|
- .target_residency = 900,
|
||||||
|
+ .target_residency = 2000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -571,7 +571,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 600,
|
||||||
|
- .target_residency = 1800,
|
||||||
|
+ .target_residency = 5000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -579,7 +579,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 2600,
|
||||||
|
- .target_residency = 7700,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -599,7 +599,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -607,7 +607,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 40,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -615,7 +615,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 133,
|
||||||
|
- .target_residency = 400,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -623,7 +623,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x32",
|
||||||
|
.flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 166,
|
||||||
|
- .target_residency = 500,
|
||||||
|
+ .target_residency = 2000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -631,7 +631,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 300,
|
||||||
|
- .target_residency = 900,
|
||||||
|
+ .target_residency = 4000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -639,7 +639,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 600,
|
||||||
|
- .target_residency = 1800,
|
||||||
|
+ .target_residency = 7000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -647,7 +647,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 2600,
|
||||||
|
- .target_residency = 7700,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -668,7 +668,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 120,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -676,7 +676,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x10",
|
||||||
|
.flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 70,
|
||||||
|
- .target_residency = 100,
|
||||||
|
+ .target_residency = 1000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -684,7 +684,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x20",
|
||||||
|
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 85,
|
||||||
|
- .target_residency = 200,
|
||||||
|
+ .target_residency = 600,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -692,7 +692,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x33",
|
||||||
|
.flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 124,
|
||||||
|
- .target_residency = 800,
|
||||||
|
+ .target_residency = 3000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -700,7 +700,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x40",
|
||||||
|
.flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 200,
|
||||||
|
- .target_residency = 800,
|
||||||
|
+ .target_residency = 3200,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -708,7 +708,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x50",
|
||||||
|
.flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 480,
|
||||||
|
- .target_residency = 5000,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -716,7 +716,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x60",
|
||||||
|
.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
|
||||||
|
.exit_latency = 890,
|
||||||
|
- .target_residency = 5000,
|
||||||
|
+ .target_residency = 9000,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
@@ -737,7 +737,7 @@ static struct cpuidle_state skx_cstates[] __initdata = {
|
||||||
|
.desc = "MWAIT 0x01",
|
||||||
|
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
|
||||||
|
.exit_latency = 10,
|
||||||
|
- .target_residency = 20,
|
||||||
|
+ .target_residency = 300,
|
||||||
|
.enter = &intel_idle,
|
||||||
|
.enter_s2idle = intel_idle_s2idle, },
|
||||||
|
{
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Fri, 6 Jan 2017 15:34:09 +0000
|
||||||
|
Subject: [PATCH] ipv4/tcp: allow the memory tuning for tcp to go a little
|
||||||
|
bigger than default
|
||||||
|
|
||||||
|
---
|
||||||
|
net/ipv4/tcp.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
|
||||||
|
index 30c1142..4345075 100644
|
||||||
|
--- a/net/ipv4/tcp.c
|
||||||
|
+++ b/net/ipv4/tcp.c
|
||||||
|
@@ -4201,8 +4201,8 @@ void __init tcp_init(void)
|
||||||
|
tcp_init_mem();
|
||||||
|
/* Set per-socket limits to no more than 1/128 the pressure threshold */
|
||||||
|
limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7);
|
||||||
|
- max_wshare = min(4UL*1024*1024, limit);
|
||||||
|
- max_rshare = min(6UL*1024*1024, limit);
|
||||||
|
+ max_wshare = min(16UL*1024*1024, limit);
|
||||||
|
+ max_rshare = min(16UL*1024*1024, limit);
|
||||||
|
|
||||||
|
init_net.ipv4.sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
|
||||||
|
init_net.ipv4.sysctl_tcp_wmem[1] = 16*1024;
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sun, 18 Feb 2018 23:35:41 +0000
|
||||||
|
Subject: [PATCH] locking: rwsem: spin faster
|
||||||
|
|
||||||
|
tweak rwsem owner spinning a bit
|
||||||
|
---
|
||||||
|
kernel/locking/rwsem.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
|
||||||
|
index f11b9bd..1bbfcc1 100644
|
||||||
|
--- a/kernel/locking/rwsem.c
|
||||||
|
+++ b/kernel/locking/rwsem.c
|
||||||
|
@@ -717,6 +717,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||||||
|
struct task_struct *new, *owner;
|
||||||
|
unsigned long flags, new_flags;
|
||||||
|
enum owner_state state;
|
||||||
|
+ int i = 0;
|
||||||
|
|
||||||
|
owner = rwsem_owner_flags(sem, &flags);
|
||||||
|
state = rwsem_owner_state(owner, flags, nonspinnable);
|
||||||
|
@@ -750,7 +751,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- cpu_relax();
|
||||||
|
+ if (i++ > 1000)
|
||||||
|
+ cpu_relax();
|
||||||
|
}
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Thu, 2 Jun 2016 23:36:32 -0500
|
||||||
|
Subject: [PATCH] initialize ata before graphics
|
||||||
|
|
||||||
|
ATA init is the long pole in the boot process, and its asynchronous.
|
||||||
|
move the graphics init after it so that ata and graphics initialize
|
||||||
|
in parallel
|
||||||
|
---
|
||||||
|
drivers/Makefile | 15 ++++++++-------
|
||||||
|
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/Makefile b/drivers/Makefile
|
||||||
|
index c0cd1b9..af1e2fb 100644
|
||||||
|
--- a/drivers/Makefile
|
||||||
|
+++ b/drivers/Makefile
|
||||||
|
@@ -59,15 +59,8 @@ obj-y += char/
|
||||||
|
# iommu/ comes before gpu as gpu are using iommu controllers
|
||||||
|
obj-y += iommu/
|
||||||
|
|
||||||
|
-# gpu/ comes after char for AGP vs DRM startup and after iommu
|
||||||
|
-obj-y += gpu/
|
||||||
|
-
|
||||||
|
obj-$(CONFIG_CONNECTOR) += connector/
|
||||||
|
|
||||||
|
-# i810fb and intelfb depend on char/agp/
|
||||||
|
-obj-$(CONFIG_FB_I810) += video/fbdev/i810/
|
||||||
|
-obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
|
||||||
|
-
|
||||||
|
obj-$(CONFIG_PARPORT) += parport/
|
||||||
|
obj-$(CONFIG_NVM) += lightnvm/
|
||||||
|
obj-y += base/ block/ misc/ mfd/ nfc/
|
||||||
|
@@ -80,6 +73,14 @@ obj-$(CONFIG_IDE) += ide/
|
||||||
|
obj-y += scsi/
|
||||||
|
obj-y += nvme/
|
||||||
|
obj-$(CONFIG_ATA) += ata/
|
||||||
|
+
|
||||||
|
+# gpu/ comes after char for AGP vs DRM startup and after iommu
|
||||||
|
+obj-y += gpu/
|
||||||
|
+
|
||||||
|
+# i810fb and intelfb depend on char/agp/
|
||||||
|
+obj-$(CONFIG_FB_I810) += video/fbdev/i810/
|
||||||
|
+obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
|
||||||
|
+
|
||||||
|
obj-$(CONFIG_TARGET_CORE) += target/
|
||||||
|
obj-$(CONFIG_MTD) += mtd/
|
||||||
|
obj-$(CONFIG_SPI) += spi/
|
||||||
|
--
|
||||||
|
https://clearlinux.org
|
||||||
|
|
||||||
|
From 676c2dc63592f52b716515573a3a825582a371e9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Sat, 8 Dec 2018 18:21:32 +0000
|
||||||
|
Subject: [PATCH 1/9] x86/vdso: Use lfence instead of rep and nop
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
arch/x86/include/asm/vdso/processor.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/x86/include/asm/vdso/processor.h b/arch/x86/include/asm/vdso/processor.h
|
||||||
|
index 57b1a7034c64..e2c45674f989 100644
|
||||||
|
--- a/arch/x86/include/asm/vdso/processor.h
|
||||||
|
+++ b/arch/x86/include/asm/vdso/processor.h
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
|
||||||
|
static __always_inline void rep_nop(void)
|
||||||
|
{
|
||||||
|
- asm volatile("rep; nop" ::: "memory");
|
||||||
|
+ asm volatile("lfence" ::: "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
static __always_inline void cpu_relax(void)
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
||||||
|
From 48dc9669f8db68adc480ffc2698ed8204440e45b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
Date: Thu, 13 Dec 2018 01:00:49 +0000
|
||||||
|
Subject: [PATCH 2/9] sched/wait: Do accept() in LIFO order for cache
|
||||||
|
efficiency
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
include/linux/wait.h | 2 ++
|
||||||
|
kernel/sched/wait.c | 24 ++++++++++++++++++++++++
|
||||||
|
net/ipv4/inet_connection_sock.c | 2 +-
|
||||||
|
3 files changed, 27 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/wait.h b/include/linux/wait.h
|
||||||
|
index a0307b516b09..edc21128f387 100644
|
||||||
|
--- a/include/linux/wait.h
|
||||||
|
+++ b/include/linux/wait.h
|
||||||
|
@@ -165,6 +165,7 @@ static inline bool wq_has_sleeper(struct wait_queue_head *wq_head)
|
||||||
|
|
||||||
|
extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
+extern void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
|
||||||
|
@@ -1192,6 +1193,7 @@ do { \
|
||||||
|
*/
|
||||||
|
void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
bool prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
+void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
|
||||||
|
void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
|
||||||
|
long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout);
|
||||||
|
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
|
||||||
|
index 133b74730738..1647fb8662eb 100644
|
||||||
|
--- a/kernel/sched/wait.c
|
||||||
|
+++ b/kernel/sched/wait.c
|
||||||
|
@@ -47,6 +47,17 @@ void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(add_wait_queue_priority);
|
||||||
|
|
||||||
|
+void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
|
||||||
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
|
+
|
||||||
|
+ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
|
||||||
|
+ spin_lock_irqsave(&wq_head->lock, flags);
|
||||||
|
+ __add_wait_queue(wq_head, wq_entry);
|
||||||
|
+ spin_unlock_irqrestore(&wq_head->lock, flags);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL(add_wait_queue_exclusive_lifo);
|
||||||
|
+
|
||||||
|
void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
@@ -293,6 +304,19 @@ prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_ent
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(prepare_to_wait_exclusive);
|
||||||
|
|
||||||
|
+void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
|
||||||
|
+{
|
||||||
|
+ unsigned long flags;
|
||||||
|
+
|
||||||
|
+ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
|
||||||
|
+ spin_lock_irqsave(&wq_head->lock, flags);
|
||||||
|
+ if (list_empty(&wq_entry->entry))
|
||||||
|
+ __add_wait_queue(wq_head, wq_entry);
|
||||||
|
+ set_current_state(state);
|
||||||
|
+ spin_unlock_irqrestore(&wq_head->lock, flags);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL(prepare_to_wait_exclusive_lifo);
|
||||||
|
+
|
||||||
|
void init_wait_entry(struct wait_queue_entry *wq_entry, int flags)
|
||||||
|
{
|
||||||
|
wq_entry->flags = flags;
|
||||||
|
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
|
||||||
|
index f2c43f67187d..9885bfb429a2 100644
|
||||||
|
--- a/net/ipv4/inet_connection_sock.c
|
||||||
|
+++ b/net/ipv4/inet_connection_sock.c
|
||||||
|
@@ -606,7 +606,7 @@ static int inet_csk_wait_for_connect(struct sock *sk, long timeo)
|
||||||
|
* having to remove and re-insert us on the wait queue.
|
||||||
|
*/
|
||||||
|
for (;;) {
|
||||||
|
- prepare_to_wait_exclusive(sk_sleep(sk), &wait,
|
||||||
|
+ prepare_to_wait_exclusive_lifo(sk_sleep(sk), &wait,
|
||||||
|
TASK_INTERRUPTIBLE);
|
||||||
|
release_sock(sk);
|
||||||
|
if (reqsk_queue_empty(&icsk->icsk_accept_queue))
|
||||||
|
--
|
||||||
|
2.39.1
|
1394
linux-tkg-patches/6.6/0003-eevdf.patch
Normal file
1394
linux-tkg-patches/6.6/0003-eevdf.patch
Normal file
File diff suppressed because it is too large
Load Diff
783
linux-tkg-patches/6.6/0003-glitched-base.patch
Normal file
783
linux-tkg-patches/6.6/0003-glitched-base.patch
Normal file
@@ -0,0 +1,783 @@
|
|||||||
|
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: [PATCH 01/17] glitched
|
||||||
|
|
||||||
|
---
|
||||||
|
init/Makefile | 2 +-
|
||||||
|
1 file changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/init/Makefile b/init/Makefile
|
||||||
|
index baf3ab8d9d49..854e32e6aec7 100755
|
||||||
|
--- a/init/Makefile
|
||||||
|
+++ b/init/Makefile
|
||||||
|
@@ -19,7 +19,7 @@ else
|
||||||
|
|
||||||
|
# Maximum length of UTS_VERSION is 64 chars
|
||||||
|
filechk_uts_version = \
|
||||||
|
- utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "$(build-timestamp)" | cut -b -64); \
|
||||||
|
+ utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "TKG" "$(build-timestamp)" | cut -b -64); \
|
||||||
|
echo '$(pound)'define UTS_VERSION \""$${utsver}"\"
|
||||||
|
|
||||||
|
#
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From c304f43d14e98d4bf1215fc10bc5012f554bdd8a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 16:59:22 +0000
|
||||||
|
Subject: [PATCH 02/17] dcache: cache_pressure = 50 decreases the rate at which
|
||||||
|
VFS caches are reclaimed
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
fs/dcache.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/fs/dcache.c b/fs/dcache.c
|
||||||
|
index 361ea7ab30ea..0c5cf69b241a 100644
|
||||||
|
--- a/fs/dcache.c
|
||||||
|
+++ b/fs/dcache.c
|
||||||
|
@@ -71,7 +71,7 @@
|
||||||
|
* If no ancestor relationship:
|
||||||
|
* arbitrary, since it's serialized on rename_lock
|
||||||
|
*/
|
||||||
|
-int sysctl_vfs_cache_pressure __read_mostly = 100;
|
||||||
|
+int sysctl_vfs_cache_pressure __read_mostly = 50;
|
||||||
|
EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure);
|
||||||
|
|
||||||
|
__cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock);
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
|
||||||
|
index f788cd61df21..2bfbb4213707 100644
|
||||||
|
--- a/kernel/sched/rt.c
|
||||||
|
+++ b/kernel/sched/rt.c
|
||||||
|
@@ -15,9 +15,9 @@ __read_mostly int scheduler_running;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* part of the period that we allow rt tasks to run in us.
|
||||||
|
- * default: 0.95s
|
||||||
|
+ * XanMod default: 0.98s
|
||||||
|
*/
|
||||||
|
-int sysctl_sched_rt_runtime = 950000;
|
||||||
|
+int sysctl_sched_rt_runtime = 980000;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From acc49f33a10f61dc66c423888cbb883ba46710e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 17:41:29 +0000
|
||||||
|
Subject: [PATCH 04/17] scripts: disable the localversion "+" tag of a git repo
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
scripts/setlocalversion | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
|
||||||
|
index 20f2efd57b11..0552d8b9f582 100755
|
||||||
|
--- a/scripts/setlocalversion
|
||||||
|
+++ b/scripts/setlocalversion
|
||||||
|
@@ -54,7 +54,7 @@ scm_version()
|
||||||
|
# If only the short version is requested, don't bother
|
||||||
|
# running further git commands
|
||||||
|
if $short; then
|
||||||
|
- echo "+"
|
||||||
|
+ #echo "+"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# If we are past the tagged commit, we pretty print it.
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 360c6833e07cc9fdef5746f6bc45bdbc7212288d Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||||||
|
Date: Fri, 26 Oct 2018 11:22:33 +0100
|
||||||
|
Subject: [PATCH 06/17] infiniband: Fix __read_overflow2 error with -O3
|
||||||
|
inlining
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/infiniband/core/addr.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
|
||||||
|
index 3a98439bba83..6efc4f907f58 100644
|
||||||
|
--- a/drivers/infiniband/core/addr.c
|
||||||
|
+++ b/drivers/infiniband/core/addr.c
|
||||||
|
@@ -820,6 +820,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid,
|
||||||
|
union {
|
||||||
|
struct sockaddr_in _sockaddr_in;
|
||||||
|
struct sockaddr_in6 _sockaddr_in6;
|
||||||
|
+ struct sockaddr_ib _sockaddr_ib;
|
||||||
|
} sgid_addr, dgid_addr;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
|
Subject: [PATCH 07/17] Add Zenify option
|
||||||
|
|
||||||
|
---
|
||||||
|
init/Kconfig | 32 ++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 32 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
index 3ae8678e1145..da708eed0f1e 100644
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -92,6 +92,38 @@ config THREAD_INFO_IN_TASK
|
||||||
|
|
||||||
|
menu "General setup"
|
||||||
|
|
||||||
|
+config ZENIFY
|
||||||
|
+ bool "A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience"
|
||||||
|
+ default y
|
||||||
|
+ help
|
||||||
|
+ Tunes the kernel for responsiveness at the cost of throughput and power usage.
|
||||||
|
+
|
||||||
|
+ --- Virtual Memory Subsystem ---------------------------
|
||||||
|
+
|
||||||
|
+ Mem dirty before bg writeback..: 10 % -> 20 %
|
||||||
|
+ Mem dirty before sync writeback: 20 % -> 50 %
|
||||||
|
+
|
||||||
|
+ --- Block Layer ----------------------------------------
|
||||||
|
+
|
||||||
|
+ Queue depth...............: 128 -> 512
|
||||||
|
+ Default MQ scheduler......: mq-deadline -> bfq
|
||||||
|
+
|
||||||
|
+ --- CFS CPU Scheduler ----------------------------------
|
||||||
|
+
|
||||||
|
+ Scheduling latency.............: 6 -> 3 ms
|
||||||
|
+ Minimal granularity............: 0.75 -> 0.3 ms
|
||||||
|
+ Wakeup granularity.............: 1 -> 0.5 ms
|
||||||
|
+ CPU migration cost.............: 0.5 -> 0.25 ms
|
||||||
|
+ Bandwidth slice size...........: 5 -> 3 ms
|
||||||
|
+ Ondemand fine upscaling limit..: 95 % -> 85 %
|
||||||
|
+
|
||||||
|
+ --- MuQSS CPU Scheduler --------------------------------
|
||||||
|
+
|
||||||
|
+ Scheduling interval............: 6 -> 3 ms
|
||||||
|
+ ISO task max realtime use......: 70 % -> 25 %
|
||||||
|
+ Ondemand coarse upscaling limit: 80 % -> 45 %
|
||||||
|
+ Ondemand fine upscaling limit..: 95 % -> 45 %
|
||||||
|
+
|
||||||
|
config BROKEN
|
||||||
|
bool
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From e92e67143385cf285851e12aa8b7f083dd38dd24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <damentz@liquorix.net>
|
||||||
|
Date: Sun, 16 Jan 2011 18:57:32 -0600
|
||||||
|
Subject: [PATCH 08/17] ZEN: Allow TCP YeAH as default congestion control
|
||||||
|
|
||||||
|
4.4: In my tests YeAH dramatically slowed down transfers over a WLAN,
|
||||||
|
reducing throughput from ~65Mbps (CUBIC) to ~7MBps (YeAH) over 10
|
||||||
|
seconds (netperf TCP_STREAM) including long stalls.
|
||||||
|
|
||||||
|
Be careful when choosing this. ~heftig
|
||||||
|
---
|
||||||
|
net/ipv4/Kconfig | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
|
||||||
|
index e64e59b536d3..bfb55ef7ebbe 100644
|
||||||
|
--- a/net/ipv4/Kconfig
|
||||||
|
+++ b/net/ipv4/Kconfig
|
||||||
|
@@ -691,6 +691,9 @@ choice
|
||||||
|
config DEFAULT_VEGAS
|
||||||
|
bool "Vegas" if TCP_CONG_VEGAS=y
|
||||||
|
|
||||||
|
+ config DEFAULT_YEAH
|
||||||
|
+ bool "YeAH" if TCP_CONG_YEAH=y
|
||||||
|
+
|
||||||
|
config DEFAULT_VENO
|
||||||
|
bool "Veno" if TCP_CONG_VENO=y
|
||||||
|
|
||||||
|
@@ -724,6 +727,7 @@ config DEFAULT_TCP_CONG
|
||||||
|
default "htcp" if DEFAULT_HTCP
|
||||||
|
default "hybla" if DEFAULT_HYBLA
|
||||||
|
default "vegas" if DEFAULT_VEGAS
|
||||||
|
+ default "yeah" if DEFAULT_YEAH
|
||||||
|
default "westwood" if DEFAULT_WESTWOOD
|
||||||
|
default "veno" if DEFAULT_VENO
|
||||||
|
default "reno" if DEFAULT_RENO
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 76dbe7477bfde1b5e8bf29a71b5af7ab2be9b98e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <steven@liquorix.net>
|
||||||
|
Date: Wed, 28 Nov 2018 19:01:27 -0600
|
||||||
|
Subject: [PATCH 09/17] zen: Use [defer+madvise] as default khugepaged defrag
|
||||||
|
strategy
|
||||||
|
|
||||||
|
For some reason, the default strategy to respond to THP fault fallbacks
|
||||||
|
is still just madvise, meaning stall if the program wants transparent
|
||||||
|
hugepages, but don't trigger a background reclaim / compaction if THP
|
||||||
|
begins to fail allocations. This creates a snowball affect where we
|
||||||
|
still use the THP code paths, but we almost always fail once a system
|
||||||
|
has been active and busy for a while.
|
||||||
|
|
||||||
|
The option "defer" was created for interactive systems where THP can
|
||||||
|
still improve performance. If we have to fallback to a regular page due
|
||||||
|
to an allocation failure or anything else, we will trigger a background
|
||||||
|
reclaim and compaction so future THP attempts succeed and previous
|
||||||
|
attempts eventually have their smaller pages combined without stalling
|
||||||
|
running applications.
|
||||||
|
|
||||||
|
We still want madvise to stall applications that explicitely want THP,
|
||||||
|
so defer+madvise _does_ make a ton of sense. Make it the default for
|
||||||
|
interactive systems, especially if the kernel maintainer left
|
||||||
|
transparent hugepages on "always".
|
||||||
|
|
||||||
|
Reasoning and details in the original patch: https://lwn.net/Articles/711248/
|
||||||
|
---
|
||||||
|
mm/huge_memory.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
|
||||||
|
index 74300e337c3c..9277f22c10a7 100644
|
||||||
|
--- a/mm/huge_memory.c
|
||||||
|
+++ b/mm/huge_memory.c
|
||||||
|
@@ -53,7 +53,11 @@ unsigned long transparent_hugepage_flags __read_mostly =
|
||||||
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
|
||||||
|
#endif
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)|
|
||||||
|
+#else
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)|
|
||||||
|
+#endif
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)|
|
||||||
|
(1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 2b65a1329cb220b43c19c4d0de5833fae9e2b22d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Wed, 24 Oct 2018 16:58:52 -0300
|
||||||
|
Subject: [PATCH 10/17] net/sched: allow configuring cake qdisc as default
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
net/sched/Kconfig | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
|
||||||
|
index 84badf00647e..6a922bca9f39 100644
|
||||||
|
--- a/net/sched/Kconfig
|
||||||
|
+++ b/net/sched/Kconfig
|
||||||
|
@@ -471,6 +471,9 @@ choice
|
||||||
|
config DEFAULT_SFQ
|
||||||
|
bool "Stochastic Fair Queue" if NET_SCH_SFQ
|
||||||
|
|
||||||
|
+ config DEFAULT_CAKE
|
||||||
|
+ bool "Common Applications Kept Enhanced" if NET_SCH_CAKE
|
||||||
|
+
|
||||||
|
config DEFAULT_PFIFO_FAST
|
||||||
|
bool "Priority FIFO Fast"
|
||||||
|
endchoice
|
||||||
|
@@ -481,6 +484,7 @@ config DEFAULT_NET_SCH
|
||||||
|
default "fq" if DEFAULT_FQ
|
||||||
|
default "fq_codel" if DEFAULT_FQ_CODEL
|
||||||
|
default "sfq" if DEFAULT_SFQ
|
||||||
|
+ default "cake" if DEFAULT_CAKE
|
||||||
|
default "pfifo_fast"
|
||||||
|
endif
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 90240bcd90a568878738e66c0d45bed3e38e347b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Fri, 19 Apr 2019 12:33:38 +0200
|
||||||
|
Subject: [PATCH 12/17] Set vm.max_map_count to 262144 by default
|
||||||
|
|
||||||
|
The value is still pretty low, and AMD64-ABI and ELF extended numbering
|
||||||
|
supports that, so we should be fine on modern x86 systems.
|
||||||
|
|
||||||
|
This fixes crashes in some applications using more than 65535 vmas (also
|
||||||
|
affects some windows games running in wine, such as Star Citizen).
|
||||||
|
---
|
||||||
|
include/linux/mm.h | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||||
|
index bc05c3588aa3..b0cefe94920d 100644
|
||||||
|
--- a/include/linux/mm.h
|
||||||
|
+++ b/include/linux/mm.h
|
||||||
|
@@ -190,8 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||||
|
* not a hard limit any more. Although some userspace tools can be surprised by
|
||||||
|
* that.
|
||||||
|
*/
|
||||||
|
-#define MAPCOUNT_ELF_CORE_MARGIN (5)
|
||||||
|
-#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
|
||||||
|
+#define DEFAULT_MAX_MAP_COUNT (262144)
|
||||||
|
|
||||||
|
extern int sysctl_max_map_count;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 3a34034dba5efe91bcec491efe8c66e8087f509b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Mon, 27 Jul 2020 00:19:18 +0200
|
||||||
|
Subject: [PATCH 13/17] mm: bump DEFAULT_MAX_MAP_COUNT
|
||||||
|
|
||||||
|
Some games such as Detroit: Become Human tend to be very crash prone with
|
||||||
|
lower values.
|
||||||
|
---
|
||||||
|
include/linux/mm.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||||
|
index b0cefe94920d..890165099b07 100644
|
||||||
|
--- a/include/linux/mm.h
|
||||||
|
+++ b/include/linux/mm.h
|
||||||
|
@@ -190,7 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||||
|
* not a hard limit any more. Although some userspace tools can be surprised by
|
||||||
|
* that.
|
||||||
|
*/
|
||||||
|
-#define DEFAULT_MAX_MAP_COUNT (262144)
|
||||||
|
+#define DEFAULT_MAX_MAP_COUNT (16777216)
|
||||||
|
|
||||||
|
extern int sysctl_max_map_count;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 977812938da7c7226415778c340832141d9278b7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 25 Nov 2019 15:13:06 -0300
|
||||||
|
Subject: [PATCH 14/17] elevator: set default scheduler to bfq for blk-mq
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
---
|
||||||
|
block/elevator.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/block/elevator.c b/block/elevator.c
|
||||||
|
index 4eab3d70e880..79669aa39d79 100644
|
||||||
|
--- a/block/elevator.c
|
||||||
|
+++ b/block/elevator.c
|
||||||
|
@@ -623,19 +623,19 @@ static inline bool elv_support_iosched(struct request_queue *q)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * For single queue devices, default to using mq-deadline. If we have multiple
|
||||||
|
- * queues or mq-deadline is not available, default to "none".
|
||||||
|
+ * For single queue devices, default to using bfq. If we have multiple
|
||||||
|
+ * queues or bfq is not available, default to "none".
|
||||||
|
*/
|
||||||
|
static struct elevator_type *elevator_get_default(struct request_queue *q)
|
||||||
|
{
|
||||||
|
if (q->tag_set && q->tag_set->flags & BLK_MQ_F_NO_SCHED_BY_DEFAULT)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (q->nr_hw_queues != 1 &&
|
||||||
|
!blk_mq_is_shared_tags(q->tag_set->flags))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- return elevator_find_get(q, "mq-deadline");
|
||||||
|
+ return elevator_find_get(q, "bfq");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 3c229f434aca65c4ca61772bc03c3e0370817b92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
Date: Mon, 3 Aug 2020 17:05:04 +0000
|
||||||
|
Subject: [PATCH 16/17] mm: set 2 megabytes for address_space-level file
|
||||||
|
read-ahead pages size
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
include/linux/pagemap.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
|
||||||
|
index cf2468da68e9..007dea784451 100644
|
||||||
|
--- a/include/linux/pagemap.h
|
||||||
|
+++ b/include/linux/pagemap.h
|
||||||
|
@@ -655,7 +655,7 @@ int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask);
|
||||||
|
void delete_from_page_cache_batch(struct address_space *mapping,
|
||||||
|
struct pagevec *pvec);
|
||||||
|
|
||||||
|
-#define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE)
|
||||||
|
+#define VM_READAHEAD_PAGES (SZ_2M / PAGE_SIZE)
|
||||||
|
|
||||||
|
void page_cache_sync_readahead(struct address_space *, struct file_ra_state *,
|
||||||
|
struct file *, pgoff_t index, unsigned long req_count);
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 716f41cf6631f3a85834dcb67b4ce99185b6387f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <steven@liquorix.net>
|
||||||
|
Date: Wed, 15 Jan 2020 20:43:56 -0600
|
||||||
|
Subject: [PATCH 17/17] ZEN: intel-pstate: Implement "enable" parameter
|
||||||
|
|
||||||
|
If intel-pstate is compiled into the kernel, it will preempt the loading
|
||||||
|
of acpi-cpufreq so you can take advantage of hardware p-states without
|
||||||
|
any friction.
|
||||||
|
|
||||||
|
However, intel-pstate is not completely superior to cpufreq's ondemand
|
||||||
|
for one reason. There's no concept of an up_threshold property.
|
||||||
|
|
||||||
|
In ondemand, up_threshold essentially reduces the maximum utilization to
|
||||||
|
compare against, allowing you to hit max frequencies and turbo boost
|
||||||
|
from a much lower core utilization.
|
||||||
|
|
||||||
|
With intel-pstate, you have the concept of minimum and maximum
|
||||||
|
performance, but no tunable that lets you define, maximum frequency
|
||||||
|
means 50% core utilization. For just this oversight, there's reasons
|
||||||
|
you may want ondemand.
|
||||||
|
|
||||||
|
Lets support setting "enable" in kernel boot parameters. This lets
|
||||||
|
kernel maintainers include "intel_pstate=disable" statically in the
|
||||||
|
static boot parameters, but let users of the kernel override this
|
||||||
|
selection.
|
||||||
|
---
|
||||||
|
Documentation/admin-guide/kernel-parameters.txt | 3 +++
|
||||||
|
drivers/cpufreq/intel_pstate.c | 2 ++
|
||||||
|
2 files changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
index fb95fad81c79..3e92fee81e33 100644
|
||||||
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
@@ -1857,6 +1857,9 @@
|
||||||
|
disable
|
||||||
|
Do not enable intel_pstate as the default
|
||||||
|
scaling driver for the supported processors
|
||||||
|
+ enable
|
||||||
|
+ Enable intel_pstate in-case "disable" was passed
|
||||||
|
+ previously in the kernel boot parameters
|
||||||
|
passive
|
||||||
|
Use intel_pstate as a scaling driver, but configure it
|
||||||
|
to work with generic cpufreq governors (instead of
|
||||||
|
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
|
||||||
|
index 36a469150ff9..aee891c9b78a 100644
|
||||||
|
--- a/drivers/cpufreq/intel_pstate.c
|
||||||
|
+++ b/drivers/cpufreq/intel_pstate.c
|
||||||
|
@@ -2845,6 +2845,8 @@ static int __init intel_pstate_setup(char *str)
|
||||||
|
if (!strcmp(str, "no_hwp"))
|
||||||
|
no_hwp = 1;
|
||||||
|
|
||||||
|
+ if (!strcmp(str, "enable"))
|
||||||
|
+ no_load = 0;
|
||||||
|
if (!strcmp(str, "force"))
|
||||||
|
force_load = 1;
|
||||||
|
if (!strcmp(str, "hwp_only"))
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
From 379cbab18b5c75c622b93e2c5abdfac141fe9654 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kenny Levinsen <kl@kl.wtf>
|
||||||
|
Date: Sun, 27 Dec 2020 14:43:13 +0000
|
||||||
|
Subject: [PATCH] ZEN: Input: evdev - use call_rcu when detaching client
|
||||||
|
|
||||||
|
Significant time was spent on synchronize_rcu in evdev_detach_client
|
||||||
|
when applications closed evdev devices. Switching VT away from a
|
||||||
|
graphical environment commonly leads to mass input device closures,
|
||||||
|
which could lead to noticable delays on systems with many input devices.
|
||||||
|
|
||||||
|
Replace synchronize_rcu with call_rcu, deferring reclaim of the evdev
|
||||||
|
client struct till after the RCU grace period instead of blocking the
|
||||||
|
calling application.
|
||||||
|
|
||||||
|
While this does not solve all slow evdev fd closures, it takes care of a
|
||||||
|
good portion of them, including this simple test:
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int idx, fd;
|
||||||
|
const char *path = "/dev/input/event0";
|
||||||
|
for (idx = 0; idx < 1000; idx++) {
|
||||||
|
if ((fd = open(path, O_RDWR)) == -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Time to completion of above test when run locally:
|
||||||
|
|
||||||
|
Before: 0m27.111s
|
||||||
|
After: 0m0.018s
|
||||||
|
|
||||||
|
Signed-off-by: Kenny Levinsen <kl@kl.wtf>
|
||||||
|
---
|
||||||
|
drivers/input/evdev.c | 19 +++++++++++--------
|
||||||
|
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
|
||||||
|
index 95f90699d2b17b..2b10fe29d2c8d9 100644
|
||||||
|
--- a/drivers/input/evdev.c
|
||||||
|
+++ b/drivers/input/evdev.c
|
||||||
|
@@ -46,6 +46,7 @@ struct evdev_client {
|
||||||
|
struct fasync_struct *fasync;
|
||||||
|
struct evdev *evdev;
|
||||||
|
struct list_head node;
|
||||||
|
+ struct rcu_head rcu;
|
||||||
|
enum input_clock_type clk_type;
|
||||||
|
bool revoked;
|
||||||
|
unsigned long *evmasks[EV_CNT];
|
||||||
|
@@ -377,13 +378,22 @@ static void evdev_attach_client(struct evdev *evdev,
|
||||||
|
spin_unlock(&evdev->client_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void evdev_reclaim_client(struct rcu_head *rp)
|
||||||
|
+{
|
||||||
|
+ struct evdev_client *client = container_of(rp, struct evdev_client, rcu);
|
||||||
|
+ unsigned int i;
|
||||||
|
+ for (i = 0; i < EV_CNT; ++i)
|
||||||
|
+ bitmap_free(client->evmasks[i]);
|
||||||
|
+ kvfree(client);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void evdev_detach_client(struct evdev *evdev,
|
||||||
|
struct evdev_client *client)
|
||||||
|
{
|
||||||
|
spin_lock(&evdev->client_lock);
|
||||||
|
list_del_rcu(&client->node);
|
||||||
|
spin_unlock(&evdev->client_lock);
|
||||||
|
- synchronize_rcu();
|
||||||
|
+ call_rcu(&client->rcu, evdev_reclaim_client);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int evdev_open_device(struct evdev *evdev)
|
||||||
|
@@ -436,7 +446,6 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
struct evdev_client *client = file->private_data;
|
||||||
|
struct evdev *evdev = client->evdev;
|
||||||
|
- unsigned int i;
|
||||||
|
|
||||||
|
mutex_lock(&evdev->mutex);
|
||||||
|
|
||||||
|
@@ -448,11 +457,6 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
|
evdev_detach_client(evdev, client);
|
||||||
|
|
||||||
|
- for (i = 0; i < EV_CNT; ++i)
|
||||||
|
- bitmap_free(client->evmasks[i]);
|
||||||
|
-
|
||||||
|
- kvfree(client);
|
||||||
|
-
|
||||||
|
evdev_close_device(evdev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -495,7 +499,6 @@ static int evdev_open(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
|
err_free_client:
|
||||||
|
evdev_detach_client(evdev, client);
|
||||||
|
- kvfree(client);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
From 2aafb56f20e4b63d8c4af172fe9d017c64bc4129 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:50:11 -0700
|
||||||
|
Subject: [PATCH] ZEN: mm: Lower the non-hugetlbpage pageblock size to reduce
|
||||||
|
scheduling delays
|
||||||
|
|
||||||
|
The page allocator processes free pages in groups of pageblocks, where
|
||||||
|
the size of a pageblock is typically quite large (1024 pages without
|
||||||
|
hugetlbpage support). Pageblocks are processed atomically with the zone
|
||||||
|
lock held, which can cause severe scheduling delays on both the CPU
|
||||||
|
going through the pageblock and any other CPUs waiting to acquire the
|
||||||
|
zone lock. A frequent offender is move_freepages_block(), which is used
|
||||||
|
by rmqueue() for page allocation.
|
||||||
|
|
||||||
|
As it turns out, there's no requirement for pageblocks to be so large,
|
||||||
|
so the pageblock order can simply be reduced to ease the scheduling
|
||||||
|
delays and zone lock contention. PAGE_ALLOC_COSTLY_ORDER is used as a
|
||||||
|
reasonable setting to ensure non-costly page allocation requests can
|
||||||
|
still be serviced without always needing to free up more than one
|
||||||
|
pageblock's worth of pages at a time.
|
||||||
|
|
||||||
|
This has a noticeable effect on overall system latency when memory
|
||||||
|
pressure is elevated. The various mm functions which operate on
|
||||||
|
pageblocks no longer appear in the preemptoff tracer, where previously
|
||||||
|
they would spend up to 100 ms on a mobile arm64 CPU processing a
|
||||||
|
pageblock with preemption disabled and the zone lock held.
|
||||||
|
|
||||||
|
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
---
|
||||||
|
include/linux/pageblock-flags.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h
|
||||||
|
index 5f1ae07d724b88..97cda629c9e909 100644
|
||||||
|
--- a/include/linux/pageblock-flags.h
|
||||||
|
+++ b/include/linux/pageblock-flags.h
|
||||||
|
@@ -48,7 +48,7 @@ extern unsigned int pageblock_order;
|
||||||
|
#else /* CONFIG_HUGETLB_PAGE */
|
||||||
|
|
||||||
|
/* If huge pages are not used, group by MAX_ORDER_NR_PAGES */
|
||||||
|
-#define pageblock_order MAX_ORDER
|
||||||
|
+#define pageblock_order PAGE_ALLOC_COSTLY_ORDER
|
||||||
|
|
||||||
|
#endif /* CONFIG_HUGETLB_PAGE */
|
||||||
|
|
||||||
|
|
||||||
|
From f22bc56be85e69c71c8e36041193856bb8b01525 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:50:32 -0700
|
||||||
|
Subject: [PATCH] ZEN: mm: Don't hog the CPU and zone lock in rmqueue_bulk()
|
||||||
|
|
||||||
|
There is noticeable scheduling latency and heavy zone lock contention
|
||||||
|
stemming from rmqueue_bulk's single hold of the zone lock while doing
|
||||||
|
its work, as seen with the preemptoff tracer. There's no actual need for
|
||||||
|
rmqueue_bulk() to hold the zone lock the entire time; it only does so
|
||||||
|
for supposed efficiency. As such, we can relax the zone lock and even
|
||||||
|
reschedule when IRQs are enabled in order to keep the scheduling delays
|
||||||
|
and zone lock contention at bay. Forward progress is still guaranteed,
|
||||||
|
as the zone lock can only be relaxed after page removal.
|
||||||
|
|
||||||
|
With this change, rmqueue_bulk() no longer appears as a serious offender
|
||||||
|
in the preemptoff tracer, and system latency is noticeably improved.
|
||||||
|
|
||||||
|
Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||||
|
---
|
||||||
|
mm/page_alloc.c | 23 ++++++++++++++++++-----
|
||||||
|
1 file changed, 18 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||||
|
index a0b0397e29ee4c..87a983a356530c 100644
|
||||||
|
--- a/mm/page_alloc.c
|
||||||
|
+++ b/mm/page_alloc.c
|
||||||
|
@@ -3118,15 +3119,16 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype,
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Obtain a specified number of elements from the buddy allocator, all under
|
||||||
|
- * a single hold of the lock, for efficiency. Add them to the supplied list.
|
||||||
|
- * Returns the number of new pages which were placed at *list.
|
||||||
|
+ * Obtain a specified number of elements from the buddy allocator, and relax the
|
||||||
|
+ * zone lock when needed. Add them to the supplied list. Returns the number of
|
||||||
|
+ * new pages which were placed at *list.
|
||||||
|
*/
|
||||||
|
static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
unsigned long count, struct list_head *list,
|
||||||
|
int migratetype, unsigned int alloc_flags)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
- int i;
|
||||||
|
+ const bool can_resched = !preempt_count() && !irqs_disabled();
|
||||||
|
+ int i, allocated = 0, last_mod = 0;
|
||||||
|
|
||||||
|
/* Caller must hold IRQ-safe pcp->lock so IRQs are disabled. */
|
||||||
|
spin_lock(&zone->lock);
|
||||||
|
@@ -3137,6 +3138,18 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
if (unlikely(page == NULL))
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ /* Reschedule and ease the contention on the lock if needed */
|
||||||
|
+ if (i + 1 < count && ((can_resched && need_resched()) ||
|
||||||
|
+ spin_needbreak(&zone->lock))) {
|
||||||
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES,
|
||||||
|
+ -((i + 1 - last_mod) << order));
|
||||||
|
+ last_mod = i + 1;
|
||||||
|
+ spin_unlock(&zone->lock);
|
||||||
|
+ if (can_resched)
|
||||||
|
+ cond_resched();
|
||||||
|
+ spin_lock(&zone->lock);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (unlikely(check_pcp_refill(page, order)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
@@ -3163,7 +3176,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
|
* on i. Do not confuse with 'allocated' which is the number of
|
||||||
|
* pages added to the pcp list.
|
||||||
|
*/
|
||||||
|
- __mod_zone_page_state(zone, NR_FREE_PAGES, -(i << order));
|
||||||
|
+ __mod_zone_page_state(zone, NR_FREE_PAGES, -((i - last_mod) << order));
|
||||||
|
spin_unlock(&zone->lock);
|
||||||
|
return allocated;
|
||||||
|
}
|
||||||
|
|
||||||
|
From 6329525a0fa10cd13f39b76948b1296150f75c95 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
Date: Mon, 29 Aug 2022 16:47:26 +0000
|
||||||
|
Subject: [PATCH 14/16] XANMOD: Makefile: Disable GCC vectorization on trees
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
Makefile | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 3f6628780eb2..35a5ae1ede42 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1069,6 +1069,9 @@ endif
|
||||||
|
KBUILD_CFLAGS-$(call gcc-min-version, 90100) += -Wno-alloc-size-larger-than
|
||||||
|
KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)
|
||||||
|
|
||||||
|
+# disable GCC vectorization on trees
|
||||||
|
+KBUILD_CFLAGS += $(call cc-option, -fno-tree-vectorize)
|
||||||
|
+
|
||||||
|
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||||
|
KBUILD_CFLAGS += -fno-strict-overflow
|
||||||
|
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
||||||
|
From f997578464b2c4c63e7bd1afbfef56212ee44f2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne JUVIGNY <ti3nou@gmail.com>
|
||||||
|
Date: Mon, 6 Mar 2023 13:54:09 +0100
|
||||||
|
Subject: Don't add -dirty versioning on unclean trees
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
|
||||||
|
index ca5795e16..ad0d94477 100755
|
||||||
|
--- a/scripts/setlocalversion
|
||||||
|
+++ b/scripts/setlocalversion
|
||||||
|
@@ -85,12 +85,12 @@ scm_version()
|
||||||
|
# git-diff-index does not refresh the index, so it may give misleading
|
||||||
|
# results.
|
||||||
|
# See git-update-index(1), git-diff-index(1), and git-status(1).
|
||||||
|
- if {
|
||||||
|
- git --no-optional-locks status -uno --porcelain 2>/dev/null ||
|
||||||
|
- git diff-index --name-only HEAD
|
||||||
|
- } | read dummy; then
|
||||||
|
- printf '%s' -dirty
|
||||||
|
- fi
|
||||||
|
+ #if {
|
||||||
|
+ # git --no-optional-locks status -uno --porcelain 2>/dev/null ||
|
||||||
|
+ # git diff-index --name-only HEAD
|
||||||
|
+ #} | read dummy; then
|
||||||
|
+ # printf '%s' -dirty
|
||||||
|
+ #fi
|
||||||
|
}
|
||||||
|
|
||||||
|
collect_files()
|
142
linux-tkg-patches/6.6/0003-glitched-cfs-additions.patch
Normal file
142
linux-tkg-patches/6.6/0003-glitched-cfs-additions.patch
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 6b3b59cc51d6..2a0072192c3d 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -81,10 +95,17 @@ unsigned int sysctl_sched_child_runs_first __read_mostly;
|
||||||
|
*
|
||||||
|
* (default: 1 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_wakeup_granularity = 500000UL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_wakeup_granularity = 500000UL;
|
||||||
|
+
|
||||||
|
+const_debug unsigned int sysctl_sched_migration_cost = 50000UL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_wakeup_granularity = 1000000UL;
|
||||||
|
static unsigned int normalized_sysctl_sched_wakeup_granularity = 1000000UL;
|
||||||
|
|
||||||
|
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int sched_thermal_decay_shift;
|
||||||
|
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)
|
||||||
|
DEFINE_STATIC_KEY_FALSE(sched_energy_present);
|
||||||
|
-static unsigned int sysctl_sched_energy_aware = 1;
|
||||||
|
+static unsigned int sysctl_sched_energy_aware = 0;
|
||||||
|
static DEFINE_MUTEX(sched_energy_mutex);
|
||||||
|
static bool sched_energy_update;
|
||||||
|
|
||||||
|
From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne Juvigny <Ti3noU@gmail.com>
|
||||||
|
Date: Mon, 3 Sep 2018 17:36:25 +0200
|
||||||
|
Subject: [PATCH] Zenify & stuff
|
||||||
|
|
||||||
|
---
|
||||||
|
kernel/sched/fair.c | 25 +++++++++++++++++++++++++
|
||||||
|
mm/page-writeback.c | 8 ++++++++
|
||||||
|
2 files changed, 33 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||||
|
index 6b3b59cc51d6..2a0072192c3d 100644
|
||||||
|
--- a/kernel/sched/fair.c
|
||||||
|
+++ b/kernel/sched/fair.c
|
||||||
|
@@ -37,8 +37,13 @@
|
||||||
|
*
|
||||||
|
* (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_latency = 3000000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_latency = 3000000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_latency = 6000000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The initial- and re-scaling of tunables is configurable
|
||||||
|
@@ -58,21 +63,34 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_L
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+static unsigned int normalized_sysctl_sched_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
static unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Minimal preemption granularity for CPU-bound SCHED_IDLE tasks.
|
||||||
|
* Applies only when SCHED_IDLE tasks compete with normal tasks.
|
||||||
|
*
|
||||||
|
* (default: 0.75 msec)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+unsigned int sysctl_sched_idle_min_granularity = 300000ULL;
|
||||||
|
+#else
|
||||||
|
unsigned int sysctl_sched_idle_min_granularity = 750000ULL;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sched_nr_latency = 10;
|
||||||
|
+#else
|
||||||
|
static unsigned int sched_nr_latency = 8;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After fork, child runs first. If set to 0 (default) then
|
||||||
|
@@ -128,8 +149,12 @@ int __weak arch_asym_cpu_priority(int cpu)
|
||||||
|
*
|
||||||
|
* (default: 5 msec, units: microseconds)
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static unsigned int sysctl_sched_cfs_bandwidth_slice = 3000UL;
|
||||||
|
+#else
|
||||||
|
static unsigned int sysctl_sched_cfs_bandwidth_slice = 5000UL;
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
static struct ctl_table sched_fair_sysctls[] = {
|
||||||
|
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
|
||||||
|
index 28b3e7a67565..01a1aef2b9b1 100644
|
||||||
|
--- a/mm/page-writeback.c
|
||||||
|
+++ b/mm/page-writeback.c
|
||||||
|
@@ -71,7 +71,11 @@ static long ratelimit_pages = 32;
|
||||||
|
/*
|
||||||
|
* Start background writeback (via writeback threads) at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int dirty_background_ratio = 20;
|
||||||
|
+#else
|
||||||
|
static int dirty_background_ratio = 10;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dirty_background_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
@@ -88,7 +92,11 @@ int vm_highmem_is_dirtyable;
|
||||||
|
/*
|
||||||
|
* The generator of dirty data starts writeback at this percentage
|
||||||
|
*/
|
||||||
|
+#ifdef CONFIG_ZENIFY
|
||||||
|
+static int vm_dirty_ratio = 50;
|
||||||
|
+#else
|
||||||
|
static int vm_dirty_ratio = 20;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vm_dirty_bytes starts at 0 (disabled) so that it is a function of
|
||||||
|
--
|
||||||
|
2.28.0
|
118
linux-tkg-patches/6.6/0003-glitched-cfs.patch
Normal file
118
linux-tkg-patches/6.6/0003-glitched-cfs.patch
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
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/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)
|
||||||
|
|
||||||
|
From cba31b19f8c38696b13ba48e0e8b6dbe747d6bae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Date: Mon, 29 Jan 2018 17:31:25 +0000
|
||||||
|
Subject: [PATCH 10/16] XANMOD: mm/vmscan: vm_swappiness = 30 decreases the
|
||||||
|
amount of swapping
|
||||||
|
|
||||||
|
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
|
||||||
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||||
|
---
|
||||||
|
mm/vmscan.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||||
|
index 5b7b8d4f5297..549684b29418 100644
|
||||||
|
--- a/mm/vmscan.c
|
||||||
|
+++ b/mm/vmscan.c
|
||||||
|
@@ -190,7 +190,7 @@ struct scan_control {
|
||||||
|
/*
|
||||||
|
* From 0 .. 200. Higher means more swappy.
|
||||||
|
*/
|
||||||
|
-int vm_swappiness = 60;
|
||||||
|
+int vm_swappiness = 30;
|
||||||
|
|
||||||
|
static void set_task_reclaim_state(struct task_struct *task,
|
||||||
|
struct reclaim_state *rs)
|
||||||
|
--
|
||||||
|
2.39.1
|
193
linux-tkg-patches/6.6/0006-add-acs-overrides_iommu.patch
Normal file
193
linux-tkg-patches/6.6/0006-add-acs-overrides_iommu.patch
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
From cdeab384f48dd9c88e2dff2e9ad8d57dca1a1b1c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Weiman <mark.weiman@markzz.com>
|
||||||
|
Date: Sun, 12 Aug 2018 11:36:21 -0400
|
||||||
|
Subject: [PATCH] pci: Enable overrides for missing ACS capabilities
|
||||||
|
|
||||||
|
This an updated version of Alex Williamson's patch from:
|
||||||
|
https://lkml.org/lkml/2013/5/30/513
|
||||||
|
|
||||||
|
Original commit message follows:
|
||||||
|
|
||||||
|
PCIe ACS (Access Control Services) is the PCIe 2.0+ feature that
|
||||||
|
allows us to control whether transactions are allowed to be redirected
|
||||||
|
in various subnodes of a PCIe topology. For instance, if two
|
||||||
|
endpoints are below a root port or downsteam switch port, the
|
||||||
|
downstream port may optionally redirect transactions between the
|
||||||
|
devices, bypassing upstream devices. The same can happen internally
|
||||||
|
on multifunction devices. The transaction may never be visible to the
|
||||||
|
upstream devices.
|
||||||
|
|
||||||
|
One upstream device that we particularly care about is the IOMMU. If
|
||||||
|
a redirection occurs in the topology below the IOMMU, then the IOMMU
|
||||||
|
cannot provide isolation between devices. This is why the PCIe spec
|
||||||
|
encourages topologies to include ACS support. Without it, we have to
|
||||||
|
assume peer-to-peer DMA within a hierarchy can bypass IOMMU isolation.
|
||||||
|
|
||||||
|
Unfortunately, far too many topologies do not support ACS to make this
|
||||||
|
a steadfast requirement. Even the latest chipsets from Intel are only
|
||||||
|
sporadically supporting ACS. We have trouble getting interconnect
|
||||||
|
vendors to include the PCIe spec required PCIe capability, let alone
|
||||||
|
suggested features.
|
||||||
|
|
||||||
|
Therefore, we need to add some flexibility. The pcie_acs_override=
|
||||||
|
boot option lets users opt-in specific devices or sets of devices to
|
||||||
|
assume ACS support. The "downstream" option assumes full ACS support
|
||||||
|
on root ports and downstream switch ports. The "multifunction"
|
||||||
|
option assumes the subset of ACS features available on multifunction
|
||||||
|
endpoints and upstream switch ports are supported. The "id:nnnn:nnnn"
|
||||||
|
option enables ACS support on devices matching the provided vendor
|
||||||
|
and device IDs, allowing more strategic ACS overrides. These options
|
||||||
|
may be combined in any order. A maximum of 16 id specific overrides
|
||||||
|
are available. It's suggested to use the most limited set of options
|
||||||
|
necessary to avoid completely disabling ACS across the topology.
|
||||||
|
Note to hardware vendors, we have facilities to permanently quirk
|
||||||
|
specific devices which enforce isolation but not provide an ACS
|
||||||
|
capability. Please contact me to have your devices added and save
|
||||||
|
your customers the hassle of this boot option.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Weiman <mark.weiman@markzz.com>
|
||||||
|
---
|
||||||
|
.../admin-guide/kernel-parameters.txt | 9 ++
|
||||||
|
drivers/pci/quirks.c | 101 ++++++++++++++++++
|
||||||
|
2 files changed, 110 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
index aefd358a5ca3..173b3596fd9e 100644
|
||||||
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
|
@@ -3190,6 +3190,15 @@
|
||||||
|
nomsi [MSI] If the PCI_MSI kernel config parameter is
|
||||||
|
enabled, this kernel boot option can be used to
|
||||||
|
disable the use of MSI interrupts system-wide.
|
||||||
|
+ pcie_acs_override =
|
||||||
|
+ [PCIE] Override missing PCIe ACS support for:
|
||||||
|
+ downstream
|
||||||
|
+ All downstream ports - full ACS capabilities
|
||||||
|
+ multifunction
|
||||||
|
+ All multifunction devices - multifunction ACS subset
|
||||||
|
+ id:nnnn:nnnn
|
||||||
|
+ Specific device - full ACS capabilities
|
||||||
|
+ Specified as vid:did (vendor/device ID) in hex
|
||||||
|
noioapicquirk [APIC] Disable all boot interrupt quirks.
|
||||||
|
Safety option to keep boot IRQs enabled. This
|
||||||
|
should never be necessary.
|
||||||
|
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||||
|
index 4700d24e5d55..8f7a3d7fd9c1 100644
|
||||||
|
--- a/drivers/pci/quirks.c
|
||||||
|
+++ b/drivers/pci/quirks.c
|
||||||
|
@@ -3372,6 +3372,106 @@ static void quirk_no_bus_reset(struct pci_dev *dev)
|
||||||
|
dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool acs_on_downstream;
|
||||||
|
+static bool acs_on_multifunction;
|
||||||
|
+
|
||||||
|
+#define NUM_ACS_IDS 16
|
||||||
|
+struct acs_on_id {
|
||||||
|
+ unsigned short vendor;
|
||||||
|
+ unsigned short device;
|
||||||
|
+};
|
||||||
|
+static struct acs_on_id acs_on_ids[NUM_ACS_IDS];
|
||||||
|
+static u8 max_acs_id;
|
||||||
|
+
|
||||||
|
+static __init int pcie_acs_override_setup(char *p)
|
||||||
|
+{
|
||||||
|
+ if (!p)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
+ while (*p) {
|
||||||
|
+ if (!strncmp(p, "downstream", 10))
|
||||||
|
+ acs_on_downstream = true;
|
||||||
|
+ if (!strncmp(p, "multifunction", 13))
|
||||||
|
+ acs_on_multifunction = true;
|
||||||
|
+ if (!strncmp(p, "id:", 3)) {
|
||||||
|
+ char opt[5];
|
||||||
|
+ int ret;
|
||||||
|
+ long val;
|
||||||
|
+
|
||||||
|
+ if (max_acs_id >= NUM_ACS_IDS - 1) {
|
||||||
|
+ pr_warn("Out of PCIe ACS override slots (%d)\n",
|
||||||
|
+ NUM_ACS_IDS);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ p += 3;
|
||||||
|
+ snprintf(opt, 5, "%s", p);
|
||||||
|
+ ret = kstrtol(opt, 16, &val);
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+ acs_on_ids[max_acs_id].vendor = val;
|
||||||
|
+
|
||||||
|
+ p += strcspn(p, ":");
|
||||||
|
+ if (*p != ':') {
|
||||||
|
+ pr_warn("PCIe ACS invalid ID\n");
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ p++;
|
||||||
|
+ snprintf(opt, 5, "%s", p);
|
||||||
|
+ ret = kstrtol(opt, 16, &val);
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||||
|
+ goto next;
|
||||||
|
+ }
|
||||||
|
+ acs_on_ids[max_acs_id].device = val;
|
||||||
|
+ max_acs_id++;
|
||||||
|
+ }
|
||||||
|
+next:
|
||||||
|
+ p += strcspn(p, ",");
|
||||||
|
+ if (*p == ',')
|
||||||
|
+ p++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (acs_on_downstream || acs_on_multifunction || max_acs_id)
|
||||||
|
+ pr_warn("Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA\n");
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+early_param("pcie_acs_override", pcie_acs_override_setup);
|
||||||
|
+
|
||||||
|
+static int pcie_acs_overrides(struct pci_dev *dev, u16 acs_flags)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ /* Never override ACS for legacy devices or devices with ACS caps */
|
||||||
|
+ if (!pci_is_pcie(dev) ||
|
||||||
|
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
|
||||||
|
+ return -ENOTTY;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < max_acs_id; i++)
|
||||||
|
+ if (acs_on_ids[i].vendor == dev->vendor &&
|
||||||
|
+ acs_on_ids[i].device == dev->device)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ switch (pci_pcie_type(dev)) {
|
||||||
|
+ case PCI_EXP_TYPE_DOWNSTREAM:
|
||||||
|
+ case PCI_EXP_TYPE_ROOT_PORT:
|
||||||
|
+ if (acs_on_downstream)
|
||||||
|
+ return 1;
|
||||||
|
+ break;
|
||||||
|
+ case PCI_EXP_TYPE_ENDPOINT:
|
||||||
|
+ case PCI_EXP_TYPE_UPSTREAM:
|
||||||
|
+ case PCI_EXP_TYPE_LEG_END:
|
||||||
|
+ case PCI_EXP_TYPE_RC_END:
|
||||||
|
+ if (acs_on_multifunction && dev->multifunction)
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -ENOTTY;
|
||||||
|
+}
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
@@ -5102,6 +5102,7 @@
|
||||||
|
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
||||||
|
/* Wangxun nics */
|
||||||
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
|
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
166
linux-tkg-patches/6.6/0007-v6.6-fsync1_via_futex_waitv.patch
Normal file
166
linux-tkg-patches/6.6/0007-v6.6-fsync1_via_futex_waitv.patch
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
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 | 13 +++++++
|
||||||
|
kernel/futex/syscalls.c | 75 +++++++++++++++++++++++++++++++++++++-
|
||||||
|
2 files changed, 87 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
|
||||||
|
index 71a5df8d2689..d375ab21cbf8 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,18 @@ 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
|
||||||
|
* thread exit time.
|
||||||
|
diff --git a/kernel/futex/syscalls.c b/kernel/futex/syscalls.c
|
||||||
|
index 6f91a07a6a83..2f4d4c04ede2 100644
|
||||||
|
--- a/kernel/futex/syscalls.c
|
||||||
|
+++ b/kernel/futex/syscalls.c
|
||||||
|
@@ -158,6 +158,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;
|
||||||
|
@@ -170,13 +171,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)
|
||||||
|
@@ -196,6 +263,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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -392,6 +462,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
|
||||||
|
|
5105
linux-tkg-patches/6.6/0007-v6.6-winesync.patch
Normal file
5105
linux-tkg-patches/6.6/0007-v6.6-winesync.patch
Normal file
File diff suppressed because it is too large
Load Diff
823
linux-tkg-patches/6.6/0012-misc-additions.patch
Normal file
823
linux-tkg-patches/6.6/0012-misc-additions.patch
Normal file
@@ -0,0 +1,823 @@
|
|||||||
|
From e5e77ad2223f662e1615266d8ef39a8db7e65a70 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Felix=20H=C3=A4dicke?= <felixhaedicke@web.de>
|
||||||
|
Date: Thu, 19 Nov 2020 09:22:32 +0100
|
||||||
|
Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver
|
||||||
|
list
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The Apple Magic Trackpad 2 is handled by the magicmouse driver. And
|
||||||
|
there were severe stability issues when both drivers (hid-generic and
|
||||||
|
hid-magicmouse) were loaded for this device.
|
||||||
|
|
||||||
|
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241
|
||||||
|
|
||||||
|
Signed-off-by: Felix Hädicke <felixhaedicke@web.de>
|
||||||
|
---
|
||||||
|
drivers/hid/hid-quirks.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
||||||
|
index bf7ecab5d9e5..142e9dae2837 100644
|
||||||
|
--- a/drivers/hid/hid-quirks.c
|
||||||
|
+++ b/drivers/hid/hid-quirks.c
|
||||||
|
@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||||
|
#if IS_ENABLED(CONFIG_HID_MAGICMOUSE)
|
||||||
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
|
||||||
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
|
||||||
|
+ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
||||||
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
||||||
|
#endif
|
||||||
|
#if IS_ENABLED(CONFIG_HID_MAYFLASH)
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) },
|
||||||
|
--
|
||||||
|
cgit v1.2.3-1-gf6bb5
|
||||||
|
|
||||||
|
From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tk-Glitch <ti3nou@gmail.com>
|
||||||
|
Date: Wed, 3 Feb 2021 11:20:12 +0200
|
||||||
|
Subject: Revert "cpufreq: Avoid configuring old governors as default with intel_pstate"
|
||||||
|
|
||||||
|
This is an undesirable behavior for us since our aggressive ondemand performs
|
||||||
|
better than schedutil for gaming when using intel_pstate in passive mode.
|
||||||
|
Also it interferes with the option to select the desired default governor we have.
|
||||||
|
|
||||||
|
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
|
||||||
|
index 2c7171e0b0010..85de313ddec29 100644
|
||||||
|
--- a/drivers/cpufreq/Kconfig
|
||||||
|
+++ b/drivers/cpufreq/Kconfig
|
||||||
|
@@ -71,7 +71,6 @@ config CPU_FREQ_DEFAULT_GOV_USERSPACE
|
||||||
|
|
||||||
|
config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
||||||
|
bool "ondemand"
|
||||||
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
||||||
|
select CPU_FREQ_GOV_ONDEMAND
|
||||||
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
help
|
||||||
|
@@ -83,7 +84,6 @@ config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
||||||
|
|
||||||
|
config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
|
||||||
|
bool "conservative"
|
||||||
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
||||||
|
select CPU_FREQ_GOV_CONSERVATIVE
|
||||||
|
select CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
help
|
||||||
|
|
||||||
|
From 7695eb71d0872ed9633daf0ca779da3344b87dec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Evan Quan <evan.quan@amd.com>
|
||||||
|
Date: Mon, 21 Aug 2023 14:15:13 +0800
|
||||||
|
Subject: [PATCH] drm/amd/pm: correct SMU13 gfx voltage related OD settings
|
||||||
|
|
||||||
|
The voltage offset setting will be applied to the whole v/f curve line
|
||||||
|
instead of per anchor point base.
|
||||||
|
|
||||||
|
Signed-off-by: Evan Quan <evan.quan@amd.com>
|
||||||
|
Acked-by: Alex Deucher <alexander.deucher@amd.com>
|
||||||
|
---
|
||||||
|
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 45 +++++++------------
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 31 ++++++-------
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 31 ++++++-------
|
||||||
|
3 files changed, 43 insertions(+), 64 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
||||||
|
index 1da7ece4c627..06aa5c18b40f 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
||||||
|
@@ -643,18 +643,14 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
|
||||||
|
* They can be used to calibrate the sclk voltage curve. This is
|
||||||
|
* available for Vega20 and NV1X.
|
||||||
|
*
|
||||||
|
- * - voltage offset for the six anchor points of the v/f curve labeled
|
||||||
|
- * OD_VDDC_CURVE. They can be used to calibrate the v/f curve. This
|
||||||
|
- * is only availabe for some SMU13 ASICs.
|
||||||
|
- *
|
||||||
|
* - voltage offset(in mV) applied on target voltage calculation.
|
||||||
|
- * This is available for Sienna Cichlid, Navy Flounder and Dimgrey
|
||||||
|
- * Cavefish. For these ASICs, the target voltage calculation can be
|
||||||
|
- * illustrated by "voltage = voltage calculated from v/f curve +
|
||||||
|
- * overdrive vddgfx offset"
|
||||||
|
+ * This is available for Sienna Cichlid, Navy Flounder, Dimgrey
|
||||||
|
+ * Cavefish and some later SMU13 ASICs. For these ASICs, the target
|
||||||
|
+ * voltage calculation can be illustrated by "voltage = voltage
|
||||||
|
+ * calculated from v/f curve + overdrive vddgfx offset"
|
||||||
|
*
|
||||||
|
- * - a list of valid ranges for sclk, mclk, and voltage curve points
|
||||||
|
- * labeled OD_RANGE
|
||||||
|
+ * - a list of valid ranges for sclk, mclk, voltage curve points
|
||||||
|
+ * or voltage offset labeled OD_RANGE
|
||||||
|
*
|
||||||
|
* < For APUs >
|
||||||
|
*
|
||||||
|
@@ -686,24 +682,17 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
|
||||||
|
* E.g., "p 2 0 800" would set the minimum core clock on core
|
||||||
|
* 2 to 800Mhz.
|
||||||
|
*
|
||||||
|
- * For sclk voltage curve,
|
||||||
|
- * - For NV1X, enter the new values by writing a string that
|
||||||
|
- * contains "vc point clock voltage" to the file. The points
|
||||||
|
- * are indexed by 0, 1 and 2. E.g., "vc 0 300 600" will update
|
||||||
|
- * point1 with clock set as 300Mhz and voltage as 600mV. "vc 2
|
||||||
|
- * 1000 1000" will update point3 with clock set as 1000Mhz and
|
||||||
|
- * voltage 1000mV.
|
||||||
|
- * - For SMU13 ASICs, enter the new values by writing a string that
|
||||||
|
- * contains "vc anchor_point_index voltage_offset" to the file.
|
||||||
|
- * There are total six anchor points defined on the v/f curve with
|
||||||
|
- * index as 0 - 5.
|
||||||
|
- * - "vc 0 10" will update the voltage offset for point1 as 10mv.
|
||||||
|
- * - "vc 5 -10" will update the voltage offset for point6 as -10mv.
|
||||||
|
- *
|
||||||
|
- * To update the voltage offset applied for gfxclk/voltage calculation,
|
||||||
|
- * enter the new value by writing a string that contains "vo offset".
|
||||||
|
- * This is supported by Sienna Cichlid, Navy Flounder and Dimgrey Cavefish.
|
||||||
|
- * And the offset can be a positive or negative value.
|
||||||
|
+ * For sclk voltage curve supported by Vega20 and NV1X, enter the new
|
||||||
|
+ * values by writing a string that contains "vc point clock voltage"
|
||||||
|
+ * to the file. The points are indexed by 0, 1 and 2. E.g., "vc 0 300
|
||||||
|
+ * 600" will update point1 with clock set as 300Mhz and voltage as 600mV.
|
||||||
|
+ * "vc 2 1000 1000" will update point3 with clock set as 1000Mhz and
|
||||||
|
+ * voltage 1000mV.
|
||||||
|
+ *
|
||||||
|
+ * For voltage offset supported by Sienna Cichlid, Navy Flounder, Dimgrey
|
||||||
|
+ * Cavefish and some later SMU13 ASICs, enter the new value by writing a
|
||||||
|
+ * string that contains "vo offset". E.g., "vo -10" will update the extra
|
||||||
|
+ * voltage offset applied to the whole v/f curve line as -10mv.
|
||||||
|
*
|
||||||
|
* - When you have edited all of the states as needed, write "c" (commit)
|
||||||
|
* to the file to commit your changes
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
index 3903a47669e4..bd0d5f027cac 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
@@ -1304,16 +1304,14 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu,
|
||||||
|
od_table->OverDriveTable.UclkFmax);
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case SMU_OD_VDDC_CURVE:
|
||||||
|
+ case SMU_OD_VDDGFX_OFFSET:
|
||||||
|
if (!smu_v13_0_0_is_od_feature_supported(smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE_BIT))
|
||||||
|
break;
|
||||||
|
|
||||||
|
- size += sysfs_emit_at(buf, size, "OD_VDDC_CURVE:\n");
|
||||||
|
- for (i = 0; i < PP_NUM_OD_VF_CURVE_POINTS; i++)
|
||||||
|
- size += sysfs_emit_at(buf, size, "%d: %dmv\n",
|
||||||
|
- i,
|
||||||
|
- od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[i]);
|
||||||
|
+ size += sysfs_emit_at(buf, size, "OD_VDDGFX_OFFSET:\n");
|
||||||
|
+ size += sysfs_emit_at(buf, size, "%dmV\n",
|
||||||
|
+ od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[0]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SMU_OD_RANGE:
|
||||||
|
@@ -1355,7 +1353,7 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE,
|
||||||
|
&min_value,
|
||||||
|
&max_value);
|
||||||
|
- size += sysfs_emit_at(buf, size, "VDDC_CURVE: %7dmv %10dmv\n",
|
||||||
|
+ size += sysfs_emit_at(buf, size, "VDDGFX_OFFSET: %7dmv %10dmv\n",
|
||||||
|
min_value, max_value);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
@@ -1504,29 +1502,26 @@ static int smu_v13_0_0_od_edit_dpm_table(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case PP_OD_EDIT_VDDC_CURVE:
|
||||||
|
+ case PP_OD_EDIT_VDDGFX_OFFSET:
|
||||||
|
if (!smu_v13_0_0_is_od_feature_supported(smu, PP_OD_FEATURE_GFX_VF_CURVE_BIT)) {
|
||||||
|
- dev_warn(adev->dev, "VF curve setting not supported!\n");
|
||||||
|
+ dev_warn(adev->dev, "Gfx offset setting not supported!\n");
|
||||||
|
return -ENOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (input[0] >= PP_NUM_OD_VF_CURVE_POINTS ||
|
||||||
|
- input[0] < 0)
|
||||||
|
- return -EINVAL;
|
||||||
|
-
|
||||||
|
smu_v13_0_0_get_od_setting_limits(smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE,
|
||||||
|
&minimum,
|
||||||
|
&maximum);
|
||||||
|
- if (input[1] < minimum ||
|
||||||
|
- input[1] > maximum) {
|
||||||
|
+ if (input[0] < minimum ||
|
||||||
|
+ input[0] > maximum) {
|
||||||
|
dev_info(adev->dev, "Voltage offset (%ld) must be within [%d, %d]!\n",
|
||||||
|
- input[1], minimum, maximum);
|
||||||
|
+ input[0], minimum, maximum);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[input[0]] = input[1];
|
||||||
|
- od_table->OverDriveTable.FeatureCtrlMask |= 1U << PP_OD_FEATURE_GFX_VF_CURVE_BIT;
|
||||||
|
+ for (i = 0; i < PP_NUM_OD_VF_CURVE_POINTS; i++)
|
||||||
|
+ od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[i] = input[0];
|
||||||
|
+ od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_GFX_VF_CURVE_BIT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PP_OD_RESTORE_DEFAULT_TABLE:
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
index 94ef5b4d116d..b9b3bf41eed3 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
@@ -1284,16 +1284,14 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu,
|
||||||
|
od_table->OverDriveTable.UclkFmax);
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case SMU_OD_VDDC_CURVE:
|
||||||
|
+ case SMU_OD_VDDGFX_OFFSET:
|
||||||
|
if (!smu_v13_0_7_is_od_feature_supported(smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE_BIT))
|
||||||
|
break;
|
||||||
|
|
||||||
|
- size += sysfs_emit_at(buf, size, "OD_VDDC_CURVE:\n");
|
||||||
|
- for (i = 0; i < PP_NUM_OD_VF_CURVE_POINTS; i++)
|
||||||
|
- size += sysfs_emit_at(buf, size, "%d: %dmv\n",
|
||||||
|
- i,
|
||||||
|
- od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[i]);
|
||||||
|
+ size += sysfs_emit_at(buf, size, "OD_VDDGFX_OFFSET:\n");
|
||||||
|
+ size += sysfs_emit_at(buf, size, "%dmV\n",
|
||||||
|
+ od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[0]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SMU_OD_RANGE:
|
||||||
|
@@ -1335,7 +1333,7 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE,
|
||||||
|
&min_value,
|
||||||
|
&max_value);
|
||||||
|
- size += sysfs_emit_at(buf, size, "VDDC_CURVE: %7dmv %10dmv\n",
|
||||||
|
+ size += sysfs_emit_at(buf, size, "VDDGFX_OFFSET: %7dmv %10dmv\n",
|
||||||
|
min_value, max_value);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
@@ -1484,29 +1482,26 @@ static int smu_v13_0_7_od_edit_dpm_table(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
- case PP_OD_EDIT_VDDC_CURVE:
|
||||||
|
+ case PP_OD_EDIT_VDDGFX_OFFSET:
|
||||||
|
if (!smu_v13_0_7_is_od_feature_supported(smu, PP_OD_FEATURE_GFX_VF_CURVE_BIT)) {
|
||||||
|
- dev_warn(adev->dev, "VF curve setting not supported!\n");
|
||||||
|
+ dev_warn(adev->dev, "Gfx offset setting not supported!\n");
|
||||||
|
return -ENOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (input[0] >= PP_NUM_OD_VF_CURVE_POINTS ||
|
||||||
|
- input[0] < 0)
|
||||||
|
- return -EINVAL;
|
||||||
|
-
|
||||||
|
smu_v13_0_7_get_od_setting_limits(smu,
|
||||||
|
PP_OD_FEATURE_GFX_VF_CURVE,
|
||||||
|
&minimum,
|
||||||
|
&maximum);
|
||||||
|
- if (input[1] < minimum ||
|
||||||
|
- input[1] > maximum) {
|
||||||
|
+ if (input[0] < minimum ||
|
||||||
|
+ input[0] > maximum) {
|
||||||
|
dev_info(adev->dev, "Voltage offset (%ld) must be within [%d, %d]!\n",
|
||||||
|
- input[1], minimum, maximum);
|
||||||
|
+ input[0], minimum, maximum);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[input[0]] = input[1];
|
||||||
|
- od_table->OverDriveTable.FeatureCtrlMask |= 1U << PP_OD_FEATURE_GFX_VF_CURVE_BIT;
|
||||||
|
+ for (i = 0; i < PP_NUM_OD_VF_CURVE_POINTS; i++)
|
||||||
|
+ od_table->OverDriveTable.VoltageOffsetPerZoneBoundary[i] = input[0];
|
||||||
|
+ od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_GFX_VF_CURVE_BIT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PP_OD_RESTORE_DEFAULT_TABLE:
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From 8bad128720ebc69e37f1c66767fb276088ef4fa7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Evan Quan <evan.quan@amd.com>
|
||||||
|
Date: Wed, 16 Aug 2023 14:51:19 +0800
|
||||||
|
Subject: [PATCH] drm/amd/pm: fulfill the support for SMU13 `pp_dpm_dcefclk`
|
||||||
|
interface
|
||||||
|
|
||||||
|
Fulfill the incomplete SMU13 `pp_dpm_dcefclk` implementation.
|
||||||
|
|
||||||
|
Reported-by: Guan Yu <guan.yu@amd.com>
|
||||||
|
Signed-off-by: Evan Quan <evan.quan@amd.com>
|
||||||
|
Acked-by: Alex Deucher <alexander.deucher@amd.com>
|
||||||
|
---
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 27 +++++++++++++++++++
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 27 +++++++++++++++++++
|
||||||
|
2 files changed, 54 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
index bd0d5f027cac..5fdb2b3c042a 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
@@ -176,6 +176,7 @@ static struct cmn2asic_mapping smu_v13_0_0_clk_map[SMU_CLK_COUNT] = {
|
||||||
|
CLK_MAP(VCLK1, PPCLK_VCLK_1),
|
||||||
|
CLK_MAP(DCLK, PPCLK_DCLK_0),
|
||||||
|
CLK_MAP(DCLK1, PPCLK_DCLK_1),
|
||||||
|
+ CLK_MAP(DCEFCLK, PPCLK_DCFCLK),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cmn2asic_mapping smu_v13_0_0_feature_mask_map[SMU_FEATURE_COUNT] = {
|
||||||
|
@@ -707,6 +708,22 @@ static int smu_v13_0_0_set_default_dpm_table(struct smu_context *smu)
|
||||||
|
pcie_table->num_of_link_levels++;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* dcefclk dpm table setup */
|
||||||
|
+ dpm_table = &dpm_context->dpm_tables.dcef_table;
|
||||||
|
+ if (smu_cmn_feature_is_enabled(smu, SMU_FEATURE_DPM_DCN_BIT)) {
|
||||||
|
+ ret = smu_v13_0_set_single_dpm_table(smu,
|
||||||
|
+ SMU_DCEFCLK,
|
||||||
|
+ dpm_table);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+ } else {
|
||||||
|
+ dpm_table->count = 1;
|
||||||
|
+ dpm_table->dpm_levels[0].value = smu->smu_table.boot_values.dcefclk / 100;
|
||||||
|
+ dpm_table->dpm_levels[0].enabled = true;
|
||||||
|
+ dpm_table->min = dpm_table->dpm_levels[0].value;
|
||||||
|
+ dpm_table->max = dpm_table->dpm_levels[0].value;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -794,6 +811,9 @@ static int smu_v13_0_0_get_smu_metrics_data(struct smu_context *smu,
|
||||||
|
case METRICS_CURR_FCLK:
|
||||||
|
*value = metrics->CurrClock[PPCLK_FCLK];
|
||||||
|
break;
|
||||||
|
+ case METRICS_CURR_DCEFCLK:
|
||||||
|
+ *value = metrics->CurrClock[PPCLK_DCFCLK];
|
||||||
|
+ break;
|
||||||
|
case METRICS_AVERAGE_GFXCLK:
|
||||||
|
if (metrics->AverageGfxActivity <= SMU_13_0_0_BUSY_THRESHOLD)
|
||||||
|
*value = metrics->AverageGfxclkFrequencyPostDs;
|
||||||
|
@@ -1047,6 +1067,9 @@ static int smu_v13_0_0_get_current_clk_freq_by_table(struct smu_context *smu,
|
||||||
|
case PPCLK_DCLK_1:
|
||||||
|
member_type = METRICS_AVERAGE_DCLK1;
|
||||||
|
break;
|
||||||
|
+ case PPCLK_DCFCLK:
|
||||||
|
+ member_type = METRICS_CURR_DCEFCLK;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
@@ -1196,6 +1219,9 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu,
|
||||||
|
case SMU_DCLK1:
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.dclk_table);
|
||||||
|
break;
|
||||||
|
+ case SMU_DCEFCLK:
|
||||||
|
+ single_dpm_table = &(dpm_context->dpm_tables.dcef_table);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1209,6 +1235,7 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu,
|
||||||
|
case SMU_VCLK1:
|
||||||
|
case SMU_DCLK:
|
||||||
|
case SMU_DCLK1:
|
||||||
|
+ case SMU_DCEFCLK:
|
||||||
|
ret = smu_v13_0_0_get_current_clk_freq_by_table(smu, clk_type, &curr_freq);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(smu->adev->dev, "Failed to get current clock freq!");
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
index b9b3bf41eed3..12949928e285 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
@@ -147,6 +147,7 @@ static struct cmn2asic_mapping smu_v13_0_7_clk_map[SMU_CLK_COUNT] = {
|
||||||
|
CLK_MAP(VCLK1, PPCLK_VCLK_1),
|
||||||
|
CLK_MAP(DCLK, PPCLK_DCLK_0),
|
||||||
|
CLK_MAP(DCLK1, PPCLK_DCLK_1),
|
||||||
|
+ CLK_MAP(DCEFCLK, PPCLK_DCFCLK),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cmn2asic_mapping smu_v13_0_7_feature_mask_map[SMU_FEATURE_COUNT] = {
|
||||||
|
@@ -696,6 +697,22 @@ static int smu_v13_0_7_set_default_dpm_table(struct smu_context *smu)
|
||||||
|
pcie_table->num_of_link_levels++;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* dcefclk dpm table setup */
|
||||||
|
+ dpm_table = &dpm_context->dpm_tables.dcef_table;
|
||||||
|
+ if (smu_cmn_feature_is_enabled(smu, SMU_FEATURE_DPM_DCN_BIT)) {
|
||||||
|
+ ret = smu_v13_0_set_single_dpm_table(smu,
|
||||||
|
+ SMU_DCEFCLK,
|
||||||
|
+ dpm_table);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+ } else {
|
||||||
|
+ dpm_table->count = 1;
|
||||||
|
+ dpm_table->dpm_levels[0].value = smu->smu_table.boot_values.dcefclk / 100;
|
||||||
|
+ dpm_table->dpm_levels[0].enabled = true;
|
||||||
|
+ dpm_table->min = dpm_table->dpm_levels[0].value;
|
||||||
|
+ dpm_table->max = dpm_table->dpm_levels[0].value;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -777,6 +794,9 @@ static int smu_v13_0_7_get_smu_metrics_data(struct smu_context *smu,
|
||||||
|
case METRICS_CURR_FCLK:
|
||||||
|
*value = metrics->CurrClock[PPCLK_FCLK];
|
||||||
|
break;
|
||||||
|
+ case METRICS_CURR_DCEFCLK:
|
||||||
|
+ *value = metrics->CurrClock[PPCLK_DCFCLK];
|
||||||
|
+ break;
|
||||||
|
case METRICS_AVERAGE_GFXCLK:
|
||||||
|
*value = metrics->AverageGfxclkFrequencyPreDs;
|
||||||
|
break;
|
||||||
|
@@ -1027,6 +1047,9 @@ static int smu_v13_0_7_get_current_clk_freq_by_table(struct smu_context *smu,
|
||||||
|
case PPCLK_DCLK_1:
|
||||||
|
member_type = METRICS_CURR_DCLK1;
|
||||||
|
break;
|
||||||
|
+ case PPCLK_DCFCLK:
|
||||||
|
+ member_type = METRICS_CURR_DCEFCLK;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
@@ -1176,6 +1199,9 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu,
|
||||||
|
case SMU_DCLK1:
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.dclk_table);
|
||||||
|
break;
|
||||||
|
+ case SMU_DCEFCLK:
|
||||||
|
+ single_dpm_table = &(dpm_context->dpm_tables.dcef_table);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1189,6 +1215,7 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu,
|
||||||
|
case SMU_VCLK1:
|
||||||
|
case SMU_DCLK:
|
||||||
|
case SMU_DCLK1:
|
||||||
|
+ case SMU_DCEFCLK:
|
||||||
|
ret = smu_v13_0_7_get_current_clk_freq_by_table(smu, clk_type, &curr_freq);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(smu->adev->dev, "Failed to get current clock freq!");
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
From 3a2fb905145e76e4bbb32e90e0c6cd532dafb1b0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Evan Quan <evan.quan@amd.com>
|
||||||
|
Date: Mon, 14 Aug 2023 10:16:27 +0800
|
||||||
|
Subject: [PATCH] Revert "drm/amd/pm: disable the SMU13 OD feature support
|
||||||
|
temporarily"
|
||||||
|
|
||||||
|
This reverts commit 3592cc20beeece83db4c50a0f400e2dd15139de9.
|
||||||
|
|
||||||
|
The enablement for the new OD mechanism completed. Also, the support for
|
||||||
|
fan control related OD feature has been added via this new mechanism.
|
||||||
|
Thus, it is time to bring back the SMU13 OD support.
|
||||||
|
|
||||||
|
Signed-off-by: Evan Quan <evan.quan@amd.com>
|
||||||
|
Acked-by: Alex Deucher <alexander.deucher@amd.com>
|
||||||
|
---
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 18 +++---------------
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 12 +++---------
|
||||||
|
2 files changed, 6 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
index c48f81450d24..093962a37688 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
|
||||||
|
@@ -348,13 +348,10 @@ static int smu_v13_0_0_check_powerplay_table(struct smu_context *smu)
|
||||||
|
table_context->power_play_table;
|
||||||
|
struct smu_baco_context *smu_baco = &smu->smu_baco;
|
||||||
|
PPTable_t *pptable = smu->smu_table.driver_pptable;
|
||||||
|
-#if 0
|
||||||
|
- PPTable_t *pptable = smu->smu_table.driver_pptable;
|
||||||
|
const OverDriveLimits_t * const overdrive_upperlimits =
|
||||||
|
&pptable->SkuTable.OverDriveLimitsBasicMax;
|
||||||
|
const OverDriveLimits_t * const overdrive_lowerlimits =
|
||||||
|
&pptable->SkuTable.OverDriveLimitsMin;
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
if (powerplay_table->platform_caps & SMU_13_0_0_PP_PLATFORM_CAP_HARDWAREDC)
|
||||||
|
smu->dc_controlled_by_gpio = true;
|
||||||
|
@@ -366,27 +363,18 @@ static int smu_v13_0_0_check_powerplay_table(struct smu_context *smu)
|
||||||
|
if (powerplay_table->platform_caps & SMU_13_0_0_PP_PLATFORM_CAP_MACO)
|
||||||
|
smu_baco->maco_support = true;
|
||||||
|
|
||||||
|
- /*
|
||||||
|
- * We are in the transition to a new OD mechanism.
|
||||||
|
- * Disable the OD feature support for SMU13 temporarily.
|
||||||
|
- * TODO: get this reverted when new OD mechanism online
|
||||||
|
- */
|
||||||
|
-#if 0
|
||||||
|
if (!overdrive_lowerlimits->FeatureCtrlMask ||
|
||||||
|
!overdrive_upperlimits->FeatureCtrlMask)
|
||||||
|
smu->od_enabled = false;
|
||||||
|
|
||||||
|
+ table_context->thermal_controller_type =
|
||||||
|
+ powerplay_table->thermal_controller_type;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Instead of having its own buffer space and get overdrive_table copied,
|
||||||
|
* smu->od_settings just points to the actual overdrive_table
|
||||||
|
*/
|
||||||
|
smu->od_settings = &powerplay_table->overdrive_table;
|
||||||
|
-#else
|
||||||
|
- smu->od_enabled = false;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- table_context->thermal_controller_type =
|
||||||
|
- powerplay_table->thermal_controller_type;
|
||||||
|
|
||||||
|
smu->adev->pm.no_fan =
|
||||||
|
!(pptable->SkuTable.FeaturesToRun[0] & (1 << FEATURE_FAN_CONTROL_BIT));
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
index 99bc449799a6..430ad1b05ba3 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c
|
||||||
|
@@ -338,12 +338,10 @@ static int smu_v13_0_7_check_powerplay_table(struct smu_context *smu)
|
||||||
|
struct smu_baco_context *smu_baco = &smu->smu_baco;
|
||||||
|
PPTable_t *smc_pptable = table_context->driver_pptable;
|
||||||
|
BoardTable_t *BoardTable = &smc_pptable->BoardTable;
|
||||||
|
-#if 0
|
||||||
|
const OverDriveLimits_t * const overdrive_upperlimits =
|
||||||
|
&smc_pptable->SkuTable.OverDriveLimitsBasicMax;
|
||||||
|
const OverDriveLimits_t * const overdrive_lowerlimits =
|
||||||
|
&smc_pptable->SkuTable.OverDriveLimitsMin;
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
if (powerplay_table->platform_caps & SMU_13_0_7_PP_PLATFORM_CAP_HARDWAREDC)
|
||||||
|
smu->dc_controlled_by_gpio = true;
|
||||||
|
@@ -355,22 +353,18 @@ static int smu_v13_0_7_check_powerplay_table(struct smu_context *smu)
|
||||||
|
if (smu_baco->platform_support && (BoardTable->HsrEnabled || BoardTable->VddqOffEnabled))
|
||||||
|
smu_baco->maco_support = true;
|
||||||
|
|
||||||
|
-#if 0
|
||||||
|
if (!overdrive_lowerlimits->FeatureCtrlMask ||
|
||||||
|
!overdrive_upperlimits->FeatureCtrlMask)
|
||||||
|
smu->od_enabled = false;
|
||||||
|
|
||||||
|
+ table_context->thermal_controller_type =
|
||||||
|
+ powerplay_table->thermal_controller_type;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Instead of having its own buffer space and get overdrive_table copied,
|
||||||
|
* smu->od_settings just points to the actual overdrive_table
|
||||||
|
*/
|
||||||
|
smu->od_settings = &powerplay_table->overdrive_table;
|
||||||
|
-#else
|
||||||
|
- smu->od_enabled = false;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- table_context->thermal_controller_type =
|
||||||
|
- powerplay_table->thermal_controller_type;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
From 072a8dc3b5260ba08ba2e66036c2c63abd77df52 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lijo Lazar <lijo.lazar@amd.com>
|
||||||
|
Date: Thu, 24 Aug 2023 17:25:51 +0530
|
||||||
|
Subject: [PATCH] drm/amd/pm: Fix clock reporting for SMUv13.0.6
|
||||||
|
|
||||||
|
On SMU v13.0.6, effective clocks are reported by FW which won't exactly
|
||||||
|
match with DPM level. Report the current clock based on the values
|
||||||
|
matching closest to the effective clock. Also, when deep sleep is
|
||||||
|
applied to a clock, report it with a special level "S:" as in sample
|
||||||
|
clock levels below
|
||||||
|
|
||||||
|
S: 19Mhz *
|
||||||
|
0: 615Mhz
|
||||||
|
1: 800Mhz
|
||||||
|
2: 888Mhz
|
||||||
|
3: 1000Mhz
|
||||||
|
|
||||||
|
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
|
||||||
|
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
|
||||||
|
Reviewed-by: Evan Quan <evan.quan@amd.com>
|
||||||
|
---
|
||||||
|
.../drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 159 +++++++-----------
|
||||||
|
1 file changed, 62 insertions(+), 97 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
|
||||||
|
index c2308783053c..29e1cada7667 100644
|
||||||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
|
||||||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
|
||||||
|
@@ -91,6 +91,8 @@
|
||||||
|
#define PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE__SHIFT 0x5
|
||||||
|
#define LINK_SPEED_MAX 4
|
||||||
|
|
||||||
|
+#define SMU_13_0_6_DSCLK_THRESHOLD 100
|
||||||
|
+
|
||||||
|
static const struct cmn2asic_msg_mapping smu_v13_0_6_message_map[SMU_MSG_MAX_COUNT] = {
|
||||||
|
MSG_MAP(TestMessage, PPSMC_MSG_TestMessage, 0),
|
||||||
|
MSG_MAP(GetSmuVersion, PPSMC_MSG_GetSmuVersion, 1),
|
||||||
|
@@ -783,13 +785,61 @@ static int smu_v13_0_6_get_current_clk_freq_by_table(struct smu_context *smu,
|
||||||
|
return smu_v13_0_6_get_smu_metrics_data(smu, member_type, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int smu_v13_0_6_print_clks(struct smu_context *smu, char *buf,
|
||||||
|
+ struct smu_13_0_dpm_table *single_dpm_table,
|
||||||
|
+ uint32_t curr_clk, const char *clk_name)
|
||||||
|
+{
|
||||||
|
+ struct pp_clock_levels_with_latency clocks;
|
||||||
|
+ int i, ret, size = 0, level = -1;
|
||||||
|
+ uint32_t clk1, clk2;
|
||||||
|
+
|
||||||
|
+ ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
+ if (ret) {
|
||||||
|
+ dev_err(smu->adev->dev, "Attempt to get %s clk levels failed!",
|
||||||
|
+ clk_name);
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!clocks.num_levels)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
+ if (curr_clk < SMU_13_0_6_DSCLK_THRESHOLD) {
|
||||||
|
+ size = sysfs_emit_at(buf, size, "S: %uMhz *\n", curr_clk);
|
||||||
|
+ for (i = 0; i < clocks.num_levels; i++)
|
||||||
|
+ size += sysfs_emit_at(buf, size, "%d: %uMhz\n", i,
|
||||||
|
+ clocks.data[i].clocks_in_khz /
|
||||||
|
+ 1000);
|
||||||
|
+
|
||||||
|
+ } else {
|
||||||
|
+ if ((clocks.num_levels == 1) ||
|
||||||
|
+ (curr_clk < (clocks.data[0].clocks_in_khz / 1000)))
|
||||||
|
+ level = 0;
|
||||||
|
+ for (i = 0; i < clocks.num_levels; i++) {
|
||||||
|
+ clk1 = clocks.data[i].clocks_in_khz / 1000;
|
||||||
|
+
|
||||||
|
+ if (i < (clocks.num_levels - 1))
|
||||||
|
+ clk2 = clocks.data[i + 1].clocks_in_khz / 1000;
|
||||||
|
+
|
||||||
|
+ if (curr_clk >= clk1 && curr_clk < clk2) {
|
||||||
|
+ level = (curr_clk - clk1) <= (clk2 - curr_clk) ?
|
||||||
|
+ i :
|
||||||
|
+ i + 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ size += sysfs_emit_at(buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
+ clk1, (level == i) ? "*" : "");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return size;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
enum smu_clk_type type, char *buf)
|
||||||
|
{
|
||||||
|
- int i, now, size = 0;
|
||||||
|
+ int now, size = 0;
|
||||||
|
int ret = 0;
|
||||||
|
struct smu_umd_pstate_table *pstate_table = &smu->pstate_table;
|
||||||
|
- struct pp_clock_levels_with_latency clocks;
|
||||||
|
struct smu_13_0_dpm_table *single_dpm_table;
|
||||||
|
struct smu_dpm_context *smu_dpm = &smu->smu_dpm;
|
||||||
|
struct smu_13_0_dpm_context *dpm_context = NULL;
|
||||||
|
@@ -852,26 +902,9 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.uclk_table);
|
||||||
|
- ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
- if (ret) {
|
||||||
|
- dev_err(smu->adev->dev,
|
||||||
|
- "Attempt to get memory clk levels Failed!");
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- for (i = 0; i < clocks.num_levels; i++)
|
||||||
|
- size += sysfs_emit_at(
|
||||||
|
- buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
- clocks.data[i].clocks_in_khz / 1000,
|
||||||
|
- (clocks.num_levels == 1) ?
|
||||||
|
- "*" :
|
||||||
|
- (smu_v13_0_6_freqs_in_same_level(
|
||||||
|
- clocks.data[i].clocks_in_khz /
|
||||||
|
- 1000,
|
||||||
|
- now) ?
|
||||||
|
- "*" :
|
||||||
|
- ""));
|
||||||
|
- break;
|
||||||
|
+ return smu_v13_0_6_print_clks(smu, buf, single_dpm_table, now,
|
||||||
|
+ "mclk");
|
||||||
|
|
||||||
|
case SMU_SOCCLK:
|
||||||
|
ret = smu_v13_0_6_get_current_clk_freq_by_table(smu, SMU_SOCCLK,
|
||||||
|
@@ -883,26 +916,9 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.soc_table);
|
||||||
|
- ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
- if (ret) {
|
||||||
|
- dev_err(smu->adev->dev,
|
||||||
|
- "Attempt to get socclk levels Failed!");
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- for (i = 0; i < clocks.num_levels; i++)
|
||||||
|
- size += sysfs_emit_at(
|
||||||
|
- buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
- clocks.data[i].clocks_in_khz / 1000,
|
||||||
|
- (clocks.num_levels == 1) ?
|
||||||
|
- "*" :
|
||||||
|
- (smu_v13_0_6_freqs_in_same_level(
|
||||||
|
- clocks.data[i].clocks_in_khz /
|
||||||
|
- 1000,
|
||||||
|
- now) ?
|
||||||
|
- "*" :
|
||||||
|
- ""));
|
||||||
|
- break;
|
||||||
|
+ return smu_v13_0_6_print_clks(smu, buf, single_dpm_table, now,
|
||||||
|
+ "socclk");
|
||||||
|
|
||||||
|
case SMU_FCLK:
|
||||||
|
ret = smu_v13_0_6_get_current_clk_freq_by_table(smu, SMU_FCLK,
|
||||||
|
@@ -914,26 +930,9 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.fclk_table);
|
||||||
|
- ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
- if (ret) {
|
||||||
|
- dev_err(smu->adev->dev,
|
||||||
|
- "Attempt to get fclk levels Failed!");
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- for (i = 0; i < single_dpm_table->count; i++)
|
||||||
|
- size += sysfs_emit_at(
|
||||||
|
- buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
- single_dpm_table->dpm_levels[i].value,
|
||||||
|
- (clocks.num_levels == 1) ?
|
||||||
|
- "*" :
|
||||||
|
- (smu_v13_0_6_freqs_in_same_level(
|
||||||
|
- clocks.data[i].clocks_in_khz /
|
||||||
|
- 1000,
|
||||||
|
- now) ?
|
||||||
|
- "*" :
|
||||||
|
- ""));
|
||||||
|
- break;
|
||||||
|
+ return smu_v13_0_6_print_clks(smu, buf, single_dpm_table, now,
|
||||||
|
+ "fclk");
|
||||||
|
|
||||||
|
case SMU_VCLK:
|
||||||
|
ret = smu_v13_0_6_get_current_clk_freq_by_table(smu, SMU_VCLK,
|
||||||
|
@@ -945,26 +944,9 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.vclk_table);
|
||||||
|
- ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
- if (ret) {
|
||||||
|
- dev_err(smu->adev->dev,
|
||||||
|
- "Attempt to get vclk levels Failed!");
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- for (i = 0; i < single_dpm_table->count; i++)
|
||||||
|
- size += sysfs_emit_at(
|
||||||
|
- buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
- single_dpm_table->dpm_levels[i].value,
|
||||||
|
- (clocks.num_levels == 1) ?
|
||||||
|
- "*" :
|
||||||
|
- (smu_v13_0_6_freqs_in_same_level(
|
||||||
|
- clocks.data[i].clocks_in_khz /
|
||||||
|
- 1000,
|
||||||
|
- now) ?
|
||||||
|
- "*" :
|
||||||
|
- ""));
|
||||||
|
- break;
|
||||||
|
+ return smu_v13_0_6_print_clks(smu, buf, single_dpm_table, now,
|
||||||
|
+ "vclk");
|
||||||
|
|
||||||
|
case SMU_DCLK:
|
||||||
|
ret = smu_v13_0_6_get_current_clk_freq_by_table(smu, SMU_DCLK,
|
||||||
|
@@ -976,26 +958,9 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,
|
||||||
|
}
|
||||||
|
|
||||||
|
single_dpm_table = &(dpm_context->dpm_tables.dclk_table);
|
||||||
|
- ret = smu_v13_0_6_get_clk_table(smu, &clocks, single_dpm_table);
|
||||||
|
- if (ret) {
|
||||||
|
- dev_err(smu->adev->dev,
|
||||||
|
- "Attempt to get dclk levels Failed!");
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- for (i = 0; i < single_dpm_table->count; i++)
|
||||||
|
- size += sysfs_emit_at(
|
||||||
|
- buf, size, "%d: %uMhz %s\n", i,
|
||||||
|
- single_dpm_table->dpm_levels[i].value,
|
||||||
|
- (clocks.num_levels == 1) ?
|
||||||
|
- "*" :
|
||||||
|
- (smu_v13_0_6_freqs_in_same_level(
|
||||||
|
- clocks.data[i].clocks_in_khz /
|
||||||
|
- 1000,
|
||||||
|
- now) ?
|
||||||
|
- "*" :
|
||||||
|
- ""));
|
||||||
|
- break;
|
||||||
|
+ return smu_v13_0_6_print_clks(smu, buf, single_dpm_table, now,
|
||||||
|
+ "dclk");
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
40
linux-tkg-patches/6.6/0013-fedora-rpm.patch
Normal file
40
linux-tkg-patches/6.6/0013-fedora-rpm.patch
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec
|
||||||
|
index 8049f0e2c..de170760d 100755
|
||||||
|
--- a/scripts/package/kernel.spec
|
||||||
|
+++ b/scripts/package/kernel.spec
|
||||||
|
@@ -18,2 +18,3 @@ $S Source2: diff.patch
|
||||||
|
Provides: kernel-$KERNELRELEASE
|
||||||
|
+Provides: kernel-uname-r = %{version}
|
||||||
|
BuildRequires: bc binutils bison dwarves
|
||||||
|
@@ -28,4 +29,4 @@ $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
Group: Development/System
|
||||||
|
-Obsoletes: kernel-headers
|
||||||
|
Provides: kernel-headers = %{version}
|
||||||
|
+Provides: installonlypkg(kernel) = %{version}
|
||||||
|
%description headers
|
||||||
|
@@ -41,2 +42,5 @@ $S$M Summary: Development package for building kernel modules to match the $__KE
|
||||||
|
$S$M Group: System Environment/Kernel
|
||||||
|
+$S$M Provides: kernel-devel = %{version}
|
||||||
|
+$S$M Provides: kernel-devel-uname-r = %{version}
|
||||||
|
+$S$M Provides: installonlypkg(kernel) = %{version}
|
||||||
|
$S$M AutoReqProv: no
|
||||||
|
@@ -46,2 +50,18 @@ $S$M against the $__KERNELRELEASE kernel package.
|
||||||
|
$S$M
|
||||||
|
+$S # Opt out of a lot of Fedora hardening flags etc...
|
||||||
|
+$S # See https://src.fedoraproject.org/rpms/redhat-rpm-config//blob/rawhide/f/buildflags.md
|
||||||
|
+$S %undefine _package_note_file
|
||||||
|
+$S %undefine _auto_set_build_flags
|
||||||
|
+$S %undefine _include_frame_pointers
|
||||||
|
+$S %define _build_id_flags -Wl,--build-id=none
|
||||||
|
+$S %undefine _annotated_build
|
||||||
|
+$S %undefine _fortify_level
|
||||||
|
+$S %undefine _hardened_build
|
||||||
|
+$S %global _lto_cflags %{nil}
|
||||||
|
+$S %global _configure_gnuconfig_hack 0
|
||||||
|
+$S %global _configure_libtool_hardening_hack 0
|
||||||
|
+$S # Nearly had to go to the deep web to find documentation on this one... Gosh
|
||||||
|
+$S # See https://github.com/rpm-software-management/rpm/blob/master/macros.in#L471
|
||||||
|
+$S %define _build_id_links none
|
||||||
|
+$S
|
||||||
|
$S %prep
|
||||||
|
|
46
linux-tkg-patches/6.6/0013-optimize_harder_O3.patch
Normal file
46
linux-tkg-patches/6.6/0013-optimize_harder_O3.patch
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -442,7 +442,7 @@ endif
|
||||||
|
HOSTPKG_CONFIG = pkg-config
|
||||||
|
|
||||||
|
KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||||
|
- -O2 -fomit-frame-pointer -std=gnu11
|
||||||
|
+ -O3 -fomit-frame-pointer -std=gnu11
|
||||||
|
KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
|
||||||
|
KBUILD_USERLDFLAGS := $(USERLDFLAGS)
|
||||||
|
|
||||||
|
@@ -474,7 +474,7 @@ endif
|
||||||
|
-Wclippy::dbg_macro
|
||||||
|
|
||||||
|
KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||||||
|
-KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
|
||||||
|
+KBUILD_HOSTCXXFLAGS := -Wall -O3 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
|
||||||
|
KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \
|
||||||
|
-Zallow-features= $(HOSTRUSTFLAGS)
|
||||||
|
KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
|
||||||
|
@@ -757,7 +757,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
||||||
|
|
||||||
|
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
-KBUILD_CFLAGS += -O2
|
||||||
|
+KBUILD_CFLAGS += -O3
|
||||||
|
KBUILD_RUSTFLAGS += -Copt-level=2
|
||||||
|
else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
|
KBUILD_CFLAGS += -Os
|
||||||
|
diff --git a/init/Kconfig b/init/Kconfig
|
||||||
|
--- a/init/Kconfig
|
||||||
|
+++ b/init/Kconfig
|
||||||
|
@@ -1401,10 +1401,10 @@ choice
|
||||||
|
default CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
|
||||||
|
config CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
|
- bool "Optimize for performance (-O2)"
|
||||||
|
+ bool "Optimize for performance (-O3)"
|
||||||
|
help
|
||||||
|
This is the default optimization level for the kernel, building
|
||||||
|
- with the "-O2" compiler flag for best performance and most
|
||||||
|
+ with the "-O3" compiler flag for best performance and most
|
||||||
|
helpful compile-time warnings.
|
||||||
|
|
||||||
|
config CC_OPTIMIZE_FOR_SIZE
|
319
linux-tkg-patches/6.6/0013-suse-additions.patch
Normal file
319
linux-tkg-patches/6.6/0013-suse-additions.patch
Normal file
@@ -0,0 +1,319 @@
|
|||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Wed, 7 Feb 2018 15:16:04 +0100
|
||||||
|
Subject: Add ksym-provides tool.
|
||||||
|
|
||||||
|
References: bsc#1077692
|
||||||
|
Patch-mainline: no, not needed
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
---
|
||||||
|
scripts/mod/Makefile | 6 +-
|
||||||
|
scripts/mod/ksym-provides.c | 124 ++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 129 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 scripts/mod/ksym-provides.c
|
||||||
|
|
||||||
|
--- a/scripts/mod/Makefile
|
||||||
|
+++ b/scripts/mod/Makefile
|
||||||
|
@@ -2,11 +2,15 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
|
||||||
|
|
||||||
|
-hostprogs-always-y += modpost mk_elfconfig
|
||||||
|
+hostprogs-always-y += modpost mk_elfconfig ksym-provides
|
||||||
|
always-y += empty.o
|
||||||
|
|
||||||
|
modpost-objs := modpost.o file2alias.o sumversion.o
|
||||||
|
|
||||||
|
+ksym-provides-objs := ksym-provides.o
|
||||||
|
+
|
||||||
|
+HOSTLDLIBS_ksym-provides := -lelf
|
||||||
|
+
|
||||||
|
devicetable-offsets-file := devicetable-offsets.h
|
||||||
|
|
||||||
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/scripts/mod/ksym-provides.c
|
||||||
|
@@ -0,0 +1,124 @@
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <gelf.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+int main(int argc, char *argv[])
|
||||||
|
+{
|
||||||
|
+ int fd;
|
||||||
|
+ Elf *elf;
|
||||||
|
+ Elf_Scn *scn;
|
||||||
|
+ GElf_Shdr shdr;
|
||||||
|
+ size_t strndx;
|
||||||
|
+ int ndx;
|
||||||
|
+ Elf_Data *symdata, *data;
|
||||||
|
+ GElf_Sym sym;
|
||||||
|
+ char *name;
|
||||||
|
+ const char * flavor = argv[1];
|
||||||
|
+ const char * prefix = "__crc_";
|
||||||
|
+ size_t prefixlen = strlen(prefix);
|
||||||
|
+ const char * symformat = "ksym(%s:%s) = %lx\n";
|
||||||
|
+
|
||||||
|
+ if (argc != 3) {
|
||||||
|
+ fprintf(stderr, "Usage: %s <flavor> <filename>\n", argv[0]);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (elf_version(EV_CURRENT) == EV_NONE) {
|
||||||
|
+ fprintf(stderr, "libelf initialization failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ fd = open(argv[2], O_RDONLY);
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ perror("open failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf = elf_begin(fd, ELF_C_READ, NULL);
|
||||||
|
+ if (!elf) {
|
||||||
|
+ fprintf(stderr, "elf_begin failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_close;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = NULL;
|
||||||
|
+ while ((scn = elf_nextscn(elf, scn)) != NULL) {
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type == SHT_SYMTAB)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fputs("symbol table not found\n", stderr);
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ strndx = shdr.sh_link;
|
||||||
|
+
|
||||||
|
+ symdata = elf_getdata(scn, NULL);
|
||||||
|
+ if (!symdata) {
|
||||||
|
+ fprintf(stderr, "elf_getdata failed: %s\n", elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (ndx = 0; gelf_getsym(symdata, ndx, &sym) != NULL; ++ndx) {
|
||||||
|
+
|
||||||
|
+ name = elf_strptr(elf, strndx, sym.st_name);
|
||||||
|
+ if (!name) {
|
||||||
|
+ fprintf(stderr, "elf_strptr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (strncmp(prefix, name, prefixlen))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (sym.st_shndx >= SHN_LORESERVE) {
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ sym.st_value);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scn = elf_getscn(elf, sym.st_shndx);
|
||||||
|
+ if (!scn) {
|
||||||
|
+ fprintf(stderr, "elf_getscn failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ if (!gelf_getshdr(scn, &shdr)) {
|
||||||
|
+ fprintf(stderr, "gelf_getshdr failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shdr.sh_type != SHT_PROGBITS)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ data = elf_getdata_rawchunk(
|
||||||
|
+ elf, shdr.sh_offset + sym.st_value - shdr.sh_addr,
|
||||||
|
+ sizeof(GElf_Word), ELF_T_WORD);
|
||||||
|
+ if (!data) {
|
||||||
|
+ fprintf(stderr, "elf_getdata_rawchunk failed: %s\n",
|
||||||
|
+ elf_errmsg(-1));
|
||||||
|
+ goto err_end;
|
||||||
|
+ }
|
||||||
|
+ printf(symformat, flavor, name + prefixlen,
|
||||||
|
+ (unsigned long) *(GElf_Word*)data->d_buf);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ close(fd);
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ err_end:
|
||||||
|
+ elf_end(elf);
|
||||||
|
+ err_close:
|
||||||
|
+ close(fd);
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
From bb1a83cf109eee56c8dee26f7910c772f8c246fc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Thu, 29 Jun 2023 17:47:16 +0200
|
||||||
|
Subject: [PATCH] depmod: Handle installing modules under a prefix
|
||||||
|
|
||||||
|
References: bsc#1212835
|
||||||
|
Patch-mainline: Never, upstream rejected
|
||||||
|
|
||||||
|
Some distributions aim at shipping all files in /usr.
|
||||||
|
|
||||||
|
The path under which kernel modules are installed is hardcoded to /lib
|
||||||
|
which conflicts with this goal.
|
||||||
|
|
||||||
|
When kmod provides the config command, use it to determine the correct
|
||||||
|
module installation path.
|
||||||
|
|
||||||
|
With kmod that does not provide the config command /lib/modules is used
|
||||||
|
as before.
|
||||||
|
|
||||||
|
Note: users can use
|
||||||
|
|
||||||
|
make MODLIB='$(INSTALL_MOD_PATH)/usr/lib/modules/$(KERNELRELEASE)'
|
||||||
|
|
||||||
|
to install modules from mainline kernel on usrmerged system.
|
||||||
|
Not great for KMPs, though
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Nacked-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
|
---
|
||||||
|
v2: Avoid error on systems with kmod that does not support config
|
||||||
|
command
|
||||||
|
v3: More verbose commit message
|
||||||
|
v4:
|
||||||
|
- Document jq requirement
|
||||||
|
- fix bashism
|
||||||
|
- Update to getting full module path, not just additional prefix
|
||||||
|
v5: switch to pkgconfig
|
||||||
|
---
|
||||||
|
Makefile | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 658ec2b8aa74..5a1889fc43c7 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -1165,7 +1165,9 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
|
||||||
|
# makefile but the argument can be passed to make if needed.
|
||||||
|
#
|
||||||
|
|
||||||
|
-MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||||
|
+export KERNEL_MODULE_DIRECTORY := $(shell pkg-config --print-variables kmod 2>/dev/null | grep '^module_directory$$' >/dev/null && pkg-config --variable=module_directory kmod || echo /lib/modules)
|
||||||
|
+
|
||||||
|
+MODLIB = $(INSTALL_MOD_PATH)$(KERNEL_MODULE_DIRECTORY)/$(KERNELRELEASE)
|
||||||
|
export MODLIB
|
||||||
|
|
||||||
|
PHONY += prepare0
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
|
From 23133fe6745d567db5b93dc9e6aecc32d31354bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jeff Mahoney <jeffm@suse.de>
|
||||||
|
Date: Tue, 31 Mar 2009 09:46:30 -0400
|
||||||
|
Subject: [PATCH] - doc/README.KSYMS: Add to repo.
|
||||||
|
|
||||||
|
---
|
||||||
|
doc/README.KSYMS | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
create mode 100644 doc/README.KSYMS
|
||||||
|
|
||||||
|
diff --git a/doc/README.KSYMS b/doc/README.KSYMS
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..39fe7878174
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/doc/README.KSYMS
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+This file is a place holder for the kernel-syms{,-rt} package. It is used
|
||||||
|
+to group build dependencies for all kernel flavors.
|
||||||
|
+
|
||||||
|
+The KMP build process will build KMPs against all installed kernel flavors
|
||||||
|
+automatically. If you don't need to build against other flavors than the
|
||||||
|
+ones you've already installed - it is safe to uninstall this package.
|
||||||
|
|
||||||
|
From 917d74574856a402e5679d8162407af122c9b8db Mon Sep 17 00:00:00 2001
|
||||||
|
From: Etienne JUVIGNY <ti3nou@gmail.com>
|
||||||
|
Date: Tue, 12 Sep 2023 03:42:23 +0200
|
||||||
|
Subject: Suse: Add kernel-syms package and adapt for /usr/lib usage in Suse instead of the standard /lib symlink.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec
|
||||||
|
index ac3f2ee6d..e96ffc9a7 100644
|
||||||
|
--- a/scripts/package/kernel.spec
|
||||||
|
+++ b/scripts/package/kernel.spec
|
||||||
|
@@ -17,7 +17,7 @@ Source0: linux.tar.gz
|
||||||
|
Source1: config
|
||||||
|
Source2: diff.patch
|
||||||
|
Provides: kernel-%{KERNELRELEASE}
|
||||||
|
-BuildRequires: bc binutils bison dwarves
|
||||||
|
+BuildRequires: bc binutils bison dwarves coreutils
|
||||||
|
BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||||
|
BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||||
|
|
||||||
|
@@ -36,6 +36,19 @@ header files define structures and constants that are needed for
|
||||||
|
building most standard programs and are also needed for rebuilding the
|
||||||
|
glibc package.
|
||||||
|
|
||||||
|
+%package syms
|
||||||
|
+Summary: Kernel Symbol Versions (modversions) for the $__KERNELRELEASE kernel
|
||||||
|
+Group: Development/Sources
|
||||||
|
+AutoReqProv: no
|
||||||
|
+Provides: kernel-syms = %{version}
|
||||||
|
+Requires: kernel-devel = %{version}
|
||||||
|
+%description -n kernel-syms
|
||||||
|
+Kernel symbols, such as functions and variables, have version
|
||||||
|
+information attached to them. This package contains the symbol versions
|
||||||
|
+for the standard kernels.
|
||||||
|
+This package is needed for compiling kernel module packages with proper
|
||||||
|
+package dependencies.
|
||||||
|
+
|
||||||
|
%if %{with_devel}
|
||||||
|
%package devel
|
||||||
|
Summary: Development package for building kernel modules to match the %{version} kernel
|
||||||
|
@@ -67,8 +80,8 @@ cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEA
|
||||||
|
%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
|
||||||
|
cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
|
||||||
|
cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
|
||||||
|
-ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
|
||||||
|
-ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/source
|
||||||
|
+ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/usr/lib/modules/%{KERNELRELEASE}/build
|
||||||
|
+ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/usr/lib/modules/%{KERNELRELEASE}/source
|
||||||
|
%if %{with_devel}
|
||||||
|
%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
|
||||||
|
%endif
|
||||||
|
@@ -99,9 +112,9 @@ fi
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr (-, root, root)
|
||||||
|
-/lib/modules/%{KERNELRELEASE}
|
||||||
|
-%exclude /lib/modules/%{KERNELRELEASE}/build
|
||||||
|
-%exclude /lib/modules/%{KERNELRELEASE}/source
|
||||||
|
+/usr/lib/modules/%{KERNELRELEASE}
|
||||||
|
+%exclude /usr/lib/modules/%{KERNELRELEASE}/build
|
||||||
|
+%exclude /usr/lib/modules/%{KERNELRELEASE}/source
|
||||||
|
/boot/*
|
||||||
|
|
||||||
|
%files headers
|
||||||
|
@@ -112,6 +125,10 @@ fi
|
||||||
|
%files devel
|
||||||
|
%defattr (-, root, root)
|
||||||
|
/usr/src/kernels/%{KERNELRELEASE}
|
||||||
|
-/lib/modules/%{KERNELRELEASE}/build
|
||||||
|
-/lib/modules/%{KERNELRELEASE}/source
|
||||||
|
+/usr/lib/modules/%{KERNELRELEASE}/build
|
||||||
|
+/usr/lib/modules/%{KERNELRELEASE}/source
|
||||||
|
%endif
|
||||||
|
+
|
||||||
|
+%files syms
|
||||||
|
+%defattr (-, root, root)
|
||||||
|
+/usr/src/kernels/$KERNELRELEASE/doc
|
Reference in New Issue
Block a user