summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/amdgpu_dm
AgeCommit message (Collapse)Author
24 hoursMerge branch 'for-linux-next' of ↵Mark Brown
https://gitlab.freedesktop.org/drm/misc/kernel.git
39 hoursdrm: Rename drm_utils.h to drm_panel_quirks.hMaíra Canal
Now that the timeout-related functions were removed from drm_utils.h, the header has exclusively panel orientation and backlight quirk getters. Therefore, rename the header accordingly and update all files that include it. The files amdgpu_dm.c, amdgpu_dm_connector.c and panthor_drv.c include the header but don't use it, so drop the include there. No functional change. Suggested-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Christian König <christian.koenig@amd.com> Link: https://patch.msgid.link/20260915-drm-timeout-helpers-v3-7-f2ae987d861f@igalia.com Signed-off-by: Maíra Canal <mcanal@igalia.com>
9 daysdrm/amd/display: Revert "request DMUB HW cursor offload"Tony Qi
This reverts commit 555641725f21 ("drm/amd/display: Request DMUB HW cursor offload"). [WHY] This commit causes the following failures on DCN42: igt@kms_plane_cursor@viewport igt@kms_plane_cursor@overlay Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Tony Qi <Haoming.Qi@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit checkpatch warningsAlex Hung
[WHY] Clean up the AMDGPU DM KUnit tests after checkpatch reported an invalid sizeof(void) allocation, typed kzalloc patterns, and a repeated word in a kernel-doc summary. Clarify the test name that covers an active CRTC state transition. [HOW] - Use sizeof(cpu_ptr) for the fake CPU pointer allocation. - Replace typed kzalloc(sizeof(*object), ...) calls with kzalloc_obj(*object, ...) in the connector, IRQ, plane, and atomic-state tests. - Rename the CRTC active-state test and update its kernel-doc and suite registration. Assisted-by: Copilot:GPT-5.6-Luna Reviewed-by: Jerry Zuo <jerry.zuo@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Restore FreeSync VCP code check for HDMI/PCON sinksFangzhi Zuo
[WHAT] Folding the MCCS FreeSync checks into the do_mccs block dropped the other half of the original condition: the check that clears freesync_capable for HDMI or PCON-in-whitelist sinks that expose no EDID FreeSync VCP code. That check does not depend on the MCCS caps and must run regardless of do_mccs. As a result, when do_mccs is false such a sink without a FreeSync VCP code is still reported as FreeSync-capable. [HOW] Restore the VCP code check outside the do_mccs block so it is evaluated whether or not MCCS caps were read. Fixes: 115bf5ca318e ("drm/amd/display: Consult MCCS FreeSync cap only if requested & supported") Reviewed-by: Roman Li <roman.li@amd.com> Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit writeback warningsAlex Hung
[WHY] Writeback mode tests call drm_mode_probed_add without holding mode_config.mutex, producing a warning for every generated mode. [HOW] Hold the mutex around writeback mode enumeration and release it before checking the returned count or inspecting the generated modes. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit DM warningsAlex Hung
[WHY] Vblank and interrupt-management tests need discoverable CRTCs with complete vblank callbacks and balanced teardown. [HOW] Add the callbacks, link the fake CRTCs, and register cleanup actions to disable vblank before unlinking. Pass the CRTC directly so cleanup does not reinterpret two different fixture types through one layout. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit MST warningsAlex Hung
[WHY] The MST add-connector fixture registers an unmanaged master connector but does not clean it up before its KUnit-owned storage is released. [HOW] Register a KUnit action after successful connector initialization to run drm_connector_cleanup before freeing the master connector. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit IRQ warningsAlex Hung
[WHY] IRQ tests leave vblank active when removing their fake CRTCs, causing warnings during DRM device teardown. [HOW] Turn off initialized vblank before unlinking each test CRTC in the existing cleanup action. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit helper warningsAlex Hung
[WHY] The real connector fixture lacks atomic state callbacks required by DRM connector initialization. [HOW] Install the DRM atomic connector duplicate and destroy state helpers alongside the existing reset callback. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit VRR warningsAlex Hung
[WHY] The VRR transition test needs a discoverable CRTC and balanced vblank teardown. Assertion failures must not leave freed CRTCs linked. [HOW] Supply a vblank counter callback and link the test CRTC. Register a KUnit cleanup action to disable vblank and unlink it on every exit. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit cursor warningAlex Hung
[WHY] The cursor offset test binds a CRTC without a framebuffer, triggering a plane-state consistency warning before the intended offset check. [HOW] Provide a test framebuffer in the new plane state while retaining the invalid offset and its expected rejection. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit CRTC warningsAlex Hung
[WHY] Incomplete CRTC callbacks and vblank teardown cause DRM warnings in CRTC tests. [HOW] Provide the required CRTC callbacks, link fake CRTCs for vblank lookup, and register cleanup actions to disable vblank before unlinking them. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix KUnit connector warningsAlex Hung
[WHY] Connector mode population without mode_config.mutex produces warning stack traces. Legacy property reads also warn on atomic DRM devices. [HOW] Lock mode-population calls and release the mutex before assertions. Read stored property values with the atomic-compatible default getter. Assisted-by: Copilot:GPT-6-Astra Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix DCN42B plane alphaMatthew Stewart
Like DCN42, the alpha field is 12 bits compared to the 16 bit value in plane_state; must convert it. Reviewed-by: Gabe Teeger <gabe.teeger@amd.com> Signed-off-by: Matthew Stewart <Matthew.Stewart2@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Drop redundant amdgpu_dm_irq testsAlex Hung
[WHAT] Thirteen tests in the amdgpu_dm_irq suite only re-ran a path that another test already covered, and five more repeated setup that the fixtures added by the preceding patches now provide. [HOW] Delete the tests whose executed path is a strict subset of another's, and fold the remaining duplicated setup onto the shared fixtures. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test HPD RX downstream handlingAlex Hung
[WHAT] handle_hpd_rx_irq() left its whole post-detect block untested apart from a failing re-detect, and never dispatched a CP_IRQ. [HOW] Add four tests covering a failing connection-type probe, a connector forced on that is emulated instead of detected, a successful re-detect that notifies userspace, and a CP_IRQ that must be handed to the HDCP work queue for the connector that raised it. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test HPD handler HDCP and detectAlex Hung
[WHAT] handle_hpd_irq_helper() never ran its HDCP reset, its forced connector branch or its successful re-detect branch. [HOW] Add a minimal HDCP work queue fixture and three tests: an HPD on a driver that carries an HDCP work queue, which must reset the display and flag the connector state; a connector forced on that reports no connection and is emulated instead of detected; and a successful re-detect that notifies userspace. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test HDMI HPD debounce re-detectAlex Hung
[WHAT] amdgpu_dm_hdmi_hpd_debounce_work() only ran with detection failing, so neither outcome of the sink comparison that decides whether an HPD toggle was spurious was covered. [HOW] Add a fixture for the debounce work item and two tests: a re-detect finding the same sink, which re-enables internally without notifying userspace, and one finding a different sink, which sends the hotplug event. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test HPD RX offload work branchesAlex Hung
[WHAT] dm_handle_hpd_rx_offload_work() was covered only for its automated-test and link-loss branches. The connection-type failure, the GPU-reset drop, the MST message-ready drain and the forced reconnect were never entered. [HOW] Add a fixture that builds a queued offload work item on a DisplayPort link and four tests: a failing connection-type probe, a device already in reset, a deferred UP_REQ_MSG_RDY drained through an AUX that fails every transfer, and an automated test whose timing changed, which forces the connector off and back on. The last one registers the DRM device so the hotplug uevent helpers find a sysfs minor on the primary node. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test VRR pageflip completionAlex Hung
[WHAT] dm_pflip_high_irq() only ever ran with VRR inactive, so the scanout position query and the front-porch path that queues the pageflip event on the vblank event list were never reached. [HOW] Add a fake timing generator reporting a scanout position past the start of the front porch, plus a fixture that puts a submitted flip on an active-VRR stream. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test unassigned OTG CRTC lookupAlex Hung
[WHAT] amdgpu_dm_get_crtc_by_otg_inst() had no test for an OTG instance of -1, so its WARN_ON guard and the fallback to the first CRTC were never executed. [HOW] Add dm_test_get_crtc_by_otg_inst_unassigned_otg(), which installs a CRTC as mode_info.crtcs[0] and asserts the lookup returns it rather than walking the CRTC list. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test MST topology startAlex Hung
[WHAT] Add a KUnit test to cover dm_helpers_dp_mst_start_top_mgr() its success path. [HOW] Mark the topology manager as already in MST mode, so drm_dp_mst_topology_mgr_set_mst() returns success without touching the AUX channel or queueing the link probe work, and the helper reports that MST was started. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test AUX transfer pathsAlex Hung
[WHAT] Add KUnit tests for the AUX paths of dm_helper_dmub_aux_transfer_sync(), dm_helpers_read_mccs_caps() and dm_helpers_mccs_vcp_set(). Only their early returns and the plain I2C branch were covered before. [HOW] dm_helper_dmub_aux_transfer_sync() is called with HPD connected so it forwards the payload to the DMUB transfer. dc->link_count is zero, so the async transfer is rejected and the engine-acquire error is reported. Both MCCS helpers pick their DDC adapter from link->aux_mode. Add a fake AUX channel that ACKs every I2C-over-AUX transaction and counts the sized writes, then route the shared MCCS fixture through it. The VCP set completes on the first write. The VCP request gets an empty reply, so every attempt is retried and the request finally fails. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Test EDID helper pathsAlex Hung
[WHAT] Add KUnit tests for three EDID paths in amdgpu_dm_helpers.c the SDC panel PSR PHY power-down quirk in apply_edid_quirks(), the HDMI compliance-auto branch of dm_helpers_parse_edid_caps(), and the VBIOS fallback and corrupt-EDID paths of dm_helpers_read_local_edid(). [HOW] apply_edid_quirks() is driven twice with the SDC panel ids, once on a DisplayPort signal and once on eDP, showing the quirk is embedded-only. dm_helpers_parse_edid_caps() runs against an HDMI connector whose hdmi_comp_auto flag is set, so the FRL and FRL DSC debug options are forced on and the quirk is recorded in the panel patch. dm_helpers_read_local_edid() is given an embedded link with no DDC line, so it falls back to the EDID hardcoded in the VBIOS embedded panel info that the existing fake dc_bios supplies. A second test corrupts the base block checksum served by the fake AUX DDC, so the read fails, the real checksum is written back and EDID_BAD_CHECKSUM is reported. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix amdgpu_dm's kernel-doc warningsAlex Hung
[WHAT] Document the amdgpu_dm struct members and function parameters reported by kernel-doc. Convert non-kernel-doc prose comments to regular comments and clarify the HDMI FRL polling fields. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202609051521.dVjPj9Zw-lkp@intel.com/ Assisted-by: Copilot:GPT-5.6-Luna Reviewed-by: Jerry Zuo <jerry.zuo@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold plane state check testsAlex Hung
[WHAT] Reduce the four viewport KUnit tests for amdgpu_dm_plane_helper_check_state() to one, and the three rejection tests for amdgpu_dm_plane_atomic_check() to one. [HOW] Drive the viewport cases from a table of CRTC rectangles and display sizes, and rebuild the atomic state between the helper-check, color pipeline conflict and scaling-info sub-cases of the atomic check test. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold plane scaling and cursor testsAlex Hung
[WHAT] Reduce the two KUnit tests for amdgpu_dm_plane_get_min_max_dc_plane_scaling() to one, and the two for amdgpu_dm_plane_get_cursor_position() to one. [HOW] Populate the fp16 scaling caps alongside the NV12 and ARGB8888 ones and query all three formats from one device, and append the oversized cursor rejection to the existing clipping test. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold DCC block mode testsAlex Hung
[WHAT] Reduce the five KUnit tests for the GFX9 DCC block modes of amdgpu_dm_plane_fill_gfx9_attrs_from_modifiers() to one, and the three for amdgpu_dm_plane_fill_gfx12_attrs_from_modifiers() to one. [HOW] Drive both from a table of modifier bits and the expected HUBP independent block mode, allocating the device, DC and framebuffer once and resetting the tiling, DCC and address outputs per row. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold DCC validation testsAlex Hung
[WHAT] Reduce the seven KUnit tests for amdgpu_dm_plane_validate_dcc() to three. [HOW] Split them into a table-driven test for the checks that run before the DC capability query and a table-driven test for the rejections that come out of it, leaving the success and scan-mapping test unchanged. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold GFX6-8 tiling and modifier testsAlex Hung
[WHAT] Reduce the four KUnit tests for amdgpu_dm_plane_fill_gfx6_tiling_info_from_modifier() to one, and the three for amdgpu_dm_plane_calc_gfx6_mod() to one. [HOW] Build the linear, rejected, 1D tiled and 2D tiled modifiers as locals and decode them in sequence, and drive the micro tiled, GFX7-8 and GFX6 modifier calculations from two devices inside a single test. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold GFX9 tiling info testsAlex Hung
[WHAT] Reduce the two KUnit tests for amdgpu_dm_plane_fill_gfx9_tiling_info_from_device() to one, and the three for amdgpu_dm_plane_fill_gfx9_tiling_info_from_modifier() to one. [HOW] Reprogram the device configuration and re-run the helper in sequence inside a single test per function, so the pre-10.3, 10.3-and-later, linear, pre-NV and NV-and-later cases all stay covered. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold modifier append testsAlex Hung
[WHAT] Reduce the four KUnit tests for amdgpu_dm_plane_add_modifier() to two, and the two tests for amdgpu_dm_plane_add_modifier_dedup() to one. [HOW] Group the append and capacity-growth cases into one test and the NULL-list and allocation-failure cases into another, and run the duplicate-skip and NULL-list dedup cases in sequence within a single test. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold plane modifier list testsAlex Hung
[WHAT] Reduce the six KUnit tests for amdgpu_dm_plane_get_plane_modifiers() to three, keeping every family dispatch covered. [HOW] Merge the GFX10.1, GFX10.3 and GFX12 cases into one table-driven test over the family and GC IP version, and merge the two RV cases into a table over the external revision id that selects the constant-encode modifier variants. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold universal overlay format testAlex Hung
[WHAT] Reduce the two KUnit tests for amdgpu_dm_plane_get_plane_formats() to one. [HOW] Allocate a second plane cap with the DCN universal type in the existing test and check the overlay format count against it, then drop the standalone test. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fold blending tests into two casesAlex Hung
[WHAT] Reduce the five KUnit tests for amdgpu_dm_plane_fill_blending_from_plane_state() to two, keeping every covered path. [HOW] Turn the opaque, premultiplied and coverage cases into one table-driven test over the pixel blend mode, and fold the DCN 4.2 case into the global alpha test as a second table row selecting the DCE IP version. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Select KUnit helpersAlex Hung
[WHAT] DRM_KUNIT_TEST_HELPERS has no prompt, so it can only be turned on by a select. DRM_AMD_DC_KUNIT_TEST merely depended on it, which forced the amdgpu_dm KUnit config to enable CONFIG_DRM_KUNIT_TEST as well and drag in the entire core DRM test suite. [HOW] Select DRM_KUNIT_TEST_HELPERS from DRM_AMD_DC_KUNIT_TEST, matching what DRM_KUNIT_TEST and DRM_TTM_KUNIT_TEST already do, and drop CONFIG_DRM_KUNIT_TEST from the amdgpu_dm kunitconfig. The amdgpu_dm tests now build standalone and a run executes only the amdgpu_dm suites. Assisted-by: Copilot:Claude-Opus-5 Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 daysdrm/amd/display: Fix dc stream excess put in dm_update_crtc_state()Wentao Liang
In dm_update_crtc_state(), when a modeset is required the newly created stream is stored in dm_new_crtc_state->stream and an extra reference is taken with dc_stream_retain(). The reference returned by create_validate_stream_for_sink() is released as an extra reference at the skip_modeset label, leaving the stream owned by the new CRTC state. If amdgpu_dm_check_crtc_color_mgmt() fails afterwards, the code jumps to the fail label which releases new_stream again. Since the extra reference was already released at skip_modeset, this drops the reference owned by dm_new_crtc_state->stream and the stream is released while the atomic state still points to it, leading to a premature free of the dc stream. Set new_stream to NULL after releasing the extra reference at the skip_modeset label so that a later goto fail cannot release the reference owned by the new CRTC state. Fixes: 7cd4b70091a5 ("drm/amd/display: Rework CRTC color management") Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
11 daysMerge tag 'amd-drm-next-7.4-2026-09-17' of ↵Dave Airlie
https://gitlab.freedesktop.org/drm/amdgpu/kernel into drm-next [airlied: fix two merge conflicts] amd-drm-next-7.4-2026-09-17: amdgpu: - SMU 14.x fix - DC IRQ fix - Runtime PM fix for P2P - RAS fix - PCIe reporting fix - DCN 6 fix - Device removal fix - DC MALL fix - Display KUNIT test fixes - More display KUNIT tests - GC 12.1 cleanup - DC RMCM refactor - Display forces RGB fix - DP MST fixes - USB4 fixes - Plane update fixes - DMUB updates - ISM fixes - DCN 4.2 updates - HDMI FRL updates - Add new trace events - SDMA soft reset updates - Update git trees in MAINTAINERS - UALink fixes - UserQ fixes - SDMA clean ups - Misc spelling fixes - Documentation fixes - ATOM range checks amdkfd: - GC 12.x fixes - Boundary checks - Mapping clear fix - GC 10 CU occupancy support - GC 12.1 fixes - XNACK fix - Partition fix radeon: - eDP fix for DCE3.2 iMacs Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patch.msgid.link/20260917203841.3881294-1-alexander.deucher@amd.com
2026-09-18Merge tag 'drm-misc-next-2026-09-17' of ↵Dave Airlie
https://gitlab.freedesktop.org/drm/misc/kernel into drm-next drm-misc-next for v7.4: UAPI Changes: ivpu: - add DRM_IVPU_CAP_CMDQ_SET_PRIORITY Cross-subsystem Changes: dma-fence: - fix documentation vga_switcheroo: - disconnect from fbcon; update fbcon from within DRM fbdev emulation Core Changes: atomic: - replace state reset callback with create_state throughout DRM core and drivers panic: - split into core and helpers sched: - clean up interface sysfs: - drop drm_class_device_register() Driver Changes: amdxdna: - fix BO handling arcpgu: - replace simple-display pipeline with regular atomic helpers aspeed: - replace simple-display pipeline with regular atomic helpers gm12u320: - replace simple-display pipeline with regular atomic helpers imagination: - various improvement to firmware interaction ivpu: - support command-queue priority ioctl mcde: - replace simple-display pipeline with regular atomic helpers p111: - replace simple-display pipeline with regular atomic helpers - drop unsupported alpha formats from primary plane panel: - edp: Add support for BOE NV140FHM-T0A - samsung: Share test-key helpers rcar-du: - support Renesas R-Car V4H DSC - dsi: Support larger transfers with AXI memory repaper: - replace simple-display pipeline with regular atomic helpers rockchip: - dsi: improve PHY timings ssd130x: - support Solomon SSD1351 OLED plus DT bindings - ssd133x: upgrade color format to RGB565 tve200: - replace simple-display pipeline with regular atomic helpers xen: - replace simple-display pipeline with regular atomic helpers Signed-off-by: Dave Airlie <airlied@redhat.com> From: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260917090534.GA420415@2a02-2455-9062-2500-ec39-e8a6-193-9c05.dyn6.pyur.net
2026-09-17drm/amd/display: fix kernel-doc warnings for amdgpu_display_managerOmokefe Emmanuel Onanaroghene
scripts/kernel-doc reports missing and excess member descriptions for struct amdgpu_display_manager: struct member 'power_module' not described struct member 'hdmi_frl_status_polling_wq' not described struct member 'hdmi_frl_status_polling_delay_ms' not described struct member 'boot_time_crc_info' not described Excess struct member 'dm_boot_time_crc_info' description Add @power_module to the main struct doc, document hdmi_frl_status_polling_wq/work/delay_ms with separate inline comments, and rename @dm_boot_time_crc_info to @boot_time_crc_info to match the actual member name. Signed-off-by: Omokefe Emmanuel Onanaroghene <emmaonana18@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Atomize IRQ register read/modify/write opsLeo Li
[Why] The OTG_GLOBAL_SYNC_STATUS register controls various HW IRQ sources for the output timing generator (OTG). VUPDATE_NO_LOCK is one of them. To enable the IRQ, driver sets the VUPDATE_NO_LOCK_EN bit in the GLOBAL_SYNC_STATUS register. To ack the IRQ after it fires, the driver sets the VUPDATE_NO_LOCK_CLEAR bit in the same GLOBAL_SYNC_STATUS register. The bit sets are done through read/modify/write operations, which are not atomic. Thus, the following race is possible: Thread A: IRQ handler: *HW IRQ fires* # IRQ disable val = read(GLOBAL_SYNC_STATUS) unset(val, VUPDATE_NO_LOCK_EN) write(val, GLOBAL_SYNC_STATUS) # ACK reads VUPDATE_NO_LOCK_EN unset val1 = read(GLOBAL_SYNC_STATUS) set(val1, VUPDATE_NO_LOCK_CLEAR) # IRQ enable val = read(GLOBAL_SYNC_STATUS) set(val, VUPDATE_NO_LOCK_EN) write(val, GLOBAL_SYNC_STATUS) # BAD! clears VUPDATE_NO_LOCK_EN write(val1, GLOBAL_SYNC_STATUS) Regarding the tagged Fixes: change, it appears the change made this race more likely to occur. Since VUPDATE_NO_LOCK is now the sole IRQ source for vblank handling, a single race on high refresh panels can lead to a time out. [How] The GLOBAL_SYNC_STATUS register is only one example, other IRQ control registers also share the same scheme. On top of GLOBAL_SYNC_STATUS, let's clean up those as well. To keep things simple, Let's atomize the IRQ rmw ops via a single driver-wide spinlock. Due to the small scope of this lock, it is unlikely to cause noticeable overhead on top of all the existing locking within the IRQ set/handle paths. Since DM is responsible for locking, wrap dc_interrupt_set/ack with the spinlock in the new amdgpu_dm_irq_set/ack functions. Migrate/drop all references in DM to dc_interrupt_set/ack to use amdgpu_dm_irq_set/ack instead. Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5616 Fixes: c87e6635d2db ("drm/amd/display: consolidate DCN vblank/flip handling onto vupdate_no_lock") Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Flush ISM work before releasing the streamRay Wu
[Why] ISM timers are not tied to the atomic commit, so a timer armed before a DPMS off can still fire after the stream is released. The external display check in dcn35_apply_idle_power_optimizations() loops over the active streams, so with none left it never runs and idle is allowed on an external-only system. [How] Wait out pending and in-flight ISM work before dc_stream_release(); dc_lock is not held there, so the sync wait is safe. Rename amdgpu_dm_ism_fini() to amdgpu_dm_ism_flush() and assert dc_lock is not held. Assisted-by: Cursor:Claude-Opus-5 Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Ray Wu <ray.wu@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Drop dead update_type param from ↵James Lin
update_planes_and_stream_adapter [Why & How] The adapter never read update_type; DC derives the update type itself inside dc_update_planes_and_stream(). Drop the dead parameter from the prototype, the two callers and the KUnit tests. Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Send stream_update to DC only when it changedJames Lin
[Why & How] Track stream_update_needed and pass &bundle->stream_update to DC only when a real stream property was actually written (native-cursor disable, cursor position/attributes, VRR infopacket, modeset src/dst, color management, ABM level); otherwise pass NULL. An address-only flip then carries no stream_update and stays on the FAMS2 offload path. Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Request DMUB HW cursor offloadJames Lin
[Why & How] Request cursor offload in dc_config and initialize it after DMUB is up (dc_dmub_srv_cursor_offload_init), which self-gates on the firmware cursor_offload_v1_support capability, so cursor programming no longer takes the inbox0 lock on alt-in-use streams. Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Attach only plane updates that actually changedJames Lin
[Why & How] Cache the last programmed dc_flip_addrs/dc_plane_info/dc_scaling_info in dm_plane_state and carry them across atomic_duplicate_state. In amdgpu_dm_commit_planes() attach each flip_addr/plane_info/scaling_info surface update only when it differs from the cache (memcmp), so an address-only flip sends no plane_info/scaling_info update and stays on the FAMS2 offload path. Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Rename lock_and_validation_needed to needs_dc_state_reallocJames Lin
[Why & How] Split the boolean's two meanings: it only tracks whether the commit needs to rebuild the dc_state and take the global lock, not the update magnitude. Rename it so the name reflects that; no functional change. Reviewed-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: James Lin <pinglei.lin@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Force DSC to 8bpp for SST DP tunneling over USB4Fangzhi Zuo
A 4K144 display attached through a USB4 (Thunderbolt) dock does not light up on DCN4.2. The native DP link bandwidth reported for the sink is far larger than the USB4 tunnel can carry, so DSC is sized to the link and the resulting stream overflows the tunnel's granted bandwidth. The bandwidth allocation request fails and the display stays dark. When the endpoint is a USB4 DPIA with BW allocation enabled, force DSC and cap the target to 8 bpp in SST mode. This keeps the compressed stream within the tunnel budget and reserves headroom for other DP tunnels sharing the same host router. Reviewed-by: Roman Li <roman.li@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2026-09-17drm/amd/display: Force DSC to 8bpp for MST DP tunneling over USB4Fangzhi Zuo
Commit "drm/amd/display: Force DSC to 8bpp for SST DP tunneling over USB4" forces DSC and caps the target to 8 bpp for SST streams on a USB4 DPIA link with bandwidth allocation enabled. The MST DSC fairness path does not honor that policy: it derives the bpp range purely from the timing's DSC policy and picks the highest bpp the native DP link can carry, which overflows the smaller USB4 tunnel budget on a dock that fans out via an internal MST hub. Apply the equivalent policy in compute_mst_dsc_configs_for_link(): when the link is a USB4 DPIA with BW allocation enabled, force DSC on (so the fairness pass does not leave a stream uncompressed just because the native link looks large enough) and pin the target to the minimum bpp (so the compressed stream fits the tunnel and reserves headroom for the other tunnels on the same host router). Reviewed-by: Roman Li <roman.li@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>