aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch
new file mode 100644
index 00000000..f2930260
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0866-drm-amdgpu-Expose-hive-adev-list-and-xgmi_mutex.patch
@@ -0,0 +1,96 @@
+From ac90ce9d10da9ac655ebc2a159e3cd87ba297abb Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Date: Wed, 14 Nov 2018 15:50:05 -0500
+Subject: [PATCH 0866/2940] drm/amdgpu: Expose hive adev list and xgmi_mutex
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's needed for device reset of entire hive.
+
+v3:
+Add per hive lock to allow avoiding duplicate resets triggered by
+multiple members of same hive.
+Expose amdgpu_hive_info instead of adding getter functions.
+
+Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 16 ++++++++--------
+ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.h | 13 ++++++++-----
+ 2 files changed, 16 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+index 59e667a8f01b..fb37e69f1bba 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+@@ -23,7 +23,6 @@
+ */
+ #include <linux/list.h>
+ #include "amdgpu.h"
+-#include "amdgpu_psp.h"
+ #include "amdgpu_xgmi.h"
+
+
+@@ -32,16 +31,15 @@ static DEFINE_MUTEX(xgmi_mutex);
+ #define AMDGPU_MAX_XGMI_HIVE 8
+ #define AMDGPU_MAX_XGMI_DEVICE_PER_HIVE 4
+
+-struct amdgpu_hive_info {
+- uint64_t hive_id;
+- struct list_head device_list;
+- struct psp_xgmi_topology_info topology_info;
+- int number_devices;
+-};
+-
+ static struct amdgpu_hive_info xgmi_hives[AMDGPU_MAX_XGMI_HIVE];
+ static unsigned hive_count = 0;
+
++
++void *amdgpu_xgmi_hive_try_lock(struct amdgpu_hive_info *hive)
++{
++ return &hive->device_list;
++}
++
+ struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev)
+ {
+ int i;
+@@ -61,6 +59,8 @@ struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev)
+ tmp = &xgmi_hives[hive_count++];
+ tmp->hive_id = adev->gmc.xgmi.hive_id;
+ INIT_LIST_HEAD(&tmp->device_list);
++ mutex_init(&tmp->hive_lock);
++
+ return tmp;
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.h
+index 85a7263f1f18..6335bfdcc51d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.h
+@@ -22,12 +22,15 @@
+ #ifndef __AMDGPU_XGMI_H__
+ #define __AMDGPU_XGMI_H__
+
+-/*
+- * functions used by amdgpu_xgmi.c
+- */
++#include "amdgpu_psp.h"
+
+-struct amdgpu_device;
+-struct amdgpu_hive_info;
++struct amdgpu_hive_info {
++ uint64_t hive_id;
++ struct list_head device_list;
++ struct psp_xgmi_topology_info topology_info;
++ int number_devices;
++ struct mutex hive_lock;
++};
+
+ struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev);
+ int amdgpu_xgmi_update_topology(struct amdgpu_hive_info *hive, struct amdgpu_device *adev);
+--
+2.17.1
+