diff options
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.patch | 96 |
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 + |