Re: [PATCH v7 00/10] drm/amd/display: Use drm_edid for more code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 9/27/24 14:45, Melissa Wen wrote:
Hi Alex,

Thanks for the intensive testing.

I'll need some time to reproduce and debug these regressions.

So, we can divide this series into four steps:
1-2 are the basis for drm_edid migration
3-4 are code cleanups
5-9 are drm_edid_product_id migration
10 is for ACPI EDID feature.

Bearing this and the reported regressions around the product_id part in mind, I wonder if we can start by applying the drm_edid migration and the ACPI EDID feature, which means applying patches 1-4 and 10. And then let the second part of product_id migration for the next iteration.
IMHO it seems a smoother transition.

WDYT?

This sounds like a good plan.

Not all tests were completed on 1-4 + 10 as the series were dropped due to the regressions. I can send the 5 patches for tests next week again; however, 10 cannot be applied cleanly on top of 1-4, and help from Mario to rebase is probably needed.

As for the rest, let me know if you cannot reproduce these issues since you may or may not have the same hardware configs.


Melissa


On 27/09/2024 15:48, Alex Hung wrote:
Hi Mario and Melissa,

There are three regressions identified during the test, and improvement is required before the patches can be merged. Please see details below.

1. null pointer when hot-plugging a dsc hub (+ three 4k60 monitors).

This may point to "drm/amd/display: use drm_edid_product_id for parsing EDID product info" since that's the only patch calling drm_edid_get_product_id.


[  227.797361] RIP: 0010:drm_edid_get_product_id+0x1d/0x50 [drm]
[  227.797388] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 48 85 ff 74 24 48 8b 47 08 48 85 c0 74 1b 48 83 3f 7f 76 15 <48> 8b 50 08 5d 48 89 16 0f b7 40 10 66 89 46 08 e9 a9 47 ee ce 31
[  227.797391] RSP: 0018:ffffac58126f7930 EFLAGS: 00010216
[  227.797394] RAX: 000000000000372d RBX: ffff8eaeaf8ac808 RCX: ffff8eaeaf8ac107 [  227.797396] RDX: 0000000000000002 RSI: ffffac58126f7944 RDI: ffff8eaeeeaf9f80 [  227.797398] RBP: ffffac58126f7930 R08: ffff8eae8e500d00 R09: 0000000000000001 [  227.797400] R10: ffffac58126f7978 R11: 000000000017f81b R12: ffff8eae84cb0000 [  227.797402] R13: ffff8eaeeeaf9f80 R14: 0000000000000000 R15: 0000000000000100 [  227.797405] FS:  00007f031a616ac0(0000) GS:ffff8eb57cd80000(0000) knlGS:0000000000000000
[  227.797407] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  227.797409] CR2: 0000000000003735 CR3: 000000014decc000 CR4: 0000000000750ef0
[  227.797411] PKRU: 55555554
[  227.797413] Call Trace:
[  227.797415]  <TASK>
[  227.797417]  ? show_regs+0x64/0x70
[  227.797423]  ? __die+0x24/0x70
[  227.797427]  ? page_fault_oops+0x160/0x520
[  227.797435]  ? do_user_addr_fault+0x2e9/0x6a0
[  227.797438]  ? dc_link_add_remote_sink+0x20/0x30 [amdgpu]
[  227.797654]  ? dm_dp_mst_get_modes+0xee/0x520 [amdgpu]
[  227.797882]  ? drm_helper_probe_single_connector_modes+0x1b5/0x670 [drm_kms_helper]
[  227.797894]  ? exc_page_fault+0x7f/0x190
[  227.797899]  ? asm_exc_page_fault+0x27/0x30
[  227.797906]  ? drm_edid_get_product_id+0x1d/0x50 [drm]
[  227.797932]  dm_helpers_parse_edid_caps+0x69/0x260 [amdgpu]
[  227.798139] amdgpu 0000:0b:00.0: [drm:drm_dp_dpcd_write [drm_display_helper]] AMDGPU DM aux hw bus 2: 0x02003 AUX <- (ret=  1) 10
[  227.798158]  link_add_remote_sink+0xa8/0x1a0 [amdgpu]
[  227.798402]  dc_link_add_remote_sink+0x20/0x30 [amdgpu]
[  227.798615]  dm_dp_mst_get_modes+0xee/0x520 [amdgpu]
[  227.798843]  ? srso_alias_return_thunk+0x5/0xfbef5
[  227.798848] drm_helper_probe_single_connector_modes+0x1b5/0x670 [drm_kms_helper]


