--- /dev/null
+From 0f35b0a7b8fa402adbffa2565047cdcc4c480153 Mon Sep 17 00:00:00 2001
+From: Kaibo Ma <ent3rm4n@gmail.com>
+Date: Wed, 3 Jan 2024 12:29:56 +0800
+Subject: Revert "drm/amdkfd: Relocate TBA/TMA to opposite side of VM hole"
+
+From: Kaibo Ma <ent3rm4n@gmail.com>
+
+commit 0f35b0a7b8fa402adbffa2565047cdcc4c480153 upstream.
+
+That commit causes NULL pointer dereferences in dmesgs when
+running applications using ROCm, including clinfo, blender,
+and PyTorch, since v6.6.1. Revert it to fix blender again.
+
+This reverts commit 96c211f1f9ef82183493f4ceed4e347b52849149.
+
+Closes: https://github.com/ROCm/ROCm/issues/2596
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2991
+Reviewed-by: Jay Cornwall <jay.cornwall@amd.com>
+Signed-off-by: Kaibo Ma <ent3rm4n@gmail.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c
+@@ -330,12 +330,6 @@ static void kfd_init_apertures_vi(struct
+ pdd->gpuvm_limit =
+ pdd->dev->kfd->shared_resources.gpuvm_size - 1;
+
+- /* dGPUs: the reserved space for kernel
+- * before SVM
+- */
+- pdd->qpd.cwsr_base = SVM_CWSR_BASE;
+- pdd->qpd.ib_base = SVM_IB_BASE;
+-
+ pdd->scratch_base = MAKE_SCRATCH_APP_BASE_VI();
+ pdd->scratch_limit = MAKE_SCRATCH_APP_LIMIT(pdd->scratch_base);
+ }
+@@ -345,18 +339,18 @@ static void kfd_init_apertures_v9(struct
+ pdd->lds_base = MAKE_LDS_APP_BASE_V9();
+ pdd->lds_limit = MAKE_LDS_APP_LIMIT(pdd->lds_base);
+
+- pdd->gpuvm_base = PAGE_SIZE;
++ /* Raven needs SVM to support graphic handle, etc. Leave the small
++ * reserved space before SVM on Raven as well, even though we don't
++ * have to.
++ * Set gpuvm_base and gpuvm_limit to CANONICAL addresses so that they
++ * are used in Thunk to reserve SVM.
++ */
++ pdd->gpuvm_base = SVM_USER_BASE;
+ pdd->gpuvm_limit =
+ pdd->dev->kfd->shared_resources.gpuvm_size - 1;
+
+ pdd->scratch_base = MAKE_SCRATCH_APP_BASE_V9();
+ pdd->scratch_limit = MAKE_SCRATCH_APP_LIMIT(pdd->scratch_base);
+-
+- /*
+- * Place TBA/TMA on opposite side of VM hole to prevent
+- * stray faults from triggering SVM on these pages.
+- */
+- pdd->qpd.cwsr_base = pdd->dev->kfd->shared_resources.gpuvm_size;
+ }
+
+ int kfd_init_apertures(struct kfd_process *process)
+@@ -413,6 +407,12 @@ int kfd_init_apertures(struct kfd_proces
+ return -EINVAL;
+ }
+ }
++
++ /* dGPUs: the reserved space for kernel
++ * before SVM
++ */
++ pdd->qpd.cwsr_base = SVM_CWSR_BASE;
++ pdd->qpd.ib_base = SVM_IB_BASE;
+ }
+
+ dev_dbg(kfd_device, "node id %u\n", id);
--- /dev/null
+From bad098d76835c1379e1cf6afc935f8a7e050f83c Mon Sep 17 00:00:00 2001
+From: Matthew Maurer <mmaurer@google.com>
+Date: Tue, 31 Oct 2023 20:19:44 +0000
+Subject: rust: Ignore preserve-most functions
+
+From: Matthew Maurer <mmaurer@google.com>
+
+commit bad098d76835c1379e1cf6afc935f8a7e050f83c upstream.
+
+Neither bindgen nor Rust know about the preserve-most calling
+convention, and Clang describes it as unstable. Since we aren't using
+functions with this calling convention from Rust, blocklist them.
+
+These functions are only added to the build when list hardening is
+enabled, which is likely why others didn't notice this yet.
+
+Signed-off-by: Matthew Maurer <mmaurer@google.com>
+Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
+Reviewed-by: Alice Ryhl <aliceryhl@google.com>
+Link: https://lore.kernel.org/r/20231031201945.1412345-1-mmaurer@google.com
+[ Used Markdown for consistency with the other comments in the file. ]
+Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ rust/bindgen_parameters | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/rust/bindgen_parameters
++++ b/rust/bindgen_parameters
+@@ -20,3 +20,7 @@
+
+ # `seccomp`'s comment gets understood as a doctest
+ --no-doc-comments
++
++# These functions use the `__preserve_most` calling convention, which neither bindgen
++# nor Rust currently understand, and which Clang currently declares to be unstable.
++--blocklist-function __list_.*_report