• Daniel Gomez's avatar
    drm/amd/display: Fix mutex lock in dcn10 · 91954c6c
    Daniel Gomez authored
    Removal of DC_FP_* wrappers from dml (9696679b) provokes a mutex
    lock [2] on the amdgpu driver. Re-arrange the dcn10 code to avoid
    locking the mutex by placing the DC_FP_* wrappers around the proper
    functions.
    
    This fixes the following WARN/stacktrace:
    
    BUG: sleeping function called from invalid context at kernel/locking/mutex.c:283
    in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 227, name: systemd-udevd
    preempt_count: 1, expected: 0
    CPU: 4 PID: 227 Comm: systemd-udevd Not tainted 6.0.0-rc6-qtec-standard #2
    Hardware name: Qtechnology A/S QT5222/QT5221, BIOS v1.0.1 06/07/2021
    Call Trace:
     <TASK>
     dump_stack_lvl+0x33/0x42
     __might_resched.cold.172+0xa5/0xb3
     mutex_lock+0x1a/0x40
     amdgpu_dpm_get_clock_by_type_with_voltage+0x38/0x70 [amdgpu]
     dm_pp_get_clock_levels_by_type_with_voltage+0x64/0xa0 [amdgpu]
     dcn_bw_update_from_pplib+0x70/0x340 [amdgpu]
     dcn10_create_resource_pool+0x8c8/0xd20 [amdgpu]
     ? __kmalloc+0x1c7/0x4a0
     dc_create_resource_pool+0xe7/0x190 [amdgpu]
     dc_create+0x212/0x5d0 [amdgpu]
     amdgpu_dm_init+0x246/0x370 [amdgpu]
     ? schedule_hrtimeout_range_clock+0x93/0x120
     ? phm_wait_for_register_unequal.part.1+0x4a/0x80 [amdgpu]
     dm_hw_init+0xe/0x20 [amdgpu]
     amdgpu_device_init.cold.56+0x1324/0x1653 [amdgpu]
     ? pci_bus_read_config_word+0x43/0x80
     amdgpu_driver_load_kms+0x15/0x120 [amdgpu]
     amdgpu_pci_probe+0x116/0x320 [amdgpu]
     pci_device_probe+0x97/0x110
     really_probe+0xdd/0x340
     __driver_probe_device+0x80/0x170
     driver_probe_device+0x1f/0x90
     __driver_attach+0xdc/0x180
     ? __device_attach_driver+0x100/0x100
     ? __device_attach_driver+0x100/0x100
     bus_for_each_dev+0x74/0xc0
     bus_add_driver+0x19e/0x210
     ? kset_find_obj+0x30/0xa0
     ? 0xffffffffa0a5b000
     driver_register+0x6b/0xc0
     ? 0xffffffffa0a5b000
     do_one_initcall+0x4a/0x1f0
     ? __vunmap+0x28e/0x2f0
     ? __cond_resched+0x15/0x30
     ? kmem_cache_alloc_trace+0x3d/0x440
     do_init_module+0x4a/0x1e0
     load_module+0x1cba/0x1e10
     ? __do_sys_finit_module+0xb7/0x120
     __do_sys_finit_module+0xb7/0x120
     do_syscall_64+0x3c/0x80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7ff2b5f5422d
    Code: 5d c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48
    89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48>
    3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 ab 0e 00 f7 d8 64 89 01 48
    RSP: 002b:00007ffc44ab28e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 0000555c566a9240 RCX: 00007ff2b5f5422d
    RDX: 0000000000000000 RSI: 00007ff2b60bb353 RDI: 0000000000000019
    RBP: 00007ff2b60bb353 R08: 0000000000000000 R09: 0000555c566a9240
    R10: 0000000000000019 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000020000 R14: 0000000000000000 R15: 0000000000000000
    </TASK>
    
    Fixes: 9696679b ("drm/amd/display: remove DC_FP_* wrapper from dml folder")
    Reviewed-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
    Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: default avatarDaniel Gomez <daniel@qtec.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    91954c6c
dcn10_resource.c 43.1 KB