2. DP2 Display is not listed as an audio device

Steps to reproduce:
- Attach display to system.
- Boot to Desktop (Wayland)
- Attempt to select display as an audio device.

This points to patch "drm/amd/display: get SAD from drm_eld when parsing EDID caps"


3. IGT amd_mem_leak'sconnector-suspend-resume fails on Navi 31.

This points to the patch "drm/amd/display: remove dc_edid handler from dm_helpers_parse_edid_caps".


Using IGT_SRANDOM=1727192429 for randomisation
Opened device: /dev/dri/card0
Starting subtest: connector-suspend-resume
[cmd] rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Tue Sep 24 15:40:50 2024
unreferenced object 0xffff95c683517b00 (size 256):
  comm "kworker/u64:30", pid 3636, jiffies 4295452761
  hex dump (first 32 bytes):
    00 ff ff ff ff ff ff 00 22 0e c2 36 00 00 00 00 ........"..6....
    33 1d 01 04 b5 3c 22 78 3b 28 91 a7 55 4e a3 26 3....<"x;(..UN.&
  backtrace (crc 5800a91d):
    [<ffffffffbb73502a>] kmemleak_alloc+0x4a/0x80
    [<ffffffffbabbde07>] kmalloc_node_track_caller_noprof+0x337/0x410
    [<ffffffffbab631f8>] krealloc_noprof+0x58/0xb0
    [<ffffffffc04e8e38>] _drm_do_get_edid+0x138/0x410 [drm]
    [<ffffffffc04e9155>] drm_edid_read_custom+0x35/0xd0 [drm]
    [<ffffffffc04e9244>] drm_edid_read_ddc+0x44/0x80 [drm]
    [<ffffffffc1061808>] dm_helpers_read_local_edid+0x1d8/0x340 [amdgpu]
    [<ffffffffc11b7446>] detect_link_and_local_sink+0x356/0x1230 [amdgpu]
    [<ffffffffc11b8366>] link_detect+0x36/0x4f0 [amdgpu]
    [<ffffffffc13667a0>] dc_link_detect+0x20/0x30 [amdgpu]
    [<ffffffffc10536f0>] dm_resume+0x1e0/0x7d0 [amdgpu]
    [<ffffffffc0d25908>] amdgpu_device_ip_resume_phase2+0x58/0xd0 [amdgpu]
    [<ffffffffc0d29cb7>] amdgpu_device_resume+0xa7/0x2e0 [amdgpu]
    [<ffffffffc0d2467c>] amdgpu_pmops_resume+0x4c/0x90 [amdgpu]
    [<ffffffffbb02e121>] pci_pm_resume+0x71/0x100
    [<ffffffffbb22c551>] dpm_run_callback+0x91/0x1e0
