From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2ACE42885F for ; Sat, 12 Sep 2026 12:48:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217311; cv=none; b=amwP0L3R0A0rnMQiQsEBhZ5MzJm5plBgciChjESnNo+CI68WFokbn/SZLNaDMKo1I4hsuyQMO95gi6wN28aNDM5cgfpP2mSNxZNGQfI+1IO9ZC+49bFnukGr0qbZsofOiBEqVNbKP1Fm80G0EV/0d3QmBiUBfYCmCgxeTT9FgbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217311; c=relaxed/simple; bh=4uipgtNRIs5qYNUtyZUsdJb0hErPAZce83PVI4j94so=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AoVX5el8dWZGaPaH3s/MHPjF0WKVLdnaDcgia883XWV2Oupq/dcwAnikXnLN3bLiUtgM3nwwXkAcL8RnSIHbXnBq9Bu4E/DbJFm3WpzVXwOVzlWVGW5dbXOBMgjktNde3VDYHgM+9WDUcNke1M1xcWxGvJtDZdF3EXLUfIV2oFM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=hfMEWa69; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XEOyk6Yk; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="hfMEWa69"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XEOyk6Yk" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBdaU12239148 for ; Sat, 12 Sep 2026 12:48:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= r8zAn/guR7xH19vvVnJFNiMrsIee98EJBNEAzw4/qBE=; b=hfMEWa697HLp2ZKw aA+Nz3thc1sl8jU4pjn2fuM5N9p4zMWU0EVC9bHm7gv0guz0JI4VdMEJPfmpWrSZ I0X8rBEiQRBSIwstA7WskrWKk/FssntFjpQNQqiIBZGkkap4BDCRgf86xdeCD2Ey kV1pdjjlIxQVYb/xpvKZfzyHBYV23hCqe8lC4ZgS953MAM53AX9fzWFLGNSmTibW xuCEa04FGXRWRGVMU0AN48/UGCfT0fV9ieY7ixRwQT3TJXfHeubHxhFP57ZPicqA tzARAfUOaC3ONKbaPTIuZ37pJc0FuDnD9ZkT2pFfkA1cBMDEQ7EMSDPs11CqX94H oWabyQ== Received: from mail-ua1-f71.google.com (mail-ua1-f71.google.com [209.85.222.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c8xa3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:28 +0000 (GMT) Received: by mail-ua1-f71.google.com with SMTP id a1e0cc1a2514c-98055f91346so1323804241.2 for ; Sat, 12 Sep 2026 05:48:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217308; x=1789822108; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=r8zAn/guR7xH19vvVnJFNiMrsIee98EJBNEAzw4/qBE=; b=XEOyk6Ykk1gF+lElPCr7L3FXUXaUvFpNvuNKVWhtfZmvWsMsKNvb5YYU2w1Fn04ssw vtuMeGu+qcn3Ws1M/MgfKHVB2k9bkPo6taIOL0HsMwVQmbtrwHFbqIXY3VvemOeohkj/ g849YZVgBkeY6w4hQOfs8oiz68duww7is637XK8Kc1dPSE/g2XrLnjsD0knjRngATJ4W gyr7MVhuCnLhsZ38IiFErdZvPoHuhynnXHMNZVKhF3D8EszpNIymCZQMqLVGv+i7qUfV sL09k7IUTQucUgjdK7R2x4ZWfFLUCDdNtBYREoDh8iQfX+hLws3a6HT0m0QtK6i2gEcP zMqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217308; x=1789822108; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=r8zAn/guR7xH19vvVnJFNiMrsIee98EJBNEAzw4/qBE=; b=WEMOai26GvlXlr9WPWtpO7wtgGqYbanbU4LuqFdgFd6ooLNTUbtCQIYU2+vAWJJoN/ DYfeLWPG/bXLDrZbYUK/vMLAmGBr9Oonam3BIfEJzdD4s48OvbiXVJGrB3nicEjqTeWi QhAAEj1oioz4eUlQXexR2ShEg0IfHRspzhJd28HtcJBcocO04o+E+e0xaU9VjUH0SFkP hVD2TGwja23las0EFuMGcFhisQII4g/Ocz2un90aopfCu3cYI1oLTuo4r/VhE9ho4z1M GugGku64ScxbXCVPDPlgdCh8tDFTWdYTReKxlQhLYILMs5am1LCr3kDpQ/eZwOGes8rr VRWw== X-Forwarded-Encrypted: i=1; AKwUvBwr9clXaU9I2+0XZtbgj/ONKJkN5nStMvp45whCdvJZ0QJ5tgdprmwY81k3p8igB2nqe1vel5ItlQsd55I=@vger.kernel.org X-Gm-Message-State: AFuF++nK/iYQFMtUAmpkKwSL0IN6lv03pOs8Gt1QWFMdFqtr1rirzFvR TxyI//AsMa++4OWe8YGaV91ZDmkv7IfMV8pZ5dGQea14BR/QgM5ghGHmjepKzBz0ufec2jYphx+ FV4jTYAEJp4srVzcv2cz4GF/Sd9I1x6yYi41hxBKO64vdes/4siOlZhudAujW/zJQkHIOUXKL2x k= X-Gm-Gg: AYBFou3v7VCaAlLkNd6vRwC7dwCDNQQAqdAz9LYXZXccWMq6C8ZmqA/L2lN4tPW4YCZ 9YrFQzJGbhEkGpwCv6xxhXSBJtcattDdcguCr1O9UZBCxTCvUr1kdUbYBmV/FdglPtg8OzNgxnQ JOZLrth6Ntp/4XUlW5skSbNGgm2Qw5TIDz5oBoLdSh/guPS+pIQ5rRfYhP8YPwM+4cr+Jlglgxy f8gPy2Z9iJYPVNfpkjMpSQOcooBEcdaSWhfSFSkL1c4NdW1HcAKVF9zp9SEtESGZvaAp1J8eMoQ OlF36X+3g/l3PekZPelOxWIE1q/Z9S/iI3ODeX2AxH2P6lMlNhcxthy/Hk9DMWi315dtd684REP eOSLNYGLhmRDoXDBAgiTYj7069WJMuuKFsmzcqnHfcraLekqfK2tJ1znv5JgKoB+/G/k0vt1mb6 /UV1/Wma5mto2a X-Received: by 2002:a05:6102:8607:20b0:783:79ac:9db2 with SMTP id ada2fe7eead31-792a47f5970mr4006981137.3.1789217307734; Sat, 12 Sep 2026 05:48:27 -0700 (PDT) X-Received: by 2002:a05:6102:8607:20b0:783:79ac:9db2 with SMTP id ada2fe7eead31-792a47f5970mr4006948137.3.1789217307256; Sat, 12 Sep 2026 05:48:27 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:26 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:21 +0300 Subject: [PATCH v3 1/8] drm/msm: serialise framebuffer pin state Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-1-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4844; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=4uipgtNRIs5qYNUtyZUsdJb0hErPAZce83PVI4j94so=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoWhRUgj92XA1t8cgUikty59wtzwlwc/cc+g LvGItd1o8yJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFgAKCRCLPIo+Aiko 1SVBB/wIDj2hNjtFS94Dq2NKOqOACF7g4dlURrxlnTY7k/i770eR0iBP1RzHD2/nzFAvRvR2TEL NzrHxZi9Delu7Dkie+3Rw/EOmBjD4QKi/6ZUOJ5BnKuGwV4to8DwMyTl/xBRwFHbcobHO7cJngj qRRah3PqgGm0KiKbMGa1OO64bVfGEMH7fZRY4UI65B7mCHv6GGlHcY+gBu+bKIPv6wuOpur/hov x7G3mDN3MdAn/eaj/VCQdaTsF7671HLgQJvjW3i8r6RncMxqBGoQDu+11fJlIxjeE8mTGEpc8HW 1YMcQQeI4lQmBAYmten0N/y63HDQBuzc5zyz4BIyKyESYWy9 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: _xGtziMC0RE4fEWod_1jHgWAoYZ7nV41 X-Authority-Analysis: v=2.4 cv=Pv4G/AM3 c=1 sm=1 tr=0 ts=6aa54a1c cx=c_pps a=KB4UBwrhAZV1kjiGHFQexw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=-SLBVWGn-DbGgWclMpAA:9 a=QEXdDO2ut3YA:10 a=o1xkdb1NAhiiM49bd1HK:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX2leAs9oYCKmJ wZc89udv17YF6FdEiPTJNDiBpmyr/dk4iJ2MGg1v2ABLqh25oI2dWY56huIDV5P32OfiS6vsNIP xIp++7JMNsxnfwzald+7ld9OMNsMFpU= X-Proofpoint-ORIG-GUID: _xGtziMC0RE4fEWod_1jHgWAoYZ7nV41 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX/hpyw/uXeRXf ULhb52HW2BxzY4SyjmibFToSvCAl5uDcJw+v4zImnMnF8abLcSgV4wUownGdmOxk0KbWkA/zvbE 65Zs4KjTmRsz6dMHpQBQo5yZoStUNWuU748csgOudMITYxVHe7UVkZVhx9Px9ZjUlbXsHcKtBP1 2WX8ODw7/Ja+kVtkxKeBhKsuuuFJjdfw/cbCI19rF50dWq0q7ac78b7SQfzafVSp9GrcEiHMJY6 C7k/mo6rf7vYXdwEuLwa+nKRYC/Z+9aEWaK3X7ijftEU+/retcbpkN1b/Oxn6r7kdyNlg4S6IPm C+s+0YtNy5lXtmSokTm0ok+xIEWK48vXv2BSa0JvC9nXXEL/mJBoawTqG9yp8SG+aOWY4T3rgLD tkcVN6RjMOycCGbcAAukCEGZbYl3BkYO6uIFeMD3IypgYDHO8Prutd2JHBrUzxNEUfxCfwBPJ09 yhLyZZB8XR3OVyMY6yQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 adultscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 prepare_count, iova[] and the pins they describe are updated locklessly, but drm_atomic_helper_commit() prepares a new state in parallel with the completion of the previous one -- stall_checks() only stalls on the second previous commit. Commit N+1's ->prepare_fb() thus runs while commit N is in ->cleanup_fb(), and for a double-buffered flip that is the same framebuffer: cleanup: prepare_count 1 -> 0 prepare: prepare_count 0 -> 1, pins, stores iova[] cleanup: memset(iova, 0) leaving the plane programmed with a NULL base address: arm-smmu 15000000.iommu: Unhandled context fault: fsr=3D0x402, iova=3D0x00000100, fsynr=3D0x3e0023, cbfrsynra=3D0x1c00, cb=3D11 The opposite order is broken too since commit 8ac37c88f991 ("drm/msm: Refcount framebuffer pins"): a prepare which finds the count non-zero returns at once, assuming iova[] is populated. Both callbacks may sleep, so a mutex will do. drm_framebuffer_init() adds the framebuffer to the object idr, from where userspace can reach it before msm_framebuffer_init() returns, so take the private state out of its way and initialise it first. Fixes: 8ac37c88f991 ("drm/msm: Refcount framebuffer pins") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_fb.c | 44 +++++++++++++++++++++++++++++++++-------= ---- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index 60c108d35d2a..77415302e6d8 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c @@ -22,9 +22,12 @@ struct msm_framebuffer { /* Count of # of attached planes which need dirtyfb: */ refcount_t dirtyfb; =20 + /* Protects the pin state below: */ + struct mutex lock; + /* Framebuffer per-plane address, if pinned, else zero: */ uint64_t iova[DRM_FORMAT_MAX_PLANES]; - atomic_t prepare_count; + unsigned int prepare_count; }; #define to_msm_framebuffer(x) container_of(x, struct msm_framebuffer, base) =20 @@ -45,9 +48,17 @@ static int msm_framebuffer_dirtyfb(struct drm_framebuffe= r *fb, clips, num_clips); } =20 +static void msm_framebuffer_destroy(struct drm_framebuffer *fb) +{ + struct msm_framebuffer *msm_fb =3D to_msm_framebuffer(fb); + + mutex_destroy(&msm_fb->lock); + drm_gem_fb_destroy(fb); +} + static const struct drm_framebuffer_funcs msm_framebuffer_funcs =3D { .create_handle =3D drm_gem_fb_create_handle, - .destroy =3D drm_gem_fb_destroy, + .destroy =3D msm_framebuffer_destroy, .dirty =3D msm_framebuffer_dirtyfb, }; =20 @@ -76,13 +87,15 @@ int msm_framebuffer_prepare(struct drm_framebuffer *fb,= bool needs_dirtyfb) struct msm_drm_private *priv =3D fb->dev->dev_private; struct drm_gpuvm *vm =3D priv->kms->vm; struct msm_framebuffer *msm_fb =3D to_msm_framebuffer(fb); - int ret, i, n =3D fb->format->num_planes; + int ret =3D 0, i, n =3D fb->format->num_planes; =20 if (needs_dirtyfb) refcount_inc(&msm_fb->dirtyfb); =20 - if (atomic_inc_return(&msm_fb->prepare_count) > 1) - return 0; + mutex_lock(&msm_fb->lock); + + if (msm_fb->prepare_count++) + goto out; =20 for (i =3D 0; i < n; i++) { msm_gem_vma_get(fb->obj[i]); @@ -90,10 +103,13 @@ int msm_framebuffer_prepare(struct drm_framebuffer *fb= , bool needs_dirtyfb) drm_dbg_state(fb->dev, "FB[%u]: iova[%d]: %08llx (%d)\n", fb->base.id, i, msm_fb->iova[i], ret); if (ret) - return ret; + break; } =20 - return 0; +out: + mutex_unlock(&msm_fb->lock); + + return ret; } =20 void msm_framebuffer_cleanup(struct drm_framebuffer *fb, bool needed_dirty= fb) @@ -106,8 +122,10 @@ void msm_framebuffer_cleanup(struct drm_framebuffer *f= b, bool needed_dirtyfb) if (needed_dirtyfb) refcount_dec(&msm_fb->dirtyfb); =20 - if (atomic_dec_return(&msm_fb->prepare_count)) - return; + mutex_lock(&msm_fb->lock); + + if (--msm_fb->prepare_count) + goto out; =20 memset(msm_fb->iova, 0, sizeof(msm_fb->iova)); =20 @@ -115,6 +133,9 @@ void msm_framebuffer_cleanup(struct drm_framebuffer *fb= , bool needed_dirtyfb) msm_gem_unpin_iova(fb->obj[i], vm); msm_gem_vma_put(fb->obj[i]); } + +out: + mutex_unlock(&msm_fb->lock); } =20 uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int plane) @@ -199,14 +220,15 @@ msm_framebuffer_init(struct drm_device *dev, const st= ruct drm_format_info *info, =20 drm_helper_mode_fill_fb_struct(dev, fb, info, mode_cmd); =20 + refcount_set(&msm_fb->dirtyfb, 1); + mutex_init(&msm_fb->lock); + ret =3D drm_framebuffer_init(dev, fb, &msm_framebuffer_funcs); if (ret) { DRM_DEV_ERROR(dev->dev, "framebuffer init failed: %d\n", ret); goto fail; } =20 - refcount_set(&msm_fb->dirtyfb, 1); - drm_dbg_state(dev, "create: FB ID: %d (%p)\n", fb->base.id, fb); =20 return fb; --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5BB1A47D463 for ; Sat, 12 Sep 2026 12:48:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217315; cv=none; b=c1rRNbWNyu4FPibiu/hr6DTP5NA7gFkJ0R6kb4otPbcWuCLh2UhijzpTUEnrn2lE8FXU+bdWyCmj/w1PXL1LuzZaLaErjyFt8rQwebvCdpL3OPLo+a8bNQC0PnRpJ4TExwZmRNcUw4H1u/dKRkgJL19e7AmBy/9lgr2tlmJOioI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217315; c=relaxed/simple; bh=QY9ysFxhmb2CtXGWZoEbLvZr15d49FXuEMy/zVQSVA0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Kszm39uT3ztD32MtfXrgaou6jJRZWsn1X4Nff6Ohdd2p7lMhGdDalZhcgI1axeq5TXTcEoedvMszEB8eVn8tg3hF2p+lQ1TEL+V9DQh2xQC6192+lb1fGr+DBx2QqRvRgIdW2tN7qfEDb+H9EJgju79wGtprtWS6gMKugpvuKS8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=EGHgIF+y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Sc7brDMX; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="EGHgIF+y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Sc7brDMX" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBe2ag2240362 for ; Sat, 12 Sep 2026 12:48:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ajJdRqrp/b4NGOrhwXdxyfHIWwR8F0qeHZQ4G6QppSc=; b=EGHgIF+yaDOOM4HY V9CwnZMaXh9qdyvB1FGYy0cc47pM3gKJPw5y4GSpcE2DCaT1glY+TRo1VuDinUna z7QYOD4/RcQwtJLRO8cFZlDVU0thar4r8OhHxn6iGZwn0SIsSjK22xEtRyQSk8Kk 7HbVsH8Yzzg3ymCciiq0xTpl7g6ZKN2ay3l37czv/W3pZ0uLsGyxmjjJQykHPikj EF2bpX9+hfZ89wCPKQThm4w72McFBKjnXQlL9ncZJSTB2qbKCeOuv41tXp8Ld1kh zqOKvMhz9ZqoDSBbGiP/Oz4TOBnGTIHDpjhWDbi/JjmQhqNVRJ7qtv85JLNOihz+ 3aeJ6A== Received: from mail-vk1-f200.google.com (mail-vk1-f200.google.com [209.85.221.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c8xaa-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:33 +0000 (GMT) Received: by mail-vk1-f200.google.com with SMTP id 71dfb90a1353d-5c851df59edso607741e0c.3 for ; Sat, 12 Sep 2026 05:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217312; x=1789822112; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ajJdRqrp/b4NGOrhwXdxyfHIWwR8F0qeHZQ4G6QppSc=; b=Sc7brDMX/PreXSIMaiKLZVNdZrtlC+uJ0sSyLbO6OxsdJb3nzkKKYbvruEoBsx7c33 0PY7GcpvA5ot1z1a77WD5kDeovJvIP6xggoNB+V4aAFEVe3vVv9g3s2uQL0kzOQT7nbe zwHNLf4c+GVoAXGU6KDLefmVBjhpAAj6XLhkxGLfA1pEE5eRORVRC4YwQXc3HOPMsFsu y6MT0rKj4TuC500uWR14pdw/jfJErws+Qk1HApjtfRRjTQN75KtzqDab0JKsRKBo/hJU j/wyIZzqV90/yNlUC5lT5uQk1jNO7MqxFLYD0YdaVE1AzKHTj6Ee48n81fKw0jxjcCqa a71g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217312; x=1789822112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ajJdRqrp/b4NGOrhwXdxyfHIWwR8F0qeHZQ4G6QppSc=; b=WC/6uxctmvsTPfvpPJebyjV7VhGq1axn5zW9gnHiqxnBM/Uzv+uCv/ILrvIRyAWbxz LaNdxvmnflwosd9Er3bqBnKqTS7eY/TnL1JMEubE30wlhN4R8s4GO+vZnBGphLeyrJgV Chxo2wLjzvkEZ+wtS/UrA6zu3EOy+9edWpvBWxX7j/RdMgbjWBuMmByO9s1u8Vqy126t g61UcJPOGz5ggWy1g33pEGZ9ifFO/28PhwDydakDeFcGabY5W6lsPYXBOgRnWepJA6Wr ceszvlIIv9tL/xKcs8miH2J2TmX3y2QGXlxi95UYjdkzLh6fkYvF8cvOuc1hQOAqChX4 acmw== X-Forwarded-Encrypted: i=1; AKwUvByvxQntloKtxT8ArjO+OG6Z0oLfJyvr9AfnD2k3xVPZfrtN98abjO6cCqXNdvCVvLlIW1D+6cwntuJinmU=@vger.kernel.org X-Gm-Message-State: AFuF++lkeoyYl+vdgLjGp6LELSiwvT4e2Ew9kPQP5NR+puvDNwMZjWxE WZXIax/wPa8Sd7HPWBdATjUExKl07WkYGH4icPD+CqQFy3EjV078zuFljJhwdkDyySycKNbJCc5 Lw2R2GmpyFlEhulHf6oFnpXOk/7j6FRoThBQ0cUvOvSk6Tg/XPGF/3jsKUXTfYp1rmiE= X-Gm-Gg: AYBFou2dGIuP0SFaUF7Wkd5LCiwL9+Sepafo+lvEUtaUN/5UiatKT7vD9b7La/RLFBw ffnQJ81hz6MJQhP5fP5SzNIFVUnqX3BW+cWIEmdjv0Xkw2z1qK7KMl/Nb49peQTrodyW5ZXNBex +PPl1oLVo7NcfQ6S39CB/E1k6c86jlSbrqWb120gFcVc3NWEB68g59mV9DeG2A2I0xtdlenYfTi rwOKcAbp77CVSOHNTIiu8ICUezart9qsqguUOp4gVmIbQbTkCFJ5J9z20Bt7/mijQ54cSdrLmVK XA2uTKnWDD3R7AFeAdl3wCod6w0hQFAV20S753sQeIhlmWz8NdZbsXVhAdNwnR2on8BjADOVUkU PvE/3OvmL6LFdkQu0T0Jb5M3Pf0XN35+t0RBI77V2SaZkKUwOJqnY41Ej6VcTBsz85wLngAYjAz nG7f9GTvuyuTqX X-Received: by 2002:a05:6102:94f:b0:791:40dc:a1f3 with SMTP id ada2fe7eead31-795ab7ff924mr1518640137.11.1789217309232; Sat, 12 Sep 2026 05:48:29 -0700 (PDT) X-Received: by 2002:a05:6102:94f:b0:791:40dc:a1f3 with SMTP id ada2fe7eead31-795ab7ff924mr1518626137.11.1789217308812; Sat, 12 Sep 2026 05:48:28 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:27 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:22 +0300 Subject: [PATCH v3 2/8] drm/msm: fix framebuffer pin refcount leak on prepare failure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-2-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1982; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=QY9ysFxhmb2CtXGWZoEbLvZr15d49FXuEMy/zVQSVA0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoWuEQvk88wTjsRw2D/AVDzN2lbBytzilskT 5NdOBZAIBWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFgAKCRCLPIo+Aiko 1eXqCACCrqtXMD33umlggPg3i7lcdVLQG61UoaTPUeXoqbI48UaWmLOy87sJQPm+jTsx+/RPxTk I6007iHQP9gHbzHMDO/pWTtZMmFK3+9fdC83MsdQcNKnNacWTdrCA2DymBREkO5K+gAeIUejAqh FifPvmeGlN67zyVnyPwD6DedZS4QahCEzLLs6WBIDvesfGFu71tFxAQ3v5iQyxzkDuNa+GL4LHL r+1UUVcpFVwlyfW1/5Z6as3IpFYMipUE3ud3WdKTpsBhpKTfe8gK5npHvVmyS0Sv02IIjPk4Zdj vaAhBbVgVt8IF9dF75jzf8s5RX+kXidh2OVg3h8hVZz4ABKQ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: LwjjziHLTSRwhU2lTpN2UlMz1sIXq58z X-Authority-Analysis: v=2.4 cv=Pv4G/AM3 c=1 sm=1 tr=0 ts=6aa54a21 cx=c_pps a=wuOIiItHwq1biOnFUQQHKA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=tvlXP28v7VYLJ75qtzUA:9 a=QEXdDO2ut3YA:10 a=XD7yVLdPMpWraOa8Un9W:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX0AZhd3D64N5U jgdGjGJBVpMJ4YCzkJSrm3AIm0RjzVvEVLKqeRXVyezSSNEFKkFRLesETt3tZPi5nhxQdhZhD4E kyocPoYqMO//zk7LhmAcEzNVzTcCe2M= X-Proofpoint-ORIG-GUID: LwjjziHLTSRwhU2lTpN2UlMz1sIXq58z X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfXycYlbZuDJSIa aVGyGXLrwBtb0eGPZG6Ci1cXzxyeQe7Opts9lM2GGrs5NV2VNSESBam5Kg2630v52dSHT2FgsC8 Wq9ualSqMfzGuJ4SaKEr2Wyn97jcL23N8BFK/fKVWxlcTZr9raYgVZisFAi3sbnK3LPYallM2tO FCoJTh9dW6uYPWKEvigvLe8HpzFj3BoNQyVdKnFbC8plq9TZHyw5KBoW47K9j+HAGxpNFVLJtiC JEmsaojdZ/M1GCLrfkRKEwNSn5BjuKpSWyGIFBee505Tr0W51UiCJOcddAmMaXXbCXI26r4DNbV 1K9BTI+F9vGMgAUhN/IQTbY1a1GbuWs4LPoI0661cS76xAmtHk87HE2Iq2+Lw3J6ExRY6wcdqc0 /XbFTMv/FGGXS1OFSPHVmnZk7iQv/Pb+LkfriJeW4fOepUSbRC514+lLrvK7R1wFdRz6M4RIHM/ vrMOfK7tvMZw1YATUQA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 adultscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 msm_framebuffer_prepare() bumps prepare_count before pinning, but returns straight out of the pin loop on error, leaking the count, the msm_gem_vma_get() reference and any planes already pinned. drm_atomic_helper_prepare_planes() does not call cleanup_fb() for the plane whose prepare_fb() failed, so nothing ever drops it. Since commit 8ac37c88f991 ("drm/msm: Refcount framebuffer pins") a prepare which finds the count already non-zero returns early, assuming iova[] is populated. With the count stuck, every later prepare of that framebuffer reports success while iova[] is still zero, and DPU scans out from a NULL base address: arm-smmu 15000000.iommu: Unhandled context fault: fsr=3D0x402, iova=3D0x00000100, fsynr=3D0x3e0023, cbfrsynra=3D0x1c00, cb=3D11 Unwind properly on failure instead. Fixes: 8ac37c88f991 ("drm/msm: Refcount framebuffer pins") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_fb.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index 77415302e6d8..552ca5cf0745 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c @@ -102,13 +102,28 @@ int msm_framebuffer_prepare(struct drm_framebuffer *f= b, bool needs_dirtyfb) ret =3D msm_gem_get_and_pin_iova(fb->obj[i], vm, &msm_fb->iova[i]); drm_dbg_state(fb->dev, "FB[%u]: iova[%d]: %08llx (%d)\n", fb->base.id, i, msm_fb->iova[i], ret); - if (ret) + if (ret) { + msm_gem_vma_put(fb->obj[i]); break; + } + } + + if (ret) { + while (i--) { + msm_gem_unpin_iova(fb->obj[i], vm); + msm_gem_vma_put(fb->obj[i]); + } + + memset(msm_fb->iova, 0, sizeof(msm_fb->iova)); + msm_fb->prepare_count--; } =20 out: mutex_unlock(&msm_fb->lock); =20 + if (ret && needs_dirtyfb) + refcount_dec(&msm_fb->dirtyfb); + return ret; } =20 --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3765947D442 for ; Sat, 12 Sep 2026 12:48:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217314; cv=none; b=bRr4JmIZAKdWKudE4orjYIp4DB97huI/t6Aw4QtDgymqqY/lJM27XvVV1A9ItRLozo/3y1kPRAoCRlnbXEgnGocQl+J0cvGlXX3d1n/JCRriz7iaWceD1u+zBkPd/zqGLBQw7ERgLYHDxc47rzFMWbBzTcmH9LP5keK568dfCkk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217314; c=relaxed/simple; bh=B0Ov3Ba0etJAVBf0pjyCAO0OwkOHjmreEqnlFJFY7wg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tec2N/EfyhLM/YDD96EcWuhUyePVPCy4QqQeY0XfIJqyjJDHYFZGPMemIhDEj1/wQxIJV1DSJhh06yKboH1Z7IEojSyai6kkpV94zxl1HxT0cAUIdK5Y0ezyHJxgcrkDu36YsqwhIyKGkBVSiJHNG9Jf4wsv1n9F1TIe/xf30iU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=odbHMnLB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=K6Ye+FL1; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="odbHMnLB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="K6Ye+FL1" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBe0Nf1708072 for ; Sat, 12 Sep 2026 12:48:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= fom6VPNFv+zfCScGSH9gH/TJ+nxhdKVXDPLYwY2IORM=; b=odbHMnLBY1lHaDjq 07RMtATDAqsWnH/VlLe/IUtSd0wJhtuxnTYaIe7ejwdvbvjrrVxZQj0Tli6jIV/g KIE721bOIYXo6AVUiE/PQ2Myj0n6YdY1rU4g1L2qwNkQs/go4cN53fvetRyHtHqR dHXnwj5J/DhIiycPo8gfhvSi8Cm1l+RK6tkw1h7ydlcNAda36QqNt944srzGGJ5e dt/sFP66rb8SiWhhOzgUTXIONo+L0US93ehDJceGVwo+iduC6SEz8JUqtmJp+rZq eZtD6Ih91YPTajkuNJ+deiPvejTkbm6N8lZLdYE6/hd/NcmChKaavTWuho2ilVup bWjtjg== Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmywh0v3t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:32 +0000 (GMT) Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-791463ed29dso1500053137.0 for ; Sat, 12 Sep 2026 05:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217311; x=1789822111; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fom6VPNFv+zfCScGSH9gH/TJ+nxhdKVXDPLYwY2IORM=; b=K6Ye+FL1QuO0Ah68qbVLwoZMpxQI0pzSsn72edUDfLoN5FgGtl/x//UR76itNWbwxz rLBhyajut1OZb7KfDoXh35fR3g8IdceDzg3J9e8XDy+g9BLbKScz4+IJIPUDRSlCR29j 5hXqvKGb4EhWXmhLeoWGHz+fvGvfa6p+J78b7SdVUqcD6a4GC1HyMXmlyooAEcs0QDnv yZwlAAgQLq1FyiPN7iO3+cP4r3QRfjpwm4kdrnEHon1Y83HHoVR66IpkMhL3yUeaIKm/ kmUAbIk8mkyXBivGgzN3HFN+ZHQfHQdN8+uxYAck5NlkiCpVNk0/jZ/IwjpOVEJodREt 6pVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217311; x=1789822111; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fom6VPNFv+zfCScGSH9gH/TJ+nxhdKVXDPLYwY2IORM=; b=lafsmqJiwTQnLqi7n1UmUaGgZ1PwceonyAoDnCjqKjuYfweVGoJvy5k0PyAkpxVzkp uuBHNIMukNesB3bpSB7McUD80TMaD01UVHhJAYZWGZMNU7s0FoE9wM3Cx6+IHBGZtEen rGhNKUBSjOa0fwqwuyhw0Zf6E3N+SJpwRak7ySEl10RymnPK/fEbbUuurgTdeD51xSv1 ntDr+4HLH27XP2hFFUCtcvn90v23+CdFHXjsZcsPLFjHwT7MQUNRMoDlce/eKYRFYnZW VTW2YrtLa7MNLKCFTJ+bqf2wNbctYWi+Y4fooQ2aR27a6DLy6m08aRL/s/VipFs9LEd1 8WXQ== X-Forwarded-Encrypted: i=1; AKwUvBwtBGNyecfnEtCBQUhmO8PuvVMQmahtdLK4YRBltCk47ohvnj+S6+m+zgnwFPbhQPYaXKeIZS/VemAx+3Y=@vger.kernel.org X-Gm-Message-State: AFuF++k6a7ugOmVBp/NRVL0AfH4t5SF+pdYrxzTyfZ82xbDBerBqUPU9 wjvZjYLphwFAk3+idsXaKEXRiHi7JiYnhGKtRtpD6+jkHZyGnj59SUhZnk6UjJaB37mZ8ORWOQJ v/pfoiCoKS6QSv4esDcRE/y23gYYIF1uan8kmGs/9Wl0dQKCzSoJzJkg0c7QQCIssRHw= X-Gm-Gg: AYBFou3HfFcVQ7+CYmhbIut84IkrazwMwRfW0DQsxjT8F50wyVkhyOnAScSvPOJ9rvu iFF/AscI1WrGXSQBGvNLStr7zM5Zl4Q6jY153MEDrE1Yhzl1B90yQXWOnYK0jgAL/T9FD8ynxLl 9Upt7vh0lB06rr+E996cuMMhOLOC1oDIpHKk49l5I0KHBvWnKN2R5PaFjUJswbazJ0PKhZh+svB PAVbV4g3XFxpqfS715YD2Y68h0ooaaiilN93UDAQodF+5DAO7HimvrtqhRn7DukUYTZMRs/jX2W AKLz1Zdh70vtMKYwL7S2pIYOnN9w/CdKeWS+a6QeNUxyiuZargSUgv23Sr46Qvp4GxA3Zhw9hDb zt7Hk5iYT3I1+IhsZVSx0kItLWUEyTx8ap8qKOqO+bMzNDCvDCKJie6glaXbcPUDwgcqb1NDTf7 dw09mRFyO0gPSW X-Received: by 2002:a05:6102:524a:b0:794:d445:bc2b with SMTP id ada2fe7eead31-795abdea367mr1987712137.13.1789217311463; Sat, 12 Sep 2026 05:48:31 -0700 (PDT) X-Received: by 2002:a05:6102:524a:b0:794:d445:bc2b with SMTP id ada2fe7eead31-795abdea367mr1987692137.13.1789217311052; Sat, 12 Sep 2026 05:48:31 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:29 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:23 +0300 Subject: [PATCH v3 3/8] drm/msm: unwind msm_drm_kms_init() on failure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-3-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5509; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=B0Ov3Ba0etJAVBf0pjyCAO0OwkOHjmreEqnlFJFY7wg=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoX6z++179jcgihzVdhoDvznApSa7Yi2fxEj TXhIxGcA1GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1csBCACdTalb8vsJlE0T9l62d0tbWRLt9uyl9jK/+WzEAaJ5Mby6G1adoguqtNS+RkktK/ULuJ8 r5GuXIRao/XZmq7Uq3TEOe8hk8Cgu6wBfThHCiAenbr6EEtFe1K3l15m+hsFlSNoZhJVvvCLxqM xvcLQN8L82MyrJWaDvyXMjJ1gLZijJmMLDKlDtVod8KFObPpo7y01nLUjpbIKtUIHWplTAZLlfU 67HCz3AaOuvPXNScXmeQ85Nr6fZoSR4RpcxBwRY3aOxWrg/k4LWWtaZwy2bjqYa/BbdcUR5KmfJ /sdsBEF3pyYetG1enFQC3vY3As9cBW5es+Jo2PAH0vUIVHlh X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: IS2vFc7Ey7CFdtY0WLtE4ko6PlwH6oej X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX3qTaXGtnGNRU fwaOTVr1kltoPVCoYcnFXurMqYMnBMTijVyLbL/WYgnAPtKFk5cadWMRcg2Ml65VrkGS6xOAya2 GzKvPj3ZLKlfs5D7AjxQNgxuX5zIDTX0OoqMkKBgu9Hydc6O/wRnpbLdS9rnT8LyJTzc7a+j3c/ 9Zed4tVujFtcMuDY1BexktnvXvseMP4lPeAFxNcJ2Oufw8ukIR3qoNc2FHUONIHfd7pXmV9oR32 HQZzTRi3iAmTim1jZ4V7cRLKIA7O6xDdBZtMKXPaXBy1yiS2Vef/5lx0B7NtRIUNJloCDKmBYsi iAjqoXwIWgZZ+lE1fMsnLmT1f2Bp6tAEK9v8NbEIVI+Fl8XFmWoqso+GKLDBvIe/zwAUesZPTET 6vwhpOoEfmX6xkUwbLXKIK7p1YNYxbeoYXIxWdCZbjZC78zFeyO1USlgWFjWyYi40sbQ7l0rKCH BD+FvekEKZuCdXCprtQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX/66vWfgXpFjL N8AI5i5UbcWYTn8Zr4l6OiQNJx35cHnYEvFs7JLgOEMAwOjorQP0fPx85fy76NV/5rtKbiItSfl BM90OEs7aVoSqa4k6Evdsz6LXXS0buo= X-Proofpoint-ORIG-GUID: IS2vFc7Ey7CFdtY0WLtE4ko6PlwH6oej X-Authority-Analysis: v=2.4 cv=PsUG/AM3 c=1 sm=1 tr=0 ts=6aa54a20 cx=c_pps a=P2rfLEam3zuxRRdjJWA2cw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=_ChxW0iHWOZRcJAqfHkA:9 a=QEXdDO2ut3YA:10 a=ODZdjJIeia2B_SHc_B0f:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 msm_drm_kms_init() leaves behind whatever it has already set up when it fails and lets the caller sort it out: msm_drm_init() jumps to msm_drm_uninit(), which runs msm_drm_kms_uninit() for every device which has a kms. That is the teardown of a fully initialised KMS -- it flushes kms->wq, calls ->irq_uninstall() and frees the IRQ, none of which exist yet when the failure happened early. The kms driver's own init is the first step which can fail, and since commit a409b78fcdf7 ("drm/msm: move wq handling to KMS code") the workqueue is created by msm_kms_init() rather than by msm_drm_init(), so a failure there leaves a NULL kms->wq for flush_workqueue(). Undo the steps which have completed instead, and let msm_drm_init() unwind its own error paths rather than calling the full teardown. Fixes: a409b78fcdf7 ("drm/msm: move wq handling to KMS code") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 27 +++++++++++++++++++++------ drivers/gpu/drm/msm/msm_kms.c | 36 ++++++++++++++++++++++++------------ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index db1b655dd055..c842321c9069 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -159,29 +159,44 @@ static int msm_drm_init(struct device *dev, const str= uct drm_driver *drv, =20 ret =3D msm_gem_shrinker_init(ddev); if (ret) - goto err_msm_uninit; + goto err_unbind; =20 if (priv->kms_init) { ret =3D msm_drm_kms_init(dev, drv); if (ret) - goto err_msm_uninit; + goto err_shrinker_cleanup; } =20 ret =3D drm_dev_register(ddev, 0); if (ret) - goto err_msm_uninit; + goto err_kms_uninit; =20 ret =3D msm_debugfs_late_init(ddev); if (ret) - goto err_msm_uninit; + goto err_unregister; =20 if (priv->kms_init) msm_drm_kms_post_init(dev); =20 return 0; =20 -err_msm_uninit: - msm_drm_uninit(dev, gpu_ops); +err_unregister: + drm_dev_unregister(ddev); + if (priv->kms_init) + msm_drm_kms_unregister(dev); + msm_rd_debugfs_cleanup(priv); +err_kms_uninit: + if (priv->kms_init) + msm_drm_kms_uninit(dev); +err_shrinker_cleanup: + msm_gem_shrinker_cleanup(ddev); +err_unbind: + if (gpu_ops) + gpu_ops->unbind(dev, dev, NULL); + else + component_unbind_all(dev, ddev); + ddev->dev_private =3D NULL; + drm_dev_put(ddev); =20 return ret; =20 diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index e5d0ea629448..f3e39c3907a9 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -225,13 +225,23 @@ void msm_drm_kms_unregister(struct device *dev) drm_atomic_helper_shutdown(ddev); } =20 +static void msm_drm_kms_destroy_event_threads(struct msm_kms *kms) +{ + int i; + + for (i =3D 0; i < MAX_CRTCS; i++) { + if (kms->event_thread[i].worker) + kthread_destroy_worker(kms->event_thread[i].worker); + kms->event_thread[i].worker =3D NULL; + } +} + void msm_drm_kms_uninit(struct device *dev) { struct platform_device *pdev =3D to_platform_device(dev); struct msm_drm_private *priv =3D platform_get_drvdata(pdev); struct drm_device *ddev =3D priv->dev; struct msm_kms *kms =3D priv->kms; - int i; =20 BUG_ON(!kms); =20 @@ -242,11 +252,7 @@ void msm_drm_kms_uninit(struct device *dev) =20 flush_workqueue(kms->wq); =20 - /* clean up event worker threads */ - for (i =3D 0; i < MAX_CRTCS; i++) { - if (kms->event_thread[i].worker) - kthread_destroy_worker(kms->event_thread[i].worker); - } + msm_drm_kms_destroy_event_threads(kms); =20 drm_kms_helper_poll_fini(ddev); =20 @@ -282,7 +288,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) ret =3D priv->kms_init(ddev); if (ret) { DRM_DEV_ERROR(dev, "failed to load kms\n"); - goto err_msm_uninit; + goto err_destroy_kms; } =20 /* Enable normalization of plane zpos */ @@ -295,7 +301,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) ret =3D kms->funcs->hw_init(kms); if (ret) { DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret); - goto err_msm_uninit; + goto err_destroy_kms; } =20 drm_helper_move_panel_connectors_to_head(ddev); @@ -311,7 +317,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) ret =3D PTR_ERR(ev_thread->worker); DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n"); ev_thread->worker =3D NULL; - goto err_msm_uninit; + goto err_destroy_event_threads; } =20 sched_set_fifo(ev_thread->worker->task); @@ -320,7 +326,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) ret =3D drm_vblank_init(ddev, ddev->mode_config.num_crtc); if (ret < 0) { DRM_DEV_ERROR(dev, "failed to initialize vblank\n"); - goto err_msm_uninit; + goto err_destroy_event_threads; } =20 pm_runtime_get_sync(dev); @@ -328,14 +334,20 @@ int msm_drm_kms_init(struct device *dev, const struct= drm_driver *drv) pm_runtime_put_sync(dev); if (ret < 0) { DRM_DEV_ERROR(dev, "failed to install IRQ handler\n"); - goto err_msm_uninit; + goto err_destroy_event_threads; } =20 drm_mode_config_reset(ddev); =20 return 0; =20 -err_msm_uninit: +err_destroy_event_threads: + msm_drm_kms_destroy_event_threads(kms); +err_destroy_kms: + msm_disp_snapshot_destroy(ddev); + if (kms->funcs) + kms->funcs->destroy(kms); + return ret; } =20 --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CFAB47D444 for ; Sat, 12 Sep 2026 12:48:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217317; cv=none; b=bPXEJVvh4/3b1TZhGJ6s3b1IDB3cf/PTTYDM/h0E910de7iP3MP3gt58a5N6mmIa3ULYweNs31a9fM0X1P2K8FlQ4hUOlUG+JB7A+rSpbv1TUbOcUKUYQsIZXeMGgbm7Hw/PRGZPiwD6kWxEqoehA61E7jGT2fVHV3x8SPd/UVY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217317; c=relaxed/simple; bh=/hawr8iz5q5bAzG8GdPBkIKEhcAghMeRAWIQTsyIGrA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n7KkPKsUj5BAV+lZ/ajWfZLNN3mg4vfv1eRRM4PDsEuOW4WKXMD6DOgphl7Q8FoanDUCebv0SmDWHvrcnNgRq1b1Vz1H89ViRdU4+6pvvP+fbjV5NDpnY7XCP5hJj41ZD2z7SJYJPW/SzY+k2IlGCJreaja0AKwzbsf0Tyvx+hg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Dhv5NRsY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TCMuqrXc; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Dhv5NRsY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TCMuqrXc" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBe2Mj2780849 for ; Sat, 12 Sep 2026 12:48:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= GiVDCLl0reXlySiT/FZha5lLtYbEsu35SLw+Ov/UGf0=; b=Dhv5NRsY4wS20N/+ G520p0q0D+7z1Zi6UTyXQ3wLi/auon8Gby8viSy/8PcImT0VYXvXo8Hozr03Tus5 ViuuLimyew8iNpCL7AXXFg1aAMRSP34GEfMQwSYsmrsovwYfDPxZAMZTS/E0+pd0 QDl6rGRCl6DuOI6OAL0SRQlSzgWUe4vgUXHVZDYmAsZm71KGeXdCUv0lVgMYc4n7 mMcPtCnR4wzizmPcOlAN2ZLguSFTGcaVBen5pjAeF7bjJY2aJGCcNaPZe8hJeNuL /1zjnmJ6fA+1RIA0aH1kGh/CeUGEd2Bo7pJ3yBJSJ97iZ7ouQ6DP2UXnKCEgezpU JeYI3A== Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9d8xmh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:34 +0000 (GMT) Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-78f2fe53829so1415486137.2 for ; Sat, 12 Sep 2026 05:48:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217313; x=1789822113; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GiVDCLl0reXlySiT/FZha5lLtYbEsu35SLw+Ov/UGf0=; b=TCMuqrXcyWYuTCw59S5ij6VvSUWyjVKLlfeyjk29MjCjVo5aUoTmMLJ3kXlWm5SVc2 wvyP4jNLY9TP0XWy1UL2tEYHU3bktAJGx5y6KnH9oVoqt/xtcjMmUdrXi6C3PBVuzVMo yKdYHZh/TGjb4OjbvLEBJZww+Y0NvMvfohwe6XmfC3BWrdOH7/KCSjGT0nvblKArvjhc T8P5U4AaPbGNd2kYbpO8JnD/FZ9H7bATGb0ci1qGbH78i1HJMEQgLnKsT1nzaWHzaX4h i7/ICpsy9K//xIZh4MPeNgcC72aJLhpFFEcvhxyXvfOG42lgtRRccRlsNmoAEkukA3GY YJAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217313; x=1789822113; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GiVDCLl0reXlySiT/FZha5lLtYbEsu35SLw+Ov/UGf0=; b=prDsIqku66mDjyqmpMbu7TERQiO+uA8cYB5M+g43NGUYNtQBpQk3zzMhEBiuvFKCDt Qqv2nIKalYjRdnyl0NkzY9YzZtv3tLd/Qar7Td0bJJ5Vot8geDu902o/bJa3JjS5O/gb /WkXsTXJSW1yMEJ1awrR5wYykMqDl57cxCq+iG/IwnJ5S8NY/sUyK67bgDyiOJI/1yg/ QS52YN4UKJkRJLfBJe/3wO1//V+uWZvLFg72QQV5uw40zGyClnX09EIyTkxeqLExIAAV 0KRGc9idGEGVJcUUTwkR/1qAOX5hKzWuf0jYAGmHdZpdKG4X+IAlsT5Ban8AOannfURE xDzg== X-Forwarded-Encrypted: i=1; AKwUvBz5o218R5lMelJKiZhnC8Q3bYw8ZwrkQeUyEHLIrktUDBtPBleAzUqHZJxmCkKxrywKJVjZDeij8M8GKyQ=@vger.kernel.org X-Gm-Message-State: AFuF++nUEKos9fKRC/gF3mFLcZrx+QnUlZr8bacbpQqSq6+QmAaxIMhT I942ypdQ/97FlyPyGF/04inUI6MzHwjEEQFjSZz9YLj1cFkHrSu1nbM9ZelAaouV8BtIgEsPi2t gpj4Qos+/RvfEKr/o2BpE2c2GX498XLN5U8Ie7G9H9dTmLHZNd0YVMRQlVRYo7KRLZMU= X-Gm-Gg: AYBFou2+qQPCsO7gepHl1rJcDRann9HMRCPUuebBslS9vOt/073RPDXGOlGr6AmFE+i Gk+wvSfr3xYFgefNEzEszMNvHT/F9W9BbB3mI1HBqFhJ+I71t+qs+Dmqb4JzNy42dvx2JvligNL sgEzqd0kNUOJENkY8k51Iv1JGaz8bzLpAuur4+MuKhsYlSSUrz6W2JJXlpNCGuz0TjXZu9TY8S0 rJjCg6t5hXnJzhAnGAd5UgYY9gOH3bnY3O1O1lZ/jXd21ipI1vwN7J75wBtD9X26xfjiqkUNW0D 6bxp91Wgmtty+w4LJC16yY/ts5A1TlcWqRH1Ki/IrqDrZtdbwmkyXnl5DXn0nHnHAtSjWBdUG+I y6w2yXCnBbfs24eMsZSWqDUIvI3o5bHaaO+WW3U4iNGs5mpm4x2ZlHdki0c6rwC5T2RggI3Axf/ /Ba+NV6NQyo1KP X-Received: by 2002:a67:e701:0:b0:796:9525:ac4c with SMTP id ada2fe7eead31-7969525ad02mr849220137.8.1789217313397; Sat, 12 Sep 2026 05:48:33 -0700 (PDT) X-Received: by 2002:a67:e701:0:b0:796:9525:ac4c with SMTP id ada2fe7eead31-7969525ad02mr849191137.8.1789217312910; Sat, 12 Sep 2026 05:48:32 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:31 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:24 +0300 Subject: [PATCH v3 4/8] drm/msm: release scanout framebuffers only after a vblank Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-4-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=13833; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=/hawr8iz5q5bAzG8GdPBkIKEhcAghMeRAWIQTsyIGrA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoXIlUgpAVIvf7MpAsis0bo9n+vSuNGfYg6v F81lrH6GqaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1WaMB/9BzjvVSg78NYDCp/XBO6qraRrq/blkiuff90NRMpHt0PIHP61WJosK8XtceX2aKxVitE8 PQqAOj8yjQOiTOlCICSU3zkjG7oTH3Q1jrG5QYHT6oru7hvkiZEa2WJbyIky2WEPY0Hc7705dH5 PssPGsJj7s57nNAI0ubb3mVzFWHJvVaot3L8rdEZJJappwP6HaY8VSOdMe5ZldCOeKw2b/oUOHM 8qSmq2CrJrBrTw5GhYDDPqzgCanleAY4f1Jba/89GZRwjaQQo2J/b2lIrUXYCm52ckekN0KtjZc I3fn5kQeLNtE64UA+KkbvK1R8yB8oeVqn8jmKrqfOrRKUlx+ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX820UGSaey2E0 kMtScEI/VKSsSa9MLCrMi72yHjdFZroY01lYCskq0hhjTljcsADRt2gCBRlfTfrTbhk2Z2jOKTP 0RRM8luYKwWcqOsUUKCc61M/MJnWcEqU+ub8v54T1LmvEppX92RsIwsMm4XEgBnulFRrw/rTRFS b1Mnyi0trpZjPOlKE0Ilk8up3Cji1H5Fyas2W56T7wb3k2wkKKtfyVj5sMQewAad49T8/2gUaA/ TQbiyTR+rRPw5V8ZJzBPUtSPMGHEaguLSB/ai2afgLVklKp9HyvmpIZNGrrm1V0ABUUil6hSO0U l/gQO9zusrgLjHfrmi6Pk14cZQP8CUodeN7TnxQRrNTlXgwJI1KRCPKD6FBHwVMaceMl8Fd7FOp ijBg935HaiTEhzOM38P1UV8Ym9SVq+/izF0obehg4GTcSpvPvbIZJAJs4V28mtyz1mWI502Tm04 ZyXiBCq17mKaNZMqEOA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX1raZ7H3L4hq+ h3nba5IWREBBQkBsjuJ24PdMidhjw8LIhHaqe1qhNOpoaeMTZrslzVbZGlVl0IzBeIGp/JPnGUy AsnIdKpnXZBI+uKxXef8QMrdyJe/Bfo= X-Proofpoint-GUID: 7SkKvxl2mCu_lkEk5ZR8zVyAKoZlYU8O X-Authority-Analysis: v=2.4 cv=OeUNnRTY c=1 sm=1 tr=0 ts=6aa54a22 cx=c_pps a=P2rfLEam3zuxRRdjJWA2cw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=jA6VukbCxrIAGvfWCOIA:9 a=QEXdDO2ut3YA:10 a=ODZdjJIeia2B_SHc_B0f:22 X-Proofpoint-ORIG-GUID: 7SkKvxl2mCu_lkEk5ZR8zVyAKoZlYU8O X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 msm_framebuffer_cleanup() releases a framebuffer as soon as drm_atomic_helper_cleanup_planes() runs. msm_atomic_commit_tail() waits only for ->wait_flush() before that, which for video mode waits for CTL_FLUSH to read back zero, ie. for the new configuration to be latched; the frame in flight with the old one is still being fetched. Since commit 111fdd2198e6 ("drm/msm: drm_gpuvm conversion") the unpin also detaches the vma, so the display is left reading unmapped memory: arm-smmu 15000000.iommu: Unhandled context fault: fsr=3D0x402, iova=3D0x007eb100, fsynr=3D0x3f0023, cbfrsynra=3D0xc20, cb=3D27 Hand the retired framebuffer to the crtc instead and drop the pin and the vma reference from a drm_vblank_work, as i915 does for its cursor framebuffers. The work holds a reference on the framebuffer, and drm_vblank_work_schedule() holds a vblank reference until it runs. The pin count is dropped by the deferred work rather than by ->cleanup_fb(), so a framebuffer scanned out by several crtcs stays pinned until the last of them has passed a vblank, not until the last one has retired it. Deferring here also covers the async plane update path, which has no commit tail at all: drm_atomic_helper_async_commit() programs the hardware and drm_atomic_helper_unprepare_planes() releases the old framebuffer straight away. An inactive crtc is not fetching and has no vblank to defer to, and drm_crtc_vblank_off() sets vblank->inmodeset so drm_vblank_work_schedule() does not fail there, so key that off the crtc state and release directly. A crtc which is being switched off stops fetching as well, and its interface has already been disabled by the time the helpers get to it, so no further vblank arrives to run the pending works: keep them on a list per crtc and release them there by hand rather than waiting. Fixes: 111fdd2198e6 ("drm/msm: drm_gpuvm conversion") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 +- .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 3 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 2 +- drivers/gpu/drm/msm/msm_drv.h | 4 +- drivers/gpu/drm/msm/msm_fb.c | 19 +++- drivers/gpu/drm/msm/msm_kms.c | 115 +++++++++++++++++= ++++ drivers/gpu/drm/msm/msm_kms.h | 16 +++ 11 files changed, 157 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm= /disp/dpu1/dpu_crtc.c index 42d0a529b4d5..bf593020e8e4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -1213,7 +1213,7 @@ static void dpu_crtc_disable(struct drm_crtc *crtc, } =20 /* Disable/save vblank irq handling */ - drm_crtc_vblank_off(crtc); + msm_crtc_vblank_off(crtc); =20 drm_for_each_encoder_mask(encoder, crtc->dev, old_crtc_state->encoder_mask) { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/= gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c index 22433bfbea1e..5db33e49c345 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c @@ -615,7 +615,7 @@ static void dpu_encoder_phys_wb_cleanup_wb_job(struct d= pu_encoder_phys *phys_enc if (!job->fb) return; =20 - msm_framebuffer_cleanup(job->fb, false); + msm_framebuffer_cleanup(job->fb, NULL, false); wb_enc->wb_job =3D NULL; wb_enc->wb_conn =3D NULL; } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/ms= m/disp/dpu1/dpu_plane.c index 7b92082d35a6..0e986b533bf0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c @@ -684,7 +684,8 @@ static void dpu_plane_cleanup_fb(struct drm_plane *plan= e, =20 DPU_DEBUG_PLANE(pdpu, "FB[%u]\n", old_state->fb->base.id); =20 - msm_framebuffer_cleanup(old_state->fb, old_pstate->needs_dirtyfb); + msm_framebuffer_cleanup(old_state->fb, old_state->crtc, + old_pstate->needs_dirtyfb); } =20 static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu, diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/ms= m/disp/mdp4/mdp4_crtc.c index 57dfce58450b..195ee6b4a0c6 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c @@ -267,7 +267,7 @@ static void mdp4_crtc_atomic_disable(struct drm_crtc *c= rtc, return; =20 /* Disable/save vblank irq handling before power is disabled */ - drm_crtc_vblank_off(crtc); + msm_crtc_vblank_off(crtc); =20 mdp_irq_unregister(&mdp4_kms->base, &mdp4_crtc->err); mdp4_disable(mdp4_kms); diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c b/drivers/gpu/drm/m= sm/disp/mdp4/mdp4_plane.c index 9459f70ce0ba..5f669a02d798 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c @@ -97,7 +97,7 @@ static void mdp4_plane_cleanup_fb(struct drm_plane *plane, return; =20 DBG("%s: cleanup: FB[%u]", mdp4_plane->name, fb->base.id); - msm_framebuffer_cleanup(fb, false); + msm_framebuffer_cleanup(fb, old_state->crtc, false); } =20 =20 diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/ms= m/disp/mdp5/mdp5_crtc.c index 4c4a897fc1ee..547f6fdb83d5 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -499,7 +499,7 @@ static void mdp5_crtc_atomic_disable(struct drm_crtc *c= rtc, return; =20 /* Disable/save vblank irq handling before power is disabled */ - drm_crtc_vblank_off(crtc); + msm_crtc_vblank_off(crtc); =20 if (mdp5_cstate->cmd_mode) mdp_irq_unregister(&mdp5_kms->base, &mdp5_crtc->pp_done); diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c b/drivers/gpu/drm/m= sm/disp/mdp5/mdp5_plane.c index 841f444a8d68..dacb387d9bb6 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c @@ -155,7 +155,7 @@ static void mdp5_plane_cleanup_fb(struct drm_plane *pla= ne, return; =20 DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id); - msm_framebuffer_cleanup(fb, needed_dirtyfb); + msm_framebuffer_cleanup(fb, old_state->crtc, needed_dirtyfb); } =20 static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_= state, diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index eb4bbae8557b..dc279a99e257 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -254,7 +254,9 @@ int msm_gem_prime_pin(struct drm_gem_object *obj); void msm_gem_prime_unpin(struct drm_gem_object *obj); =20 int msm_framebuffer_prepare(struct drm_framebuffer *fb, bool needs_dirtyfb= ); -void msm_framebuffer_cleanup(struct drm_framebuffer *fb, bool needed_dirty= fb); +void msm_framebuffer_cleanup(struct drm_framebuffer *fb, struct drm_crtc *= crtc, + bool needed_dirtyfb); +void msm_framebuffer_unpin(struct drm_framebuffer *fb); uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int plane); struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int = plane); const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb= ); diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index 552ca5cf0745..5ae8ce3bc370 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c @@ -127,16 +127,13 @@ int msm_framebuffer_prepare(struct drm_framebuffer *f= b, bool needs_dirtyfb) return ret; } =20 -void msm_framebuffer_cleanup(struct drm_framebuffer *fb, bool needed_dirty= fb) +void msm_framebuffer_unpin(struct drm_framebuffer *fb) { struct msm_drm_private *priv =3D fb->dev->dev_private; struct drm_gpuvm *vm =3D priv->kms->vm; struct msm_framebuffer *msm_fb =3D to_msm_framebuffer(fb); int i, n =3D fb->format->num_planes; =20 - if (needed_dirtyfb) - refcount_dec(&msm_fb->dirtyfb); - mutex_lock(&msm_fb->lock); =20 if (--msm_fb->prepare_count) @@ -153,6 +150,20 @@ void msm_framebuffer_cleanup(struct drm_framebuffer *f= b, bool needed_dirtyfb) mutex_unlock(&msm_fb->lock); } =20 +void msm_framebuffer_cleanup(struct drm_framebuffer *fb, struct drm_crtc *= crtc, + bool needed_dirtyfb) +{ + struct msm_framebuffer *msm_fb =3D to_msm_framebuffer(fb); + + if (needed_dirtyfb) + refcount_dec(&msm_fb->dirtyfb); + + if (crtc && msm_crtc_queue_fb_unpin(crtc, fb)) + return; + + msm_framebuffer_unpin(fb); +} + uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int plane) { struct msm_framebuffer *msm_fb =3D to_msm_framebuffer(fb); diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index f3e39c3907a9..4582ba040f6f 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -11,8 +11,10 @@ #include =20 #include +#include #include #include +#include #include =20 #include "disp/msm_disp_snapshot.h" @@ -165,6 +167,119 @@ void msm_crtc_disable_vblank(struct drm_crtc *crtc) vblank_ctrl_queue_work(priv, crtc, false); } =20 +struct msm_fb_unpin_work { + struct drm_vblank_work base; + struct list_head node; + struct msm_kms_fb_unpin *pending; + struct drm_framebuffer *fb; +}; + +static void msm_kms_fb_unpin_release(struct msm_fb_unpin_work *unpin) +{ + msm_framebuffer_unpin(unpin->fb); + drm_framebuffer_put(unpin->fb); + kfree(unpin); +} + +static void msm_kms_fb_unpin_work(struct kthread_work *work) +{ + struct msm_fb_unpin_work *unpin =3D + container_of(to_drm_vblank_work(work), struct msm_fb_unpin_work, + base); + struct msm_kms_fb_unpin *pending =3D unpin->pending; + + spin_lock(&pending->lock); + if (list_empty(&unpin->node)) { + spin_unlock(&pending->lock); + return; + } + list_del_init(&unpin->node); + spin_unlock(&pending->lock); + + msm_kms_fb_unpin_release(unpin); +} + +void msm_crtc_vblank_off(struct drm_crtc *crtc) +{ + struct msm_drm_private *priv =3D crtc->dev->dev_private; + struct msm_kms *kms =3D priv->kms; + unsigned int idx =3D drm_crtc_index(crtc); + struct msm_kms_fb_unpin *pending; + struct msm_fb_unpin_work *unpin; + + if (!kms || idx >=3D ARRAY_SIZE(kms->fb_unpin)) + goto out; + + pending =3D &kms->fb_unpin[idx]; + + /* + * The crtc stops fetching here, and with it the vblanks the pending + * works are waiting for, so release the framebuffers directly. + */ + for (;;) { + spin_lock(&pending->lock); + unpin =3D list_first_entry_or_null(&pending->fbs, typeof(*unpin), + node); + if (unpin) + list_del_init(&unpin->node); + spin_unlock(&pending->lock); + + if (!unpin) + break; + + drm_vblank_work_cancel_sync(&unpin->base); + msm_kms_fb_unpin_release(unpin); + } + +out: + drm_crtc_vblank_off(crtc); +} + +bool msm_crtc_queue_fb_unpin(struct drm_crtc *crtc, struct drm_framebuffer= *fb) +{ + struct msm_drm_private *priv =3D crtc->dev->dev_private; + struct msm_kms *kms =3D priv->kms; + unsigned int idx =3D drm_crtc_index(crtc); + struct msm_kms_fb_unpin *pending; + struct msm_fb_unpin_work *unpin; + + if (!kms || idx >=3D ARRAY_SIZE(kms->fb_unpin)) + return false; + + if (!crtc->state->active) + return false; + + pending =3D &kms->fb_unpin[idx]; + + unpin =3D kzalloc_obj(*unpin); + if (!unpin) + return false; + + unpin->fb =3D fb; + unpin->pending =3D pending; + drm_framebuffer_get(fb); + + drm_vblank_work_init(&unpin->base, crtc, msm_kms_fb_unpin_work); + + spin_lock(&pending->lock); + list_add_tail(&unpin->node, &pending->fbs); + spin_unlock(&pending->lock); + + if (drm_vblank_work_schedule(&unpin->base, + drm_crtc_vblank_count(crtc) + 1, true) !=3D 1) { + spin_lock(&pending->lock); + list_del_init(&unpin->node); + spin_unlock(&pending->lock); + + drm_framebuffer_put(fb); + kfree(unpin); + + return false; + } + + return true; +} + static int msm_kms_fault_handler(void *arg, unsigned long iova, int flags,= void *data) { struct msm_kms *kms =3D arg; diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index f25b31e502d2..6f305b4409ea 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -135,6 +135,12 @@ struct msm_drm_thread { struct kthread_worker *worker; }; =20 +struct msm_kms_fb_unpin { + /* protects the list of framebuffers waiting for a vblank: */ + spinlock_t lock; + struct list_head fbs; +}; + struct msm_kms { const struct msm_kms_funcs *funcs; struct drm_device *dev; @@ -170,8 +176,13 @@ struct msm_kms { =20 struct workqueue_struct *wq; struct msm_drm_thread event_thread[MAX_CRTCS]; + + struct msm_kms_fb_unpin fb_unpin[MAX_CRTCS]; }; =20 +bool msm_crtc_queue_fb_unpin(struct drm_crtc *crtc, struct drm_framebuffer= *fb); +void msm_crtc_vblank_off(struct drm_crtc *crtc); + static inline int msm_kms_init(struct msm_kms *kms, const struct msm_kms_funcs *funcs) { @@ -180,6 +191,11 @@ static inline int msm_kms_init(struct msm_kms *kms, for (i =3D 0; i < ARRAY_SIZE(kms->commit_lock); i++) mutex_init(&kms->commit_lock[i]); =20 + for (i =3D 0; i < ARRAY_SIZE(kms->fb_unpin); i++) { + spin_lock_init(&kms->fb_unpin[i].lock); + INIT_LIST_HEAD(&kms->fb_unpin[i].fbs); + } + kms->funcs =3D funcs; =20 kms->wq =3D alloc_ordered_workqueue("msm", 0); --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9A4747D94F for ; Sat, 12 Sep 2026 12:48:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217318; cv=none; b=I5j5zF+dQimaXxis69Qb5aFwRWNe2oNTSF9dvKJD4nirSUtpTh+iGd+3gwXdm7c//9X5ykFbjcNn3LJTK770aoAyRprx1/KdEXYB7GWhoKJksHxkTiuUqCNEbxRAgUxsCgR7akLtuCWdG5yiB0HO2qbbBdKmUZjJi91CLE6/xwo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217318; c=relaxed/simple; bh=42MaHuKsi9wtmIKNRqT8ly0SxW0ZKEjpv2W8+Aag/4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ptEViYlf/CXX54JaShbJX/K6qcjDiCPTGY8x3UpRyLxGCLKH2PCXUKLKKbzEHzinle2h3A1Gcwm00+8Y9IYFwXcHCFUJxhWxKJjaGSnEVqAJali5dHU51KxyhuNOhsrlth9zgYhR/UIKYuBxN63OlSKnLGK9GmlkvEFAkzG5vxE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HF3eXwSL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TkMIiWyr; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HF3eXwSL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TkMIiWyr" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBdYwG2238903 for ; Sat, 12 Sep 2026 12:48:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= C08XeX2FFrQaQVRDvYflEJeFTvMG8k68onVOApp7D60=; b=HF3eXwSLNRwlfJAz fbY4/3ikrLE6/gmkZMGtiLcv46H9XsvE8/slsLAlFqw/nQvBPCp1ztBsg7gsSXRs Z1I93rQ+qQo+RfO3K2dqPeGnDOlzQXLBcbZVGeKz6Fg9aH2fK1qtEzh19AmurmKL COy8XceitD1QmLQLa47eKm1V+LvHZbyiuN+lzIWwEEsfEqPdMIlUFptu/m2QVwXS wz0o7xh2gAuJN/WYebtY/5ptoq6mxJXe2Qn9IbYQ7kLbZJcSD0V1fr0gVmjbPMFE 7nioCxlYzxfSKanz+aI8AutktBqvo6BQy/VPJ9cSvENQyyOgyjYrQR3t3DgSdGgI jipN6w== Received: from mail-ua1-f72.google.com (mail-ua1-f72.google.com [209.85.222.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c8xag-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:35 +0000 (GMT) Received: by mail-ua1-f72.google.com with SMTP id a1e0cc1a2514c-97a4824dd83so1750596241.0 for ; Sat, 12 Sep 2026 05:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217315; x=1789822115; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=C08XeX2FFrQaQVRDvYflEJeFTvMG8k68onVOApp7D60=; b=TkMIiWyrCMrdDaW+nUUpdK3CQeWApcZ5/PwmPAZhEfJwrfTS4vyzCMt1cjGNJZ4rFa 6/zKw6rzT/cGVHvzgUhZz/tH7bAc780DIAfGhD3zTa4M8xbG/BGeARlOgD4OnNayLH+t 28IYPijtXtKwx0TTVMp9dWRxVqRNSh7alEjlrQvuBZq4ECfpGPSq4hUbfimj9paDILcH t0REt6mh0AvoB3GAOc8RL9QjPzLDqflHaHKjpHDWgWGQY6PViTceZvjxspLXE8r2iyHW OsL2J9WM0RNviUEyy2z8jViFBaiTXEbw+iIdOZMt+qfG5NKcq2v494qQ3rk847bWeuQQ qltg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217315; x=1789822115; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=C08XeX2FFrQaQVRDvYflEJeFTvMG8k68onVOApp7D60=; b=kms1NHv5QKXN/vpJoagkrp5//Pk2XrWFT+3jksKZNZ6us557kFrwtyYG6XzgFBaSmx pjPgiM0RWXXZYBsVe+3tcfxunSIKUWEJo2svXt39jkhj2DbUGBtPx9gwJAVBvrs19xbo +zCuA1duqhcPKpXm36Y1PyWQDLQeHpBDtKdeG9XL18JGX0VuuG9RWqQlmrgWsn8oxd0A 4wOvt0CM/T41gqCoGjjGMdKkpYzwCfLlABnmFwDHpZMagv2GQJjxdzedtOzNeMc0Yn3x C7jGr0rJkKOnfpI1s5Q9H5R+rID1Pw6TonwmGwyp3FgWF0FIOJqCw7EmHtMpIMhdRp3O 8ypQ== X-Forwarded-Encrypted: i=1; AKwUvBynR5iy9rF1In+Ttv4kXCCwnxN9qchMgvfWfIVIRViQBYtHIvCIl/HsIivDANCBBjDugmg3aTmp+gv5Ayw=@vger.kernel.org X-Gm-Message-State: AFuF++nfRAvNMnWUWrrRkVtpaJ3/qcp2zUnBiRLDgd6Db6xAqPRc58g3 qEsVjYSngyCmQQQzy4/4rdA/ouGYOcY/NwELYNjrKjqhIyohzuMrbfOdwpvcWMfECnbWF+HY2as NjBBkUHnkTZwDCWEFwkBkTj0BYqXN0gLIuEvjLz14XFfYhqUdFfXujfkakxO9Fn8WmPM= X-Gm-Gg: AYBFou04D8fR+KiBUFEp9gChxem9nll0vZ/yePh3HjlQ4yD4aJiWczqixsGhD8xPxUo KyrCcBXzF8wb7lT/w82LLn4Uh3w6gHaLKhE8e9AMmwC9F1yE09WGvUjeCacZlDiOqRJ574xoMFH Vc+NLVCEDHhQNPjfGIqbEgSqO+tWv1EhCudPI5z1UTIXZYDyiPHpHXExbdr+5Dx6JZjcOl0TZMh o4N98XDjPejAwQtf0ZPCTltOXmD0Q5o2wlsEFYWLZqu3R60AfvIdi2Z1c0NhokKrqc1njDi/hSc SrXtKHLWOnISHYOYnadQI7Y18moa+9OMU3LykAEtCeG0mBYXBEQtYHXXovnwKfIFu/htC6XL6gY hv65Y1kj03JQzcSGQf5uDBe4ZcnydhB1DG7m09YhXnKekauIDwXdF9RGudf+o5GzDgykxx2exNR TZOw2YJf16IhCD X-Received: by 2002:a05:6102:2592:20b0:786:dfa:c5ea with SMTP id ada2fe7eead31-792a5b8ec7fmr4320408137.5.1789217314819; Sat, 12 Sep 2026 05:48:34 -0700 (PDT) X-Received: by 2002:a05:6102:2592:20b0:786:dfa:c5ea with SMTP id ada2fe7eead31-792a5b8ec7fmr4320392137.5.1789217314461; Sat, 12 Sep 2026 05:48:34 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:33 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:25 +0300 Subject: [PATCH v3 5/8] drm/msm/dpu: clear the DSPP pointer when no DSPP is assigned Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-5-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1311; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=42MaHuKsi9wtmIKNRqT8ly0SxW0ZKEjpv2W8+Aag/4g=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoXJtkp6xzhmqkONLh41KlY4RqHvvU3nyLSz yg6Ldhr4ICJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1Vw9CACWmy7M/jD5kaRVjaa/LjM93maKtO6/NwlYADO+O4on8dxA8tmlBt9L6s6LHatDjap7D/1 spoGOXEdS7eZIbybnBNuJEz/INBcSm7hUAz4DWNiLe4rwrCZo7bWdUcawl9cV0UmyTK34k8uBnd 5qT0uxHad1kYx/vRmw2SIyRZpb0JRiFfgLaEoo535kxuoFrYSHi9eG/fMiKN9VxO0yl1xpnu9ov FtLLPcoXAgsmM/aPs0F7AcElqrJ75rFL7qnA0Acq9OHl3g0wDJjNU4dXotQhGlMg7gTnR9sPuzP 96PVsx/yodrA6p88BXpK93mtklYxAzhJDg+UeL3aO4o8JlFn X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: BEFtz843CG1aR4EShwm0qXJA_KG0TdMW X-Authority-Analysis: v=2.4 cv=Pv4G/AM3 c=1 sm=1 tr=0 ts=6aa54a23 cx=c_pps a=ULNsgckmlI/WJG3HAyAuOQ==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=jpbDcG_WXHA3xrgMYRUA:9 a=QEXdDO2ut3YA:10 a=1WsBpfsz9X-RYQiigVTh:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX4Z6bHW0L6ndQ /yz6qtffLHoyjVKkltNu5Iot8R7iAILuRGI2USsGZIhKC7QYUHu5fr11RAm+Jo2abWNLsyy2oeR ONgSM3apz3aSI68QBFH0GhLWpxZwI9s= X-Proofpoint-ORIG-GUID: BEFtz843CG1aR4EShwm0qXJA_KG0TdMW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX3HkG8w/Cm1gs EEMOYQgsMVm9SIU/Jn1XnpJRYXYqAr2iDC/+7+McRXsJkXRHk6YfTsjbKh8hyqkK8ZXOP44dr8B 12qCqIA8atky7WvDM95gwpY4bJsAU4sGEd3mp42KU/k907VwTe3cYeP9TMwrnLI5HSxAzzBGxh4 UUU7gw7YMJFBi0wJ9qVv8cpLek/2y2uwnZMq9etVaBgB1HFkZtREheoDM9/U8LErJCXiA8xgUO/ RdC5ECRqaxOt/JkAY8jPyDEfg7aBkk8+UrhYdCDSPbRNMs9j1iDsXvMO8mElTNXt0up/bSORjPQ DFpaK2ktyvKk9F4fTQE7/XkTMDxP+DAPUZCymjZkiCyVd1pMqitttft3oAm/WCxEdH15BVG0s2M Yjan8yVQh1b/8TfDTU+UEMQArHei2w3gLHd1Au+h+SNZ4ojch50YZaHbw5M1L3NhIfFpduEZThL ObC6UNZdP05PEE51Ghw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 adultscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 dpu_crtc_assign_resources() only stores mixers[i].hw_dspp when the new topology has a DSPP for that mixer, and dpu_crtc_duplicate_state() copies the state with kmemdup(), so a crtc which once used a DSPP keeps a pointer to it for the rest of its life -- across reservations which no longer own that block. Assign NULL when there is no DSPP for the mixer. Fixes: 4259ff7ae509 ("drm/msm/dpu: add support for pcc color block in dpu d= river") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm= /disp/dpu1/dpu_crtc.c index bf593020e8e4..5dc0c9aeaa5d 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -1480,8 +1480,8 @@ static int dpu_crtc_assign_resources(struct drm_crtc = *crtc, =20 cstate->mixers[i].hw_lm =3D to_dpu_hw_mixer(hw_lm[i]); cstate->mixers[i].lm_ctl =3D to_dpu_hw_ctl(hw_ctl[ctl_idx]); - if (i < num_dspp) - cstate->mixers[i].hw_dspp =3D to_dpu_hw_dspp(hw_dspp[i]); + cstate->mixers[i].hw_dspp =3D i < num_dspp ? + to_dpu_hw_dspp(hw_dspp[i]) : NULL; } =20 cstate->num_mixers =3D num_lm; --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4506E47ECD7 for ; Sat, 12 Sep 2026 12:48:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217320; cv=none; b=DP8N+ouwhnSBDvZ06mIiaRcg6UwNsNeRSS6RQDv/O8VVIRWSPADy16+7F0sXtvWq02i5FhMF0vvw4q5MYgTdYYunwnifxCxtHvVT68XHTtlryTVka2C1uImawiga7GlXLwue9hGBohaGkJLI6t3+JkIamE9A30rfmsX85vBvhqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217320; c=relaxed/simple; bh=Ydrl/MgzzNOlJycAh3i4QDmPVM+vAZ0hud8oX8EvOlc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gdiYmO4VukYQl+qzw1FU3biZ5nTC27rHc3HN9gT5HL9uRYtNTwcW52tQ6mdA0q0vc1ciRcIyqSxFWCiwQdbu3eiukXWATYYIEXrtCUNoRG5NSffJkYb3i+0BFi+PQ6LaowzOBBWkKdB6PjUGv6jTBT2YxIJhkKIP5v/24gmtzK4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZknuKtR6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ddeKGksv; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZknuKtR6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ddeKGksv" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBeTiW2883362 for ; Sat, 12 Sep 2026 12:48:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= IEuzA9pB4S2eUTwXiX8Bjz5BCBCQiMvGw2tVZpbC1TA=; b=ZknuKtR6i/4nrvbK 9NIya6V+mqtIOrstzAc9YPZ+6esoETiQ/zRqT6wPKJHjq4JfiXPy+IvYmQTqKucS W89fpaNUokX84kWOXHZKLBvMnlH+5YpLm/JBuP/XrEcjGq1+Zl7voG1W76f9CKvm 67mWK33/tYmskzLU7Ah5e6cEfl50OHuEd0GZ/uCeO7M1ayi9WyGTaAvosaWdmKfM jS6DRO0tJMSbXjaFFTjRryBAT23L8CLYedVG4rfsyEqeZLCcaSx2YDSYKjnIR9Hh ovkkoJsLjm9IWqxNroTmhJ1FuOrnEFrRA0so7p8T0Epioa01C5wvW/jy4CZ4OzxP 7XlL6g== Received: from mail-ua1-f70.google.com (mail-ua1-f70.google.com [209.85.222.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c0xnc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:37 +0000 (GMT) Received: by mail-ua1-f70.google.com with SMTP id a1e0cc1a2514c-98087b0c5deso1246371241.2 for ; Sat, 12 Sep 2026 05:48:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217317; x=1789822117; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=IEuzA9pB4S2eUTwXiX8Bjz5BCBCQiMvGw2tVZpbC1TA=; b=ddeKGksvchxpLVQoEJiacHkm0EN4EDB8IpeGX5Xham3S6QU3v/0hqbIR8PbcuoF+zX YIhKjjEbv1DvtsR3vRL0A83ir42HaBJLCvgjsjvLxpEmZmqMlk4EeRW1MMLUJbVLuSEa rVeOwX5ztfRbosMlhiZu2TV77hE+89FT6NDwLbRLXwjFmvrM+09tQTYbbPK+MzbS9v3G XL+VbVppBQqwgZXF8/UuTXWPmfe92ir2d/Dge4t9VZEGm/CjW0rZUHhXtfoLH/k26wlM V8mf+HEsA+y72eNDcaQF2ONyCTFiME/7xtuQmT5r+wdbU7wYUt3syF53chNAY/SM3khK 9gTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217317; x=1789822117; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=IEuzA9pB4S2eUTwXiX8Bjz5BCBCQiMvGw2tVZpbC1TA=; b=PikjhxtjKLBqStlfG+A1bebrRtmgahEzZnEhIJy1Bpv9yd+e+OHfs9jjlZ2gqzEHdY +h183Xac3gJDki8/lGvWpGJiK7CBAgfIrzFiboQwxDMEnDKWWpEsVLI+J13hiRDkONOy nUCZryJPq8WlcuSnPUCLvUoAVYW+SLy84C+I5uPfWErDOeXgAyYTRZ0oFTgeRJdRWBKz ckkcAZLlbRm3PNezx76b4TfoS9dU/dTXkXa8qsyF+qfUgo5hXJfZfCsdbxuZPRtd+OiS YMWXqSjtNRE9xBRdvuXbCp3XOgVifVnSvcc5UGyvvWPyjFUxQUpd/FJCMEkP1TWEa2s7 3wiA== X-Forwarded-Encrypted: i=1; AKwUvBxwIpzkRznKes4NSpAFsnbyeHVbFhxkoy/tZL/k+vzSMhTycc7orU9G49C9Oi/G2fuV9haOwjjXlqlAc6E=@vger.kernel.org X-Gm-Message-State: AFuF++mB+ZO6lJuwMbmVruFlOSQf/s58jGld0BZRMC3LFO1v26X2uDcO 73iK3ZUiYnqEFSQXdHENVCcKUnf13OWwjyTDQTpuGoCJKVtLYWnHlbNzd3Jpcr9c/SeYhilP5OF G0s+rLVoC8/Sypr1OdTRoGE5ROaemE8iGGx5CutW10JWO7Rzbjg0DR42VDT0NQ2ugVqw= X-Gm-Gg: AYBFou2w1+JaQMeZJaROE+FekCcK6qrSKVRGmZesSuGLThgzLtJgGkChi5p9f6FqNFS ww0R2TfuPdjgpfLPPs31RIkDL7qsO6Hn8AFqKkdRZJRjuZbZqrBFj9vFQtdS8GXQkuQ35aMPsUK RZY1RV2FYX1YxiNn8QC9TKh46/rDgvnWk1D6tD/vdjFTlZF70dt1b4UEuGkz9B2o3R5MLJRMHH5 4adNG7tvTx1GFamJXx4LZx6837l7m9yJw1NHr1NK+LP/AkLICb1QIwZp5Y2LINx1g03tXtxNpu8 pSiw7aQFBCV727KeTfzUPPEccquP+jg1sScZ/dM7FSCVAetyyl/saOGsxnvPpiiskHKdewUVqMl DeflA9yCv0bU4w4XtBnmmyiS1iIJeX7I3TEhZzRYQ4F5U4YLwd0DfrxBszpkozYDlEOsJmXJMdN ARUeDbvga/nP6y X-Received: by 2002:a05:6102:54a9:b0:795:250:3c42 with SMTP id ada2fe7eead31-795a8bea5e5mr1997558137.7.1789217317243; Sat, 12 Sep 2026 05:48:37 -0700 (PDT) X-Received: by 2002:a05:6102:54a9:b0:795:250:3c42 with SMTP id ada2fe7eead31-795a8bea5e5mr1997509137.7.1789217316175; Sat, 12 Sep 2026 05:48:36 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:34 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:26 +0300 Subject: [PATCH v3 6/8] drm/msm/dpu: clear the DSC blocks left by a previous reservation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-6-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1863; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Ydrl/MgzzNOlJycAh3i4QDmPVM+vAZ0hud8oX8EvOlc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoXgnJYN/kKDWpHG1TLEUOdQfhtozvgIXpoD l9LOViy30KJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1Xv4B/97dO92AC+MIGjcuHd/Vc+xoy1iFZgIql4yrfbhPFUNIX/qU5YnuaHVuv9hStw5j8UXlcF 7UW6++IyemaoB3IJU8DM6JmfUv1f9JuhmeAKQCvtvW9gMcwnJEvXicAFar17RAAwKG+hTXVGAIq U044v8iRoZxlq3UCcExXeTgzeK1HJQbvP8il/BrSXPyFqNIJDzNifDPAbW1nwB2jN+hD+CIqrrt +qCyqbXIkPIoAsodw1lIYY6SVP23OuPTALStBF2BfadMGuA3zWS4cYUqLZqJyQE0PMaDv/yB8jh aJ9mjpxFvi2hu+Pb33D2w5/1z/DCtKoX0F5VqKRwJridxzAi X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 6AOmOrAY7tdRqOzghPa4kBg7wybEIViR X-Proofpoint-GUID: 6AOmOrAY7tdRqOzghPa4kBg7wybEIViR X-Authority-Analysis: v=2.4 cv=c5Y+0h9l c=1 sm=1 tr=0 ts=6aa54a25 cx=c_pps a=R6oCqFB+Yf/t2GF8e0/dFg==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=mN6KdvlfDCua2x_U6QQA:9 a=QEXdDO2ut3YA:10 a=TD8TdBvy0hsOASGTdmB-:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX+yj2VdBchv12 O5SXsS6JuzTYMscz2IMmQ071pJHV9Vbi2APOHAPUOvfHSofU6Fh0MjuCEqvltQx5B0TiCX4bi/g PSdCJS6Pk8Zv7WPoTcQm2Xj7kWB+9uz1Rq0RUn9pYb522ts5BxSY+X8uMHm4IxtGcdd+EYVxVEZ b6D5wC+BssY6zSN3qtqEsgH/LhRC9ll6FPSJ669eOSqLvINBmZUvN+kx7gcfNQZ4TYfzy9ORQpn FhmY/zmKvg9/Jau3hDG/iyAFvxoBGSg5xg1dnG9AblSSTRMkLagSlI8X+UDsSG+zw9DToZVO6yt H8iz42uBqOV964odTe2ljZn2/ig+QX0600/UN55AhlCYpB/BIgnKXmNuH+OBDdouA0FK5+j7cvw GdKtbSDws6eNPhZkBMvobT0cQmJopIGMvE5DM0LxA+aw/ne1NE5xxl5PlHtNItP9Tas7wJ+5Mtf KA1Z3NHkFoKFzz20cPw== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX/URa9QM4fXzy nmK0mtTfuCyx6O1LNcZPpN0Y7kVqCmiuoQyxWW70SYf8aKsk/N/DuOFOxridaVnPhq9drKecvoP ep53EPh/2smG1VkUr+ZnHUvdqagp228= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 bulkscore=0 impostorscore=0 suspectscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 dpu_encoder_virt_atomic_mode_set() fills dpu_enc->hw_dsc[] with the DSC blocks of the new reservation, but only the first num_dsc entries. The array is never cleared, so an encoder which once drove two DSC blocks keeps pointing at the second one after it has been given a topology with a single DSC. dpu_encoder_use_dsc_merge() counts the non-NULL entries of the whole array and compares them against the number of interfaces, so the leftover pointer makes it report DSC merge for a topology which has none, and dpu_encoder_prep_dsc() then programs DSC_MODE_MULTIPLEX into the only DSC block that is really used. Assign NULL when the new reservation has no block for the slot. Fixes: 58dca9810749 ("drm/msm/disp/dpu1: Add support for DSC in encoder") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index 1f20695f81e3..50c49259a23e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -1222,9 +1222,10 @@ static void dpu_encoder_virt_atomic_mode_set(struct = drm_encoder *drm_enc, num_dsc =3D dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state, drm_enc->crtc, DPU_HW_BLK_DSC, hw_dsc, ARRAY_SIZE(hw_dsc)); - for (i =3D 0; i < num_dsc; i++) { - dpu_enc->hw_dsc[i] =3D to_dpu_hw_dsc(hw_dsc[i]); - dsc_mask |=3D BIT(dpu_enc->hw_dsc[i]->idx - DSC_0); + for (i =3D 0; i < MAX_CHANNELS_PER_ENC; i++) { + dpu_enc->hw_dsc[i] =3D i < num_dsc ? to_dpu_hw_dsc(hw_dsc[i]) : NULL; + if (dpu_enc->hw_dsc[i]) + dsc_mask |=3D BIT(dpu_enc->hw_dsc[i]->idx - DSC_0); } =20 dpu_enc->dsc_mask =3D dsc_mask; --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 090D047F2CA for ; Sat, 12 Sep 2026 12:48:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217321; cv=none; b=mc5AoterRrrvdnJcrBzNX/1ethyfr1y2pt9vn82n/oPsnO4BoOY6UeuePYKIadnV3kIxymhClUWQIIoqQGbwhfDJqbJ2IH7E46bNYaPMIemQcx+G9h4GnhTq5l1x8DrOfxfnqGmE/xt5ShUdHrNwJdJ8kct6IKllquhRGuKeiUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217321; c=relaxed/simple; bh=mqhM4B8gnWC0chv2JmS2nzeA441LZsa3HAirQn66G6Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ij3M9/NYFLobHsi8iBwn59ld7JjHjiWBwKRkWJ2+iqUrs5N6yr32DdIhef9IvXfNeWonbAOPsHnmRyTYSWfR/mgF3AKUN0UbJymi25JU2WLIacq9FFhdTpiE3Xrz/tym/mpGA/Iq3ZsefmoOHRCRpK1CINbwWKGagdBbFWkSLWE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MbI3N4na; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=grU0CkLQ; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MbI3N4na"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="grU0CkLQ" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBdR3Z3101635 for ; Sat, 12 Sep 2026 12:48:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= U8Le9HTbvX+Njx4HmZDZ+JWS3P6BGRgoiPUFcnspqrw=; b=MbI3N4naxVD7krbv Ii4/SAgQPW/AXaLtTqnOBDU83JbY7HA2eWQTjhVmqC7Gi5cHkF3va87Rt4b6fuEy FcGy351S8KkFJF+ZmGxuetXyru1AIgdj83q+2SgBLab6F1AJl8MNigCZrjliQRnS QuVvZoR2dTutzGBP7m/6ViTuiVtQL33WEpdvKgID+J3L4QFCmqlgKpNfm/1RZ47r UDbtzxrlAhFAy1MBPDcefJi9bDTGGM6SvaGedCgYk7Gz+W+fAfkln9anEL9VmvZU cpXbAkl9eWfn6f6jT8wyq9oGX8gOYbaAiQNFe7/XrbOM7zHUBzO0jFonoifOYZJv KlhKgA== Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com [209.85.222.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c8y6b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:38 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-97ca6578487so1608559241.3 for ; Sat, 12 Sep 2026 05:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217318; x=1789822118; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=U8Le9HTbvX+Njx4HmZDZ+JWS3P6BGRgoiPUFcnspqrw=; b=grU0CkLQHhqWA3L3uNiLeduYxMu0IJCuw7wR39Qoy/ZDw+axKJ2+oWBVYhPxSu/fpe +PnbOPYSYRuwwmdYu5L/Dfp+2L9M6aLepu9ZUUhdR1Q6XVjrTkN0+ESFHmzngrl2Zp4D rSRW5LSe99idzj4/2DpIsYcIEBVpyNcCQUdmXH9xJfbdBGVueunxHyleeGCu7UU4piq8 S3RwskoAqD72pWm7Snx2PEOpjwsysMLFSoLCmuDwxut5EBOD4sLVOxARaUSRjUZM+KJF fXyxP3h7ebrATvpexlsl8vbCWdWDnRLfyADmmjNE2PtkYCMOh/IOsYxqJ8ylBz2J+529 CK8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217318; x=1789822118; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=U8Le9HTbvX+Njx4HmZDZ+JWS3P6BGRgoiPUFcnspqrw=; b=mB1a7AIzTk6eOUh7C4Hs4FgqgP+b8NBe66ARuerk+V0YOQlpsMmp7fg8aa7fKb1jy7 slgTNUm0CDycecaF0yfX1+24RCwLHH5V5jUx15QvIddsa2pYzmf6Our5MPQChTNZ6bLK zK6tp2Ux6N9rHfNtmte2IPdvUxuPrSVKoEQNaVa6EyRS8udvzcRmArASycMcYiQWTfga tgYOe1c1kELbdsQT+8TdsKuODQan+m52uGVRX0xYZRA2onNwb0UvCtCmfosKU/6g2iZb A+/oVhkeCbum/P2y2I/57DHno1+rYEw8zYI4/KWy8HRP4p+R9bNrkPE6zyRB8I9i8tBZ YU9Q== X-Forwarded-Encrypted: i=1; AKwUvBw4Psi+T7v3iMjWYl+5KH8eo8MCBVWu1re8urgSBfNnQre7cvZQWObWn51LQOKnse0Yl8L7CjoKvNZ2F64=@vger.kernel.org X-Gm-Message-State: AFuF++kaX+JSj9xjc5w8SLoElUlZczRK+1tacK8qjmWbixV9Wffu8UF2 zqJy3la4JTmG6RHEdoa5YgIjdXF8TWfaV3KJJBIW+Hs8GqEukjELlEK0aID7cfW14iLZ4R53qwt auu1gyYPHIEGfoprV8l4JTfSe44ZCgCWIXkJjW31Fq0zzsRxWx4832bLkBqIySzETzdk= X-Gm-Gg: AYBFou1mRXu0ncRZQ8zKFBHhzWvo5utn8n4zulDpima0XI7eYIDqPA3wkdNxDTV7QXJ mEd3NZeKi0sJENJv7dpSjzkGJOjo1IqiAEeY+tTPfJhHdTwef4WhfjwtPt5C04Ih0BsqXy1fXhq RI+XNTSPHnab7WfuOjNBMIsQ9Cu0EgtlClne1c9zlrQoqSFHZOg8XxRcvDRQBj7Yb8+82Bgd+Ms +MRde5CEtLSMH/R7AgtMpQbfEGlMxNjXV1uUCNb3mkYZWihOtU+ho+0LToKz0WrOsqgEB7WGihi 1cEekyQBlaTkYeHmBStrfE5mua/zqCNCEZHyrz54+pCyfl9nhDrnDw3LPy0pwaQa8iHt1gtL7FV HDCesvOGsTrXt2hO1mAFs7QaJUDHGARDASLXWxcCX2YcK8aYystoiuKhEXAcpxrfVFP/acFItP7 QKCtJdBKSRd+gd X-Received: by 2002:a05:6102:3e85:b0:785:1a50:3f56 with SMTP id ada2fe7eead31-792aced9446mr9612182137.12.1789217318091; Sat, 12 Sep 2026 05:48:38 -0700 (PDT) X-Received: by 2002:a05:6102:3e85:b0:785:1a50:3f56 with SMTP id ada2fe7eead31-792aced9446mr9612168137.12.1789217317647; Sat, 12 Sep 2026 05:48:37 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:36 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:27 +0300 Subject: [PATCH v3 7/8] drm/msm/dpu: only reassign resources when the encoder is reprogrammed Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-7-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4595; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=mqhM4B8gnWC0chv2JmS2nzeA441LZsa3HAirQn66G6Q=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoXjZHbyY1qpDjCgFI1oVlXrQOqcqHE9Tt9j TcW/w3KWyGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1QxLCACE0Pz82vSK6bzDBX0Vx+h6hP5HznaervgNVP0xo1/I1gS3Iv+z5qhjdqLysLV9HOOzwLA 8qT7EafIyEjxOo2B3l7aPBy7opitSEtx5ABhKXaVpWM6koXklGEsk35VmVz6oHHVsYnqvYIZiw/ g8PXmOB2VKc5DN8wN5i0xh2dpKTgfT3Ac17sIjrA7wUTlHmfanLWpdtlcMdXWBDX3ienGxQFGdo b3rYdEBJ1uwcGNbsKo62ckVbh4V15GwKVAaI/2UDVXc5TyGLUc7ThdUPACr5Ie578A4LX9hnqjv U1Tp744kT+E8BA+VCHm4ylzfJrhOmHS7Q/SBH03kylU4Bhi9 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=e+mT2qp/ c=1 sm=1 tr=0 ts=6aa54a26 cx=c_pps a=UbhLPJ621ZpgOD2l3yZY1w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=lVXjEyyklXRvgn5FDE4A:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfXzUN+Q8GkKk2v xIgsB9wCW9jXxZjqguE+l61kO6ki9K6MRHh1XosA2J6sBk0MY/B6g8XwjZ/lI0/pR75oS1gsU9I N6hoqyN06SSqCd+Jn3Fqs1/p3fjVRQU= X-Proofpoint-ORIG-GUID: mxqSZuJLngoyx5Qh-yqOe1CGFSua_WVu X-Proofpoint-GUID: mxqSZuJLngoyx5Qh-yqOe1CGFSua_WVu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfX1+NBzxhmnlbC I99BXdRJzJBEkqeixBPLQnqTUQtiBYXSAluNxK52FxqlaVanTcXKqsHMX08g1zBJjqQERCbMWJS PwQX6MULgKeDiJ4PluWHUjbSYo036n3ke2vsEi0avvLK79mr0Z6V7irkEEgoFoP6DvMqkzGq93K V+ftkg8C8m64x/pTV7TLbDcdWH4EfDRFcUKFyyZKGvnmf/mf5BKU7E2t+T0av6h8HCbvUTg9vGo h9KO4FjpmlCVajWgI+WKDUU5d76F6Il1gQAvQTvv4KCnIRFKQR7exvgogTISaoFVD7IcrrGGDtb yexMIYaNvrblhBg3veflsEb9a3AjYPJeUb8GE95O6RRuLeAKzkjBnZgYKZsoNqvFUzY0j51+PXi n6IMHApAZ4Tit2FgbmHgJhNnGfa70Tkmw6UnHtQnYAxhkZOx+y431bbBB60XkG1oU+atzBNbQ67 PNFTuVgmByR4A8lxE5w== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 phishscore=0 impostorscore=0 spamscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 Running kms_plane@pixel-format-source-clamping causes SMMU faults (fsr=3D0x402, iova=3D0x0001fb00): it sets a CTM, after which the display st= ops updating, so the test times out waiting for a CRC and the pipe is still fetching the framebuffers released when the runner kills it. dpu_crtc_atomic_check() reassigns resources whenever color_mgmt_changed is set, but crtc_set_mode() only calls ->atomic_mode_set() for mode_changed or connectors_changed. A colour management update therefore re-reserves and c= an get a different CTL: cstate->mixers[].lm_ctl points at the new one while phys->hw_ctl still points at the old, so the flush mask is accumulated on o= ne and triggered on the other. CTL_FLUSH is written with zero, so the pipe is not reprogrammed again until the next modeset. Reassign only when the encoder is reprogrammed too. Enabling colour management still needs a modeset, as that is when DSPPs join the topology, = so ask for one in dpu_crtc_check_mode_changed() and only there. Drop the msm_atomic_check() hack, which forced a modeset both ways, ignored GAMMA_LUT and overrode allow_modeset behind userspace's back. Fixes: 39a750ff5fc9 ("drm/msm/dpu: Add DSPP GC driver to provide GAMMA_LUT = DRM property") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 28 ++++++++++++++++++++++++++-- drivers/gpu/drm/msm/msm_atomic.c | 17 +---------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm= /disp/dpu1/dpu_crtc.c index 5dc0c9aeaa5d..a3b1d2d7669a 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -1496,6 +1496,26 @@ static int dpu_crtc_assign_resources(struct drm_crtc= *crtc, * * Check if the changes in the object properties demand full mode set. */ +static bool dpu_crtc_needs_dspp(const struct drm_crtc_state *crtc_state) +{ + return crtc_state->ctm || crtc_state->gamma_lut; +} + +static bool dpu_crtc_has_dspp(const struct drm_crtc_state *crtc_state) +{ + const struct dpu_crtc_state *cstate =3D to_dpu_crtc_state(crtc_state); + unsigned int i; + + if (!cstate->num_mixers) + return false; + + for (i =3D 0; i < cstate->num_mixers; i++) + if (!cstate->mixers[i].hw_dspp) + return false; + + return true; +} + int dpu_crtc_check_mode_changed(struct drm_crtc_state *old_crtc_state, struct drm_crtc_state *new_crtc_state) { @@ -1506,6 +1526,11 @@ int dpu_crtc_check_mode_changed(struct drm_crtc_stat= e *old_crtc_state, =20 DRM_DEBUG_ATOMIC("%d\n", crtc->base.id); =20 + /* DSPPs are only reserved during a modeset */ + if (dpu_crtc_needs_dspp(new_crtc_state) && + !dpu_crtc_has_dspp(old_crtc_state)) + new_crtc_state->mode_changed =3D true; + /* there might be cases where encoder needs a modeset too */ drm_for_each_encoder_mask(drm_enc, crtc->dev, new_crtc_state->encoder_mas= k) { if (dpu_encoder_needs_modeset(drm_enc, new_crtc_state->state)) @@ -1535,8 +1560,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crt= c, bool needs_dirtyfb =3D dpu_crtc_needs_dirtyfb(crtc_state); =20 /* don't reallocate resources if only ACTIVE has beeen changed */ - if (crtc_state->mode_changed || crtc_state->connectors_changed || - crtc_state->color_mgmt_changed) { + if (crtc_state->mode_changed || crtc_state->connectors_changed) { rc =3D dpu_crtc_assign_resources(crtc, crtc_state); if (rc < 0) return rc; diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_ato= mic.c index a8babf1dbe0d..7b480981becc 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c @@ -185,22 +185,7 @@ int msm_atomic_check(struct drm_device *dev, struct dr= m_atomic_commit *state) { struct msm_drm_private *priv =3D dev->dev_private; struct msm_kms *kms =3D priv->kms; - struct drm_crtc_state *old_crtc_state, *new_crtc_state; - struct drm_crtc *crtc; - int i, ret =3D 0; - - /* - * FIXME: stop setting allow_modeset and move this check to the DPU - * driver. - */ - for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, - new_crtc_state, i) { - if ((old_crtc_state->ctm && !new_crtc_state->ctm) || - (!old_crtc_state->ctm && new_crtc_state->ctm)) { - new_crtc_state->mode_changed =3D true; - state->allow_modeset =3D true; - } - } + int ret =3D 0; =20 if (kms && kms->funcs && kms->funcs->check_mode_changed) ret =3D kms->funcs->check_mode_changed(kms, state); --=20 2.47.3 From nobody Fri Sep 25 12:38:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CF8747CA77 for ; Sat, 12 Sep 2026 12:48:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217323; cv=none; b=FhzbIyEFtBA8rx+5CYbz3pWb8z8nbC39+VliA1ba9MnjLKckd5s79L2roGCWanOSLuigHgjJVVwtFew0YnoGZBBH4lZhotAkHgKoti+gZqfjWTNlsPDywJzoOE9B6iQxHTAA6Ix+QY1qAq9UDQe423ldpwO1fkhyu5GSDCrV4Xs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789217323; c=relaxed/simple; bh=b0Cqqqr5RXysOo/IlbQaAaOsD61faw7dj63ogkvFqxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ITVpSXYUyie4p8LbJl3J6oTfSsi20Ay+blin/xOz8P1IClO4jDJ4UxjN/HeE/RTX88ns1bmlfx58RJNltRGEC0mRNaNVplXs6g67lezy9hGAx1BMtbMvgA+W9N6xGPxC3ygV154rAiE98cmsP+lJz09RwhWEAFK2ZBt8Z6eoy68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=agBy3CGY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=io+/SYFQ; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="agBy3CGY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="io+/SYFQ" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68CBe20k3103344 for ; Sat, 12 Sep 2026 12:48:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= csdoT9oCeHS//8bD/6QO58rYEQChTDH1xyFYL1OZaT0=; b=agBy3CGYWFJ5DI4x eTq4qneUlnWTOtXb8bDHuABNK3AZxKJ0yLcBzvNsDbChUWZ7g477OBfwbQ9b9dJl lz/4ubWfYJvkkH/w9wGTdjpylkuY1iZn9x/xPqFOWneAzd95COlxTk7TStdW/6St 84YpiPFgifrG/ZOjYe6ZWxn82GA5Gmyqr2o1gND/PQFuNoO8SfwamMu9//eDAD7h FyPeJcWgrhjQD/kMBxF5S6aH6AEDGzPqq0B2unkytcVga/wvsj8L7P0fal4rMSO7 DmFocjphE/SITiiLtSjr41dydFZPavOJ1BXG5ebdbh+83Rb3h4VhdnEITAEu8HFD oaK0/A== Received: from mail-vk1-f197.google.com (mail-vk1-f197.google.com [209.85.221.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9c8y6e-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 12 Sep 2026 12:48:40 +0000 (GMT) Received: by mail-vk1-f197.google.com with SMTP id 71dfb90a1353d-5c6725e7891so865376e0c.0 for ; Sat, 12 Sep 2026 05:48:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789217320; x=1789822120; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=csdoT9oCeHS//8bD/6QO58rYEQChTDH1xyFYL1OZaT0=; b=io+/SYFQZ5Qxq19ee6ctYVNIoxXNserz9V+0d9+ozRePlX24zj9DVmn/scQrINyOom Okm1gI1W41ri4B9J50XDgutspSiqARPO0+1GRZBkfa2iczGOsCsSBY8AxFRGnNuaL2L3 jJQbnBvMosn+qLdlXVDjRpdXJWORYIYy7qJow+MmsZPP1Oi3VEvcU6G8d6biF4XqZO0M OlE8SgpJVnRpPlWje8b1outN+nXMHXLoI63cTod7kDYhJrojiQzone+wuUPIn8ziI7nR rnrI8eZZGyRgCCQgnvoOSuYdZd0Od3jjGaZMrI7Q5wIx1LdaJD/GfZKEsi6KWyW46D24 8l9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789217320; x=1789822120; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=csdoT9oCeHS//8bD/6QO58rYEQChTDH1xyFYL1OZaT0=; b=pho2QOR8CrAvTiaJ9aPLNO/wYyFifrXqrBispGretKcj6SBXUInInYmgrLm0A7sPJb SaCeEYGN8QviEP+N5roukXsi+LPDom1a6kCvQyO6bBruiFwyEcIt/cjN3CPg/1aC4nyw dMnMasscayCKIe7cnpc6bdo3FIiF/DL8idoTf+oy3lpNLk68ZeWxRdTC2mzzFZBIvrJp j4jtxaMg7LCgY9Hani4KEwfk0qto4m4+wgjhkAljbQf/ES8sbJKp/X09Dh+0d0jyns53 0ekNMvV7RRoysSMU/M1fB9mY32JpL0OQPbGPpTu3LA2PNhfmPRGcUPt7LgsPpd2/GAvM AazA== X-Forwarded-Encrypted: i=1; AKwUvBx30jvubuQWoXrqiPfynuYKDZk4gf5bs8+Q4OrQN6U4Lab30cO1GgNofKs583KlCWUdmMUUZn+QO+6xyWY=@vger.kernel.org X-Gm-Message-State: AFuF++nEYqVfsGfHDWQSj89wQGoNB9pF7vpLLB1N9deVv+AaS3WmIq97 WWsirN0B3FuId+N2pdLZvewp2LSCl0oMY/G0RzvPogP4O8hMld9qM6exgv88rrPLycsxo39gRc5 LzaxfDK1WJXuJKBOF7nyGnsuvcVq5tXltqJEwz57n089Netqh4xj7dx7Uwh1hBkLYc9k= X-Gm-Gg: AYBFou0ikfEv6z1JVddVF6CCTNO8Cw7Sk4SR2XiYC7grrQanF6lsCnQ5uc8Xlt9S0RA ZW0J1Rx/qEHUkS7LQRv3AGvrxj+MAsAz4B0yUFAWPqwvHsYamfyKi81f3aDWbM25iHYUJoFdgyC nlaC0CevGCzmUDKGXh3Wm6GEvHmz7IPgY1qcXfnHwmc+ZZQIl0um0QiVsnMNEqodfAL4S2WCCdt o9qNb98E5QPsFLIf37MZDmAau+hs7cB+PMOnweBjMmPG+fiAYN/Hfv6ZGZfE5+iixpQ3NgERb3i eFEFN589Mhjq6SbxNTxfxmhcP4BEgSymQYv/Z4mqGq8vutUSCufFn0FqGvk2VgYJC2N1AVnposp 2ZVGdux9kb1EXVVln8GwmGlQ2LLkY9uMp6yOCSAUUOzVWU5n8268jeJ4XKaYRLmz52YSDuH7E4a T3AmGVXLtoaVKd X-Received: by 2002:a05:6102:390b:b0:779:5049:87b2 with SMTP id ada2fe7eead31-795a0ea85cdmr1722624137.0.1789217319818; Sat, 12 Sep 2026 05:48:39 -0700 (PDT) X-Received: by 2002:a05:6102:390b:b0:779:5049:87b2 with SMTP id ada2fe7eead31-795a0ea85cdmr1722614137.0.1789217319453; Sat, 12 Sep 2026 05:48:39 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5af37a4eesm8825701fa.34.2026.09.12.05.48.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 05:48:38 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 12 Sep 2026 15:48:28 +0300 Subject: [PATCH v3 8/8] drm/ci: mark pixel-format tests as passing on SC7180 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260912-fd-kms-fix-smmu-v3-8-a7ddc6fe2032@oss.qualcomm.com> References: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> In-Reply-To: <20260912-fd-kms-fix-smmu-v3-0-a7ddc6fe2032@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Kalyan Thota , Federico Amedeo Izzo , Helen Koike , Vignesh Raman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1834; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=b0Cqqqr5RXysOo/IlbQaAaOsD61faw7dj63ogkvFqxI=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqpUoX05zXcOAfkFqrJSW34pjmtrAN5/+czbqJT E1f17mbnJmJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqVKFwAKCRCLPIo+Aiko 1Z58B/4r2dJLvpGdfeJ2mE2IkR4JV4FYoW5wZOTXRVl4nIfbVoDce6hkOP/+xHDWzJH2r5DsTU1 ++CAFw1FgE5GjA2pfBne8NG4Rv2N0tsuIJNfcw9WHPAK+n0UWD8WngN0CASzx/8zQ7mhz/ltPx7 JD9hnynNn3gd4duwzUfyLB7ar5xpS7T6qeFPnWn3qt/IsflzBzGd2JiR4L+IQkzZn3ODhWybqGu Q+4yRseusadrwzDOl9UDU6FFZtvLRKX7Rh9BruzLQbOkqVtBRBgXPH4DygGz5dEF+Vvl9MTWE9u f0YQ3zN0PyJeFu9eeXYiYBaus7Vc2BIS66ncbEl2g4OLri6v X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=e+mT2qp/ c=1 sm=1 tr=0 ts=6aa54a28 cx=c_pps a=JIY1xp/sjQ9K5JH4t62bdg==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=_1_hEmUK9n4M9CbZuSUA:9 a=QEXdDO2ut3YA:10 a=tNoRWFLymzeba-QzToBc:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfXwO5CPue3oyMD xnIwpE8ubLT5jpvDF+Qu1jpFtaQxBva3M6KN85OonzZkwwp6uWvE0zyHWJn45FH5Y0kGWHzR152 WuzZyd4aWAmV3ASReVOvSJGlSnyk+zE= X-Proofpoint-ORIG-GUID: n0gN0yfMW0LZq-cW1O1vfPu7I63cPoqe X-Proofpoint-GUID: n0gN0yfMW0LZq-cW1O1vfPu7I63cPoqe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEyMDE4NCBTYWx0ZWRfXzErUoW9+Rh2l WFyvD4enAMRLtAxsJqyvVjzFwjhNcmJV8xLIUTbfx30jUKKqrZqdEovDymbqvKumhKtjALF2oEg vES/WH0sCqOQksxSR7S1cj5ODqNLs8EdAz9XMrPYbQlfwPieBk+tAHyR3ciIqTBbNPsWLiY0jAi mQn2n3jwzCCWTmu21UCBaKk8JmsL1E6gNDGvk2lrB1PicrcvOVMKNlCsGRXgW7jEYExnqQD5Pyl WWS2CQ04Q7HuqBGsT3YU07PC29joo0eNwNUmgYcujFDHB6e58h7jilQ1APPqrPyrXjm5Ml+f6i2 cMYSeM0k0neoccKWyyC6D72kh+ABWinZDegt4bFmu7CGp7cD4hGFECRskz8wFfwQVh1dsc5B9qP +woKWuJ0tr0atC+1zDyM10yRzFGtiag2brebBmwvrFGGbNIS6bD9mnx/6wJ34LHeAp77tnqej3e LsWoP4ttRRZdtCT009w== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-12_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 phishscore=0 impostorscore=0 spamscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609120184 kms_plane@pixel-format and kms_plane@pixel-format-source-clamping timed out waiting for the first CRC once the test had set a legacy gamma LUT. They pass since "drm/msm/dpu: only reassign resources when the encoder is reprogrammed", so drop them from the expected failures. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt | 2 = -- drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt | 2 = -- 2 files changed, 4 deletions(-) diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.= txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt index 2daf4ab879a9..ea3013faa37c 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt @@ -18,5 +18,3 @@ kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail kms_plane_alpha_blend@alpha-7efc,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail -kms_plane@pixel-format,Fail -kms_plane@pixel-format-source-clamping,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fa= ils.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails= .txt index 2daf4ab879a9..ea3013faa37c 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt @@ -18,5 +18,3 @@ kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail kms_plane_alpha_blend@alpha-7efc,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail -kms_plane@pixel-format,Fail -kms_plane@pixel-format-source-clamping,Fail --=20 2.47.3