Re: [PATCH 2/2] drm/amdgpu: use new reset-affected accessors for userspace interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 20.02.24 um 15:37 schrieb Lazar, Lijo:
On 2/20/2024 7:52 PM, Christian König wrote:
Am 20.02.24 um 07:32 schrieb Lazar, Lijo:
On 2/16/2024 8:43 PM, Alex Deucher wrote:
Use the new reset critical section accessors for debugfs, sysfs,
and the INFO IOCTL to provide proper mutual exclusivity
to hardware with respect the GPU resets.

This looks more like a priority inversion. When the device needs reset,
it doesn't make sense for reset handling to wait on these. Instead,
reset should be done at the earliest.
Nope that doesn't make any sense.

We block out operations which are not allowed to run concurrently with
resets here.

So the reset absolutely has to wait for those operations to finish.

Not at all. The first thing is to make sure that in_reset is set at the
earliest so that anything like these don't create further outstanding
transactions on the device. This patch prevents that.

The operations done/queried on the device on a hung state doesn't make
sense. The more the opportunities for such outstanding transactions, the
further it creates issues during the actual reset process.

No, exactly that is the buggy behavior we try to fix here.

A reset is not something which should interfere with those debugfs, sysfs and query IOCTL. E.g. a reset is something transparent for userspace.

That's also why submitting things is still allowed during a reset and just stash up jobs in the scheduler.

I finally start to understand how we ended up with that nonsense. If something like this comes up again then discuss it with Alex and me.

Regards,
Christian.


Thanks,
Lijo

Regards,
Christian.

Thanks,
Lijo

Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
---
   drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c |  20 +-
   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c     |  10 +
   drivers/gpu/drm/amd/pm/amdgpu_dpm.c         | 215 ++++++++++++++++++++
   drivers/gpu/drm/amd/pm/amdgpu_pm.c          |  91 ---------
   4 files changed, 235 insertions(+), 101 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index 72eceb7d6667..d0e4a8729703 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -1670,7 +1670,7 @@ static int amdgpu_debugfs_test_ib_show(struct
seq_file *m, void *unused)
       }
         /* Avoid accidently unparking the sched thread during GPU
reset */
-    r = down_write_killable(&adev->reset_domain->sem);
+    r = amdgpu_reset_domain_access_write_start(adev);
       if (r)
           return r;
   @@ -1699,7 +1699,7 @@ static int amdgpu_debugfs_test_ib_show(struct
seq_file *m, void *unused)
           kthread_unpark(ring->sched.thread);
       }
   -    up_write(&adev->reset_domain->sem);
+    amdgpu_reset_domain_access_write_end(adev);
         pm_runtime_mark_last_busy(dev->dev);
       pm_runtime_put_autosuspend(dev->dev);
@@ -1929,7 +1929,7 @@ static int amdgpu_debugfs_ib_preempt(void
*data, u64 val)
           return -ENOMEM;
         /* Avoid accidently unparking the sched thread during GPU
reset */
-    r = down_read_killable(&adev->reset_domain->sem);
+    r = amdgpu_reset_domain_access_read_start(adev);
       if (r)
           goto pro_end;
   @@ -1970,7 +1970,7 @@ static int amdgpu_debugfs_ib_preempt(void
*data, u64 val)
       /* restart the scheduler */
       kthread_unpark(ring->sched.thread);
   -    up_read(&adev->reset_domain->sem);
+    amdgpu_reset_domain_access_read_end(adev);
     pro_end:
       kfree(fences);
