From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9761ECA6015 for ; Fri, 9 Oct 2026 03:34:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5qhe4O6CZYQe5d2l4HBM86QGUn5Z6OpjW2eJDdh+pTM=; b=RIEgrlvvGQgZa2 fMKbnpthav88a/M+VCukjzKn72IwyhJpQTR5yvpYmomY16VqcywgwECBNEjYOXN0LOcGr55FvErVc jXW36wd0l7O01cEj5hwEcW1lPB8VlDJzT+p2b1qqjGMpUHXvaA3QFgKaAm2PCZV5V93I95ztg+eLt YcAMDgeAlE0pRq4zIsIKktWZYdygmGlB4LmLFIF7KlSl4wPhhBA3wb0wC1+8Zz6qHLqMifOk3Eai5 xBtTk9gsmhW/e+mJJ0rCFdIe7HSe530iilCi9btFF3dDKVzQpt3AJklBJtadfJAqIVvs4YfzsN03m 43ArJBhQEfiu+1B4ZP9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xF1Ng-00000005Oa0-3SBA; Fri, 09 Oct 2026 03:34:48 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xF1Nf-00000005OZZ-1hCz for linux-amlogic@lists.infradead.org; Fri, 09 Oct 2026 03:34:47 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id E0E8A40AE9; Fri, 9 Oct 2026 03:34:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8E5AA1F000FF; Fri, 9 Oct 2026 03:34:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791516886; bh=zCrrD7UJeHFn5AaSL61wuMA/BnAMgkgU8ds3AgoRUBM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=cGDH3PlWF9aDpv2LUifvr1YbFVsU0K5WjoAiR+Qt2k2j+E/Fccru2U6f3OUM2e6Za POZAvR+cgJxSlYjV/qMpzeod/p1VXLQfTFQrENVowEuEa1X8vpvu1/CmqmvRkUflmT CANq9z0fHDB8WcC0EZGnEjkxar14HF0sVIkbDvQUlwLZjkeW7l7qAdzwedJeZnNb/N bH58XVb5LS/+FkozQF21u2MWUfalU8Sl+jKlNLb56PXtXqGKTaAo9uzVZs2zDhoRb+ PoKJzoyKn+5PSGgBhi7fbBm5w/rMTpudfBXWRdMNZTqFlkniZxx2KvO+r61oO4G5GB 08cZrc9rZLg7A== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 11/20] drm/msm/dp: Cache eDP link capabilities after successful discovery To: "Xilin Wu" Cc: neil.armstrong@linaro.org, linux-amlogic@lists.infradead.org, dri-devel@lists.freedesktop.org In-Reply-To: <20261009-msm-dp-hdr10-v2-11-1835d4966da3@radxa.com> References: <20261009-msm-dp-hdr10-v2-0-1835d4966da3@radxa.com> <20261009-msm-dp-hdr10-v2-11-1835d4966da3@radxa.com> Date: Fri, 09 Oct 2026 03:34:46 +0000 X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIGRybS9tc20vZHA6IFRP Q1RPVSByYWNlIGluIGVEUCBkZXRlY3QgdW5leHBlY3RlZGx5IHBvd2VycyBvZmYgcGFuZWwKLSBb SGlnaF0gZHJtL21zbS9kcDogZURQIHBvd2VyIHNlcXVlbmNpbmcgdmlvbGF0aW9uIGluIG1zbV9l ZHBfYnJpZGdlX2RldGVjdCgpCi0tCgpjb21taXQgYmI5ZTM1NWYxOGE3MTdlODFmMjY3NDViMmJi NTk0NTE0YzJmNDNiMApBdXRob3I6IFhpbGluIFd1IDxzb3Bob25AcmFkeGEuY29tPgoKZHJtL21z bS9kcDogQ2FjaGUgZURQIGxpbmsgY2FwYWJpbGl0aWVzIGFmdGVyIHN1Y2Nlc3NmdWwgZGlzY292 ZXJ5CgpBbiBlRFAgcGFuZWwgbWF5IGJlIHBvd2VyZWQgb2ZmIGR1cmluZyBtb2RlIHZhbGlkYXRp b24uIFRoaXMgY29tbWl0IGNhY2hlcwplRFAgbGluayBjYXBhYmlsaXRpZXMgYWZ0ZXIgc3VjY2Vz c2Z1bCBkaXNjb3ZlcnkgdG8gcGVyc2lzdCB0aGVtIGFjcm9zcwpkaXNhYmxlIGFuZCBzdXNwZW5k LCBhbmQgZGlzY292ZXJzIGNhcGFiaWxpdGllcyBmcm9tIGNvbm5lY3RvciBkZXRlY3QgYmVmb3Jl CnRoZSBmaXJzdCBtb2Rlc2V0LgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k cC9kcF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2Rpc3BsYXkuYwo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5LmMKClsgLi4uIF0KCj4gQEAgLTk3MSw2ICs5ODMsNjEg QEAgdm9pZCBtc21fZHBfZGlzcGxheV9zZXRfcHNyKHN0cnVjdCBtc21fZHAgKm1zbV9kcF9kaXNw bGF5LCBib29sIGVudGVyKQoKWyAuLi4gXQoKPiArZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBt c21fZWRwX2JyaWRnZV9kZXRlY3Qoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJCQkJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewoKWyAuLi4gXQoKPiArCXJldCA9 IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoJmRpc3BsYXktPnBkZXYtPmRldik7Cj4gKwlpZiAo cmV0IDwgMCkKPiArCQlnb3RvIHB1dF9wYW5lbDsKPiArCj4gKwlwcmVwYXJlZCA9IHBhbmVsLT5w cmVwYXJlZDsKPiArCWlmICghcHJlcGFyZWQpCj4gKwkJZHJtX3BhbmVsX3ByZXBhcmUocGFuZWwp OwoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHRoaXMgc2VxdWVuY2UgcG93ZXIgdXAgdGhlIERQIGhv c3QgYW5kIFBIWSBiZWZvcmUgdGhlIHBhbmVsIGlzIHByZXBhcmVkPwoKQ2FsbGluZyBwbV9ydW50 aW1lX3Jlc3VtZV9hbmRfZ2V0KCkgdHJpZ2dlcnMgbXNtX2RwX3BtX3J1bnRpbWVfcmVzdW1lKCks CndoaWNoIGZvciBlRFAgaW5pdGlhbGl6ZXMgdGhlIERQIFBIWS4gUHJlcGFyaW5nIHRoZSBwYW5l bCBhZnRlcndhcmRzIHZpYQpkcm1fcGFuZWxfcHJlcGFyZSgpIG1lYW5zIHRoZSBQSFkgaXMgcG93 ZXJlZCBiZWZvcmUgcGFuZWwgVkREIGlzIGFwcGxpZWQuCkNvdWxkIHRoaXMgZHJpdmUgdm9sdGFn ZSBvbnRvIHRoZSBBVVggb3IgbWFpbiBsaW5rIHBpbnMgb2YgYW4gdW5wb3dlcmVkIHBhbmVsCmFu ZCB2aW9sYXRlIGVEUCBwb3dlciBzZXF1ZW5jaW5nIHJlcXVpcmVtZW50cz8KCltTZXZlcml0eTog SGlnaF0KQ2FuIGEgcmFjZSBjb25kaXRpb24gb2NjdXIgaGVyZSBpZiBhbiBhc3luY2hyb25vdXMg YXRvbWljIGNvbW1pdCBzdGFydHMKY29uY3VycmVudGx5PwoKSWYgdXNlcnNwYWNlIHRyaWdnZXJz IGEgbm9uLWJsb2NraW5nIGF0b21pYyBtb2Rlc2V0LCBpdCBkcm9wcyBsb2NrcyBiZWZvcmUKY29t bWl0dGluZy4gSWYgdXNlcnNwYWNlIHRoZW4gaW1tZWRpYXRlbHkgaXNzdWVzIGEgR0VUQ09OTkVD VE9SIGlvY3RsLCB0aGlzCmRldGVjdCBmdW5jdGlvbiB3aWxsIHJlYWQgcHJlcGFyZWQgPT0gZmFs c2UgYW5kIGNhbGwgZHJtX3BhbmVsX3ByZXBhcmUoKS4KClRoZSBjb25jdXJyZW50IGF0b21pYyBj b21taXQgd291bGQgdGhlbiBleGVjdXRlIHBhbmVsX2JyaWRnZV9wcmVfZW5hYmxlKCksCnNlZSB0 aGF0IHRoZSBwYW5lbCBpcyBhbHJlYWR5IHByZXBhcmVkLCBhbmQgc2tpcCBpdHMgb3duIHByZXBh cmF0aW9uLgoKPiArCWlmICghcGFuZWwtPnByZXBhcmVkKSB7Cj4gKwkJcmV0ID0gLUVJTzsKPiAr CQlnb3RvIHB1dF9wbTsKPiArCX0KPiArCj4gKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZkcC0+cGx1 Z2dlZF9sb2NrKSB7Cj4gKwkJcmV0ID0gZHJtX2RwX3JlYWRfZHBjZF9jYXBzKGRwLT5hdXgsIGRw Y2QpOwo+ICsJCWlmICghcmV0KSB7Cj4gKwkJCWRwLT5saW5rLT5sdHRwcl9jb3VudCA9IG1zbV9k cF9kaXNwbGF5X2x0dHByX2luaXQoZHAsIGRwY2QpOwo+ICsJCQlyZXQgPSBtc21fZHBfcGFuZWxf cmVhZF9saW5rX2NhcHMoZHAtPnBhbmVsLCBjb25uZWN0b3IpOwo+ICsJCX0KPiArCX0KPiArCj4g KwlpZiAoIXByZXBhcmVkKQo+ICsJCWRybV9wYW5lbF91bnByZXBhcmUocGFuZWwpOwoKW1NldmVy aXR5OiBIaWdoXQpJcyBpdCBwb3NzaWJsZSBmb3IgdGhpcyB1bnByZXBhcmUgdG8gc2h1dCBkb3du IHRoZSBwYW5lbCB3aGlsZSBhIGNvbmN1cnJlbnQKbW9kZXNldCBleHBlY3RzIGl0IHRvIHJlbWFp biBwb3dlcmVkPwoKQmVjYXVzZSB0aGUgYXRvbWljIGNvbW1pdCBtaWdodCBoYXZlIHNraXBwZWQg cHJlcGFyaW5nIHRoZSBwYW5lbCAoc2luY2UgaXQKd2FzIGFscmVhZHkgcHJlcGFyZWQgYnkgdGhp cyBmdW5jdGlvbiksIHRoaXMgY2FsbCB0byBkcm1fcGFuZWxfdW5wcmVwYXJlKCkKY291bGQgcG93 ZXIgb2ZmIHRoZSBwYW5lbCBvdXQgZnJvbSB1bmRlciB0aGUgYWN0aXZlIG1vZGVzZXQgYmFzZWQg b24gdGhlCnN0YWxlIGxvY2FsICdwcmVwYXJlZCcgdmFyaWFibGUuCgo+ICtwdXRfcG06Cj4gKwlw bV9ydW50aW1lX3B1dF9zeW5jKCZkaXNwbGF5LT5wZGV2LT5kZXYpOwoKW1NldmVyaXR5OiBIaWdo XQpEb2VzIHBvd2VyaW5nIGRvd24gdGhlIHBhbmVsIGJlZm9yZSB0aGUgUEhZIHZpb2xhdGUgdGhl IGVEUCBwb3dlci1vZmYgc2VxdWVuY2U/CgpIZXJlIGRybV9wYW5lbF91bnByZXBhcmUoKSByZW1v dmVzIFZERCBiZWZvcmUgcG1fcnVudGltZV9wdXRfc3luYygpIHBvd2Vycwpkb3duIHRoZSBEUCBo b3N0IGFuZCBQSFksIHdoaWNoIHJldmVyc2VzIHRoZSBleHBlY3RlZCBwb3dlci1kb3duIG9yZGVy LgoKPiArcHV0X3BhbmVsOgo+ICsJZHJtX3BhbmVsX3B1dChwYW5lbCk7Cj4gKwlpZiAocmV0IDwg MCkKPiArCQlkcm1fZGJnX2RwKGRwLT5kcm1fZGV2LCAiZURQIGNhcGFiaWxpdHkgZGlzY292ZXJ5 IGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gKwo+ICsJLyogQSBmYWlsZWQgQVVYIGFjY2VzcyBkb2Vz IG5vdCBtZWFuIHRoZSBmaXhlZCBwYW5lbCB3YXMgZGlzY29ubmVjdGVkLiAqLwo+ICsJcmV0dXJu IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ICt9CgotLSAKU2FzaGlrbyBBSSByZXZpZXcg wrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYxMDA5LW1zbS1kcC1oZHIxMC12 Mi0wLTE4MzVkNDk2NmRhM0ByYWR4YS5jb20/cGFydD0xMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGlu dXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E0E23CA5FED for ; Fri, 9 Oct 2026 03:34:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4833B10FE47; Fri, 9 Oct 2026 03:34:48 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="cGDH3PlW"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3299E10FE47 for ; Fri, 9 Oct 2026 03:34:47 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id E0E8A40AE9; Fri, 9 Oct 2026 03:34:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8E5AA1F000FF; Fri, 9 Oct 2026 03:34:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791516886; bh=zCrrD7UJeHFn5AaSL61wuMA/BnAMgkgU8ds3AgoRUBM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=cGDH3PlWF9aDpv2LUifvr1YbFVsU0K5WjoAiR+Qt2k2j+E/Fccru2U6f3OUM2e6Za POZAvR+cgJxSlYjV/qMpzeod/p1VXLQfTFQrENVowEuEa1X8vpvu1/CmqmvRkUflmT CANq9z0fHDB8WcC0EZGnEjkxar14HF0sVIkbDvQUlwLZjkeW7l7qAdzwedJeZnNb/N bH58XVb5LS/+FkozQF21u2MWUfalU8Sl+jKlNLb56PXtXqGKTaAo9uzVZs2zDhoRb+ PoKJzoyKn+5PSGgBhi7fbBm5w/rMTpudfBXWRdMNZTqFlkniZxx2KvO+r61oO4G5GB 08cZrc9rZLg7A== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 11/20] drm/msm/dp: Cache eDP link capabilities after successful discovery To: "Xilin Wu" Cc: neil.armstrong@linaro.org, linux-amlogic@lists.infradead.org, dri-devel@lists.freedesktop.org In-Reply-To: <20261009-msm-dp-hdr10-v2-11-1835d4966da3@radxa.com> References: <20261009-msm-dp-hdr10-v2-0-1835d4966da3@radxa.com> <20261009-msm-dp-hdr10-v2-11-1835d4966da3@radxa.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 09 Oct 2026 03:34:46 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] drm/msm/dp: TOCTOU race in eDP detect unexpectedly powers off panel - [High] drm/msm/dp: eDP power sequencing violation in msm_edp_bridge_detec= t() -- commit bb9e355f18a717e81f26745b2bb594514c2f43b0 Author: Xilin Wu drm/msm/dp: Cache eDP link capabilities after successful discovery An eDP panel may be powered off during mode validation. This commit caches eDP link capabilities after successful discovery to persist them across disable and suspend, and discovers capabilities from connector detect before the first modeset. > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp= /dp_display.c > --- a/drivers/gpu/drm/msm/dp/dp_display.c > +++ b/drivers/gpu/drm/msm/dp/dp_display.c [ ... ] > @@ -971,6 +983,61 @@ void msm_dp_display_set_psr(struct msm_dp *msm_dp_di= splay, bool enter) [ ... ] > +enum drm_connector_status msm_edp_bridge_detect(struct drm_bridge *bridg= e, > + struct drm_connector *connector) > +{ [ ... ] > + ret =3D pm_runtime_resume_and_get(&display->pdev->dev); > + if (ret < 0) > + goto put_panel; > + > + prepared =3D panel->prepared; > + if (!prepared) > + drm_panel_prepare(panel); [Severity: High] Does this sequence power up the DP host and PHY before the panel is prepare= d? Calling pm_runtime_resume_and_get() triggers msm_dp_pm_runtime_resume(), which for eDP initializes the DP PHY. Preparing the panel afterwards via drm_panel_prepare() means the PHY is powered before panel VDD is applied. Could this drive voltage onto the AUX or main link pins of an unpowered pan= el and violate eDP power sequencing requirements? [Severity: High] Can a race condition occur here if an asynchronous atomic commit starts concurrently? If userspace triggers a non-blocking atomic modeset, it drops locks before committing. If userspace then immediately issues a GETCONNECTOR ioctl, this detect function will read prepared =3D=3D false and call drm_panel_prepare(= ). The concurrent atomic commit would then execute panel_bridge_pre_enable(), see that the panel is already prepared, and skip its own preparation. > + if (!panel->prepared) { > + ret =3D -EIO; > + goto put_pm; > + } > + > + scoped_guard(mutex, &dp->plugged_lock) { > + ret =3D drm_dp_read_dpcd_caps(dp->aux, dpcd); > + if (!ret) { > + dp->link->lttpr_count =3D msm_dp_display_lttpr_init(dp, dpcd); > + ret =3D msm_dp_panel_read_link_caps(dp->panel, connector); > + } > + } > + > + if (!prepared) > + drm_panel_unprepare(panel); [Severity: High] Is it possible for this unprepare to shut down the panel while a concurrent modeset expects it to remain powered? Because the atomic commit might have skipped preparing the panel (since it was already prepared by this function), this call to drm_panel_unprepare() could power off the panel out from under the active modeset based on the stale local 'prepared' variable. > +put_pm: > + pm_runtime_put_sync(&display->pdev->dev); [Severity: High] Does powering down the panel before the PHY violate the eDP power-off seque= nce? Here drm_panel_unprepare() removes VDD before pm_runtime_put_sync() powers down the DP host and PHY, which reverses the expected power-down order. > +put_panel: > + drm_panel_put(panel); > + if (ret < 0) > + drm_dbg_dp(dp->drm_dev, "eDP capability discovery failed: %d\n", ret); > + > + /* A failed AUX access does not mean the fixed panel was disconnected. = */ > + return connector_status_connected; > +} --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261009-msm-dp-hdr= 10-v2-0-1835d4966da3@radxa.com?part=3D11