{"id":2220758,"url":"http://patchwork.ozlabs.org/api/1.1/covers/2220758/?format=json","web_url":"http://patchwork.ozlabs.org/project/ubuntu-kernel/cover/20260408002417.231437-1-acelan.kao@canonical.com/","project":{"id":15,"url":"http://patchwork.ozlabs.org/api/1.1/projects/15/?format=json","name":"Ubuntu Kernel","link_name":"ubuntu-kernel","list_id":"kernel-team.lists.ubuntu.com","list_email":"kernel-team@lists.ubuntu.com","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260408002417.231437-1-acelan.kao@canonical.com>","date":"2026-04-08T00:24:16","name":"[SRU,R,0/1] drm/i915/lnl+/tc: Fix false disconnect of active DP-alt TC port during long HPD pulse","submitter":{"id":2976,"url":"http://patchwork.ozlabs.org/api/1.1/people/2976/?format=json","name":"AceLan Kao","email":"acelan.kao@canonical.com"},"mbox":"http://patchwork.ozlabs.org/project/ubuntu-kernel/cover/20260408002417.231437-1-acelan.kao@canonical.com/mbox/","series":[{"id":499051,"url":"http://patchwork.ozlabs.org/api/1.1/series/499051/?format=json","web_url":"http://patchwork.ozlabs.org/project/ubuntu-kernel/list/?series=499051","date":"2026-04-08T00:24:16","name":"drm/i915/lnl+/tc: Fix false disconnect of active DP-alt TC port during long HPD pulse","version":1,"mbox":"http://patchwork.ozlabs.org/series/499051/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2220758/comments/","headers":{"Return-Path":"<kernel-team-bounces@lists.ubuntu.com>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=LgXT3MCs;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com\n (client-ip=185.125.189.65; helo=lists.ubuntu.com;\n envelope-from=kernel-team-bounces@lists.ubuntu.com;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fr3jF2F2Rz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 10:24:33 +1000 (AEST)","from localhost ([127.0.0.1] helo=lists.ubuntu.com)\n\tby lists.ubuntu.com with esmtp (Exim 4.86_2)\n\t(envelope-from <kernel-team-bounces@lists.ubuntu.com>)\n\tid 1wAGiX-0003bb-6E; Wed, 08 Apr 2026 00:24:25 +0000","from mail-qk1-f169.google.com ([209.85.222.169])\n by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.86_2) (envelope-from <acelan@gmail.com>) id 1wAGiV-0003b2-VB\n for kernel-team@lists.ubuntu.com; Wed, 08 Apr 2026 00:24:24 +0000","by mail-qk1-f169.google.com with SMTP id\n af79cd13be357-8d933da14f0so218901085a.2\n for <kernel-team@lists.ubuntu.com>; Tue, 07 Apr 2026 17:24:23 -0700 (PDT)","from localhost (211-75-139-220.hinet-ip.hinet.net. [211.75.139.220])\n by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8db0d85a237sm57877085a.5.2026.04.07.17.24.19\n for <kernel-team@lists.ubuntu.com>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 07 Apr 2026 17:24:21 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775607862; x=1776212662; darn=lists.ubuntu.com;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:sender:from:to:cc:subject:date:message-id:reply-to;\n bh=6CEMrl/vXshS4OjFZphFfpAT/WMvKeDsA3FSNtHYEJ0=;\n b=LgXT3MCssR/bs/0uxuFOAOuD7DMrFPELpyq/8TkaESO2+f/KfOAODU3b+XT/ss2Axn\n 3JcmurSss6tf3deWyNFAqZsZUisCw7Vuet8O6p+fHOUTVc9vzTRKyAcmdhgdxgCw0eGX\n j+RHtUtGJAsU7dq/cCFnyBZXwrzGIJmA7KlmevOdYfvej5VFwh41ycJyMmGBf/XOjLOk\n PapZ7xvI0LbfNLAFsWNz68Ox8zNxOg9r4mCUu+tuXUVkVthAvcMd2QVOFIEXTyGWhj2r\n xNUg2snnbDguq/00BBWR/I+TFJBh3LsvFT3Esg/xDANG0CkqiuwEjdmyqYWbIgCwohp1\n a42Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775607862; x=1776212662;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:sender:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=6CEMrl/vXshS4OjFZphFfpAT/WMvKeDsA3FSNtHYEJ0=;\n b=NTGYqen+JbZiLND0axOHvXHsGDAdc0IARAoBleEWEjoIsNVD3o0//0XMk+R8/Shok3\n wCnfgy2Cqi1G2K4G+wu3kVvWtVV5LGwi7Uqe5+ZDyygi7sw7ldi1sPfcAOtoPRBy1k07\n bSsRFKuQlDZq7HvJ6hYZbvPB2zgVNQSavo7BvzbJzSUD7Hl21mkJf7eYqPpPq+jPmT/5\n UHe7rhLDftg4G/MUJS3Lgi13AIwKi8mD6QPH4jQ50t4IZRAglLN7aCqFFCtXY+AQtl1m\n spRZCYBYO9cZVzmWuXq5uCG0+RKy6y0asbqqe3tmFVcrrItGUGG7MoP1D6H2M/mKuhVW\n FOJg==","X-Gm-Message-State":"AOJu0YyJCYGbhjqnvg7R1vcbKf/5cpd5QxRg2c/UUrEaEzk40TLfvmqI\n K1cxG/+ncJr/tBmRCsqp96gsL17zzxDluirTEL6b2knkDPPKsiybK7sEfWhB8Db1","X-Gm-Gg":"AeBDieto27WwrtaHWHgpGKSYV525reRfIFHz7wyPCY9wcd26TSIRgMWNP/lIYXMS+IA\n zD5e+6xHxCRP6YnwHYpckvDnbG6kAIF6L+hVcABf4jOhwl4sOKSxsua6ZBUMt0vTugyn4S+jVTn\n fN0m6tVqnqGqbyXsmocq/XEPLLBDESEEnwQ4I2Kypenav8FfaqJwLZpp0xapsBu4LR+OKDUtkl1\n ch55LWLNMdM5V8Wr53AhuylFLbQMmgiwe0EiWyFi8j4UBl7HKMwzY+NcayH2FRl9/T7fswvfj5z\n 7QquLQjbWFhBWLJOoljpxZ+0qjOAgC97SBSNBy/zfxkMUBmdvvTD+4J51+gSG9lPRz3UCeCoI9v\n GghK1+iDKkXM+nCWsfe8EIBXdc+zi+tjZHrSZKjzWW91l5BuuX+cNq+S5oyQicNaJQw5D12t8oB\n wlfrjM/WwTSg+Khn1oL8WSDj1z/5AAJVfBG2yDxrpXPzFPfOiMrwXx","X-Received":"by 2002:a05:620a:6ccc:b0:8cf:c56f:cadd with SMTP id\n af79cd13be357-8d41bbd69d5mr2740670585a.13.1775607861554;\n Tue, 07 Apr 2026 17:24:21 -0700 (PDT)","From":"AceLan Kao <acelan.kao@canonical.com>","To":"kernel-team@lists.ubuntu.com","Subject":"[SRU][R][PATCH 0/1] drm/i915/lnl+/tc: Fix false disconnect of active\n DP-alt TC port during long HPD pulse","Date":"Wed,  8 Apr 2026 08:24:16 +0800","Message-ID":"<20260408002417.231437-1-acelan.kao@canonical.com>","X-Mailer":"git-send-email 2.53.0","MIME-Version":"1.0","Received-SPF":"pass client-ip=209.85.222.169; envelope-from=acelan@gmail.com;\n helo=mail-qk1-f169.google.com","X-BeenThere":"kernel-team@lists.ubuntu.com","X-Mailman-Version":"2.1.20","Precedence":"list","List-Id":"Kernel team discussions <kernel-team.lists.ubuntu.com>","List-Unsubscribe":"<https://lists.ubuntu.com/mailman/options/kernel-team>,\n <mailto:kernel-team-request@lists.ubuntu.com?subject=unsubscribe>","List-Archive":"<https://lists.ubuntu.com/archives/kernel-team>","List-Post":"<mailto:kernel-team@lists.ubuntu.com>","List-Help":"<mailto:kernel-team-request@lists.ubuntu.com?subject=help>","List-Subscribe":"<https://lists.ubuntu.com/mailman/listinfo/kernel-team>,\n <mailto:kernel-team-request@lists.ubuntu.com?subject=subscribe>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"kernel-team-bounces@lists.ubuntu.com","Sender":"\"kernel-team\" <kernel-team-bounces@lists.ubuntu.com>"},"content":"From: \"Chia-Lin Kao (AceLan)\" <acelan.kao@canonical.com>\n\nBugLink: https://bugs.launchpad.net/bugs/2143879\n\n[Impact]\nOn HP systems (CID: 202512-38233) with Intel Lunar Lake GPU and HP Type-C to HDMI dongle\n(03f0:8a4a), switching to mirror mode via hotkey fails. The system cannot switch mirror\nmode on X11 when using a Type-C to HDMI external monitor.\nThe root cause is that on XELPDP+ platforms (Lunar Lake and later), the LTTPR dongle\nfires a long HPD pulse after link training. The tc_phy_hpd_live_status() function reads\nPICAINTERRUPT_ISR to determine DP-alt live status, but the XELPDP_DP_ALT_HOTPLUG_MASK\nbit deasserts during a long HPD pulse. Since intel_tc_port_handles_hpd_glitches() returns\ntrue for TC dp-alt ports, the 4ms glitch-filter retry loop is bypassed, giving no\nprotection against this transient deassertion. The hotplug handler then marks DP-1 as\ndisconnected, and the compositor disables eDP-1.\nError log:\n  xe 0000:00:02.0: [drm:intel_dp_hpd_pulse [xe]] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long\n  xe 0000:00:02.0: [drm:drm_dp_dpcd_access [drm_display_helper]] AUX USBC1/DDI TC1/PHY TC1: Too many retries, giving up. First error: -6\n  xe 0000:00:02.0: [drm:intel_hotplug_detect_connector [xe]] [CONNECTOR:271:DP-1] status updated from connected to disconnected (epoch counter 178->179)\n  [drm:intel_dp_hpd_pulse] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long\n  [drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (disconnected -> tbt-alt)\n  [drm:intel_dp_hpd_pulse] got hpd irq on [ENCODER:270:DDI TC1/PHY TC1] - long\n  [drm:intel_hotplug_detect_connector] [CONNECTOR:271:DP-1] status updated from connected to disconnected\nAffected hardware: HP systems (CID: 202512-38233) with Intel Lunar Lake GPU\nFailure rate: High (reproducible with HP Type-C to HDMI dongle 03f0:8a4a on X11)\n\n[Fix]\nWhen the port has an active link (link_refcount > 0), trust the PHY ownership register\n(XELPDP_PORT_BUF_CTL1 & XELPDP_TC_PHY_OWNERSHIP) over the transient HPD live status\nin intel_tc_port_connected(). The ownership register is stable and does not toggle\nduring HPD pulses. The TC cold power domain is guaranteed to be held when\nlink_refcount > 0, as __intel_tc_port_lock() already asserts and verifies this via\ntc_phy_is_owned() before reaching intel_tc_port_connected().\nThe patch is currently under review on the Intel DRM mailing list (not yet merged to\nmainline).\nPatch:\nhttps://lore.kernel.org/lkml/20260305075857.40077-1-acelan.kao@canonical.com/T/#u\n\n[Test Plan]\n1. Connect HP Type-C to HDMI dongle (03f0:8a4a) to the system.\n2. Ensure the external monitor is displaying output (extended mode).\n3. Press the hotkey to switch to mirror mode.\nWithout the patch: The external monitor fails to switch to mirror mode. The kernel log\nshows DP-1 connector status updated from connected to disconnected, and the internal\ndisplay may also blank.\nWith the patch: Mirror mode switches successfully. The kernel log shows the TC port\ncorrectly stays in or returns to dp-alt mode:\n  [drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (dp-alt -> disconnected)\n  [drm:intel_tc_port_update_mode] Port D/TC#1: TC port mode reset (disconnected -> dp-alt)\n\n[Where problems could occur]\nIt may affect the i915/xe display driver's Type-C port management on Lunar Lake and\nlater platforms.\nIf the condition `tc_phy_is_owned()` returns a stale or incorrect ownership state while\nlink_refcount > 0, the driver could incorrectly report a port as connected when the\nphysical link has actually been removed. This would manifest as a phantom connected\ndisplay that cannot be detected as disconnected until the next full port reset, potentially\ncausing display configuration errors or a hung compositor.\nAdditionally, the early-return path bypasses the existing tc_phy_hpd_live_status() mask\ncheck. If there is an edge case where link_refcount > 0 but the port mode transitions\naway from TC_PORT_DP_ALT between the refcount check and the ownership check, the port\nstatus could be misreported.\nThe patch is submitted upstream for review but not yet merged.\n\n[Other Info]\nThe patch is submitted to the Intel DRM mailing list for review but not yet merged to\nmainline.\nThis issue only reproduces with the HP Type-C to HDMI dongle (03f0:8a4a) on X11. Wayland\nand other dongle types (Type-C to DP/VGA, built-in HDMI/Thunderbolt) are not affected.\n\nChia-Lin Kao (AceLan) (1):\n  UBUNTU: SAUCE: drm/i915/lnl+/tc: Fix false disconnect of active DP-alt\n    TC port during long HPD pulse\n\n drivers/gpu/drm/i915/display/intel_tc.c | 5 +++++\n 1 file changed, 5 insertions(+)"}