drm/amdgpu: Move gfx flag in_suspend to adev
authorRex Zhu <Rex.Zhu@amd.com>
Sat, 29 Sep 2018 07:27:02 +0000 (15:27 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 9 Oct 2018 22:05:33 +0000 (17:05 -0500)
Move in_suspend flag to adev from gfx, so
can be used in other ip blocks, also keep
consistent with gpu_in_reset flag.

Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c

index 44140cce067cc5b1c4bd0bdc6a6a3cfd45758925..d0102cfc8efbd1825df74c84ed26a0d0042a7e25 100644 (file)
@@ -1015,6 +1015,9 @@ struct amdgpu_device {
        bool has_hw_reset;
        u8                              reset_magic[AMDGPU_RESET_MAGIC_NUM];
 
+       /* s3/s4 mask */
+       bool                            in_suspend;
+
        /* record last mm index being written through WREG32*/
        unsigned long last_mm_index;
        bool                            in_gpu_reset;
index a1d8d97252e0cc5c2e4301115e87ae1703cf4e9e..95095a8d212593f0bd5faa063371aa3d4ce2e38c 100644 (file)
@@ -2649,6 +2649,7 @@ int amdgpu_device_suspend(struct drm_device *dev, bool suspend, bool fbcon)
        if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
                return 0;
 
+       adev->in_suspend = true;
        drm_kms_helper_poll_disable(dev);
 
        if (fbcon)
@@ -2834,6 +2835,8 @@ int amdgpu_device_resume(struct drm_device *dev, bool resume, bool fbcon)
 #ifdef CONFIG_PM
        dev->dev->power.disable_depth--;
 #endif
+       adev->in_suspend = false;
+
        return 0;
 }
 
index f172e92c463c720e6c7eb3feb8853cd6a1106ef8..b61b5c11aeadd3893c5ed8659aec88f1861bbb8c 100644 (file)
@@ -297,8 +297,7 @@ struct amdgpu_gfx {
        /* reset mask */
        uint32_t                        grbm_soft_reset;
        uint32_t                        srbm_soft_reset;
-       /* s3/s4 mask */
-       bool                            in_suspend;
+
        /* NGG */
        struct amdgpu_ngg               ngg;
 
index 2aeef2bb93a465633a6224e0d3e52a95bb3f9799..f9e0a21435f8ac9e955de995bdf55359db38d98b 100644 (file)
@@ -4872,7 +4872,7 @@ static int gfx_v8_0_kcq_init_queue(struct amdgpu_ring *ring)
        struct vi_mqd *mqd = ring->mqd_ptr;
        int mqd_idx = ring - &adev->gfx.compute_ring[0];
 
-       if (!adev->in_gpu_reset && !adev->gfx.in_suspend) {
+       if (!adev->in_gpu_reset && !adev->in_suspend) {
                memset((void *)mqd, 0, sizeof(struct vi_mqd_allocation));
                ((struct vi_mqd_allocation *)mqd)->dynamic_cu_mask = 0xFFFFFFFF;
                ((struct vi_mqd_allocation *)mqd)->dynamic_rb_mask = 0xFFFFFFFF;
@@ -5142,19 +5142,12 @@ static int gfx_v8_0_hw_fini(void *handle)
 
 static int gfx_v8_0_suspend(void *handle)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       adev->gfx.in_suspend = true;
-       return gfx_v8_0_hw_fini(adev);
+       return gfx_v8_0_hw_fini(handle);
 }
 
 static int gfx_v8_0_resume(void *handle)
 {
-       int r;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-
-       r = gfx_v8_0_hw_init(adev);
-       adev->gfx.in_suspend = false;
-       return r;
+       return gfx_v8_0_hw_init(handle);
 }
 
 static bool gfx_v8_0_check_soft_reset(void *handle)
index 7a6a814ba9b857666cf38aed9438afdfc5166eb6..4b020cc4bea96645e86ec823681053a78650ba76 100644 (file)
@@ -3198,7 +3198,7 @@ static int gfx_v9_0_kcq_init_queue(struct amdgpu_ring *ring)
        struct v9_mqd *mqd = ring->mqd_ptr;
        int mqd_idx = ring - &adev->gfx.compute_ring[0];
 
-       if (!adev->in_gpu_reset && !adev->gfx.in_suspend) {
+       if (!adev->in_gpu_reset && !adev->in_suspend) {
                memset((void *)mqd, 0, sizeof(struct v9_mqd_allocation));
                ((struct v9_mqd_allocation *)mqd)->dynamic_cu_mask = 0xFFFFFFFF;
                ((struct v9_mqd_allocation *)mqd)->dynamic_rb_mask = 0xFFFFFFFF;
@@ -3417,7 +3417,7 @@ static int gfx_v9_0_hw_fini(void *handle)
        /* Use deinitialize sequence from CAIL when unbinding device from driver,
         * otherwise KIQ is hanging when binding back
         */
-       if (!adev->in_gpu_reset && !adev->gfx.in_suspend) {
+       if (!adev->in_gpu_reset && !adev->in_suspend) {
                mutex_lock(&adev->srbm_mutex);
                soc15_grbm_select(adev, adev->gfx.kiq.ring.me,
                                adev->gfx.kiq.ring.pipe,
@@ -3437,20 +3437,12 @@ static int gfx_v9_0_hw_fini(void *handle)
 
 static int gfx_v9_0_suspend(void *handle)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-
-       adev->gfx.in_suspend = true;
-       return gfx_v9_0_hw_fini(adev);
+       return gfx_v9_0_hw_fini(handle);
 }
 
 static int gfx_v9_0_resume(void *handle)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       int r;
-
-       r = gfx_v9_0_hw_init(adev);
-       adev->gfx.in_suspend = false;
-       return r;
+       return gfx_v9_0_hw_init(handle);
 }
 
 static bool gfx_v9_0_is_idle(void *handle)