@@ -2031,23 +2031,23 @@ static ssize_t
amdgpu_reset_dump_register_list_read(struct file *f,
           return 0;
         memset(reg_offset, 0, 12);
-    ret = down_read_killable(&adev->reset_domain->sem);
+    ret = amdgpu_reset_domain_access_read_start(adev);
       if (ret)
           return ret;
         for (i = 0; i < adev->reset_info.num_regs; i++) {
           sprintf(reg_offset, "0x%x\n",
adev->reset_info.reset_dump_reg_list[i]);
-        up_read(&adev->reset_domain->sem);
+        amdgpu_reset_domain_access_read_end(adev);
           if (copy_to_user(buf + len, reg_offset, strlen(reg_offset)))
               return -EFAULT;
             len += strlen(reg_offset);
-        ret = down_read_killable(&adev->reset_domain->sem);
+        ret = amdgpu_reset_domain_access_read_start(adev);
           if (ret)
               return ret;
       }
   -    up_read(&adev->reset_domain->sem);
+    amdgpu_reset_domain_access_read_end(adev);
       *pos += len;
         return len;
@@ -2089,14 +2089,14 @@ static ssize_t
amdgpu_reset_dump_register_list_write(struct file *f,
           ret = -ENOMEM;
           goto error_free;
       }
-    ret = down_write_killable(&adev->reset_domain->sem);
+    ret = amdgpu_reset_domain_access_write_start(adev);
       if (ret)
           goto error_free;
         swap(adev->reset_info.reset_dump_reg_list, tmp);
       swap(adev->reset_info.reset_dump_reg_value, new);
       adev->reset_info.num_regs = i;
-    up_write(&adev->reset_domain->sem);
+    amdgpu_reset_domain_access_write_end(adev);
       ret = size;
     error_free:
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index a2df3025a754..4efb44a964ef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -43,6 +43,7 @@
   #include "amdgpu_gem.h"
   #include "amdgpu_display.h"
   #include "amdgpu_ras.h"
+#include "amdgpu_reset.h"
   #include "amd_pcie.h"
     void amdgpu_unregister_gpu_instance(struct amdgpu_device *adev)
@@ -704,7 +705,11 @@ int amdgpu_info_ioctl(struct drm_device *dev,
void *data, struct drm_file *filp)
           return copy_to_user(out, &count, min(size, 4u)) ? -EFAULT : 0;
       }
       case AMDGPU_INFO_TIMESTAMP:
+        ret = amdgpu_reset_domain_access_read_start(adev);
+        if (ret)
+            return -EFAULT;
           ui64 = amdgpu_gfx_get_gpu_clock_counter(adev);
