framenix: use targeted patch instead of reverts
This commit is contained in:
parent
7ec8fa2d44
commit
a18b8a685e
|
@ -0,0 +1,47 @@
|
||||||
|
From 6e77e6de7582f35138fa1c7523268602ecb2e0a0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
|
||||||
|
Date: Tue, 6 Feb 2024 10:39:24 -0800
|
||||||
|
Subject: [PATCH] drm/buddy: Improve alloc_range error handling routine
|
||||||
|
|
||||||
|
If alloc_range() couldn't allocate the requuired size,
|
||||||
|
return -ENOSPC.
|
||||||
|
|
||||||
|
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
|
||||||
|
---
|
||||||
|
drivers/gpu/drm/drm_buddy.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/gpu/drm/drm_buddy.c b/drivers/gpu/drm/drm_buddy.c
|
||||||
|
index f57e6d74fb0e..d5aba6392da0 100644
|
||||||
|
--- a/drivers/gpu/drm/drm_buddy.c
|
||||||
|
+++ b/drivers/gpu/drm/drm_buddy.c
|
||||||
|
@@ -483,9 +483,9 @@ static int __alloc_range(struct drm_buddy *mm,
|
||||||
|
struct list_head *blocks,
|
||||||
|
u64 *total_allocated_on_err)
|
||||||
|
{
|
||||||
|
+ u64 total_allocated = 0, allocated_size = 0;
|
||||||
|
struct drm_buddy_block *block;
|
||||||
|
struct drm_buddy_block *buddy;
|
||||||
|
- u64 total_allocated = 0;
|
||||||
|
LIST_HEAD(allocated);
|
||||||
|
u64 end;
|
||||||
|
int err;
|
||||||
|
@@ -539,6 +539,15 @@ static int __alloc_range(struct drm_buddy *mm,
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
list_splice_tail(&allocated, blocks);
|
||||||
|
+
|
||||||
|
+ list_for_each_entry(block, blocks, link)
|
||||||
|
+ allocated_size += drm_buddy_block_size(mm, block);
|
||||||
|
+
|
||||||
|
+ if (allocated_size < size) {
|
||||||
|
+ err = -ENOSPC;
|
||||||
|
+ goto err_free;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_undo:
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
|
@ -33,30 +33,8 @@ in
|
||||||
# revert some commits that introduced the clourful graphics artefacts flickering,
|
# revert some commits that introduced the clourful graphics artefacts flickering,
|
||||||
# at least that's the current working hypothesis in https://gitlab.freedesktop.org/drm/amd/-/issues/3097
|
# at least that's the current working hypothesis in https://gitlab.freedesktop.org/drm/amd/-/issues/3097
|
||||||
boot.kernelPatches = [
|
boot.kernelPatches = [
|
||||||
{name = "revert 9ae587f850a6702428273fcf4a2a9b392349b2a3";
|
{name = "patch attempt from https://gitlab.freedesktop.org/drm/amd/-/issues/3097#note_2271482";
|
||||||
patch = (pkgs.fetchpatch {
|
patch = ./0001-drm-buddy-Improve-alloc_range-error-handling-routine.patch;
|
||||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=9ae587f850a6702428273fcf4a2a9b392349b2a3";
|
|
||||||
hash = "sha256-5Uu8zxRSQuqE8oymjwPMt/ylsItpkQVDhbrOSMj8g3I=";
|
|
||||||
revert = true;
|
|
||||||
});}
|
|
||||||
{name = "revert 2eb412aa25ed2bf59f5ad5f7a09787d182d67934";
|
|
||||||
patch = (pkgs.fetchpatch {
|
|
||||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=2eb412aa25ed2bf59f5ad5f7a09787d182d67934";
|
|
||||||
hash = "sha256-VtsH6bmwaLxPZ+uXvVE6qVWD2/aIKf9GLuMTNKq6d8M=";
|
|
||||||
revert = true;
|
|
||||||
});}
|
|
||||||
{name = "revert 0a1844bf0b532d84324453374ad6845f64066c28";
|
|
||||||
patch = (pkgs.fetchpatch {
|
|
||||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=0a1844bf0b532d84324453374ad6845f64066c28";
|
|
||||||
hash = "sha256-Zd2pcYiOmuuzcc7THNtJW/YTjPyzO7HmQYKJNzy9YPw=";
|
|
||||||
revert = true;
|
|
||||||
});
|
|
||||||
# alternatively, 8569c3154538 can be reverted as well
|
|
||||||
extraStructuredConfig = with lib.kernel; {
|
|
||||||
DRM_I915 = no;
|
|
||||||
DRM_I915_GVT = lib.mkForce unset;
|
|
||||||
DRM_I915_GVT_KVMGT = lib.mkForce unset;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue