An error occurred fetching the project authors.
  1. 20 Mar, 2024 2 commits
  2. 04 Mar, 2024 2 commits
  3. 01 Mar, 2024 2 commits
  4. 27 Feb, 2024 1 commit
  5. 22 Feb, 2024 7 commits
    • Melissa Wen's avatar
      drm/amd/display: fix null-pointer dereference on edid reading · 96717617
      Melissa Wen authored
      Use i2c adapter when there isn't aux_mode in dc_link to fix a
      null-pointer derefence that happens when running
      igt@kms_force_connector_basic in a system with DCN2.1 and HDMI connector
      detected as below:
      
      [  +0.178146] BUG: kernel NULL pointer dereference, address: 00000000000004c0
      [  +0.000010] #PF: supervisor read access in kernel mode
      [  +0.000005] #PF: error_code(0x0000) - not-present page
      [  +0.000004] PGD 0 P4D 0
      [  +0.000006] Oops: 0000 [#1] PREEMPT SMP NOPTI
      [  +0.000006] CPU: 15 PID: 2368 Comm: kms_force_conne Not tainted 6.5.0-asdn+ #152
      [  +0.000005] Hardware name: HP HP ENVY x360 Convertible 13-ay1xxx/8929, BIOS F.01 07/14/2021
      [  +0.000004] RIP: 0010:i2c_transfer+0xd/0x100
      [  +0.000011] Code: ea fc ff ff 66 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 41 54 55 53 <48> 8b 47 10 48 89 fb 48 83 38 00 0f 84 b3 00 00 00 83 3d 2f 80 16
      [  +0.000004] RSP: 0018:ffff9c4f89c0fad0 EFLAGS: 00010246
      [  +0.000005] RAX: 0000000000000000 RBX: 0000000000000005 RCX: 0000000000000080
      [  +0.000003] RDX: 0000000000000002 RSI: ffff9c4f89c0fb20 RDI: 00000000000004b0
      [  +0.000003] RBP: ffff9c4f89c0fb80 R08: 0000000000000080 R09: ffff8d8e0b15b980
      [  +0.000003] R10: 00000000000380e0 R11: 0000000000000000 R12: 0000000000000080
      [  +0.000002] R13: 0000000000000002 R14: ffff9c4f89c0fb0e R15: ffff9c4f89c0fb0f
      [  +0.000004] FS:  00007f9ad2176c40(0000) GS:ffff8d90fe9c0000(0000) knlGS:0000000000000000
      [  +0.000003] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  +0.000004] CR2: 00000000000004c0 CR3: 0000000121bc4000 CR4: 0000000000750ee0
      [  +0.000003] PKRU: 55555554
      [  +0.000003] Call Trace:
      [  +0.000006]  <TASK>
      [  +0.000006]  ? __die+0x23/0x70
      [  +0.000011]  ? page_fault_oops+0x17d/0x4c0
      [  +0.000008]  ? preempt_count_add+0x6e/0xa0
      [  +0.000008]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000011]  ? exc_page_fault+0x7f/0x180
      [  +0.000009]  ? asm_exc_page_fault+0x26/0x30
      [  +0.000013]  ? i2c_transfer+0xd/0x100
      [  +0.000010]  drm_do_probe_ddc_edid+0xc2/0x140 [drm]
      [  +0.000067]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000006]  ? _drm_do_get_edid+0x97/0x3c0 [drm]
      [  +0.000043]  ? __pfx_drm_do_probe_ddc_edid+0x10/0x10 [drm]
      [  +0.000042]  edid_block_read+0x3b/0xd0 [drm]
      [  +0.000043]  _drm_do_get_edid+0xb6/0x3c0 [drm]
      [  +0.000041]  ? __pfx_drm_do_probe_ddc_edid+0x10/0x10 [drm]
      [  +0.000043]  drm_edid_read_custom+0x37/0xd0 [drm]
      [  +0.000044]  amdgpu_dm_connector_mode_valid+0x129/0x1d0 [amdgpu]
      [  +0.000153]  drm_connector_mode_valid+0x3b/0x60 [drm_kms_helper]
      [  +0.000000]  __drm_helper_update_and_validate+0xfe/0x3c0 [drm_kms_helper]
      [  +0.000000]  ? amdgpu_dm_connector_get_modes+0xb6/0x520 [amdgpu]
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  drm_helper_probe_single_connector_modes+0x2ab/0x540 [drm_kms_helper]
      [  +0.000000]  status_store+0xb2/0x1f0 [drm]
      [  +0.000000]  kernfs_fop_write_iter+0x136/0x1d0
      [  +0.000000]  vfs_write+0x24d/0x440
      [  +0.000000]  ksys_write+0x6f/0xf0
      [  +0.000000]  do_syscall_64+0x60/0xc0
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  ? syscall_exit_to_user_mode+0x2b/0x40
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  ? do_syscall_64+0x6c/0xc0
      [  +0.000000]  ? do_syscall_64+0x6c/0xc0
      [  +0.000000]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      [  +0.000000] RIP: 0033:0x7f9ad46b4b00
      [  +0.000000] Code: 40 00 48 8b 15 19 b3 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 80 3d e1 3a 0e 00 00 74 17 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 48 89
      [  +0.000000] RSP: 002b:00007ffcbd3bd6d8 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
      [  +0.000000] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f9ad46b4b00
      [  +0.000000] RDX: 0000000000000002 RSI: 00007f9ad48a7417 RDI: 0000000000000009
      [  +0.000000] RBP: 0000000000000002 R08: 0000000000000064 R09: 0000000000000000
      [  +0.000000] R10: 0000000000000000 R11: 0000000000000202 R12: 00007f9ad48a7417
      [  +0.000000] R13: 0000000000000009 R14: 00007ffcbd3bd760 R15: 0000000000000001
      [  +0.000000]  </TASK>
      [  +0.000000] Modules linked in: ctr ccm rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device cmac algif_hash algif_skcipher af_alg bnep btusb btrtl btbcm btintel btmtk bluetooth uvcvideo videobuf2_vmalloc sha3_generic videobuf2_memops uvc jitterentropy_rng videobuf2_v4l2 videodev drbg videobuf2_common ansi_cprng mc ecdh_generic ecc qrtr binfmt_misc hid_sensor_accel_3d hid_sensor_magn_3d hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf industrialio snd_ctl_led joydev hid_sensor_iio_common rtw89_8852ae rtw89_8852a rtw89_pci snd_hda_codec_realtek rtw89_core snd_hda_codec_generic intel_rapl_msr ledtrig_audio intel_rapl_common snd_hda_codec_hdmi mac80211 snd_hda_intel snd_intel_dspcfg kvm_amd snd_hda_codec snd_soc_dmic snd_acp3x_rn snd_acp3x_pdm_dma libarc4 snd_hwdep snd_soc_core kvm snd_hda_core cfg80211 snd_pci_acp6x snd_pcm nls_ascii snd_timer hp_wmi snd_pci_acp5x nls_cp437 snd_rn_pci_acp3x ucsi_acpi sparse_keymap ccp snd platform_profile snd_acp_config typec_ucsi irqbypass vfat sp5100_tco
      [  +0.000000]  snd_soc_acpi fat rapl pcspkr wmi_bmof roles rfkill rng_core snd_pci_acp3x soundcore k10temp watchdog typec battery ac amd_pmc acpi_tad button hid_sensor_hub hid_multitouch evdev serio_raw msr parport_pc ppdev lp parport fuse loop efi_pstore configfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 btrfs blake2b_generic dm_crypt dm_mod efivarfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx libcrc32c crc32c_generic xor raid6_pq raid1 raid0 multipath linear md_mod amdgpu amdxcp i2c_algo_bit drm_ttm_helper ttm crc32_pclmul crc32c_intel drm_exec gpu_sched drm_suballoc_helper nvme ghash_clmulni_intel drm_buddy drm_display_helper sha512_ssse3 nvme_core ahci xhci_pci sha512_generic hid_generic xhci_hcd libahci rtsx_pci_sdmmc t10_pi i2c_hid_acpi drm_kms_helper i2c_hid mmc_core libata aesni_intel crc64_rocksoft_generic crypto_simd amd_sfh crc64_rocksoft scsi_mod usbcore cryptd crc_t10dif cec drm crct10dif_generic hid rtsx_pci crct10dif_pclmul scsi_common rc_core crc64 i2c_piix4
      [  +0.000000]  usb_common crct10dif_common video wmi
      [  +0.000000] CR2: 00000000000004c0
      [  +0.000000] ---[ end trace 0000000000000000 ]---
      
      Fixes: 0e859faf ("drm/amd/display: Remove unwanted drm edid references")
      Signed-off-by: default avatarMelissa Wen <mwen@igalia.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      96717617
    • Armin Wolf's avatar
      drm/amd/display: Fix memory leak in dm_sw_fini() · bae67893
      Armin Wolf authored
      After destroying dmub_srv, the memory associated with it is
      not freed, causing a memory leak:
      
      unreferenced object 0xffff896302b45800 (size 1024):
        comm "(udev-worker)", pid 222, jiffies 4294894636
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace (crc 6265fd77):
          [<ffffffff993495ed>] kmalloc_trace+0x29d/0x340
          [<ffffffffc0ea4a94>] dm_dmub_sw_init+0xb4/0x450 [amdgpu]
          [<ffffffffc0ea4e55>] dm_sw_init+0x15/0x2b0 [amdgpu]
          [<ffffffffc0ba8557>] amdgpu_device_init+0x1417/0x24e0 [amdgpu]
          [<ffffffffc0bab285>] amdgpu_driver_load_kms+0x15/0x190 [amdgpu]
          [<ffffffffc0ba09c7>] amdgpu_pci_probe+0x187/0x4e0 [amdgpu]
          [<ffffffff9968fd1e>] local_pci_probe+0x3e/0x90
          [<ffffffff996918a3>] pci_device_probe+0xc3/0x230
          [<ffffffff99805872>] really_probe+0xe2/0x480
          [<ffffffff99805c98>] __driver_probe_device+0x78/0x160
          [<ffffffff99805daf>] driver_probe_device+0x1f/0x90
          [<ffffffff9980601e>] __driver_attach+0xce/0x1c0
          [<ffffffff99803170>] bus_for_each_dev+0x70/0xc0
          [<ffffffff99804822>] bus_add_driver+0x112/0x210
          [<ffffffff99807245>] driver_register+0x55/0x100
          [<ffffffff990012d1>] do_one_initcall+0x41/0x300
      
      Fix this by freeing dmub_srv after destroying it.
      
      Fixes: 743b9786 ("drm/amd/display: Hook up the DMUB service in DM")
      Signed-off-by: default avatarArmin Wolf <W_Armin@gmx.de>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      bae67893
    • Wayne Lin's avatar
      drm/amd/display: adjust few initialization order in dm · 22e1dc4b
      Wayne Lin authored
      [Why]
      Observe error message "Can't retrieve aconnector in hpd_rx_irq_offload_work"
      when boot up with a mst tbt4 dock connected. After analyzing, there are few
      parts needed to be adjusted:
      
      1. hpd_rx_offload_wq[].aconnector is not initialzed before the dmub outbox
      hpd_irq handler get registered which causes the error message.
      
      2. registeration of hpd and hpd_rx_irq event for usb4 dp tunneling is not
      aligned with legacy interface sequence
      
      [How]
      Put DMUB_NOTIFICATION_HPD and DMUB_NOTIFICATION_HPD_IRQ handler
      registration into register_hpd_handlers() to align other interfaces and
      get hpd_rx_offload_wq[].aconnector initialized earlier than that.
      
      Leave DMUB_NOTIFICATION_AUX_REPLY registered as it was since we need that
      while calling dc_link_detect(). USB4 connection status will be proactively
      detected by dc_link_detect_connection_type() in amdgpu_dm_initialize_drm_device()
      
      Cc: Stable <stable@vger.kernel.org>
      Reviewed-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
      Acked-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      22e1dc4b
    • Melissa Wen's avatar
      drm/amd/display: fix null-pointer dereference on edid reading · 21db6199
      Melissa Wen authored
      Use i2c adapter when there isn't aux_mode in dc_link to fix a
      null-pointer derefence that happens when running
      igt@kms_force_connector_basic in a system with DCN2.1 and HDMI connector
      detected as below:
      
      [  +0.178146] BUG: kernel NULL pointer dereference, address: 00000000000004c0
      [  +0.000010] #PF: supervisor read access in kernel mode
      [  +0.000005] #PF: error_code(0x0000) - not-present page
      [  +0.000004] PGD 0 P4D 0
      [  +0.000006] Oops: 0000 [#1] PREEMPT SMP NOPTI
      [  +0.000006] CPU: 15 PID: 2368 Comm: kms_force_conne Not tainted 6.5.0-asdn+ #152
      [  +0.000005] Hardware name: HP HP ENVY x360 Convertible 13-ay1xxx/8929, BIOS F.01 07/14/2021
      [  +0.000004] RIP: 0010:i2c_transfer+0xd/0x100
      [  +0.000011] Code: ea fc ff ff 66 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 41 54 55 53 <48> 8b 47 10 48 89 fb 48 83 38 00 0f 84 b3 00 00 00 83 3d 2f 80 16
      [  +0.000004] RSP: 0018:ffff9c4f89c0fad0 EFLAGS: 00010246
      [  +0.000005] RAX: 0000000000000000 RBX: 0000000000000005 RCX: 0000000000000080
      [  +0.000003] RDX: 0000000000000002 RSI: ffff9c4f89c0fb20 RDI: 00000000000004b0
      [  +0.000003] RBP: ffff9c4f89c0fb80 R08: 0000000000000080 R09: ffff8d8e0b15b980
      [  +0.000003] R10: 00000000000380e0 R11: 0000000000000000 R12: 0000000000000080
      [  +0.000002] R13: 0000000000000002 R14: ffff9c4f89c0fb0e R15: ffff9c4f89c0fb0f
      [  +0.000004] FS:  00007f9ad2176c40(0000) GS:ffff8d90fe9c0000(0000) knlGS:0000000000000000
      [  +0.000003] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  +0.000004] CR2: 00000000000004c0 CR3: 0000000121bc4000 CR4: 0000000000750ee0
      [  +0.000003] PKRU: 55555554
      [  +0.000003] Call Trace:
      [  +0.000006]  <TASK>
      [  +0.000006]  ? __die+0x23/0x70
      [  +0.000011]  ? page_fault_oops+0x17d/0x4c0
      [  +0.000008]  ? preempt_count_add+0x6e/0xa0
      [  +0.000008]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000011]  ? exc_page_fault+0x7f/0x180
      [  +0.000009]  ? asm_exc_page_fault+0x26/0x30
      [  +0.000013]  ? i2c_transfer+0xd/0x100
      [  +0.000010]  drm_do_probe_ddc_edid+0xc2/0x140 [drm]
      [  +0.000067]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000006]  ? _drm_do_get_edid+0x97/0x3c0 [drm]
      [  +0.000043]  ? __pfx_drm_do_probe_ddc_edid+0x10/0x10 [drm]
      [  +0.000042]  edid_block_read+0x3b/0xd0 [drm]
      [  +0.000043]  _drm_do_get_edid+0xb6/0x3c0 [drm]
      [  +0.000041]  ? __pfx_drm_do_probe_ddc_edid+0x10/0x10 [drm]
      [  +0.000043]  drm_edid_read_custom+0x37/0xd0 [drm]
      [  +0.000044]  amdgpu_dm_connector_mode_valid+0x129/0x1d0 [amdgpu]
      [  +0.000153]  drm_connector_mode_valid+0x3b/0x60 [drm_kms_helper]
      [  +0.000000]  __drm_helper_update_and_validate+0xfe/0x3c0 [drm_kms_helper]
      [  +0.000000]  ? amdgpu_dm_connector_get_modes+0xb6/0x520 [amdgpu]
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  drm_helper_probe_single_connector_modes+0x2ab/0x540 [drm_kms_helper]
      [  +0.000000]  status_store+0xb2/0x1f0 [drm]
      [  +0.000000]  kernfs_fop_write_iter+0x136/0x1d0
      [  +0.000000]  vfs_write+0x24d/0x440
      [  +0.000000]  ksys_write+0x6f/0xf0
      [  +0.000000]  do_syscall_64+0x60/0xc0
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  ? syscall_exit_to_user_mode+0x2b/0x40
      [  +0.000000]  ? srso_alias_return_thunk+0x5/0x7f
      [  +0.000000]  ? do_syscall_64+0x6c/0xc0
      [  +0.000000]  ? do_syscall_64+0x6c/0xc0
      [  +0.000000]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      [  +0.000000] RIP: 0033:0x7f9ad46b4b00
      [  +0.000000] Code: 40 00 48 8b 15 19 b3 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 80 3d e1 3a 0e 00 00 74 17 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 48 89
      [  +0.000000] RSP: 002b:00007ffcbd3bd6d8 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
      [  +0.000000] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f9ad46b4b00
      [  +0.000000] RDX: 0000000000000002 RSI: 00007f9ad48a7417 RDI: 0000000000000009
      [  +0.000000] RBP: 0000000000000002 R08: 0000000000000064 R09: 0000000000000000
      [  +0.000000] R10: 0000000000000000 R11: 0000000000000202 R12: 00007f9ad48a7417
      [  +0.000000] R13: 0000000000000009 R14: 00007ffcbd3bd760 R15: 0000000000000001
      [  +0.000000]  </TASK>
      [  +0.000000] Modules linked in: ctr ccm rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device cmac algif_hash algif_skcipher af_alg bnep btusb btrtl btbcm btintel btmtk bluetooth uvcvideo videobuf2_vmalloc sha3_generic videobuf2_memops uvc jitterentropy_rng videobuf2_v4l2 videodev drbg videobuf2_common ansi_cprng mc ecdh_generic ecc qrtr binfmt_misc hid_sensor_accel_3d hid_sensor_magn_3d hid_sensor_gyro_3d hid_sensor_trigger industrialio_triggered_buffer kfifo_buf industrialio snd_ctl_led joydev hid_sensor_iio_common rtw89_8852ae rtw89_8852a rtw89_pci snd_hda_codec_realtek rtw89_core snd_hda_codec_generic intel_rapl_msr ledtrig_audio intel_rapl_common snd_hda_codec_hdmi mac80211 snd_hda_intel snd_intel_dspcfg kvm_amd snd_hda_codec snd_soc_dmic snd_acp3x_rn snd_acp3x_pdm_dma libarc4 snd_hwdep snd_soc_core kvm snd_hda_core cfg80211 snd_pci_acp6x snd_pcm nls_ascii snd_timer hp_wmi snd_pci_acp5x nls_cp437 snd_rn_pci_acp3x ucsi_acpi sparse_keymap ccp snd platform_profile snd_acp_config typec_ucsi irqbypass vfat sp5100_tco
      [  +0.000000]  snd_soc_acpi fat rapl pcspkr wmi_bmof roles rfkill rng_core snd_pci_acp3x soundcore k10temp watchdog typec battery ac amd_pmc acpi_tad button hid_sensor_hub hid_multitouch evdev serio_raw msr parport_pc ppdev lp parport fuse loop efi_pstore configfs ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2 btrfs blake2b_generic dm_crypt dm_mod efivarfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx libcrc32c crc32c_generic xor raid6_pq raid1 raid0 multipath linear md_mod amdgpu amdxcp i2c_algo_bit drm_ttm_helper ttm crc32_pclmul crc32c_intel drm_exec gpu_sched drm_suballoc_helper nvme ghash_clmulni_intel drm_buddy drm_display_helper sha512_ssse3 nvme_core ahci xhci_pci sha512_generic hid_generic xhci_hcd libahci rtsx_pci_sdmmc t10_pi i2c_hid_acpi drm_kms_helper i2c_hid mmc_core libata aesni_intel crc64_rocksoft_generic crypto_simd amd_sfh crc64_rocksoft scsi_mod usbcore cryptd crc_t10dif cec drm crct10dif_generic hid rtsx_pci crct10dif_pclmul scsi_common rc_core crc64 i2c_piix4
      [  +0.000000]  usb_common crct10dif_common video wmi
      [  +0.000000] CR2: 00000000000004c0
      [  +0.000000] ---[ end trace 0000000000000000 ]---
      
      Fixes: 0e859faf ("drm/amd/display: Remove unwanted drm edid references")
      Signed-off-by: default avatarMelissa Wen <mwen@igalia.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      21db6199
    • Srinivasan Shanmugam's avatar
      drm/amdgpu/display: Address kdoc for 'is_psr_su' in 'fill_dc_dirty_rects' · 3651306a
      Srinivasan Shanmugam authored
      The is_psr_su parameter is a boolean flag indicating whether the Panel
      Self Refresh Selective Update (PSR SU) feature is enabled which is a
      power-saving feature that allows only the updated regions of the screen
      to be refreshed, reducing the amount of data that needs to be sent to
      the display.
      
      Fixes the below with gcc W=1:
      drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5257: warning: Function parameter or member 'is_psr_su' not described in 'fill_dc_dirty_rects'
      
      Fixes: d16df040 ("drm/amdgpu: make damage clips support configurable")
      Cc: stable@vger.kernel.org
      Cc: Hamza Mahfooz <hamza.mahfooz@amd.com>
      Cc: Mario Limonciello <mario.limonciello@amd.com>
      Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
      Signed-off-by: default avatarSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
      Reviewed-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      3651306a
    • Armin Wolf's avatar
      drm/amd/display: Fix memory leak in dm_sw_fini() · 145242ed
      Armin Wolf authored
      After destroying dmub_srv, the memory associated with it is
      not freed, causing a memory leak:
      
      unreferenced object 0xffff896302b45800 (size 1024):
        comm "(udev-worker)", pid 222, jiffies 4294894636
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace (crc 6265fd77):
          [<ffffffff993495ed>] kmalloc_trace+0x29d/0x340
          [<ffffffffc0ea4a94>] dm_dmub_sw_init+0xb4/0x450 [amdgpu]
          [<ffffffffc0ea4e55>] dm_sw_init+0x15/0x2b0 [amdgpu]
          [<ffffffffc0ba8557>] amdgpu_device_init+0x1417/0x24e0 [amdgpu]
          [<ffffffffc0bab285>] amdgpu_driver_load_kms+0x15/0x190 [amdgpu]
          [<ffffffffc0ba09c7>] amdgpu_pci_probe+0x187/0x4e0 [amdgpu]
          [<ffffffff9968fd1e>] local_pci_probe+0x3e/0x90
          [<ffffffff996918a3>] pci_device_probe+0xc3/0x230
          [<ffffffff99805872>] really_probe+0xe2/0x480
          [<ffffffff99805c98>] __driver_probe_device+0x78/0x160
          [<ffffffff99805daf>] driver_probe_device+0x1f/0x90
          [<ffffffff9980601e>] __driver_attach+0xce/0x1c0
          [<ffffffff99803170>] bus_for_each_dev+0x70/0xc0
          [<ffffffff99804822>] bus_add_driver+0x112/0x210
          [<ffffffff99807245>] driver_register+0x55/0x100
          [<ffffffff990012d1>] do_one_initcall+0x41/0x300
      
      Fix this by freeing dmub_srv after destroying it.
      
      Fixes: 743b9786 ("drm/amd/display: Hook up the DMUB service in DM")
      Signed-off-by: default avatarArmin Wolf <W_Armin@gmx.de>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      145242ed
    • Wayne Lin's avatar
      drm/amd/display: adjust few initialization order in dm · c9aef4f6
      Wayne Lin authored
      [Why]
      Observe error message "Can't retrieve aconnector in hpd_rx_irq_offload_work"
      when boot up with a mst tbt4 dock connected. After analyzing, there are few
      parts needed to be adjusted:
      
      1. hpd_rx_offload_wq[].aconnector is not initialzed before the dmub outbox
      hpd_irq handler get registered which causes the error message.
      
      2. registeration of hpd and hpd_rx_irq event for usb4 dp tunneling is not
      aligned with legacy interface sequence
      
      [How]
      Put DMUB_NOTIFICATION_HPD and DMUB_NOTIFICATION_HPD_IRQ handler
      registration into register_hpd_handlers() to align other interfaces and
      get hpd_rx_offload_wq[].aconnector initialized earlier than that.
      
      Leave DMUB_NOTIFICATION_AUX_REPLY registered as it was since we need that
      while calling dc_link_detect(). USB4 connection status will be proactively
      detected by dc_link_detect_connection_type() in amdgpu_dm_initialize_drm_device()
      
      Cc: Stable <stable@vger.kernel.org>
      Reviewed-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
      Acked-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      c9aef4f6
  6. 15 Feb, 2024 3 commits
  7. 14 Feb, 2024 3 commits
  8. 12 Feb, 2024 3 commits
  9. 07 Feb, 2024 3 commits
    • Fangzhi Zuo's avatar
      drm/amd/display: Fix MST Null Ptr for RV · e6a7df96
      Fangzhi Zuo authored
      The change try to fix below error specific to RV platform:
      
      BUG: kernel NULL pointer dereference, address: 0000000000000008
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 4 PID: 917 Comm: sway Not tainted 6.3.9-arch1-1 #1 124dc55df4f5272ccb409f39ef4872fc2b3376a2
      Hardware name: LENOVO 20NKS01Y00/20NKS01Y00, BIOS R12ET61W(1.31 ) 07/28/2022
      RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
      Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
      RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
      RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
      RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
      R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
      R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
      FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
      Call Trace:
       <TASK>
       ? __die+0x23/0x70
       ? page_fault_oops+0x171/0x4e0
       ? plist_add+0xbe/0x100
       ? exc_page_fault+0x7c/0x180
       ? asm_exc_page_fault+0x26/0x30
       ? drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
       ? drm_dp_atomic_find_time_slots+0x28/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
       compute_mst_dsc_configs_for_link+0x2ff/0xa40 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       ? fill_plane_buffer_attributes+0x419/0x510 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       compute_mst_dsc_configs_for_state+0x1e1/0x250 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       amdgpu_dm_atomic_check+0xecd/0x1190 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       drm_atomic_check_only+0x5c5/0xa40
       drm_mode_atomic_ioctl+0x76e/0xbc0
       ? _copy_to_user+0x25/0x30
       ? drm_ioctl+0x296/0x4b0
       ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
       drm_ioctl_kernel+0xcd/0x170
       drm_ioctl+0x26d/0x4b0
       ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
       amdgpu_drm_ioctl+0x4e/0x90 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       __x64_sys_ioctl+0x94/0xd0
       do_syscall_64+0x60/0x90
       ? do_syscall_64+0x6c/0x90
       entry_SYSCALL_64_after_hwframe+0x72/0xdc
      RIP: 0033:0x7f4dad17f76f
      Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c>
      RSP: 002b:00007ffd9ae859f0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 000055e255a55900 RCX: 00007f4dad17f76f
      RDX: 00007ffd9ae85a90 RSI: 00000000c03864bc RDI: 000000000000000b
      RBP: 00007ffd9ae85a90 R08: 0000000000000003 R09: 0000000000000003
      R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c03864bc
      R13: 000000000000000b R14: 000055e255a7fc60 R15: 000055e255a01eb0
       </TASK>
      Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device ccm cmac algif_hash algif_skcipher af_alg joydev mousedev bnep >
       typec libphy k10temp ipmi_msghandler roles i2c_scmi acpi_cpufreq mac_hid nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_mas>
      CR2: 0000000000000008
      ---[ end trace 0000000000000000 ]---
      RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
      Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
      RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
      RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
      RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
      R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
      R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
      FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
      
      With a second DP monitor connected, drm_atomic_state in dm atomic check
      sequence does not include the connector state for the old/existing/first
      DP monitor. In such case, dsc determination policy would hit a null ptr
      when it tries to iterate the old/existing stream that does not have a
      valid connector state attached to it. When that happens, dm atomic check
      should call drm_atomic_get_connector_state for a new connector state.
      Existing dm has already done that, except for RV due to it does not have
      official support of dsc where .num_dsc is not defined in dcn10 resource
      cap, that prevent from getting drm_atomic_get_connector_state called.
      So, skip dsc determination policy for ASICs that don't have DSC support.
      
      Cc: stable@vger.kernel.org # 6.1+
      Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2314Reviewed-by: default avatarWayne Lin <wayne.lin@amd.com>
      Acked-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
      Signed-off-by: default avatarFangzhi Zuo <jerry.zuo@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      e6a7df96
    • Fangzhi Zuo's avatar
      drm/amd/display: Fix MST Null Ptr for RV · 1b5b72b4
      Fangzhi Zuo authored
      The change try to fix below error specific to RV platform:
      
      BUG: kernel NULL pointer dereference, address: 0000000000000008
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 4 PID: 917 Comm: sway Not tainted 6.3.9-arch1-1 #1 124dc55df4f5272ccb409f39ef4872fc2b3376a2
      Hardware name: LENOVO 20NKS01Y00/20NKS01Y00, BIOS R12ET61W(1.31 ) 07/28/2022
      RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
      Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
      RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
      RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
      RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
      R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
      R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
      FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
      Call Trace:
       <TASK>
       ? __die+0x23/0x70
       ? page_fault_oops+0x171/0x4e0
       ? plist_add+0xbe/0x100
       ? exc_page_fault+0x7c/0x180
       ? asm_exc_page_fault+0x26/0x30
       ? drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
       ? drm_dp_atomic_find_time_slots+0x28/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
       compute_mst_dsc_configs_for_link+0x2ff/0xa40 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       ? fill_plane_buffer_attributes+0x419/0x510 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       compute_mst_dsc_configs_for_state+0x1e1/0x250 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       amdgpu_dm_atomic_check+0xecd/0x1190 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       drm_atomic_check_only+0x5c5/0xa40
       drm_mode_atomic_ioctl+0x76e/0xbc0
       ? _copy_to_user+0x25/0x30
       ? drm_ioctl+0x296/0x4b0
       ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
       drm_ioctl_kernel+0xcd/0x170
       drm_ioctl+0x26d/0x4b0
       ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
       amdgpu_drm_ioctl+0x4e/0x90 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
       __x64_sys_ioctl+0x94/0xd0
       do_syscall_64+0x60/0x90
       ? do_syscall_64+0x6c/0x90
       entry_SYSCALL_64_after_hwframe+0x72/0xdc
      RIP: 0033:0x7f4dad17f76f
      Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c>
      RSP: 002b:00007ffd9ae859f0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 000055e255a55900 RCX: 00007f4dad17f76f
      RDX: 00007ffd9ae85a90 RSI: 00000000c03864bc RDI: 000000000000000b
      RBP: 00007ffd9ae85a90 R08: 0000000000000003 R09: 0000000000000003
      R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c03864bc
      R13: 000000000000000b R14: 000055e255a7fc60 R15: 000055e255a01eb0
       </TASK>
      Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device ccm cmac algif_hash algif_skcipher af_alg joydev mousedev bnep >
       typec libphy k10temp ipmi_msghandler roles i2c_scmi acpi_cpufreq mac_hid nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_mas>
      CR2: 0000000000000008
      ---[ end trace 0000000000000000 ]---
      RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
      Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
      RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
      RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
      RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
      R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
      R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
      FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
      
      With a second DP monitor connected, drm_atomic_state in dm atomic check
      sequence does not include the connector state for the old/existing/first
      DP monitor. In such case, dsc determination policy would hit a null ptr
      when it tries to iterate the old/existing stream that does not have a
      valid connector state attached to it. When that happens, dm atomic check
      should call drm_atomic_get_connector_state for a new connector state.
      Existing dm has already done that, except for RV due to it does not have
      official support of dsc where .num_dsc is not defined in dcn10 resource
      cap, that prevent from getting drm_atomic_get_connector_state called.
      So, skip dsc determination policy for ASICs that don't have DSC support.
      
      Cc: stable@vger.kernel.org # 6.1+
      Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2314Reviewed-by: default avatarWayne Lin <wayne.lin@amd.com>
      Acked-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
      Signed-off-by: default avatarFangzhi Zuo <jerry.zuo@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      1b5b72b4
    • Hamza Mahfooz's avatar
      drm/amd/display: add panel_power_savings sysfs entry to eDP connectors · 63d0b872
      Hamza Mahfooz authored
      We want programs besides the compositor to be able to enable or disable
      panel power saving features. However, since they are currently only
      configurable through DRM properties, that isn't possible. So, to remedy
      that issue introduce a new "panel_power_savings" sysfs attribute.
      
      v2: squash in fix from Hamza (Alex)
      
      Cc: Mario Limonciello <mario.limonciello@amd.com>
      Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Tested-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Signed-off-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      63d0b872
  10. 31 Jan, 2024 2 commits
  11. 29 Jan, 2024 1 commit
    • Hersen Wu's avatar
      drm/amd/display: add debugfs disallow edp psr · 13b3d6bd
      Hersen Wu authored
      [Why]
      fix reading edp rx crc timeout failure. after
      bootup, kernel setup psr with dpcd 0x170 = 5. this
      notify rx psr enable and let rx fw start checking crc
      for fw internal logic. rx fw may not update crc read
      count within dpcd 0x246. read count is always 0. this
      will lead tx crc reading timeout.
      
      [How]
      add debugfs to let test app to disbable rx crc
      checking for rx internal logic. then test app can read
      rx crc dpcd 0x246 successfully.
      expected app sequence is as below:
      1. disable eDP PHY and notify eDP rx with dpcd 0x600 = 2.
      2. echo 0x1 /sys/kernel/debug/dri/0/eDP-X/disallow_edp_enter_psr
      3. enable eDP PHY and notify eDP rx with dpcd 0x600 = 1 but
         without dpcd 0x170 = 5.
      4. read crc from rx dpcd 0x270, 0x246, etc.
      5. echo 0x0 /sys/kernel/debug/dri/0/eDP-X/disallow_edp_enter_psr.
         this will let eDP back to normal with psr setup dpcd 0x170 = 5.
      Reviewed-by: default avatarWayne Lin <wayne.lin@amd.com>
      Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarHersen Wu <hersenxs.wu@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      13b3d6bd
  12. 25 Jan, 2024 4 commits
  13. 22 Jan, 2024 2 commits
  14. 18 Jan, 2024 3 commits
  15. 15 Jan, 2024 2 commits