From nobody Fri Sep 25 20:53:59 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 A98F4556BB6 for ; Tue, 8 Sep 2026 15:24:20 +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=1788881067; cv=none; b=gSGUnGSCL8hIDxQXQPEBex/ykUIZrAxbaOSdbmsVmKUDP7NIzEfnnLXH0LDqUZDoNpd0d6QMtqw4R1YozuOGxs/wTV7bs+UAf5GtA1wUCFQbaWj9mCw8bOfb0eg18cNGqjf+IvUUSidqw8WnpgyaVaauVL8WOuCkMxpSg+RSBPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881067; c=relaxed/simple; bh=rvnAOg/zYGiII6SLbLFn05Y8Y0cbEo0D1VGSCTZYDa4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AFsTwtrZwXBlTXmd8qtErsFVevxeXcKBitaQDdHnE86fvfhhvKBbPttQx3m1qXrGSoU5xsBumqgzNaKLFw65EXQEIobKmG//hUvctIqc/TVy+OFZiEktf6EJmTy5FCagtqRUrvJNju+RB5N0StPKeK7OqTXCHeiVYTZZqomddNk= 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=GidDwibB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MXDjRnG8; 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="GidDwibB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MXDjRnG8" 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 688F1Lfs2684541 for ; Tue, 8 Sep 2026 15:24:17 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= 7u35nzDdP94dCsNs9Tn0dCNHt60+fGcXSN0rDFrXnv0=; b=GidDwibBtWZJCxXf qIOv0n9Jc4+Asol05gQd4euONroAXVkmUBOx8jjilhdJFMyE6C0XmeBgq+j+7r0w 3n76TtN6FS9/MRyG9El2TJmWTBvn3efbdxeCMLKEYLcBC88d3SidUXnqpMxI8i+6 dNF6LuVsgKgC3aCSSqQTg//v8XgJhOMtHtsPhtIQGgaeJkkvFuPnuJ6vvyipW51G HEmF/8nCgJJ6CV0cfB9kvrOZ6Mj9Lv2zP4TmFxu2/AhBLsbc0EpEH086bfvLb9Yk CuCR4D0oSQE2byHHCMv50g3q9ufQ8XekHMMtS7vgVPcI1fOyU3E6bVvz6300KEXr p+l+JQ== 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 4gjjvugpx5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:17 +0000 (GMT) Received: by mail-ua1-f72.google.com with SMTP id a1e0cc1a2514c-97caca2faacso460064241.2 for ; Tue, 08 Sep 2026 08:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881057; x=1789485857; 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=7u35nzDdP94dCsNs9Tn0dCNHt60+fGcXSN0rDFrXnv0=; b=MXDjRnG8ei8MHi+C6V24lg66KZK4cSAYyH+8/gck+yHVH9hJNIKxyEjJuRy9D4pORk 39YWEh5dcfcg3gNugARFnLFDR4SvLXe6l5K592z/4z/kCJegCVFgk9x2CcLUgiGnz7Kv nFnGwkKiaLfq+Ywuvuxw9tkdxatZOygOd7cvn02g0GGiMOmcMMHdleXXxXOD0cDt4GWY V0YtrLFre76qrnnKo2iKdI5pXUYNzVVaQlNWMFeICdbR1EGQH85qSz6MHgB/HslV4oPi OcyhP5ZRyyirIdBe5sSnVmw6mnIDtL+hUD5+1rhdn+ZmfqWo9VKu+O6/ZX8gr7a8PH/K k+QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881057; x=1789485857; 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=7u35nzDdP94dCsNs9Tn0dCNHt60+fGcXSN0rDFrXnv0=; b=YBUmWGnFJq/JNUn4ZLliJnC7m7ynX7aQ1TQ0IfWL56CrUofdYkX9lfrYkzqcZmxyMb /K0kV7o6juf5JF6qoWb91U2LJ0k2ByeNK26600EpvJOrXkbihhvlM5AVJzk7fRDH1jq8 G9vQ1ipucWGfeLaKG7wYyHgoHdU8YuwGA3coAus9xA2NuRU/+mD/Nad/gFyUrNr7UhRm zdPMcKSSl0AA4mJi3lpwb40qwPsw8Q9U7ejAB0poaSB+rq/uCFu0RbDKojb4gA88qwNb Vd/6M6FUZV2WDuVD0fGrd+6xrC0OSL//JkhIX8bfHeemTQBONoazbGOjn6rE0rp40p7D UHfA== X-Forwarded-Encrypted: i=1; AKwUvBxmpsfdz3b6fRJ2SiwgW/5YJAU1wCPmftqk0ZZVUIjsc8HWuyLKMNcG99cbvQllxWKHyPkMAE6xXZUuqjg=@vger.kernel.org X-Gm-Message-State: AFuF++lYFaRpLl0U5wbWfgVfd05OCu6HtL6a9gyDa5rKYpT0tHJhQjiJ qspXl+wMGSFXypgLwCFmCzrNZugF4R1blC5/y0KTON6V21J6QAtC5vp1yLf2t43iJzW0rKh6TDX 3mLmc6NyminiHELi5xPaPMwqP0TCbeVp58S4WkqrVuKrOezHp79uCfQeqjMpvM1vinBw= X-Gm-Gg: AYBFou0Mg4SvPeJaM1APM8XxZTcuLXOx0fHpsB1NLjrj5+awdo+c2UQbIUC6629ih5P y1Vha1bXfsRqxlz8/whW8Aoj8t0T+nyb8S/M1fgVzo/EvDfzpk55Imnmy6bIluA0rP6HBuVNnn6 AHH6IYHosMADnOZHoh7spH5TvcZH3juAm1xek16qJCqPuegKXmmcMjipim0LerMizBKFa497w/L NVWbJquBMZC8DSxe0+m9gSiKIwTwWbAzDDuF6L0nG8YAOB4QRXmfl2U36SCeIt6HNVGK3e/gayw rBdKwUoVtLUUkaaxO46BuZDNlJM0lCAs3Wx5751HLuPk7czTvD6seYSMMKwDWQgkzEfsp54zrvo RlkupNdBOKvz6/lyTZ5VcKa2ORuEOgHvdKB+lY1rBGnyP8ErohXeaSdOrXr/zRzo1PPvQny7MO6 tvUVpKZJbGOe4h X-Received: by 2002:a05:6102:808d:b0:781:210d:2897 with SMTP id ada2fe7eead31-78a4aa07b1dmr10166217137.9.1788881056834; Tue, 08 Sep 2026 08:24:16 -0700 (PDT) X-Received: by 2002:a05:6102:808d:b0:781:210d:2897 with SMTP id ada2fe7eead31-78a4aa07b1dmr10166164137.9.1788881056246; Tue, 08 Sep 2026 08:24:16 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:14 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:09 +0300 Subject: [PATCH v2 1/6] 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: <20260908-fd-kms-fix-smmu-v2-1-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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=4350; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=rvnAOg/zYGiII6SLbLFn05Y8Y0cbEo0D1VGSCTZYDa4=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ9YCjVmMqW1mq7+cNEpusGd0Dq7t5pqxcJVqruvhp/Z8H AyM0UadjMYsDIxcDLJiiiw+BS1TYzYlh33YMbUeZhArE8gUBi5OAZhInTL7/5qooJMlxmXd6yRn 7+uMjqrL32nskvE3QeLU7rOJMVO5v/FVNHrr2ibFJnFYP/DkP9Fv9lCnfuMGy/Yleaumx+v98n6 59Fo/k04Zu35npzaznvv35ezhy42ENgh5unk+M7Vtuc0oXffAduVujw6x7kOp8nkmO9/kZx1Kfa jxNbxxu+JE5ZTs4tmqG+TYdppdtLjdXh/47dNO79rIda8LU//NUvVb6rd8fnV/1VLHLKZJItE6S eXXqnkMHnecS9Izr+b+8mXvYb8cr0drl0hduyq19MKfBvGWpp7ChzYl+dz2NrXz9q9R0hN6u01P 7cfsnGXXzmT3hPIEt8zwUz6ZKVfvn+d85OYSoRKmAAA= X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: GPjOqPmnzuJIQhOnK4oyezqA7H7_4mfV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX6mw4rgbVeeH7 H65ZsNBuLslR448yXv2947a9jycKxk7Q8S2ccODmZgbZOKrY/H31RK4bv4y3QOoTzcwjTnjny4U rlVo5om00AvrkjPgEXdTRmlt9VTH/umRkbJK9xDB66MZ9SPP5va5S9SCXhNWmMwcSbyGcKlVGd5 nKFKCsm7IpJMBMbHm3XAm76VwiKG5qVX8Xgs3awQYZBhjmXI4wwv67iKGVPlS7omqqJUraFyu9n FRharRNEbEQPe4ZuYSGbeKKPEYTImJttM03R2tw7F16Ug1IgxZXxdxQYG2l7v2Je/SOqitOYYPf l0hfczj9+5ooviE5YqhEihgUYHexLthF9Kzu3VC3yEmc14C6KUMPUheR7ENa/Y3Mlac/m6DoXE9 1/c8SkXiXYVl64UI3Afx0ohZPCMqB0uvIf56Vyazo+H41TBn3GC7qsxunHDZtIP90ZZ7l1TnUcN U/DioUX5IsKd3eEkCCw== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX9dfzGPXXig4Y anaByVsMrrDLCk94r8yTpm40VnCwOVCu+gtS7K0Nk/fZz8kx0XR/x0ljmyV+tmpnvjJPNdTu5uH TluYxuYhRQ4jT5Kwiv9kRHCCj64md8I= X-Proofpoint-ORIG-GUID: GPjOqPmnzuJIQhOnK4oyezqA7H7_4mfV X-Authority-Analysis: v=2.4 cv=X8hi7mTe c=1 sm=1 tr=0 ts=6aa028a1 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=-SLBVWGn-DbGgWclMpAA:9 a=QEXdDO2ut3YA:10 a=1WsBpfsz9X-RYQiigVTh: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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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. Fixes: 8ac37c88f991 ("drm/msm: Refcount framebuffer pins") Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_fb.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index 60c108d35d2a..d69591245231 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) @@ -206,6 +227,7 @@ msm_framebuffer_init(struct drm_device *dev, const stru= ct drm_format_info *info, } =20 refcount_set(&msm_fb->dirtyfb, 1); + mutex_init(&msm_fb->lock); =20 drm_dbg_state(dev, "create: FB ID: %d (%p)\n", fb->base.id, fb); =20 --=20 2.47.3 From nobody Fri Sep 25 20:53:59 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 A95DC51A737 for ; Tue, 8 Sep 2026 15:24:24 +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=1788881069; cv=none; b=Sf+s5ctCIjDjXyBK6pIEbyw273rf4HuiNS4lJRsV+37kK8W8tshYr1veCCbHuE3xAaxeh3SAXuhV0yyra93gw+2VS8A5kNaUxUIK8mK4iauWBn+LOoJ/hwrR0EbRluwk5hDhjVzEjKpgzsMuN5BxzRcvwDTJ78ykTrJW6mvpxqE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881069; c=relaxed/simple; bh=UYl5uPwIe+02hy+yKWe86cREn6t55UaPf6pfOMS27Gs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dD4orC8NbKpKVLlYLcLTFB+FIGgP7nXonaIRMkbNHyAfiN9/4HuJI0bXECAxH3eN3YWBDJldDajbQ4XAUYtvDz26jrbZkW3Ys4VIA9rdp1gIL40ZdQiMeonm4i+4SZgLlRLHLjZwyXYNO5ub3IWJA8AOlRVfuQW/382ShXNMx8M= 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=Dw1oc+Bd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=KvMF1Hs+; 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="Dw1oc+Bd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="KvMF1Hs+" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688F1Lap3670653 for ; Tue, 8 Sep 2026 15:24:19 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= 5hveldepbFOlrTK82JptzZAqafhP4xGd41Uh3UvDE8Q=; b=Dw1oc+BdXv/gygR4 gPkUad9PeInTVCR07yFjnrzQZw1zgaUZbMmvy6iPc0zFabVtYGVK8cXOB7uQvVLS yb8kY9ZQfpMsSvHKsp+pIVclezlDTmxOH7QzNpgVc8DisxH3QXQ6Uq/wdqGfzMh5 gsTVF4BOVcaPKtk5USPGRxNQ4lL8F0k0Uz6aidx8Ly4HZ6IrDpkVJs8LlxnHb107 0M5GGjSxJZ/ZvNWj83COy5E5Z/0OG0NYU8Ct9spG3HN0cmjEEEVLuTUl5hvpxwTU i1Z1J8iI/F0NzIBiRFImTZB7eRa359sGqh6rIoQZ+sRmlAWvYfH2mCsAYCClXkj+ jIiURw== 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 4gjcv7jcch-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:19 +0000 (GMT) Received: by mail-ua1-f70.google.com with SMTP id a1e0cc1a2514c-97bf875d5f8so3783366241.0 for ; Tue, 08 Sep 2026 08:24:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881058; x=1789485858; 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=5hveldepbFOlrTK82JptzZAqafhP4xGd41Uh3UvDE8Q=; b=KvMF1Hs+/0bKExoMIRi6RVBfGtRh9jzZWVp6jEsCB8Pz0cr6sgCElIjL468qVjLkPi EXDN0LI5FDdUIn9mEUTSInmOs2B8VufM6bYj9AGGON/2G02AwDjbNh8hgs4MGNgGrUi5 UCqaf4/uKUaZ9epUL22y370HnTc+8GOU3t7NIBjpe5Gn8l7JfqGjVk0jzmEm+BsvmIPa 5cd+tqQuW4DWsHrXuhpWJHEY4n+mx+Sgq6rCnARMFmYIiDClGlpsvLmuwC3x6+Fakna0 vVHZAY/3AAy9dBIG4DuQdESQMS4gWzsN3AMtctLOrLPq/XWPYyJ58WnLwGMy/+UCkcHF XQ1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881058; x=1789485858; 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=5hveldepbFOlrTK82JptzZAqafhP4xGd41Uh3UvDE8Q=; b=IEOwKw/KYn2ZkMkTs18o9WBxzd/QQf56wWToArMWqQY7PehZWWGFdpjGlsSW+2vLuz Ha5i4DPkzIypRHfu9m7tN7ErJTGwWLVNo/8gDyUsFHGiLpf2xrwPwVgu0XbN8WYDjUgY SFaflspSisuTOKvccq0JguVGqxpghIh+HwNs3nRrh+cQiQHgMOQJ/HOIp7xosi1ueD32 x0ZHCCbVweV9AGCD4+1PDZU22cEict+aKwmwTWCVv7BA/amL6o3auHo+gUE+ut5/fLTK rtMJ/lNEGz+lqKrNEuv5Cu1e8mva9sdnmlqWHNC0eeT+tUvbtefAibKL9cxYHo3IVvrG cWsg== X-Forwarded-Encrypted: i=1; AKwUvBwvtuPpFTSyaJN6tw1io37izDQujYlqSvImFHcl1mMpEJ333eyAfvpLDbWE2bIyl1Ji51EA+REffg+Bu+U=@vger.kernel.org X-Gm-Message-State: AFuF++m59GkY1NOtq1psvUfzGJ0BvdxVTGYkLy0DJwtG1KEfIdWIhNRX RJxQSYkstwEsY6TbBih1QspjOmoKOkOLDw6cliosivU/TxedgMA0QoR/A0E8S3vUwWtJSp06nQ3 U1oxR78WMJZW+biFSolitBUEVaHlFbLNAseNMX2gHZCKg1dqADW4KxiYeAh5OZ5C89IM= X-Gm-Gg: AYBFou2WPA/sZ7nxIchW/3wrxqKmNwOshAIaNKEAtQGetvUamKDhAqaxwvY8kkN7Y0U K9WzplXQSE65jgpJzqB4OaIQcCuwLsCrTziSTcv13dQSzbBmG91FLgE19KHV76iOmRK3WaVh3QP QUJk3oNZSCT69feB1oKKcj9dJJ6BtWu6A/43PwARIWo9gmDm0tgyMuAby9ypH6nnSNmoh6Y3bd/ lRp30lSsp3lvsF1I/OyWyNr0waPiOQxFzQLZp661v57LrZDrn3cGCVREwgK8h78kgIRA5NVZUYl ALlx6WYmeiglfyZkI1immNVvmVHvzhN+OAjM++shR06tiU8ICurjqhQ4b9TD0+CyoE0nV7OW096 3Jane3ww1WDqONVeaDvMw9P4bG3tUcQ28YWK4pXTeTvCv1pkXx1aPaT7vNCquzJB9o+eBqVDpaH Irln2zMjVdjrjy X-Received: by 2002:a05:6102:6495:10b0:734:54fa:971d with SMTP id ada2fe7eead31-78a2ee06a31mr6908226137.7.1788881058458; Tue, 08 Sep 2026 08:24:18 -0700 (PDT) X-Received: by 2002:a05:6102:6495:10b0:734:54fa:971d with SMTP id ada2fe7eead31-78a2ee06a31mr6908198137.7.1788881057969; Tue, 08 Sep 2026 08:24:17 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:16 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:10 +0300 Subject: [PATCH v2 2/6] 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: <20260908-fd-kms-fix-smmu-v2-2-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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=UYl5uPwIe+02hy+yKWe86cREn6t55UaPf6pfOMS27Gs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqoCia6fWmhiI78WH05KOSSQqikZ2cN4aPI378b 2uqSykW3KiJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqAomgAKCRCLPIo+Aiko 1RjdB/9wvr9IkU9TQglSkUwUDy0hAnyERZMb0gBDpBkUyGuYKgLfPQqcTbTULAuYSvyLM5PwTeW p7/XdIVMnBPIlqsvk559eJmhooldOjoCl4NV346dKKP0WJRoedRp1FvdlZ1k/qalrStSJeQr34i t9q5maP1p7UtjN40q3KaqTQ+NlNaoVlnmsKF1Kkm56AxsYDvGT3M1YPwtZwUhTeLnek0WehSVfw nXULlKvHcyubiBNHLJHVBGJtGPMTHi+x620MaYiWdA3NAdabSt6ShCfEBbh+NGIonkaD9xgo6YW V6r0mI7zIz6enTUzHFBhWPKGqmF7qE5ZlnucUKA8AtJ0zwE0 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=CMEamxrD c=1 sm=1 tr=0 ts=6aa028a3 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=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=tvlXP28v7VYLJ75qtzUA:9 a=QEXdDO2ut3YA:10 a=TD8TdBvy0hsOASGTdmB-:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfXwkfcHuOUbwv4 XdsHI524bERr88OywYOS3906LAUAuRd3RbOz5qOornGIKH/uH9nQVlmjW3Ccz1BtBkpD5jin4Bh GGH6yUfwkKzcbEp4JBX9XvU7n5ecWAY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX91Iw1y9lAij6 LLxuY397ZYC82P+/T3A54mDfqtgMrey2m/iU+q7zQylznYuuTwEqgsrg+d/M+ium+ftP64i0cK0 +6My1sEAlcL7VYuq+rdyg24QREpY2zn3AaNzXEqGTK8CU1gRXRZKDwh9aOjAj+Q4y1csORsjdsd rZuYJ5/+dig/kNqKQeyfuiWSTYj+dw/vKdNlBLsO3s3PHvwTo1lBTOyWm4PQIDKd6YEserEpEs7 RbRWViraLKMxDm7TQM37zOAPypEHF3aWABgMnr9DKQ0ms5oXimKtJK98jTSRNHEOflGABXXhTkE 9gF5YC4mUoQAkzIseOLhY8NL8Gx8a+vg01TPHIuZXQV+9Zx/YdRKvOUNGaw8g/9sAJpSQ5MpeK5 NNe2KkfI0vls2AhtD4G3vrjsKT4B1CMwxsWUn5JSHtgIgwdrQcFknfjBYOpeRMWB1sIphiLAbvr 5U0P1pRhY266iC/QUCA== X-Proofpoint-ORIG-GUID: 92-G22x-lJsi_nFKtVACjS8yRCR34Bgc X-Proofpoint-GUID: 92-G22x-lJsi_nFKtVACjS8yRCR34Bgc 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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 adultscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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 d69591245231..dfe040d5260b 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 20:53:59 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 8F6A5559CBF for ; Tue, 8 Sep 2026 15:24:27 +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=1788881075; cv=none; b=Zr4c2tudHwvq1xUILx3foDVfJRnjS2sCImZf1Q5yLm93ddNPiehjQc93dDpeQ8ZsiQft6y4K10K5CnfKl8mPZFxCOdQkrzD/nvo6FCWMzJDsBSqgGpMHaaUVbIXWVN0hES6tYvSYImQfj9h5ZrtNYipv0ThaO6lq2mK2nwQCLOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881075; c=relaxed/simple; bh=q+fO5m7eAy+1m48VzFsMMlA7XqYIVW9i8e3Q0vq0fp0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mnnExz2iaM0fYj1rARoxxXLH6V2PHn82eEoubBrO4pVB7QxLZMJYsraRcgX6eC5kzXPcKz8I6sVIPCnAoqt1lC/5VPVwpuarh5BoEhmYgj0XFa2yol9V/AFtIdkeSSvXf8R6eaXRVZs1mbr4ixNKG4azpcBfhDPtm8iTQnqv1LI= 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=BzepljCO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BYac59co; 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="BzepljCO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BYac59co" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688F1Lq3273446 for ; Tue, 8 Sep 2026 15:24:22 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= joxSGp71NqHpTiDTXwA5ERzRLisW6LBVbzHWeJ3xwZo=; b=BzepljCObvIz7jmS +/QtxTXQFLV1pgrc1Do30UR0dv3kXuYP4RHWv8jhp15oCoplLmIOibaMgMSd0iYI s7C7ZBvgyuBC9XRgn7GGxrvvNTtjl9CDTNXu98KtCi1H2xLDfn8FJv1vbaV34e54 vKf6ha1uf3rVUvoUoHGikhlkJ9sAOiTn2LTLXQsiiz9Cc0rW2w0aqsjnvTT5wH4B 5ZVljvfGGTU9c9w1RqoV00jT8k04U4EWi0aI+4kc8YT3R80hFVlwPSTMz3fBRPB4 eMYQX+3jRS6eHBr9NOf6PZfPcLALM3l4ojdg+Ggk4In8p3Y6STNdUKCrhenEewSt y2oy2Q== Received: from mail-vs1-f69.google.com (mail-vs1-f69.google.com [209.85.217.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gjb0paqvp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:21 +0000 (GMT) Received: by mail-vs1-f69.google.com with SMTP id ada2fe7eead31-738627c7908so1002463137.2 for ; Tue, 08 Sep 2026 08:24:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881060; x=1789485860; 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=joxSGp71NqHpTiDTXwA5ERzRLisW6LBVbzHWeJ3xwZo=; b=BYac59coKxgZt+Yw7yduSqpAnZqEb6r3RKnV/NJuC1VMDMbCt1jTyEbZqOH++85ugq FQbQW1hdi9UX6Ey3vrY7YD6s6UUky4FeYxidl3UQhPAEexMgjk4zvxSEab1TuLhvFWzZ yB4iv5FOCNEUqB8uQXli5r1dVcHFoRPQbZkaETNr0Pa3Cte5F3LplDhRXMnChwDGuiY0 JZwER71PTNRcOtkdgYnoqoxIauiruEMZcw3jg7MHIcxxCm8YOu7WJ0V/3gc/5y7LRo5+ 3yUsDf8kaoDcQKhrfNvSVm9+oNfDM/PtGUu1PbuDYL4zBbQ1CapOtC5NDxJj6SLBuMCp J71Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881060; x=1789485860; 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=joxSGp71NqHpTiDTXwA5ERzRLisW6LBVbzHWeJ3xwZo=; b=OJAbtYM3EuTvjCK2V1XYSGW/Yf37Y6V5TUcuwjH4QARbDcNw5Pf7x48T40Q80cOfw3 TzgjrcwEzuaWD7MX/NAlrYjbrcdr+5LoH2GrVfyg7vTfFZrNGmijUIMYaQmeSZcEnx54 wFvr21jA7NN7mTmfEhwfzEMEJTEcGINXKlG6PtHYa4uqY1zHnh2m1XsQo/d3A8zMriff Njj8gTGttXfVC8OKBcOQovqxeAXnIoyqb/Corin9DJ5Hj+qsO5WlhEHjsl8vncLq5f+v R2un5JGnfS/iqDQWNSLUVbxK2O804uCNwv9/VI06fcLyCcRz1Yn5kNXI0urGA5id7JXV wsZA== X-Forwarded-Encrypted: i=1; AKwUvBxES0vYS230GGQ10jzbL/wm63EVis5y8qWGtvblbX2TZOG20jmBpitJkuo6AYkY7H5TWR1b9tLa5dGSvCo=@vger.kernel.org X-Gm-Message-State: AFuF++mypYDS+b8jHD//PtE00rEteaidiz52u1tStCUBjdCOya70ie+4 /+c5hGGcQqJZJwl3NAwJ2h4VtEQL8bdMxgZ3PMWWZesTVCyMI9NOlKwpuT2/b9CRQ0O4i1c0uf6 DBFZGacn/o7JfEBQSxI2NHTUe94aqhzMhVhxdEbPsGvZjS3ZlAk/jorSGNfCSr4wxhd0= X-Gm-Gg: AYBFou0oQP9S+skAZcYwaHfDUxyX3akTn8tbxGoNpiKLkiaG8XR+H7RsIT1dPjsTLhV Ufl44woFYAdJVqWq6UxVjwyUIvQdE+mlyG8SC7qjfPmkhACcWSkTJRe61UNRhnojprQqBTnxH0C j57SipvTvO69xClIrZb706AJgBaK5lhRg1X78rVzbYiB6IVJW0r2W5IV56QOsjgQylf/EKs+EhB 05U5kQs3uGMJQs8xR8MEE89dNLEi+edTXah/ydc+BgOhngNCjspE1AUCEfVHpB72Ms2zc6kd6UQ dkkVguGPXNHT+quJA7LPZFP5P9RVVevlsHfV8kl7OGq7enL1FoHjpSMA00cmHeUxmeC8Lc3jAN3 Y61UXCuHjphnlX3cx5AGbU5SedlSIfLHRZO2zWV87k+WoOK3M0W4jRHjrs/a6IG0zkZmtOvyqiQ 1epfjHEnpOT7HS X-Received: by 2002:a05:6102:2c83:b0:784:b6e7:cee0 with SMTP id ada2fe7eead31-78f7380dab6mr15299137.3.1788881060049; Tue, 08 Sep 2026 08:24:20 -0700 (PDT) X-Received: by 2002:a05:6102:2c83:b0:784:b6e7:cee0 with SMTP id ada2fe7eead31-78f7380dab6mr15263137.3.1788881059489; Tue, 08 Sep 2026 08:24:19 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:18 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:11 +0300 Subject: [PATCH v2 3/6] 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: <20260908-fd-kms-fix-smmu-v2-3-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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=13562; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=q+fO5m7eAy+1m48VzFsMMlA7XqYIVW9i8e3Q0vq0fp0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqoCiaI+MAJtUJxHuMn7DBolJi2LGhknUQ4Qp67 bPAyAZDcJGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqAomgAKCRCLPIo+Aiko 1W9BCACzejZ/yZbQXkwvJ+cbZZxDU5PAapQqkK83UF6GT4VZb50/E+LXVM3fDZ1bAxh9rYKIshq 3g+Zm0YsRMmHVJPZENSLnfKbwxY3U0Uk8fufu60BdERFT7XJUhRnegDbK6+JzxO22QTmL+4sPcY ilrMHIG3+KaYhLNkrV6QtUHdsg8aPP24ezWrF5BZ5zZm3pdcUU4TQuQfjpqbvSvX0BXaUiseA0u 9LOW37SX4Bkjm4dKtp6zZBR4dZN89LzagWDIjn0uSRCzcMWJZRkZGbnrLsWhALB07xOeL1acSnA bZ1qwrAQf4MTJeIv4EkFfKaPRiFbwuBeSZdDx+NgTuM7ZQIC X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: EX7sYVZQ2Hh7mlkMqbNXhduNlVm3IhdR X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX71QQQOwXHddo 7ei7H1EDnwoA9032LUoQ1dWlJqNtO8/TkhGwjW0MvVYOXTFUjN+vvsxQumXYG68iiCbRuDZjNJL dQXeaHwQQ+T5Nm3JmFueKOa4Q9SSz1g= X-Authority-Analysis: v=2.4 cv=HL3z0Itv c=1 sm=1 tr=0 ts=6aa028a5 cx=c_pps a=5HAIKLe1ejAbszaTRHs9Ug==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=t2uh1nQYAVaQfnDpEX4A:9 a=QEXdDO2ut3YA:10 a=gYDTvv6II1OnSo0itH1n:22 X-Proofpoint-GUID: EX7sYVZQ2Hh7mlkMqbNXhduNlVm3IhdR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfXxqXxVHsVNQSJ K/n5u568YOG/fKmkuqkfT4L6UqJILc3GVzgsYjQHAsCG+p/MMPdY6XCTTLhJF8KT0ZETdX6xkG0 r58/pGfuoLOSLMZmjf0bfJjKsEo/qC5IzyqAb78izucM9B45nvPi4DDSkVxLa82Itr8sZf7+7JA SyQcBDzlYVQWsCdxwpl9DRns9FMQmWzEkeDYUICasxWAwbqlEiAKjPBcBIR4M5Ghn5MRILcGJND AspYjBWDa3eUIa3X9ae/TJZm9J0yxUKpgt1ETOMPM/7WTLwhP/Nau78V/pilxV4XZ66KoZCCwgl kK8BeY5PfnOBCQ8+QYpbe7eOrFXVqR8VjS1HQWiP2DPvL+u8SOFHmSGrWlcaU0CxgVIqQQuMITo UVIlVP10COk4rqOofGnRqDLRpoO6Z+O1wQOqWNOCjynGrNBU6eY9zfcuQ06CNRwqPGk97yZi3Ib j2IGh0iTdCTbCaxQkjw== 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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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 Defer the release: hand the retired framebuffer to the crtc and drop the pin and the vma reference from a drm_flip_work committed from the vblank irq, as mdp4 and mdp5 already do for their LM cursor buffers. A vblank reference is held while work is outstanding. 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. Outstanding work is flushed from msm_drm_kms_uninit(), which still runs before the driver drops kms->vm. 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 | 3 +- drivers/gpu/drm/msm/msm_fb.c | 6 +- drivers/gpu/drm/msm/msm_kms.c | 103 +++++++++++++++++= ++++ drivers/gpu/drm/msm/msm_kms.h | 27 ++++++ 11 files changed, 145 insertions(+), 9 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..18a9728838fd 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -254,7 +254,8 @@ 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); 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 dfe040d5260b..2e317bec9fbb 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c @@ -127,7 +127,8 @@ int msm_framebuffer_prepare(struct drm_framebuffer *fb,= bool needs_dirtyfb) return ret; } =20 -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) { struct msm_drm_private *priv =3D fb->dev->dev_private; struct drm_gpuvm *vm =3D priv->kms->vm; @@ -144,6 +145,9 @@ void msm_framebuffer_cleanup(struct drm_framebuffer *fb= , bool needed_dirtyfb) =20 memset(msm_fb->iova, 0, sizeof(msm_fb->iova)); =20 + if (crtc && msm_crtc_queue_fb_unpin(crtc, fb)) + goto out; + for (i =3D 0; i < n; i++) { msm_gem_unpin_iova(fb->obj[i], vm); msm_gem_vma_put(fb->obj[i]); diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index e5d0ea629448..6a857ad3464c 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -11,6 +11,7 @@ #include =20 #include +#include #include #include #include @@ -165,6 +166,102 @@ void msm_crtc_disable_vblank(struct drm_crtc *crtc) vblank_ctrl_queue_work(priv, crtc, false); } =20 +void msm_kms_fb_unpin_worker(struct drm_flip_work *work, void *val) +{ + struct drm_framebuffer *fb =3D val; + struct msm_drm_private *priv =3D fb->dev->dev_private; + struct drm_gpuvm *vm =3D priv->kms->vm; + int i, n =3D fb->format->num_planes; + + for (i =3D 0; i < n; i++) { + msm_gem_unpin_iova(fb->obj[i], vm); + msm_gem_vma_put(fb->obj[i]); + } + + drm_framebuffer_put(fb); +} + +static void msm_kms_fb_unpin_vblank(struct kthread_work *work) +{ + struct msm_kms_fb_unpin *fb_unpin =3D + container_of(to_drm_vblank_work(work), struct msm_kms_fb_unpin, + vblank_work); + + drm_flip_work_commit(&fb_unpin->work, fb_unpin->kms->wq); +} + +int msm_kms_init_fb_unpin(struct drm_device *dev) +{ + struct msm_drm_private *priv =3D dev->dev_private; + struct msm_kms *kms =3D priv->kms; + struct drm_crtc *crtc; + + drm_for_each_crtc(crtc, dev) { + unsigned int idx =3D drm_crtc_index(crtc); + + if (idx >=3D ARRAY_SIZE(kms->fb_unpin)) + return -EINVAL; + + drm_vblank_work_init(&kms->fb_unpin[idx].vblank_work, crtc, + msm_kms_fb_unpin_vblank); + } + + return 0; +} + +void msm_kms_fini_fb_unpin(struct drm_device *dev) +{ + struct msm_drm_private *priv =3D dev->dev_private; + struct msm_kms *kms =3D priv->kms; + struct drm_crtc *crtc; + + drm_for_each_crtc(crtc, dev) { + unsigned int idx =3D drm_crtc_index(crtc); + + if (idx >=3D ARRAY_SIZE(kms->fb_unpin)) + continue; + + drm_vblank_work_cancel_sync(&kms->fb_unpin[idx].vblank_work); + drm_flip_work_commit(&kms->fb_unpin[idx].work, kms->wq); + } +} + +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); + + if (kms && idx < ARRAY_SIZE(kms->fb_unpin)) { + drm_vblank_work_cancel_sync(&kms->fb_unpin[idx].vblank_work); + drm_flip_work_commit(&kms->fb_unpin[idx].work, kms->wq); + } + + 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); + + if (!kms || idx >=3D ARRAY_SIZE(kms->fb_unpin)) + return false; + + if (!crtc->state->active) + return false; + + drm_framebuffer_get(fb); + drm_flip_work_queue(&kms->fb_unpin[idx].work, fb); + + if (drm_vblank_work_schedule(&kms->fb_unpin[idx].vblank_work, + drm_crtc_vblank_count(crtc) + 1, true) < 0) + drm_flip_work_commit(&kms->fb_unpin[idx].work, kms->wq); + + return true; +} + static int msm_kms_fault_handler(void *arg, unsigned long iova, int flags,= void *data) { struct msm_kms *kms =3D arg; @@ -240,6 +337,8 @@ void msm_drm_kms_uninit(struct device *dev) * irq after uninstall has disabled it. */ =20 + msm_kms_fini_fb_unpin(ddev); + flush_workqueue(kms->wq); =20 /* clean up event worker threads */ @@ -323,6 +422,10 @@ int msm_drm_kms_init(struct device *dev, const struct = drm_driver *drv) goto err_msm_uninit; } =20 + ret =3D msm_kms_init_fb_unpin(ddev); + if (ret) + goto err_msm_uninit; + pm_runtime_get_sync(dev); ret =3D msm_irq_install(ddev, kms->irq); pm_runtime_put_sync(dev); diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index f25b31e502d2..8d95457cb8de 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -11,6 +11,9 @@ #include #include =20 +#include +#include + #include "msm_drv.h" =20 #ifdef CONFIG_DRM_MSM_KMS @@ -135,6 +138,16 @@ struct msm_drm_thread { struct kthread_worker *worker; }; =20 +struct msm_kms_fb_unpin { + struct drm_flip_work work; + struct drm_vblank_work vblank_work; + struct msm_kms *kms; +}; + +void msm_kms_fb_unpin_worker(struct drm_flip_work *work, void *val); +int msm_kms_init_fb_unpin(struct drm_device *dev); +void msm_kms_fini_fb_unpin(struct drm_device *dev); + struct msm_kms { const struct msm_kms_funcs *funcs; struct drm_device *dev; @@ -170,8 +183,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) { @@ -193,6 +211,12 @@ static inline int msm_kms_init(struct msm_kms *kms, } } =20 + for (i =3D 0; i < ARRAY_SIZE(kms->fb_unpin); i++) { + kms->fb_unpin[i].kms =3D kms; + drm_flip_work_init(&kms->fb_unpin[i].work, "fb unpin", + msm_kms_fb_unpin_worker); + } + return 0; } =20 @@ -204,6 +228,9 @@ static inline void msm_kms_destroy(struct msm_kms *kms) msm_atomic_destroy_pending_timer(&kms->pending_timers[i]); =20 destroy_workqueue(kms->wq); + + for (i =3D 0; i < ARRAY_SIZE(kms->fb_unpin); i++) + drm_flip_work_cleanup(&kms->fb_unpin[i].work); } =20 #define for_each_crtc_mask(dev, crtc, crtc_mask) \ --=20 2.47.3 From nobody Fri Sep 25 20:53:59 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 D2D2F55294F for ; Tue, 8 Sep 2026 15:24:26 +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=1788881073; cv=none; b=Prvt5mRRtLnHqw2zki6Y5hDOHAISVTkwKKnNT32c/DwKp6MwSqXsJ9RPB82IEWpH8D/IcN+Xe0+ZosrToKlIWvd4dT9xYINixCh/MdVQP0b2/x3Ob7fQmPP+Y5Kh27aAhCWm4EHOnxP4H9ujI/EPinFtWMw01FiCMXd7/qiw/ts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881073; c=relaxed/simple; bh=42MaHuKsi9wtmIKNRqT8ly0SxW0ZKEjpv2W8+Aag/4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dXJlJ2bivkn0y/kHYFvQs3gii1CXv78koxyejT476Owb2WyhSezr90lkMe/FeXOJH1V6g1JzLfoDguUF6pLn0UOUUaUOAtRicDtGaHnPhfpt9J0g6+2T3SsTAO7uanur7ZBUEvmP3RvV1emX4U0Siqf8uKaizu9VkrFXDAHRKlc= 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=KkKrsSC7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SRtfaKLh; 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="KkKrsSC7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SRtfaKLh" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688F1Mv22813564 for ; Tue, 8 Sep 2026 15:24:22 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=KkKrsSC74ibZJDYD Zdbqms1mDt8QwUcTK7LbW/HWVd6kjbSXAbrG0IQR436BSN3/FpXUbczn60AZoriL b1K/5rx7VlxgoqFOTsLDU0ChXZY4bJrqa6HBzb8uutkyWvEhDdgojo1GNaTM08JM 0YvXmHVudMUmeE947Wo6H5oYuEu3Px4og0uzZgr22dwcxKv1DaR9XHOUAWtBPWoC cXjvcklymnDBbqRlZtD/Caq4risVLl3nYnEcQihpVWp8cRN5LU7+mnyWSuxqXZoR XkFvpmxgqZgra0PBNBxKc9DcjyiUg17ZUUGqcbt4mCSd8O3vLLtE92piBVwiZjYy 8aSq1Q== 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 4gjcvujauf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:22 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-97e8be2221eso408241241.2 for ; Tue, 08 Sep 2026 08:24:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881062; x=1789485862; 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=SRtfaKLhmtPmq1YtwbnGjCGyknKkYrrsV+J6miTHmS9DIhFdVLt3z3TlBAIi+a6Px9 UYvqixX95Dlf/WRbJIvrJTZBKoi3vlLa/0qdct/ol4N9ganz2ktPOoF2yCCHtQfTv7GQ H3TcOnevs3spGEZ8nwGs69IpWZrshLuGbxKgo8PkcOyC3eNoFBZPmNn9gE8oVxK1svKr NkD9qY5U/OyTvep8Vd2rTtidb6nhpByqi/6rlZ9cH5s/gZav9vnWA/WOYP07W5M9JwE8 xeJ/nLX2hXyg4ItuWArr1uIfi3ZvjLUUELxVokTObY7ch8rerr+DlaBIi4WPZlw/8NcC f1sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881062; x=1789485862; 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=C6Ik0L4TZUnZJkNwDkQKb6n2XE2FBsulBWOmz9gp/llvp4gPo1Sj+kghxBrDf2U4gf IQueYBafUpTOrZsHXnQlZog6rgXLiSCpzTubLbOOeIkqpYuA6KK7vZXNUBP51eqDJBlZ 9C6YVGWIvrZ8ZLiuAYJeCDdJfiHz9zSefYE0O/wCVg7kBqKk7iO9xhA6NuFw6MtLtAmF YJe30z9iMSma7J3rbGCBj7PYuZqpISS9iCGoRzS6iO2cHyQ+RglAgeLjFMqPEzAIvH8i sAoJppNaZnZE69uzuTvWY2bJiMvSx6Z5B/MYy9cOCdp/ZZ97zbEFeaDjYdHLemYqSS17 Vy1Q== X-Forwarded-Encrypted: i=1; AKwUvBwC09A5JPgWEGGnN9fU2KSkP+lq1M98KOK5mCNtU/SoI/05Ar67Ezulrp8wZgel7BN1I3JkIVVjTAkJ8j0=@vger.kernel.org X-Gm-Message-State: AFuF++kobR55doMmhkfTA2QsdKZTM3X9+4voDvnmLdxqkQUiilPIZrrx CPo8z6ubFEi2DczY4UZM4g4jAuGIstj+C7ODcXAVtne4XdQBOoLha5vL45xzqt+h/euEM/38q1J Z+AlYX5cSSX/WlfbnjbMZXUyNjgeMBaqijkYp+EBepnm0pzXdFZ9KcHZX4+dpGe/cHMI= X-Gm-Gg: AYBFou35QecvQl2FmiNKtbsh6fM4sjKns25Bk8IFolltXv9s2xtw14nTyrQqY5qIgpt d/FmbHFNVvNyAmb7VcbDggDx8N5QDq/zg3xhe2o2CQjCqUjdbncdsRdQ1bmH4TAs1gzuYj/veVx rCxlEcQ8F7xKwe90gJXZKpoB/I8KmHKjJzgcN1zhEXAT265o7khjfU7jtIqUVKa/Dxmcqqz4F07 hUmw68S3DwMO4mCiPyzx2b6TA3YISUIq2X+cR7D1b+rJ0cnPjE0CvHVjFbFYTM8V1RXxRsJlmgt tlhaUK3/ta6h3Q0gYrRQzq83l451FVvLlkPjqQYlIl2iAJaldPQ3/wxL3/ysyfwuFW3VQ8Kaglp g3vr0DWJTX06GUOEqqzxY/FMyjWrSN15Mxqev2oN7K4mylkDq+BTL3YTdHaS34abemrJUmBdr9q GfoEBuXcv0Dmsz X-Received: by 2002:a05:6123:2c8:b0:5bf:b3a0:388c with SMTP id 71dfb90a1353d-5c7ed3e2247mr14515453e0c.6.1788881061584; Tue, 08 Sep 2026 08:24:21 -0700 (PDT) X-Received: by 2002:a05:6123:2c8:b0:5bf:b3a0:388c with SMTP id 71dfb90a1353d-5c7ed3e2247mr14515383e0c.6.1788881061155; Tue, 08 Sep 2026 08:24:21 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:19 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:12 +0300 Subject: [PATCH v2 4/6] 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: <20260908-fd-kms-fix-smmu-v2-4-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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/pANAwAKAYs8ij4CKSjVAcsmYgBqoCibn5CUU1Ow04wahu5gHr1DsZo3/NR0N0Sk5 VTpdsBaCiGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqAomwAKCRCLPIo+Aiko 1SVpB/9TAbiVdOnVqlVcKQe9lSIHzoBI24yUs+bAbtDG/7ykrOpriV2KajAJoLP6qwVWWvpalRN 4BDCR+RWlsIpVeI86l0gZXLvxGTup2h7s9cpfXxWEQJajchJBKqk+BxFyQ1Sln+EAMkzf+wrtLp bR6D+maCB7fK3dpKDJtZmScyU0Ie45lyroyFf+3JKl4lD8azVjcbBCMn7hgw6JjwNey1beIWiW3 p0Hg70PGoO1OjBYlCMuNHwye9JB6KnYoP2CNr4xf2Pfv21aCtGfR6bnrzyfpNwV0bOWj4H3ITyQ bFyyELqliUK4rJc5hKj6JVe5+RVItSBLAkriAWWIfHJUOww4 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=ePkjSnp1 c=1 sm=1 tr=0 ts=6aa028a6 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=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=jpbDcG_WXHA3xrgMYRUA:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 X-Proofpoint-GUID: AalqBaeOWV739HYDVDFDRpFD7EHAJpXx X-Proofpoint-ORIG-GUID: AalqBaeOWV739HYDVDFDRpFD7EHAJpXx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX/UZr4OgDY3iC gxwEH4jID78C8F22HHFmhYcuCdkHbQS1m+KbDv1ekMqM+7N+wsmPPIBXeSN/VJd5lCAJBqjbkdC PVfc30yhgWHV2Rv+F33fDh4Xk9kyvx7fudMntJ1KdwEVcft4rFcgW9kDbN2sW9U0xy8lFhB6A/i cTuC3O5ZAgaPk0/GjsA2jTZ2+Qo7AEpHD26s47LXNWHJSX8jRHQhB5mc8LgrtvpfI1e1P9pFl/h nDFBzy0YJqW25u5YZ1pKWAu4lVbQor5YlWmImmVkibijoaJPf1Db44vJmDLUxXPNIPMax7k8x6e sRJg2CATwGwMKczg8AmhlXrkJO6Z2K6nLvlTs9nEMaP9MKMx8HTr/Uo2yjKPJYvPOvNfk17JWF7 MSqZtFhaWjiWQJNzZbtXOhSlnjUtztAg7VarbqC7URsIgydlrlT17Hq3WzvD8hlqJLxYX2kBJ00 CaWr6rusdZnGhOwHFwA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX/mYKa9XKPexh rGufsgJdbCu6KuWfxsoTna78eCSz3+P+NCSFNfqnTwGMUje50Exi4ju32gj56BoBezdmX7OKiQi 4y7Og80+kGpcwAHmMaPCpaO3xxQ13wQ= 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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 clxscore=1015 suspectscore=0 priorityscore=1501 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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 20:53:59 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 8F43A559CBC for ; Tue, 8 Sep 2026 15:24:27 +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=1788881075; cv=none; b=uAQgBpej+2x58OHv84TVHvjLO+/urjJWUfQzJ++T69U3JgVntv4BtDNd0dNYRu3UttsGFhMbGHH5HIEH5VkDOjEHyZofJFG/USgw8Wg9Ubga9Foj/n8T6341KO4hoCVpHWH/WAQLtJeapY+opmtNAsu3GZDvwbMUWxbOLrCkkXE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881075; c=relaxed/simple; bh=mqhM4B8gnWC0chv2JmS2nzeA441LZsa3HAirQn66G6Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WL5RLv8dn7+x50EoWE7bd14pxOrDNSs6m/vTOhpCSgDBdZvOimGS/i5y8XclQuKWcJfWTHYT/mbZ6X2qwHj+tvLOz6v7VTVvmgDAtpryp4605eT74b2VPifKN+hHuZDstmPV+PT7ofBhqjiWobtsCPUGboVMIVt6mFLD+XtsB1A= 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=lbRKsWQL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kMNpk+9A; 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="lbRKsWQL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kMNpk+9A" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688F1Prt2813919 for ; Tue, 8 Sep 2026 15:24:25 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=lbRKsWQLJP+EUBo3 ipXSqVpvXN3TNSa+WSKcrq7wc6O1K2ET7ONS/9Ucsy5NFt2IjXisrif/irXtXyZF 35/juPKlrrCvdXQFsgxVRBbyn/PjfEuJSlZ6AFd1nsvw4Wdayrw4nlZdxq6wdMR5 lU1G6kGyNdQUUafQeIaIyCgCBnWj12rfRysIuX7R9M8N2TUpSiiHp0ln5sN6JyeZ u6NxuqCKUc5HuCH9wCrMwAqJ9E35tPY7MO2sBAtsRg+153r1x9Lz91jpTFBjT0ox sg5U/jh9y0IXMxGIp1YSdDGlybhN45FIHUklCjBZuhFM3//8GmRBcuQHv+H2txWo kpOTdw== 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 4gjcvujaun-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:24 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-97cb8d1b032so334879241.0 for ; Tue, 08 Sep 2026 08:24:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881064; x=1789485864; 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=kMNpk+9AuBTngCQEXj2YduP/A9L18+Ww8dH7+5o7d9eVKXvkFnYcgKFU0OVw4/XG2A OPtUAR9Ho037PG57N9YBaa1u1BaCC9s76pBtDpvk1kfh9Cpi3CBkaGHCbwME2ZRVZfoR 7qfkTjcGJ8pxengZs/ZUyQDU0F+GHf274Couz4ygzYpEfe/VhSYwuSF9NGeVVd3tgpMc 8/2nG+xoQSKD2WZjRy7rWZYIgfE7Jhp8g9A8YMz6BW7XcxLlVyv0qzg/iFsNWOwdYlN5 1g9Yal2UceAbLHrN3RA4RVTZfrOsoHk/SrP8KDDiOwLkh2dJgKzNz4wIMCQyHD1zDZiX GNpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881064; x=1789485864; 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=B7trRZGtzKeSnSZqd8iqKeT/T0nC0UpJC9+VTuB5ZWQXPtqG+6Y80/a9UFTdzGrm6m KDkjL63fWDPXYNUrn2XdJsV9vuRfwoD4Wo7HCudGsM+CE8SMPpkvKmItij39TlKXi7mD Aj1HVVu2lQ8QVOKoSkqUpK3POKWjYlvEtkCSuRY80l2e8oI3ZprjyIVcUpJ49dTpOxt3 iGf2OZHtY/Nal/0hSY7SwokXTJc7Mrg7M/RViaULSFFwlqpCxeWeEvdaoZezUPf+Z9Cd Aw49Jxq/LowwzNFYCcteX6iX0+NyFMQULm6SB+Z0WME9Gck0pCkA4D1fhocuCaE5t2AD GOcQ== X-Forwarded-Encrypted: i=1; AKwUvBx31wOebdwdSK1Zv6eHlYZNVTv5jl3C/CEHkdq6OC2yepCMwpAKFvIfx3J3pIGISmqGiYL2vO9yR8aOlgM=@vger.kernel.org X-Gm-Message-State: AFuF++lFhmy9TlQZbTwB2dXVUPPuDJKz8XqfQw61bfla3t7xcVSwvg6F 0YH4xfPzPhJxupVDRYSw+bXiu8Uk9rPP5AxzBj7KnMeM2Bddqab+k4O6zX6u9HpZc1fmmLq2jyt U1sd2KZiEVkDyBliW4wDkmlWfFnRPGxWT0N/d8fSGcmJw06P2gKosImzpnVEQTcS/UaY= X-Gm-Gg: AYBFou0jw0akcuaIddBPEsWNGC45/UX/6CNCjGgfWXLLyNfK+wcVvHsPi6Y2B0w06Wc m4L7ZiqviA3WiO2Sn4bOPJYwyw+FhIyxBXl56UywBrg3n77eki4y9qfmy51FU5BCn74UOyA3ilp SBvzNDshD0ZKhFqbe/PFtbSU3janslAn3mYAOYeGkPb1l8PSGA7mGLn1PHpn3kiW2op1wk8qGcM n65g1afW9b192ooiVOf2UJxx12nZtPP8rf0F4PCZN9g/TuaoCrbuAZycaTgXMWDMEoy4kssIqV3 6vh1jJxN1ohO/Lqmb8zovrt4CbkxvEV8DsB+WVhgsSa39NsWL24ftUCAjTudaoCoKdABSvFhyYu A6Qw3Otc66jdFcCrfa6ReFMdKr3FqalVI96qIBlnbvsjwiRquhj0F8B4KUYqZ0yagZcLUdHnGRI LrnTVL7dETHoiI X-Received: by 2002:a05:6102:c10:b0:785:bfc7:26f5 with SMTP id ada2fe7eead31-78a4a90fcd5mr9832298137.12.1788881063553; Tue, 08 Sep 2026 08:24:23 -0700 (PDT) X-Received: by 2002:a05:6102:c10:b0:785:bfc7:26f5 with SMTP id ada2fe7eead31-78a4a90fcd5mr9832259137.12.1788881063022; Tue, 08 Sep 2026 08:24:23 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:21 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:13 +0300 Subject: [PATCH v2 5/6] 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: <20260908-fd-kms-fix-smmu-v2-5-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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/pANAwAKAYs8ij4CKSjVAcsmYgBqoCibQ4v+3xz6gXgMM67Lj25TN381/8vr2dV3L TPNijYSX6GJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqAomwAKCRCLPIo+Aiko 1ZhjB/9YWAtK+tNC0VwfytRlQokdPcSIkOyZ6UViPCWNaIec8JdeF4Z1JCL6+sRD5ZpGB+MnvB9 0SzQHxLMVfZTryBEAho+16UeAi9knWrxO6mJ73XshB/5D5Y8kzMXe+ChjW5Ni5OXePTrWUC1xa5 GoCisPecJg2z2PCmaZvx3TtdWzc0DcfuU5TiIfT5baCHJmdMeSXvFNSUkfZ9cW/Lzjg/nIDNKxH hYaDwQiHkV0oatMvUcqJuJz4Vy5kRddHzUTx4iw4tPzLJEpjNVuAM4PIlMU5FVcsvjr0yHdhwLO EzaGPaG32UCQoff79bwTuMGVtiA1JBE0N1+jR/nsDa0CbbjV X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=ePkjSnp1 c=1 sm=1 tr=0 ts=6aa028a8 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=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=lVXjEyyklXRvgn5FDE4A:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 X-Proofpoint-GUID: TJ1kZK2tKtfYdL842n_QNmdCnnGWGzWK X-Proofpoint-ORIG-GUID: TJ1kZK2tKtfYdL842n_QNmdCnnGWGzWK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX/j6lz0Lz7cTV bQ9Tha1YqmfrspkAhJolQfgLWaZnOA4GLZ8Bbz3esm/qb4ecnJnoP0mQ7FrwWvEyE5aeMrCrABd v+OSjdw1TqQWKYRPK9ZBbZTsv8BIKR3R5OSTllv7ctbuVEv3OHfzCg3OtUU2o2UvUE1YRTYiGXd dMpihy3K/iyt01Cb2Qv/5xbKVYO1MEDdt+6Wbx25wVBEuBbWri+C7xLtODAnd2WxHcWB9kIHhDa cHzpvFO78keGv3CuUUh0PVj4gaHQm0Vqe8jrBmu95920/I2T5IJ2YmbuEHULGM1YmhNudekmb+x QrP/QBbxBfz9MW4zD/sb6MaYLPfAdb0qMmmDgL6bxIv7KAxGd7lDDncIbZ1tExtWythNiRuO2vs 7/54fz70591CDIJZLfMbwdK1NHhGnsu+Yn/9+T36WUsh7WcDXx2k5BZsi/jZtnsPaqtAe2qgrY7 aLVazPJKzaCp4vJ0dwQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX3SEIMXBgHstB 9BmCZjSXdsWPDOoz0x8ugei4y2wL6yq/uleJCGqfM4If8C705RUPvfPvYBOsj3WU6yyCrQ/fadT qOxbuU4krMxfJ9u7L+Ai05VKIpGxuxI= 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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 clxscore=1015 suspectscore=0 priorityscore=1501 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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 20:53:59 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 3E39952BE28 for ; Tue, 8 Sep 2026 15:24:29 +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=1788881075; cv=none; b=cC2fPTCofijhZM2g5ZYv+7zFv9kC85jpGlNMFRexUJFnpXmwJNBJ1myzDke9owuXIrSgYkDEtkbhZ3tl8vBE8OkBDO6odm0W7iTHy/WLlvWz1vogCf9W8qsRn2awigCX5vf9iSCnDIPbhqMcqx2VfZZNEoA63KE8c0QvvvaHuRE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788881075; c=relaxed/simple; bh=b0Cqqqr5RXysOo/IlbQaAaOsD61faw7dj63ogkvFqxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WtSLBTb44XwEnSnPCxESyszXZg+w5zMWHR8p6UrB4VGfyHMUfClzg0R6ycDEU5hPX26EIs1j9iNhSi1+GAonYu/h52u1KwVc6Z08Jc0AkDGqlFFX4TJf2RR0Mjk2/LB2gkZJtpQ9KIv8cGyKhLjts7tLlV7aCXpPeuawYowuq5s= 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=hiBmo2ht; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kekev7tl; 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="hiBmo2ht"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kekev7tl" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688F1M0M3342284 for ; Tue, 8 Sep 2026 15:24:26 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=hiBmo2ht9/ogEfOm RWSCAFEKEtqiCWJdaZUQQQgm4vE4G6NlWPNpfLArLFzhSabrZSTg0hXdV76BdsHD pRR6YZ97X5FOklpoL/waKzVxWjS7P2Psxnu1xYDts0L4HlNvmo9I2A/vQyXsO7k/ YjlEe8A6R58HZGJFcMZu7OryG5sPmOblo6fgIq0t07Ep0ULXOaM/VGfTPcV5SFcX gXt0SHK+KgGqgLbGnwtONKK/6fT9FS5AEOItw6XpKT0k9H7wtfhuAmG1i/4TBIWN EtXkzgc0NbWmBqEtTi06VKSDjjT/eU1SS4eN+1BlPyEZV8Cn5FPUpasUhuEkhjLc 3ISQVg== 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 4gjhkj12hn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 15:24:26 +0000 (GMT) Received: by mail-ua1-f71.google.com with SMTP id a1e0cc1a2514c-97cc46a7765so367690241.2 for ; Tue, 08 Sep 2026 08:24:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788881065; x=1789485865; 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=kekev7tlxRgrFKj+Fa6VC+KNwnHGe2ow5Oag72ZbD90bMmY28wPK9Sa1nvv4CGbUNP EFTVQ2+oAo96A4SZxIGeWGpgoLf3JNXXADKYu4i23H4sI36XiaBt9owlVlFJ7/gQ6FQl MoiIYrmrvldx+LK2ZKzYt9NemoH1k3zjZC0Dz26cLnBoXRBR3J6H6uUayNb6zWmOBaXV Z3jvyq3r5q3FFPAsHIOfdg53ooqSt9YBZbOcDLY5Dh9O8rVRox0srPOev/1h7YpyBowo NiXIICRdWnp8PiABe9XNIUThhfLx9fgB/zwjwYad4gKOoWs4WktOrwuySd7vpArfoFo7 rnnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788881065; x=1789485865; 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=l35hxDCm7bXtiV+mljjDC9Cv60EFsjDcyyI+3K5gvOydNJJsd2FIt2uX9DHXSYqoAI ktLWET8jGyWy0TFT7IfhHJP/q8YC7Mh89LQ5DIw8DbIxjSxbnxfiniNtKqNCgTlJpNDk NJMc4IUu/mzRuDiSMvr254fZ/qMtVqvNJAeKn8GnJ4hHy788EsMvWlorijoqbXJ2x0W4 8aknVOHokjZeB3ZrGW8qq5s6fMKaRNqHK8V6b5JwVK59U640Vjgs2+imHCSLtuaH4WcK tJE/lKh3AhEZ7ob0aRC8DHxz6Pa3YOTUYpyc8PKj8V7IjgS7/C9D1Vn9LRcQYOj6cqOl p9Ww== X-Forwarded-Encrypted: i=1; AKwUvBxv4uNf/YPiZhgaGxCQiBZBtsDJ6jLyuUk6oep5f9SzYgCmYjZ1rcDa/j5yeMNzV1akVhQVCiwJFyWSs/A=@vger.kernel.org X-Gm-Message-State: AFuF++liTMAqTFAHy3jhi/3u2QBumx+R2w6knng9SKjyntSxcWs+WW+c b4S/+8pDIJ2m9HxQ2WU323h5SCJnawUGkzHbPKrXGzwgPkU1WyBfG+TdDGGXvWp3s5ueFJ9+aSF 9AZs/wN6E36wb/7jhUgZXwBILtplL1dziMO6pj9sf4GyPq3cYeoAJHXPd3cLywc5Yozk= X-Gm-Gg: AYBFou2llukP5EQHkQMCH1lI4kgbPdhpWLzCgfSTAOintw2pTMO+uyT1chHHvKgdoBi P6zc5tLZXBeRZISSRmoCW4Ym1WVxwlT8HHVOV8zo2r9SQYwk/Nrnu8p5lyCEFEwdT/W30Q2ZW6p v9GokawA0MTOfjgpniTZ/vb7mR/mXm5ZCZH6NounIcR4L9XS2T9YpnoJVxFGWTmhVvWm/gQnXFu JNKU6BdVmtk0ZUQNRvjvxqwcn60Cgk56VcJcTy8uKJ/czYhrJBbbM18Aev7sTKj9Dro5SqJpEHA 3TCb2TWlbsQX/UegGvEQxVNyWX7aQHgmuNeRYfY4nEOVR/LVZJOrgGkGsu1fCtT8QMjRsuuh6ca YEMT5nxzvq77FR+FQHzgu++hWN64l5nGpQo8167FvKMRSI9XCcXMVP5Xbhr6zjHCS8F4QPylfKC mn3/7rSqMcHwMl X-Received: by 2002:a05:6102:4486:b0:782:df51:aaa8 with SMTP id ada2fe7eead31-78f7423f9cbmr14199137.6.1788881065154; Tue, 08 Sep 2026 08:24:25 -0700 (PDT) X-Received: by 2002:a05:6102:4486:b0:782:df51:aaa8 with SMTP id ada2fe7eead31-78f7423f9cbmr14162137.6.1788881064611; Tue, 08 Sep 2026 08:24:24 -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 2adb3069b0e04-5b6166fe10asm3103722e87.47.2026.09.08.08.24.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 08:24:23 -0700 (PDT) From: Dmitry Baryshkov Date: Tue, 08 Sep 2026 18:24:14 +0300 Subject: [PATCH v2 6/6] 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: <20260908-fd-kms-fix-smmu-v2-6-9391815742a8@oss.qualcomm.com> References: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@oss.qualcomm.com> In-Reply-To: <20260908-fd-kms-fix-smmu-v2-0-9391815742a8@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/pANAwAKAYs8ij4CKSjVAcsmYgBqoCib6Y5Pj7I8tllYLOX/kLmn67Beb5i/WqL5t cBNeZzNayeJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaqAomwAKCRCLPIo+Aiko 1fAUCACtazS1FGVD/8UxL8J6pmSEvyvjL6Iu2JeX3qFMXLwKH8qc9KO0dvBoC1hlU17CsRksxy4 V3jOzlqx1wAp7t/aSKKw2PUA1kUdYadfv06Gi8hC9tTyUckEgN6XwhMyf4Z6Op2BvYorKfrOovH 0sEzp20XF2rcu2p3mMRrcf7Dyn+rJ7S4SQrjiO3Zs/jMG8ARjuZCtq4LoGLTlRg8wQfYaqx19j1 6RFK54kVyyeUz4+94hyoEtdTq/dB0MCeuFdSr29zpKs3PM7ujV8rY/wwu3Dp1Gpc0YVfNaBK4MW a9y5H6yvL6TUXKH3oe2Ij1Hk0x/WYihYtdM41qc6Yh/IgyWw X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfX5UNU4Uctpp8e dzlXUtk5bh8mLQqwPS+kg9/6wSFeuqW5aTo/cGkC0hmpL9OHB0Xe+Ko1DIRSzowndOCA7poo0m7 IOW6GXQNUPxmftLpEUGRW/ZY9NsTav0= X-Proofpoint-GUID: ZNXWczKDk5u5VOY31QgoBezKJL73VOqZ X-Authority-Analysis: v=2.4 cv=VYjH+lp9 c=1 sm=1 tr=0 ts=6aa028aa 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=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=_1_hEmUK9n4M9CbZuSUA:9 a=QEXdDO2ut3YA:10 a=o1xkdb1NAhiiM49bd1HK:22 X-Proofpoint-ORIG-GUID: ZNXWczKDk5u5VOY31QgoBezKJL73VOqZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE2NiBTYWx0ZWRfXzPqXmDHBFB8u WQq0+KekY61tMwNb1iPjude0ZYROIphdjmOg37u3pR8HuZilUroTGOyGT36+XQ4xuQAxSGDOKhD 1P55f4Ub/3iSlsj81mRxfAdkWFFTZoC/3HT3YVY9+WqLlUgbBbjpKc4ypDR1s7YpZ0+6hgKVAJz uP1N4vAmS9pjxezXE82zsCLmIEUfjjhIMhZctZTJsHRHDPePT+xFCjt+wulKtTs1Vm8gI4r9hNT 3E8VA3owq/dZcITNghMzohDy5i6o8BQ8jtoxjFOdRliPtcCSI9i0fc7os4iPdshbL5IeVDkfNn8 lZAFJOI6Jk5/WqfTdSuKPyHNic1Lhvsni2ue5HjkJY0nS9SrI0UFezcmflX8VHCsDBrYqd5rVYN uJsE/1myrngmB9ekbbL67jFlTFcneYchD4Q1L4/D9BQ3KUfMGIaXjEtAtsIHwJou4T2Q9L+u419 cN7h7Oc2M3H2+Y1hO3Q== 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-08_03,2026-09-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 priorityscore=1501 suspectscore=0 spamscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080166 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