linux/drivers/gpu/drm
Hans de Goede 4b9caaa028 drm/amdgpu: Move mutex_init(&smu->message_lock) to smu_early_init()
Lockdep complains about the smu->message_lock mutex being used before
it is initialized through the following call path:

amdgpu_device_init()
 amdgpu_dpm_mode2_reset()
  smu_mode2_reset()
   smu_v12_0_mode2_reset()
    smu_cmn_send_smc_msg_with_param()

Move the mutex_init() call to smu_early_init() to fix the mutex being
used before it is initialized.

This fixes the following lockdep splat:

[    3.867331] ------------[ cut here ]------------
[    3.867335] fbcon: Taking over console
[    3.867338] DEBUG_LOCKS_WARN_ON(lock->magic != lock)
[    3.867340] WARNING: CPU: 14 PID: 491 at kernel/locking/mutex.c:579 __mutex_lock+0x44c/0x830
[    3.867349] Modules linked in: amdgpu(+) crct10dif_pclmul drm_ttm_helper crc32_pclmul ttm crc32c_intel ghash_clmulni_intel hid_lg_g15 iommu_v2 sp5100_tco nvme gpu_sched drm_dp_helper nvme_core ccp wmi video hid_logitech_dj ip6_tables ip_tables ipmi_devintf ipmi_msghandler fuse i2c_dev
[    3.867363] CPU: 14 PID: 491 Comm: systemd-udevd Tainted: G          I       5.18.0-rc5+ #33
[    3.867366] Hardware name: Micro-Star International Co., Ltd. MS-7C95/B550M PRO-VDH WIFI (MS-7C95), BIOS 2.90 12/23/2021
[    3.867369] RIP: 0010:__mutex_lock+0x44c/0x830
[    3.867372] Code: ff 85 c0 0f 84 33 fc ff ff 8b 0d b7 50 25 01 85 c9 0f 85 25 fc ff ff 48 c7 c6 fb 41 82 99 48 c7 c7 6b 63 80 99 e8 88 2a f8 ff <0f> 0b e9 0b fc ff ff f6 83 b9 0c 00 00 01 0f 85 64 ff ff ff 4c 89
[    3.867377] RSP: 0018:ffffaef8c0fc79f0 EFLAGS: 00010286
[    3.867380] RAX: 0000000000000028 RBX: 0000000000000000 RCX: 0000000000000027
[    3.867382] RDX: ffff9ccc0dda0928 RSI: 0000000000000001 RDI: ffff9ccc0dda0920
[    3.867384] RBP: ffffaef8c0fc7a80 R08: 0000000000000000 R09: ffffaef8c0fc7820
[    3.867386] R10: 0000000000000003 R11: ffff9ccc2a2fffe8 R12: 0000000000000002
[    3.867388] R13: ffff9cc990808058 R14: 0000000000000000 R15: ffff9cc98bfc0000
[    3.867390] FS:  00007fc4d830f580(0000) GS:ffff9ccc0dd80000(0000) knlGS:0000000000000000
[    3.867394] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    3.867396] CR2: 0000560a77031410 CR3: 000000010f522000 CR4: 0000000000750ee0
[    3.867398] PKRU: 55555554
[    3.867399] Call Trace:
[    3.867401]  <TASK>
[    3.867403]  ? smu_cmn_send_smc_msg_with_param+0x98/0x240 [amdgpu]
[    3.867533]  ? __mutex_lock+0x90/0x830
[    3.867535]  ? amdgpu_dpm_mode2_reset+0x37/0x60 [amdgpu]
[    3.867653]  ? smu_cmn_send_smc_msg_with_param+0x98/0x240 [amdgpu]
[    3.867758]  smu_cmn_send_smc_msg_with_param+0x98/0x240 [amdgpu]
[    3.867857]  smu_mode2_reset+0x2b/0x50 [amdgpu]
[    3.867953]  amdgpu_dpm_mode2_reset+0x46/0x60 [amdgpu]
[    3.868096]  amdgpu_device_init.cold+0x1069/0x1e78 [amdgpu]
[    3.868219]  ? _raw_spin_unlock_irqrestore+0x30/0x50
[    3.868222]  ? pci_conf1_read+0x9b/0xf0
[    3.868226]  amdgpu_driver_load_kms+0x15/0x110 [amdgpu]
[    3.868314]  amdgpu_pci_probe+0x1a9/0x3c0 [amdgpu]
[    3.868398]  local_pci_probe+0x41/0x80
[    3.868401]  pci_device_probe+0xab/0x200
[    3.868404]  really_probe+0x1a1/0x370
[    3.868407]  __driver_probe_device+0xfc/0x170
[    3.868410]  driver_probe_device+0x1f/0x90
[    3.868412]  __driver_attach+0xbf/0x1a0
[    3.868414]  ? __device_attach_driver+0xe0/0xe0
[    3.868416]  bus_for_each_dev+0x65/0x90
[    3.868419]  bus_add_driver+0x151/0x1f0
[    3.868421]  driver_register+0x89/0xd0
[    3.868423]  ? 0xffffffffc0bd4000
[    3.868425]  do_one_initcall+0x5d/0x300
[    3.868428]  ? do_init_module+0x22/0x240
[    3.868431]  ? rcu_read_lock_sched_held+0x3c/0x70
[    3.868434]  ? trace_kmalloc+0x30/0xe0
[    3.868437]  ? kmem_cache_alloc_trace+0x1e6/0x3a0
[    3.868440]  do_init_module+0x4a/0x240
[    3.868442]  __do_sys_finit_module+0x93/0xf0
[    3.868446]  do_syscall_64+0x5b/0x80
[    3.868449]  ? rcu_read_lock_sched_held+0x3c/0x70
[    3.868451]  ? lockdep_hardirqs_on_prepare+0xd9/0x180
[    3.868454]  ? do_syscall_64+0x67/0x80
[    3.868456]  ? do_syscall_64+0x67/0x80
[    3.868458]  ? do_syscall_64+0x67/0x80
[    3.868460]  ? do_syscall_64+0x67/0x80
[    3.868462]  entry_SYSCALL_64_after_hwframe+0x44/0xae
[    3.868465] RIP: 0033:0x7fc4d8ec1ced
[    3.868467] 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 fb 70 0e 00 f7 d8 64 89 01 48
[    3.868472] RSP: 002b:00007fff687ae6b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[    3.868475] RAX: ffffffffffffffda RBX: 0000560a76fbca60 RCX: 00007fc4d8ec1ced
[    3.868477] RDX: 0000000000000000 RSI: 00007fc4d902343c RDI: 0000000000000011
[    3.868479] RBP: 00007fc4d902343c R08: 0000000000000000 R09: 0000560a76fb59c0
[    3.868481] R10: 0000000000000011 R11: 0000000000000246 R12: 0000000000020000
[    3.868484] R13: 0000560a76f8bfd0 R14: 0000000000000000 R15: 0000560a76fc2d10
[    3.868487]  </TASK>
[    3.868489] irq event stamp: 120617
[    3.868490] hardirqs last  enabled at (120617): [<ffffffff9817169e>] __up_console_sem+0x5e/0x70
[    3.868494] hardirqs last disabled at (120616): [<ffffffff98171683>] __up_console_sem+0x43/0x70
[    3.868497] softirqs last  enabled at (119684): [<ffffffff980ee83a>] __irq_exit_rcu+0xca/0x100
[    3.868501] softirqs last disabled at (119679): [<ffffffff980ee83a>] __irq_exit_rcu+0xca/0x100
[    3.868504] ---[ end trace 0000000000000000 ]---

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2022-05-16 10:02:58 -04:00
..
amd drm/amdgpu: Move mutex_init(&smu->message_lock) to smu_early_init() 2022-05-16 10:02:58 -04:00
arm drm/connector: Fix typo in output format 2022-01-25 10:01:44 +01:00
armada drm/armada: Add support for the nomodeset kernel parameter 2022-01-27 19:15:48 +01:00
aspeed drm/aspeed: Add AST2600 chip support 2022-03-03 09:08:35 +10:30
ast drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
atmel-hlcdc drm/atmel-hlcdc: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:46 +01:00
bridge drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
dp drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
etnaviv drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
exynos drm/exynos: fimd: add BGR support for exynos4/5 2022-03-04 17:13:52 +09:00
fsl-dcu drm/fsl-dcu: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:46 +01:00
gma500 drm/gma500: Add support for the nomodeset kernel parameter 2022-01-27 19:15:48 +01:00
gud dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
hisilicon drm/hisilicon/kirin: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:46 +01:00
hyperv drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
i2c
i810
i915 drm/i915/display: Do not re-enable PSR after it was marked as not reliable 2022-03-16 08:17:40 +02:00
imx Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
ingenic drm/ingenic: Fix support for JZ4780 HDMI output 2022-02-14 12:27:01 +00:00
kmb drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
lib drm/selftests: add drm buddy alloc range testcase 2022-02-23 10:44:43 +01:00
lima drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
mcde drm/mcde: Add support for the nomodeset kernel parameter 2022-01-27 19:15:49 +01:00
mediatek Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
meson drm/meson: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:46 +01:00
mga drm/mga/mga_ioc32: Use struct_group() for memcpy() region 2021-09-25 08:20:48 -07:00
mgag200 drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
msm Merge tag 'drm-msm-next-2022-03-08' of https://gitlab.freedesktop.org/drm/msm into drm-next 2022-03-10 09:26:50 +10:00
mxsfb drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
nouveau drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
omapdrm drm/omap: plane: Remove redundant color encoding and range initialisation 2022-02-25 17:57:23 +01:00
panel drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
panfrost drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
pl111 drm: Remove CONFIG_DRM_KMS_CMA_HELPER option 2021-11-30 11:10:03 +01:00
qxl drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
r128 Linux 5.15-rc7 2021-10-28 14:59:38 +10:00
radeon gpu/drm/radeon: Fix spelling typo in comments 2022-05-04 09:53:30 -04:00
rcar-du drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
rockchip drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
savage
scheduler drm/sched: Add device pointer to drm_gpu_scheduler 2022-02-23 10:04:14 +01:00
selftests drm/selftests: add drm buddy pathological testcase 2022-02-23 10:46:32 +01:00
shmobile drm/shmobile: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:47 +01:00
sis
solomon drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
sprd drm/sprd: check the platform_get_resource() return value 2022-02-14 21:53:17 +08:00
sti drm/sti: plane: Remove redundant zpos initialisation 2022-02-25 17:57:05 +01:00
stm drm/stm: ltdc: add support for CRC hashing feature 2022-02-25 14:14:28 +01:00
sun4i drm/sun4i: layer: Remove redundant zpos initialisation 2022-02-25 17:57:10 +01:00
tdfx
tegra drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
tidss drm/tidss: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:47 +01:00
tilcdc drm/tilcdc: Add support for the nomodeset kernel parameter 2022-01-27 19:15:50 +01:00
tiny drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
ttm drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
tve200 drm/tve200: Use drm_module_platform_driver() to register the driver 2022-01-27 19:15:48 +01:00
udl dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
v3d drm/v3d: centralize error handling when init scheduler fails 2022-03-01 22:37:13 -01:00
vboxvideo drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
vc4 Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
vgem drm: Return error codes from struct drm_driver.gem_create_object 2021-12-02 11:12:39 +01:00
via
virtio drm/gem-shmem: Set vm_ops in static initializer 2022-02-14 09:42:01 +01:00
vkms Merge tag 'drm-intel-gt-next-2022-02-17' of git://anongit.freedesktop.org/drm/drm-intel into drm-intel-next 2022-02-23 15:03:51 -05:00
vmwgfx Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2022-02-07 17:03:24 +01:00
xen drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
xlnx Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2022-02-07 17:03:24 +01:00
drm_agpsupport.c
drm_aperture.c
drm_atomic_helper.c drm: fix error found in some cases after the patch d1af5cd86997 2022-01-14 14:31:54 +01:00
drm_atomic_state_helper.c drm/object: Add default color encoding and range value at reset 2022-02-25 17:57:14 +01:00
drm_atomic_uapi.c drm/atomic: Don't pollute crtc_state->mode_blob with error pointers 2022-02-16 12:32:07 +02:00
drm_atomic.c Merge drm/drm-fixes into drm-misc-fixes 2022-01-26 09:40:24 +01:00
drm_auth.c drm: get rid of DRM_DEBUG_* log calls in drm core, files drm_a*.c 2021-11-26 16:45:22 +01:00
drm_blend.c
drm_bridge_connector.c drm: Plumb debugfs_init through to panels 2022-02-15 15:25:18 -08:00
drm_bridge.c drm/bridge: Document the probe issue with MIPI-DSI bridges 2021-09-24 19:25:23 +02:00
drm_buddy.c drm/selftests: add drm buddy alloc range testcase 2022-02-23 10:44:43 +01:00
drm_bufs.c
drm_cache.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_client_modeset.c drm: Convert open-coded yes/no strings to yesno() 2022-02-07 13:04:25 -08:00
drm_client.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_color_mgmt.c drm/docs: Document where the C8 color lut is stored 2022-01-25 09:36:20 +01:00
drm_connector.c drm/connector: use drm_sysfs_connector_hotplug_event 2021-11-02 14:27:11 +01:00
drm_context.c
drm_crtc_helper_internal.h drm/dp: Move DP declarations into separate header file 2022-01-17 11:25:44 +01:00
drm_crtc_helper.c Revert "drm: cleanup: drm_modeset_lock_all() --> DRM_MODESET_LOCK_ALL_BEGIN()" 2021-10-04 09:34:57 -04:00
drm_crtc_internal.h
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c
drm_debugfs.c drm: Plumb debugfs_init through to panels 2022-02-15 15:25:18 -08:00
drm_displayid.c
drm_dma.c
drm_drv.c drm: fix null-ptr-deref in drm_dev_init_release() 2021-10-14 21:39:02 +02:00
drm_dsc.c drm/dp: Move public DisplayPort headers into dp/ 2022-01-17 11:25:44 +01:00
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_file.c
drm_flip_work.c
drm_format_helper.c drm/format-helper: Add drm_fb_xrgb8888_to_mono_reversed() 2022-02-16 13:29:04 +01:00
drm_fourcc.c drm/fourcc: Add packed 10bit YUV 4:2:0 format 2021-12-16 11:23:22 +01:00
drm_framebuffer.c drm: introduce fb_modifiers_not_supported flag in mode_config 2022-01-31 21:45:23 +01:00
drm_gem_atomic_helper.c drm: use new iterator in drm_gem_plane_helper_prepare_fb v3 2021-10-25 09:33:22 +02:00
drm_gem_cma_helper.c Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
drm_gem_framebuffer_helper.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_gem_shmem_helper.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_gem_ttm_helper.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_gem_vram_helper.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_gem.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_hashtab.c drm: Declare hashtable as legacy 2021-11-30 09:41:28 +01:00
drm_hdcp.c
drm_internal.h dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_ioc32.c
drm_ioctl.c drm: introduce fb_modifiers_not_supported flag in mode_config 2022-01-31 21:45:23 +01:00
drm_irq.c drm: Build drm_irq.o only if CONFIG_DRM_LEGACY has been set 2021-10-22 16:20:12 +02:00
drm_kms_helper_common.c drm/dp: Move DisplayPort helpers into separate helper module 2022-01-17 11:25:44 +01:00
drm_lease.c drm/lease: allow empty leases 2021-10-01 15:55:47 +02:00
drm_legacy_misc.c
drm_legacy.h drm: Declare hashtable as legacy 2021-11-30 09:41:28 +01:00
drm_lock.c
drm_managed.c
drm_memory.c
drm_mipi_dbi.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_mipi_dsi.c drm/mipi-dsi: Create devm device attachment 2021-09-24 19:25:33 +02:00
drm_mm.c lib/stackdepot: allow optional init and stack_table allocation by kvmalloc() 2022-01-22 08:33:37 +02:00
drm_mode_config.c
drm_mode_object.c drm/object: Add drm_object_property_get_default_value() function 2022-02-25 17:55:42 +01:00
drm_modes.c drm/modes: Add of_get_drm_panel_display_mode() 2022-02-28 10:29:33 +01:00
drm_modeset_helper.c
drm_modeset_lock.c lib/stackdepot: allow optional init and stack_table allocation by kvmalloc() 2022-01-22 08:33:37 +02:00
drm_nomodeset.c drm: Fix build error caused by missing drm_nomodeset.o 2021-11-27 21:05:58 +01:00
drm_of.c drm: of: Lookup if child node has panel or bridge 2022-02-25 17:08:37 +01:00
drm_panel_orientation_quirks.c Merge drm/drm-next into drm-intel-next 2022-01-31 13:19:33 -05:00
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/plane-helper: fix uninitialized variable reference 2021-10-07 12:24:44 +02:00
drm_plane.c drm: add support modifiers for drivers whose planes only support linear layout 2022-01-31 21:45:24 +01:00
drm_prime.c dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
drm_print.c
drm_privacy_screen_x86.c drm-misc-next for v5.18: 2022-02-01 19:02:41 +10:00
drm_privacy_screen.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_probe_helper.c drm/probe-helper: use drm_kms_helper_connector_hotplug_event 2021-11-02 14:27:14 +01:00
drm_property.c drm: property: Replace strncpy() with strscpy_pad() 2021-10-07 05:42:13 +03:00
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c drm/syncobj: flatten dma_fence_chains on transfer 2022-02-11 11:30:01 +01:00
drm_sysfs.c drm/sysfs: introduce drm_sysfs_connector_hotplug_event 2021-11-02 14:27:06 +01:00
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c
drm_vm.c
drm_vma_manager.c
drm_writeback.c
Kconfig drm/selftests: Move i915 buddy selftests into drm 2022-02-23 10:43:25 +01:00
Makefile drm: Add driver for Solomon SSD130x OLED displays 2022-02-16 13:29:04 +01:00