diff --git a/pkgbuilds/linux-ptl/0028-drm-i915-psr-exit-Panel-Replay-for-ALPM-lag.patch b/pkgbuilds/linux-ptl/0028-drm-i915-psr-exit-Panel-Replay-for-ALPM-lag.patch index 0e907bf..7c9311a 100644 --- a/pkgbuilds/linux-ptl/0028-drm-i915-psr-exit-Panel-Replay-for-ALPM-lag.patch +++ b/pkgbuilds/linux-ptl/0028-drm-i915-psr-exit-Panel-Replay-for-ALPM-lag.patch @@ -1,21 +1,22 @@ From 9126525701cdf19e6c3d2caf8a6ece559f99a99e Mon Sep 17 00:00:00 2001 From: Gaggery Tsai Date: Mon, 10 Aug 2026 22:45:00 -0500 -Subject: [PATCH] drm/i915/psr: restore DA14260 Panel Replay with ALPM lag +Subject: [PATCH] drm/i915/psr: restore XPS 14/16 Panel Replay with ALPM lag workaround Panel Replay ALPM AUX-less wake/sleep cycling cannot resume selective -updates at frame rate on the LGD OLED panel in the Dell XPS 14 DA14260. -Upstream avoids the visible lag by disabling Panel Replay for the exact -Dell 1028:0db9 and LGD 00:22:b9 match, which also removes the idle power -savings. +updates at frame rate on the LGD OLED panels in the Dell XPS 14 DA14260 +and XPS 16 DA16260. Upstream avoids the visible lag on the XPS 14 by +disabling Panel Replay for the exact Dell 1028:0db9 and LGD 00:22:b9 +match, which also removes the idle power savings. The XPS 16 has the +same sink OUI under Dell subsystem 1028:0dba and exhibits the same lag. -Replace only that exact disable entry with a hardware-scoped workaround. -Exit Panel Replay for relevant frontbuffer activity and re-enter it after -50 ms of idle time. Use a dedicated delayed work item integrated under -the existing PSR mutex and frontbuffer busy-bit tracking; block normal -immediate re-entry while it is armed, wait for sink idle, and cancel it -on invalidate, pause, and disable. +Replace the XPS 14 disable entry and add an exact XPS 16 match for the +hardware-scoped workaround. Exit Panel Replay for relevant frontbuffer +activity and re-enter it after 50 ms of idle time. Use a dedicated +delayed work item integrated under the existing PSR mutex and frontbuffer +busy-bit tracking; block normal immediate re-entry while it is armed, +wait for sink idle, and cancel it on invalidate, pause, and disable. Other panels retain upstream behavior. @@ -24,9 +25,9 @@ Signed-off-by: Gaggery Tsai --- .../drm/i915/display/intel_display_types.h | 1 + drivers/gpu/drm/i915/display/intel_psr.c | 65 ++++++++++++++++++- - drivers/gpu/drm/i915/display/intel_quirks.c | 9 +-- + drivers/gpu/drm/i915/display/intel_quirks.c | 15 +++-- drivers/gpu/drm/i915/display/intel_quirks.h | 1 + - 4 files changed, 71 insertions(+), 5 deletions(-) + 4 files changed, 77 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index 2e6a857..51ae4ed 100644 @@ -194,13 +195,19 @@ index 883f297..7c772a9 100644 } struct intel_quirk { -@@ -267,7 +268,7 @@ static const struct intel_dpcd_quirk intel_dpcd_quirks[] = { +@@ -267,7 +268,13 @@ static const struct intel_dpcd_quirk intel_dpcd_quirks[] = { .subsystem_vendor = 0x1028, .subsystem_device = 0x0db9, .sink_oui = SINK_OUI(0x00, 0x22, 0xb9), - .hook = quirk_disable_edp_panel_replay, + .hook = quirk_panel_replay_alpm_cursor_lag, }, ++ { ++ .subsystem_vendor = 0x1028, ++ .subsystem_device = 0x0dba, ++ .sink_oui = SINK_OUI(0x00, 0x22, 0xb9), ++ .hook = quirk_panel_replay_alpm_cursor_lag, ++ }, }; diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h diff --git a/pkgbuilds/linux-ptl/PKGBUILD b/pkgbuilds/linux-ptl/PKGBUILD index ce312ef..eb62894 100644 --- a/pkgbuilds/linux-ptl/PKGBUILD +++ b/pkgbuilds/linux-ptl/PKGBUILD @@ -3,7 +3,7 @@ pkgbase=linux-ptl pkgver=7.1.8.arch1 -pkgrel=1 +pkgrel=2 pkgdesc='Linux for Panther Lake with Panel Replay power and OLED VRR fixes' url='https://github.com/archlinux/linux' arch=( @@ -55,7 +55,7 @@ b2sums=('84b59e5572d91f5ea1bb603aa7691851bd9549e1bf18a6bec8e27eb8a6e2de2e33da2ad '308952977c15ac3ad976ff1d99d0d186814d4b03e1c8512fc3a4c0ac1ecce3f74be8f3900a7fd286492d4f930bedc089674bf713a278fa80c35413e0e6339f97' 'SKIP' 'e672cd8d1f48756cf1062f84b83b4f676504cc6b44496511816a670435e00ccc22720fcbc36d013fd9b393389b955de5ec90715429ddbdcea860e1be80ab13fd' - '5ebe470414df104da9b9b20076369df0fd853ee50800926125c73641aad79dae8f52ab57ff793d9644d4f7834195d17e356567914d7a074b315f9de4924d4836' + '82b976261ed6f9c9ab4e30466eb91c74e94d38b489628d2de5b9974a0406a38bdec493112b84ed9f4b917662c871e70b1ea1c626d467eda245eaf7bfd973848b' 'ed167ad347e83f072316b0d980ad192d97d0c4a69f6d1841a96089aa17caa0e57cb785214ed9297290f034420b5d0838dc75f84c7e9a9459eb49fd9dc22f3a3e') b2sums_x86_64=('b10d80423aa3eb65e2046bf5b1998f9a7bdbc97494c6881881f50ffcdb5fe2e242782f59dbb6402cd77ce64b988dbf295fd9fa54f20180c76fbe88b82e1dbc9d') @@ -65,7 +65,7 @@ sha256sums=('ff01dcb449279d5b4cfccdb01fee639cf5ff1803f1749a77844dd33915422c49' '351cfb04db323bf5dd55ae8ce626650d20ba61441d202cadd8e198c6b9ef8f36' 'SKIP' '150f059eaf36580f9ca8eff4f917d8c3ee4eb5493507cbc29ce8e91b3ec56a93' - '82f3b6548b8badb9ec9ccc504c3d5d3ebdcb5f89837d5c48048ff8678f92dd61' + '4a1f12817a985361c7497965b7474efb5dd8dcc36d47d04d1bb98fd1941b5901' '1a0bebfba76248bbda67f8812278835de71754412369454ce60f4dde0bd81916') export KBUILD_BUILD_HOST=archlinux