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