unreferenced object 0xffff95c6c58dd0c0 (size 16):
  comm "kworker/u64:30", pid 3636, jiffies 4295452764
  hex dump (first 16 bytes):
    00 01 00 00 00 00 00 00 00 7b 51 83 c6 95 ff ff .........{Q.....
  backtrace (crc 70d89717):
    [<ffffffffbb73502a>] kmemleak_alloc+0x4a/0x80
    [<ffffffffbabbbf3e>] kmalloc_trace_noprof+0x28e/0x300
    [<ffffffffc04e6845>] _drm_edid_alloc+0x35/0x60 [drm]
    [<ffffffffc04e9175>] drm_edid_read_custom+0x55/0xd0 [drm]
    [<ffffffffc04e9244>] drm_edid_read_ddc+0x44/0x80 [drm]
    [<ffffffffc1061808>] dm_helpers_read_local_edid+0x1d8/0x340 [amdgpu]
    [<ffffffffc11b7446>] detect_link_and_local_sink+0x356/0x1230 [amdgpu]
    [<ffffffffc11b8366>] link_detect+0x36/0x4f0 [amdgpu]
    [<ffffffffc13667a0>] dc_link_detect+0x20/0x30 [amdgpu]
    [<ffffffffc10536f0>] dm_resume+0x1e0/0x7d0 [amdgpu]
    [<ffffffffc0d25908>] amdgpu_device_ip_resume_phase2+0x58/0xd0 [amdgpu]
    [<ffffffffc0d29cb7>] amdgpu_device_resume+0xa7/0x2e0 [amdgpu]
    [<ffffffffc0d2467c>] amdgpu_pmops_resume+0x4c/0x90 [amdgpu]
    [<ffffffffbb02e121>] pci_pm_resume+0x71/0x100
    [<ffffffffbb22c551>] dpm_run_callback+0x91/0x1e0
    [<ffffffffbb22ca76>] device_resume+0xb6/0x2c0
Stack trace:
  #0 ../lib/igt_core.c:2051 __igt_fail_assert()
  #1 ../tests/amdgpu/amd_mem_leak.c:202 __igt_unique____real_main208()
  #2 ../tests/amdgpu/amd_mem_leak.c:208 main()
  #3 ../sysdeps/nptl/libc_start_call_main.h:74 __libc_start_call_main()
  #4 ../csu/libc-start.c:128 __libc_start_main@@GLIBC_2.34()
  #5 [_start+0x25]
Subtest connector-suspend-resume: FAIL (9.535s)

On 9/18/24 15:38, Mario Limonciello wrote:
This is the successor of Melissa's v5 series that was posted [1] as well
as my series that was posted [2].

Melissa's patches are mostly unmodified from v5, but the series has been
rebase on the new 6.10 based amd-staging-drm-next.

As were both touching similar code for fetching the EDID, I've merged the
pertinent parts of my series into this one in allowing the connector to
fetch the EDID from _DDC if available for eDP as well.

There are still some remaining uses of drm_edid_raw() but they touch pure
DC code, so a wrapper or macro will probably be needed to convert them.
This can be for follow ups later on.

Link: https://lore.kernel.org/amd-gfx/20240807203207.2830-1- mwen@xxxxxxxxxx/ [1] Link: https://lore.kernel.org/dri-devel/20240214215756.6530-1- mario.limonciello@xxxxxxx/ [2]

v7:
  * Rebase on amd-staging-drm-next which is now 6.10 based
  * Fix the two LKP robot reported issues

Mario Limonciello (1):
   drm/amd/display: Fetch the EDID from _DDC if available for eDP

Melissa Wen (9):
   drm/amd/display: switch amdgpu_dm_connector to use struct drm_edid
   drm/amd/display: switch to setting physical address directly
   drm/amd/display: always call connector_update when parsing
     freesync_caps
   drm/amd/display: remove redundant freesync parser for DP
   drm/amd/display: use drm_edid_product_id for parsing EDID product info
   drm/amd/display: parse display name from drm_eld
   drm/amd/display: get SAD from drm_eld when parsing EDID caps
   drm/amd/display: get SADB from drm_eld when parsing EDID caps
   drm/amd/display: remove dc_edid handler from
     dm_helpers_parse_edid_caps

  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 200 ++++++------------
  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |   4 +-
  .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 172 +++++++++------
  .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |  34 +--
  drivers/gpu/drm/amd/display/dc/dm_helpers.h   |   1 -
  .../drm/amd/display/dc/link/link_detection.c  |   6 +-
  drivers/gpu/drm/amd/include/amd_shared.h      |   5 +
  7 files changed, 200 insertions(+), 222 deletions(-)


base-commit: 0569603f945225067d963c8ba4fda31d967ab584






[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux