Compare commits

..

16 Commits

Author SHA1 Message Date
Sravan Balaji
d05f761332 PDS Kernel Configuration 2022-11-07 16:40:53 -05:00
Tk-Glitch
081d3097a0 cfg: comment: Add "torvalds" as possible _git_mirror value
Following https://github.com/Frogging-Family/linux-tkg/pull/642
2022-11-07 15:21:33 +01:00
Tk-Glitch
be8c8e8230 preempt_rt: Handle RC kernels and add 6.1 RC to mapping 2022-11-07 14:15:18 +01:00
Slaviusz
86d2ec1f79 Add Torvalds' git repo for faster -rc kernel evaluation (#642) 2022-11-07 14:00:30 +01:00
ptr1337
eb2be11b19 Update bcachefs patches for 5.15 and 6.0 (#641)
* Update bcachefs for 6.0

Signed-off-by: Peter Jung <admin@ptr1337.dev>

* Update bcachefs for 5.15

Signed-off-by: Peter Jung <admin@ptr1337.dev>

Signed-off-by: Peter Jung <admin@ptr1337.dev>
2022-11-07 13:59:45 +01:00
Tk-Glitch
aaa7b3d556 linux 6.0.y: defconfig: Sync with 6.0.5-arch1 2022-11-05 18:34:39 +01:00
Tk-Glitch
aa69546f01 linux 6.0.y: Due to popular demand, allow unofficial Project C port again but make it clear it might be unstable
Since we are either doing ports ourselves or using other's while we wait for Alfred's, let's handle unofficial versions with a toggle "marking" them until proper release eventually becomes available.

Fixes https://github.com/Frogging-Family/linux-tkg/issues/631
2022-11-05 18:24:07 +01:00
Tk-Glitch
accb6d07f4 preempt_rt: Add a warning regarding cpu schedulers availability when preempt_rt is enabled
Fixes https://github.com/Frogging-Family/linux-tkg/issues/635
2022-11-05 18:01:52 +01:00
Tk-Glitch
f79f7ddb8e preempt_rt: Allow BORE cpusched on compatible kernels
It's a pretty minor CFS mod, should work 🐸
2022-11-05 17:57:51 +01:00
Tk-Glitch
4201196110 preempt_rt: Fixups
- get rid of the deprecated _kver_subver_map and related check
- notify the user about the last known good kernel version target of the PREEMPT_RT patchset
- use warning instead of msg2 for PREEMPT_RT patch skipping since we are skipping a very impacting patch explicitly requested by the .cfg
2022-11-05 17:50:15 +01:00
Tk-Glitch
8b0d439206 preempt_rt: Move sched/core: nr_migrate = 128 increases number of tasks to iterate in a single balance run. patch out of glitched base, and only apply on non-preempt-rt.
Fixes a conflict on 5.4.y, 5.10.y and 5.15.y
2022-11-05 17:46:19 +01:00
Tk-Glitch
8316a6970a Bump RT patches 2022-11-05 17:11:36 +01:00
ptr1337
c171d77094 fix 0012-misc-additions.patch for 6.0.7 (#639)
Signed-off-by: Peter Jung <admin@ptr1337.dev>

Signed-off-by: Peter Jung <admin@ptr1337.dev>
2022-11-05 16:23:49 +01:00
Vasiliy Stelmachenok
16c81fb013 Clarify the description of the tickless parameter (#636) 2022-11-02 13:49:58 +01:00
Tk-Glitch
1882fa3bd9 linux 6.1 RC: Allow BORE cpusched 2022-10-31 18:50:45 +01:00
Tk-Glitch
c4ceba207d linux 5.15.y: Allow BORE cpusched
Fixes https://github.com/Frogging-Family/linux-tkg/issues/623
2022-10-31 18:48:17 +01:00
13 changed files with 15793 additions and 9936 deletions

View File

@@ -56,7 +56,7 @@ else
fi
pkgname=("${pkgbase}" "${pkgbase}-headers")
pkgver="${_basekernel}"."${_sub}"
pkgrel=271
pkgrel=272
pkgdesc='Linux-tkg'
arch=('x86_64') # no i686 in here
url="https://www.kernel.org/"

View File

@@ -20,7 +20,7 @@ _EXT_CONFIG_PATH=~/.config/frogminer/linux-tkg.cfg
# Default is "true".
_NUKR="true"
# Git mirror to use to get the kernel sources, possible values are "kernel.org", "googlesource.com" and "github.com"
# Git mirror to use to get the kernel sources, possible values are "kernel.org", "googlesource.com", "github.com" and "torvalds"
_git_mirror="kernel.org"
# Custom compiler root dirs - Leave empty to use system compilers
@@ -144,7 +144,9 @@ _numadisable="false"
_misc_adds="true"
# Set to "0" for periodic ticks, "1" to use CattaRappa mode (enabling full tickless) and "2" for tickless idle only.
# Full tickless can give higher performances in various cases but, depending on hardware, lower consistency. Just tickless idle can perform better on some platforms (mostly AMD based).
# 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.
# Just tickless idle perform better for most platforms.
_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"

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 6.0.3-arch2 Kernel Configuration
# Linux/x86 6.0.5-arch1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.0"
CONFIG_CC_IS_GCC=y
@@ -17,7 +17,7 @@ CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_PAHOLE_VERSION=123
CONFIG_PAHOLE_VERSION=124
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y

View File

@@ -11,6 +11,7 @@ _kernel_git_remotes=(
["kernel.org"]="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
["googlesource.com"]="https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable"
["github.com"]="https://github.com/gregkh/linux.git"
["torvalds"]="https://github.com/torvalds/linux.git"
)
_git_remote_names=( "${!_kernel_git_remotes[@]}" )
@@ -35,53 +36,35 @@ for _key in "${_current_kernels[@]}" "${_eol_kernels[@]}"; do
_kver_latest_tags_map[$_key]=$(echo "$_kernel_tags" | grep -F "v$_key" | tail -1 | cut -c1-)
done
# only used by workflow trigger script
typeset -Ag _kver_subver_map
_kver_subver_map=(
["5.4"]="214"
["5.7"]="19"
["5.8"]="18"
["5.9"]="16"
["5.10"]="144"
["5.11"]="22"
["5.12"]="19"
["5.13"]="19"
["5.14"]="21"
["5.15"]="69"
["5.16"]="20"
["5.17"]="15"
["5.18"]="19"
["5.19"]="10"
["6.0"]="rc6"
)
# PREEMPT_RT's supported kernel subversion
typeset -Ag _rt_subver_map
_rt_subver_map=(
["5.4"]="188"
["5.4"]="209"
["5.9"]="1"
["5.10"]="109"
["5.10"]="153"
["5.11"]="4"
["5.14"]="2"
["5.15"]="32"
["5.15"]="76"
["5.16"]="2"
["5.17"]="1"
["6.0"]="5"
["6.1"]="rc3"
)
# 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
typeset -Ag _rt_rev_map
_rt_rev_map=(
["5.4"]="73"
["5.4"]="77"
["5.9"]="20"
["5.10"]="65"
["5.10"]="76"
["5.11"]="11"
["5.14"]="21"
["5.15"]="39"
["5.15"]="53"
["5.16"]="19"
["5.17"]="17"
["6.0"]="14"
["6.1"]="2"
)
_undefine() {
@@ -287,7 +270,7 @@ _set_cpu_scheduler() {
elif [ "$_kver" = "514" ]; then
_avail_cpu_scheds=("pds" "bmq" "cacule" "cfs")
elif [ "$_kver" = "515" ]; then
_avail_cpu_scheds=("pds" "bmq" "cacule" "tt" "cfs")
_avail_cpu_scheds=("pds" "bmq" "cacule" "tt" "bore" "cfs")
elif [ "$_kver" = "516" ]; then
_avail_cpu_scheds=("pds" "bmq" "cacule" "cfs")
elif [ "$_kver" = "517" ]; then
@@ -297,19 +280,31 @@ _set_cpu_scheduler() {
elif [ "$_kver" = "519" ]; then
_avail_cpu_scheds=("cfs" "pds" "bmq" "cacule" "tt" "bore")
elif [ "$_kver" = "600" ]; then
_avail_cpu_scheds=("cfs" "tt" "bore")
_avail_cpu_scheds=("cfs" "pds" "bmq" "tt" "bore")
_projectc_unoff="1"
elif [ "$_kver" = "601" ]; then
_avail_cpu_scheds=("cfs" "bore")
else
_avail_cpu_scheds=("cfs")
fi
if [ "${_preempt_rt}" = "1" ]; then
_avail_cpu_scheds=("cfs")
warning "! Since you have enabled _preempt_rt, incompatible cpu schedulers will not be available !"
if [[ "${_avail_cpu_scheds[*]}" =~ "bore" ]]; then
_avail_cpu_scheds=("cfs" "bore")
else
_avail_cpu_scheds=("cfs")
fi
fi
# Populate descriptions of the available CPU schedulers
_avail_cpu_scheds_text=()
for _sched in "${_avail_cpu_scheds[@]}"; do
_avail_cpu_scheds_text+=("${_sched_description_array[$_sched]}")
if [ "$_sched" = "pds" ] || [ "$_sched" = "bmq" ] && [ "$_projectc_unoff" = "1" ]; then
_avail_cpu_scheds_text+=("Project C / ${_sched^^} (unofficial port - ! possibly unstable !)")
else
_avail_cpu_scheds_text+=("${_sched_description_array[$_sched]}")
fi
done
if ! [[ ${_avail_cpu_scheds[*]} =~ "$_cpusched" ]]; then
@@ -432,6 +427,7 @@ _linux_git_branch_checkout() {
msg2 "master branch doesn't locally exist, shallow cloning..."
git remote set-branches --add kernel.org master
git remote set-branches --add googlesource.com master
git remote set-branches --add torvalds master
git fetch --depth=1 $_git_mirror master
git fetch --depth 1 $_git_mirror tag "$_kernel_git_tag"
git checkout -b master-${_git_mirror} ${_git_mirror}/master
@@ -449,6 +445,7 @@ _linux_git_branch_checkout() {
msg2 "${_basekernel}.y branch doesn't locally exist, shallow cloning..."
git remote set-branches --add kernel.org linux-${_basekernel}.y
git remote set-branches --add googlesource.com linux-${_basekernel}.y
git remote set-branches --add torvalds linux-${_basekernel}.y
git fetch --depth=1 $_git_mirror linux-${_basekernel}.y
git fetch --depth=1 $_git_mirror tag "$_kernel_git_tag"
git checkout -b linux-${_basekernel}-${_git_mirror} ${_git_mirror}/linux-${_basekernel}.y
@@ -650,8 +647,13 @@ _tkg_srcprep() {
if [ ${_rt_subver_map[$_basekernel]+_} = "_" ]; then
preempt_rt_ksubver="${_rt_subver_map[$_basekernel]}"
# Check if subversion is supported, skip check if forced
if [ "${_preempt_rt_force}" = "1" ] || [ "${preempt_rt_ksubver}" = "${_kver_subver_map[$_basekernel]}" ]; then
preempt_rt_file_gz="patch-${_basekernel}.${preempt_rt_ksubver}-rt${_rt_rev_map["$_basekernel"]}.patch.gz"
if [ "${_preempt_rt_force}" = "1" ] || [ "${preempt_rt_ksubver}" = "${_sub}" ]; then
if [[ "${_sub}" == *rc* ]]; then
_separator="-"
else
_separator="."
fi
preempt_rt_file_gz="patch-${_basekernel}${_separator}${preempt_rt_ksubver}-rt${_rt_rev_map["$_basekernel"]}.patch.gz"
preempt_rt_file=`basename ${preempt_rt_file_gz} .gz`
curl "https://cdn.kernel.org/pub/linux/kernel/projects/rt/${_basekernel}/${preempt_rt_file_gz}" > "$srcdir"/"${preempt_rt_file_gz}"
last_pwd=`pwd`
@@ -661,10 +663,10 @@ _tkg_srcprep() {
tkgpatch="$srcdir/${preempt_rt_file}"
_msg="Applying PREEMPT_RT patch" && _tkg_patcher
else
msg2 "Skipping PREEMPT_RT patch for ${_basekernel}.${_sub}"
warning "Skipping PREEMPT_RT patch for ${_basekernel}.${_sub} (last known good ${_basekernel}.${preempt_rt_ksubver})"
fi
else
msg2 "Skipping PREEMPT_RT patch on unsupported kernel version"
warning "Skipping PREEMPT_RT patch on unsupported kernel version"
fi
fi
@@ -677,6 +679,11 @@ _tkg_srcprep() {
tkgpatch="$srcdir/0003-glitched-base.patch"
_msg="Applying glitched base patch" && _tkg_patcher
if [ "${_preempt_rt}" != "1" ]; then
tkgpatch="$srcdir/0003-glitched-base-nonrt.patch"
_msg="Applying glitched base non-rt additions patch" && _tkg_patcher
fi
if [[ "$_distro" =~ ^(Fedora|Suse)$ ]]; then
tkgpatch="$srcdir/0013-fedora-rpm.patch"
_msg="RPM: fixing spec generator" && _tkg_patcher
@@ -1328,7 +1335,7 @@ _tkg_srcprep() {
plain "Use CattaRappa mode (Tickless/Dynticks) ?"
_tickless_array_text=(
"No, use periodic ticks."
"Yes, full tickless baby!\n Can give higher performances in many cases but lower consistency on some hardware."
"Yes, full tickless baby!\n Full tickless can give higher performances in case you use isolation of CPUs for task, in other cases it behaves as Idle."
"Just tickless idle plz.\n Just tickless idle can perform better with some platforms (mostly AMD) or CPU schedulers (mostly MuQSS)."
)
_default_index="2"

View File

@@ -0,0 +1,38 @@
From 28f32f59d9d55ac7ec3a20b79bdd02d2a0a5f7e1 Mon Sep 17 00:00:00 2001
From: Alexandre Frade <admfrade@gmail.com>
Date: Mon, 29 Jan 2018 18:29:13 +0000
Subject: [PATCH 03/17] sched/core: nr_migrate = 128 increases number of tasks
to iterate in a single balance run.
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
---
kernel/sched/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f788cd61df21..2bfbb4213707 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -59,7 +59,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we measure -rt task CPU usage in us.
@@ -71,9 +71,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;
/*
* __task_rq_lock - lock the rq @p resides on.
--
2.28.0

View File

@@ -54,46 +54,6 @@ index 361ea7ab30ea..0c5cf69b241a 100644
2.28.0
From 28f32f59d9d55ac7ec3a20b79bdd02d2a0a5f7e1 Mon Sep 17 00:00:00 2001
From: Alexandre Frade <admfrade@gmail.com>
Date: Mon, 29 Jan 2018 18:29:13 +0000
Subject: [PATCH 03/17] sched/core: nr_migrate = 128 increases number of tasks
to iterate in a single balance run.
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
---
kernel/sched/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f788cd61df21..2bfbb4213707 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -59,7 +59,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we measure -rt task CPU usage in us.
@@ -71,9 +71,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;
/*
* __task_rq_lock - lock the rq @p resides on.
--
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

View File

@@ -0,0 +1,38 @@
From 28f32f59d9d55ac7ec3a20b79bdd02d2a0a5f7e1 Mon Sep 17 00:00:00 2001
From: Alexandre Frade <admfrade@gmail.com>
Date: Mon, 29 Jan 2018 18:29:13 +0000
Subject: [PATCH 03/17] sched/core: nr_migrate = 128 increases number of tasks
to iterate in a single balance run.
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
---
kernel/sched/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f788cd61df21..2bfbb4213707 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -59,7 +59,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we measure -rt task CPU usage in us.
@@ -71,9 +71,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;
/*
* __task_rq_lock - lock the rq @p resides on.
--
2.28.0

View File

@@ -54,46 +54,6 @@ index 361ea7ab30ea..0c5cf69b241a 100644
2.28.0
From 28f32f59d9d55ac7ec3a20b79bdd02d2a0a5f7e1 Mon Sep 17 00:00:00 2001
From: Alexandre Frade <admfrade@gmail.com>
Date: Mon, 29 Jan 2018 18:29:13 +0000
Subject: [PATCH 03/17] sched/core: nr_migrate = 128 increases number of tasks
to iterate in a single balance run.
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
---
kernel/sched/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f788cd61df21..2bfbb4213707 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -59,7 +59,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we measure -rt task CPU usage in us.
@@ -71,9 +71,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;
/*
* __task_rq_lock - lock the rq @p resides on.
--
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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
From 28f32f59d9d55ac7ec3a20b79bdd02d2a0a5f7e1 Mon Sep 17 00:00:00 2001
From: Alexandre Frade <admfrade@gmail.com>
Date: Mon, 29 Jan 2018 18:29:13 +0000
Subject: [PATCH 03/17] sched/core: nr_migrate = 128 increases number of tasks
to iterate in a single balance run.
Signed-off-by: Alexandre Frade <admfrade@gmail.com>
---
kernel/sched/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index f788cd61df21..2bfbb4213707 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -59,7 +59,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we measure -rt task CPU usage in us.
@@ -71,9 +71,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;
/*
* __task_rq_lock - lock the rq @p resides on.
--
2.28.0

View File

@@ -31,31 +31,6 @@ index 2acfc69878f5..3f1131431e06 100644
EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure);
__cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock);
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 211890edf37e..37121563407d 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -41,7 +41,7 @@ const_debug unsigned int sysctl_sched_features =
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
*/
-const_debug unsigned int sysctl_sched_nr_migrate = 32;
+const_debug unsigned int sysctl_sched_nr_migrate = 128;
/*
* period over which we average the RT time consumption, measured
@@ -61,9 +61,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;
/*
* __task_rq_lock - lock the rq @p resides on.
diff --git a/lib/Kconfig b/lib/Kconfig
index 5fe577673b98..c44c27cd6e05 100644
--- a/lib/Kconfig

File diff suppressed because it is too large Load Diff

View File

@@ -557,95 +557,3 @@ index af6c1a93372d90..002bc26b525e87 100644
sdw_cdns_probe(cdns);
From 785699dbc7041b99e0027bff27ffe17eba202e96 Mon Sep 17 00:00:00 2001
From: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Date: Tue, 4 Oct 2022 07:33:39 -0700
Subject: [PATCH] drm/amdgpu: Fix VRAM BO swap issue
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
DRM buddy manager allocates the contiguous memory requests in
a single block or multiple blocks. So for the ttm move operation
(incase of low vram memory) we should consider all the blocks to
compute the total memory size which compared with the struct
ttm_resource num_pages in order to verify that the blocks are
contiguous for the eviction process.
v2: Added a Fixes tag
v3: Rewrite the code to save a bit of calculations and
variables (Christian)
Fixes: c9cad937c0c5 ("drm/amdgpu: add drm buddy support to amdgpu")
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 134575a3893c53..794062ab57fca4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -424,8 +424,9 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo,
static bool amdgpu_mem_visible(struct amdgpu_device *adev,
struct ttm_resource *mem)
{
- uint64_t mem_size = (u64)mem->num_pages << PAGE_SHIFT;
+ u64 mem_size = (u64)mem->num_pages << PAGE_SHIFT;
struct amdgpu_res_cursor cursor;
+ u64 end;
if (mem->mem_type == TTM_PL_SYSTEM ||
mem->mem_type == TTM_PL_TT)
@@ -434,12 +435,18 @@ static bool amdgpu_mem_visible(struct amdgpu_device *adev,
return false;
amdgpu_res_first(mem, 0, mem_size, &cursor);
+ end = cursor.start + cursor.size;
+ while (cursor.remaining) {
+ amdgpu_res_next(&cursor, cursor.size);
- /* ttm_resource_ioremap only supports contiguous memory */
- if (cursor.size != mem_size)
- return false;
+ /* ttm_resource_ioremap only supports contiguous memory */
+ if (end != cursor.start)
+ return false;
+
+ end = cursor.start + cursor.size;
+ }
- return cursor.start + cursor.size <= adev->gmc.visible_vram_size;
+ return end <= adev->gmc.visible_vram_size;
}
/*
From 6df3912f64cea68409b08d282ffbccf0af7f8d8e Mon Sep 17 00:00:00 2001
From: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Date: Mon, 17 Oct 2022 13:15:21 -0700
Subject: [PATCH] drm/amdgpu: Fix for BO move issue
If there are no blocks to compare then exit
the loop.
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 794062ab57fca4..9e6c23266a1a0f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -439,6 +439,9 @@ static bool amdgpu_mem_visible(struct amdgpu_device *adev,
while (cursor.remaining) {
amdgpu_res_next(&cursor, cursor.size);
+ if (!cursor.remaining)
+ break;
+
/* ttm_resource_ioremap only supports contiguous memory */
if (end != cursor.start)
return false;