• Shirish S's avatar
    drm/amdgpu: avoid sleep while executing atombios table (V2) · 8f4805a2
    Shirish S authored
    This patch replaces kzalloc's flag from GFP_KERNEL to
    GFP_ATOMIC to avoid sleeping in atomic context.
    
    Below is the stack trace:
    
    BUG: sleeping function called from invalid context at mm/slab.h:***
    in_atomic(): 1, irqs_disabled(): 0, pid: 1137, name: DrmThread
    CPU: 1 PID: 1137 Comm: DrmThread Tainted: G        W       4.14.43 #10
    Call Trace:
     dump_stack+0x4d/0x63
     ___might_sleep+0x11f/0x12e
     __kmalloc+0x76/0x126
     amdgpu_atom_execute_table_locked+0xfc/0x285
     amdgpu_atom_execute_table+0x5d/0x72
     transmitter_control_v1_5+0xef/0x11a
     hwss_edp_backlight_control+0x132/0x151
     dce110_disable_stream+0x133/0x16e
     core_link_disable_stream+0x1c5/0x23b
     dce110_reset_hw_ctx_wrap+0xb4/0x1aa
     dce110_apply_ctx_to_hw+0x4e/0x6da
     ? generic_reg_get+0x1f/0x33
     dc_commit_state+0x33f/0x3d2
     amdgpu_dm_atomic_commit_tail+0x2cf/0x5d2
     ? wait_for_common+0x5b/0x69
     commit_tail+0x42/0x64
     drm_atomic_helper_commit+0xdc/0xf9
     drm_atomic_helper_set_config+0x5c/0x76
     __drm_mode_set_config_internal+0x64/0x105
     drm_mode_setcrtc+0x474/0x56f
     ? drm_mode_getcrtc+0x155/0x155
     drm_ioctl_kernel+0x6c/0xa8
     drm_ioctl+0x267/0x353
     ? drm_mode_getcrtc+0x155/0x155
     amdgpu_drm_ioctl+0x4f/0x7f
     vfs_ioctl+0x21/0x2f
     do_vfs_ioctl+0x4c4/0x4e7
     ? security_file_ioctl+0x3b/0x4f
     SyS_ioctl+0x57/0x79
     do_syscall_64+0x64/0x72
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    V2: Added stack trace in commit message.
    Signed-off-by: default avatarShirish S <shirish.s@amd.com>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    8f4805a2
atom.c 34.2 KB