From nobody Wed Dec 17 07:25:46 2025 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 5440E192B8C for ; Sat, 3 May 2025 07:17:10 +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=1746256632; cv=none; b=MyKTWz7dIOl3A5hF+ecD5zPgGaQtr890KY/AwYpdOmuj6pMEgAEAyajHgp8VUb3sdOmKeAtSOTwA2FEvpIXbpZ+MODnh90I48n4x6zx0icHvn5BNDlzH99O1nNtBELSMfcllQpkttYjlN1sWDu2wBlsbo9UqMs/PTBJcCqWSJMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256632; c=relaxed/simple; bh=zJfl99w8gPUfrdwYMYw+1yKgLUvglxsypWiv2LeoqZ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T2Mr4C9u7kfhW5o8OoWalVWOUxwpQmPXDREwvFm8mk5PoEo5VL7taNogNaxsSiaDTKqrf8B6ZY6Xn+1U0yRbNybE+KHipwpzkrAO0QHkqD1wf2hJE1rvoNGAhVomzkhX8In5FU6G76tUap/VYfbxUlcpcp2ZIFel9WYWOlc8HpQ= 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=kR8en2yb; 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="kR8en2yb" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5434eGsL004905 for ; Sat, 3 May 2025 07:17:09 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= sEr7zBFz0n6zl511rF6sE9zKKxRwyqeRpnXZOdeaNiQ=; b=kR8en2yb463z93zV 5rKVRy9cKJ9H61s5luCEHfYYubme1UaBDZpvWvaccuC5C0SshcbsAW414TZrBcm2 hFNwuAdtEQRSvk9S5k53U2o94TXbRNBRckJGVQz2ADL93xTomiM4Z4uUqTn3dcys Sr9WVuDlLF8NORP06OkDVYliGFMUhAjn5bYXJTfMpGSQ/9OIt/Qpk3eZloN1l2Ek 3lcMviJ3UDt/lu7Bb01ubu13733KxV8fq0XljF3OLPzqTh3oMpcBqfxf+/e15TK1 +vU+zOFqDUggNdnqvlb8WjFrZAe36I/j7h0ZOy0prsL2HwqFHg75T1WBnhP1LdUi zPw/ag== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dcakg5eb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:09 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7c5e2872e57so485555985a.0 for ; Sat, 03 May 2025 00:17:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256628; x=1746861428; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sEr7zBFz0n6zl511rF6sE9zKKxRwyqeRpnXZOdeaNiQ=; b=qmwAsQQR3LgZhKQtVbhJ2k3iZIydyqsWvh+6/GhP5H8dYkghm2lPl+U7pb1srXn7/x +AmwhNtYI0NyYiuw37sl5M/T9WOVk+KONNvYwp7X2rHhsZ+6FG/aRKsnoJ/o2P1QITff ZwHXOZK2ESuKSC695wioG2EHSDbhxm/pETI/ylZH3Qqxcys0pd2fydUWXsKy4POkBuqN LonXocdCyuAcCI79enAJp1d+nO8z7QaENZ95JCJmjmuhmpp0Ju8w6LxN92vByrmmsqwC aum+N8OU8BuCQMGQ946dVUHZWPrg7q0Em0LT082kJ6X9yOsOM/Dy916vLiW2bLf/hjl6 /RJQ== X-Forwarded-Encrypted: i=1; AJvYcCWurvHDkdrT4n9UYw589YcoDiznBNBCzycLmikVQc81ix6WvKrIvGynZcIfqeU6XKD+Ov7BqpDcCys9US0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywc4xL0468+e2DIKeTeuTu4ThRzjdqKlprcnEeTFxRMjcxEh5sJ bFTafB+m/omlGBxcZeaS5Odl3RTGP8KDVHT6ZT5TQ/JDkIPUhQqged0w1fkX2moDysWwrkhWq3Y YqKPfC1kBVbbTvjwE0meD5QHVQsxt/vOC7z53kj0DKTwCkkTEIsZnb2DzM01IKyM= X-Gm-Gg: ASbGncvtxxTIArJqWJrfBok9xpOp6Z6/+0yQWZNFPYlRaBYQpSVKtt9dVLnlQE44hzN Fzmt4+PdSb/L4Rco++J1YWOImoFtoJqCBhJRfvHZufvGuqbaYYNxqZlxuxx++SbpIrGbxxZOpCm BuR2TSM+OA7KI2ndbKfM8fGzGba0DZCPHTb0rQSMr63orNbix087oTGYzPB7Iz2OJZMuQeOVZg3 mPXVaPeoXnNe/nKtPGcgrVP6WtvPhYSb50szVVQrI0rrEceE8RZVZnrqIveKww+ztOX9elgOl8R MEBFwljFZClrfHOrF5VKoXptCKrZJSSS5F6jIem/RgIMCbU0TJjnN83py2kOO2PrPR/t9XNAITg +W1MD1fEfsQT4aRgNSONWsCEl X-Received: by 2002:a05:620a:1aa8:b0:7c7:f7ba:270a with SMTP id af79cd13be357-7cae3b02eb6mr22422585a.47.1746256628045; Sat, 03 May 2025 00:17:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHxuNK5ghGmRyT7NP7q1v3xNaoSOvLMEMVKgRq2QIsX8OvQ5tOrV+Q08LD59YnphsQP4UwjZQ== X-Received: by 2002:a05:620a:1aa8:b0:7c7:f7ba:270a with SMTP id af79cd13be357-7cae3b02eb6mr22419985a.47.1746256627581; Sat, 03 May 2025 00:17:07 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:05 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:00 +0300 Subject: [PATCH v2 01/11] drm/msm: move wq handling to KMS code 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: <20250503-msm-gpu-split-v2-1-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7139; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=zJfl99w8gPUfrdwYMYw+1yKgLUvglxsypWiv2LeoqZ8=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ4boobfHTQTqHF1uisX+dGBK1t6sn6/8uFzuS26Yqazb1 oVO4g6djMYsDIxcDLJiiiw+BS1TYzYlh33YMbUeZhArE8gUBi5OAbjIVg6G6bMaDurPTfJIWbJ8 luKJ5tnRJ+c5/E3/q3e4ue1eleKa4tlVHa2utw+G5n300nfrWrLAwU3uXlfnndCnHyIWTZz9YdO P+lM3ooO1Ok+vOWiTe2B2kKrSnzIni3TTymmqfCKh/jFbYjUuV86z/B3RKfz8hNyMsmtuhYs1a0 XnLl90zvmxbAefSubVoFm71rxkcVrP4xg3WcMwbNk0nm9uyW6/haflz75/ecU/0z92V5ZlbPRTu d4p2OKRuHXZ7h8vnhXNSbzo7G5Vd31xUXPfYRmZvM28mxYYLeEXmLFtk8+0UA6Gi6cc4y+xfrDn Me60XVN9r/Wu9ps7M2WqnbNbWT4lWd01rPmyppY/cGUEAA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfXzNIoyW7HibeJ sbM9QEcpTzAXNXWDQHAkmoeHPS5cRb1TF9UOLmcLPLVji8SbQ1zgRCEOr0ORQJzoFAwhyRykg4n 5DUvSSjaMT6NKa1TokyyGQRzbLgqz7GDG8U/cBmFjr6IEOrLCJpwxowKNa9VVgd77ZBWmmcecSF oa6TtV76mLSuYB+xlewuJVbpV7uYV7llo6eXGW+/o/qNEMXiYl+7el/SuzO45hUZelfW2x0fnWA KJ7DSwKvJsJmMeWK6a+qJglc2FmKjH/ujMbHAT7m6uqoOCr15m69eRmC8doFe1V03l4nyc7Qq8z hLnTgTP3/ObP0cvhXREIHRBdCkGj9/tLa/2Jfq6DwjkBbT6ODP5WygEpNb1lbMFdhpP/yT1V8fi RlYaTwWNLlp+HFYT9vpg/qlId8ilPMY7jIIlj3sE0wOAbRYuAHiONUHm3J6+qVv0Yk1yaY7V X-Proofpoint-ORIG-GUID: VIh4mzzGUDCOQpXRA-OWcH9MBpwRBk-L X-Authority-Analysis: v=2.4 cv=JtvxrN4C c=1 sm=1 tr=0 ts=6815c2f5 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=lygNIV2IR02mpmLRnqcA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-GUID: VIh4mzzGUDCOQpXRA-OWcH9MBpwRBk-L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 bulkscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 The global workqueue is only used for vblanks inside KMS code. Move allocation / flushing / deallcation of it to msm_kms.c Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 2 +- drivers/gpu/drm/msm/msm_drv.c | 21 ++------------------- drivers/gpu/drm/msm/msm_drv.h | 2 -- drivers/gpu/drm/msm/msm_kms.c | 11 +++++++++-- drivers/gpu/drm/msm/msm_kms.h | 8 ++++++++ 7 files changed, 22 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index f9c46180b8f7ace9122e74015244334c1f13ef2b..1aaed1cd9ec58fed3230acda4c2= 83f0eedf3a9f0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -980,7 +980,7 @@ static int dpu_encoder_resource_control(struct drm_enco= der *drm_enc, return 0; } =20 - queue_delayed_work(priv->wq, &dpu_enc->delayed_off_work, + queue_delayed_work(priv->kms->wq, &dpu_enc->delayed_off_work, msecs_to_jiffies(dpu_enc->idle_timeout)); =20 trace_dpu_enc_rc(DRMID(drm_enc), sw_event, diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/ms= m/disp/mdp4/mdp4_crtc.c index b8610aa806eaeb540e76a6a17283faea6f482a99..5e1e62256c382426f70d21a5312= fb40dda68d695 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c @@ -511,7 +511,7 @@ static void mdp4_crtc_vblank_irq(struct mdp_irq *irq, u= int32_t irqstatus) =20 if (pending & PENDING_CURSOR) { update_cursor(crtc); - drm_flip_work_commit(&mdp4_crtc->unref_cursor_work, priv->wq); + drm_flip_work_commit(&mdp4_crtc->unref_cursor_work, priv->kms->wq); } } =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 0f653e62b4a008e3bafe09ee7fb4399e1fccb722..fce2365753e22850e56521e82b9= d9dca29c09280 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -1196,7 +1196,7 @@ static void mdp5_crtc_vblank_irq(struct mdp_irq *irq,= uint32_t irqstatus) } =20 if (pending & PENDING_CURSOR) - drm_flip_work_commit(&mdp5_crtc->unref_cursor_work, priv->wq); + drm_flip_work_commit(&mdp5_crtc->unref_cursor_work, priv->kms->wq); } =20 static void mdp5_crtc_err_irq(struct mdp_irq *irq, uint32_t irqstatus) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index f316e6776f672e7a97268f716040d0cf73256c4b..78cea9d4999488648b4131a2da4= 25fb349d1b664 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -82,13 +82,6 @@ static int msm_drm_uninit(struct device *dev) drm_atomic_helper_shutdown(ddev); } =20 - /* We must cancel and cleanup any pending vblank enable/disable - * work before msm_irq_uninstall() to avoid work re-enabling an - * irq after uninstall has disabled it. - */ - - flush_workqueue(priv->wq); - msm_gem_shrinker_cleanup(ddev); =20 msm_perf_debugfs_cleanup(priv); @@ -104,8 +97,6 @@ static int msm_drm_uninit(struct device *dev) ddev->dev_private =3D NULL; drm_dev_put(ddev); =20 - destroy_workqueue(priv->wq); - return 0; } =20 @@ -227,12 +218,6 @@ static int msm_drm_init(struct device *dev, const stru= ct drm_driver *drv) ddev->dev_private =3D priv; priv->dev =3D ddev; =20 - priv->wq =3D alloc_ordered_workqueue("msm", 0); - if (!priv->wq) { - ret =3D -ENOMEM; - goto err_put_dev; - } - INIT_LIST_HEAD(&priv->objects); mutex_init(&priv->obj_lock); =20 @@ -253,12 +238,12 @@ static int msm_drm_init(struct device *dev, const str= uct drm_driver *drv) if (priv->kms_init) { ret =3D drmm_mode_config_init(ddev); if (ret) - goto err_destroy_wq; + goto err_put_dev; } =20 ret =3D msm_init_vram(ddev); if (ret) - goto err_destroy_wq; + goto err_put_dev; =20 dma_set_max_seg_size(dev, UINT_MAX); =20 @@ -304,8 +289,6 @@ static int msm_drm_init(struct device *dev, const struc= t drm_driver *drv) =20 err_deinit_vram: msm_deinit_vram(ddev); -err_destroy_wq: - destroy_workqueue(priv->wq); err_put_dev: drm_dev_put(ddev); =20 diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index a65077855201746c37ee742364b61116565f3794..cc603bd4729e909e9381a3c277d= b262b13361de6 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -177,8 +177,6 @@ struct msm_drm_private { struct mutex lock; } lru; =20 - struct workqueue_struct *wq; - unsigned int num_crtcs; =20 struct msm_drm_thread event_thread[MAX_CRTCS]; diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 35d5397e73b4c5cb90b1770e8570277e782be7ec..184a4503fef0deff7234a3ce332= e0bf564fbce46 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -137,7 +137,7 @@ static int vblank_ctrl_queue_work(struct msm_drm_privat= e *priv, vbl_work->enable =3D enable; vbl_work->priv =3D priv; =20 - queue_work(priv->wq, &vbl_work->work); + queue_work(priv->kms->wq, &vbl_work->work); =20 return 0; } @@ -227,6 +227,13 @@ void msm_drm_kms_uninit(struct device *dev) =20 BUG_ON(!kms); =20 + /* We must cancel and cleanup any pending vblank enable/disable + * work before msm_irq_uninstall() to avoid work re-enabling an + * irq after uninstall has disabled it. + */ + + flush_workqueue(kms->wq); + /* clean up event worker threads */ for (i =3D 0; i < priv->num_crtcs; i++) { if (priv->event_thread[i].worker) @@ -261,7 +268,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"); - return ret; + goto err_msm_uninit; } =20 /* Enable normalization of plane zpos */ diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 43b58d052ee6aae0ce34d09c88e1e1c34f9c52ef..e52649bbee7dc6a80abfecf7f8d= 5bcfad3d8f60b 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -153,6 +153,8 @@ struct msm_kms { struct mutex commit_lock[MAX_CRTCS]; unsigned pending_crtc_mask; struct msm_pending_timer pending_timers[MAX_CRTCS]; + + struct workqueue_struct *wq; }; =20 static inline int msm_kms_init(struct msm_kms *kms, @@ -165,6 +167,10 @@ static inline int msm_kms_init(struct msm_kms *kms, =20 kms->funcs =3D funcs; =20 + kms->wq =3D alloc_ordered_workqueue("msm", 0); + if (!kms->wq) + return -ENOMEM; + for (i =3D 0; i < ARRAY_SIZE(kms->pending_timers); i++) { ret =3D msm_atomic_init_pending_timer(&kms->pending_timers[i], kms, i); if (ret) { @@ -181,6 +187,8 @@ static inline void msm_kms_destroy(struct msm_kms *kms) =20 for (i =3D 0; i < ARRAY_SIZE(kms->pending_timers); i++) msm_atomic_destroy_pending_timer(&kms->pending_timers[i]); + + destroy_workqueue(kms->wq); } =20 #define for_each_crtc_mask(dev, crtc, crtc_mask) \ --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 157FD1A76DA for ; Sat, 3 May 2025 07:17:11 +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=1746256633; cv=none; b=bWQKOSJotxcjm5nwlrSeim+zwLqOQSbjq87Sx/9qoGBGnysaiQtsvFLSSpwkNEFPm3dLF1fGAOuewVA5DULD+D6lkKEMbSZosxUFAYQt2rbvAteF9YNy5675KtK4O7SR4rThJFtAm8Fihd5nQhk+3BUuNKi+j4FHeS4RtF2VyKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256633; c=relaxed/simple; bh=AdrdjdzHPQQcBxZ5qmg59kaGK1b5+B2F6XfHvaKYS9k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dFPRtTzCuBWACozpIqIaxAtDJbhmM1f9iuFOHyDGouZ5GOw3ATXgdowpJ7XDJKwfi9bRXOdNnjIZel75HkwG1Ar5u1fPOkGHK9EEHsYIMcakY1govQn1jC1WLpzLTqNFSv9NFnNybGc/sZkj9VuV/hdDeHFbzizwm7GpWPdaYEc= 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=nLdV+a9l; 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="nLdV+a9l" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5435ukFk031093 for ; Sat, 3 May 2025 07:17:11 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= 2XRxC+rcd4lvez8neQ9jCV1W0aJMb78tI+WpAHrRAYk=; b=nLdV+a9lAEhrHXPe Q9nhSZ4GwJdEzH0xbmoOqR+VsmGlYeUJQw3e95TpAfMkUwVukHBeyPqzgK+6Hep6 DVkHpV1u5YOlFOyWlxEsqyYcNyuSlwbLnJCQBiykrf99R0pXlKPs7EhKhNA8kquF Eokmwikl5lM3TNoNmZdNgGakNQE/3Ha2ie0hZzMBiBE+9xA9XwnbNNDucSS4/cg3 5ScIFT4iykt7w99qGk5L5VDdLlW2LfBFy+IE6tNdqykOJW7HRrAMgMLXWtua0P4g 1nRwvXr0uC4pHsFpud0mNWcwTrPUJKGXA0zOIkirO02OMqhkdkE38Q8Gi7zCgdmn aV7qzg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46d9nkrbwd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:11 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-476900d10caso68964381cf.0 for ; Sat, 03 May 2025 00:17:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256630; x=1746861430; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2XRxC+rcd4lvez8neQ9jCV1W0aJMb78tI+WpAHrRAYk=; b=OPluZXV+kUBdQ+Zu3q3RIy5jvIETvxGgXZV5SoQI0FTiOx0uSVFspfF18jQX0R2yZF pv2mcyPGMcAIbCXk6iaYQXB8fg7yz+Ifi6j1T4kuzNtB0ETWwZTKvPHtUpcX+/mFeUi2 qLieus3ZX26FDMXzHzVLZLy5lXL7324bTCa3WYAV5tudxZZcXW3+H6RFBIep8SkR/Ou2 VPPzT0RH16acPzskB5wQUrVHKRwNaL4U3pByq8De0tNig9xW/MIhcIjazyWL9ixuAM8V 6ZQ3+3YPOfa5Ix6WJTAwAYHmS+DmQ6rU7wPgWBHkiwJlzaX4ORV4y0EbLh/IJKap7txx 5jcQ== X-Forwarded-Encrypted: i=1; AJvYcCVbtTj5igaTF9Au9fEDtcqxucjH+hT7wQIMzrPrjIpOYD4v57ZiSR/DQSpYOwnuIcvd2FcGjRzcsGmiAAU=@vger.kernel.org X-Gm-Message-State: AOJu0Yy02tZSI35Dd9/yX2K+wodH+jMtNhdvaXVaPwwDOIpPm8kRHtFP I0Z7ie++2BcICvYP9hSicO1C3uGe5nAP9KtemqPjWMuPoFsr43OmRLJcl+zfSJqBBKy3MsbSfvJ o9HIgGTExn8I1DB//x6KAd9MwUq7oW/wo4Bmua1yJXUL732LufSfIl4V3gFTIY6I= X-Gm-Gg: ASbGncs8nqpFWQE0cuDlLZ02oSYnyPJUlTqnVeXdvMtTtZyL5UXmc6UEccssdzoRTbP j8Wnv14nkyQKLk8oea2VPHy1lZjcRQDhr8V1z84XRPDa/W9ApE0OjuKUmGw6hJ2sOOlnfboX4e+ nPaSoiyLQ7DtNT8fa0R2GvZwAbIiYbB9Ro1YoTZzUmV76Jfz1JQ5zLiLQubmX+VJjQbz83HuC2g 2ctPRyPemank46Lip9qu+c5Ol5qnmnbmgTq5yXNZXL+RBRBv4MD3PwN4Ie/mNKI8EyOs4U8bRMy r+r2rOgNtw3uvBXl7bP86GK+2qf1TRyeicI11dS1gpTl5ccqSlQRDZa8+7tOFl5o2y5LwOCatvX wnM2Y+myMfjDLO4Zf7/sqRqPQ X-Received: by 2002:a05:622a:1b21:b0:472:1aed:c8b4 with SMTP id d75a77b69052e-48e00f621cdmr1472161cf.34.1746256629801; Sat, 03 May 2025 00:17:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEm0jFYRk4k9eoPqumXYa2PPwJCKZO+0EXUpA1YyKCnSe4V9HXyQYhK9M9D3KaH0j278whFHA== X-Received: by 2002:a05:622a:1b21:b0:472:1aed:c8b4 with SMTP id d75a77b69052e-48e00f621cdmr1471971cf.34.1746256629495; Sat, 03 May 2025 00:17:09 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:08 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:01 +0300 Subject: [PATCH v2 02/11] drm/msm: move helper calls to msm_kms.c 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: <20250503-msm-gpu-split-v2-2-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3518; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=AdrdjdzHPQQcBxZ5qmg59kaGK1b5+B2F6XfHvaKYS9k=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLtYTbd5OzodcUJUnhRC27sbJGt58qYgYGzq PktPPGoqoKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7QAKCRCLPIo+Aiko 1WTaCACkFesjPuDPmfjrkI3mXxI7MJlsZxMTfbupVgyVn8kuECSUdTvpyb2lvKN0QMPPqaQTGMI tYW8W+qJLW900BgRbT6SAxk8uzwHKoGgpygtcxF1zFzPLk8cmdBm9PTZOIqY+iRESHItwlJdc65 06Pjaj64nLPcgspOxq/5Yy1kRBoq8P5x0fqA1VctfLyCpPTlFCDiuXGr2+LlsX0JJxQVW88FTP1 jhcsCdBYXgpn7+SXLT4C2S8s4WA8nQujmklB+iMx/TllElINZEKtFXQfcNrgb+YflWqBe9gURn6 Y0Eu9ReRVjJgW+0VJpej2ThHEp2O+oloMspMttM4k+lbcMYc X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfX22V96o9n9gMc 6ECj8FDmK5m7AK2CnF6xCzG/u9KjttTU87D9PhGbw5+sfb/oAgckeHh2jlhJv35pywD8zuqfwoS 2l3tKk043GLXGWPs09sNEXhya/hCLVTrYhb4onnPXaBJ0mS6t0VX/IdqEQDX+ejfdRTdkKMMF0w c1fUbM9lcEsmACnl061mmiQrRFo/93zrE97Lac5ULmn9Hn2uzStnKX2/q0gKXi+II1iwuXri7pE P4X9v0DoMBSUq1TnMU3Ww3UnJZCPIBWLQ5Cao9WWO7qAubMurE/LNHD/0khLKSh8TrB1P0eyIh4 bFqekYOk5KDuYx6ZmJPuNRRJ6QNei4q3vljgcXMMjIte7KPmGD47MtnC9rzY2O8C8N3tb000Dt0 bExzt+AmHmfOir07WOMMlGlqS+iF+6kgp7SukEZi741zGH9zd3pHj+C+roHj3MU+qmohAil6 X-Proofpoint-GUID: 63pIcfPce2fGUuCbsdKMB3Sv5FNzHq_A X-Authority-Analysis: v=2.4 cv=LpeSymdc c=1 sm=1 tr=0 ts=6815c2f7 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=5yuRF9vT8A_X6ws8YtoA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: 63pIcfPce2fGUuCbsdKMB3Sv5FNzHq_A X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 adultscore=0 lowpriorityscore=0 impostorscore=0 mlxscore=0 spamscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 phishscore=0 bulkscore=0 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 Extract two more KMS-related codepieces to msm_kms.c, removing last pieces of KMS code from msm_drv.c. Reviewed-by: Abhinav Kumar Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 9 +++------ drivers/gpu/drm/msm/msm_kms.c | 20 ++++++++++++++++++++ drivers/gpu/drm/msm/msm_kms.h | 2 ++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 78cea9d4999488648b4131a2da425fb349d1b664..2c6997c85fbbc3767315ca3a166= a99b322f1218a 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -11,7 +11,6 @@ #include #include =20 -#include #include #include #include @@ -79,7 +78,7 @@ static int msm_drm_uninit(struct device *dev) if (ddev->registered) { drm_dev_unregister(ddev); if (priv->kms) - drm_atomic_helper_shutdown(ddev); + msm_drm_kms_unregister(dev); } =20 msm_gem_shrinker_cleanup(ddev); @@ -275,10 +274,8 @@ static int msm_drm_init(struct device *dev, const stru= ct drm_driver *drv) if (ret) goto err_msm_uninit; =20 - if (priv->kms_init) { - drm_kms_helper_poll_init(ddev); - drm_client_setup(ddev, NULL); - } + if (priv->kms_init) + msm_drm_kms_post_init(dev); =20 return 0; =20 diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 184a4503fef0deff7234a3ce332e0bf564fbce46..49a56873100b2fdcded3eb6adcc= 7032bf404212c 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -13,6 +13,7 @@ #include #include #include +#include =20 #include "disp/msm_disp_snapshot.h" #include "msm_drv.h" @@ -217,6 +218,15 @@ struct msm_gem_address_space *msm_kms_init_aspace(stru= ct drm_device *dev) return aspace; } =20 +void msm_drm_kms_unregister(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; + + drm_atomic_helper_shutdown(ddev); +} + void msm_drm_kms_uninit(struct device *dev) { struct platform_device *pdev =3D to_platform_device(dev); @@ -366,3 +376,13 @@ void msm_kms_shutdown(struct platform_device *pdev) if (drm && drm->registered && priv->kms) drm_atomic_helper_shutdown(drm); } + +void msm_drm_kms_post_init(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; + + drm_kms_helper_poll_init(ddev); + drm_client_setup(ddev, NULL); +} diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index e52649bbee7dc6a80abfecf7f8d5bcfad3d8f60b..26cbb662e7533fdfd55fb7f200b= 99c79c3fd3211 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -200,6 +200,8 @@ static inline void msm_kms_destroy(struct msm_kms *kms) for_each_if (drm_crtc_mask(crtc) & (crtc_mask)) =20 int msm_drm_kms_init(struct device *dev, const struct drm_driver *drv); +void msm_drm_kms_post_init(struct device *dev); +void msm_drm_kms_unregister(struct device *dev); void msm_drm_kms_uninit(struct device *dev); =20 #endif /* __MSM_KMS_H__ */ --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 C73551ACEA6 for ; Sat, 3 May 2025 07:17:13 +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=1746256635; cv=none; b=RfIxKw/ibdLK2MsanKzrT3xyJHKZMtk5eu+2+UzjMjzZ0Lgj8Zp/jK1YhXS/+rxEobpoDwxyoxMsDokEYEX7N+OLKsr8tKqvMkBaGlQ0Mmg4znOw97TgittuSrTSgZGrCCSFB8pvy4xqnpFfGz46E/G4Gq1dWect5od/ovxSp1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256635; c=relaxed/simple; bh=npSuxvWMmhzKLh8mAO06E84f1kOeMHWURDV7gpjmnuQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U641kjfMRbOQwC0b3IXkbcJcOPVD0kx3FvMWYFOWpjhsqGw/gRkPxN9a93eaSuVMA4zPwpPLlLqVUUliPfoLGrCubbLjVy6Guax9SLGrvI0kZbhNikRvkWM9KE25dBUQfilVIrNxp6CqjMam4lLaSwGPcvOhlgkcWfQ86eI0Qtc= 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=iRs2dOwM; 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="iRs2dOwM" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5436DMHk029323 for ; Sat, 3 May 2025 07:17:13 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= R6N0tvqMMnaFd6rXphyiPbtd6QUTPIJgEbiauM+ZAzk=; b=iRs2dOwMq5IQqXmF KjALF2RGDnzu0JmOj2OA5fsPDQjdmzzlF1Q3cGTH5e9icMWt0Muq2htKsbpxKmCp k4/HYa+BZg0X9Amp7Uc2oWOcOUnhXcNfnGEhxjxEdNjOZ7og47o4byRINAgVFTCz iXMyuglhw03Je6IGvBwhZ9+3NpKmcpW20QjE0GHLbdTsWFP4yQ6uqSt6KAqayeFp pqtIUe2gM1y+F6p3s2HqYXNQvjAAiuH159ShXLV5Uik2HPCFb+/0yQk9qVYZtrtG iK2LmG9LYjSxKxDWcS93MaZMuEhoi6gzG05T7n+lb8hwNsFVvSXie/BBc7ynSXbi Wx443A== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dce98571-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:12 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7c5c9abdbd3so274539685a.1 for ; Sat, 03 May 2025 00:17:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256631; x=1746861431; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R6N0tvqMMnaFd6rXphyiPbtd6QUTPIJgEbiauM+ZAzk=; b=vO/wljeimU3vNFgBKgVPx31qEtQ/XGW2f+XCQksUuHhpHwF+OQ35IqeRRaPpjdtw+L GwJUjky7z3xSvpM+7JrNz/6ZPQwLuEi8BCUyqB07G5vhCDB6eB1murLUkr5YjN4oaqld BE/vRu+EfXJdDWCOyROQVLPNW/3lXOevkHI9L2Tigcj8lysbSNF1+tQQUl5VcJ27sEIg h4vLp83U0hyVzkSSQLAWeiFy0cPLnI8iMYwg+/axM7h08A8i6SJGEBSkqzC+492PhhyY oKN3EfpryU7T2tOcPUFQNebrrb2UFNGSThPL0fB8SmUj49Lifv0zL2swAbd8SLh3ZU0B mLyg== X-Forwarded-Encrypted: i=1; AJvYcCUzAlZCsLv+Eo1lY0KGAUFJHjUcO2MXq2KDerO19hNzUS1C+sZ8qo7n5VTTz8mWhh1ZoLOAmeZnT1zqLdM=@vger.kernel.org X-Gm-Message-State: AOJu0YxJ1W3hW91OqW/KsJio+jqzqV/CVyeHA1kqlxfZ0xDl4qVXe4rN 1vJKbQeJDT11rHcooUCiBvWuEAGNfbCdoB+Rs3O02jRNJfPkVN2nDK1bwfngtVZe4nu/mSj9B4E g4Df+xrU+1vtGhPYIBSdjkFzML6Yl42DRaebEibxOeB/y0kDh11ZEPVTzNCCh57Y= X-Gm-Gg: ASbGncuSWob8F5gUpE4Wa9lff+K0lt7oD1574zAtjeoTmIhHe1gKONjfHtTcV1kbAlm SLBKD9m0OCj5j0nDKBoPVhrgdZ7DZk4nzHXJPRedwWeJe7owavAK2S8qokZK1Jz/RrBqurQrTfU B4rntNr1egWmiYRXKz93i4GEF7plhJmLNHZW/Jt/Dt+RhQ8Az1EQElyTCp7j25BxDRTYI3Q72NO hDcH1li84uONw4o7kf0ooOIfIj1zlIK+5j73jCKbL2HvhtSREZWetw0bcUcVGFJTAhJWfoWSaAc leO7hEPS5vQyW2uESkc35gAboHxlPgqSLUxsX+6gkuHp0O+zH/w9fcBKSs4X6O2mix1S0Ca8CEO puYZmi4djAEvBtpHnnAY/ZTCK X-Received: by 2002:a05:620a:f05:b0:7c5:4b91:6a44 with SMTP id af79cd13be357-7cae3a99ff9mr20444085a.19.1746256631329; Sat, 03 May 2025 00:17:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEO8pkqYTjfx0aYWe9ZJaRvk9TWmCpxmnFrPc/lMoywrhWLT1B4JmwtyoYh9Yf3IJ2pBAI5QQ== X-Received: by 2002:a05:620a:f05:b0:7c5:4b91:6a44 with SMTP id af79cd13be357-7cae3a99ff9mr20441985a.19.1746256630977; Sat, 03 May 2025 00:17:10 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:09 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:02 +0300 Subject: [PATCH v2 03/11] drm/msm/mdp4: get rid of mdp4_crtc.id 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: <20250503-msm-gpu-split-v2-3-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3130; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=npSuxvWMmhzKLh8mAO06E84f1kOeMHWURDV7gpjmnuQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLtto2vqAsBNHAxZIqy1DBh8+q2si90ocVxb arA9opd+w2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7QAKCRCLPIo+Aiko 1R7OB/0W4E9JqKrkJs0hOC+CF5VnWoPE7MsErFPX5GI8LFHKdd88bcdMGp3fSWR+w5uWuNNUylw og+IFhEVLrHyTTn71oQnTOPWyvpdDS9McnBONDrBUrYTDep81AiMhEaUTpDBPoqG0JSfc8Ee3jQ p5gWy8MQRBtFUlD6/2fHor6yTRio+Av/4GFNLY7/lWIrtzJrEMOrPjU0us5tTdfM5QXgnn4HUcs 5hnpD3Y+TZjO3a5UzorXPcsvnmip//CcuZNqHSNgD5FiUXMnsaDmzIJYp7OHCdxd0KnYihnTCMR E53tLbVTUm6fLnHNI+Vx7oRq8K5co5FK2uSdBfolUU8aM1ND X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MCBTYWx0ZWRfX1RcCZWKrteoo k7LqZ5vXRJu/ty6GAJn5O/pqASILzWXxuLa8MM04mVH57eQEsvhHFJsOIQbf0ssWoizryzi3eLC frvb/3BYxLxzlJCykv/h0WcXiefPH/h6tfzHwu9llxPvfJgp80m3KAzq8KhzIxMGfP/0gRQfeax WEHXgXi7PKfOSKRqNoeruQvECkFKlP8+S+1CPpvuEKHhrpuokF6BXl7nLsbPAMEnFyxhO/Sbdbs xpdctxEo1D3TXq/ngjubwqT+SkzjyWkw68tyUTZ1fqKHl/6dOD8gagdd0V65pUI/mHjqWE395r6 h5+dTWPkda4DCGbkA+H+yF5S5a0x5jMsdNqjNxj95zC5EAbeAMocGcWlABb4C7VvkjRyEli/ZWE Vaed5Oj4+6QslpodMurOnWvRuSAntGNZXVyDN61DvSsXQAY67H1IliXBvfQeS9TmX6AZ+XMq X-Proofpoint-ORIG-GUID: AgWNVdvnNGhhCf3s3ajJN3ovQ7dHJ-Gx X-Authority-Analysis: v=2.4 cv=Qope3Uyd c=1 sm=1 tr=0 ts=6815c2f8 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=JeS6effYNUkig2QXyjUA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-GUID: AgWNVdvnNGhhCf3s3ajJN3ovQ7dHJ-Gx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 mlxscore=0 adultscore=0 clxscore=1015 malwarescore=0 bulkscore=0 suspectscore=0 impostorscore=0 phishscore=0 mlxlogscore=971 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030060 There is no reason to store CRTC id, it's a part of the drm_crtc. Drop this member and use drm_crtc.name for the warning message. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 7 ++----- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/ms= m/disp/mdp4/mdp4_crtc.c index 5e1e62256c382426f70d21a5312fb40dda68d695..7596b45e234bdcf1b7cf37c4a8d= 39862f48819a8 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c @@ -17,7 +17,6 @@ struct mdp4_crtc { struct drm_crtc base; char name[8]; - int id; int ovlp; enum mdp4_dma dma; bool enabled; @@ -539,7 +538,7 @@ static void mdp4_crtc_wait_for_flush_done(struct drm_cr= tc *crtc) mdp4_crtc->flushed_mask), msecs_to_jiffies(50)); if (ret <=3D 0) - dev_warn(dev->dev, "vblank time out, crtc=3D%d\n", mdp4_crtc->id); + dev_warn(dev->dev, "vblank time out, crtc=3D%s\n", mdp4_crtc->base.name); =20 mdp4_crtc->flushed_mask =3D 0; =20 @@ -624,7 +623,7 @@ static void mdp4_crtc_flip_cleanup(struct drm_device *d= ev, void *ptr) =20 /* initialize crtc */ struct drm_crtc *mdp4_crtc_init(struct drm_device *dev, - struct drm_plane *plane, int id, int ovlp_id, + struct drm_plane *plane, int ovlp_id, enum mdp4_dma dma_id) { struct drm_crtc *crtc =3D NULL; @@ -639,8 +638,6 @@ struct drm_crtc *mdp4_crtc_init(struct drm_device *dev, =20 crtc =3D &mdp4_crtc->base; =20 - mdp4_crtc->id =3D id; - mdp4_crtc->ovlp =3D ovlp_id; mdp4_crtc->dma =3D dma_id; =20 diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm= /disp/mdp4/mdp4_kms.c index 7e942c1337b3597d557abd3e2e418c3958e5eb3f..00920bd44f6f73099ff2c293473= e427caa49b873 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -338,7 +338,7 @@ static int modeset_init(struct mdp4_kms *mdp4_kms) goto fail; } =20 - crtc =3D mdp4_crtc_init(dev, plane, priv->num_crtcs, i, + crtc =3D mdp4_crtc_init(dev, plane, i, mdp4_crtcs[i]); if (IS_ERR(crtc)) { DRM_DEV_ERROR(dev->dev, "failed to construct crtc for %s\n", diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h b/drivers/gpu/drm/msm= /disp/mdp4/mdp4_kms.h index f9d988076337cb6fb63af8e76be59b2eb34ab327..fb348583dc84de5c57c77fdf246= 894e9334af514 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h @@ -185,7 +185,7 @@ void mdp4_crtc_set_config(struct drm_crtc *crtc, uint32= _t config); void mdp4_crtc_set_intf(struct drm_crtc *crtc, enum mdp4_intf intf, int mi= xer); void mdp4_crtc_wait_for_commit_done(struct drm_crtc *crtc); struct drm_crtc *mdp4_crtc_init(struct drm_device *dev, - struct drm_plane *plane, int id, int ovlp_id, + struct drm_plane *plane, int ovlp_id, enum mdp4_dma dma_id); =20 long mdp4_dtv_round_pixclk(struct drm_encoder *encoder, unsigned long rate= ); --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 60BAA1B0412 for ; Sat, 3 May 2025 07:17:15 +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=1746256637; cv=none; b=k6xA5VYN17mtE9wiRUl7zCpNmPzUXY3tAPNUylyB/155+lhGrYjV0puSdfPf5/ezo/EptJ8EKZTB0tX/RYcvl366HAehplkA11mc3siz1XPEyoz2s+RtAq1m/HY+k1iwUlvL+0D0YhvCSOcaGaKho2vaUCFKlR+aGidYPL2yMW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256637; c=relaxed/simple; bh=x7cM2Rqp4n6JjfWiK8DuKNRjLhu0g1Po0+oqCeMtWC4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DkzjpIhvfqjI4wSthh93iEW7vLW0o+yD9e6c6Pkj/a5n0KcPPQa6L2KX8kaDwoXMQQovuFVSpYjm9daG/qh+f/MivN6mG2ak37955tO2+iyyxsqdfb0ixsThP9jFL1ZQcIkADrqNC1IwrR2HLnAnuDvNftd4hyi6Q3KgdUlcT4Y= 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=TPD1/afz; 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="TPD1/afz" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5436xLUk010953 for ; Sat, 3 May 2025 07:17:14 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= xqg908SIWMwTmLhHkCP5zPeST6KmZTagNBLZ1+txW/k=; b=TPD1/afz/z7kAcLI 8a0wVa0c9dfu9j3G+2j24xRHWcerpI2FquUGWjX1RzC2Ka2USnl45NHjbawTOsCY 9njjjZ76FRKIGWaGbPCVKJ607+TnvO3u7jbwuZ+G5vwL3AAGmtSlh4Xp/p/LLlcJ K23g2IQ/+y6IRzUH+67+RX10OdSMZfkNgM7R4An3BSiRRipQ/zVmkb9WV7VO8aSm SqQM2CiC896g7EDxP6LPZjxRHWVfbg2RPADlAVcC8JafqmtRxqnZcV0EJULsYiIF 0ymbVaSrPdbPOtc2T+6U6vTlf9TqQX4Sx3wqqdyXkolnlnMyCvX2mxwKpde3ntII GVSFoQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dbwfg6bm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:14 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c5b9333642so329873785a.3 for ; Sat, 03 May 2025 00:17:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256633; x=1746861433; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xqg908SIWMwTmLhHkCP5zPeST6KmZTagNBLZ1+txW/k=; b=d5ku+2bCg4rnlnkDWIo7etuCKRunxAJ9sb54umLwNxEkk9RP0vXcOXraDlvgq3Sq8o 3//4R5irV0ZpX/YkK95XxP8jT3lUcQz+nsJT8ilBcTK0YY63+RVExO/9+0ruqoGKN68n ZLZTlwm9Ffup4S90ap2MujgGeYTDH6+FiOLb5SyuIFMz/R40sgBnWepUZYMUMPXs4SkY 2HxD50KEGDhJT8cOOO2HJn1NlU/yCELwoca2SFFjWslhNhNXwUv7pKTQ7AFQ1gc5J1DT hkj4mdZmu0CSTAkyj1+cSFi5Ybaj0BLcmZWwE2xWyGBahQkeDgIdL1HhxqOwopd0+pLb E2pQ== X-Forwarded-Encrypted: i=1; AJvYcCXVjP0ccnG/kjkWPVx01Gj8CFWYVViJ4voa51k7MyxWhXiElEyhNgsM0EBvpgCUMe9+ipn/Ve7THfrdqo0=@vger.kernel.org X-Gm-Message-State: AOJu0YzsnXGTYLLP/GLHONtFib6it94j6lP+JR1eZ/MIgfZl+RqC3Q1n lTDq2L5gpM41t5oPRvshyRPaSm42kYPx9f+Gbp15qdLjnqcv9hJ+suaXbZquYctZjZptwp2rqCQ Iohuq+2/89EEixhMXy9XVoiJnOtwn03cr7gYfpjSsldmk5Sd3eKyvKJ+dlFcZjlA= X-Gm-Gg: ASbGncv+qqeRNiyuvRTx7FtbTP7wP98A489aFXBZSkxQTcQEm5M+3SmM0ad71aD3fR7 QeT4wrId1gV2mJBQr2DuBUU92gxul/+MoLmitj2COjEVVI1omcSEbl+zs+GMe+9POJqWmEeY0y2 0v6kRhBizYvGsOOXnMfvkDtzOzLvIRWDJGlhJhnYwmQXsPF6LDS7VlfBTKBQp3JD7LnSz13ue04 qtzxYbqll/eFRRm5UBLi0W7IsfGWdQL70bdhsRKyuzZbh8sVZjhNTNOtPJaK0IgnVNXjJ5Df1n+ 0OTACm04l9bYJvGzHmGBKHadvdyoVrg4RFmJ4FycwYYSh8MtdnYx0YI6woNx60uaXNYSDhZ+v/4 7Z1S0L4CtXp6QlhTdot8loTkz X-Received: by 2002:a05:620a:244e:b0:7c5:b909:fde1 with SMTP id af79cd13be357-7cae3ab122dmr23768385a.25.1746256632980; Sat, 03 May 2025 00:17:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IECXGB0CIIu2ecyT7u8vAg1eMWNirPhcQIEsdIkfsQk1htP9MauQoWor1Y/MMWU2yvQYWnINQ== X-Received: by 2002:a05:620a:244e:b0:7c5:b909:fde1 with SMTP id af79cd13be357-7cae3ab122dmr23766285a.25.1746256632659; Sat, 03 May 2025 00:17:12 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:11 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:03 +0300 Subject: [PATCH v2 04/11] drm/msm: get rid of msm_drm_private::num_crtcs 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: <20250503-msm-gpu-split-v2-4-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4461; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=x7cM2Rqp4n6JjfWiK8DuKNRjLhu0g1Po0+oqCeMtWC4=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLtsFdPNQ6IzgKP6qzeOKCEUKP02mF14ahhK ziLZswcrGqJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7QAKCRCLPIo+Aiko 1VhdB/9Z1IZhwrnbkT3rTR6XRW8OhCkiZ/IgYH9M+tii1GEjLj+lS20+G51k89ahrVECY351rb1 WF8KubJolcytW8ClZk0X9pLNGR6P1fPlujsUC5Av8oT+nUqbp1srnY3vQQ5+RrQn6AHV8ZaAVy9 ZrLF2rBQLEoLe5FDGHNL3Rmf9/WH+brZIB8y9bynoSnDss6/7kEC4VYHcVZ0UdeqcgbF0MgccI9 AT+wXdkrVduzswBnROLVxCgRhvpPA7YlQKimT7RvEvrx9mo3sMU8RE7XprGmTKJ1Fad2UJusqkH 1bJhIbuZrREqLUepMGTb8SSirEzQAU866zsZ5nJfvH5GMDf/ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: HTlbpvfLt8IOApdrR2H5_JZ6I86dMiGm X-Proofpoint-GUID: HTlbpvfLt8IOApdrR2H5_JZ6I86dMiGm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfX5yhA2Stad0A/ y7UVpi0MyD8xLGwEZ8R4xCe9OAubz3P/0IJN3Q7v6+yE4DybKZ6nXTEl33GH075Tk42kZ/QsD9R fzLmVH64DO6+hgVLwaY34SC7M6iPk4R78txK0fZu3x0uN4wim11eVvx06NCgVe4q1C6/m8JZ62L YppB5QE2cklj0gOgfyWNjJ1w2xvMN327t9zieJUjKH88hsATHsflrK4JT/voL+J6P3kLSo/KCKw CDXcLu2JjvlLWdWmtX9ALwdKcSyuV6zOe7JInRYx44eHTTWjwn4/zMeQj18zEUiGQzR2+4TCFSj TWdp1LBDEFH6yC8AseKlhilCDvCGS5yUrFN/3pZ3h3bho1jT5w5DZ2+OJlsQA4UWmGGkJE9OvOD dXD39WGsUcUaIqv6O9gwVcyImnBnEseOaNDpj0kme5Jqcg4VlxCzQ1A/JBkTIDcFR5vVF0LW X-Authority-Analysis: v=2.4 cv=AfqxH2XG c=1 sm=1 tr=0 ts=6815c2fa cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=F-HcN3iq_yGV61sY1bgA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 Drop superfluous msm_drm_private::num_crtcs in favour of using drm_mode_config::num_crtc or MAX_CRCS as appropriate. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 3 +-- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 3 --- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 4 +--- drivers/gpu/drm/msm/msm_drv.h | 2 -- drivers/gpu/drm/msm/msm_kms.c | 4 ++-- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/= disp/dpu1/dpu_kms.c index 1fd82b6747e9058ce11dc2620729921492d5ebdd..4b95fbbda8e120c1eb86a23e539= 7db30145d505a 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -874,12 +874,11 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_= kms) ret =3D PTR_ERR(crtc); return ret; } - priv->num_crtcs++; } =20 /* All CRTCs are compatible with all encoders */ drm_for_each_encoder(encoder, dev) - encoder->possible_crtcs =3D (1 << priv->num_crtcs) - 1; + encoder->possible_crtcs =3D (1 << dev->mode_config.num_crtc) - 1; =20 return 0; } diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm= /disp/mdp4/mdp4_kms.c index 00920bd44f6f73099ff2c293473e427caa49b873..99ca1d6c54b2c24cde39de44bb5= 5151576dbe188 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -296,7 +296,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4= _kms, static int modeset_init(struct mdp4_kms *mdp4_kms) { struct drm_device *dev =3D mdp4_kms->dev; - struct msm_drm_private *priv =3D dev->dev_private; struct drm_plane *plane; struct drm_crtc *crtc; int i, ret; @@ -346,8 +345,6 @@ static int modeset_init(struct mdp4_kms *mdp4_kms) ret =3D PTR_ERR(crtc); goto fail; } - - priv->num_crtcs++; } =20 /* diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm= /disp/mdp5/mdp5_kms.c index 3fcca7a3d82e7aaa74379b19763c22eb43c953dd..5a706be17e2e5af2148366eacdd= db378b2f69dbd 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -374,7 +374,6 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms, static int modeset_init(struct mdp5_kms *mdp5_kms) { struct drm_device *dev =3D mdp5_kms->dev; - struct msm_drm_private *priv =3D dev->dev_private; unsigned int num_crtcs; int i, ret, pi =3D 0, ci =3D 0; struct drm_plane *primary[MAX_BASES] =3D { NULL }; @@ -442,7 +441,6 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) DRM_DEV_ERROR(dev->dev, "failed to construct crtc %d (%d)\n", i, ret); goto fail; } - priv->num_crtcs++; } =20 /* @@ -450,7 +448,7 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) * crtcs for the encoders */ drm_for_each_encoder(encoder, dev) - encoder->possible_crtcs =3D (1 << priv->num_crtcs) - 1; + encoder->possible_crtcs =3D (1 << dev->mode_config.num_crtc) - 1; =20 return 0; =20 diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index cc603bd4729e909e9381a3c277db262b13361de6..09d5f57e9343cce404d4f8a3a6d= 8a285f662f60f 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -177,8 +177,6 @@ struct msm_drm_private { struct mutex lock; } lru; =20 - unsigned int num_crtcs; - struct msm_drm_thread event_thread[MAX_CRTCS]; =20 /* VRAM carveout, used when no IOMMU: */ diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 49a56873100b2fdcded3eb6adcc7032bf404212c..9dfe0fb4755ddd11277f5242342= 97ccd5ea96001 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -245,7 +245,7 @@ void msm_drm_kms_uninit(struct device *dev) flush_workqueue(kms->wq); =20 /* clean up event worker threads */ - for (i =3D 0; i < priv->num_crtcs; i++) { + for (i =3D 0; i < MAX_CRTCS; i++) { if (priv->event_thread[i].worker) kthread_destroy_worker(priv->event_thread[i].worker); } @@ -313,7 +313,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) sched_set_fifo(ev_thread->worker->task); } =20 - ret =3D drm_vblank_init(ddev, priv->num_crtcs); + 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; --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 5FD3C1A705C for ; Sat, 3 May 2025 07:17:20 +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=1746256642; cv=none; b=WhWi6YSYhqTRjVi40R011BGg6toft9S/IkHausI4u1qaeL9cKe42K2ReTgn8+1OZrHgq3zRMoNiGBC2vh3S6v4jepSPYunCQ0Z6giDPXsan0oFiL8IX9Mjq/18R5CTNJVw6/pPB9iCG+byJkV3hp8yhWsyyQef8X0cIoVl9f/dw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256642; c=relaxed/simple; bh=TxKOzjHBoD8sw3I6PbHEwgWyuMYz2AaynsL3j48fDYA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uonmx/se49KgKY1Z9hMN9LYzCjc1aebW7lOMpZfLVOZdCfbt54IwqslwhaZpV3YmejDMB3v5h0VUlGmD6vRFxpHqCcbiGjPp9PmbiPDOxFsV0eV8wEef/FDqGUdS8fsTdOAShh2JMZMHvP86pDN+E9yjHJ1d6+Ll7vbbqF5Jejo= 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=K0NPd5PH; 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="K0NPd5PH" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54361YTp007208 for ; Sat, 3 May 2025 07:17: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= fE9TciIlbrG+TUwU2UmYZFgXyzSTuad5frGi4HFWObs=; b=K0NPd5PH/X2RbfJl Ez8YlnqQMDuve1m19MVbFJKkGJ1/Hg44xWcJkTN0kgXuw906nOq5GuNL5EOa9UM5 0i4QqQF0QJMjjKY+SZPLsmtMpL8sBoKakmlDahS6ha4FOfL+Xn8FDTWGxqc6APDt WGNXtIVlFbjNZIcwc1AYr1i1J+4MejJI/x0AoTgtqsLA+tFSxq1pCmEVxEDmhRPK lxa97AYuyBUNz6vViEbDN5i8CgDF5L8IErwX757hadmmETynuCPJF/xb5ADEnjZi CiFqMSU43Rzi3Lt/wKgj3e/DNdts9RgjlGo+ULslp/6LQMOhmqkXLMEbkXSa7AlR UYJwmg== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46da3rrauf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:19 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-6e8feffbe08so68998236d6.0 for ; Sat, 03 May 2025 00:17:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256636; x=1746861436; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fE9TciIlbrG+TUwU2UmYZFgXyzSTuad5frGi4HFWObs=; b=UeMPEK8Xug2yqPU18ffkZRlYGLc5W2UFnRfIYk3HvRFmY0hT+UpKGH1OzUiT9surY8 LuWNzYsUzrqn6s0F4JTR7v5mLZYQAgiW6VaussouMiGcBGlDxBuJcZG3jd5ssdq3kOGm MSVgNANu/WeT0oTqj5miny2P7SSwfp+RY0jU0cjdJbZOLrlaO6+HatkMsqnn9uyoXXWo tjQXrFkaSuiedXKADLD+fnFy5fuOOkBmpZOLUo1tDrafxChUix4W51N0deFtIRbKTPX3 LeB/4pN/d33rFGCC1nOEE43Fi3QYXtgwMGALFUn9PcG2bDCFdnbYUrNtXw51aHKKLWI0 Mykg== X-Forwarded-Encrypted: i=1; AJvYcCVssbAc0pB118jMRIINdKdIOly7mTKVHXtVbKU9xEpmCOeJFnRQSIbBdELo2RD+MJs52+avrvU8z5U4XDo=@vger.kernel.org X-Gm-Message-State: AOJu0Yyp7umDNS4uLs9si/PmEF5LbHeXHOlS66mUN8MQoBjwIizYzl6h kuHXIFmjG2IqyVFUuKpDkm3pwB6pOY/JoRjmInlZDSmlAC2YbuUOSr17Lg+f3oh8+99ST7ZkBsE CZCwlDHGpq0l2KG0ymrtlTqoUQFrIUCw6NFNiymjeFdWXcI9a8k3bN9vD8Dw4T8c= X-Gm-Gg: ASbGncsS63xOhmydE+RWN/zNEZ06V/YdO2M5mqHp25wrkL7dUlUxz6rHdjyp7Xn+eJQ JL+FcvZRCtmhviUAsPljkDUnuAkQSslbeRqpLqhGWF5inBFNqga42slmf1gHt5MsBh8uhdG/4Ee PacQl/FRWyJefehKJTt42fzL8rHcFy0udZhADq2PtOZQhfbnVnm6yR3SZy8slvO33OxUefi/DyF rA1T6rY37Nmyz5Atj1t2KS4s7n8jSos4YJFUBAu/FZuLEPB7O4zXXFZhhyr5x04al7aVzCDo8Fr BZeVqchQH3UDJLLh0VnMGLdXVxFC6lz/0s0uMw+uTY2rwwQHvr3CtFb5AVziGPSvXFOuZNtSw13 TgBMrR9LxJaLDw9IHlEg+OfqC X-Received: by 2002:a05:6214:c47:b0:6e8:fcc9:a291 with SMTP id 6a1803df08f44-6f528c7fe1amr2596726d6.23.1746256635632; Sat, 03 May 2025 00:17:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFR4wNpzUG/bptrQ+52tXxdptHZK/RHcViayj6lPPjmiH8K44idol5XM8NwA4hoLSwACiTn0w== X-Received: by 2002:a05:6214:c47:b0:6e8:fcc9:a291 with SMTP id 6a1803df08f44-6f528c7fe1amr2596446d6.23.1746256635253; Sat, 03 May 2025 00:17:15 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:13 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:04 +0300 Subject: [PATCH v2 05/11] drm/msm: move KMS driver data to msm_kms 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: <20250503-msm-gpu-split-v2-5-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=15386; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=TxKOzjHBoD8sw3I6PbHEwgWyuMYz2AaynsL3j48fDYA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLty3aN/tYhn1Uyw9Gebo/6WejEomyj9nJk2 5OfA8ppBqaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7QAKCRCLPIo+Aiko 1bcxCACO/ohykEUA3ivHIwwV+fGtrOIwsd44sdrW2MTGTAHxx/PbtN5Fz3fDDFdqVpLeQeMdJoy CucVUn8/RlnYmBX3BhTB3n/yp+FRNqJA5U1VuSZQeVk9GFARKQ6sgLdMmzM0gy2Qw0D48JVIdR0 otckTlB/4klJCXzbi/Jtcd0vZjT7PR4FyaiDJT9bEnS3o7QsN3S8EA+gP6kZvXkcjigX9zUWx73 +zi/FwHDT46DM4zlOeL2n21we0cwE5hHksUiExjQlCrDr1q0GEmwdTz/KqohS7txgCVAskmb/C4 o+cUvab3aIAO5EgEbWYsoxHCYP1KpjAdvBL1XwaSgW5ZRfku X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: hX9PARCoq6toPa34e4HgAfj2ubgFC8rP X-Authority-Analysis: v=2.4 cv=cpWbk04i c=1 sm=1 tr=0 ts=6815c2ff cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=472Qx-lKBLW_CYKAQVMA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: hX9PARCoq6toPa34e4HgAfj2ubgFC8rP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfX5pvwjxR/cD6+ Sj+OpniR/cwrlqwWnIP2yzWfy7VXqX9h+mwdho935v3+TpCfOmGLNJDl4dgS+BS09Qqokia7Ztd A/OB4gdMrPMOO0dS5Ag46w4s1FH5DfAIA/NDuLLT1Dd+rvqWfqxETz/4myTZYup5TF1Zcgw+w87 RLibi9h4n+UFqzLnduKeqoPjEgSEv1Cz57n73gSDPYgwWdCfTlWD+o0kyao8k9oWUGtRT9gQaRv FlXVJcE9SJVngPUWWAxlZbod4FLBe22gkgHbLqG9parg5rHtLw2HzVFw7zKxQkU1szB/T5RANxV sYY+bHJ+f3bcIGNxlmIhPLW4nmf+9FEXQRFlFlaKtaogJ4c1p0NYrn0H5VFlzCaoKl/NMNvBXWh 5xNii+P8EWy8n3Of9+0zByq57UmE8tOFKgm7hJB0N/O5OPIY8XXP/c9LOxPcJwGJtXZ4VHuv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 malwarescore=0 suspectscore=0 bulkscore=0 priorityscore=1501 mlxlogscore=999 clxscore=1015 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 Data for HDMI, DSI and DP blocks only makes sense for the KMS parts of the driver. Move corresponding data pointers from struct msm_drm_private to struct msm_kms. Suggested-by: Abhinav Kumar Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 11 ++++---- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 32 +++++++++++--------= ---- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 8 +++--- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 13 ++++----- drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 12 ++++----- drivers/gpu/drm/msm/dp/dp_display.c | 6 ++--- drivers/gpu/drm/msm/dsi/dsi.c | 4 +-- drivers/gpu/drm/msm/hdmi/hdmi.c | 13 ++++----- drivers/gpu/drm/msm/msm_drv.h | 11 +------- drivers/gpu/drm/msm/msm_kms.h | 6 +++++ 10 files changed, 57 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/= msm/disp/dpu1/dpu_encoder.c index 1aaed1cd9ec58fed3230acda4c283f0eedf3a9f0..f661eec7b4d559dcaae8bef10da= 006510412d88d 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -264,7 +264,7 @@ bool dpu_encoder_needs_periph_flush(struct dpu_encoder_= phys *phys_enc) mode =3D &phys_enc->cached_mode; =20 return phys_enc->hw_intf->cap->type =3D=3D INTF_DP && - msm_dp_needs_periph_flush(priv->dp[disp_info->h_tile_instance[0]],= mode); + msm_dp_needs_periph_flush(priv->kms->dp[disp_info->h_tile_instance= [0]], mode); } =20 /** @@ -283,9 +283,9 @@ bool dpu_encoder_is_widebus_enabled(const struct drm_en= coder *drm_enc) index =3D disp_info->h_tile_instance[0]; =20 if (disp_info->intf_type =3D=3D INTF_DP) - return msm_dp_wide_bus_available(priv->dp[index]); + return msm_dp_wide_bus_available(priv->kms->dp[index]); else if (disp_info->intf_type =3D=3D INTF_DSI) - return msm_dsi_wide_bus_enabled(priv->dsi[index]); + return msm_dsi_wide_bus_enabled(priv->kms->dsi[index]); =20 return false; } @@ -647,7 +647,7 @@ struct drm_dsc_config *dpu_encoder_get_dsc_config(struc= t drm_encoder *drm_enc) int index =3D dpu_enc->disp_info.h_tile_instance[0]; =20 if (dpu_enc->disp_info.intf_type =3D=3D INTF_DSI) - return msm_dsi_get_dsc_config(priv->dsi[index]); + return msm_dsi_get_dsc_config(priv->kms->dsi[index]); =20 return NULL; } @@ -709,7 +709,8 @@ void dpu_encoder_update_topology(struct drm_encoder *dr= m_enc, if (fb && MSM_FORMAT_IS_YUV(msm_framebuffer_format(fb))) topology->num_cdm++; } else if (disp_info->intf_type =3D=3D INTF_DP) { - if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], a= dj_mode)) + if (msm_dp_is_yuv_420_enabled(priv->kms->dp[disp_info->h_tile_instance[0= ]], + adj_mode)) topology->num_cdm++; } } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/= disp/dpu1/dpu_kms.c index 4b95fbbda8e120c1eb86a23e5397db30145d505a..4b85598104afbbfa52c7ee7529f= 9da403dabc10d 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -582,7 +582,7 @@ static int _dpu_kms_initialize_dsi(struct drm_device *d= ev, struct msm_display_info info; int i, rc =3D 0; =20 - if (!(priv->dsi[0] || priv->dsi[1])) + if (!(priv->kms->dsi[0] || priv->kms->dsi[1])) return rc; =20 /* @@ -593,26 +593,26 @@ static int _dpu_kms_initialize_dsi(struct drm_device = *dev, * * TODO: Support swapping DSI0 and DSI1 in the bonded setup. */ - for (i =3D 0; i < ARRAY_SIZE(priv->dsi); i++) { + for (i =3D 0; i < ARRAY_SIZE(priv->kms->dsi); i++) { int other =3D (i + 1) % 2; =20 - if (!priv->dsi[i]) + if (!priv->kms->dsi[i]) continue; =20 - if (msm_dsi_is_bonded_dsi(priv->dsi[i]) && - !msm_dsi_is_master_dsi(priv->dsi[i])) + if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) && + !msm_dsi_is_master_dsi(priv->kms->dsi[i])) continue; =20 memset(&info, 0, sizeof(info)); info.intf_type =3D INTF_DSI; =20 info.h_tile_instance[info.num_of_h_tiles++] =3D i; - if (msm_dsi_is_bonded_dsi(priv->dsi[i])) + if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i])) info.h_tile_instance[info.num_of_h_tiles++] =3D other; =20 - info.is_cmd_mode =3D msm_dsi_is_cmd_mode(priv->dsi[i]); + info.is_cmd_mode =3D msm_dsi_is_cmd_mode(priv->kms->dsi[i]); =20 - rc =3D dpu_kms_dsi_set_te_source(&info, priv->dsi[i]); + rc =3D dpu_kms_dsi_set_te_source(&info, priv->kms->dsi[i]); if (rc) { DPU_ERROR("failed to identify TE source for dsi display\n"); return rc; @@ -624,15 +624,15 @@ static int _dpu_kms_initialize_dsi(struct drm_device = *dev, return PTR_ERR(encoder); } =20 - rc =3D msm_dsi_modeset_init(priv->dsi[i], dev, encoder); + rc =3D msm_dsi_modeset_init(priv->kms->dsi[i], dev, encoder); if (rc) { DPU_ERROR("modeset_init failed for dsi[%d], rc =3D %d\n", i, rc); break; } =20 - if (msm_dsi_is_bonded_dsi(priv->dsi[i]) && priv->dsi[other]) { - rc =3D msm_dsi_modeset_init(priv->dsi[other], dev, encoder); + if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) && priv->kms->dsi[other]) { + rc =3D msm_dsi_modeset_init(priv->kms->dsi[other], dev, encoder); if (rc) { DPU_ERROR("modeset_init failed for dsi[%d], rc =3D %d\n", other, rc); @@ -654,8 +654,8 @@ static int _dpu_kms_initialize_displayport(struct drm_d= evice *dev, int rc; int i; =20 - for (i =3D 0; i < ARRAY_SIZE(priv->dp); i++) { - if (!priv->dp[i]) + for (i =3D 0; i < ARRAY_SIZE(priv->kms->dp); i++) { + if (!priv->kms->dp[i]) continue; =20 memset(&info, 0, sizeof(info)); @@ -670,7 +670,7 @@ static int _dpu_kms_initialize_displayport(struct drm_d= evice *dev, } =20 yuv_supported =3D !!dpu_kms->catalog->cdm; - rc =3D msm_dp_modeset_init(priv->dp[i], dev, encoder, yuv_supported); + rc =3D msm_dp_modeset_init(priv->kms->dp[i], dev, encoder, yuv_supported= ); if (rc) { DPU_ERROR("modeset_init failed for DP, rc =3D %d\n", rc); return rc; @@ -688,7 +688,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *= dev, struct msm_display_info info; int rc; =20 - if (!priv->hdmi) + if (!priv->kms->hdmi) return 0; =20 memset(&info, 0, sizeof(info)); @@ -702,7 +702,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *= dev, return PTR_ERR(encoder); } =20 - rc =3D msm_hdmi_modeset_init(priv->hdmi, dev, encoder); + rc =3D msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder); if (rc) { DPU_ERROR("modeset_init failed for DP, rc =3D %d\n", rc); return rc; diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm= /disp/mdp4/mdp4_kms.c index 99ca1d6c54b2c24cde39de44bb55151576dbe188..2bb93754925c31f515a56b842da= 122a9e0376638 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -249,9 +249,9 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4= _kms, /* DTV can be hooked to DMA_E: */ encoder->possible_crtcs =3D 1 << 1; =20 - if (priv->hdmi) { + if (priv->kms->hdmi) { /* Construct bridge/connector for HDMI: */ - ret =3D msm_hdmi_modeset_init(priv->hdmi, dev, encoder); + ret =3D msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder); if (ret) { DRM_DEV_ERROR(dev->dev, "failed to initialize HDMI: %d\n", ret); return ret; @@ -263,7 +263,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4= _kms, /* only DSI1 supported for now */ dsi_id =3D 0; =20 - if (!priv->dsi[dsi_id]) + if (!priv->kms->dsi[dsi_id]) break; =20 encoder =3D mdp4_dsi_encoder_init(dev); @@ -277,7 +277,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4= _kms, /* TODO: Add DMA_S later? */ encoder->possible_crtcs =3D 1 << DMA_P; =20 - ret =3D msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder); + ret =3D msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, encoder); if (ret) { DRM_DEV_ERROR(dev->dev, "failed to initialize DSI: %d\n", ret); diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm= /disp/mdp5/mdp5_kms.c index 5a706be17e2e5af2148366eacdddb378b2f69dbd..87c2f7daa229dd936e0a43fd04e= 362b41a68478a 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -311,7 +311,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms, DRM_DEV_INFO(dev->dev, "Skipping eDP interface %d\n", intf->num); break; case INTF_HDMI: - if (!priv->hdmi) + if (!priv->kms->hdmi) break; =20 ctl =3D mdp5_ctlm_request(ctlm, intf->num); @@ -326,7 +326,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms, break; } =20 - ret =3D msm_hdmi_modeset_init(priv->hdmi, dev, encoder); + ret =3D msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder); break; case INTF_DSI: { @@ -334,14 +334,14 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_km= s, mdp5_cfg_get_hw_config(mdp5_kms->cfg); int dsi_id =3D get_dsi_id_from_intf(hw_cfg, intf->num); =20 - if ((dsi_id >=3D ARRAY_SIZE(priv->dsi)) || (dsi_id < 0)) { + if ((dsi_id >=3D ARRAY_SIZE(priv->kms->dsi)) || (dsi_id < 0)) { DRM_DEV_ERROR(dev->dev, "failed to find dsi from intf %d\n", intf->num); ret =3D -EINVAL; break; } =20 - if (!priv->dsi[dsi_id]) + if (!priv->kms->dsi[dsi_id]) break; =20 ctl =3D mdp5_ctlm_request(ctlm, intf->num); @@ -356,9 +356,10 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms, break; } =20 - ret =3D msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder); + ret =3D msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, encoder); if (!ret) - mdp5_encoder_set_intf_mode(encoder, msm_dsi_is_cmd_mode(priv->dsi[dsi_i= d])); + mdp5_encoder_set_intf_mode(encoder, + msm_dsi_is_cmd_mode(priv->kms->dsi[dsi_id])); =20 break; } diff --git a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c b/drivers/gp= u/drm/msm/disp/msm_disp_snapshot_util.c index 07a2c1e872193bc96172c84142bd4ecc93a95a1c..071bcdea80f7114308e5a1e1a98= 9ad0f064a09d2 100644 --- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c +++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c @@ -127,18 +127,18 @@ void msm_disp_snapshot_capture_state(struct msm_disp_= state *disp_state) priv =3D drm_dev->dev_private; kms =3D priv->kms; =20 - for (i =3D 0; i < ARRAY_SIZE(priv->dp); i++) { - if (!priv->dp[i]) + for (i =3D 0; i < ARRAY_SIZE(kms->dp); i++) { + if (!kms->dp[i]) continue; =20 - msm_dp_snapshot(disp_state, priv->dp[i]); + msm_dp_snapshot(disp_state, kms->dp[i]); } =20 - for (i =3D 0; i < ARRAY_SIZE(priv->dsi); i++) { - if (!priv->dsi[i]) + for (i =3D 0; i < ARRAY_SIZE(kms->dsi); i++) { + if (!kms->dsi[i]) continue; =20 - msm_dsi_snapshot(disp_state, priv->dsi[i]); + msm_dsi_snapshot(disp_state, kms->dsi[i]); } =20 if (kms->funcs->snapshot) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index ece184d20c0f8bffa3c2a48216015185d6cbc99e..acf126025f47589410a69e0b21c= 392854873d544 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -277,9 +277,7 @@ static int msm_dp_display_bind(struct device *dev, stru= ct device *master, struct drm_device *drm =3D priv->dev; =20 dp->msm_dp_display.drm_dev =3D drm; - priv->dp[dp->id] =3D &dp->msm_dp_display; - - + priv->kms->dp[dp->id] =3D &dp->msm_dp_display; =20 dp->drm_dev =3D drm; dp->aux->drm_dev =3D drm; @@ -313,7 +311,7 @@ static void msm_dp_display_unbind(struct device *dev, s= truct device *master, msm_dp_aux_unregister(dp->aux); dp->drm_dev =3D NULL; dp->aux->drm_dev =3D NULL; - priv->dp[dp->id] =3D NULL; + priv->kms->dp[dp->id] =3D NULL; } =20 static const struct component_ops msm_dp_display_comp_ops =3D { diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 2962158776135d6e3c5b119bf4341c135c8f5248..d8bb40ef820e2b8c8ac933ca01e= 1dc46f087a218 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -136,7 +136,7 @@ static int dsi_bind(struct device *dev, struct device *= master, void *data) msm_dsi->next_bridge =3D ext_bridge; } =20 - priv->dsi[msm_dsi->id] =3D msm_dsi; + priv->kms->dsi[msm_dsi->id] =3D msm_dsi; =20 return 0; } @@ -148,7 +148,7 @@ static void dsi_unbind(struct device *dev, struct devic= e *master, struct msm_dsi *msm_dsi =3D dev_get_drvdata(dev); =20 msm_dsi_tx_buf_free(msm_dsi->host); - priv->dsi[msm_dsi->id] =3D NULL; + priv->kms->dsi[msm_dsi->id] =3D NULL; } =20 static const struct component_ops dsi_ops =3D { diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdm= i.c index 248541ff449204c72cd444458dadb9ae4a0a53d1..9970176d74302964dc80e4eb5b9= 149161667cfc3 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -14,6 +14,7 @@ #include #include =20 +#include "msm_kms.h" #include "hdmi.h" =20 void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on) @@ -253,7 +254,7 @@ static int msm_hdmi_bind(struct device *dev, struct dev= ice *master, void *data) err =3D msm_hdmi_init(hdmi); if (err) return err; - priv->hdmi =3D hdmi; + priv->kms->hdmi =3D hdmi; =20 return 0; } @@ -263,12 +264,12 @@ static void msm_hdmi_unbind(struct device *dev, struc= t device *master, { struct msm_drm_private *priv =3D dev_get_drvdata(master); =20 - if (priv->hdmi) { - if (priv->hdmi->bridge) - msm_hdmi_hpd_disable(priv->hdmi); + if (priv->kms->hdmi) { + if (priv->kms->hdmi->bridge) + msm_hdmi_hpd_disable(priv->kms->hdmi); =20 - msm_hdmi_destroy(priv->hdmi); - priv->hdmi =3D NULL; + msm_hdmi_destroy(priv->kms->hdmi); + priv->kms->hdmi =3D NULL; } } =20 diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 09d5f57e9343cce404d4f8a3a6d8a285f662f60f..5ec129bf6a9c83ec8e3d5b66741= 1dd0917a76582 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -88,16 +88,6 @@ struct msm_drm_private { /* subordinate devices, if present: */ struct platform_device *gpu_pdev; =20 - /* possibly this should be in the kms component, but it is - * shared by both mdp4 and mdp5.. - */ - struct hdmi *hdmi; - - /* DSI is shared by mdp4 and mdp5 */ - struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT]; - - struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT]; - /* when we have more than one 'msm_gpu' these need to be an array: */ struct msm_gpu *gpu; =20 @@ -356,6 +346,7 @@ static inline const char *msm_dsi_get_te_source(struct = msm_dsi *msm_dsi) } #endif =20 +struct msm_dp; #ifdef CONFIG_DRM_MSM_DP int __init msm_dp_register(void); void __exit msm_dp_unregister(void); diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 26cbb662e7533fdfd55fb7f200b99c79c3fd3211..14762b39edca381c817fa509d0d= 1da6f535e5da7 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -131,6 +131,12 @@ struct msm_kms { const struct msm_kms_funcs *funcs; struct drm_device *dev; =20 + struct hdmi *hdmi; + + struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT]; + + struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT]; + /* irq number to be passed on to msm_irq_install */ int irq; bool irq_requested; --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 4806C1B0412 for ; Sat, 3 May 2025 07:17:23 +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=1746256646; cv=none; b=GPN5p8u26tbEOM6uWLnqvAoJJ3C+9RE229lI/bH7N4R1hvFNdG8xpQTGjTvquTV2kAvYO7SJOApTb8dcgbyQlz7yYivVKGod3py66S2lEwvn9v/lfthR6TsSv3bxHTaToRDPp5NcEL3eBLp3Nh3nC61/RYMxtP0AtpNC+4+Jlek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256646; c=relaxed/simple; bh=/CfZ3JVdieLRawFuuuWtMdMn25crFvhgWl3NQ/L97lI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VX6n6i/zOl4KDvhNXQISI0wlGzNlvHLprTyjSfJwegBJdphfKD7C6NVSJwApnwPV+ajt4cVGOExqo3lzAZnIih3C/JED46Gnc4ZJQZ+69rNzzjJuvAT4fMYnhZqTkm3UKFtNbK6FQVSlqf4tvnYAWw6XBbPDySrKnZ4nkt7cUTo= 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=dAnI290B; 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="dAnI290B" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5437HFhR016422 for ; Sat, 3 May 2025 07:17:23 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= Eic/j3udXgGjDEe50aB6TDhnyHwei1FJfflAUaczOYo=; b=dAnI290Bkom9o5yB PC0iFmMYBpaeijTj5iZn3IFfRwKn2pVDttDmxY9Gb/grvxkEtM3EKEkstlOpM6LK SLpdeqtMEVTSXWZbkM7pTTVrQVD6ZP1lMCOs6HXNQH6Wk/PPNnLF1/4yuCl23l/Z Lx+j+uLHhg65saFVWUCuNxX/xBD6FHQErDWuNKG3rpCsksmmcftrjmNNxNzDLj/0 kIPxA9jHyCddk69RW0webIA27XT5bDFC+bIxnjptk7ovSHsuhtsj2F4V/bGIaTye ChbLlSR1zIrN4E0hy3jz/jqWnaJ/Ec7ce21SQvagrddtk6oBEEFCtoBPvdWAjN2w h56e+g== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dafg09u4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:22 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-47b36edcdb1so4218851cf.2 for ; Sat, 03 May 2025 00:17:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256641; x=1746861441; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Eic/j3udXgGjDEe50aB6TDhnyHwei1FJfflAUaczOYo=; b=q8wuiPoMKv2nQ/cmsFRY59Q3f/x0hPIOUC+D80ElreE4VHlRxsmMFU7bUHcQ7tgaKq ZJyifR9qV6+usYkzRJWD5vH0Wy+4dDvQKGnqx+U9KJJ1zrwC+JlXc0eZFyV6vXNHHq+h Q/ynXD101YvMwhWaUD8gDBoHXWzd3nbHEwi7QI/gibIfleGX97Q21We9U+WPrW3exAg8 81SkKkXjCoeOEpgSQitYP4VepQtKlcY3BqK8VCJ5ZrK5IAPSPWwp4c0UTlSFoqTjjN0K BidWX8fteBagDGeiXvvQwr+NQ0do2H9jVj7NkaN9lT8Dox6IuTCYxTTY8gaHAYrNh1n8 Soxw== X-Forwarded-Encrypted: i=1; AJvYcCU2/CHLvg8W/tl5aKUDBn3xlrKy9bfrTj6Kp2xPfSu6Vbyml612CfpJrh0Zns259d1CkB5T1GLDEEexqSo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6vrXndWkdUyt0ZiNXMLD0GD40msQzGIc/OkB6uHrXcB0U+tdg YKrmg0tpWVmRfGH7H5hhe95P9HLDKtntvsyp/c1kR/x0pSRF2H7+qAN9rYUSGrrx+bbEWp7Jkj3 jE/lFk7ucSPdYJiqtwgwPF1C1cuzx+3Dl4RSFxECF8AYzrb1hPD5AuxhGx/w+49M= X-Gm-Gg: ASbGncuQS9U7VR7E/YBCxWZCUjjUMAaqeFdlhb2IG6I990DqwM1yoaoXYj+h3iHP1xC kwLz0U3vaMfXPLCUNMtfMfiRR7XFYpsDSfkcohdtXLDxhD6XFeKwt7UUs2ocA1+3lHDJzcGfTeb lwcuC95waDYnqvcdR6hOG1ACGIZK5Ii3bl2A4oVoKL4J4w9GgEB71pkw0fH/Om30iJawlthali1 VdcvmO8gySUOjGtiAuTp15OdO3D+N4wJAgpxHOIwbH4SNMeQjwV4t4e9mB5/G+7PMh+bX/+Rhd9 AiIBABanaJToTUipCa0pQ7ZdLdM0BXTxNyeevOGtPrhBHD6kGUNrIMN0zn2g2pNZ9w1+Dyc0Hov h7o47Hg3DfniuBnc3A2yP2Saz X-Received: by 2002:a05:622a:4205:b0:476:bb72:f429 with SMTP id d75a77b69052e-48e00e67b37mr1423661cf.42.1746256640598; Sat, 03 May 2025 00:17:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHFi9iE5siNXSAWoJayHqfK9ifKpwJX0bQOvaAnJKIlKJiVA+y26MQt+gB7sXm2Lkjn/SsngQ== X-Received: by 2002:a05:622a:4205:b0:476:bb72:f429 with SMTP id d75a77b69052e-48e00e67b37mr1423321cf.42.1746256640074; Sat, 03 May 2025 00:17:20 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:16 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:05 +0300 Subject: [PATCH v2 06/11] drm/msm: make it possible to disable KMS-related code. 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: <20250503-msm-gpu-split-v2-6-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=13609; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=/CfZ3JVdieLRawFuuuWtMdMn25crFvhgWl3NQ/L97lI=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLtViRWjNcfW+WWVmVzpUwGnuXstc4JiDKX1 //J20t/juGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7QAKCRCLPIo+Aiko 1cApCACZNiowU7WfsXlitheSPGuklhB/xfMYELhzZovEHBaVZpZ9pfuzg28gVliO/gC1Q19jFkA xqNx4jb8QXfBvG3Q94TB1x42eJziC/XrjyaZ3oCZH8+NmQyCIntK2g8XBA7g7xaBOjAf07MmO6N Pevcl+KF4OEaviLejPhFzrK8f7+MNEUz17PQA3Ri6IMeC1269F4CcVUok1os8R7Sq7IrxlduOHg 55n8K2jpPdP2zp38d2Eg+xM/cMLk0c+jsNGmkYj98Vaai83tgQQiBATvsHz6kzksweQn+R19i40 PNGGRMoxB5zXW1F8VEz4rfI4kkAu/6br7toV5P4Gf6dyHzBN X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: ADDPWw1DVYu149ir1FXS6_X002BPRUrH X-Proofpoint-ORIG-GUID: ADDPWw1DVYu149ir1FXS6_X002BPRUrH X-Authority-Analysis: v=2.4 cv=atqyCTZV c=1 sm=1 tr=0 ts=6815c302 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=HLjn-ILLvqAx_VdQRNoA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfX7r3L3QpAIvXx JwR9Sir73m0B4jOj2OIswXt3wYTrICDkhtwtya0HjDeg4mjJsU+SngGfpOSVRJgDM4INpt2da/c fu58rDQNkdyeaivJA1lw2+TSWzQGpyFr4qvRVI0o7CIMY836lKjeKEwxfg6fmHg02jFDpOaDsn8 tiW90DauD7vNRTDRhnu+UYT7olKmHLI8aIxNpNH2/iIKzrdGDQ/ghqidtVUclDSQHwmGEVr+Yvh nrdPC1nc+zHbkPayJ58eNgasi5Z12/lQED66AUz0Tr0IqMz08seJLgcZ3N0Wx/362jcpAtdWBpS Xs8Yr8IMHGKuJz8Q28Idgv5waSDg7lebqcva90qLGZ3Syctqe2ZhbeU1n0iBX1m/0Lzc+pawzEr ekUS8AEk82VMopK9dHn6N0c7K2IGqpvzy7YTotWMQ9uOjNGl+kOtUbTvgNZ+37BNRlCoTf9J X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 phishscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 mlxscore=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 If the Adreno device is used in a headless mode, there is no need to build all KMS components. Build corresponding parts conditionally, only selecting them if modeset support is actually required. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/Kconfig | 14 +++++ drivers/gpu/drm/msm/Makefile | 19 +++---- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 4 +- drivers/gpu/drm/msm/dp/dp_debug.c | 4 ++ drivers/gpu/drm/msm/msm_debugfs.c | 92 ++++++++++++++++++----------= ---- drivers/gpu/drm/msm/msm_drv.h | 10 +--- drivers/gpu/drm/msm/msm_kms.c | 6 +-- drivers/gpu/drm/msm/msm_kms.h | 30 +++++++++++ 8 files changed, 117 insertions(+), 62 deletions(-) diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index 7f127e2ae44292f8f5c7ff6a9251c3d7ec8c9f58..cada5832db3e894c9bae4c6b0c6= d935dbf5d933f 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -66,6 +66,14 @@ config DRM_MSM_VALIDATE_XML Validate XML files with register definitions against rules-fd schema. This option is mostly targeting DRM MSM developers. If unsure, say N. =20 +config DRM_MSM_KMS + def_bool n + depends on DRM_MSM + +config DRM_MSM_KMS_FBDEV + def_bool DRM_FBDEV_EMULATION + depends on DRM_MSM_KMS + config DRM_MSM_MDSS bool depends on DRM_MSM @@ -74,6 +82,7 @@ config DRM_MSM_MDSS config DRM_MSM_MDP4 bool "Enable MDP4 support in MSM DRM driver" depends on DRM_MSM + select DRM_MSM_KMS default y help Compile in support for the Mobile Display Processor v4 (MDP4) in @@ -84,6 +93,7 @@ config DRM_MSM_MDP5 bool "Enable MDP5 support in MSM DRM driver" depends on DRM_MSM select DRM_MSM_MDSS + select DRM_MSM_KMS default y help Compile in support for the Mobile Display Processor v5 (MDP5) in @@ -94,6 +104,7 @@ config DRM_MSM_DPU bool "Enable DPU support in MSM DRM driver" depends on DRM_MSM select DRM_MSM_MDSS + select DRM_MSM_KMS select DRM_DISPLAY_DSC_HELPER default y help @@ -104,6 +115,7 @@ config DRM_MSM_DPU config DRM_MSM_DP bool "Enable DisplayPort support in MSM DRM driver" depends on DRM_MSM + depends on DRM_MSM_KMS select DRM_DISPLAY_HDMI_AUDIO_HELPER select RATIONAL default y @@ -115,6 +127,7 @@ config DRM_MSM_DP config DRM_MSM_DSI bool "Enable DSI support in MSM DRM driver" depends on DRM_MSM + depends on DRM_MSM_KMS select DRM_PANEL select DRM_MIPI_DSI select DRM_DISPLAY_DSC_HELPER @@ -170,6 +183,7 @@ config DRM_MSM_DSI_7NM_PHY config DRM_MSM_HDMI bool "Enable HDMI support in MSM DRM driver" depends on DRM_MSM + depends on DRM_MSM_KMS default y select DRM_DISPLAY_HDMI_HELPER select DRM_DISPLAY_HDMI_STATE_HELPER diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile index 7a2ada6e2d74a902879e4f12a78ed475e5209ec2..7c4508f0e5c84914633f8f2d5dd= d04bd10e4d189 100644 --- a/drivers/gpu/drm/msm/Makefile +++ b/drivers/gpu/drm/msm/Makefile @@ -100,18 +100,15 @@ msm-display-$(CONFIG_DRM_MSM_DPU) +=3D \ msm-display-$(CONFIG_DRM_MSM_MDSS) +=3D \ msm_mdss.o \ =20 -msm-display-y +=3D \ +msm-display-$(CONFIG_DRM_MSM_KMS) +=3D \ disp/mdp_format.o \ disp/mdp_kms.o \ disp/msm_disp_snapshot.o \ disp/msm_disp_snapshot_util.o \ =20 msm-y +=3D \ - msm_atomic.o \ - msm_atomic_tracepoints.o \ msm_debugfs.o \ msm_drv.o \ - msm_fb.o \ msm_fence.o \ msm_gem.o \ msm_gem_prime.o \ @@ -122,21 +119,24 @@ msm-y +=3D \ msm_gpu_devfreq.o \ msm_io_utils.o \ msm_iommu.o \ - msm_kms.o \ msm_perf.o \ msm_rd.o \ msm_ringbuffer.o \ msm_submitqueue.o \ msm_gpu_tracepoints.o \ =20 -msm-$(CONFIG_DRM_FBDEV_EMULATION) +=3D msm_fbdev.o +msm-$(CONFIG_DRM_MSM_KMS) +=3D \ + msm_atomic.o \ + msm_atomic_tracepoints.o \ + msm_fb.o \ + msm_kms.o \ =20 -msm-display-$(CONFIG_DEBUG_FS) +=3D \ - dp/dp_debug.o +msm-$(CONFIG_DRM_MSM_KMS_FBDEV) +=3D msm_fbdev.o =20 msm-display-$(CONFIG_DRM_MSM_DP)+=3D dp/dp_aux.o \ dp/dp_catalog.o \ dp/dp_ctrl.o \ + dp/dp_debug.o \ dp/dp_display.o \ dp/dp_drm.o \ dp/dp_link.o \ @@ -159,7 +159,8 @@ msm-display-$(CONFIG_DRM_MSM_DSI_14NM_PHY) +=3D dsi/phy= /dsi_phy_14nm.o msm-display-$(CONFIG_DRM_MSM_DSI_10NM_PHY) +=3D dsi/phy/dsi_phy_10nm.o msm-display-$(CONFIG_DRM_MSM_DSI_7NM_PHY) +=3D dsi/phy/dsi_phy_7nm.o =20 -msm-y +=3D $(adreno-y) $(msm-display-y) +msm-y +=3D $(adreno-y) +msm-$(CONFIG_DRM_MSM_KMS) +=3D $(msm-display-y) =20 obj-$(CONFIG_DRM_MSM) +=3D msm.o =20 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm= /disp/dpu1/dpu_crtc.c index 0714936d883523e5c53bfb42f932234db76c58db..08ea11d452f2ea93fba8bdcc487= 385433e81d224 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -709,7 +709,7 @@ void dpu_crtc_frame_event_cb(struct drm_crtc *crtc, u32= event) fevent->event =3D event; fevent->crtc =3D crtc; fevent->ts =3D ktime_get(); - kthread_queue_work(priv->event_thread[crtc_id].worker, &fevent->work); + kthread_queue_work(priv->kms->event_thread[crtc_id].worker, &fevent->work= ); } =20 /** @@ -878,7 +878,7 @@ static void dpu_crtc_atomic_flush(struct drm_crtc *crtc, dev =3D crtc->dev; priv =3D dev->dev_private; =20 - if (crtc->index >=3D ARRAY_SIZE(priv->event_thread)) { + if (crtc->index >=3D ARRAY_SIZE(priv->kms->event_thread)) { DPU_ERROR("invalid crtc index[%d]\n", crtc->index); return; } diff --git a/drivers/gpu/drm/msm/dp/dp_debug.c b/drivers/gpu/drm/msm/dp/dp_= debug.c index 22fd946ee201397b72b43c8499714139deb7ba82..7835d93015b31a69aac824ca04d= c65b374546e5c 100644 --- a/drivers/gpu/drm/msm/dp/dp_debug.c +++ b/drivers/gpu/drm/msm/dp/dp_debug.c @@ -5,6 +5,8 @@ =20 #define pr_fmt(fmt)"[drm-dp] %s: " fmt, __func__ =20 +#ifdef CONFIG_DEBUG_FS + #include #include #include @@ -235,3 +237,5 @@ int msm_dp_debug_init(struct device *dev, struct msm_dp= _panel *panel, =20 return 0; } + +#endif diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_de= bugfs.c index 7ab607252d183f78b99c3a8b878c949ed5f99fec..2b12f2851fadbc3c924827e1157= 0352736869614 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -117,6 +117,36 @@ static const struct file_operations msm_gpu_fops =3D { .release =3D msm_gpu_release, }; =20 +#ifdef CONFIG_DRM_MSM_KMS +static int msm_fb_show(struct seq_file *m, void *arg) +{ + struct drm_info_node *node =3D m->private; + struct drm_device *dev =3D node->minor->dev; + struct drm_framebuffer *fb, *fbdev_fb =3D NULL; + + if (dev->fb_helper && dev->fb_helper->fb) { + seq_puts(m, "fbcon "); + fbdev_fb =3D dev->fb_helper->fb; + msm_framebuffer_describe(fbdev_fb, m); + } + + mutex_lock(&dev->mode_config.fb_lock); + list_for_each_entry(fb, &dev->mode_config.fb_list, head) { + if (fb =3D=3D fbdev_fb) + continue; + + seq_puts(m, "user "); + msm_framebuffer_describe(fb, m); + } + mutex_unlock(&dev->mode_config.fb_lock); + + return 0; +} + +static struct drm_info_list msm_kms_debugfs_list[] =3D { + { "fb", msm_fb_show }, +}; + /* * Display Snapshot: */ @@ -180,6 +210,27 @@ static const struct file_operations msm_kms_fops =3D { .release =3D msm_kms_release, }; =20 +static void msm_debugfs_kms_init(struct drm_minor *minor) +{ + struct drm_device *dev =3D minor->dev; + struct msm_drm_private *priv =3D dev->dev_private; + + drm_debugfs_create_files(msm_kms_debugfs_list, + ARRAY_SIZE(msm_kms_debugfs_list), + minor->debugfs_root, minor); + debugfs_create_file("kms", 0400, minor->debugfs_root, + dev, &msm_kms_fops); + + if (priv->kms->funcs->debugfs_init) + priv->kms->funcs->debugfs_init(priv->kms, minor); + +} +#else /* ! CONFIG_DRM_MSM_KMS */ +static void msm_debugfs_kms_init(struct drm_minor *minor) +{ +} +#endif + /* * Other debugfs: */ @@ -238,40 +289,11 @@ static int msm_mm_show(struct seq_file *m, void *arg) return 0; } =20 -static int msm_fb_show(struct seq_file *m, void *arg) -{ - struct drm_info_node *node =3D m->private; - struct drm_device *dev =3D node->minor->dev; - struct drm_framebuffer *fb, *fbdev_fb =3D NULL; - - if (dev->fb_helper && dev->fb_helper->fb) { - seq_printf(m, "fbcon "); - fbdev_fb =3D dev->fb_helper->fb; - msm_framebuffer_describe(fbdev_fb, m); - } - - mutex_lock(&dev->mode_config.fb_lock); - list_for_each_entry(fb, &dev->mode_config.fb_list, head) { - if (fb =3D=3D fbdev_fb) - continue; - - seq_printf(m, "user "); - msm_framebuffer_describe(fb, m); - } - mutex_unlock(&dev->mode_config.fb_lock); - - return 0; -} - static struct drm_info_list msm_debugfs_list[] =3D { {"gem", msm_gem_show}, { "mm", msm_mm_show }, }; =20 -static struct drm_info_list msm_kms_debugfs_list[] =3D { - { "fb", msm_fb_show }, -}; - static int late_init_minor(struct drm_minor *minor) { int ret; @@ -343,20 +365,12 @@ void msm_debugfs_init(struct drm_minor *minor) if (priv->gpu_pdev) msm_debugfs_gpu_init(minor); =20 - if (priv->kms) { - drm_debugfs_create_files(msm_kms_debugfs_list, - ARRAY_SIZE(msm_kms_debugfs_list), - minor->debugfs_root, minor); - debugfs_create_file("kms", S_IRUSR, minor->debugfs_root, - dev, &msm_kms_fops); - } + if (priv->kms) + msm_debugfs_kms_init(minor); =20 debugfs_create_file("shrink", S_IRWXU, minor->debugfs_root, dev, &shrink_fops); =20 - if (priv->kms && priv->kms->funcs->debugfs_init) - priv->kms->funcs->debugfs_init(priv->kms, minor); - fault_create_debugfs_attr("fail_gem_alloc", minor->debugfs_root, &fail_gem_alloc); fault_create_debugfs_attr("fail_gem_iova", minor->debugfs_root, diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 5ec129bf6a9c83ec8e3d5b667411dd0917a76582..f6b4c5e1dc3a18516e0e40703b2= 4d3ae37b7c35d 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -72,12 +72,6 @@ enum msm_dsi_controller { =20 #define MSM_GPU_MAX_RINGS 4 =20 -/* Commit/Event thread specific structure */ -struct msm_drm_thread { - struct drm_device *dev; - struct kthread_worker *worker; -}; - struct msm_drm_private { =20 struct drm_device *dev; @@ -167,8 +161,6 @@ struct msm_drm_private { struct mutex lock; } lru; =20 - struct msm_drm_thread event_thread[MAX_CRTCS]; - /* VRAM carveout, used when no IOMMU: */ struct { unsigned long size; @@ -261,7 +253,7 @@ struct drm_framebuffer *msm_framebuffer_create(struct d= rm_device *dev, struct drm_framebuffer * msm_alloc_stolen_fb(struct drm_device *dev, int w, int h, int p, uint32_t format); =20 -#ifdef CONFIG_DRM_FBDEV_EMULATION +#ifdef CONFIG_DRM_MSM_KMS_FBDEV int msm_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes); #define MSM_FBDEV_DRIVER_OPS \ diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 9dfe0fb4755ddd11277f524234297ccd5ea96001..ea133e50d0bfd2b2b60e5ceb37d= faf72f43a2828 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -246,8 +246,8 @@ void msm_drm_kms_uninit(struct device *dev) =20 /* clean up event worker threads */ for (i =3D 0; i < MAX_CRTCS; i++) { - if (priv->event_thread[i].worker) - kthread_destroy_worker(priv->event_thread[i].worker); + if (kms->event_thread[i].worker) + kthread_destroy_worker(kms->event_thread[i].worker); } =20 drm_kms_helper_poll_fini(ddev); @@ -300,7 +300,7 @@ int msm_drm_kms_init(struct device *dev, const struct d= rm_driver *drv) struct msm_drm_thread *ev_thread; =20 /* initialize event thread */ - ev_thread =3D &priv->event_thread[drm_crtc_index(crtc)]; + ev_thread =3D &kms->event_thread[drm_crtc_index(crtc)]; ev_thread->dev =3D ddev; ev_thread->worker =3D kthread_run_worker(0, "crtc_event:%d", crtc->base.= id); if (IS_ERR(ev_thread->worker)) { diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 14762b39edca381c817fa509d0d1da6f535e5da7..c15868bd380937d64455f9bf2d2= 571c7492396b4 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -13,6 +13,8 @@ =20 #include "msm_drv.h" =20 +#ifdef CONFIG_DRM_MSM_KMS + #define MAX_PLANE 4 =20 /* As there are different display controller blocks depending on the @@ -127,6 +129,12 @@ struct msm_pending_timer { unsigned crtc_idx; }; =20 +/* Commit/Event thread specific structure */ +struct msm_drm_thread { + struct drm_device *dev; + struct kthread_worker *worker; +}; + struct msm_kms { const struct msm_kms_funcs *funcs; struct drm_device *dev; @@ -161,6 +169,7 @@ struct msm_kms { struct msm_pending_timer pending_timers[MAX_CRTCS]; =20 struct workqueue_struct *wq; + struct msm_drm_thread event_thread[MAX_CRTCS]; }; =20 static inline int msm_kms_init(struct msm_kms *kms, @@ -210,4 +219,25 @@ void msm_drm_kms_post_init(struct device *dev); void msm_drm_kms_unregister(struct device *dev); void msm_drm_kms_uninit(struct device *dev); =20 +#else /* ! CONFIG_DRM_MSM_KMS */ + +static inline int msm_drm_kms_init(struct device *dev, const struct drm_dr= iver *drv) +{ + return -ENODEV; +} + +static inline void msm_drm_kms_post_init(struct device *dev) +{ +} + +static inline void msm_drm_kms_unregister(struct device *dev) +{ +} + +static inline void msm_drm_kms_uninit(struct device *dev) +{ +} + +#endif + #endif /* __MSM_KMS_H__ */ --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 4DF791A9B4D for ; Sat, 3 May 2025 07:17: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=1746256647; cv=none; b=RT67/IH/R4vLqh+7OjVYW1zyj8F7SwXwGpKY9sWbt93hS4RIBge2KOWQG5py3Q4J0wH06bTp9y1+UYDX+o8Uw5dQSQtXXtsEaGhV3QXI1Lah09QFhrF/CRZsioFs6wbOhTs3GllexTU3k3KgdVFt844bkas2klsGWNhw9jgQCvc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256647; c=relaxed/simple; bh=4jhdmFiEq7O5wiS7dzxOzMOcZAnlZvPI9pm8jbvDrqs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fjrjPL3oxU9QIxGSF8uZB4Z+mnxIAfZbVMXFmAOCfPk7rPn1vLBZ2UiRwjCx4iDWxkC+nz8tCy6cydiPZBmSAvSkbAmGVSu/H18lafTeXu5T2JCn96rgr+A15FmHBP2iXLBdQpWaLAxAUnK1dC3lpPn1pxOusU/ivZC5DgdFj40= 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=PII76OMp; 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="PII76OMp" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5435TI7Y014715 for ; Sat, 3 May 2025 07:17: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= 0RmOWcHlDb4JuPwd3mnRIUzvSzQKCWsI013jegbEojQ=; b=PII76OMpfzqp+kNR H1KCeXBRHPA+5TinzPfiVnrhHhVIaOZxxdGpww+VpB+smBUJAOAJzR0aDepNjm9D mceJ78WSGCONbVNybI0A+tpIkIKWJiNCfhA8Eyxl+lYLl1Hj0w898qgXjJWna90O Ei7E6If7gtlrLPgQ6P3NAIFrKH9PBLtp+mJMnNBK8KCDGGWAWr4kyHe1Uq+cogdC aVBOEPgXIvvezKFADjdwUmzdufd56K0MvrgshBBqEEqH+KQC/ogXdRympKuOBnyS l5yCVm1VkqBElnQV9E61Iw2yZ9YkKJ6Jzf9VORkMtPDgG8ND1fE/6DH97YTGel25 YmIDag== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46da3rrauu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:25 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c95556f824so269992085a.2 for ; Sat, 03 May 2025 00:17:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256644; x=1746861444; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0RmOWcHlDb4JuPwd3mnRIUzvSzQKCWsI013jegbEojQ=; b=q6mYBHAouTdnMrVyZlfw+PLaXTrDN0Nz2oIfMc6zF/zenMXLQbdN8rV1xWuP7aRU2W r0P2F092xjBaCTgAcLgN3zmCh4wkda35uknSJAkNT6qCWdPUtpuGh46iHyolW2UgQd4A Pp4DhfqPqzVrnmoo3WDHFoPRdG/gH/Qa0cXl4Jjm5aKm/84RCdXy8Ew18gjRe+30Odrm 24vdI23HA/V1yoegMwldPIxWy3MaS+MAVkV/T/DLxemhvPs9AVPo0jKJaOcvQH+Rznj6 bj8VXrvtst+IpbkROHrpzUW3OxxItiO+Hb0BllhTt2e3S9sgTU0mu+v1lr6TFG8AGz81 8zsw== X-Forwarded-Encrypted: i=1; AJvYcCV3aPrhaZBNy3Mypqo8RVHMckel6RyX9Q+dzFFpf5GsshyolmEsBFQ09nkGqdD3y3Vh5Oy547TP9xAt0sc=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4Eo0QfRjwJDSlUQehLpuYozmChIFLOFOEjneVEfdecovbkV2U A7LEgVapntlpY+rndBrmr6upqhVVa0HWoe2pm3wA6xQpHIHV1TwdI0WiPjH3zZAxaJ6u9j1nYx6 DeGhvBOica1or0nhLkbXx98m3H68ZLRPDf2btb3e/mUooDcn8AILjxbcS90x4uiM= X-Gm-Gg: ASbGncv4SEO1ljqxJ4l/LyihCf7Hx4sLhuTM4Etn5i+gDenRgZuuJN8GB95zEVitvFL pJAWhHgHdtQf/bipl8e05jqLD5OBTIYPeSR2ycTX97V1b+IcIwJ0HU2wHhMYOg4o0sDbEx4hEyV hx8Jumj8yjZAA1nBBUJ+e0v3FvtJsYWGdbryvi9rF/QDDCWNntDxTJyorbuU3TJ6eF1ur+4sYW2 u22gIuwoaEuM68uY5EKNH2wCEhfv2Cu5dDpZOoiJBMmCbOK2YZSnkgfzB5eeuqeaDy3MZXzoWvi Z5A2DEmDRsF6lu8/WlRAA7Nzehf09XUbEtPXQpF32a6PISyFl0qgFiWEFuglWnqHEXP+gTIf2j/ n4KikIfC4gc4JnSJTALDqjmzM X-Received: by 2002:a05:620a:2719:b0:7c5:602f:51fc with SMTP id af79cd13be357-7cae3aeaa91mr21906685a.44.1746256644097; Sat, 03 May 2025 00:17:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEluwg04CbYU6xEoatU5Dt5hvy8rinaHZ4poa8Dn2JpfGWo75ed5T3J4f8eCxRx49nLXCiU0A== X-Received: by 2002:a05:620a:2719:b0:7c5:602f:51fc with SMTP id af79cd13be357-7cae3aeaa91mr21905085a.44.1746256643689; Sat, 03 May 2025 00:17:23 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:20 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:06 +0300 Subject: [PATCH v2 07/11] drm/msm: bail out late_init_minor() if it is not a GPU device 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: <20250503-msm-gpu-split-v2-7-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=978; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=4jhdmFiEq7O5wiS7dzxOzMOcZAnlZvPI9pm8jbvDrqs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLu+17Rco3a06pKI7BQn1ru6TMWWZFqYNazM T8uCPw9PJCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7gAKCRCLPIo+Aiko 1Xr5B/kBNDSPeA14VAunste4r6LXFySKrVVlICap/DDhs5VZiXls4VX/FDXWmtBca/BKnyBJRUz 1w6s7lDSrMLpCY0xMDqEYvtjK/qPBbVqnyKeeKg6KvhKkSxgQ54woLxjwT6KSL06ljTeg4Y5+Nl Woj3Gag4JoT9tgaF191rS0idfRiYZ11FwKkZRp9VBKcQr/XEjn+WzSj/DR7+qYlawYV05qUlarX /y01lNGpXGDBeOHF+V/dOr1A85LfyVUjpMue+/y8aocy1qpgy4bOAJtsOn0tZth3Kwc2w2KG/yS j0GcRhUnIyptOLxXRDH1FHNEu1/WJtLy8b20IEJI36dBRRvb X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 0OUzzLsSK84RiISWBEgFfD9Je30DZS5D X-Authority-Analysis: v=2.4 cv=cpWbk04i c=1 sm=1 tr=0 ts=6815c305 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=blY4ScjC_F2vtqdRJt8A:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: 0OUzzLsSK84RiISWBEgFfD9Je30DZS5D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfXz3zMe5mEtzxX 05uJBXmsvTAKeJ9/EjCRSzCmYr36l3LCZLPaTM5zMlpM6lK3rnKYkoD3L1SRQKltg8brmzf+FER 6Lc4OkBd4gFY4oEJN1DQ6I+vPqQ4h8IclV0fZL8DuyDxR+yvS/srzmU7ZigoPDkCNGpdWeJq2w9 L+LJhsKWx9BUn6ci9XdjF0hwzUrKMdJamurTqaGJmUQBy5jHTnbDK9G8CfXa789EV1AtQAZmmqz HEuSnszUryMA2clR4Qfl0zezJcmj4Zuij1UPAOrVMoQ9ziAWVtjHBih29B+bQMFntmSplR/lGVu iLPSKl7kTe52V2Xg2hF4zn2knz0jHZC7rqc/5xpUCPetRG0ShV7HQ8Q26ogmKNbekn1tyUEVvkJ bdqSOM3JMfldFtAIVLTktL9qm3D2Lztwoqt+PAF2ifDaV8SP3POsMeUGm7QlyiygYAuDnAmf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 malwarescore=0 suspectscore=0 bulkscore=0 priorityscore=1501 mlxlogscore=999 clxscore=1015 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 Both perf and hangrd make sense only for GPU devices. Bail out if we are registering a KMS-only device. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_debugfs.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_de= bugfs.c index 2b12f2851fadbc3c924827e11570352736869614..6e60a74b13d72c47e45cb9dc65e= d67b977e900fa 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -296,11 +296,16 @@ static struct drm_info_list msm_debugfs_list[] =3D { =20 static int late_init_minor(struct drm_minor *minor) { + struct drm_device *dev =3D minor->dev; + struct msm_drm_private *priv =3D dev->dev_private; int ret; =20 if (!minor) return 0; =20 + if (!priv->gpu_pdev) + return 0; + ret =3D msm_rd_debugfs_init(minor); if (ret) { DRM_DEV_ERROR(minor->dev->dev, "could not install rd debugfs\n"); --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 6635B1D516F for ; Sat, 3 May 2025 07:17:28 +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=1746256650; cv=none; b=TiIthuXS0kPcZvwqwIn3UMJJu2AJESmKmPUMiRyblMw6i/kV8p7NuvLhBQXGWhgBbN6k2S8e1qpi1FMEb/aXJLSLj5k7vWMTnjsdjUg21MKEjDACHDigj1Q+nX4X+n+bgSmxdGQ4qlT3hoD34yF6dpFMCSDuoi1OfD4ZiAnS0/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256650; c=relaxed/simple; bh=1CGQPf555qFJU/R7NQ3znd/IF9NZR/aTxcJ4mydnTq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eCtVeKA1CyyNy0Z7+KakOLxNNEpEbfDWugd2+KkJ7tplynYbncHbDB4PdUqZ5BfmVTTgk59bMNUWgs24leiUKpJV3rGWBkFP7qQ8zkdFk42YIicuxG1ry+vi5vj0fC8Fw6q6NoAi7GFTsKi60HZfdZtWsO2yXE1bIoXKhdbP7Qs= 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=m0DKXqSm; 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="m0DKXqSm" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5433S2KY024496 for ; Sat, 3 May 2025 07:17:27 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= PidCDaupyEMEwIHIG1xvK2j20VbRhsyPW2bIrlAsTDc=; b=m0DKXqSm6EyfaLu/ aYULsLAbxD6xsr8J0khOtrg/r6TS9wBbgmx1O5oBRtjc/rP/H2iThpYEyWv7Jg8r PzFCnUyrxyDGl8NYCZ9fUBH/kVlf1HjM67qz8M33uMcoKkQ7lV5dmHro8w1hcK54 4ulb/K1pkzIFP4JMdXd3lXkJtiDrPoLeCdqBHKEZcRg/E/XU7I2vC1w6YyhEHl+c 0HFzkpnKoQs4qsw+VRdyYr6mtql3+vXsfDYiuwEEl+nhpqJyx+USTTXiAvY/wBoy VfqEE8IjVndeQSCu2zw9CXMg6IrygxhY+sHmDy3G2PWbPu3ZlA/6JiYSzARUNNd5 MJvW3w== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46daqxg93r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:27 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-6e91d8a7165so49477976d6.0 for ; Sat, 03 May 2025 00:17:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256646; x=1746861446; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PidCDaupyEMEwIHIG1xvK2j20VbRhsyPW2bIrlAsTDc=; b=p225bmLIijQrz6b34Idy574DRkGIGrA7WbKwBuNmL3PBhbRSmP+jx9IcD68EOFdmCA My78T7wtGDrRpoU52jUNJtWFWz/fkyob1wzxCEMBYp/d5Ix95xADrpHV38J3C/vvfH/+ 9AAeHxgw4JsVICPx0AasNqG+DgaoxQebfCOwXo3VI11FF0fah+xhbWfFT5Wr3WT/ItCp n9r0rCp6ZsB4y8rM/JqSzASWjYVY7we4iTp/pS3QWEqbeU1tppRlN5rQiSmRCnajqx4Z TVL7yfsr4/wyrA/68/MGHL7oKLvMuRhiZM5p9xhYAWl2Pl9eKv28T/Qdi3aISVClBWt7 uWCg== X-Forwarded-Encrypted: i=1; AJvYcCX9jPxWqyk3/W9fDuUl24uYOmWl/5nsfDULdvr4Kt8ef/frPDChIs/ZE30daPQR9MrdGlS5vSYUn0vwi3E=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6amIBdWN+iqZ3lVVqaFNr1Tiqf4vD35KjsjIVSsrYtHMKbzO4 kM1e7OcfNoM0z8sqjOytlxkCR8ZvJcGVWvPD42p2Rp9ON/n2iTXcIM/zt7tg944qIJWrbinYpeZ xbVCNEEoVGP7W/GvAZP0YIyl/eP6j0F3SkaSV44f8k902Sjtky+gJSV4CdVUVb3I= X-Gm-Gg: ASbGncvkF/qXZoAlDeEKUvPqmhyLQOdM7Qs6IQT2br4c/HimxeNK+iktIOGTK1VX8L1 W60OWqEO87wLLnNOZv7Y8YAKv3hoSPalVlnjvYA4vV96cDMxKDT8ASdeRARMacZp7r3mHOL4bEx uwFe73+naPGjDvOPMbNbP+ASLzY9Zgo9exgNy67uv2owgCUkWZderMYdxQw6QRPEES1NmML0g20 oxDN/Xx2LWu7n/0Kx3xZwMhhIPtVAQ1+BRSMxxsh0sXuqv/EkTaO8r8gevPC8GgerCjzesO2Ggx JGmy9kJIlIn4FB6eudh/POIxJ1a+MYrJ/1HsASZtkPDQn2bNgb87aee/NP7NPIF/jfwfYLqmawU 3P6MCLXMgBFwcVScOxQyL/Pa0 X-Received: by 2002:a05:6214:2129:b0:6e8:9021:9095 with SMTP id 6a1803df08f44-6f5237fbbb1mr27600676d6.32.1746256646236; Sat, 03 May 2025 00:17:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEpB3pHTIUqZGcsBp0Il5fJqaHfOAUEGlJgoPXLApyd6X97N7fzz6CuVAEWn767gkXc6Hk4BA== X-Received: by 2002:a05:6214:2129:b0:6e8:9021:9095 with SMTP id 6a1803df08f44-6f5237fbbb1mr27600466d6.32.1746256645925; Sat, 03 May 2025 00:17:25 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:24 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:07 +0300 Subject: [PATCH v2 08/11] drm/msm: rearrange symbol selection 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: <20250503-msm-gpu-split-v2-8-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1838; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=1CGQPf555qFJU/R7NQ3znd/IF9NZR/aTxcJ4mydnTq0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLuBMMn4ItSbf332XStKlW35YGuLZVxWVA8m 25P9Ac1XzKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7gAKCRCLPIo+Aiko 1dtxB/42QE9ea3mH4vZB5MqtG3+5CAfJWvYdq5Uau9Gm5ZB0YuiFOpwCgBvNwzk+ecvA6/grL4e Ennjfd1ZhPjowB1gdRAPbNturCs6p70ZK9avu4lTx7KkdsdwK0GQ2OVYxRiUWDUgPFTW+4i3GZe C0G4hiUkCoZ6fzWHddY98lM1VcZBVNA7/GvULRuc/tiFn6X6nSoJ6qnGwqLOsKOhr372i+QNz5P 8NKNh1G2j2ahLeI6lkyFnq4fWEu2riXsU5WB20ZQEPptG60ZP6VbPwk7q5PCQwqnqjQX6SAXR66 DtOgoZ7koBsXNNQ9I8KvhvQhqLOsgI7VjgKYsuLdoiwcNMQv X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: awyt-BWfz6d2amK_QIol3IxY5pGJ9qpQ X-Proofpoint-ORIG-GUID: awyt-BWfz6d2amK_QIol3IxY5pGJ9qpQ X-Authority-Analysis: v=2.4 cv=baZrUPPB c=1 sm=1 tr=0 ts=6815c307 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=Dibrpul-hQ8xFFu5PoYA:9 a=0W9TD_AsGAYKDBPL:21 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MSBTYWx0ZWRfX5DBE0jGTEIRY NZR8sYVtNE6l3dRggPHylXNerQknFepE2cHQsGu0SJcwVwU7VD8DLdHTUQ2DH7PiIbZJjmEAHyL I6Qnt6h61nhRSxKxpmqNKx+s7B5lgWztL1RZXo4C0lQPJi/46MPsf4mJh3SiXTdbDlPdkvGmfqM hgH+h8J02c0xJyjRI2NYbvNkPLvQq7Fqwf5SwgC+LI6mnLplQSml24MXy9zPluDLuVWnEaHlwl3 dfFl/2pKWbqFzoJQGtE9m4kuRTeVb0BhD3p6hbp7RbASk+zbtGMP93v8QSMAgCUdLn5zI3T+V60 SsRSX/IlQ3SGvomJAVdhtjuc7TXQkWGgC3eA5wcs8fPCqRkhY87MyFrBfY6sftt8oVxCUcdA6qs tEI2IqkDy8xSVRliF9FNGPhtf5cTTYdfnyfqB0/bUv8Bq4Wx9/uVmWyFhthskBmz9ts20fnG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 clxscore=1015 suspectscore=0 spamscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030061 Move symbol selection to be more fine grained: select DP helpers only if DP driver is also enabled, move KMS and display helpers to the newly introduced DRM_MSM_KMS. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/Kconfig | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index cada5832db3e894c9bae4c6b0c6d935dbf5d933f..f6360931ae55a2923264f0e6cc3= 3c6af0d50c706 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -15,18 +15,8 @@ config DRM_MSM select IOMMU_IO_PGTABLE select QCOM_MDT_LOADER if ARCH_QCOM select REGULATOR - select DRM_CLIENT_SELECTION - select DRM_DISPLAY_DP_AUX_BUS - select DRM_DISPLAY_DP_HELPER - select DRM_DISPLAY_HELPER - select DRM_BRIDGE_CONNECTOR select DRM_EXEC - select DRM_KMS_HELPER - select DRM_PANEL - select DRM_BRIDGE - select DRM_PANEL_BRIDGE select DRM_SCHED - select FB_SYSMEM_HELPERS if DRM_FBDEV_EMULATION select SHMEM select TMPFS select QCOM_SCM @@ -69,10 +59,18 @@ config DRM_MSM_VALIDATE_XML config DRM_MSM_KMS def_bool n depends on DRM_MSM + select DRM_BRIDGE + select DRM_BRIDGE_CONNECTOR + select DRM_CLIENT_SELECTION + select DRM_DISPLAY_HELPER + select DRM_KMS_HELPER + select DRM_PANEL + select DRM_PANEL_BRIDGE =20 config DRM_MSM_KMS_FBDEV def_bool DRM_FBDEV_EMULATION depends on DRM_MSM_KMS + select FB_SYSMEM_HELPERS =20 config DRM_MSM_MDSS bool @@ -118,6 +116,8 @@ config DRM_MSM_DP depends on DRM_MSM_KMS select DRM_DISPLAY_HDMI_AUDIO_HELPER select RATIONAL + select DRM_DISPLAY_DP_AUX_BUS + select DRM_DISPLAY_DP_HELPER default y help Compile in support for DP driver in MSM DRM driver. DP external --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 4F4681B0421 for ; Sat, 3 May 2025 07:17:46 +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=1746256668; cv=none; b=aDVEe8VYLdYaa8g+R56lstlpTtEeFIKPYt2uMMr7Z9VR8HaWar2BVFS1mGiM/x/N58flyxoFKSR46thIuDzsnsLujZ7Zahyax6UyKNQMR8jysBhRr8p1zldyDtFIducTdh4qKR727xF0MWBAgaXL9RX4CTsW8j1RlN8EtY+vOV4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256668; c=relaxed/simple; bh=LygQOxLEQsPD0oOqeYPZ0TpNniR5HQkElGX4sNXvTkw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y21uH30AT8/+YtmVHdwWCyAnNG5/B0Za/3G5v6wBfjNdw9JmzOc6F61PD5nLlHYje/ehnTzefh1Oux6iyTPdWHF2rsSQF/ar/AvM4VVJnB1yEi3e8J5ewVTvmXHx6zcj8INzs86nE/qzL9HNh+vuIuQcYS7IjZNjv+fCjxs8x5U= 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=ALe8Dcqd; 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="ALe8Dcqd" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5436S7FI020152 for ; Sat, 3 May 2025 07:17:45 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= FjWHORKehJBI8n1hI3yF8rZTWsoCKV6hCnRHxz0Vk+w=; b=ALe8Dcqd+LnzAGCv JX43vDb6czVQIJrkOpOJBK+y4xuMCRWJB/Lm8R3wB1H/ilV19gaTcdrtcuwyrw7R /JSWkW7GaCOKgymc+tooo7JrNXUnJPaKhvBC6Eg7gn0wydQtAQE5/f3UXCMvh7hf vGGlrMgSY9Rzo+rYFH1FxtpY3aNqiZ7i0DBgYGpNk8unpaVwFAhODvfMCCnXljCt 7RyxxO4nnEliDL2HflNnakmogIgvnhorcCLMWW8AgfC4zQShRrfVIy0AxVoell2u DoYRZsXbqcTBjIedBYzgvSkQugktzSHSySOc8FFX9eljfEEA6VV+8wn922Pna7Ko HCWxRw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dbwfg6cs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:45 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4766afee192so15760421cf.0 for ; Sat, 03 May 2025 00:17:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256650; x=1746861450; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FjWHORKehJBI8n1hI3yF8rZTWsoCKV6hCnRHxz0Vk+w=; b=nn0NEdkUFAOfalf4F9F+gYvaGMBo0kp5KGVwi/cDJOP3mcDraqbzwui6y4ER52Bt6k mLr/S7cpwMHCbI5fdDvl1LMBaYLXpP4XPVeEeQ6jvksrCEmxZPwiDyYrmslsb70Xej7/ dClEq3TIvtAilzG4R64NrspapH4+te/6DKMeHudWur+KUQkEwM/BLG3FFnvZAWPx1PUm 8yViUPfMsjDXKlUbjDuUjcQ/Mr5hnYeoCGAFjPY5XwYzksI11uoEw6h5bZyr9KMsFwNr +t5msMU6Q+Y4JbJDMagtqTJXy1pUZ1+DptUEpw5jHD/bcEHuaSBS9gg1fj7MmdeeQKOO DZuw== X-Forwarded-Encrypted: i=1; AJvYcCXTtVH+niQth3JVHY1zikCP4eTZ0EaGp6uz/7HLRNVDHezgithXhmkZ57EOy67dzQZpHAAy0v/OclFItiQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxbsvZfBo/ymRDvGP3DW5qvS2wyVwd2NXBnf2YwNUAbJWNp8aTi DI9DTdmquRHI7RMKMwRokAUE0znXo7uZ0IynJFzTGgPuF18e9FBOVpUBad+GQV2ACDfB/wrLtm4 B2OGK+iqclnjy7FZYreunlO/qIt0q9NO7sgGfAKH1ClSblni88/ZCAb2UjBM1nXw= X-Gm-Gg: ASbGncu2mhERFsbmf0TgVEiaSUW8qB/lLiMbA1Ag74Boj67qjv3ufbNfq0s2BiGDd3m erbmSiHhdNKej6LBP/YQgs11ZoM5ZzHQA9mkcSF2+k8g3OKdrJHHKf6x5oSbaYTg6/jE9SGbrBk iQFwPhs638p5yVScQ4n1Pc+tzV4NJS8PYQbitcTitpV3ULwWECBLAYnTOBb1Tw/JzrvCv5mdJsc 2N/fVOZEU0GbtiKQ+7yvm8jowCC4ce7ozmTO2ynkBI+30myXJAzEYN30uI5raxJ5iVZhkiH0zdZ A3SsmreJqKmZxjzXkUpJsxxbtVYkBxQTymuJHFMEtq406z2XGvrZ6IhGb99T1o3ZAle/ujVHMx0 bG6sdfL0rFbW3NhJ2a7TQgP5M X-Received: by 2002:a05:622a:22a7:b0:476:97d3:54f with SMTP id d75a77b69052e-48dff4de974mr1620481cf.14.1746256649913; Sat, 03 May 2025 00:17:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG1bzAAdQlXhBzA5PTRId/zIWytzDLkPwsjKAlBtMNTIcrcDvoywr254sWtwJFp/iqar13fZg== X-Received: by 2002:a05:622a:22a7:b0:476:97d3:54f with SMTP id d75a77b69052e-48dff4de974mr1620231cf.14.1746256649610; Sat, 03 May 2025 00:17:29 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:27 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:08 +0300 Subject: [PATCH v2 09/11] drm/msm: rework binding of Imageon GPUs 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: <20250503-msm-gpu-split-v2-9-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8539; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=LygQOxLEQsPD0oOqeYPZ0TpNniR5HQkElGX4sNXvTkw=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ4booXccTgyqU9uqPO7yxuZXOEpuavKdezmDO/35IpcZW suz9vZ1MhqzMDByMciKKbL4FLRMjdmUHPZhx9R6mEGsTCBTGLg4BWAirbrs/2vbHMPmpH88qxut yDf50ppFZzLMlVo2dfxyXVb+tt7Fe3/t4Zqd0v12R5u26324+P3mv+vyHpcbv8wokxGsK4rQ3PF F0+ZVitsErb9/dwvP6nixPebNj6w3bV7JJRWVibW5F9k1S98/ZpolWiF8uKvkxZGpL/aLvW8xfr 0iurfStH/ZpLDsZ835ce8zslnTv76/0NqkLHZjjcyyBtUDz1dFO+1dly39LuejzcrVW7rOd7cyJ tf5urFJdFxbEJsXUtBV+Oqh2lPnBzJezjKvGF5xuhQskxP/fp/NSe6yLHf944azVeouasp9rz14 yl5rJf26nudqkF3RcOqghOFjn0Lu9wYKEv6bNJ72nygBAA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: JiyvaENi_7ofEZ-f6vmlF0zjdhWF5Umo X-Proofpoint-GUID: JiyvaENi_7ofEZ-f6vmlF0zjdhWF5Umo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MiBTYWx0ZWRfX9WT0ZiYv13kp ePOEp6VbdpeUoNlyWnAlGbliuqH6/RqN6jSVMIckqZmYNKey6O3GWBAw8Mu5rebtYcD4KxtkMJl jrETUI7fvFmfoUhc16ZGzGWPxDVR/psNu8CxIVe3lIh1yEU3aHJhw11sOJoaISEcRqWfinMHvlA eVZKsgN9izZnU8EtACHew9N1pwgh4PsvzYroob1PgMWRU5zrVDn8s6qO7LDHIdyNUJ1BTR7xgIt yP1QQ8jKTqDQ/52ANh1afxFZEE5DCWU69XCMaqGl38kZPljvFxkKO3rI/JdcUPLOoAMXZEnEy03 gSKXf1l4d3hmKk+U0aGkdqb6mu2YwnwQvfrDyQsg68tuYvEVqbeFSrYpvYax1CiZjzydlbOJtfN tlKV8IydCT25A94qAWwpAcgid/XuzW81gr+eo1qlcA47I1Klp7KzbsQNTBVyr08HLTq5YBS1 X-Authority-Analysis: v=2.4 cv=AfqxH2XG c=1 sm=1 tr=0 ts=6815c319 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=WrGWoQF6NLblfNs28g4A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030062 Currently the msm driver creates an extra interim platform device for Imageon GPUs. This is not ideal, as the device doesn't have corresponding OF node. If the headless mode is used for newer GPUs, then the msm_use_mmu() function can not detect corresponding IOMMU devices. Also the DRM device (although it's headless) is created with modesetting flags being set. To solve all these issues, rework the way the Imageon devices are bound. Remove the interim device, don't register a component and instead use a cut-down version of the normal functions to probe or remove the driver. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/adreno/adreno_device.c | 36 +++--------- drivers/gpu/drm/msm/msm_drv.c | 91 ++++++++++++++++++++------= ---- drivers/gpu/drm/msm/msm_drv.h | 4 ++ 3 files changed, 72 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index 236b25c094cd5d462f4b6653de7b7910985cccb6..325cb710ea08ac8e5c3d9c80c8d= 8e18e1946e994 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -241,42 +241,22 @@ static const struct component_ops a3xx_ops =3D { .unbind =3D adreno_unbind, }; =20 -static void adreno_device_register_headless(void) -{ - /* on imx5, we don't have a top-level mdp/dpu node - * this creates a dummy node for the driver for that case - */ - struct platform_device_info dummy_info =3D { - .parent =3D NULL, - .name =3D "msm", - .id =3D -1, - .res =3D NULL, - .num_res =3D 0, - .data =3D NULL, - .size_data =3D 0, - .dma_mask =3D ~0, - }; - platform_device_register_full(&dummy_info); -} - static int adreno_probe(struct platform_device *pdev) { - - int ret; - - ret =3D component_add(&pdev->dev, &a3xx_ops); - if (ret) - return ret; - if (of_device_is_compatible(pdev->dev.of_node, "amd,imageon")) - adreno_device_register_headless(); + return msm_gpu_probe(pdev, &a3xx_ops); =20 - return 0; + return component_add(&pdev->dev, &a3xx_ops); } =20 static void adreno_remove(struct platform_device *pdev) { - component_del(&pdev->dev, &a3xx_ops); + struct msm_drm_private *priv =3D platform_get_drvdata(pdev); + + if (priv->kms_init) + component_del(&pdev->dev, &a3xx_ops); + else + msm_gpu_remove(pdev, &a3xx_ops); } =20 static void adreno_shutdown(struct platform_device *pdev) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 2c6997c85fbbc3767315ca3a166a99b322f1218a..804b594ba1e7df9d9aec53a9be1= 451f1167fc77a 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -62,7 +62,7 @@ module_param(modeset, bool, 0600); DECLARE_FAULT_ATTR(fail_gem_alloc); DECLARE_FAULT_ATTR(fail_gem_iova); =20 -static int msm_drm_uninit(struct device *dev) +static int msm_drm_uninit(struct device *dev, const struct component_ops *= gpu_ops) { struct platform_device *pdev =3D to_platform_device(dev); struct msm_drm_private *priv =3D platform_get_drvdata(pdev); @@ -91,7 +91,10 @@ static int msm_drm_uninit(struct device *dev) =20 msm_deinit_vram(ddev); =20 - component_unbind_all(dev, ddev); + if (gpu_ops) + gpu_ops->unbind(dev, dev, NULL); + else + component_unbind_all(dev, ddev); =20 ddev->dev_private =3D NULL; drm_dev_put(ddev); @@ -200,7 +203,8 @@ static void msm_deinit_vram(struct drm_device *ddev) attrs); } =20 -static int msm_drm_init(struct device *dev, const struct drm_driver *drv) +static int msm_drm_init(struct device *dev, const struct drm_driver *drv, + const struct component_ops *gpu_ops) { struct msm_drm_private *priv =3D dev_get_drvdata(dev); struct drm_device *ddev; @@ -247,7 +251,10 @@ static int msm_drm_init(struct device *dev, const stru= ct drm_driver *drv) dma_set_max_seg_size(dev, UINT_MAX); =20 /* Bind all our sub-components: */ - ret =3D component_bind_all(dev, ddev); + if (gpu_ops) + ret =3D gpu_ops->bind(dev, dev, NULL); + else + ret =3D component_bind_all(dev, ddev); if (ret) goto err_deinit_vram; =20 @@ -259,11 +266,6 @@ static int msm_drm_init(struct device *dev, const stru= ct drm_driver *drv) ret =3D msm_drm_kms_init(dev, drv); if (ret) goto err_msm_uninit; - } else { - /* valid only for the dummy headless case, where of_node=3DNULL */ - WARN_ON(dev->of_node); - ddev->driver_features &=3D ~DRIVER_MODESET; - ddev->driver_features &=3D ~DRIVER_ATOMIC; } =20 ret =3D drm_dev_register(ddev, 0); @@ -280,7 +282,7 @@ static int msm_drm_init(struct device *dev, const struc= t drm_driver *drv) return 0; =20 err_msm_uninit: - msm_drm_uninit(dev); + msm_drm_uninit(dev, gpu_ops); =20 return ret; =20 @@ -896,6 +898,28 @@ static const struct drm_driver msm_driver =3D { .patchlevel =3D MSM_VERSION_PATCHLEVEL, }; =20 +static const struct drm_driver msm_gpu_driver =3D { + .driver_features =3D DRIVER_GEM | + DRIVER_RENDER | + DRIVER_SYNCOBJ_TIMELINE | + DRIVER_SYNCOBJ, + .open =3D msm_open, + .postclose =3D msm_postclose, + .gem_prime_import_sg_table =3D msm_gem_prime_import_sg_table, +#ifdef CONFIG_DEBUG_FS + .debugfs_init =3D msm_debugfs_init, +#endif + .show_fdinfo =3D msm_show_fdinfo, + .ioctls =3D msm_ioctls, + .num_ioctls =3D ARRAY_SIZE(msm_ioctls), + .fops =3D &fops, + .name =3D "msm", + .desc =3D "MSM Snapdragon DRM", + .major =3D MSM_VERSION_MAJOR, + .minor =3D MSM_VERSION_MINOR, + .patchlevel =3D MSM_VERSION_PATCHLEVEL, +}; + /* * Componentized driver support: */ @@ -1020,12 +1044,12 @@ static int add_gpu_components(struct device *dev, =20 static int msm_drm_bind(struct device *dev) { - return msm_drm_init(dev, &msm_driver); + return msm_drm_init(dev, &msm_driver, NULL); } =20 static void msm_drm_unbind(struct device *dev) { - msm_drm_uninit(dev); + msm_drm_uninit(dev, NULL); } =20 const struct component_master_ops msm_drm_ops =3D { @@ -1074,29 +1098,34 @@ int msm_drv_probe(struct device *master_dev, return 0; } =20 -/* - * Platform driver: - * Used only for headlesss GPU instances - */ - -static int msm_pdev_probe(struct platform_device *pdev) +int msm_gpu_probe(struct platform_device *pdev, + const struct component_ops *ops) { - return msm_drv_probe(&pdev->dev, NULL, NULL); + struct msm_drm_private *priv; + int ret; + + priv =3D devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + platform_set_drvdata(pdev, priv); + + /* on all devices that I am aware of, iommu's which can map + * any address the cpu can see are used: + */ + ret =3D dma_set_mask_and_coherent(&pdev->dev, ~0); + if (ret) + return ret; + + return msm_drm_init(&pdev->dev, &msm_gpu_driver, ops); } =20 -static void msm_pdev_remove(struct platform_device *pdev) +void msm_gpu_remove(struct platform_device *pdev, + const struct component_ops *ops) { - component_master_del(&pdev->dev, &msm_drm_ops); + msm_drm_uninit(&pdev->dev, ops); } =20 -static struct platform_driver msm_platform_driver =3D { - .probe =3D msm_pdev_probe, - .remove =3D msm_pdev_remove, - .driver =3D { - .name =3D "msm", - }, -}; - static int __init msm_drm_register(void) { if (!modeset) @@ -1111,13 +1140,13 @@ static int __init msm_drm_register(void) adreno_register(); msm_mdp4_register(); msm_mdss_register(); - return platform_driver_register(&msm_platform_driver); + + return 0; } =20 static void __exit msm_drm_unregister(void) { DBG("fini"); - platform_driver_unregister(&msm_platform_driver); msm_mdss_unregister(); msm_mdp4_unregister(); msm_dp_unregister(); diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index f6b4c5e1dc3a18516e0e40703b24d3ae37b7c35d..e7d8715bc61ccdee822bc6a1a0b= 0bbe7c8ff3552 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -532,6 +532,10 @@ extern const struct component_master_ops msm_drm_ops; int msm_kms_pm_prepare(struct device *dev); void msm_kms_pm_complete(struct device *dev); =20 +int msm_gpu_probe(struct platform_device *pdev, + const struct component_ops *ops); +void msm_gpu_remove(struct platform_device *pdev, + const struct component_ops *ops); int msm_drv_probe(struct device *dev, int (*kms_init)(struct drm_device *dev), struct msm_kms *kms); --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 D50871A76AE for ; Sat, 3 May 2025 07:17:44 +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=1746256666; cv=none; b=tEp0+ytEdSIr8YlmYJq5AJ3dPafwtaA2qkTJY+ASsdVIkVFJPiJrcc+wPn65vcsNKgeAxNwbLOWpN1LoFb7RhT2dLzu4Ee+kkq+vP8sysPnfEag3BdVbvKpTF0wHgglYWUP3GdiNj+vvMjgthGknIuty/xzc8aiOjVPiMGREwm4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256666; c=relaxed/simple; bh=Mg4Q92qhb1QoXFerPIZAI3leBVJXb5Fy5IUO22wVyOs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kvW5Oc2URK/4vBHb54ST3jI2Y6CoAL6UAeiEk6jXYVIEP/Iwzab9TdhdOp3TY453lZ2xNv6HZXX+J+NQ7hpnYBAhk1cyUDHKVbt5MoKjZZeFzUClq2BRyIBTyh3XePvQ4M9IHfynvkBll2tgKCFjBKu8ce0J+zg4J/yLT3BFcX4= 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=HxNZR0LE; 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="HxNZR0LE" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5436E5Ng007801 for ; Sat, 3 May 2025 07:17:44 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= bVrQEbWdpGXkYntxxR8pnnrniy2aRqMQ+FcBVLkbpZ8=; b=HxNZR0LECU6iOe18 qDDw0nGD0zQEu2OK7euapznuO8FlcHjoqy+Hlwq0/2nxqABkooy/yBFSHUCaMo/F tboNEtQ695V6rY6c3h7tdVmhll1+D5BT42hkC1T27BjNx3VKo4eGGf9gLuDRDQ8Q VNUW8sJAqLsGwOATdc9qZxCBFtP7yOXi83qgXl+qnpdvS7c+/oQk7+KDAxkIZ9Ri 1G7Xk99NS3Pzb6gkB2Z1ZU9IFDb3mD0xNaWWxS+CNheschcq4SytGU1OoMvuq4cF M+32W1G1fRc+M+xPCWzj+JTGjKhw0hpPeJtMyZYvP2l99iVjmwv74OTLiQpbgyQk iK402A== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46dcakg5fn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:43 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-6eeb5e86c5fso32517066d6.1 for ; Sat, 03 May 2025 00:17:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256652; x=1746861452; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bVrQEbWdpGXkYntxxR8pnnrniy2aRqMQ+FcBVLkbpZ8=; b=q0B1VYuoExfMl3JbpxuDuVoCzGmA8yMt9qJUJZThwu55nCJE88+PK507U9XUIJNCyU uMLy6yKSR5QbOiAp7j21hZ16mjyybklLjAgz+UUvVl/34ZSFGsINWI8vymYlH8YS4eSO bt/yJr3oA+HCySjuwExjEan+KG1rww2yDDY01lwWmvXPBCJW4bQr8vv3Zw5J2odpk74f o3u/Xxh86+0Aui9WJfb0YIwaD5i9R1ZFJqZef2cexClUTnZWODGtbib7IpKXSg7BM90V 6JbdB4auzfqE1QK9UktqLcsISddiq5FSDmHr6mcsh/j+bia/vQH0ywLBtl9C7HHUg25C YOFQ== X-Forwarded-Encrypted: i=1; AJvYcCXmfl+G2JYD5yY7mlD9mApjeisiqcjJ8cE/lSi1OSlyzzKyc3ny+HrSjx16dgFtVoTPMDJT4/tTxFFjxAA=@vger.kernel.org X-Gm-Message-State: AOJu0YwE+lay2kjPdG24lD0rzi/5y+YWo3d8bPeQN7xlu4wtdZLprkDn ByUrypFYocTYY4L4ubDXubEHUXD1qG54OZYb0Yk/YwM77h1Y/SIrBZitUBpBt/g9WlbYDPnCnOD VzxRH/YxHHU97EpjsQn9PTFiONwWkMiU8wu91VN2PeEi5t+XQzlrvEAh39g8F9rc= X-Gm-Gg: ASbGncsrMbNuWyATo+jqxPCvIKrtJO9r2cB14Xl+Xire85XGtI2wKNUrRcOf/v44AZR SZit6DmX3/aW+vIcyC1fOAzGaYc5WjQwyrsCSFRyNBih8MUN+zE/nISypQEEKzYMl+f6UN47KRi kVCdWpbGkh3csxHbVHRJeWMivSX+3Vyj1+KUiOnASj0upQUmVd+F2AAgzsYAKUM/SZMrTGxahvH gtOfpdsekiU0IAfprWq3c7LUT5fHFgv3aca+3L7mslvRLAXUh4yeW54FeGPSIxc/tTCXGEZSMhl 92xhgpABpEGOG9oLl4rQ0gYzLzIyJu3u35oZEud9d9z9HHUXTOWn0n7xNvD4lKZcczjQkteDYwP sSkbfyAf+fU3k2xU4QaCHgtmg X-Received: by 2002:ad4:5d4a:0:b0:6e8:fe16:4d4f with SMTP id 6a1803df08f44-6f528c9a8abmr1930046d6.26.1746256652422; Sat, 03 May 2025 00:17:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG7OWwx1vio0cEX4R//GXWxkEhzXX84Pz7RG1tdPHWRA3tDj/+yhSs/WEkfqPOMkY9QKyR5Uw== X-Received: by 2002:ad4:5d4a:0:b0:6e8:fe16:4d4f with SMTP id 6a1803df08f44-6f528c9a8abmr1929766d6.26.1746256652052; Sat, 03 May 2025 00:17:32 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:29 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:09 +0300 Subject: [PATCH v2 10/11] drm/msm: enable separate binding of GPU and display devices 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: <20250503-msm-gpu-split-v2-10-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5275; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Mg4Q92qhb1QoXFerPIZAI3leBVJXb5Fy5IUO22wVyOs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLulU4MAR5JJFmdZHKUjMa+tYfEqfs/IbHf2 rgvJ9g446qJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7gAKCRCLPIo+Aiko 1WR1CAClpicrOysCcP+BXUVafnKUgkx73xXz2cxoG5q5SyyX+dJjus4krAWHaz65/JIKvwp3yzy 7lnMMblIYkq3i7DJ8vS+HrQNeFOkdTEUKmtJYk4lQRKqUJFyD95VYhIbNqhZ+20F/ZJXgN7ZjjG +cOg4ZzmZvld/eR9pSXHpwkk40CWEqYLPcze9FMO5EbceQ66Z9m98Nxo3nWsh/b93G+mlSVyuOE zg45Blv5D/jZ1eylSD2L+Hh3/vW+aDdP1WmJsUHD3vZevVTQYnqtLYcmOTFV3zIPCAQFhZwsNg4 KxIlyX4hz126U3P5BlCU3hROfqoaitEOs8mkGH/JWvyfssRp X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MiBTYWx0ZWRfXzZPisK60sr64 w0NPP0oRd5GOYBK2LJSr5ivTnZcXKclWZbRFxJG1x2foXOZ+to1aceyKJHn0POUqx9FH/qFT25A eGJIRPUZP1Aa/J9xwSU2rGAHhjJ1mMzHB5UdiVPnKjamcLvNd5dLqC+VRSSZwsTg6rmkHxbY7lb 3jk0TA4nmL4Y6uvHo/5d9phUxUjKMlbtpZ7UbY3tw2O56X7TKi8UDLKv8Dk+Cf7bpPrv2jDy+e7 e7ISTPu8Tm8QtkG8OKdRDtRQKE85J7LTA3dyunH043NpmLbfWpIRZgTf4rF/4OznexjzYOh6lTp futZfkMZXly0QIrOhx/oRXTZRf/+sbsbZKgBgcO8oxMttCi0oCYXDlZPtzBi34D4JLyPaTYCFdT h1gIcoTDGzqe11A663RRjW3kc8eAZUD13yRUwfo0Rh+qvMXqtIxUQ956Gp/Dbxgi9m3g2uw6 X-Proofpoint-ORIG-GUID: X3kZVFlEF90pAxtOp9Uw27iOXwMspDkT X-Authority-Analysis: v=2.4 cv=JtvxrN4C c=1 sm=1 tr=0 ts=6815c317 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=d3EbUlffPpwbv2rupc8A:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-GUID: X3kZVFlEF90pAxtOp9Uw27iOXwMspDkT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 bulkscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030062 There are cases when we want to have separate DRM devices for GPU and display pipelines. One example is development, when it is beneficial to be able to bind the GPU driver separately, without the display pipeline (and without the hacks adding "amd,imageon" to the compatible string). Another example is some of Qualcomm platforms, which have two MDSS units, but only one GPU. With current approach it is next to impossible to support this usecase properly, while separate binding allows users to have three DRM devices: two for MDSS units and a single headless GPU. Add kernel param msm.separate_gpu_drm, which if set to true forces creation of separate display and GPU DRM devices. Mesa supports this setup by using the kmsro wrapper. The param is disabled by default, in order to be able to test userspace for the compatibility issues. Simple clients are able to handle this setup automatically. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/adreno/adreno_device.c | 3 +- drivers/gpu/drm/msm/msm_drv.c | 49 ++++++++++++++++++++++++++= +--- drivers/gpu/drm/msm/msm_drv.h | 2 ++ 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index 325cb710ea08ac8e5c3d9c80c8d8e18e1946e994..2322a3301a5226c4e2590344e47= 44934addeea33 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -243,7 +243,8 @@ static const struct component_ops a3xx_ops =3D { =20 static int adreno_probe(struct platform_device *pdev) { - if (of_device_is_compatible(pdev->dev.of_node, "amd,imageon")) + if (of_device_is_compatible(pdev->dev.of_node, "amd,imageon") || + msm_gpu_no_components()) return msm_gpu_probe(pdev, &a3xx_ops); =20 return component_add(&pdev->dev, &a3xx_ops); diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 804b594ba1e7df9d9aec53a9be1451f1167fc77a..eec7501eb05b6c31ffd9dc5a7ba= 430e3284ea5ed 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -59,9 +59,18 @@ static bool modeset =3D true; MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=3Don (default),= 0=3Ddisable)"); module_param(modeset, bool, 0600); =20 +static bool separate_gpu_drm; +MODULE_PARM_DESC(separate_gpu_drm, "Use separate DRM device for the GPU (0= =3Dsingle DRM device for both GPU and display (default), 1=3Dtwo DRM device= s)"); +module_param(separate_gpu_drm, bool, 0400); + DECLARE_FAULT_ATTR(fail_gem_alloc); DECLARE_FAULT_ATTR(fail_gem_iova); =20 +bool msm_gpu_no_components(void) +{ + return separate_gpu_drm; +} + static int msm_drm_uninit(struct device *dev, const struct component_ops *= gpu_ops) { struct platform_device *pdev =3D to_platform_device(dev); @@ -898,6 +907,32 @@ static const struct drm_driver msm_driver =3D { .patchlevel =3D MSM_VERSION_PATCHLEVEL, }; =20 +static const struct drm_driver msm_kms_driver =3D { + .driver_features =3D DRIVER_GEM | + DRIVER_ATOMIC | + DRIVER_MODESET | + DRIVER_SYNCOBJ_TIMELINE | + DRIVER_SYNCOBJ, + .open =3D msm_open, + .postclose =3D msm_postclose, + .dumb_create =3D msm_gem_dumb_create, + .dumb_map_offset =3D msm_gem_dumb_map_offset, + .gem_prime_import_sg_table =3D msm_gem_prime_import_sg_table, +#ifdef CONFIG_DEBUG_FS + .debugfs_init =3D msm_debugfs_init, +#endif + MSM_FBDEV_DRIVER_OPS, + .show_fdinfo =3D msm_show_fdinfo, + .ioctls =3D msm_ioctls, + .num_ioctls =3D ARRAY_SIZE(msm_ioctls), + .fops =3D &fops, + .name =3D "msm-kms", + .desc =3D "MSM Snapdragon DRM", + .major =3D MSM_VERSION_MAJOR, + .minor =3D MSM_VERSION_MINOR, + .patchlevel =3D MSM_VERSION_PATCHLEVEL, +}; + static const struct drm_driver msm_gpu_driver =3D { .driver_features =3D DRIVER_GEM | DRIVER_RENDER | @@ -1044,7 +1079,11 @@ static int add_gpu_components(struct device *dev, =20 static int msm_drm_bind(struct device *dev) { - return msm_drm_init(dev, &msm_driver, NULL); + return msm_drm_init(dev, + msm_gpu_no_components() ? + &msm_kms_driver : + &msm_driver, + NULL); } =20 static void msm_drm_unbind(struct device *dev) @@ -1080,9 +1119,11 @@ int msm_drv_probe(struct device *master_dev, return ret; } =20 - ret =3D add_gpu_components(master_dev, &match); - if (ret) - return ret; + if (!msm_gpu_no_components()) { + ret =3D add_gpu_components(master_dev, &match); + if (ret) + return ret; + } =20 /* on all devices that I am aware of, iommu's which can map * any address the cpu can see are used: diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index e7d8715bc61ccdee822bc6a1a0b0bbe7c8ff3552..1ff799f0c78133e73c6857e3692= c2dca2c5e60fa 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -543,4 +543,6 @@ void msm_kms_shutdown(struct platform_device *pdev); =20 bool msm_disp_drv_should_bind(struct device *dev, bool dpu_driver); =20 +bool msm_gpu_no_components(void); + #endif /* __MSM_DRV_H__ */ --=20 2.39.5 From nobody Wed Dec 17 07:25:46 2025 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 5EB127083A for ; Sat, 3 May 2025 07:17:41 +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=1746256663; cv=none; b=W9DqdhOfPRRfo25UbQ1ezz+emkHhF3TNYJXDhcQxDsSFeHwhaU6/0O4qq6QdMp1425dAoRdklg00955Q9qiL/9/Xbae+00gszihhQbOW9Wp48bVBkPciOEsVbpmvD2zZ/MMr2/DbE6D6uN83fe0gI2YvZcu0khkzCVUEr9TVi9A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746256663; c=relaxed/simple; bh=JLs/KKCCJ5cFFV4YZHdaRKFpe+QlwFO5L5IsxuDoYMA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oTz3YLjbAnvVUZOLsJDMMI8fC59xPm3aVdsP7RuXrBdzIkxgaGZtyi00Hz2dZpMXFmQ9msKEIemX6Xc1vJ89Wi/IEMIaiQT/C1UK9bL/M0AEASnjSSUEMqsSeiYFHMbB0+ZFN1Nu3donWfyE+olY8hKmkfAoZ4bVU6r/dbvZC10= 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=nrBqsGiF; 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="nrBqsGiF" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5435p2VC022957 for ; Sat, 3 May 2025 07:17:41 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= lSJKkDkoSWE8nhkAgT4eH2XDgxhrq4hNsHec/iGqYag=; b=nrBqsGiFNdzRKvJ6 RKqbzU66SJAiqkBistUISM4ZklLV1IYs9kDTTIj3tZ/X5TA6/L9Ugffstny9gK0M aNFFY59M7lYZ0fUSvAgnXNeRPxIEY3saCvtykuPwCnsShxB6ILTeFk0vdqNFeUe7 8LDHVWeQ65nEX8qgQjNMVXv8e3gUfi3WQ5Wq7fnsSZyhRzQiEprBER4vjL+4KtDR JW/H0ZPteRhL4W/5QVGOeqTqXrSsA6W3mABsS1UCeDyhPUEihz4Jt6jF/1ySb3+x XfUHJT6HRaimd5o7A8koXiAW8B1hR5qbsJB41e1j3dvtc/xTzkJ86D68cKER7mPb rDN9HA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46da3rrava-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 03 May 2025 07:17:40 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4768656f608so58055881cf.1 for ; Sat, 03 May 2025 00:17:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746256654; x=1746861454; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lSJKkDkoSWE8nhkAgT4eH2XDgxhrq4hNsHec/iGqYag=; b=lKpU7XBAspkW2dBmeE80pXNGp9+CYe3fOzo5cDC8oy5ZPa3xrc+Jct/7Id1ZV7aZ42 Kfd/7rUIcAybly0iiMMJbkyoYH0T3agglxcYe2klYJqM1K5n7TTdMXkgaoytyfX4Oehp o7R1kHltvdREcWRyBsgCwFMitzUAejfgNK/lDI37ZztBIxayH6BgltHp1ZChSQy5vvBy 9VGr/1ZSixeEUj+G38wAaV1MpPKy8z04sol6oELBtoHbfqvgHQEx9JM/rKg6RMig/jCD LDTYB+PO5evDpNIPdBJmjWHNBNPi157YoF/JLQ8hygCgm5MxJGT1PFQJHE6FnSl/Woo/ khig== X-Forwarded-Encrypted: i=1; AJvYcCWOLSwJADPiN5n6NF4onebrLaBAItw/zlgJEQ+iUUxqGoJco8wVS3yzucgIOPYBm1wH6bdQb1uu8uXrXRA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3rKgGLqLRKjBy5qD9P3xjyEYHu0vCmQkFMS6d+keT0JvofsI5 BsOh/4QUs1M4ZSASFYX3n+UgAwcfNuTw5I/rzJ5T7H+MHlhBz6Y+V8lmaNvDGwHgDMdAXIbhBoV Wc/K/o69/fnM3NKod4XQXIxBiApfADVES3/RGhL1ojPLiTIcjYT5leU70Dc8Ki14= X-Gm-Gg: ASbGnctQ97udlUgx0AT1mL5M7pee8IQNsiEq2uVORn2e8NnLftpZy+H+C2btzAmo6Fa RR4mO3snjGVgK2dIsPeggStjZ293CevNLDLRY7Zj04rPRDo267Qvxyu3tfvEPhmCTmI08+BuFng AjuBWL4Htjg+wLvnRGvfx0W5fdvikVWvXcwMSL+n77I7BcLMOA0lQVpmL9gggJwcbP8uVIlU9Xm b6NAn+IXrAaZa+fhWwQCdPlcqSrcqHPPYIlYlCupJV39VbO/olprootWf6MN3pCzNSaRQay2IBP ar0WFKNdMJxFx7jYs/4wyJ3ye00h5fgWdA0y56dap53YrUeQdRlD0crUd/MC5dB8Nr77ryr8alf 0uoCac+ILZ19/l7dcsqRcopmw X-Received: by 2002:a05:622a:48a:b0:48c:a62c:756b with SMTP id d75a77b69052e-48dffec0d5emr1317031cf.25.1746256653912; Sat, 03 May 2025 00:17:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLn6+yFYRF3qywhMHziWbwDigx46MW1YhSgbGnrfve/PE/e5AYsNCMtHmHg2jIwJui/E2g1g== X-Received: by 2002:a05:622a:48a:b0:48c:a62c:756b with SMTP id d75a77b69052e-48dffec0d5emr1316791cf.25.1746256653473; Sat, 03 May 2025 00:17:33 -0700 (PDT) Received: from umbar.lan (2001-14ba-a0c3-3a00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a0c3:3a00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94c5557sm692816e87.84.2025.05.03.00.17.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:17:32 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 03 May 2025 10:17:10 +0300 Subject: [PATCH v2 11/11] drm/msm: make it possible to disable GPU support 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: <20250503-msm-gpu-split-v2-11-1292cba0f5ad@oss.qualcomm.com> References: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> In-Reply-To: <20250503-msm-gpu-split-v2-0-1292cba0f5ad@oss.qualcomm.com> To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Konrad Dybcio 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.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=17562; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=JLs/KKCCJ5cFFV4YZHdaRKFpe+QlwFO5L5IsxuDoYMA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBoFcLuxuPDXZzVzosLuL/vLNXb/1dtSylSV1sf5 /a1U5joChuJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaBXC7gAKCRCLPIo+Aiko 1ehHCACCF8dITwCywmDwwOXMhLHC/QUy8u3zPeUxW+Hxd9ncwXyEfPiPYdIXDuYi5bUl4zPoFTu jTiJQVoP2lc35oHzs9Yapym22h1CDK0V67LfyXejg38VNF7p745fUse6N9EQ6ROBQcTt1V0BC0K cuKWXy8FxOafcRCjKOquOEi4GGhye8h5QIIEVEPFOq4YntUwR1/6tJLAjdfFWbT9IWR3/wIH0it WmZqdBEhPx+gIsn3796QIhNPpOzLbJ3XQPjrK1I1+AX+0JCGGGO0d1kelwxvwL9xpspRPre6odt 5GRd7rrQJZk0yrMYBZQ71oeZeyIR8ew1CtX2f3BgaqlByzmH X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: _XjDXSH4JmJaAAWbY0IwXM24q3Gi1JCk X-Authority-Analysis: v=2.4 cv=cpWbk04i c=1 sm=1 tr=0 ts=6815c314 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=XsBGUjEGan8I8CB0Vl8A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: _XjDXSH4JmJaAAWbY0IwXM24q3Gi1JCk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTAzMDA2MiBTYWx0ZWRfX53iOOPdEsC9O FxJ7krBJolZn+2aOpPYc5FoI/kfEgaIzUPK9XSWmJFDQH4vsPjqwpPcDDoPdjAT7a14G1bBmjZ1 vAKl0Vq9GsrukTROK5yg8dPalNrZGUKkQcbknIni+c28tPHpIJsL+uws6tuf4oabnFN6aHNl7e6 kizkSMkIJwipQzxF0lwBGJoepYjp4WgMV2lz2OBcpu2exjKzY2uKFc/RZf5Ar/zU3+Mfcokw8im QwVq5BcT+q3Ed9SLLY4ZP2P3vP7VIMZzw9qbonaT08j6IpKvA5VCbQFpI+CqYaYZ4DO7ahazzaK fGH3inF3aW2nE9aZXsIs8CjjG5VM/eJdoblfqcR025b5cNGah4znJAMtR0wjr2ciorFybbtmCP/ IZZZS9zl1oGTdCzKRl3eF2XAJt5huLToCSNvdP00yPk+Zww8U5hQg4V/74x/f8s6gAvKzfr3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-03_03,2025-04-30_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 malwarescore=0 suspectscore=0 bulkscore=0 priorityscore=1501 mlxlogscore=999 clxscore=1015 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505030062 Some of the platforms don't have onboard GPU or don't provide support for the GPU in the drm/msm driver. Make it possible to disable the GPU part of the driver and build the KMS-only part. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/Kconfig | 20 +++-- drivers/gpu/drm/msm/Makefile | 14 ++-- drivers/gpu/drm/msm/msm_debugfs.c | 135 ++++++++++++++++++------------= ---- drivers/gpu/drm/msm/msm_drv.c | 37 ++++++++-- drivers/gpu/drm/msm/msm_drv.h | 3 + drivers/gpu/drm/msm/msm_gpu.h | 71 +++++++++++++++--- drivers/gpu/drm/msm/msm_submitqueue.c | 12 +-- 7 files changed, 191 insertions(+), 101 deletions(-) diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index f6360931ae55a2923264f0e6cc33c6af0d50c706..5605d2bc93a8ad9cb33afcb8ca9= da44c68250620 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -15,29 +15,37 @@ config DRM_MSM select IOMMU_IO_PGTABLE select QCOM_MDT_LOADER if ARCH_QCOM select REGULATOR - select DRM_EXEC - select DRM_SCHED select SHMEM select TMPFS select QCOM_SCM select WANT_DEV_COREDUMP select SND_SOC_HDMI_CODEC if SND_SOC - select SYNC_FILE select PM_OPP - select NVMEM select PM_GENERIC_DOMAINS select TRACE_GPU_MEM help DRM/KMS driver for MSM/snapdragon. =20 +config DRM_MSM_ADRENO + bool "Qualcomm Adreno GPU support" + default y + depends on DRM_MSM + select DRM_EXEC + select DRM_SCHED + select NVMEM + select SYNC_FILE + help + Enable support for the GPU present on most of Qualcomm Snapdragon + SoCs. If you are unsure, say Y. + config DRM_MSM_GPU_STATE bool - depends on DRM_MSM && (DEBUG_FS || DEV_COREDUMP) + depends on DRM_MSM_ADRENO && (DEBUG_FS || DEV_COREDUMP) default y =20 config DRM_MSM_GPU_SUDO bool "Enable SUDO flag on submits" - depends on DRM_MSM && EXPERT + depends on DRM_MSM_ADRENO && EXPERT default n help Enable userspace that has CAP_SYS_RAWIO to submit GPU commands diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile index 7c4508f0e5c84914633f8f2d5ddd04bd10e4d189..6a24f78d7fc51cc1c9cd706d746= cabd5f567d282 100644 --- a/drivers/gpu/drm/msm/Makefile +++ b/drivers/gpu/drm/msm/Makefile @@ -109,21 +109,23 @@ msm-display-$(CONFIG_DRM_MSM_KMS) +=3D \ msm-y +=3D \ msm_debugfs.o \ msm_drv.o \ - msm_fence.o \ msm_gem.o \ msm_gem_prime.o \ msm_gem_shrinker.o \ - msm_gem_submit.o \ msm_gem_vma.o \ - msm_gpu.o \ - msm_gpu_devfreq.o \ msm_io_utils.o \ msm_iommu.o \ + msm_gpu_tracepoints.o \ + +msm-$(CONFIG_DRM_MSM_ADRENO) +=3D \ + msm_fence.o \ + msm_gem_submit.o \ + msm_gpu.o \ + msm_gpu_devfreq.o \ msm_perf.o \ msm_rd.o \ msm_ringbuffer.o \ msm_submitqueue.o \ - msm_gpu_tracepoints.o \ =20 msm-$(CONFIG_DRM_MSM_KMS) +=3D \ msm_atomic.o \ @@ -159,7 +161,7 @@ msm-display-$(CONFIG_DRM_MSM_DSI_14NM_PHY) +=3D dsi/phy= /dsi_phy_14nm.o msm-display-$(CONFIG_DRM_MSM_DSI_10NM_PHY) +=3D dsi/phy/dsi_phy_10nm.o msm-display-$(CONFIG_DRM_MSM_DSI_7NM_PHY) +=3D dsi/phy/dsi_phy_7nm.o =20 -msm-y +=3D $(adreno-y) +msm-$(CONFIG_DRM_MSM_ADRENO) +=3D $(adreno-y) msm-$(CONFIG_DRM_MSM_KMS) +=3D $(msm-display-y) =20 obj-$(CONFIG_DRM_MSM) +=3D msm.o diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_de= bugfs.c index 6e60a74b13d72c47e45cb9dc65ed67b977e900fa..fa9a94a86d060e28d4ee93fda1f= 22924fd5af606 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -20,6 +20,7 @@ #include "msm_debugfs.h" #include "disp/msm_disp_snapshot.h" =20 +#ifdef CONFIG_DRM_MSM_ADRENO /* * GPU Snapshot: */ @@ -117,6 +118,76 @@ static const struct file_operations msm_gpu_fops =3D { .release =3D msm_gpu_release, }; =20 +static void msm_debugfs_gpu_init(struct drm_minor *minor) +{ + struct drm_device *dev =3D minor->dev; + struct msm_drm_private *priv =3D dev->dev_private; + struct dentry *gpu_devfreq; + + debugfs_create_file("gpu", 0400, minor->debugfs_root, + dev, &msm_gpu_fops); + + debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root, + &priv->hangcheck_period); + + debugfs_create_bool("disable_err_irq", 0600, minor->debugfs_root, + &priv->disable_err_irq); + + gpu_devfreq =3D debugfs_create_dir("devfreq", minor->debugfs_root); + + debugfs_create_bool("idle_clamp", 0600, gpu_devfreq, + &priv->gpu_clamp_to_idle); + + debugfs_create_u32("upthreshold", 0600, gpu_devfreq, + &priv->gpu_devfreq_config.upthreshold); + + debugfs_create_u32("downdifferential", 0600, gpu_devfreq, + &priv->gpu_devfreq_config.downdifferential); +} + +static int late_init_minor(struct drm_minor *minor) +{ + struct drm_device *dev =3D minor->dev; + struct msm_drm_private *priv =3D dev->dev_private; + int ret; + + if (!minor) + return 0; + + if (!priv->gpu_pdev) + return 0; + + ret =3D msm_rd_debugfs_init(minor); + if (ret) { + DRM_DEV_ERROR(minor->dev->dev, "could not install rd debugfs\n"); + return ret; + } + + ret =3D msm_perf_debugfs_init(minor); + if (ret) { + DRM_DEV_ERROR(minor->dev->dev, "could not install perf debugfs\n"); + return ret; + } + + return 0; +} + +int msm_debugfs_late_init(struct drm_device *dev) +{ + int ret; + + ret =3D late_init_minor(dev->primary); + if (ret) + return ret; + ret =3D late_init_minor(dev->render); + return ret; +} +#else /* ! CONFIG_DRM_MSM_ADRENO */ +static void msm_debugfs_gpu_init(struct drm_minor *minor) +{ +} +#endif /* CONFIG_DRM_MSM_ADRENO */ + #ifdef CONFIG_DRM_MSM_KMS static int msm_fb_show(struct seq_file *m, void *arg) { @@ -294,70 +365,6 @@ static struct drm_info_list msm_debugfs_list[] =3D { { "mm", msm_mm_show }, }; =20 -static int late_init_minor(struct drm_minor *minor) -{ - struct drm_device *dev =3D minor->dev; - struct msm_drm_private *priv =3D dev->dev_private; - int ret; - - if (!minor) - return 0; - - if (!priv->gpu_pdev) - return 0; - - ret =3D msm_rd_debugfs_init(minor); - if (ret) { - DRM_DEV_ERROR(minor->dev->dev, "could not install rd debugfs\n"); - return ret; - } - - ret =3D msm_perf_debugfs_init(minor); - if (ret) { - DRM_DEV_ERROR(minor->dev->dev, "could not install perf debugfs\n"); - return ret; - } - - return 0; -} - -int msm_debugfs_late_init(struct drm_device *dev) -{ - int ret; - ret =3D late_init_minor(dev->primary); - if (ret) - return ret; - ret =3D late_init_minor(dev->render); - return ret; -} - -static void msm_debugfs_gpu_init(struct drm_minor *minor) -{ - struct drm_device *dev =3D minor->dev; - struct msm_drm_private *priv =3D dev->dev_private; - struct dentry *gpu_devfreq; - - debugfs_create_file("gpu", S_IRUSR, minor->debugfs_root, - dev, &msm_gpu_fops); - - debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root, - &priv->hangcheck_period); - - debugfs_create_bool("disable_err_irq", 0600, minor->debugfs_root, - &priv->disable_err_irq); - - gpu_devfreq =3D debugfs_create_dir("devfreq", minor->debugfs_root); - - debugfs_create_bool("idle_clamp",0600, gpu_devfreq, - &priv->gpu_clamp_to_idle); - - debugfs_create_u32("upthreshold",0600, gpu_devfreq, - &priv->gpu_devfreq_config.upthreshold); - - debugfs_create_u32("downdifferential",0600, gpu_devfreq, - &priv->gpu_devfreq_config.downdifferential); -} - void msm_debugfs_init(struct drm_minor *minor) { struct drm_device *dev =3D minor->dev; diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index eec7501eb05b6c31ffd9dc5a7ba430e3284ea5ed..f12549ebfc83fe35de12b48c30a= 3da3f7035dc96 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -59,7 +59,11 @@ static bool modeset =3D true; MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=3Don (default),= 0=3Ddisable)"); module_param(modeset, bool, 0600); =20 +#ifndef CONFIG_DRM_MSM_ADRENO +static bool separate_gpu_drm =3D true; +#else static bool separate_gpu_drm; +#endif MODULE_PARM_DESC(separate_gpu_drm, "Use separate DRM device for the GPU (0= =3Dsingle DRM device for both GPU and display (default), 1=3Dtwo DRM device= s)"); module_param(separate_gpu_drm, bool, 0400); =20 @@ -320,6 +324,22 @@ static void load_gpu(struct drm_device *dev) mutex_unlock(&init_lock); } =20 +void __msm_file_private_destroy(struct kref *kref) +{ + struct msm_file_private *ctx =3D container_of(kref, + struct msm_file_private, ref); + + msm_submitqueue_fini(ctx); + msm_gem_address_space_put(ctx->aspace); + +#ifdef CONFIG_DRM_MSM_ADRENO + kfree(ctx->comm); + kfree(ctx->cmdline); +#endif + + kfree(ctx); +} + static int context_init(struct drm_device *dev, struct drm_file *file) { static atomic_t ident =3D ATOMIC_INIT(0); @@ -330,9 +350,6 @@ static int context_init(struct drm_device *dev, struct = drm_file *file) if (!ctx) return -ENOMEM; =20 - INIT_LIST_HEAD(&ctx->submitqueues); - rwlock_init(&ctx->queuelock); - kref_init(&ctx->ref); msm_submitqueue_init(dev, ctx); =20 @@ -717,6 +734,7 @@ static int msm_ioctl_gem_info(struct drm_device *dev, v= oid *data, return ret; } =20 +#ifdef CONFIG_DRM_MSM_ADRENO static int wait_fence(struct msm_gpu_submitqueue *queue, uint32_t fence_id, ktime_t timeout, uint32_t flags) { @@ -787,6 +805,7 @@ static int msm_ioctl_wait_fence(struct drm_device *dev,= void *data, =20 return ret; } +#endif =20 static int msm_ioctl_gem_madvise(struct drm_device *dev, void *data, struct drm_file *file) @@ -820,6 +839,7 @@ static int msm_ioctl_gem_madvise(struct drm_device *dev= , void *data, } =20 =20 +#ifdef CONFIG_DRM_MSM_ADRENO static int msm_ioctl_submitqueue_new(struct drm_device *dev, void *data, struct drm_file *file) { @@ -845,6 +865,7 @@ static int msm_ioctl_submitqueue_close(struct drm_devic= e *dev, void *data, =20 return msm_submitqueue_remove(file->driver_priv, id); } +#endif =20 static const struct drm_ioctl_desc msm_ioctls[] =3D { DRM_IOCTL_DEF_DRV(MSM_GET_PARAM, msm_ioctl_get_param, DRM_RENDER_AL= LOW), @@ -853,12 +874,14 @@ static const struct drm_ioctl_desc msm_ioctls[] =3D { DRM_IOCTL_DEF_DRV(MSM_GEM_INFO, msm_ioctl_gem_info, DRM_RENDER_AL= LOW), DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_PREP, msm_ioctl_gem_cpu_prep, DRM_RENDER_AL= LOW), DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_FINI, msm_ioctl_gem_cpu_fini, DRM_RENDER_AL= LOW), + DRM_IOCTL_DEF_DRV(MSM_GEM_MADVISE, msm_ioctl_gem_madvise, DRM_RENDER_AL= LOW), +#ifdef CONFIG_DRM_MSM_ADRENO DRM_IOCTL_DEF_DRV(MSM_GEM_SUBMIT, msm_ioctl_gem_submit, DRM_RENDER_AL= LOW), DRM_IOCTL_DEF_DRV(MSM_WAIT_FENCE, msm_ioctl_wait_fence, DRM_RENDER_AL= LOW), - DRM_IOCTL_DEF_DRV(MSM_GEM_MADVISE, msm_ioctl_gem_madvise, DRM_RENDER_AL= LOW), DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_NEW, msm_ioctl_submitqueue_new, DRM= _RENDER_ALLOW), DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_CLOSE, msm_ioctl_submitqueue_close, DRM= _RENDER_ALLOW), DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_QUERY, msm_ioctl_submitqueue_query, DRM= _RENDER_ALLOW), +#endif }; =20 static void msm_show_fdinfo(struct drm_printer *p, struct drm_file *file) @@ -866,10 +889,8 @@ static void msm_show_fdinfo(struct drm_printer *p, str= uct drm_file *file) struct drm_device *dev =3D file->minor->dev; struct msm_drm_private *priv =3D dev->dev_private; =20 - if (!priv->gpu) - return; - - msm_gpu_show_fdinfo(priv->gpu, file->driver_priv, p); + if (priv->gpu) + msm_gpu_show_fdinfo(priv->gpu, file->driver_priv, p); =20 drm_show_memory_stats(p, file); } diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 1ff799f0c78133e73c6857e3692c2dca2c5e60fa..ba4012ea2f6845061380ae2daa8= eb3a0999f2e9e 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -424,6 +424,9 @@ static inline void msm_mdss_unregister(void) {} =20 #ifdef CONFIG_DEBUG_FS void msm_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file = *m); +#endif + +#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_DRM_MSM_ADRENO) int msm_debugfs_late_init(struct drm_device *dev); int msm_rd_debugfs_init(struct drm_minor *minor); void msm_rd_debugfs_cleanup(struct msm_drm_private *priv); diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index e25009150579c08f7b98d4461a75757d1093734a..6db6ef6b02db2450be68cc27e65= be9aced6da7ce 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -358,12 +358,13 @@ struct msm_gpu_perfcntr { * @seqno: unique per process seqno */ struct msm_file_private { - rwlock_t queuelock; - struct list_head submitqueues; - int queueid; struct msm_gem_address_space *aspace; struct kref ref; int seqno; +#ifdef CONFIG_DRM_MSM_ADRENO + rwlock_t queuelock; + struct list_head submitqueues; + int queueid; =20 /** * sysprof: @@ -425,6 +426,7 @@ struct msm_file_private { * level. */ struct drm_sched_entity *entities[NR_SCHED_PRIORITIES * MSM_GPU_MAX_RINGS= ]; +#endif =20 /** * ctx_mem: @@ -559,6 +561,7 @@ struct msm_gpu_state { struct msm_gpu_state_bo *bos; }; =20 +#ifdef CONFIG_DRM_MSM_ADRENO static inline void gpu_write(struct msm_gpu *gpu, u32 reg, u32 data) { writel(data, gpu->mmio + (reg << 2)); @@ -612,6 +615,7 @@ void msm_gpu_show_fdinfo(struct msm_gpu *gpu, struct ms= m_file_private *ctx, struct drm_printer *p); =20 int msm_submitqueue_init(struct drm_device *drm, struct msm_file_private *= ctx); +void msm_submitqueue_fini(struct msm_file_private *ctx); struct msm_gpu_submitqueue *msm_submitqueue_get(struct msm_file_private *c= tx, u32 id); int msm_submitqueue_create(struct drm_device *drm, @@ -624,8 +628,42 @@ void msm_submitqueue_close(struct msm_file_private *ct= x); =20 void msm_submitqueue_destroy(struct kref *kref); =20 +static inline void msm_submitqueue_put(struct msm_gpu_submitqueue *queue) +{ + if (queue) + kref_put(&queue->ref, msm_submitqueue_destroy); +} + int msm_file_private_set_sysprof(struct msm_file_private *ctx, struct msm_gpu *gpu, int sysprof); +#else +static inline void msm_gpu_show_fdinfo(struct msm_gpu *gpu, + struct msm_file_private *ctx, + struct drm_printer *p) +{ +} + +static inline int msm_submitqueue_init(struct drm_device *drm, struct msm_= file_private *ctx) +{ + return -ENXIO; +} + +static inline void msm_submitqueue_fini(struct msm_file_private *ctx) +{ +} + +static inline void msm_submitqueue_close(struct msm_file_private *ctx) +{ +} + +static inline int msm_file_private_set_sysprof(struct msm_file_private *ct= x, + struct msm_gpu *gpu, + int sysprof) +{ + return 0; +} +#endif + void __msm_file_private_destroy(struct kref *kref); =20 static inline void msm_file_private_put(struct msm_file_private *ctx) @@ -640,6 +678,7 @@ static inline struct msm_file_private *msm_file_private= _get( return ctx; } =20 +#ifdef CONFIG_DRM_MSM_ADRENO void msm_devfreq_init(struct msm_gpu *gpu); void msm_devfreq_cleanup(struct msm_gpu *gpu); void msm_devfreq_resume(struct msm_gpu *gpu); @@ -671,12 +710,6 @@ struct msm_gpu *adreno_load_gpu(struct drm_device *dev= ); void __init adreno_register(void); void __exit adreno_unregister(void); =20 -static inline void msm_submitqueue_put(struct msm_gpu_submitqueue *queue) -{ - if (queue) - kref_put(&queue->ref, msm_submitqueue_destroy); -} - static inline struct msm_gpu_state *msm_gpu_crashstate_get(struct msm_gpu = *gpu) { struct msm_gpu_state *state =3D NULL; @@ -712,5 +745,25 @@ static inline void msm_gpu_crashstate_put(struct msm_g= pu *gpu) #define check_apriv(gpu, flags) \ (((gpu)->hw_apriv ? MSM_BO_MAP_PRIV : 0) | (flags)) =20 +#else /* ! CONFIG_DRM_MSM_ADRENO */ +static inline struct msm_gem_address_space * +msm_gpu_create_private_address_space(struct msm_gpu *gpu, struct task_stru= ct *task) +{ + return NULL; +} + +static inline struct msm_gpu *adreno_load_gpu(struct drm_device *dev) +{ + return NULL; +} + +static inline void __init adreno_register(void) +{ +} + +static inline void __exit adreno_unregister(void) +{ +} +#endif /* ! CONFIG_DRM_MSM_ADRENO */ =20 #endif /* __MSM_GPU_H__ */ diff --git a/drivers/gpu/drm/msm/msm_submitqueue.c b/drivers/gpu/drm/msm/ms= m_submitqueue.c index 7fed1de63b5d9e20df88db8d9ca6ea45ec1a2846..dfb6f42a963ee3d314f11716d86= 49f3bf82a3eb6 100644 --- a/drivers/gpu/drm/msm/msm_submitqueue.c +++ b/drivers/gpu/drm/msm/msm_submitqueue.c @@ -46,10 +46,8 @@ int msm_file_private_set_sysprof(struct msm_file_private= *ctx, return 0; } =20 -void __msm_file_private_destroy(struct kref *kref) +void msm_submitqueue_fini(struct msm_file_private *ctx) { - struct msm_file_private *ctx =3D container_of(kref, - struct msm_file_private, ref); int i; =20 for (i =3D 0; i < ARRAY_SIZE(ctx->entities); i++) { @@ -59,11 +57,6 @@ void __msm_file_private_destroy(struct kref *kref) drm_sched_entity_destroy(ctx->entities[i]); kfree(ctx->entities[i]); } - - msm_gem_address_space_put(ctx->aspace); - kfree(ctx->comm); - kfree(ctx->cmdline); - kfree(ctx); } =20 void msm_submitqueue_destroy(struct kref *kref) @@ -226,6 +219,9 @@ int msm_submitqueue_init(struct drm_device *drm, struct= msm_file_private *ctx) struct msm_drm_private *priv =3D drm->dev_private; int default_prio, max_priority; =20 + INIT_LIST_HEAD(&ctx->submitqueues); + rwlock_init(&ctx->queuelock); + if (!priv->gpu) return -ENODEV; =20 --=20 2.39.5