aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch
new file mode 100644
index 00000000..27c5a257
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3676-drm-amd-amdgpu-add-sw_fini-interface-for-df_funcs.patch
@@ -0,0 +1,101 @@
+From 763506a37899ac24357dd474d102130b0e01a8bb Mon Sep 17 00:00:00 2001
+From: Jack Zhang <Jack.Zhang1@amd.com>
+Date: Tue, 3 Sep 2019 10:15:23 +0800
+Subject: [PATCH 3676/4256] drm/amd/amdgpu: add sw_fini interface for df_funcs
+
+add sw_fini interface of df_funcs.
+This interface will remove sysfs file of df_cntr_avail
+function.
+
+The old behavior only create sysfs of df_cntr_avail
+in sw_init, but never remove it for lack of sw_fini
+interface. With this,driver will report create
+sysfs fail when it's loaded for the second time.
+
+Signed-off-by: Jack Zhang <Jack.Zhang1@amd.com>
+Reviewed-by: Jonathan Kim <Jonathan.Kim@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
+ drivers/gpu/drm/amd/amdgpu/df_v1_7.c | 5 +++++
+ drivers/gpu/drm/amd/amdgpu/df_v3_6.c | 8 ++++++++
+ drivers/gpu/drm/amd/amdgpu/soc15.c | 3 +++
+ 4 files changed, 17 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index f68d78832a8e..125987f884a9 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -667,6 +667,7 @@ struct amdgpu_mmio_remap {
+
+ struct amdgpu_df_funcs {
+ void (*sw_init)(struct amdgpu_device *adev);
++ void (*sw_fini)(struct amdgpu_device *adev);
+ void (*enable_broadcast_mode)(struct amdgpu_device *adev,
+ bool enable);
+ u32 (*get_fb_channel_number)(struct amdgpu_device *adev);
+diff --git a/drivers/gpu/drm/amd/amdgpu/df_v1_7.c b/drivers/gpu/drm/amd/amdgpu/df_v1_7.c
+index 844c03868248..d6221298b477 100644
+--- a/drivers/gpu/drm/amd/amdgpu/df_v1_7.c
++++ b/drivers/gpu/drm/amd/amdgpu/df_v1_7.c
+@@ -33,6 +33,10 @@ static void df_v1_7_sw_init(struct amdgpu_device *adev)
+ {
+ }
+
++static void df_v1_7_sw_fini(struct amdgpu_device *adev)
++{
++}
++
+ static void df_v1_7_enable_broadcast_mode(struct amdgpu_device *adev,
+ bool enable)
+ {
+@@ -111,6 +115,7 @@ static void df_v1_7_enable_ecc_force_par_wr_rmw(struct amdgpu_device *adev,
+
+ const struct amdgpu_df_funcs df_v1_7_funcs = {
+ .sw_init = df_v1_7_sw_init,
++ .sw_fini = df_v1_7_sw_fini,
+ .enable_broadcast_mode = df_v1_7_enable_broadcast_mode,
+ .get_fb_channel_number = df_v1_7_get_fb_channel_number,
+ .get_hbm_channel_number = df_v1_7_get_hbm_channel_number,
+diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+index 7f7896a69d53..72bfefdbfa65 100644
+--- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
++++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c
+@@ -220,6 +220,13 @@ static void df_v3_6_sw_init(struct amdgpu_device *adev)
+ adev->df_perfmon_config_assign_mask[i] = 0;
+ }
+
++static void df_v3_6_sw_fini(struct amdgpu_device *adev)
++{
++
++ device_remove_file(adev->dev, &dev_attr_df_cntr_avail);
++
++}
++
+ static void df_v3_6_enable_broadcast_mode(struct amdgpu_device *adev,
+ bool enable)
+ {
+@@ -538,6 +545,7 @@ static void df_v3_6_pmc_get_count(struct amdgpu_device *adev,
+
+ const struct amdgpu_df_funcs df_v3_6_funcs = {
+ .sw_init = df_v3_6_sw_init,
++ .sw_fini = df_v3_6_sw_fini,
+ .enable_broadcast_mode = df_v3_6_enable_broadcast_mode,
+ .get_fb_channel_number = df_v3_6_get_fb_channel_number,
+ .get_hbm_channel_number = df_v3_6_get_hbm_channel_number,
+diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
+index ae25b0928f3f..45518ef8c656 100644
+--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
+@@ -1235,6 +1235,9 @@ static int soc15_common_sw_init(void *handle)
+
+ static int soc15_common_sw_fini(void *handle)
+ {
++ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
++
++ adev->df_funcs->sw_fini(adev);
+ return 0;
+ }
+
+--
+2.17.1
+