schedule_dc_vmin_vmax() is called by dm_crtc_high_irq(). Hence, we
cannot have the former sleep. Use GFP_NOWAIT for allocation in this
function.

Fixes: 288ec2b5d06d5 ("drm/amd/display: fix dmub access race condition")

Reviewed-by: Sun peng (Leo) Li <[email protected]>
Signed-off-by: Aurabindo Pillai <[email protected]>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 5a0652e19890..2d711a219520 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -551,13 +551,13 @@ static void schedule_dc_vmin_vmax(struct amdgpu_device 
*adev,
        struct dc_stream_state *stream,
        struct dc_crtc_timing_adjust *adjust)
 {
-       struct vupdate_offload_work *offload_work = 
kzalloc(sizeof(*offload_work), GFP_KERNEL);
+       struct vupdate_offload_work *offload_work = 
kzalloc(sizeof(*offload_work), GFP_NOWAIT);
        if (!offload_work) {
                drm_dbg_driver(adev_to_drm(adev), "Failed to allocate 
vupdate_offload_work\n");
                return;
        }
 
-       struct dc_crtc_timing_adjust *adjust_copy = 
kzalloc(sizeof(*adjust_copy), GFP_KERNEL);
+       struct dc_crtc_timing_adjust *adjust_copy = 
kzalloc(sizeof(*adjust_copy), GFP_NOWAIT);
        if (!adjust_copy) {
                drm_dbg_driver(adev_to_drm(adev), "Failed to allocate 
adjust_copy\n");
                kfree(offload_work);
-- 
2.51.0

Reply via email to