From nobody Thu Apr 2 01:47:56 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 90F0D3C5537 for ; Fri, 20 Mar 2026 15:22:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774020178; cv=none; b=ZPHNZnLAZgblP1X/0dirmC0E9AMAyI+RiKsWcCDpL6/6maVdY2XDQH0M4D2KCpz0NsfBEAfwm8iBpDfJTCyTw0wqnDsAm9pkfTK4zE2QfxC+4SW8hjNZCtCReEVeE5YKeDCgr9iZVnI6Gl1qs/EUTMgxd5vBbIgxN0UBQR84pCk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774020178; c=relaxed/simple; bh=RSH6QERV89O6WwT0rSXIIDDR5RFxUFJhuhMID2KGPKM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=unaYqi3PuqDsqrueEM/XBQs7xhn2RfNxE8dhVR6OrPV9bZUwYQqdZcHkBSw3dJhBYJ+7vL2WYKjeWBOq7L37HTDl0QJwxWy3Td3P3m4ZUK0mg6gVqyRB7KjS2wTSRc2iTr3dXr19FySaVe7wOljRIE+nYG51Y+T46G5k24145aA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=ZflG67tR; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="ZflG67tR" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K7sxZC3930003; Fri, 20 Mar 2026 15:22:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=d 2xlE6wM294iBMpPnLgRk7v1U0eCoLi366e5jsFxuMc=; b=ZflG67tRzUN2PJ9gz 5R0I6jT7QYJQe7QMSYSWiRlrDsrKSNxMn/bsNHKapBD3lPUl9Hqlox7uzrHWySNk wukR6vUU/0xKSxFyM7nSAWmfh78xTKT75/bBxNPEtTo5oEA5Csi1/WMb5WByxGqY 5WAjN7yNo0bt85N8QHqoJJdDZ6ZTorIw/TfXoZKvlT//I7MCQYOXse+DOrdBPbkG 6QpnpAWGK4UTML2zLCFV9ugZQ8OmEuB3ElFCGq+yQq/0/iJyxTKhEuHmNHL8N/LT fxEhPBpgEkFU3PcfFnxB+3AWHjzVXCTj/YvxrDircLs0iATum3+YAbS7DujoWxNi 8oPjw== Received: from hhmail01.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4cw0mwdjs4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 15:22:25 +0000 (GMT) Received: from HHMAIL03.hh.imgtec.org (10.44.0.121) by HHMAIL01.hh.imgtec.org (10.100.10.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 20 Mar 2026 15:22:24 +0000 Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa (172.25.4.249) by HHMAIL03.hh.imgtec.org (10.44.0.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 20 Mar 2026 15:22:23 +0000 From: Matt Coster Date: Fri, 20 Mar 2026 15:22:12 +0000 Subject: [PATCH v2 1/2] drm/imagination: Define packed BVNCs in the uapi 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: <20260320-bvnc-cleanup-v2-1-49c3c1453289@imgtec.com> References: <20260320-bvnc-cleanup-v2-0-49c3c1453289@imgtec.com> In-Reply-To: <20260320-bvnc-cleanup-v2-0-49c3c1453289@imgtec.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: Frank Binns , Brajesh Gupta , Alessio Belle , Alexandru Dadu , , , "Matt Coster" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6152; i=matt.coster@imgtec.com; h=from:subject:message-id; bh=RSH6QERV89O6WwT0rSXIIDDR5RFxUFJhuhMID2KGPKM=; b=owGbwMvMwCFWuUfy8817WRsYT6slMWTuTdO7v7TOytfxVo7lN6mlZbcEi3ifG3EeOf1+wz7eZ wtYzkSGdJSyMIhxMMiKKbLsWGG5Qu2PmpbEjV/FMHNYmUCGMHBxCsBEGBIY/uc4nGA5HcYlciGl ru1rx4v1DIy6sxenXqgTlbX9PEX9eDnDX7lzAf4bQvorXGS6Nxvurth5z6b2gteXGTePdKSKPf9 RzgwA X-Developer-Key: i=matt.coster@imgtec.com; a=openpgp; fpr=05A40CFCE7269D61D97100A1747F0A9036F90DFA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDEyMiBTYWx0ZWRfXw4D8jJD14/lE Zn7I/i7JO/e7S+RWXh0VH3oFS1bGIhV2nnu1nkzBNXQ8IWyO6lw1ZThCfGkLDIIyTS3CEf01Hte TmL4g15QL+/0mYgYzGhASVYXGVKuGWf4h+BLYMG6MVlr9dP+BmFuo+RwQC4we8Q+oal3zVtybt5 cLEgfPP2Dhs0b7bwVWflRZVHPDcy4c5F4Svkw4kfTShjkqGOORq+FGTJfxic/DwZs15qiRr2uSt NIzGMmv3Ob9tMvv0NV7y68acdph7SYnyB1skxoAN4zNRP/bK60EuYXNfEsECqZ+2KhwhQ5vzYr8 ydHBHfQW8FwO5t8vivtOoCECxc2xpsTJFCuv6DtNW+bwyA0jVV+CyhfIvTPb0qh9vUiV7BQ8Vgd EOKKKfQTsTu3ohBLGawypxfKSLCLAQPbd2W5p4JEpob7w1uaMyK/u8a0uoMMA0RFV3ppaO5dUsJ NgA4kcPNXtU7RKMMVCw== X-Authority-Analysis: v=2.4 cv=JaexbEKV c=1 sm=1 tr=0 ts=69bd6631 cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=Ylr_HOfL8O8A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=bC-a23v3AAAA:8 a=r_1tXGB3AAAA:8 a=VwQbUJbxAAAA:8 a=QyXUC8HyAAAA:8 a=u9jD9pbJY3YoXFmSU6kA:9 a=QEXdDO2ut3YA:10 a=FO4_E8m0qiDe52t0p3_H:22 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-GUID: PtzPcp4NBW7lnR-NiiXCHP5v7nPsrs44 X-Proofpoint-ORIG-GUID: PtzPcp4NBW7lnR-NiiXCHP5v7nPsrs44 Using the uapi-safe __GENMASK_ULL(), we can stably define the layout of 64-bit packed BVNCs. These defs replace the replicated doc comment that appears all over the place. Signed-off-by: Matt Coster --- Changes in v2: - Add _CONST variant of PVR_PACKED_BVNC() for use in case statements. This fixes the build issue reported by the test bot[1][2] - Link to v1: https://patch.msgid.link/20260206-bvnc-cleanup-v1-1-f3c818541= fbe@imgtec.com [1]: https://lore.kernel.org/r/202602070204.PjaKNSpZ-lkp@intel.com/ [2]: https://lore.kernel.org/r/202602070500.zo0DrH6U-lkp@intel.com/ --- drivers/gpu/drm/imagination/pvr_device.c | 6 ++--- drivers/gpu/drm/imagination/pvr_device.h | 43 +++++++++++++---------------= ---- include/uapi/drm/pvr_drm.h | 14 +++++------ 3 files changed, 27 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/ima= gination/pvr_device.c index f58bb66a6327..9b26585a42bf 100644 --- a/drivers/gpu/drm/imagination/pvr_device.c +++ b/drivers/gpu/drm/imagination/pvr_device.c @@ -547,11 +547,11 @@ static enum pvr_gpu_support_level pvr_gpu_support_level(const struct pvr_gpu_id *gpu_id) { switch (pvr_gpu_id_to_packed_bvnc(gpu_id)) { - case PVR_PACKED_BVNC(33, 15, 11, 3): - case PVR_PACKED_BVNC(36, 53, 104, 796): + case PVR_PACKED_BVNC_CONST(33, 15, 11, 3): + case PVR_PACKED_BVNC_CONST(36, 53, 104, 796): return PVR_GPU_SUPPORTED; =20 - case PVR_PACKED_BVNC(36, 52, 104, 182): + case PVR_PACKED_BVNC_CONST(36, 52, 104, 182): return PVR_GPU_EXPERIMENTAL; =20 default: diff --git a/drivers/gpu/drm/imagination/pvr_device.h b/drivers/gpu/drm/ima= gination/pvr_device.h index d51c57cf9332..55d8ff11d507 100644 --- a/drivers/gpu/drm/imagination/pvr_device.h +++ b/drivers/gpu/drm/imagination/pvr_device.h @@ -14,7 +14,7 @@ #include #include =20 -#include +#include #include #include #include @@ -470,6 +470,12 @@ struct pvr_file { =20 #define to_pvr_file(file) ((file)->driver_priv) =20 +#define __PVR_PACKED_BVNC(prep, b, v, n, c) \ + (prep(DRM_PVR_BVNC_B, b) | \ + prep(DRM_PVR_BVNC_V, v) | \ + prep(DRM_PVR_BVNC_N, n) | \ + prep(DRM_PVR_BVNC_C, c)) + /** * PVR_PACKED_BVNC() - Packs B, V, N and C values into a 64-bit unsigned i= nteger * @b: Branch ID. @@ -477,39 +483,24 @@ struct pvr_file { * @n: Number of scalable units. * @c: Config ID. * - * The packed layout is as follows: - * - * +--------+--------+--------+-------+ - * | 63..48 | 47..32 | 31..16 | 15..0 | - * +=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D= =3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ - * | B | V | N | C | - * +--------+--------+--------+-------+ + * The packed layout follows the bitfield defined by the DRM_PVR_BVNC_* ma= cros. * * pvr_gpu_id_to_packed_bvnc() should be used instead of this macro when a * &struct pvr_gpu_id is available in order to ensure proper type checking. * * Return: Packed BVNC. */ -/* clang-format off */ -#define PVR_PACKED_BVNC(b, v, n, c) \ - ((((u64)(b) & GENMASK_ULL(15, 0)) << 48) | \ - (((u64)(v) & GENMASK_ULL(15, 0)) << 32) | \ - (((u64)(n) & GENMASK_ULL(15, 0)) << 16) | \ - (((u64)(c) & GENMASK_ULL(15, 0)) << 0)) -/* clang-format on */ +#define PVR_PACKED_BVNC(b, v, n, c) __PVR_PACKED_BVNC(FIELD_PREP, b, v, n,= c) + +/** PVR_PACKED_BVNC_CONST() - Compile-time equivalent of PVR_PACKED_BVNC()= . */ +#define PVR_PACKED_BVNC_CONST(b, v, n, c) __PVR_PACKED_BVNC(FIELD_PREP_CON= ST, b, v, n, c) =20 /** * pvr_gpu_id_to_packed_bvnc() - Packs B, V, N and C values into a 64-bit * unsigned integer * @gpu_id: GPU ID. * - * The packed layout is as follows: - * - * +--------+--------+--------+-------+ - * | 63..48 | 47..32 | 31..16 | 15..0 | - * +=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D= =3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ - * | B | V | N | C | - * +--------+--------+--------+-------+ + * The packed layout follows the bitfield defined by the DRM_PVR_BVNC_* ma= cros. * * This should be used in preference to PVR_PACKED_BVNC() when a &struct * pvr_gpu_id is available in order to ensure proper type checking. @@ -525,10 +516,10 @@ pvr_gpu_id_to_packed_bvnc(const struct pvr_gpu_id *gp= u_id) static __always_inline void packed_bvnc_to_pvr_gpu_id(u64 bvnc, struct pvr_gpu_id *gpu_id) { - gpu_id->b =3D (bvnc & GENMASK_ULL(63, 48)) >> 48; - gpu_id->v =3D (bvnc & GENMASK_ULL(47, 32)) >> 32; - gpu_id->n =3D (bvnc & GENMASK_ULL(31, 16)) >> 16; - gpu_id->c =3D bvnc & GENMASK_ULL(15, 0); + gpu_id->b =3D FIELD_GET(DRM_PVR_BVNC_B, bvnc); + gpu_id->v =3D FIELD_GET(DRM_PVR_BVNC_V, bvnc); + gpu_id->n =3D FIELD_GET(DRM_PVR_BVNC_N, bvnc); + gpu_id->c =3D FIELD_GET(DRM_PVR_BVNC_C, bvnc); } =20 int pvr_device_init(struct pvr_device *pvr_dev); diff --git a/include/uapi/drm/pvr_drm.h b/include/uapi/drm/pvr_drm.h index ccf6c2112468..72f3f90560cf 100644 --- a/include/uapi/drm/pvr_drm.h +++ b/include/uapi/drm/pvr_drm.h @@ -6,6 +6,7 @@ =20 #include "drm.h" =20 +#include #include #include =20 @@ -113,6 +114,11 @@ struct drm_pvr_obj_array { * DOC: PowerVR IOCTL DEV_QUERY interface */ =20 +#define DRM_PVR_BVNC_B __GENMASK_ULL(63, 48) +#define DRM_PVR_BVNC_V __GENMASK_ULL(47, 32) +#define DRM_PVR_BVNC_N __GENMASK_ULL(31, 16) +#define DRM_PVR_BVNC_C __GENMASK_ULL(15, 0) + /** * struct drm_pvr_dev_query_gpu_info - Container used to fetch information= about * the graphics processor. @@ -125,13 +131,7 @@ struct drm_pvr_dev_query_gpu_info { * @gpu_id: GPU identifier. * * For all currently supported GPUs this is the BVNC encoded as a 64-bit - * value as follows: - * - * +--------+--------+--------+-------+ - * | 63..48 | 47..32 | 31..16 | 15..0 | - * +=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D= =3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ - * | B | V | N | C | - * +--------+--------+--------+-------+ + * value using the DRM_PVR_BVNC_* bitmasks. */ __u64 gpu_id; =20 --=20 2.53.0 From nobody Thu Apr 2 01:47:56 2026 Received: from mx07-00376f01.pphosted.com (mx07-00376f01.pphosted.com [185.132.180.163]) (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 90DC63B6C1E for ; Fri, 20 Mar 2026 15:22:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.180.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774020178; cv=none; b=T7CeOAr69/JMg9USK8KQg3tjCW9ah44Cl3v9VSgOvb9qC7ik34oOr2TkevcbN2mTFEvSCRf6xHSOQzIr0BlIoAU++yLvG4tkI1Ofxk81LgnN5ktH4s6jv/Ag485YOLSwbM8ZePaCzhKdCu0Chf3Gtz5iJvbQmK6gMNA7jNfPljw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774020178; c=relaxed/simple; bh=YUWdK7LYxhbWXK9a2EpIeO6Q108VfMMcPo6x5C6c4pk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Tk0yJkedMTzJy7iq9IbDdqj4kbl1elxL5J4UBgzXw8sOV9i6MkSbQHjg1MxFhy6pXsYsc6I9IIuLZF0TR3H7qWt8u+bhtF/DgoJub1V0WYPFzr24NU12OSd9vrh2s12IztG3h6UaVBNhxf4GJor5u7NtGprRUrl2ihfen8ug46o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com; spf=pass smtp.mailfrom=imgtec.com; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b=kzraq7K7; arc=none smtp.client-ip=185.132.180.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=imgtec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=imgtec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=imgtec.com header.i=@imgtec.com header.b="kzraq7K7" Received: from pps.filterd (m0168889.ppops.net [127.0.0.1]) by mx07-00376f01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K7v2rB3934120; Fri, 20 Mar 2026 15:22:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imgtec.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=dk201812; bh=R oVNSXPTh3ShV/Rka5X5ncNUfStbDa7QFP1uSDlyxXE=; b=kzraq7K7M7SYwp6bE SFQkz8/X0Xzl4Tcoxxl3ChMlOc0rV61nDva9JliMJrU+fHcul8tfoBJhTfe1iPMi NH5Z9763Xx5hnHLHDLRnGWNPt8vagCJg6NHtiJSUzElohwgEpdlRHMxFvoG5Z5Tj ddP0TxnisVAO55Kx6qV8ioBAKhuq9g2McanOHDI1lXjY9WM/bWVHX1DLpNe3dOu7 ovkf9LOL3q7hG8Osjmjks/sS7XEVxwLotj36Ppm/4YDR6SfPr6HrPI+zznfVyL1d vMl0EivzF01owtnoG1GWk2VdLa+G1cuMEcse81xtGL+YG0GBeuUxzVAfpVlC2fEx ZaaJg== Received: from hhmail02.hh.imgtec.org (83-244-153-141.cust-83.exponential-e.net [83.244.153.141]) by mx07-00376f01.pphosted.com (PPS) with ESMTPS id 4cw0mwdjs3-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 15:22:24 +0000 (GMT) Received: from HHMAIL03.hh.imgtec.org (10.44.0.121) by HHMAIL02.hh.imgtec.org (10.100.10.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 20 Mar 2026 15:22:24 +0000 Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa (172.25.4.249) by HHMAIL03.hh.imgtec.org (10.44.0.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 20 Mar 2026 15:22:24 +0000 From: Matt Coster Date: Fri, 20 Mar 2026 15:22:13 +0000 Subject: [PATCH v2 2/2] drm/imagination: Add PVR_GPU_ID_FMT to format pvr_gpu_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: <20260320-bvnc-cleanup-v2-2-49c3c1453289@imgtec.com> References: <20260320-bvnc-cleanup-v2-0-49c3c1453289@imgtec.com> In-Reply-To: <20260320-bvnc-cleanup-v2-0-49c3c1453289@imgtec.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter CC: Frank Binns , Brajesh Gupta , Alessio Belle , Alexandru Dadu , , , "Matt Coster" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3463; i=matt.coster@imgtec.com; h=from:subject:message-id; bh=YUWdK7LYxhbWXK9a2EpIeO6Q108VfMMcPo6x5C6c4pk=; b=owGbwMvMwCFWuUfy8817WRsYT6slMWTuTdPfNXePiPXv0kOMU403rm2+JN5eE9F+wJxxo9KL5 67mfilaHaUsDGIcDLJiiiw7VliuUPujpiVx41cxzBxWJpAhDFycAjCRMAVGho8cM7kuJBjfdSpK vbnz6Sd7vkvCMYdy8t5sVjGbZ5yXO5WRYZ3/SZmIH/89T/1+mes3TbK85NNHhq8tG66d6ly/cvf qYlYA X-Developer-Key: i=matt.coster@imgtec.com; a=openpgp; fpr=05A40CFCE7269D61D97100A1747F0A9036F90DFA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDEyMiBTYWx0ZWRfX30kFLWwymket 9LsLg9rxaIjlF8WNxEGJ9yvhsysUvlErEW6qT+QleRTNsWOBMq+IQM/sTjWKzzNxk7xS+y1Nttv V4mM+3TdIIQroQk2jLrC7qX1MUlKoDmJ19T8dMdWNM5uIKlOPv8HZyOnNvCCnX5MQVmcvD08kHi kwBJaCmsdaI4RP8DItkQC2tzkeSD6SILSkYRKMvm1EcYr4il1BXXSLxyJvYNEYBlTl+piZrMHva IRPd17HTQHrr68QMEBd13abR4GOwC/KT0qOU4AjfQEBXlQaPuci+jLpuveUkz/oAUTXb2+XlNWQ Y0Gi8HrVfME+EKUB/i4liKgYUGhXkqZmZsx8ZshmSSH6yC1xS15bHwnVofgQEhRk33PP1WFR+ZN NSGNHcCSTbZdjs+uGsHwAVeUUTzztmDB+r3wRXKeIUrDzCvloltn3NH22+QVzIrCxXwbMH7ngdm mH+PcNLT3OqyEpWGTGw== X-Authority-Analysis: v=2.4 cv=JaexbEKV c=1 sm=1 tr=0 ts=69bd6631 cx=c_pps a=AKOq//PuzOIrVTIF9yBwbA==:117 a=AKOq//PuzOIrVTIF9yBwbA==:17 a=Ylr_HOfL8O8A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kQ-hrUj2-E3RCbRHssb7:22 a=7RYWX5rxfSByPNLylY2M:22 a=bC-a23v3AAAA:8 a=r_1tXGB3AAAA:8 a=zDq0utqy4rlx-ExxUQcA:9 a=QEXdDO2ut3YA:10 a=FO4_E8m0qiDe52t0p3_H:22 a=t8nPyN_e6usw4ciXM-Pk:22 X-Proofpoint-GUID: XwKlSLrx0AwTQjoIEzKRlfw5B7PL2gtw X-Proofpoint-ORIG-GUID: XwKlSLrx0AwTQjoIEzKRlfw5B7PL2gtw There are currently two different combinations of format specifiers used to print a struct pvr_gpu_id, one using %i and one using %d. Both of these are technically incorrect since the components are stored as u16. Introduce macros to simplify and correct the formatting of these values: - PVR_GPU_ID_FMT: A pre-constructed format string fragment, in the style of PRIu32. - PVR_GPU_ID_FMT_ARGS(): Accepts a &struct pvr_gpu_id and expands the fields into appropriate format arguments to be used with PVR_GPU_ID_FMT. - PVR_GPU_ID_FMT_ARGS_PACKED(): Accepts a packed GPU ID as a u64 and extracts the components directly into appropriate format arguments to be used with PVR_GPU_ID_FMT. Signed-off-by: Matt Coster --- Changes in v2: - Simplify the change made to pvr_fw_validate() - Link to v1: https://patch.msgid.link/20260206-bvnc-cleanup-v1-2-f3c818541= fbe@imgtec.com --- drivers/gpu/drm/imagination/pvr_device.c | 4 ++-- drivers/gpu/drm/imagination/pvr_device.h | 6 ++++++ drivers/gpu/drm/imagination/pvr_fw.c | 9 +++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/ima= gination/pvr_device.c index 9b26585a42bf..263d1badacf3 100644 --- a/drivers/gpu/drm/imagination/pvr_device.c +++ b/drivers/gpu/drm/imagination/pvr_device.c @@ -362,8 +362,8 @@ pvr_build_firmware_filename(struct pvr_device *pvr_dev,= const char *base, { struct pvr_gpu_id *gpu_id =3D &pvr_dev->gpu_id; =20 - return kasprintf(GFP_KERNEL, "%s_%d.%d.%d.%d_v%d.fw", base, gpu_id->b, - gpu_id->v, gpu_id->n, gpu_id->c, major); + return kasprintf(GFP_KERNEL, "%s_" PVR_GPU_ID_FMT "_v%d.fw", base, + PVR_GPU_ID_FMT_ARGS(gpu_id), major); } =20 static void diff --git a/drivers/gpu/drm/imagination/pvr_device.h b/drivers/gpu/drm/ima= gination/pvr_device.h index 55d8ff11d507..54e3e947e60e 100644 --- a/drivers/gpu/drm/imagination/pvr_device.h +++ b/drivers/gpu/drm/imagination/pvr_device.h @@ -53,6 +53,12 @@ struct pvr_gpu_id { u16 b, v, n, c; }; =20 +#define PVR_GPU_ID_FMT "%u.%u.%u.%u" +#define PVR_GPU_ID_FMT_ARGS(gpu_id) (gpu_id)->b, (gpu_id)->v, (gpu_id)->n,= (gpu_id)->c +#define PVR_GPU_ID_FMT_ARGS_PACKED(gpu_id) \ + (u32)FIELD_GET(DRM_PVR_BVNC_B, gpu_id), (u32)FIELD_GET(DRM_PVR_BVNC_V, gp= u_id), \ + (u32)FIELD_GET(DRM_PVR_BVNC_N, gpu_id), (u32)FIELD_GET(DRM_PVR_BVNC_C, gp= u_id) + /** * struct pvr_fw_version - Firmware version information * @major: Major version number. diff --git a/drivers/gpu/drm/imagination/pvr_fw.c b/drivers/gpu/drm/imagina= tion/pvr_fw.c index 288516dc2560..0b1c2a0d950c 100644 --- a/drivers/gpu/drm/imagination/pvr_fw.c +++ b/drivers/gpu/drm/imagination/pvr_fw.c @@ -126,12 +126,9 @@ pvr_fw_validate(struct pvr_device *pvr_dev) } =20 if (pvr_gpu_id_to_packed_bvnc(&pvr_dev->gpu_id) !=3D header->bvnc) { - struct pvr_gpu_id fw_gpu_id; - - packed_bvnc_to_pvr_gpu_id(header->bvnc, &fw_gpu_id); - drm_err(drm_dev, "FW built for incorrect GPU ID %i.%i.%i.%i (expected %i= .%i.%i.%i)\n", - fw_gpu_id.b, fw_gpu_id.v, fw_gpu_id.n, fw_gpu_id.c, - pvr_dev->gpu_id.b, pvr_dev->gpu_id.v, pvr_dev->gpu_id.n, pvr_dev->gpu_i= d.c); + drm_err(drm_dev, "FW built for incorrect GPU ID " PVR_GPU_ID_FMT " (expe= cted " PVR_GPU_ID_FMT ")\n", + PVR_GPU_ID_FMT_ARGS_PACKED(header->bvnc), + PVR_GPU_ID_FMT_ARGS(&pvr_dev->gpu_id)); return -EINVAL; } =20 --=20 2.53.0