+        amdgpu_reset_domain_access_read_end(adev);
           return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
       case AMDGPU_INFO_FW_VERSION: {
           struct drm_amdgpu_info_firmware fw_info;
@@ -831,6 +836,9 @@ int amdgpu_info_ioctl(struct drm_device *dev,
void *data, struct drm_file *filp)
               return -ENOMEM;
           alloc_size = info->read_mmr_reg.count * sizeof(*regs);
   +        ret = amdgpu_reset_domain_access_read_start(adev);
+        if (ret)
+            return -EFAULT;
           amdgpu_gfx_off_ctrl(adev, false);
           for (i = 0; i < info->read_mmr_reg.count; i++) {
               if (amdgpu_asic_read_register(adev, se_num, sh_num,
@@ -840,10 +848,12 @@ int amdgpu_info_ioctl(struct drm_device *dev,
void *data, struct drm_file *filp)
                             info->read_mmr_reg.dword_offset + i);
                   kfree(regs);
                   amdgpu_gfx_off_ctrl(adev, true);
+                amdgpu_reset_domain_access_read_end(adev);
                   return -EFAULT;
               }
           }
           amdgpu_gfx_off_ctrl(adev, true);
+        amdgpu_reset_domain_access_read_end(adev);
           n = copy_to_user(out, regs, min(size, alloc_size));
           kfree(regs);
           return n ? -EFAULT : 0;
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
index f84bfed50681..bb698d2c5e01 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c
@@ -31,6 +31,7 @@
   #include "amdgpu_display.h"
   #include "hwmgr.h"
   #include <linux/power_supply.h>
+#include "amdgpu_reset.h"
   #include "amdgpu_smu.h"
     #define amdgpu_dpm_enable_bapm(adev, e) \
@@ -46,10 +47,14 @@ int amdgpu_dpm_get_sclk(struct amdgpu_device
*adev, bool low)
       if (!pp_funcs->get_sclk)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_sclk((adev)->powerplay.pp_handle,
                    low);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -62,10 +67,14 @@ int amdgpu_dpm_get_mclk(struct amdgpu_device
*adev, bool low)
       if (!pp_funcs->get_mclk)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_mclk((adev)->powerplay.pp_handle,
                    low);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -493,12 +502,16 @@ int amdgpu_dpm_read_sensor(struct amdgpu_device
*adev, enum amd_pp_sensors senso
           return -EINVAL;
         if (pp_funcs && pp_funcs->read_sensor) {
+        ret = amdgpu_reset_domain_access_read_start(adev);
+        if (ret)
+            return ret;
           mutex_lock(&adev->pm.mutex);
           ret = pp_funcs->read_sensor(adev->powerplay.pp_handle,
                           sensor,
                           data,
                           size);
           mutex_unlock(&adev->pm.mutex);
+        amdgpu_reset_domain_access_read_end(adev);
       }
         return ret;
@@ -918,7 +931,10 @@ void amdgpu_dpm_get_current_power_state(struct
amdgpu_device *adev,
           goto out;
       }
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        goto out;
       *state =
pp_funcs->get_current_power_state(adev->powerplay.pp_handle);
+    amdgpu_reset_domain_access_read_end(adev);
       if (*state < POWER_STATE_TYPE_DEFAULT ||
           *state > POWER_STATE_TYPE_INTERNAL_3DPERF)
           *state = adev->pm.dpm.user_state;
@@ -951,12 +967,15 @@ enum amd_dpm_forced_level
amdgpu_dpm_get_performance_level(struct amdgpu_device
       if (!pp_funcs)
           return AMD_DPM_FORCED_LEVEL_AUTO;
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        return AMD_DPM_FORCED_LEVEL_AUTO;
       mutex_lock(&adev->pm.mutex);
       if (pp_funcs->get_performance_level)
           level =
pp_funcs->get_performance_level(adev->powerplay.pp_handle);
       else
           level = adev->pm.dpm.forced_level;
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return level;
   }
@@ -970,6 +989,7 @@ int amdgpu_dpm_force_performance_level(struct
amdgpu_device *adev,
                       AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK |
                       AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK |
                       AMD_DPM_FORCED_LEVEL_PROFILE_PEAK;
+    int ret;
         if (!pp_funcs || !pp_funcs->force_performance_level)
           return 0;
@@ -983,12 +1003,16 @@ int amdgpu_dpm_force_performance_level(struct
amdgpu_device *adev,
         if (adev->asic_type == CHIP_RAVEN) {
           if (!(adev->apu_flags & AMD_APU_IS_RAVEN2)) {
+            ret = amdgpu_reset_domain_access_read_start(adev);
+            if (ret)
+                return ret;
               if (current_level != AMD_DPM_FORCED_LEVEL_MANUAL &&
                   level == AMD_DPM_FORCED_LEVEL_MANUAL)
                   amdgpu_gfx_off_ctrl(adev, false);
               else if (current_level == AMD_DPM_FORCED_LEVEL_MANUAL &&
                    level != AMD_DPM_FORCED_LEVEL_MANUAL)
                   amdgpu_gfx_off_ctrl(adev, true);
+            amdgpu_reset_domain_access_read_end(adev);
           }
       }
   @@ -996,6 +1020,9 @@ int amdgpu_dpm_force_performance_level(struct
amdgpu_device *adev,
           (level == AMD_DPM_FORCED_LEVEL_PROFILE_EXIT))
           return -EINVAL;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       if (!(current_level & profile_mode_mask) &&
             (level & profile_mode_mask)) {
           /* enter UMD Pstate */
@@ -1027,6 +1054,7 @@ int amdgpu_dpm_force_performance_level(struct
amdgpu_device *adev,
       adev->pm.dpm.forced_level = level;
         mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return 0;
   }
@@ -1040,10 +1068,14 @@ int amdgpu_dpm_get_pp_num_states(struct
amdgpu_device *adev,
       if (!pp_funcs->get_pp_num_states)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_pp_num_states(adev->powerplay.pp_handle,
                         states);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1058,11 +1090,15 @@ int amdgpu_dpm_dispatch_task(struct
amdgpu_device *adev,
       if (!pp_funcs->dispatch_tasks)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->dispatch_tasks(adev->powerplay.pp_handle,
                          task_id,
                          user_state);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1075,10 +1111,14 @@ int amdgpu_dpm_get_pp_table(struct
amdgpu_device *adev, char **table)
       if (!pp_funcs->get_pp_table)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_pp_table(adev->powerplay.pp_handle,
                        table);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1094,12 +1134,16 @@ int amdgpu_dpm_set_fine_grain_clk_vol(struct
amdgpu_device *adev,
       if (!pp_funcs->set_fine_grain_clk_vol)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_fine_grain_clk_vol(adev->powerplay.pp_handle,
                              type,
                              input,
                              size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1115,12 +1159,16 @@ int amdgpu_dpm_odn_edit_dpm_table(struct
amdgpu_device *adev,
       if (!pp_funcs->odn_edit_dpm_table)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->odn_edit_dpm_table(adev->powerplay.pp_handle,
                          type,
                          input,
                          size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1135,11 +1183,15 @@ int amdgpu_dpm_print_clock_levels(struct
amdgpu_device *adev,
       if (!pp_funcs->print_clock_levels)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->print_clock_levels(adev->powerplay.pp_handle,
                          type,
                          buf);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1155,12 +1207,16 @@ int amdgpu_dpm_emit_clock_levels(struct
amdgpu_device *adev,
       if (!pp_funcs->emit_clock_levels)
           return -ENOENT;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->emit_clock_levels(adev->powerplay.pp_handle,
                          type,
                          buf,
                          offset);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1174,10 +1230,14 @@ int amdgpu_dpm_set_ppfeature_status(struct
amdgpu_device *adev,
       if (!pp_funcs->set_ppfeature_status)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_ppfeature_status(adev->powerplay.pp_handle,
                            ppfeature_masks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1190,10 +1250,14 @@ int amdgpu_dpm_get_ppfeature_status(struct
amdgpu_device *adev, char *buf)
       if (!pp_funcs->get_ppfeature_status)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_ppfeature_status(adev->powerplay.pp_handle,
                            buf);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1208,11 +1272,15 @@ int amdgpu_dpm_force_clock_level(struct
amdgpu_device *adev,
       if (!pp_funcs->force_clock_level)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->force_clock_level(adev->powerplay.pp_handle,
                         type,
                         mask);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1225,9 +1293,13 @@ int amdgpu_dpm_get_sclk_od(struct
amdgpu_device *adev)
       if (!pp_funcs->get_sclk_od)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_sclk_od(adev->powerplay.pp_handle);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1235,14 +1307,19 @@ int amdgpu_dpm_get_sclk_od(struct
amdgpu_device *adev)
   int amdgpu_dpm_set_sclk_od(struct amdgpu_device *adev, uint32_t value)
   {
       const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
+    int ret;
         if (is_support_sw_smu(adev))
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       if (pp_funcs->set_sclk_od)
           pp_funcs->set_sclk_od(adev->powerplay.pp_handle, value);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         if (amdgpu_dpm_dispatch_task(adev,
                        AMD_PP_TASK_READJUST_POWER_STATE,
@@ -1262,9 +1339,13 @@ int amdgpu_dpm_get_mclk_od(struct
amdgpu_device *adev)
       if (!pp_funcs->get_mclk_od)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_mclk_od(adev->powerplay.pp_handle);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1272,14 +1353,19 @@ int amdgpu_dpm_get_mclk_od(struct
amdgpu_device *adev)
   int amdgpu_dpm_set_mclk_od(struct amdgpu_device *adev, uint32_t value)
   {
       const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
+    int ret;
         if (is_support_sw_smu(adev))
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       if (pp_funcs->set_mclk_od)
           pp_funcs->set_mclk_od(adev->powerplay.pp_handle, value);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         if (amdgpu_dpm_dispatch_task(adev,
                        AMD_PP_TASK_READJUST_POWER_STATE,
@@ -1300,10 +1386,14 @@ int amdgpu_dpm_get_power_profile_mode(struct
amdgpu_device *adev,
       if (!pp_funcs->get_power_profile_mode)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_power_profile_mode(adev->powerplay.pp_handle,
                              buf);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1317,11 +1407,15 @@ int amdgpu_dpm_set_power_profile_mode(struct
amdgpu_device *adev,
       if (!pp_funcs->set_power_profile_mode)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_power_profile_mode(adev->powerplay.pp_handle,
                              input,
                              size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1334,10 +1428,14 @@ int amdgpu_dpm_get_gpu_metrics(struct
amdgpu_device *adev, void **table)
       if (!pp_funcs->get_gpu_metrics)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_gpu_metrics(adev->powerplay.pp_handle,
                       table);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1351,10 +1449,14 @@ ssize_t amdgpu_dpm_get_pm_metrics(struct
amdgpu_device *adev, void *pm_metrics,
       if (!pp_funcs->get_pm_metrics)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_pm_metrics(adev->powerplay.pp_handle,
pm_metrics,
                          size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1368,10 +1470,14 @@ int amdgpu_dpm_get_fan_control_mode(struct
amdgpu_device *adev,
       if (!pp_funcs->get_fan_control_mode)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_fan_control_mode(adev->powerplay.pp_handle,
                            fan_mode);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1385,10 +1491,14 @@ int amdgpu_dpm_set_fan_speed_pwm(struct
amdgpu_device *adev,
       if (!pp_funcs->set_fan_speed_pwm)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_fan_speed_pwm(adev->powerplay.pp_handle,
                         speed);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1402,10 +1512,14 @@ int amdgpu_dpm_get_fan_speed_pwm(struct
amdgpu_device *adev,
       if (!pp_funcs->get_fan_speed_pwm)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_fan_speed_pwm(adev->powerplay.pp_handle,
                         speed);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1419,10 +1533,14 @@ int amdgpu_dpm_get_fan_speed_rpm(struct
amdgpu_device *adev,
       if (!pp_funcs->get_fan_speed_rpm)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_fan_speed_rpm(adev->powerplay.pp_handle,
                         speed);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1436,10 +1554,14 @@ int amdgpu_dpm_set_fan_speed_rpm(struct
amdgpu_device *adev,
       if (!pp_funcs->set_fan_speed_rpm)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_fan_speed_rpm(adev->powerplay.pp_handle,
                         speed);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1453,10 +1575,14 @@ int amdgpu_dpm_set_fan_control_mode(struct
amdgpu_device *adev,
       if (!pp_funcs->set_fan_control_mode)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_fan_control_mode(adev->powerplay.pp_handle,
                            mode);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1472,12 +1598,16 @@ int amdgpu_dpm_get_power_limit(struct
amdgpu_device *adev,
       if (!pp_funcs->get_power_limit)
           return -ENODATA;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_power_limit(adev->powerplay.pp_handle,
                       limit,
                       pp_limit_level,
                       power_type);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1491,10 +1621,14 @@ int amdgpu_dpm_set_power_limit(struct
amdgpu_device *adev,
       if (!pp_funcs->set_power_limit)
           return -EINVAL;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_power_limit(adev->powerplay.pp_handle,
                       limit);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1506,9 +1640,12 @@ int amdgpu_dpm_is_cclk_dpm_supported(struct
amdgpu_device *adev)
       if (!is_support_sw_smu(adev))
           return false;
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        return false;
       mutex_lock(&adev->pm.mutex);
       cclk_dpm_supported = is_support_cclk_dpm(adev);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return (int)cclk_dpm_supported;
   }
@@ -1517,14 +1654,19 @@ int
amdgpu_dpm_debugfs_print_current_performance_level(struct
amdgpu_device *ade
                                  struct seq_file *m)
   {
       const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
+    int ret;
         if (!pp_funcs->debugfs_print_current_performance_level)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
pp_funcs->debugfs_print_current_performance_level(adev->powerplay.pp_handle,
                                 m);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return 0;
   }
@@ -1539,11 +1681,15 @@ int amdgpu_dpm_get_smu_prv_buf_details(struct
amdgpu_device *adev,
       if (!pp_funcs->get_smu_prv_buf_details)
           return -ENOSYS;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_smu_prv_buf_details(adev->powerplay.pp_handle,
                           addr,
                           size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1580,11 +1726,15 @@ int amdgpu_dpm_set_pp_table(struct
amdgpu_device *adev,
       if (!pp_funcs->set_pp_table)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->set_pp_table(adev->powerplay.pp_handle,
                        buf,
                        size);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1616,10 +1766,14 @@ int
amdgpu_dpm_display_configuration_change(struct amdgpu_device *adev,
       if (!pp_funcs->display_configuration_change)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->display_configuration_change(adev->powerplay.pp_handle,
                                input);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1634,11 +1788,15 @@ int amdgpu_dpm_get_clock_by_type(struct
amdgpu_device *adev,
       if (!pp_funcs->get_clock_by_type)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_clock_by_type(adev->powerplay.pp_handle,
                         type,
                         clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1652,10 +1810,14 @@ int
amdgpu_dpm_get_display_mode_validation_clks(struct amdgpu_device *adev,
       if (!pp_funcs->get_display_mode_validation_clocks)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->get_display_mode_validation_clocks(adev->powerplay.pp_handle,
                                  clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1670,11 +1832,15 @@ int
amdgpu_dpm_get_clock_by_type_with_latency(struct amdgpu_device *adev,
       if (!pp_funcs->get_clock_by_type_with_latency)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->get_clock_by_type_with_latency(adev->powerplay.pp_handle,
                                  type,
                                  clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1689,11 +1855,15 @@ int
amdgpu_dpm_get_clock_by_type_with_voltage(struct amdgpu_device *adev,
       if (!pp_funcs->get_clock_by_type_with_voltage)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->get_clock_by_type_with_voltage(adev->powerplay.pp_handle,
                                  type,
                                  clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1707,10 +1877,14 @@ int
amdgpu_dpm_set_watermarks_for_clocks_ranges(struct amdgpu_device *adev,
       if (!pp_funcs->set_watermarks_for_clocks_ranges)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->set_watermarks_for_clocks_ranges(adev->powerplay.pp_handle,
                                clock_ranges);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1724,10 +1898,14 @@ int
amdgpu_dpm_display_clock_voltage_request(struct amdgpu_device *adev,
       if (!pp_funcs->display_clock_voltage_request)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->display_clock_voltage_request(adev->powerplay.pp_handle,
                                 clock);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1741,10 +1919,14 @@ int amdgpu_dpm_get_current_clocks(struct
amdgpu_device *adev,
       if (!pp_funcs->get_current_clocks)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_current_clocks(adev->powerplay.pp_handle,
                          clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1756,9 +1938,12 @@ void amdgpu_dpm_notify_smu_enable_pwe(struct
amdgpu_device *adev)
       if (!pp_funcs->notify_smu_enable_pwe)
           return;
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        return;
       mutex_lock(&adev->pm.mutex);
       pp_funcs->notify_smu_enable_pwe(adev->powerplay.pp_handle);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
   }
     int amdgpu_dpm_set_active_display_count(struct amdgpu_device *adev,
@@ -1770,10 +1955,14 @@ int
amdgpu_dpm_set_active_display_count(struct amdgpu_device *adev,
       if (!pp_funcs->set_active_display_count)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->set_active_display_count(adev->powerplay.pp_handle,
                            count);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1787,10 +1976,14 @@ int
amdgpu_dpm_set_min_deep_sleep_dcefclk(struct amdgpu_device *adev,
       if (!pp_funcs->set_min_deep_sleep_dcefclk)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return ret;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->set_min_deep_sleep_dcefclk(adev->powerplay.pp_handle,
                              clock);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1803,10 +1996,13 @@ void
amdgpu_dpm_set_hard_min_dcefclk_by_freq(struct amdgpu_device *adev,
       if (!pp_funcs->set_hard_min_dcefclk_by_freq)
           return;
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        return;
       mutex_lock(&adev->pm.mutex);
       pp_funcs->set_hard_min_dcefclk_by_freq(adev->powerplay.pp_handle,
                              clock);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
   }
     void amdgpu_dpm_set_hard_min_fclk_by_freq(struct amdgpu_device
*adev,
@@ -1817,10 +2013,13 @@ void
amdgpu_dpm_set_hard_min_fclk_by_freq(struct amdgpu_device *adev,
       if (!pp_funcs->set_hard_min_fclk_by_freq)
           return;
   +    if (amdgpu_reset_domain_access_read_start(adev))
+        return;
       mutex_lock(&adev->pm.mutex);
       pp_funcs->set_hard_min_fclk_by_freq(adev->powerplay.pp_handle,
                           clock);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
   }
     int amdgpu_dpm_display_disable_memory_clock_switch(struct
amdgpu_device *adev,
@@ -1832,10 +2031,14 @@ int
amdgpu_dpm_display_disable_memory_clock_switch(struct amdgpu_device
*adev,
       if (!pp_funcs->display_disable_memory_clock_switch)
           return 0;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->display_disable_memory_clock_switch(adev->powerplay.pp_handle,
                                   disable_memory_clock_switch);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1849,10 +2052,14 @@ int
amdgpu_dpm_get_max_sustainable_clocks_by_dc(struct amdgpu_device *adev,
       if (!pp_funcs->get_max_sustainable_clocks_by_dc)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret =
pp_funcs->get_max_sustainable_clocks_by_dc(adev->powerplay.pp_handle,
                                max_clocks);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1867,11 +2074,15 @@ enum pp_smu_status
amdgpu_dpm_get_uclk_dpm_states(struct amdgpu_device *adev,
       if (!pp_funcs->get_uclk_dpm_states)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_uclk_dpm_states(adev->powerplay.pp_handle,
                           clock_values_in_khz,
                           num_states);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
@@ -1885,10 +2096,14 @@ int amdgpu_dpm_get_dpm_clock_table(struct
amdgpu_device *adev,
       if (!pp_funcs->get_dpm_clock_table)
           return -EOPNOTSUPP;
   +    ret = amdgpu_reset_domain_access_read_start(adev);
+    if (ret)
+        return 0;
       mutex_lock(&adev->pm.mutex);
       ret = pp_funcs->get_dpm_clock_table(adev->powerplay.pp_handle,
                           clock_table);
       mutex_unlock(&adev->pm.mutex);
+    amdgpu_reset_domain_access_read_end(adev);
         return ret;
   }
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
index 8d7d6a507d3a..dc9f9c733a2d 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
@@ -27,7 +27,6 @@
   #include "amdgpu_drv.h"
   #include "amdgpu_pm.h"
   #include "amdgpu_dpm.h"
-#include "amdgpu_reset.h"
   #include "atom.h"
   #include <linux/pci.h>
   #include <linux/hwmon.h>
@@ -139,8 +138,6 @@ static ssize_t amdgpu_get_power_dpm_state(struct
device *dev,
       enum amd_pm_state_type pm;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -170,8 +167,6 @@ static ssize_t
amdgpu_set_power_dpm_state(struct device *dev,
       enum amd_pm_state_type  state;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -267,8 +262,6 @@ static ssize_t
amdgpu_get_power_dpm_force_performance_level(struct device *dev,
       enum amd_dpm_forced_level level = 0xff;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -306,8 +299,6 @@ static ssize_t
amdgpu_set_power_dpm_force_performance_level(struct device *dev,
       enum amd_dpm_forced_level level;
       int ret = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -368,8 +359,6 @@ static ssize_t amdgpu_get_pp_num_states(struct
device *dev,
       uint32_t i;
       int buf_len, ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -406,8 +395,6 @@ static ssize_t amdgpu_get_pp_cur_state(struct
device *dev,
       enum amd_pm_state_type pm = 0;
       int i = 0, ret = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -445,8 +432,6 @@ static ssize_t amdgpu_get_pp_force_state(struct
device *dev,
       struct drm_device *ddev = dev_get_drvdata(dev);
       struct amdgpu_device *adev = drm_to_adev(ddev);
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -468,8 +453,6 @@ static ssize_t amdgpu_set_pp_force_state(struct
device *dev,
       unsigned long idx;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -538,8 +521,6 @@ static ssize_t amdgpu_get_pp_table(struct
device *dev,
       char *table = NULL;
       int size, ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -574,8 +555,6 @@ static ssize_t amdgpu_set_pp_table(struct
device *dev,
       struct amdgpu_device *adev = drm_to_adev(ddev);
       int ret = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -757,8 +736,6 @@ static ssize_t
amdgpu_set_pp_od_clk_voltage(struct device *dev,
       const char delimiter[3] = {' ', '\n', '\0'};
       uint32_t type;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -859,8 +836,6 @@ static ssize_t
amdgpu_get_pp_od_clk_voltage(struct device *dev,
       };
       uint clk_index;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -919,8 +894,6 @@ static ssize_t amdgpu_set_pp_features(struct
device *dev,
       uint64_t featuremask;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -954,8 +927,6 @@ static ssize_t amdgpu_get_pp_features(struct
device *dev,
       ssize_t size;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1023,8 +994,6 @@ static ssize_t amdgpu_get_pp_dpm_clock(struct
device *dev,
       int size = 0;
       int ret = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1092,8 +1061,6 @@ static ssize_t amdgpu_set_pp_dpm_clock(struct
device *dev,
       int ret;
       uint32_t mask = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1277,8 +1244,6 @@ static ssize_t amdgpu_get_pp_sclk_od(struct
device *dev,
       uint32_t value = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1306,8 +1271,6 @@ static ssize_t amdgpu_set_pp_sclk_od(struct
device *dev,
       int ret;
       long int value;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1339,8 +1302,6 @@ static ssize_t amdgpu_get_pp_mclk_od(struct
device *dev,
       uint32_t value = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1368,8 +1329,6 @@ static ssize_t amdgpu_set_pp_mclk_od(struct
device *dev,
       int ret;
       long int value;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1421,8 +1380,6 @@ static ssize_t
amdgpu_get_pp_power_profile_mode(struct device *dev,
       ssize_t size;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1460,8 +1417,6 @@ static ssize_t
amdgpu_set_pp_power_profile_mode(struct device *dev,
       long int profile_mode = 0;
       const char delimiter[3] = {' ', '\n', '\0'};
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1514,8 +1469,6 @@ static int
amdgpu_hwmon_get_sensor_generic(struct amdgpu_device *adev,
   {
       int r, size = sizeof(uint32_t);
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1603,8 +1556,6 @@ static ssize_t amdgpu_get_pcie_bw(struct
device *dev,
       uint64_t count0 = 0, count1 = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1646,8 +1597,6 @@ static ssize_t amdgpu_get_unique_id(struct
device *dev,
       struct drm_device *ddev = dev_get_drvdata(dev);
       struct amdgpu_device *adev = drm_to_adev(ddev);
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1819,8 +1768,6 @@ static ssize_t amdgpu_get_pm_metrics(struct
device *dev,
       ssize_t size = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1860,8 +1807,6 @@ static ssize_t amdgpu_get_gpu_metrics(struct
device *dev,
       ssize_t size = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -1978,8 +1923,6 @@ static ssize_t
amdgpu_set_smartshift_bias(struct device *dev,
       int r = 0;
       int bias = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2050,8 +1993,6 @@ static ssize_t
amdgpu_get_xgmi_plpd_policy(struct device *dev,
       char *mode_desc = "none";
       int mode;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2073,8 +2014,6 @@ static ssize_t
amdgpu_set_xgmi_plpd_policy(struct device *dev,
       struct amdgpu_device *adev = drm_to_adev(ddev);
       int mode, ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2530,8 +2469,6 @@ static ssize_t
amdgpu_hwmon_get_pwm1_enable(struct device *dev,
       u32 pwm_mode = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2561,8 +2498,6 @@ static ssize_t
amdgpu_hwmon_set_pwm1_enable(struct device *dev,
       int err, ret;
       int value;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2610,8 +2545,6 @@ static ssize_t amdgpu_hwmon_set_pwm1(struct
device *dev,
       u32 value;
       u32 pwm_mode;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2655,8 +2588,6 @@ static ssize_t amdgpu_hwmon_get_pwm1(struct
device *dev,
       int err;
       u32 speed = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2685,8 +2616,6 @@ static ssize_t
amdgpu_hwmon_get_fan1_input(struct device *dev,
       int err;
       u32 speed = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2749,8 +2678,6 @@ static ssize_t
amdgpu_hwmon_get_fan1_target(struct device *dev,
       int err;
       u32 rpm = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2780,8 +2707,6 @@ static ssize_t
amdgpu_hwmon_set_fan1_target(struct device *dev,
       u32 value;
       u32 pwm_mode;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2824,8 +2749,6 @@ static ssize_t
amdgpu_hwmon_get_fan1_enable(struct device *dev,
       u32 pwm_mode = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2856,8 +2779,6 @@ static ssize_t
amdgpu_hwmon_set_fan1_enable(struct device *dev,
       int value;
       u32 pwm_mode;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -2996,8 +2917,6 @@ static ssize_t
amdgpu_hwmon_show_power_cap_generic(struct device *dev,
       ssize_t size;
       int r;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -3077,8 +2996,6 @@ static ssize_t
amdgpu_hwmon_set_power_cap(struct device *dev,
       int err;
       u32 value;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -3531,8 +3448,6 @@ static int amdgpu_retrieve_od_settings(struct
amdgpu_device *adev,
       int size = 0;
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -3615,8 +3530,6 @@ amdgpu_distribute_custom_od_settings(struct
amdgpu_device *adev,
       long parameter[64];
       int ret;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -4482,8 +4395,6 @@ static int amdgpu_debugfs_pm_info_show(struct
seq_file *m, void *unused)
       u64 flags = 0;
       int r;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;
   @@ -4527,8 +4438,6 @@ static ssize_t
amdgpu_pm_prv_buffer_read(struct file *f, char __user *buf,
       void *smu_prv_buf;
       int ret = 0;
   -    if (amdgpu_in_reset(adev))
-        return -EPERM;
       if (adev->in_suspend && !adev->in_runpm)
           return -EPERM;




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux