DMC firmware v2.19 causes display resolution issues on Lenovo Legion
My system is a Lenovo Legion 5 Gen7 15IAH7H, Alder Lake i7-12700H. I'm using i915 on Arch Linux (nouveau is blacklisted, nvidia is not installed). I have a 1440p monitor, connected to the laptop's Thunderbolt 4 port via an HDMI adapter.
When I boot Arch's 6.2 kernel (the last one was 6.2.13) and launch X11, xrandr detects 1440p and 2160p resolution options for my monitor. However, when I boot any 6.3 kernel (the current one is 6.3.6, but every 6.3 kernel has reproduced the issue), xrandr does not detect the higher resolutions at all. It stops at 1080p and won't go further. I couldn't find any smoking guns in dmesg for why i915 wasn't reporting a higher resolution.
I eventually found that the 6.3 kernels are defaulting to a newer version of DMC firmware. Passing the kernel argument i915.dmc_firmware_path=i915/adlp_dmc_ver2_16.bin
(2.16 was the version being loaded by my 6.2 kernel, according to dmesg) resolves the issue. It seems that the newer firmware is causing resolution to be detected incorrectly, perhaps specific to a thunderbolt-displayport-hdmi adapter chain. Unfortunately I do not have alternative adapters to test with, and this laptop's other display outputs are all connected to the discrete nvidia graphics so they aren't relevant. I have no context or knowledge on i915's inner workings or the role of DMC firmware, so my knowledge ends here. Happy to debug further if someone will provide instructions. Will attach dmesg and xrandr outputs momentarily.