1. 05 Mar, 2024 2 commits
  2. 04 Mar, 2024 2 commits
  3. 28 Feb, 2024 3 commits
  4. 26 Feb, 2024 4 commits
  5. 23 Feb, 2024 7 commits
  6. 22 Feb, 2024 15 commits
    • Dave Airlie's avatar
      Merge tag 'drm-xe-fixes-2024-02-22' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes · 7c548869
      Dave Airlie authored
      UAPI Changes:
      - Remove support for persistent exec_queues
      - Drop a reduntant sysfs newline printout
      
      Cross-subsystem Changes:
      
      Core Changes:
      
      Driver Changes:
      - A three-patch fix for a VM_BIND rebind optimization path
      - Fix a modpost warning on an xe KUNIT module
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZdcsNrxdWMMM417v@fedora
      7c548869
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-6.8-2024-02-22' of... · bfc7746a
      Dave Airlie authored
      Merge tag 'amd-drm-fixes-6.8-2024-02-22' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-6.8-2024-02-22:
      
      amdgpu:
      - Suspend/resume fixes
      - Backlight error fix
      - DCN 3.5 fixes
      - Misc fixes
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240222195338.5809-1-alexander.deucher@amd.com
      bfc7746a
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2024-02-22' of... · 741922e7
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2024-02-22' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Fixup for TV mode
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZdcwT9kltvEgJZZE@jlahtine-mobl.ger.corp.intel.com
      741922e7
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2024-02-22' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · f581dbb3
      Dave Airlie authored
      A list handling fix and 64bit division on 32bit platform fix for the
      drm/buddy allocator, a cast warning and an initialization fix for
      nouveau, a bridge handling fix for meson, an initialisation fix for
      ivpu, a SPARC build fix for fbdev, a double-free fix for ttm, and two
      fence handling fixes for syncobj.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <mripard@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/gl2antuifidtzn3dfm426p7xwh5fxj23behagwh26owfnosh2w@gqoa7vj5prnh
      f581dbb3
    • Mikko Perttunen's avatar
      gpu: host1x: Skip reset assert on Tegra186 · 1fa8d07a
      Mikko Perttunen authored
      On Tegra186, secure world applications may need to access host1x
      during suspend/resume, and rely on the kernel to keep Host1x out
      of reset during the suspend cycle. As such, as a quirk,
      skip asserting Host1x's reset on Tegra186.
      
      We don't need to keep the clocks enabled, as BPMP ensures the clock
      stays on while Host1x is being used. On newer SoC's, the reset line
      is inaccessible, so there is no need for the quirk.
      
      Fixes: b7c00cdf ("gpu: host1x: Enable system suspend callbacks")
      Signed-off-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
      Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240222010517.1573931-1-cyndis@kapsi.fi
      1fa8d07a
    • Ma Jun's avatar
      drm/amdgpu: Fix the runtime resume failure issue · bbfaf2ae
      Ma Jun authored
      Don't set power state flag when system enter runtime suspend,
      or it may cause runtime resume failure issue.
      
      Fixes: 3a9626c8 ("drm/amd: Stop evicting resources on APUs in suspend")
      Signed-off-by: default avatarMa Jun <Jun.Ma2@amd.com>
      Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      bbfaf2ae
    • 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
    • Swapnil Patel's avatar
      drm/amd/display: fix input states translation error for dcn35 & dcn351 · 27a6c493
      Swapnil Patel authored
      [Why]
      Currently there is an error while translating input clock sates into
      output clock states. The highest fclk setting from output sates is
      being dropped because of this error.
      
      [How]
      For dcn35 and dcn351, make output_states equal to input states.
      Reviewed-by: default avatarCharlene Liu <charlene.liu@amd.com>
      Acked-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarSwapnil Patel <swapnil.patel@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      27a6c493
    • Srinivasan Shanmugam's avatar
      drm/amd/display: Fix potential null pointer dereference in dc_dmub_srv · d2b48f34
      Srinivasan Shanmugam authored
      Fixes potential null pointer dereference warnings in the
      dc_dmub_srv_cmd_list_queue_execute() and dc_dmub_srv_is_hw_pwr_up()
      functions.
      
      In both functions, the 'dc_dmub_srv' variable was being dereferenced
      before it was checked for null. This could lead to a null pointer
      dereference if 'dc_dmub_srv' is null. The fix is to check if
      'dc_dmub_srv' is null before dereferencing it.
      
      Thus moving the null checks for 'dc_dmub_srv' to the beginning of the
      functions to ensure that 'dc_dmub_srv' is not null when it is
      dereferenced.
      
      Found by smatch & thus fixing the below:
      drivers/gpu/drm/amd/amdgpu/../display/dc/dc_dmub_srv.c:133 dc_dmub_srv_cmd_list_queue_execute() warn: variable dereferenced before check 'dc_dmub_srv' (see line 128)
      drivers/gpu/drm/amd/amdgpu/../display/dc/dc_dmub_srv.c:1167 dc_dmub_srv_is_hw_pwr_up() warn: variable dereferenced before check 'dc_dmub_srv' (see line 1164)
      
      Fixes: 028bac58 ("drm/amd/display: decouple dmcub execution to reduce lock granularity")
      Fixes: 65138eb7 ("drm/amd/display: Add DCN35 DMUB")
      Cc: JinZe.Xu <jinze.xu@amd.com>
      Cc: Hersen Wu <hersenxs.wu@amd.com>
      Cc: Josip Pavic <josip.pavic@amd.com>
      Cc: Roman Li <roman.li@amd.com>
      Cc: Qingqing Zhuo <Qingqing.Zhuo@amd.com>
      Cc: Harry Wentland <Harry.Wentland@amd.com>
      Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
      Cc: Tom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
      Reviewed-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      d2b48f34
    • Lewis Huang's avatar
      drm/amd/display: Only allow dig mapping to pwrseq in new asic · 4e738260
      Lewis Huang authored
      [Why]
      The old asic only have 1 pwrseq hw.
      We don't need to map the diginst to pwrseq inst in old asic.
      
      [How]
      1. Only mapping dig to pwrseq for new asic.
      2. Move mapping function into dcn specific panel control component
      
      Cc: Stable <stable@vger.kernel.org> # v6.6+
      Cc: Mario Limonciello <mario.limonciello@amd.com>
      Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3122Reviewed-by: default avatarAnthony Koo <anthony.koo@amd.com>
      Acked-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarLewis Huang <lewis.huang@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      4e738260
    • 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
    • Erik Kurzinger's avatar
      drm/syncobj: handle NULL fence in syncobj_eventfd_entry_func · 2aa6f5b0
      Erik Kurzinger authored
      During syncobj_eventfd_entry_func, dma_fence_chain_find_seqno may set
      the fence to NULL if the given seqno is signaled and a later seqno has
      already been submitted. In that case, the eventfd should be signaled
      immediately which currently does not happen.
      
      This is a similar issue to the one addressed by commit b19926d4
      ("drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.").
      
      As a fix, if the return value of dma_fence_chain_find_seqno indicates
      success but it sets the fence to NULL, we will assign a stub fence to
      ensure the following code still signals the eventfd.
      
      v1 -> v2: assign a stub fence instead of signaling the eventfd
      Signed-off-by: default avatarErik Kurzinger <ekurzinger@nvidia.com>
      Fixes: c7a47229 ("drm/syncobj: add IOCTL to register an eventfd")
      Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240221184527.37667-1-ekurzinger@nvidia.com
      2aa6f5b0
    • Erik Kurzinger's avatar
      drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set · 3c43177f
      Erik Kurzinger authored
      When waiting for a syncobj timeline point whose fence has not yet been
      submitted with the WAIT_FOR_SUBMIT flag, a callback is registered using
      drm_syncobj_fence_add_wait and the thread is put to sleep until the
      timeout expires. If the fence is submitted before then,
      drm_syncobj_add_point will wake up the sleeping thread immediately which
      will proceed to wait for the fence to be signaled.
      
      However, if the WAIT_AVAILABLE flag is used instead,
      drm_syncobj_fence_add_wait won't get called, meaning the waiting thread
      will always sleep for the full timeout duration, even if the fence gets
      submitted earlier. If it turns out that the fence *has* been submitted
      by the time it eventually wakes up, it will still indicate to userspace
      that the wait completed successfully (it won't return -ETIME), but it
      will have taken much longer than it should have.
      
      To fix this, we must call drm_syncobj_fence_add_wait if *either* the
      WAIT_FOR_SUBMIT flag or the WAIT_AVAILABLE flag is set. The only
      difference being that with WAIT_FOR_SUBMIT we will also wait for the
      fence to be signaled after it has been submitted while with
      WAIT_AVAILABLE we will return immediately.
      
      IGT test patch: https://lists.freedesktop.org/archives/igt-dev/2024-January/067537.html
      
      v1 -> v2: adjust lockdep_assert_none_held_once condition
      
      (cherry picked from commit 8c44ea81)
      
      Fixes: 01d6c357 ("drm/syncobj: add support for timeline point wait v8")
      Signed-off-by: default avatarErik Kurzinger <ekurzinger@nvidia.com>
      Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: default avatarSimon Ser <contact@emersion.fr>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240119163208.3723457-1-ekurzinger@nvidia.com
      3c43177f
    • Thomas Hellström's avatar
      drm/ttm: Fix an invalid freeing on already freed page in error path · 40510a94
      Thomas Hellström authored
      If caching mode change fails due to, for example, OOM we
      free the allocated pages in a two-step process. First the pages
      for which the caching change has already succeeded. Secondly
      the pages for which a caching change did not succeed.
      
      However the second step was incorrectly freeing the pages already
      freed in the first step.
      
      Fix.
      Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
      Fixes: 379989e7 ("drm/ttm/pool: Fix ttm_pool_alloc error path")
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Christian Koenig <christian.koenig@amd.com>
      Cc: Huang Rui <ray.huang@amd.com>
      Cc: dri-devel@lists.freedesktop.org
      Cc: <stable@vger.kernel.org> # v6.4+
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240221073324.3303-1-thomas.hellstrom@linux.intel.com
      40510a94
  7. 21 Feb, 2024 7 commits