From nobody Thu Sep 24 14:26:44 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011058.outbound.protection.outlook.com [52.101.65.58]) (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 6FAA447F3D2 for ; Tue, 22 Sep 2026 20:46:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.58 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110017; cv=fail; b=NwLJaxkIfHuqc2Lbr41uYSuL0zWbUheLTTATYRdVa2GaAWMg7UhzVS4xqosMBTR8bSjt4Q/MKRc4IUPRX7JuogPEi8vI1HBv9Rpn8VNCPiycMXY3GsfgvwFwMIDoXxkWvwVRGj9srRPa5pDM/9hShsQnAk6GH50wkErCiULRrTE= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110017; c=relaxed/simple; bh=zdKgylD3hohqPAofxBHiAAFrBpP+c0RIdBK4hy96Tp0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z1eaA4tc5YT5Lcb2mANOuLqjXSoMHjlHDoMNtgBdnEkl8faPa0uH8Vvg7rLMdo7xOeHZSDaGnTud3A6VXVVwGQLopBfnXksJhzQxf3SXqGPBP5YvqVSoYQIufBAVUqytRFA1Fa/yKf8yESqkSh4TvPa0jZt06PSuPM/b5/TWoPE= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=I+q+R8Lo; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=I+q+R8Lo; arc=fail smtp.client-ip=52.101.65.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="I+q+R8Lo"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="I+q+R8Lo" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=SZ363JuRrlzdL19/08l/6fHtJpCHsoXE2eOJ9bgOmJXZwvFrLfhKbMuUoLQfpIee5AREJ0XP2CZDZASgZ+Ge4/3TTCUWAVQjHJVmIV3JUBxI5D2ezzSyVWULQyTd8JhCUHSQHO+lSJvq8U6OAVTvHvdIwYLOOZRLE339jQ1TjwPUyd7RNgAFK2TjclY6/Kt8zrdAQxSKVhfFCtD9RptQBEfas65BAi4Si0emRUS0/LCuGXSFCJDA4C+FFk/QjuFvRZH5s8AEblCdsmfw/5IoJyYuab+SGKW4j55eBR+gO1z8+gN+/Mj4MzPxqgy6Uc829xoSOFgmCefdB5451dUdPg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ftwjEK/bo3+C39+dI5Iw22BAIBI7ChOepG6xYbDEm68=; b=gHfAXC3cOb2YrBAnUiTk3VFO33/Qr1HeEeqzSwi3sOsCEC0YaIFts8+8uMhkzrQHPGBxfzeqe70sdkPKfg4A45bAHNFNsATuEOJwHOC9t+h5epjklc/k6mfU9ZwCBjrhBp1/+6eqkjARsg2a3zwOZ3MhpBMITPbRCt0ogh863zDxWosotgOSIKc4j7vxaEqZfObMVa/28EaDfmY1DOnXDWjaCwL2EDe0+9pn62JYuy0kpzPyUHRJbzQt+FsBWVvCCOsrzLflk1wwjYimpmCmvv85QvgvIOsJHWb4gHIdCIEPA/o4c3UEewttVSx0JeAZYZXjmsVfV/JJUQxfthMfgg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ftwjEK/bo3+C39+dI5Iw22BAIBI7ChOepG6xYbDEm68=; b=I+q+R8Lo55UT3chDdK2Tnc+g8NOdfyMccUlAKl3q02cVRxFKoD7JplyuGRJKzjfgzcOC8HhdHsvKZnYwhhGOqoUTlR8eIxA/g2B83vF1/x0UtiI2AQH9rF5HzT3BgG+LrNpxkVSTWqccnTGxS32OVNM0pUv3/nj0NY7Qh99YQCE= Received: from GV3PEPF0001DDA3.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::6ca) by PA4PR08MB5983.eurprd08.prod.outlook.com (2603:10a6:102:e7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:34 +0000 Received: from WA1PEPF000099CF.eurprd04.prod.outlook.com (2603:10a6:1d8::167) by GV3PEPF0001DDA3.outlook.office365.com (2603:10a6:158:401::6ca) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.11 via Frontend Transport; Tue, 22 Sep 2026 20:46:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by WA1PEPF000099CF.mail.protection.outlook.com (10.167.242.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z8fpHlFRjgjYrY3P5L+bmrIv0zQbNyqQtfMSLO6+UheS/qft0lOfGYbqTCF1TrRRoQUjjmzig+jepMyHS+G2ba1uEIVW11XlF8X3ILv8WYOxxGagU/kTLI2duW1MrLEgWzuIvccj+uvkvxQCgE19A1Ek0PGpiKYlDr0x+ZB+oBgZ5sk8zv9hNQimZnmC65k4GK595o6PzAwuv9sV4qFxpCvxGw4VxtM83vHdvjqv+/nX/LuNqviGL6GZdw+KhGR/zAE4rsBInnfvoPvv6jgmMigBUw8PIJ77kXCBBp6YszB5rRD/PfN4aU6SRWE0efccRCP55xGYpny/1ikD7zg/Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ftwjEK/bo3+C39+dI5Iw22BAIBI7ChOepG6xYbDEm68=; b=qWbxNFk3BXN9jIe84YPaC2QL2oWEaag5WaN9WCjKcHMR+5PjNMvGO1PMQSMh15IdPVIj9eEfv5f8HR0/T56O9ARt3JzT4REwRGhZ7mR2ojNzoIR85IBj0hGPm9VGmIXlxs7CmunFn3Jm1rh0XOQyJBDhXhLg1p7F1LW7ClDZZez99bpNcANyZZrRehnQK5Ez3RQq8y816n/WDlVuCWvnqMKb9vDpoUVicG/kYvMhUJnpmdV7QLs8h2kDOOvsvKkx6JiVxcYyuCRl/pGLVaR5uUoG9pzqWFga8qPyY4iu4ehAU01ibOLt/W2IlzA5J87Ok8ZzuTmxs/TyT0lczRnRTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ftwjEK/bo3+C39+dI5Iw22BAIBI7ChOepG6xYbDEm68=; b=I+q+R8Lo55UT3chDdK2Tnc+g8NOdfyMccUlAKl3q02cVRxFKoD7JplyuGRJKzjfgzcOC8HhdHsvKZnYwhhGOqoUTlR8eIxA/g2B83vF1/x0UtiI2AQH9rF5HzT3BgG+LrNpxkVSTWqccnTGxS32OVNM0pUv3/nj0NY7Qh99YQCE= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:01 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:01 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Nicolas Frattaroli Subject: [PATCH v1 01/27] drm/panthor: Ignore -EOPNOTSUPP for shader-present nvmem lookup Date: Tue, 22 Sep 2026 21:44:55 +0100 Message-ID: <20260922204535.2850094-2-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0201.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36d::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|WA1PEPF000099CF:EE_|PA4PR08MB5983:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c089014-a216-4143-488c-08df18ea9697 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: FzmemGj10povINCyyu/sInusoJuNfIbfX8mjnwu/RpEIapfJyDcRX8irvEcWmt3CbCJO218QNQYzkTdgI74/ZYT4fpw0z4keoeGj2z3Mmpvm8qHlSJHRdFHeTjiEktwOPnmiVD3pkl13tahnlvKmlFg8iOiCLf/Tw2RZnFfs6LBUGFuaES3DyZIzbPAoqP5IdbcQh2zPRYNx7iZVGqkr/o/toxvdDDkofOtF1waotW4QbY3zSGbJgxkx6MIzxKJMJcjEn74h+HrDYYeESMjo69Pd01ep8mRmrtWJT0T+yaZWe/l84HOsMCAJ65cmGBq1PFdDZV/fI7Ln83pSYAyzK6Ef778J99k/OIhibc+DWpd4wUd5LGgIK5rVRmM8PAdtkaX4QG+yP5kvYKk7l6WDPmvuHbsMzOyom7Zxm7JdjTRVYFO+hrYuWd0/XdBRHjdaa/azmp3QULVjNSdDPmL1AAgvorktMpWxsS6edH55+KvY8rf5bViA0wEdE1KHCefFzijVKifGHrdaX6WVQG8SSzaoNvdpVoloJgSPypttFWJsDXb/PdQNjsqZMIDxnw3fXYl8u2OVFWLFVy2aKPKx/4/+hoZwxi2LmswnbNl4s1Bw4IhxrIf7N5mfO8UpF2qDBI02USwGSn3bnJIsnW6giEGk6BtIeEKgtQMFOLyOOpA= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: dwiaeYufSp9Nq7qNoY1yOSbUxAihK2x58ZdqvdArclOy5MshMSfOBKyAcAjXUYn0TOA4YQGGwtpwiwRYcWnitSQp03iuCjmBAalR1jZPOzVNMql4WzE/fboLEKTRK7UoKlyy3kp+oqGfRB6953X0tEkMCnQbgLnaouEnzgPa58ezPaHJlH6ktldhLwP3LD5GEuChGxFfKsAhjY8WYKxcGO7vP7AKUzm06xKam92i0GfowBf1OUhf++lnOvLIN2e4fiwdG9B16QpmQ/73h1srPkNyR+sUI9i/1HZBDZ0HIdBVc3pRYULl1cORqd7jmVZg7XPlSI803WznHiPBN8a45Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: WA1PEPF000099CF.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2144ce4f-b7f2-418a-5a2b-08df18ea8308 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700016|35042699022|14060799003|82310400026|23010399003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: NOnr0p26S5UOSl8uhvtE71/Z4U/Ym+1XgffPtFzeij4xUT9X/Z28NOC9flyBbNKRAXsl+WsaGgG1eHqMd5XClSOdNJ/wGwoHp1ebztOe8hCl0l1044jolCmCXmJ5NVogv3F/lP/tawVXsVqOkhzTKq71bK9gPjl106N3Ybl32kaSqFL0VMaCVOgP1ycapLRr8l2KLy7Y6ojVeZIHGckUoHtgrffYOQM39UrrA9y1c23A5K+rS+IieZ1JOnj7DuxvWNwsXgpv6OCvCsrTv+v0U4H+ovp3DBojOTJOrM0KZ32PIPMrTlCA2O08jWGiynjbgRWb7vVWQ+pEGOfWZJL8jb97Mr2KGfcf9dCDFgRJnImaBIgbd9QWoHC65IzHJw8av35HZU6cyTnJ0qa1OTSVfuYLN9VYsajucexRdLkt1DtI+QIoaF0lh0Cq9NX2yM82H/CeWtCUHxhXSPulF7UP1gqGBvY0ugc/23ErvT3R4FZ5QOhjXLuACFW+lOuhZloIgsSm8lJ2Yt/tzJp7s0DeV8U9x7AexmEijLiOL7TNQOHvOpM2/n9S0WrDxRmQ8A6jmZwVO6nwiVQhCgdB9aKTkuxLrjVvUZJx2VfvtFvPfofgLI781DXhbY8SC1Auq+T1Gg7ZkOTW8z3hvzcjMn4wlqYYjzeyJPEBcputlDr00QnLC1GdLdItlfl6B1+EdMPYOa/kKyWd4Rs/iO6bIH98JA== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700016)(35042699022)(14060799003)(82310400026)(23010399003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0913UxGSlP8YqsUb3A1IKCwYRWz/Z41XhgUPBGMs8cWJWxeVN/Wpx35p/TTPEC8/WCSEg5YM8MzAQtfPS4EUG1dc3uZ4WEG6abz7CXUBxFWaKiru4tadHbV4SOgvuymxESq0LvJDuhHwcYS5lU4Ip/nfaFWTBt2jdTv9VzuYuM2+26KuDANdjo7WYMJbNmYnrLUFu9imxrgiRvcq7yy1UrSCNF6pCd8CAEsKL9Z40s/Fod1JPC51TVYQUGEkU70xhVm2Ry4tnNW0lf6xqRA6ZfB0K/GFBA5i380Un17W0SurnOX1Iovlq5HSHDaOPNgTkX8Hio4PUyNiUkIndilaFwPu8BWMOqWeHWTF/yaLMlsgn3OqIdqLmll/8w6VB6F/u9wD+Frjfq6AHYS3EPEyv/rdeSGZsKe2NU+8xerZHIyGC/Ucaw53ZzD8ZWLYRrYo X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:33.6024 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c089014-a216-4143-488c-08df18ea9697 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: WA1PEPF000099CF.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB5983 Content-Type: text/plain; charset="utf-8" When CONFIG_NVMEM is disabled, reading the optional "shader-present" nvmem cell can return -EOPNOTSUPP. Treat this the same as the cell being absent so panthor can continue probing on platforms that do not provide shader-present fuses through nvmem. Fixes: c40b50c3cfbe ("drm/panthor: Implement reading shader_present from nv= mem") Reviewed-by: Boris Brezillon Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v1: - Picked up R-bs from Boris and Steve - Added Fixes tag drivers/gpu/drm/panthor/panthor_hw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 7e315708ca7ca..4c96573b649a1 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -182,7 +182,7 @@ static int overload_shader_present(struct panthor_devic= e *ptdev) &contents); if (!ret) ptdev->gpu_info.shader_present =3D contents; - else if (ret =3D=3D -ENOENT) + else if (ret =3D=3D -ENOENT || ret =3D=3D -EOPNOTSUPP) return 0; else return dev_err_probe(ptdev->base.dev, ret, -- 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013019.outbound.protection.outlook.com [40.107.162.19]) (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 6601043F8D6 for ; Tue, 22 Sep 2026 20:47:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.19 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110039; cv=fail; b=DuzHTguOzx3OCFxIfuc2etd2IeFvOFASEoZn1WmCD+2L0Nh5cRcn9CmhbKwjeeIeZfHIb2Pgt+aDLP5mY34Xm4AZ5wPaHMD4NzZWAcu5hNij82TepBSCHVnM1MKhQoSnWydPNCFgae9NVkojTPjP7esDT5z1UZYBx066DCkmAqk= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110039; c=relaxed/simple; bh=d5EtbL9lhyoOPhtoZFGzQ1oNoYNi/rBfcjqXwo7CIlI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cAnHNkhBw0dzUD3muS1COw57+gg4D0CFDbr4pvUUzbaC8CxHn5a1BSsG2Fu36gva3Kxv39UeSARRQgZBUsOK1X2bw1oOu+hzdSRKOHlGRw+NeFO+HbYY8xQHYbYfIK8IoT9+6cpFcjysyYpZBQOuYG5Ef8ypE3+KTVncXhmvxtI= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=muphYFJq; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=muphYFJq; arc=fail smtp.client-ip=40.107.162.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="muphYFJq"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="muphYFJq" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=fJRi4T/ORM/uU6oOk/AFHkxrbw4Z55K1SgrKMa/xs+P8Z7ePQIYpAPpWhV8QGDkvXNlKQ7kSJ7Bc7XvSZajWy0V96eoKlZl1621rdQvx3YfT+VHNRRMkXuncT0x3MwshD4JVkN0f+6kNz32yABAyHZlTXO6VLdQV+/oX5isFs2rpcUfNcHuVY/47ZfYLt4xUYqih8WVVHtYGzI6vA2Re3mOwx6xvJ0PHdUqeMe+U2HCr8lIacfMmxYsvNMLjNAaNLb1ifFckp4IXTbtbBLxnMXdGqzB5Xab4v7x8OBZdAeHk2yDd6gb1LKTjq4aghFgjIgmRbRJdpU4l7YMydfXAJg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Oree9r/U3c4rnsEUaSCo/nIcAgylEsSjXgOhfahbCvs=; b=YaSSfgJ9dmtX2Bm0bXFNjJJEumu8iFq0S1MxFhlvbRa/yTRE0iSwIanKAHrSIN4GpmhpDHsGm0jKjuE3iz+EHK4hUCb016rWBz5qdTVNAmx2VWdVyYsmMnSLxxKbsFEaHkrJOERdaCQCPaqmT8YMmUaCAd8sWV8OUxM7hQjT79grRMWYMFgYibnMNNKNcTSx8JnWa4GHZLCfBUDUltF7iebJdC0Ji0I1WJ2atyMf7zONTbWjtMXs09g0C8QOMw62ljBo9Dk8xalS6UAXfFBUFWP+Yj1SErjOQLqwCTrSA/Xu3eVUgkNrIFHzZfaCetlJh6d/Nhj/oJSF4sZGOLAC6Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Oree9r/U3c4rnsEUaSCo/nIcAgylEsSjXgOhfahbCvs=; b=muphYFJqhOZhEFTnci6G0Wb6qCTJtbH5lgwwct69atPxbDZpDLhuNncJvX8JlXPXH8ncWZaJwPEk/7QkhevL2ZN500cMGogOaE6HfCKpUlljKsSEx3uO4wtvaXLEF3U9CkXzsSfOg9cA8LmpkbwRHJQnKkdezyeSDKdBaVHqrmI= Received: from AS9P194CA0022.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::28) by PA6PR08MB10739.eurprd08.prod.outlook.com (2603:10a6:102:3d8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:46:39 +0000 Received: from CPH1EPF00000520.eurprd04.prod.outlook.com (2603:10a6:20b:46d:cafe::98) by AS9P194CA0022.outlook.office365.com (2603:10a6:20b:46d::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:46:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF00000520.mail.protection.outlook.com (10.167.241.235) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AkH8tFMOyaniOpk02z20VboR2knkvmuvSKDAN1cUTDZYnmV+SOai1isf3y68cUYRse+vKNHF3k8078Ou9vW5RrHeR6WmrAtL65/eUhXcxtoDmDoxsbrPVAFr+hxtLYFZMlYn4RiQhpaNcatPAHRueZaJkfYvWDEhprOX8/ZRciuTvnodTSwvL3ciXszwA/ZjTPKNgUPFxzjy7ZGixNSF7K2sTSzkWY59XJpqFJVRMYTWqGpz0fmbUJNx44beD/AvgLlZOFby3JeOl7+yPjBUa07+RK5ARTlujQtLoZFDTNTsUmFKoL4ymgTY2wgBC+iqz7aVQIJdJNDNSEVQdMj1Xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Oree9r/U3c4rnsEUaSCo/nIcAgylEsSjXgOhfahbCvs=; b=cycbKIzGeadllK5No66G2onu0cKzQyQokxi+/0V4UieMbK/FzM1xxUUZz1z2FA6ckZhMga7Q5/O72hS04150Fng1JbTodm6DX2SvDApc/oK3mHIih3XUnvEu8CuOZeexGAU5SaHT/kQUqBDTYMmf0sbctm+M+dDd65Pn3Blscm0DsuNRzpQCR8VVwdO0wSMWZQYXfxX6iO+DgL38RNAEkGFfh0yzD8eBRa5HE45A3alvmZHN+LFdraabmbjaVToF4yCoirdqMuKLacOd62TQYVWnWjfkg0c9ubpMby8cb4TfEyKcrGigXuUAChligy178e2pmFdNJv6+gIllIt8o6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Oree9r/U3c4rnsEUaSCo/nIcAgylEsSjXgOhfahbCvs=; b=muphYFJqhOZhEFTnci6G0Wb6qCTJtbH5lgwwct69atPxbDZpDLhuNncJvX8JlXPXH8ncWZaJwPEk/7QkhevL2ZN500cMGogOaE6HfCKpUlljKsSEx3uO4wtvaXLEF3U9CkXzsSfOg9cA8LmpkbwRHJQnKkdezyeSDKdBaVHqrmI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:06 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:06 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 02/27] drm/panthor: Move register access helpers out of panthor_device.h Date: Tue, 22 Sep 2026 21:44:56 +0100 Message-ID: <20260922204535.2850094-3-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0201.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36d::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|CPH1EPF00000520:EE_|PA6PR08MB10739:EE_ X-MS-Office365-Filtering-Correlation-Id: 5fb6ea97-065f-4e4c-54cb-08df18ea9957 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: kZngVoAazp3m2Ua7GA12oiMllRL98qTtwvI4C08fr0sUjNGv+L99uN3B1LIBpzX9Hl8LRZVzfsHbdgghPBBJ78QPY/3NoH5EHoC2HIBy6D7uzxp+f9XA4ovbU1PDydjxZo8MUSQtz4JuHI0s2dv38NB2aQwQJb6OHqdTT4n/SqWCnqla750e1N3yQDnH7dfXGTC/eTrLoqL2frT/sVwe/AyxwEZV4H7bwn/NEPM828e2FeF/YE+gLj4AShgU56nQ6z3MQoBu9xbX8438Bgsvz18SyjYCjEdjMx3AeUufmFPUV/oO+IrNwYnPT8We/DOjwxvSeD9mxJ8N7/EcUlpw++cjGU2Lqs2TQOYKiqgLiweViOBXuAnh5wxSs+1JjeF8wjxc6Pc5EmkQnLcIwnunAoJNPnLRMXyz/oo8SKbve0y80wcrRfRB701AlfHbtUS+Vuxlzq4ri3ZjnXvps/40pNbW24OEcoV2OPcrOXWe6iIzutMWIWSyT+NQSMIdRjSo+GbPB0PdhMOOIFdZs6K7pBWWSu4HQRBwSbOFrO7oGf+hbeyZiyKgPFVKC3ykRfdZj40o6ipspxPzSv6mG7vx46t4Td6VMwEGScWk43yVRGQcDTtskLYflhz21XIsNbMWAY1/YpSxNyRUELwH1UiNRg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: 5ZyYXFFiRjoV+0heVnfgUxwLAiUUhl652OsrOVeEh0p8CqDz9s8tLHIIDCy3suvxWFlXz9wocn+khh9FtLJ4t/8jIdxbcprjO/5fZG7Lg26i2z1gABodZWgujT5l1qkxy0brdo8UKRpCBuPDQUp0ubTcio8jFW6R4WeGmen73Jfp8RKkMwCFaD8quInF67eJoS/sYLT8y9SBAKqtNN0EK4ZhNCHSUj8zz5Dhp3Xy3N+M3pgS/U1OweBHVucHfmgzOXtQGLlPJTNidPiFgnOnz7LjXNAsPD7SOdl2IbeeGwv7bvoYq9c5+W2dSImCrOZVHVPIbEw5jE48BkrUTIbTyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000520.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 43cd8b07-47b7-4859-7f2d-08df18ea85f6 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|14060799003|82310400026|36860700016|1800799024|35042699022|376014|10067099003|56012099006|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: 74x8W779E0rRQ7hdsNM4FS0U+Rn2r7lU0YlY9TIavDT2b1/dEAVO64693/dOf4NerbdfhZ/sQmrkIeio1e8CDF5O9o4YMADIJzgy7lI6NcOxmzS2+z6RHCjh7lZCIMFuqZC99f7Y8nzASmLfVVLFoOocGIdofQdnAHQHWrgKxhsFDAAgertEqjlcKbhLkJdHuyAWQRlYoVbxrzcjxoc1SRZ1nqR8l1IeLLIEvzQNNdaHdcBPjZrZ12VI91kMOIkz9KF5ZczYfLqfzbxR3ZL5WGkBgXn5/ty9m8m60x6NC1JikIqyxFuAtU4z+wbOLnB4//ANOw9xUvxaxfvFDCj8Z63G2025M7MkCJtPirjxMvAcvTdFUqxlJ4FUGp93E5ExP+PtUYGYwo6oRBJRef3YrDDf/behWdKvpnSX5bq+kNs2YEpLazyHHR/nhQkWe4fl0tbUNiyOjSE64K51RbIrtaXEQ8MjxSFUSxeuIhK9RXcxDsI40dAlI65gqdXbU2qidLDR6BEr7+2Q1CjclrI21ZYosuk+0qvCY+QwkdIsPXJf5z9BlaBlL5IKdm4gIB4e7qhy6QbT3HSTmcyzzAyqJayaMwWJAZcUsWmlsLvsRZKkaSHHocCDqRmcRSV/Kfic72QwcZIfi6aDcHA09OILC0zEnEl6aGCBirWe6stBZZNkQmMX0OCccg0f+Pi0M+gy X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(14060799003)(82310400026)(36860700016)(1800799024)(35042699022)(376014)(10067099003)(56012099006)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: b9rMmLDsdhsD2cHRrpFjyNa4RMBcuGI05a42dN2BwbepZTfShoH5qgO4Xzxhv4sDNbgvnb+CxtqeeIwyazBP6xsPt4+D5kHjavdmHlY4ZfJCSovZVunCINQYQvsyIJeP6wjwJWTZSZi1RwastamBKg00Ap/leMIOGRurVce9l7Tq8Asq0EsajR6VnFUzbyVITSbFqF+IU2ood89GnSG2QGJQkB9R4EQ0d+rLCXMSDwR1PMcrA7KXpfSW36Xo/01xx+DteEduLt+waoP1zWpAqDlyWSrDar5N5CRs+trZfPa49kcXD47DB9QtgndluHfIomc2pwY7idnkAVAYUNUBiPLQlAMZGnL0AyrsGLk6IW7CMxnmaSQSQHeCClFPzAB+MjmtuebpV0A+BJsGVoALnY9szYw157gWqGPw7M285ZgAbSNTf3VVR48Icm6lkrUd X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:38.2340 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5fb6ea97-065f-4e4c-54cb-08df18ea9957 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000520.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10739 Content-Type: text/plain; charset="utf-8" Move register access helpers out of panthor_device.h to allow reuse by other panthor drivers that will be added to enable v15 support. Signed-off-by: Karunika Choo --- v1: - Includes "panthor_device_io.h" directly in "panthor_device.h" instead of peppering multiple files with the header. drivers/gpu/drm/panthor/panthor_device.h | 74 +----------------- drivers/gpu/drm/panthor/panthor_device_io.h | 83 +++++++++++++++++++++ 2 files changed, 85 insertions(+), 72 deletions(-) create mode 100644 drivers/gpu/drm/panthor/panthor_device_io.h diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index b55a3f9edd414..54031c5252473 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -6,7 +6,6 @@ #ifndef __PANTHOR_DEVICE_H__ #define __PANTHOR_DEVICE_H__ -#include #include #include #include @@ -19,6 +18,8 @@ #include #include +#include "panthor_device_io.h" + struct panthor_csf; struct panthor_csf_ctx; struct panthor_device; @@ -495,77 +496,6 @@ panthor_exception_is_fault(u32 exception_code) const char *panthor_exception_name(struct panthor_device *ptdev, u32 exception_code); -static inline void gpu_write(void __iomem *iomem, u32 reg, u32 data) -{ - writel(data, iomem + reg); -} - -static inline u32 gpu_read(void __iomem *iomem, u32 reg) -{ - return readl(iomem + reg); -} - -static inline u32 gpu_read_relaxed(void __iomem *iomem, u32 reg) -{ - return readl_relaxed(iomem + reg); -} - -static inline void gpu_write64(void __iomem *iomem, u32 reg, u64 data) -{ - gpu_write(iomem, reg, lower_32_bits(data)); - gpu_write(iomem, reg + 4, upper_32_bits(data)); -} - -static inline u64 gpu_read64(void __iomem *iomem, u32 reg) -{ - return (gpu_read(iomem, reg) | ((u64)gpu_read(iomem, reg + 4) << 32)); -} - -static inline u64 gpu_read64_relaxed(void __iomem *iomem, u32 reg) -{ - return (gpu_read_relaxed(iomem, reg) | - ((u64)gpu_read_relaxed(iomem, reg + 4) << 32)); -} - -static inline u64 gpu_read64_counter(void __iomem *iomem, u32 reg) -{ - u32 lo, hi1, hi2; - do { - hi1 =3D gpu_read(iomem, reg + 4); - lo =3D gpu_read(iomem, reg); - hi2 =3D gpu_read(iomem, reg + 4); - } while (hi1 !=3D hi2); - return lo | ((u64)hi2 << 32); -} - -#define gpu_read_poll_timeout(iomem, reg, val, cond, delay_us, timeout_us)= \ - read_poll_timeout(gpu_read, val, cond, delay_us, timeout_us, false, \ - iomem, reg) - -#define gpu_read_poll_timeout_atomic(iomem, reg, val, cond, delay_us, \ - timeout_us) \ - read_poll_timeout_atomic(gpu_read, val, cond, delay_us, timeout_us, \ - false, iomem, reg) - -#define gpu_read64_poll_timeout(iomem, reg, val, cond, delay_us, timeout_u= s) \ - read_poll_timeout(gpu_read64, val, cond, delay_us, timeout_us, false, \ - iomem, reg) - -#define gpu_read64_poll_timeout_atomic(iomem, reg, val, cond, delay_us, \ - timeout_us) \ - read_poll_timeout_atomic(gpu_read64, val, cond, delay_us, timeout_us, \ - false, iomem, reg) - -#define gpu_read_relaxed_poll_timeout_atomic(iomem, reg, val, cond, delay_= us, \ - timeout_us) \ - read_poll_timeout_atomic(gpu_read_relaxed, val, cond, delay_us, \ - timeout_us, false, iomem, reg) - -#define gpu_read64_relaxed_poll_timeout(iomem, reg, val, cond, delay_us, \ - timeout_us) \ - read_poll_timeout(gpu_read64_relaxed, val, cond, delay_us, timeout_us, \ - false, iomem, reg) - #define INT_RAWSTAT 0x0 #define INT_CLEAR 0x4 #define INT_MASK 0x8 diff --git a/drivers/gpu/drm/panthor/panthor_device_io.h b/drivers/gpu/drm/= panthor/panthor_device_io.h new file mode 100644 index 0000000000000..2287a0d9f86c2 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_device_io.h @@ -0,0 +1,83 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_DEVICE_IO_H__ +#define __PANTHOR_DEVICE_IO_H__ + +#include +#include + + +static inline void gpu_write(void __iomem *iomem, u32 reg, u32 data) +{ + writel(data, iomem + reg); +} + +static inline u32 gpu_read(void __iomem *iomem, u32 reg) +{ + return readl(iomem + reg); +} + +static inline u32 gpu_read_relaxed(void __iomem *iomem, u32 reg) +{ + return readl_relaxed(iomem + reg); +} + +static inline void gpu_write64(void __iomem *iomem, u32 reg, u64 data) +{ + gpu_write(iomem, reg, lower_32_bits(data)); + gpu_write(iomem, reg + 4, upper_32_bits(data)); +} + +static inline u64 gpu_read64(void __iomem *iomem, u32 reg) +{ + return (gpu_read(iomem, reg) | ((u64)gpu_read(iomem, reg + 4) << 32)); +} + +static inline u64 gpu_read64_relaxed(void __iomem *iomem, u32 reg) +{ + return (gpu_read_relaxed(iomem, reg) | + ((u64)gpu_read_relaxed(iomem, reg + 4) << 32)); +} + +static inline u64 gpu_read64_counter(void __iomem *iomem, u32 reg) +{ + u32 lo, hi1, hi2; + do { + hi1 =3D gpu_read(iomem, reg + 4); + lo =3D gpu_read(iomem, reg); + hi2 =3D gpu_read(iomem, reg + 4); + } while (hi1 !=3D hi2); + return lo | ((u64)hi2 << 32); +} + +#define gpu_read_poll_timeout(iomem, reg, val, cond, delay_us, timeout_us)= \ + read_poll_timeout(gpu_read, val, cond, delay_us, timeout_us, false, \ + iomem, reg) + +#define gpu_read_poll_timeout_atomic(iomem, reg, val, cond, delay_us, \ + timeout_us) \ + read_poll_timeout_atomic(gpu_read, val, cond, delay_us, timeout_us, \ + false, iomem, reg) + +#define gpu_read64_poll_timeout(iomem, reg, val, cond, delay_us, timeout_u= s) \ + read_poll_timeout(gpu_read64, val, cond, delay_us, timeout_us, false, \ + iomem, reg) + +#define gpu_read64_poll_timeout_atomic(iomem, reg, val, cond, delay_us, \ + timeout_us) \ + read_poll_timeout_atomic(gpu_read64, val, cond, delay_us, timeout_us, \ + false, iomem, reg) + +#define gpu_read_relaxed_poll_timeout_atomic(iomem, reg, val, cond, delay_= us, \ + timeout_us) \ + read_poll_timeout_atomic(gpu_read_relaxed, val, cond, delay_us, \ + timeout_us, false, iomem, reg) + +#define gpu_read64_relaxed_poll_timeout(iomem, reg, val, cond, delay_us, \ + timeout_us) \ + read_poll_timeout(gpu_read64_relaxed, val, cond, delay_us, timeout_us, \ + false, iomem, reg) + + +#endif /* __PANTHOR_DEVICE_IO_H__ */ -- 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011064.outbound.protection.outlook.com [40.107.130.64]) (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 073C5518122 for ; Tue, 22 Sep 2026 20:46:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.64 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110032; cv=fail; b=iZ3oE6L8KQ+F0cVLc3Ko3VC+k/hi7X8pOA7hVBdh+U1vMX7ub8yjtwYN33uM0ANdduYcZsexIzrW2kH228CcOgFsgtmKgATYTGP9/flpS0Mx6maoUONcEUrUfIQm4+ec4xYfxAdN8W201rOPuQMf6sX9WDbtq5WFjlt+BcxScrA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110032; c=relaxed/simple; bh=KbOfv7yKExbkCjtIaf5RPZAlrCVSTq0T314tjj7Jsdk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=j2CIaFWasMJ5t/JDVPlnEIdPY1Ifzi7fJ5iD3uvRGUoEGUnJPlYxkoKkHS0aRyqz0fd27Md7n9uvk+Q65wlHrim9DFl7gptOJ3g1hdy9qI35jLudX6sikNhjPNhJozxLsB1DgEwzsucnmUISxXyYmp70dNhKQfOLscy4PoUszpE= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=UAK7PgFX; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=UAK7PgFX; arc=fail smtp.client-ip=40.107.130.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="UAK7PgFX"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="UAK7PgFX" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=gDU66RCMzrFrEFMD7kZRAwVCTk/7Ho4QV3v1JAVcivwKi78RGT/WoAwkmstRfAVMFSAL0k4ymqBkRljDlKovww9+o2Fb/RzHnVLyoK5OknJM2vwyYSCsrUNtOKiUibnvtwMdIGRJNYkyhPXpMt92iq4IQqeXYiE+WrYh1GKpJqvX6LPyUzlO8G9UgHktgtYU5CDyy8d6SAQsRBu3cWsjJHeHmdz6vsXjfBRFVtVTiGeAypokNAF7XeDv698zzKy9m2k2EqId+fr4f8B91ry0jo1wC5KVJTeuw4NPXV/ocVKaPStuD5AvPVmB6r51ISTI2g7ipnaq8DsTkqMesEkilA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XGav47lB3rxBs9sbX+pcOifYQnZe+zp2A1/NHM1WpGw=; b=o7aeoOdLnkFIh51wT0dD+sBFpN4x4ngN1HMFKkbwsHf1TQCmSKq23KuzLY3gSb7R9XG0WrK8f+kxNRurc2mXemQA7e0CXEktFODxniyEiDzLw63xD8uVF9OgQViGbq/4LI493IVvt4jIYNb7vmqx9aaiHF6gqV5N2DWhUpLg6Kn9lcIaZuSDWL4SNqslQtWT455S9PeAhjHEEWbukml6ek+tbvOAaGWMF1pt4Vnyy1gNFGN+byZ8eh6KaNvz3fagJcVM3S5jqhbqxodwP2xVMGv4532BirSFgcKblWlXQP19FkGU1uZMNsENBs9BpIkua1lavGzsqZ3dNov2lNVXiQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XGav47lB3rxBs9sbX+pcOifYQnZe+zp2A1/NHM1WpGw=; b=UAK7PgFXYAYFstOQION13YHZxFvpNmrJ2xwrZpTB9uofIG+BDxqLRn6by4iWowzfCLVofc5q0Y+TuWjTXwx7lPsWO8RjDObX8EExU3b+MLxAvEofPRJw6qU2jAwYQByjeD4fZNNauGAjEV0JcwLouWtJgizN/kbpQykiLnHKa5c= Received: from ZR0P278CA0132.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:40::11) by DB4PR08MB8200.eurprd08.prod.outlook.com (2603:10a6:10:380::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:47 +0000 Received: from ZR1PEPF0000E6B6.eurprd07.prod.outlook.com (2603:10a6:910:40:cafe::99) by ZR0P278CA0132.outlook.office365.com (2603:10a6:910:40::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.13 via Frontend Transport; Tue, 22 Sep 2026 20:46:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by ZR1PEPF0000E6B6.mail.protection.outlook.com (10.167.241.69) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LUG/+kNX5GmQMV1vkv5YsXxqvESHDADXZLUROdhLifxtkdVVKXeFWsq9td3KdYh1KPzOO4rD2p2LlVXwWWKgWUQ0izRi9Ylm6d9Hs5DXGyldxivYjt8rdQ4m5LCTksP7IpcebYrlryK023feONk0nLXL4oFGfVxrr+l4tVivGbEhf28tQGMpWKyPX0z3wcrKfzu+yh0T5O5QKpfy8fwo2WR69CHN8RkKIj4ztsK9nxllk5WyFZtbl3UIJflaBX2AlCm7dWoq5TS1KzeZr46dSkObEbrEgDP+LTu/3QaUXhoHakZcmkwaZ1ih8QRhcZle2BD9V7OV+MHIIWUXqvlBLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XGav47lB3rxBs9sbX+pcOifYQnZe+zp2A1/NHM1WpGw=; b=PaSFcJv2Puwr800y3gftDqbmhbEF77Wc+E3X/uAS3wqqU4ROaCeiKdWIDx5f1k2GYASoHoDixvldM2fxCeYtLqxJsJB30vUisM4xjPDO2D8N0Rmf137J4wKmR6XZKJecdV+XKMIYJqFcYKEiqcu+b3HiGlUUUDUf3vW8HMwZlVyJG2M2LPid33fb+txiB40CPCHTBDwqjtJyZtWpl9WfncJgFnYzRPylNbmDFs4yN9OFyMKO86kTgnllN82of3EjAr0rL8Kd8s5/Ppp5U3bnQHQjALRmiuC3siRo0Y81Ygjd1qj4sfOQA0lccVxlHs2jytaQpEF2+jmp7A8LD4dw0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XGav47lB3rxBs9sbX+pcOifYQnZe+zp2A1/NHM1WpGw=; b=UAK7PgFXYAYFstOQION13YHZxFvpNmrJ2xwrZpTB9uofIG+BDxqLRn6by4iWowzfCLVofc5q0Y+TuWjTXwx7lPsWO8RjDObX8EExU3b+MLxAvEofPRJw6qU2jAwYQByjeD4fZNNauGAjEV0JcwLouWtJgizN/kbpQykiLnHKa5c= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:10 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:10 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 03/27] drm/panthor: Parse and store GPU_ID fields Date: Tue, 22 Sep 2026 21:44:57 +0100 Message-ID: <20260922204535.2850094-4-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0416.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18b::7) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|ZR1PEPF0000E6B6:EE_|DB4PR08MB8200:EE_ X-MS-Office365-Filtering-Correlation-Id: 3406434a-b624-482a-1e20-08df18ea9dfe X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 7jfGMx0lV3dzenuUDfNPvJE+BpO9JXnqoH07N8tVkavZ9BsMUEnPLNNtIopaNZVHqWlz/sC15XoMYk4rHVNJPgQUMl0gc6efl8UVnffslc5Odiy0biB05b+zLuciiaU8mw3vVg9cIayPy6zOaWefABG2Q8/3HngAXixafZPJ81/FjNdNrfCqsvMIatbX4BTanuN2bj78hty0SyA3THGSzbzpCeyHAKW38upaV+NXiE03/a7APlmkt3PRArBldbWaSy9NglbJiz3nJDx43T7Ay9ruLQrrhEmMzMSZttlkCoDzzxA/WYeHFYuka08DL7rsYqejtvo7Zbyy9c/vGHRFxp+3jc1n6Ucm/7D23YQFxjfxntv20bVMKXb4ZxJtWxWhCVHMNZBifDMtp/vrHp36lyhuLvxj3CWrk+Tll844DyFi2zG9UjHL/y0gSI4/MmWOVkkdVCHaLit4azCuHMoQIvWpKpeq4T+0ke56oNhvhabXxOlFAbMT9Y9W8mz1PlAlW1OyT/EYbsgTbQuMrtoyPDrElh62kDW+C8XlmMCmWPzYEXCqFw7mT20Y1DL5YYrNHLCZUdUE+U6YTge0iBwJaI1zhmN1Ic9pfm4yjNL9oE8dYqy6U983CpiVFEOFZ4FbX7N9fRikYUfcVx5wOPulCuobRBRaVo8x7pELs/VmHCY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: s+sZEbJW6EU10IduJ3ZH5ArqnIl4sBX35+mSWx/voV22imJwLeFwv4Cy9B0SJp1e6lKXlDgDlbCPkSB4pwyca4Oxs+xrUiFz9zXEgU15FtG14kNP1GzFtXet92Tk2jDMrdeBaJQashWjHvN26KON61LLD4zd5hL/Re1oCB1vR+7Q6EuQWmd6EZcOD0t9v0Xbv6euxbxlRqzZpad4EcKPrYIN/i8KnGzevvg+iWAlYDSCnKifi5AxKYBlTEHtbHRMCJ72FbUY8rzikF1Jj2mKS9VdkNxnUADZwW977AeXgztm21ao6zUavoLkFLrGBYBXtZfdCjr5k1FkuxxX8sYGNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: ZR1PEPF0000E6B6.eurprd07.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 32749f9c-1c53-462a-0af4-08df18ea88a3 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|14060799003|36860700016|35042699022|1800799024|23010399003|18002099003|22082099003|11063799006|56012099006|6133799003|10067099003; X-Microsoft-Antispam-Message-Info: OcvQfEM1FU/wGJ6N3LbFxcQqWUmP8ZWYgu/StP8QN06cfbl1IA+vwpg3CpaQY2WRjOsYJ8fRQOOhkp7idJ1HZMXSe42uif2HTxY2IfE2Cwl3Ag4Lp/3+v7qK+2hHVxdMIc4r8oe6I5cdVGgH/pVTT12TniVYkJ6lvxTeC+nYN2a4suwTp5dHpsTFpYdr5932Ds0K79XnT7RcLt5/MHbRqltl46VYDqYJTto2yp0Ip9+jJmlfhSXQa5P+5dF/rWJCdoYRgs1Qf/4BfwfmVcAV/TBZoBbaxOzkS0lzir4Tksj2zd08q/lJkwzfeMEX5Ggg2XQ3n0SQ+7Krvmkpp9P7VQaUdhGtlSWdFbOYCoY+912cjHjwKBKL+a6ZXALUr+AKCcK9xOZK8tuPjmebiPYAi26LhqBvzw9jb4SIcsG5GjGnADChGyhQKt7cbfhGNdbD9QGFd8xbuHdsrz5kbcROPFdZyy8+c7sM5ikfcyRrJDl+VZJQcIV/2pxJ+4ei9lbcTxzZVjTjsSYsyzYoSh7+IKVPGBnicLrqSAwv7vfk/XJREj6M4ugAPN260XxS/i3VbKCyMlRd0/9V2mRDViTZTyXSMSbNvtS5nKTYpi/ygTXQBsiTmO/HGzYLpfe/pTBPPZYaygl97/Xmrl4TrZD0t12GRbmQjFN2D05wGBQp7wb00sKAYJMuXoeJ4AQ+UCfwlsc4gzBgkT8CYbW16qlqaw== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(14060799003)(36860700016)(35042699022)(1800799024)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XqmJLSzaVKtbxATwdmPRB2BmTO8k4yROa2bnSCRRthryHPV0CfJ3t7+w4Waqbv+4dhBlo3FQhkSvAD2wUfFWZfiaYG9BdrFP/z7W+yv970cNNMSXOmz2x4ErjlGTHbHjNaZ8KkhZBZgyu6sYFrN8kC3KyJb1lKf1zw7qvyTC3u0XfPuLxWqQLR8dyTdGdqtAR2BgbpZYPbJI1mHDpbuFLhDWTywPOHQ233H+CGkeq39I68L37nCMnaf5t5Jydr+UvGcpIxeqW3+UkNflljfkkd2l3r1H6G3KlNUPIsdaeGUe1iF+ASSnnLrteVqKiDamFi0K69ux5t3OeaBrUklTlFhO5yYkBogBUekBQKeV5pijOWHB4bbSSsXfN8K3X6Cdh9n/B7rtupyoyJQ2jghE82PcLLtNRdw3zHKJOy6tHHevc9hz75xaHY5SXaaziMjY X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:46.0273 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3406434a-b624-482a-1e20-08df18ea9dfe X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: ZR1PEPF0000E6B6.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8200 Content-Type: text/plain; charset="utf-8" Prepare for Mali v15, where GPU_ID expands to 64 bits and its field layout changes. Introduce a small panthor_gpu_id structure and parse the GPU_ID fields once during hardware initialization. Convert existing users to consume the cached fields instead of extracting them repeatedly from the raw register value. This centralizes GPU_ID decoding and makes it easier to support both the existing and v15 formats. Signed-off-by: Karunika Choo --- v1: - changed struct panthor_gpu_id into a flat structure instead of inconsistent groupings. drivers/gpu/drm/panthor/panthor_device.h | 29 ++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_fw.c | 4 ++-- drivers/gpu/drm/panthor/panthor_gpu.c | 2 +- drivers/gpu/drm/panthor/panthor_hw.c | 26 ++++++++++++++------- drivers/gpu/drm/panthor/panthor_hw.h | 3 +-- 5 files changed, 51 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index 54031c5252473..ba93a100ceda2 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -110,6 +110,32 @@ struct panthor_irq { enum panthor_irq_state state; }; =20 +/** + * struct panthor_gpu_id - Parsed GPU_ID fields + */ +struct panthor_gpu_id { + /** @arch_major: Architecture major revision */ + u8 arch_major; + + /** @arch_minor: Architecture minor revision */ + u8 arch_minor; + + /** @arch_rev: Architecture patch revision */ + u8 arch_rev; + + /** @prod_major: Product identifier */ + u8 prod_major; + + /** @ver_major: Major release version number */ + u8 ver_major; + + /** @ver_minor: Minor release version number */ + u8 ver_minor; + + /** @ver_status: Status of GPU release */ + u8 ver_status; +}; + /** * enum panthor_device_profiling_mode - Profiling state */ @@ -169,6 +195,9 @@ struct panthor_device { /** @mmu_info: MMU info */ struct drm_panthor_mmu_info mmu_info; =20 + /** @gpu_id: Parsed GPU_ID fields */ + struct panthor_gpu_id gpu_id; + /** @hw: GPU-specific data. */ struct panthor_hw *hw; =20 diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 4f1fab66a13bf..13efed3a2ea72 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -809,8 +809,8 @@ static int panthor_fw_load(struct panthor_device *ptdev) int ret; =20 snprintf(fw_path, sizeof(fw_path), "arm/mali/arch%d.%d/%s", - (u32)GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id), - (u32)GPU_ARCH_MINOR(ptdev->gpu_info.gpu_id), + (u32)ptdev->gpu_id.arch_major, + (u32)ptdev->gpu_id.arch_minor, CSF_FW_NAME); =20 ret =3D request_firmware(&fw, fw_path, ptdev->base.dev); diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index a383b04f101ed..ade2646e2caf6 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -73,7 +73,7 @@ static void panthor_gpu_l2_config_set(struct panthor_devi= ce *ptdev) if (!data || !data->asn_hash_enable) return; =20 - if (GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) < 11) { + if (ptdev->gpu_id.arch_major < 11) { drm_err(&ptdev->base, "Custom ASN hash not supported by the device"); return; } diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 4c96573b649a1..2143e57d48106 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -119,9 +119,9 @@ void panthor_hw_power_status_unregister(void) =20 static char *get_gpu_model_name(struct panthor_device *ptdev) { - const u32 gpu_id =3D ptdev->gpu_info.gpu_id; - const u32 product_id =3D GPU_PROD_ID_MAKE(GPU_ARCH_MAJOR(gpu_id), - GPU_PROD_MAJOR(gpu_id)); + const struct panthor_gpu_id *gpu_id =3D &ptdev->gpu_id; + const u32 product_id =3D GPU_PROD_ID_MAKE(gpu_id->arch_major, + gpu_id->prod_major); const bool ray_intersection =3D !!(ptdev->gpu_info.gpu_features & GPU_FEATURES_RAY_INTERSECTION); const u8 shader_core_count =3D hweight64(ptdev->gpu_info.shader_present); @@ -245,13 +245,13 @@ static int panthor_hw_info_init(struct panthor_device= *ptdev) if (ret) return ret; =20 - major =3D GPU_VER_MAJOR(ptdev->gpu_info.gpu_id); - minor =3D GPU_VER_MINOR(ptdev->gpu_info.gpu_id); - status =3D GPU_VER_STATUS(ptdev->gpu_info.gpu_id); + major =3D ptdev->gpu_id.ver_major; + minor =3D ptdev->gpu_id.ver_minor; + status =3D ptdev->gpu_id.ver_status; =20 drm_info(&ptdev->base, "%s id 0x%x major 0x%x minor 0x%x status 0x%x", - get_gpu_model_name(ptdev), ptdev->gpu_info.gpu_id >> 16, + get_gpu_model_name(ptdev), ptdev->gpu_id.prod_major, major, minor, status); =20 drm_info(&ptdev->base, @@ -273,7 +273,7 @@ static int panthor_hw_info_init(struct panthor_device *= ptdev) static int panthor_hw_bind_device(struct panthor_device *ptdev) { struct panthor_hw *hdev =3D NULL; - const u32 arch_major =3D GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id); + const u32 arch_major =3D ptdev->gpu_id.arch_major; int i =3D 0; =20 for (i =3D 0; i < ARRAY_SIZE(panthor_hw_match); i++) { @@ -295,10 +295,20 @@ static int panthor_hw_bind_device(struct panthor_devi= ce *ptdev) =20 static int panthor_hw_gpu_id_init(struct panthor_device *ptdev) { + struct panthor_gpu_id *gpu_id =3D &ptdev->gpu_id; ptdev->gpu_info.gpu_id =3D gpu_read(ptdev->iomem, GPU_ID); + if (!ptdev->gpu_info.gpu_id) return -ENXIO; =20 + gpu_id->arch_major =3D GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id); + gpu_id->arch_minor =3D GPU_ARCH_MINOR(ptdev->gpu_info.gpu_id); + gpu_id->arch_rev =3D GPU_ARCH_REV(ptdev->gpu_info.gpu_id); + gpu_id->prod_major =3D GPU_PROD_MAJOR(ptdev->gpu_info.gpu_id); + gpu_id->ver_major =3D GPU_VER_MAJOR(ptdev->gpu_info.gpu_id); + gpu_id->ver_minor =3D GPU_VER_MINOR(ptdev->gpu_info.gpu_id); + gpu_id->ver_status =3D GPU_VER_STATUS(ptdev->gpu_info.gpu_id); + return 0; } =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index f797663893b2d..bdda3b10e660a 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -5,7 +5,6 @@ #define __PANTHOR_HW_H__ =20 #include "panthor_device.h" -#include "panthor_gpu_regs.h" =20 /** * struct panthor_hw_ops - HW operations that are specific to a GPU @@ -58,7 +57,7 @@ static inline void panthor_hw_l2_power_off(struct panthor= _device *ptdev) =20 static inline bool panthor_hw_has_pwr_ctrl(struct panthor_device *ptdev) { - return GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) >=3D 14; + return ptdev->gpu_id.arch_major >=3D 14; } =20 #endif /* __PANTHOR_HW_H__ */ --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012034.outbound.protection.outlook.com [52.101.66.34]) (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 C081C443C0B for ; Tue, 22 Sep 2026 20:46:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.34 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110044; cv=fail; b=YhgATzj5by0X+CI3BtoVJvf7nVrGO6OOqGWMaZikJjQ/u1XhFDmn9jEMmHulWRyuuojJ89s87XJhdbKuAECwVKJjh+fkhuanYHRdIwSAGJnWkyEZX0a9IuLMsIqYABog7AM5Nq2zWonVgdKDvVV9mNOLNmFRIyU3XZWHARKMinE= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110044; c=relaxed/simple; bh=hd8lUWD5NT0n4aJqDGw8SwJLmflfygi9D2qm3ZnspnE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sTqwnil7uThb9mP0t1G8Ux64jjPFkXMsz7/cPJQuuoqkhKUKbU2w3XHxBUsHLbjThGD/U/VVQFiwRKRv6IwMqgjqBTgLyG3AtbuwbcSVYAy10Nm7zrUapFVovV04co32P2E3J624BwNMEPmKWTEHXTLoyrZdlw85PiW+D1031ds= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Wr+zVj2J; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Wr+zVj2J; arc=fail smtp.client-ip=52.101.66.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Wr+zVj2J"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Wr+zVj2J" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ULpHY/CXTbjcHcvTUyGxXe6b4trUmmUPNqLdy+4Eg7upqnPhN5wEjkNjL+QPVuJp730CH536hlQlbOM5m1zoKYeuO8osyybB1trSw+0GNEYUZjoBC177oPmGU6OMgxwxErEIdf5h6o8xvAeGYp8IlqE3cxD/Y9iG40c3knXYLu54P3EAU+o6CLSgnkbb0jbvqgV96awwdn7KE1wh1WriNAhAcSSiys4f0BCrpK/O00DNXXmg4EYCYjwC/ZT9VMOYyCtyolB6yKFye1nImpTTE4+HQuwOd5zwzl+pD4aDu+shGIMnY1/dMIeTD3CiHZC3+Z2jwLOplh1J3Re3zA3xvA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6TOubLhCWENXXq1VGrm6QlvMSKDEp0BBppU4m2n+Ch4=; b=cfPe6P+U2QjBsdln+vU4MpndX6LcmlKP4uFcn1c2RCjIJGvUREXkJhwhFefSbK9i5LQNSWXYcWI6Z4qMsChXRZVk+1aHhM5ujjaEgonGbxEKekX1oF7+RzsRk/LdJpd+rFPm1nNHx0OiowcB4Y+ch+9piukkUjFFhOoAYZOzsHdsqK8HTqQgPdAZwaAvUzWY7zmpu+hT/l+G++KqIIVTkAKhbMlAwSny9PpzBadGwOPpaHN7iEg5BX/joC/8a5bl8FL/z1Zl4ORi2qgHji2fNCgUEuvCLAp7ekWo2JxQkFUSKjyDApjYhFtv8gPDp+6u8bakwfuSjVmG5hiAWpqiTQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6TOubLhCWENXXq1VGrm6QlvMSKDEp0BBppU4m2n+Ch4=; b=Wr+zVj2JqV8b8NO1KmP7KfPFFlaB60nYD3T6xNHua/3GaannS7Y0d+oXdNLGInspreczPBAQ36lI5XwDcBL6GNaY8dSBZN8nlggQgG2KAsSL+gDrWMydW6mQoVY0QmnP0Zr2nr6e3ZUh5+XKkzPm+cZuq54RosUPPrDdzQzx62c= Received: from AS4P191CA0022.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d9::13) by DU0PR08MB8709.eurprd08.prod.outlook.com (2603:10a6:10:403::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:48 +0000 Received: from CPH1EPF0000051A.eurprd04.prod.outlook.com (2603:10a6:20b:5d9:cafe::4d) by AS4P191CA0022.outlook.office365.com (2603:10a6:20b:5d9::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:46:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF0000051A.mail.protection.outlook.com (10.167.241.229) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eg2DRBJQgKYHuV5FfFzQmkea+vppHM1yEg62tppLMAgx22Yb3aRr1k6RBdxNcaPxCgFAOlqBJONQEl3QoLGEmDd7KZS7mYyCaG/tNWXZTIZ1m28YmJSwzrced7vUwEOvG7Uqyt8/kYUBGcfSBSmk37njGJg3gYhZssy5QuJ89YJXveA1mKPRMBQvMp42LzVsqwSzPrzVcUuzgeiIq2fI50Kt6XodOdAy/PIfKXxelWzKVQDrZVJFAcZKUU1abEGllpeRWe4ELWfvVdUKYKEdpGGs+OBuz4v+w/YM1n2CXu9GSLWiXnRkXbApPYIKTmA0qd8BMWdUc1HDkT1matsiAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6TOubLhCWENXXq1VGrm6QlvMSKDEp0BBppU4m2n+Ch4=; b=baP28ATgyb9+UA76NTRo9KzLxLaOyj3/nA5uHP9M+9fCYnERvZ1BJZ1RUUkH1f/Qa6zWFEY19Q0739GpKvneKwgrPZDK/SnQWKYvoqEqj5i6/ppGQfTWOY5IaTRTvSZE/2BpCreOStE3wEK30rFcRJwkKhVCkuVZ129Wxu6a6c4crOZ/LBE8piUkFkNy5x/mexo6h+3objzp9bFSUAizVXCpYsTxSGJH3CPz28P+v196n6w1hwA0cZ4Blt35WegPN11Wo2xRp9edCTzhFJrBjYeLowLsSm2UgwrD9CWL2wjOyj/hSR5njuWBHtvuBHOVOW9ng5oBZI0VZY/Ez8u91w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6TOubLhCWENXXq1VGrm6QlvMSKDEp0BBppU4m2n+Ch4=; b=Wr+zVj2JqV8b8NO1KmP7KfPFFlaB60nYD3T6xNHua/3GaannS7Y0d+oXdNLGInspreczPBAQ36lI5XwDcBL6GNaY8dSBZN8nlggQgG2KAsSL+gDrWMydW6mQoVY0QmnP0Zr2nr6e3ZUh5+XKkzPm+cZuq54RosUPPrDdzQzx62c= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:15 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:14 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Daniel Almeida , Alice Ryhl Subject: [PATCH v1 04/27] drm/panthor: Add 64-bit GPU_ID decoding for v15 GPUs Date: Tue, 22 Sep 2026 21:44:58 +0100 Message-ID: <20260922204535.2850094-5-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0039.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ac::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|CPH1EPF0000051A:EE_|DU0PR08MB8709:EE_ X-MS-Office365-Filtering-Correlation-Id: ff721487-80e7-4fe5-2a87-08df18ea9ec7 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: qrsfiqXlmtMjstb2kzUXidoZ+GZDgSrwVat3dic75Y8+6PoieVNKxE/8j95A5cYHzdFiqDK+mEa/0oIUhyjm6S7RA1+/RAoYblfNPD39K+lxk0Blhw1CD8sen6nF8DNM25TNlL2Shcp1jOwuGJuMGUsei6LMX1cLwCOT2tNnPApJUO+t4UKgroBzqNaq87jNfI9C9wOGd6ll1ZttuJKuCx6Xl35hNRxjU4LeQzR01slk+/Lhplu+p6uBxfs8NlKnUttTV+YDKRCyuzU67dmL9IrV2lqcJgfl//G5bNwdRKjzwwTaGBo/OjqDroNhySeLUxAwRLwHTI1UUt30t4jS6JH82VLBePFd/AyMHCvwtl7UCj458tlVN7BGMxTu0BUu+U+n4B444GvFd4oxQ8JmHBVCXKG7Aci3cRB2QV71K+L3CllafaY4sD1FnSWMO8Gj4c5x9BrkonpGBXRwcFx8CecxA6eXrTulRo+Yh/pobQgv/zt7VRVj9bbcAVjthXeUoSyjTy6g+bg2W9BCmcU7sTgnUzIPKf+0OqA/Mw5WUA9LNxeR+GIxCarz8G1b/jimVZRKDsvlgIvbI+3QV+TeFbUYveSR3sy/QBggJjPpPINrhPplUoNxNZfBtB704UN65nFfn/7BHPK704t6pOYr9EKfapDS0quWYZxWgF3tjrs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: fDzXOAM0wVZmZMTPIdpS/zWvGxEPWAZeG3eqSUIrCzrcC8oavS+fdQ58oTlu5Yna3gne2DwLj7pJjn0Cj8R9DMyX7pGWvEEipRLq1oHnIZyluP/WFioo25Cs4TwE2dcSYkZDdHJ15PiAbGspysSISjz2dm5UadU6z4uZbham3jSyzWfJGU4gDN+4GQTfjFSeNfWZ599GvYYMKo32nmdvS3NItSjOXbEawBV8nCiuhDYNYgvbuDm0Ex/ZVaS34EmlFFpiNGp0vSx25wznRB5jfbl6BePriWI4SyZcwd8euPzLz54MMvnDfTWu+mfrAuLvNBLXcc2WuvKx/pgdyitfpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF0000051A.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d435f3eb-021e-4524-42ae-08df18ea8b12 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|7416014|36860700016|35042699022|376014|82310400026|14060799003|6133799003|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: kPPCh+Q8RsFzrQUKEHcaa1R6RL4v8Q/xIJKdp3us0edUJRBH9Nrgt0TORg9fDU94qJd9/Bmigjjc56q8wgGMkggbO3skDMvRIigcYwcuhAYzSWZX6+zae0y84+30nZFGZ2BbdLyIio4EvTV6v3Vo+AT0+2FanBkuI8ADr1oFDvSpkFJhxfOm8juGNNCA2H5Ar9lYo1FaPEK3cd1uSq5vQ/cZ3/Vj4iDnUBuuA6N2iNjynod0mJGV+6BCB4uYkv7KCALSyIF5cquNqLXGMPlZO6wTp7rtaF+RQA+80jU86t8yEohqXR0W8uw/vd+UXcbiBuuiu59sb3qEDObJtvAjb0YxMqvPsdKk5oaXFB1YB7IekZ1dQXnBEDYk99oVAlzYp/T13nIih6BEaiYPcXsYuRjOr6Sm8o2nFEEJMlv2QnAebk/FYhPvblubxWuE9TuEOGIxl45o8I7mbOBEYK9029T67ZBPhJboZNaFo5tfjIpm4jwF4V8ewTEIIuvNhffXevsKFSbKUJLkvWUTsTFUNJnneBAirdSYrT6VTD2oucjiQEvr6UoorAbWHbFGNaV/w9N2QTFAEsT0PpXgLecaz5LFmGkY6TNckrVMu0KeQ/0Mnnya6el+/eu7TPI6hn97i9/rEBpZRq71XPwuYxT8//Xg0llasWgyF+IOuwm0NXxXbOvAs5ZmzSIhMVSUjc2d X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(7416014)(36860700016)(35042699022)(376014)(82310400026)(14060799003)(6133799003)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ojgBZRno6Lc7pTnhwdI3uTvP9t6e+wk6TtB5THjQQZCAUDfQseeFhlkg5srm90fKAM6+3SN4Vx2pwTfsZZvTiNZKyn99EH64fI4Ren+TnhXYg2eC+VhTpVNFafma4F16zku5o2piTNoibsvL1+oqjQiQEBEnBUXVMXdmPIGRo+ilj6sdtzB3qsN50anegcjCA4wV5WqUVmuzJv3W7bEMQK6iW6y/U+yodJ1kweZ8edu4TObn+kEfxenqmv8AwBStWf5AIRJVDLMcg1PHv60hAkpuVfeeKg2O0ZNZMgKpWDqxmOzvz18LVVIpy9Ck8i+V80ZS3pFDcWRAaQCxaeM/iKMhpOOKcSssNf/Qg1ehoYjAcbRODlbEDJViuMQroklGWh2EAjdIzT4tQ+aZcUNplCFSZvA84FFwC81G3pyXDJUtjEF6mVugyrr9fIjtOvp0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:47.3600 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff721487-80e7-4fe5-2a87-08df18ea9ec7 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF0000051A.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8709 Content-Type: text/plain; charset="utf-8" Mali v15 exposes a 64-bit GPU_ID register with a different field layout from earlier GPUs. Add the register definitions and decoding helpers for the new format, read GPU_WIDE_ID when the compatibility value indicates a v15 GPU, and populate both the cached GPU_ID fields and the uAPI gpu_wide_id field. This allows userspace and the driver to identify v15 GPUs correctly. Signed-off-by: Karunika Choo --- v1: - Decode selected GPU_ID format after checking compatibility value. - Document GPU_DISCOVER and GPU_CONTROL register offset differences between GPUs. - Fix mask generation in panthor_gpu_discover_regs.h .../drm/panthor/panthor_gpu_discover_regs.h | 19 +++++++++ drivers/gpu/drm/panthor/panthor_hw.c | 42 +++++++++++++++---- include/uapi/drm/panthor_drm.h | 13 ++++++ 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h diff --git a/drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h b/drivers/= gpu/drm/panthor/panthor_gpu_discover_regs.h new file mode 100644 index 0000000000000..e6bfe1fe2c68a --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_GPU_DISCOVER_REGS_H__ +#define __PANTHOR_GPU_DISCOVER_REGS_H__ + +#include + +#define GPU_WIDE_ID 0x0 +#define GPU_WIDE_COMPAT 0xF +#define GPU_WIDE_ARCH_MAJOR(x) (((x) & GENMASK_U64(63, 56)) >> 56) +#define GPU_WIDE_ARCH_MINOR(x) (((x) & GENMASK_U64(55, 48)) >> 48) +#define GPU_WIDE_ARCH_REV(x) (((x) & GENMASK_U64(47, 40)) >> 40) +#define GPU_WIDE_PROD_MAJOR(x) (((x) & GENMASK_U64(39, 32)) >> 32) +#define GPU_WIDE_VER_MAJOR(x) (((x) & GENMASK_U64(23, 16)) >> 16) +#define GPU_WIDE_VER_MINOR(x) (((x) & GENMASK_U64(15, 8)) >> 8) +#define GPU_WIDE_VER_STATUS(x) ((x) & GENMASK_U64(7, 0)) + +#endif /* __PANTHOR_GPU_DISCOVER_REGS_H__ */ diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 2143e57d48106..40012ba7e23ca 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -8,6 +8,7 @@ =20 #include "panthor_device.h" #include "panthor_gpu.h" +#include "panthor_gpu_discover_regs.h" #include "panthor_gpu_regs.h" #include "panthor_hw.h" #include "panthor_pwr.h" @@ -296,18 +297,41 @@ static int panthor_hw_bind_device(struct panthor_devi= ce *ptdev) static int panthor_hw_gpu_id_init(struct panthor_device *ptdev) { struct panthor_gpu_id *gpu_id =3D &ptdev->gpu_id; - ptdev->gpu_info.gpu_id =3D gpu_read(ptdev->iomem, GPU_ID); + u32 gpu_id32 =3D gpu_read(ptdev->iomem, GPU_ID); =20 - if (!ptdev->gpu_info.gpu_id) + if (!gpu_id32) return -ENXIO; =20 - gpu_id->arch_major =3D GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id); - gpu_id->arch_minor =3D GPU_ARCH_MINOR(ptdev->gpu_info.gpu_id); - gpu_id->arch_rev =3D GPU_ARCH_REV(ptdev->gpu_info.gpu_id); - gpu_id->prod_major =3D GPU_PROD_MAJOR(ptdev->gpu_info.gpu_id); - gpu_id->ver_major =3D GPU_VER_MAJOR(ptdev->gpu_info.gpu_id); - gpu_id->ver_minor =3D GPU_VER_MINOR(ptdev->gpu_info.gpu_id); - gpu_id->ver_status =3D GPU_VER_STATUS(ptdev->gpu_info.gpu_id); + if (GPU_ARCH_MAJOR(gpu_id32) =3D=3D GPU_WIDE_COMPAT) { + /* + * GPU_DISCOVER register block always starts at offset zero, + * so does the GPU_CONTROL register block on pre-v15 GPUs. + */ + void __iomem *discover =3D ptdev->iomem; + u64 gpu_id64 =3D gpu_read64(discover, GPU_WIDE_ID); + if (!gpu_id64) + return -ENXIO; + + ptdev->gpu_info.gpu_wide_id =3D gpu_id64; + + gpu_id->arch_major =3D GPU_WIDE_ARCH_MAJOR(gpu_id64); + gpu_id->arch_minor =3D GPU_WIDE_ARCH_MINOR(gpu_id64); + gpu_id->arch_rev =3D GPU_WIDE_ARCH_REV(gpu_id64); + gpu_id->prod_major =3D GPU_WIDE_PROD_MAJOR(gpu_id64); + gpu_id->ver_major =3D GPU_WIDE_VER_MAJOR(gpu_id64); + gpu_id->ver_minor =3D GPU_WIDE_VER_MINOR(gpu_id64); + gpu_id->ver_status =3D GPU_WIDE_VER_STATUS(gpu_id64); + } else { + ptdev->gpu_info.gpu_id =3D gpu_id32; + + gpu_id->arch_major =3D GPU_ARCH_MAJOR(gpu_id32); + gpu_id->arch_minor =3D GPU_ARCH_MINOR(gpu_id32); + gpu_id->arch_rev =3D GPU_ARCH_REV(gpu_id32); + gpu_id->prod_major =3D GPU_PROD_MAJOR(gpu_id32); + gpu_id->ver_major =3D GPU_VER_MAJOR(gpu_id32); + gpu_id->ver_minor =3D GPU_VER_MINOR(gpu_id32); + gpu_id->ver_status =3D GPU_VER_STATUS(gpu_id32); + } =20 return 0; } diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h index a2ff0f4ec6915..843a0b40e1d36 100644 --- a/include/uapi/drm/panthor_drm.h +++ b/include/uapi/drm/panthor_drm.h @@ -376,6 +376,19 @@ struct drm_panthor_gpu_info { =20 /** @gpu_features: Bitmask describing supported GPU-wide features */ __u64 gpu_features; + + /** + * @gpu_wide_id: 64-bit GPU ID for v15 and later GPUs. @gpu_id is 0 when + * this is populated. + */ + __u64 gpu_wide_id; +#define DRM_PANTHOR_WIDE_ARCH_MAJOR(x) (((x) >> 56) & 0xff) +#define DRM_PANTHOR_WIDE_ARCH_MINOR(x) (((x) >> 48) & 0xff) +#define DRM_PANTHOR_WIDE_ARCH_REV(x) (((x) >> 40) & 0xff) +#define DRM_PANTHOR_WIDE_PRODUCT_MAJOR(x) (((x) >> 32) & 0xff) +#define DRM_PANTHOR_WIDE_VERSION_MAJOR(x) (((x) >> 16) & 0xff) +#define DRM_PANTHOR_WIDE_VERSION_MINOR(x) (((x) >> 8) & 0xff) +#define DRM_PANTHOR_WIDE_VERSION_STATUS(x) ((x) & 0xff) }; =20 /** --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013014.outbound.protection.outlook.com [52.101.72.14]) (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 BCAF13D9555 for ; Tue, 22 Sep 2026 20:47:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.14 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110031; cv=fail; b=pcs8Z60ynZ0x8mN61UU6Dou820gI4YiUa4vhftovxhnQpjtTv2GNX5Pott1/I3r7gnvvAUWDmFKr28prQrkaWfl1Jv451NY1it+6IuOiy2sksrGkKBtJGMaMB4zU2ETpvgtzb0a4xvu7qsIO/jf5u1vbbXT+IPMT4U7PJuod5eE= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110031; c=relaxed/simple; bh=TzmqkGy092s1ypf3Cp8DbUbdCJjT60+MA0lpYUUpXOI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rpWa3YNLjxYQqmJFf+sT591QpTGPVXhpEu36EKfINZAz37hRDlkBN8MIIJ4lF731Vcb8N0k94JI0krBnQZkgN9OPMu3xHTamHmYlyVHIzqE1dsntw/oA9wE4DLOiAS6uLWPvPQ8c4i2R1fezOqncNXPY7ifkZ3WdaGP3Uu/x57E= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=W5z5R46/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=W5z5R46/; arc=fail smtp.client-ip=52.101.72.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="W5z5R46/"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="W5z5R46/" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=WaGSIzACqFHJjqFeVl6BwEGPEkyA/sXGXqRKB/oeQxzu31cjqvTFuoPHDNMvqdzJV83avRg9NOay77NL6i8R3QdbI+EqQVXLyEMmfSpcbu0t/FER3juAYE/L4casslzOuqVStQwziFkQ+04GYibVokJ6r/qniIatUPkpp+yLTyXdGZsV5nriQ2tagRy5S0A2G9bTieii534EmQopUXSeVzrD5tVgiWpcyZLzFBKluzBr1YCJ5GSfgsBxHgYBxGmMs9FlUlfrry3XArXzimqmuGCGzRoVTJY0Wsp3brNKFWrm4EOeaGS+Ouci41CB0GUj06WaZEx0Ix3m3iSvmGb13g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+eLeJJg4CeXfgb2e95N2WFwNr1JbhAb+8zrQb9E9KJQ=; b=HHhbylm+tRxKSLEqi9eCY2kBpuzo6O6BOLY+sBsUzVt0QRNBbVz3GLlJnZDxk+QSI2bKHKCpOAuX9Hrtcdn4rnw+uLcYLjR6E/eplwgLH80b1pe28ZQzNPfnLQvPqJfoUL5OXiQX1thGkfZMcO+3HqW+bJWMEJFOCL14mUPuGpozjSo6/61hVYyC2wsvzSyvKoKZ0ySIVvS0mGfJ2WF31EAg1icK2LjgAtoWkHIM3TshqbC/gEgn0xSIVDesqKRpivSqCmOsSodxMckrXtyJVemJOyTzj3JF2q6LLByNLXMn4EBXaQ2Gsvt3UsBUIbWlliZTzDK58yngQb7oYlq+Qg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+eLeJJg4CeXfgb2e95N2WFwNr1JbhAb+8zrQb9E9KJQ=; b=W5z5R46/IxFSHli4Y5PnEUiGPGWD2VUWNNEuVN9CPo6ALm5Gllt+aUDHg/gb9ne/zUOdG1HEIFe8/rW0xQF/7RtE8+oWF0/0TtOAwcQfyoQCo1gzBdSpt5nZfLzj3W5Lizs4D5Lu8zVBZpPZ016u5RoSAulijG/JwTOUf6aZE9s= Received: from AS9PR05CA0131.eurprd05.prod.outlook.com (2603:10a6:20b:497::8) by DU5PR08MB10468.eurprd08.prod.outlook.com (2603:10a6:10:527::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:46:53 +0000 Received: from AM2PEPF00070CF9.eurprd02.prod.outlook.com (2603:10a6:20b:497:cafe::c) by AS9PR05CA0131.outlook.office365.com (2603:10a6:20b:497::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.13 via Frontend Transport; Tue, 22 Sep 2026 20:46:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM2PEPF00070CF9.mail.protection.outlook.com (10.167.242.11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hfU9xfaAi8oxX1j4/rjHhAvfRdxk36Su9NaebK2EKHzynA2LjLzjzk2C/wqfo7rfv0CcnkJYCAJGN34pUvRWCGW+QqLjF+5RQ7aPmOhWHatE9k6IfuhFzz2BdtB2REhALMg7tv1bzPM7+3aHi1AfGbsz2yAyy5RvMzHxcOgyADCpcNkbBVUalWO8lXqpRt3X0VcitUWjUD1c+w6NUH88ISvMRmwS1gj+k04OJ6aA5A6U9TO81P9tHP8QLD7LJv1YvpzkU7+0CH8EowoTTfGjRV6/umgdE2s2bXhDBUAd+k7HqikSqN8IY12wQhx02aE5uFqmurj/WZSq32G2SMtDlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+eLeJJg4CeXfgb2e95N2WFwNr1JbhAb+8zrQb9E9KJQ=; b=mdJSMyxphdSirAxR+HOk5ewQN4rcyDcy3i4MGYbcXVN8nzOE3DyGCLcwXrgl7Xo76LLT1gfJH9iabMDvW/OVJxv7vw35ZgKWevcSN5e9SWA8RbNa18jOacqQm5eIpqD0LpUcTpS4LX5UbVLa/Q/p6/+nUjWOCnCgdYevoinExwKVirKPBtDyNsqKQbU13z2BmFRoFYDjJjDJlV4X7RpBYspC732/9HlSrz/POfYQdfhNiwTnRJ/gn/T0k7hjugTKFNHEM/6oQZKSxufiDJl4GMzNJfGIX32rVejWmpnrd/YijrUQDjupcmD0oTVs3VQxe2e/P6/VE2mUmQ9BNMgZeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+eLeJJg4CeXfgb2e95N2WFwNr1JbhAb+8zrQb9E9KJQ=; b=W5z5R46/IxFSHli4Y5PnEUiGPGWD2VUWNNEuVN9CPo6ALm5Gllt+aUDHg/gb9ne/zUOdG1HEIFe8/rW0xQF/7RtE8+oWF0/0TtOAwcQfyoQCo1gzBdSpt5nZfLzj3W5Lizs4D5Lu8zVBZpPZ016u5RoSAulijG/JwTOUf6aZE9s= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:20 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:20 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 05/27] drm/panthor: Move register base offsets to the HW description Date: Tue, 22 Sep 2026 21:44:59 +0100 Message-ID: <20260922204535.2850094-6-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P189CA0066.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::11) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|AM2PEPF00070CF9:EE_|DU5PR08MB10468:EE_ X-MS-Office365-Filtering-Correlation-Id: 497ab323-617a-4235-ffa1-08df18eaa1d5 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: rGosrqcqf6CO6BN7jOiUhw3+xPQiFTGKu0fsPDDyggZ0S5uapy3VtS+eLvYtUY4f0sJz1yitZy31XvkwZnM9wlKK3cLm/qaM0uBtCwnPu2N4vatHbVgaSkGBwJnFrGoqcHrL8KLgKGjI+Xm+a45dY/B++fb1USf2vcx67xlAmMuKouxLdL9Z9v7WObj7pn9mRe8N30DVq30uHsbS5vAimzSI53ROkq843pJBKBV0nZGehkc5CWCLOG/6xxv7g3zUhy/qQLBVLwyOtVF1MJjEXzfDNDAnFx3N0XvZAFdC6mt2YeuwGWDnAgU9WRNxtl3j8Om1i1lkGzSvcEr54mUaXbGiPanHL1la79tt1TxhNppuUAa02rii0GwtEzYsSRvemp/D7S01/ExlFTY4e0iX/U2gxHrBf4YARXwFi9JBurHUkGTF/YGMJNaurH8ZIk2kZxzWCoT2xT91lWpPfEoH1nyLmL9zm+weF59ZlfIHGidAUmzr1drbuwSyFQpi9cuVxkiHCN6FkfzqLqSRQLKwtarIaDqV3HV8UO+KqZNbA42F03ZLBJUoV3NJVsJwES29pynkcIPwdLNoTNY0pOpko4JTBIXSXmQW/0cejGc1fdiknMs0cXaw3LGtQeZX4BBpMWF3gCsTrHBpfmq8xWzvEC9l1e9mthBZCfAz7oI2nY0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: 3pohUpyCJ9vGxsbew9AjWr4c5ka10XPSh41JcNlobvVtSfylPWbMUhn139J/P4h8IQBk+vjIkyNNb3GEu2AiYSFURWh1NAU3FoKrzbJxeVrxAzI5VEIqOGyjrKnhi9Ji3e3X/8c2Gs/tYACh+ok6PAG934zbUc/5DKc/dVC/gZ1WmvF3PeCI3ZUpUC5IjMhFVuu3PoTHvdhHRWJVZwJoJ/xCNzYenebEO27/LUBw18nynIN2PSVsbvrluxD7s1aFcrbbDf/sW9T9v6X5754e+JBM2a3+Y0gjT6Dt8X8pBh6qWLA6jRhOT03hmaaDnrbZv3b2YpXwozbiX8ZKsHW8mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM2PEPF00070CF9.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 67c6b184-8bd4-4a4a-134f-08df18ea8e9e X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|82310400026|14060799003|36860700016|1800799024|376014|35042699022|10067099003|6133799003|56012099006|22082099003|18002099003|11063799006; X-Microsoft-Antispam-Message-Info: BXZk1j9dbjSMNQiByUsC+yGsnh0g+5mNPPHq/Sf4h0/C76nzItL3PSBGPXrV2fDEXIoaD4UTDTV1V9vx4g3KS2NiKIV2VwKaGplYip8d58Ihim/s+S7MIMZD4NJhZh4mAr2OIuDfYEkIUg1y2Xw+354AkKAoEoMLHkdd6OdgJM8lYPj7echiW2QSafCUAnrPdusJdjFsDuVZ2wGxh4YxWwFwhluZkVjwS3m/wI5f8R84jKny4DWlf/OulnoYROfZz/2dPmX1ANuGyKvhU6/X2NsYb0oUsYykvr5EWW2POqz2hml2m63xd2C/HqQ9d6gNw+k4Pfsva9B/KLosFjlZqGjOC+IlC4FoYpcxDpPi7+fLTqYbndpJCuElm457herLTQwfFyQzgNPhoVJ/9Frrl2aAR+ClDMasX1ErVwlN2tWPnSSoNdz2v3XqYwvUR5KdkE9/3Ns3+SBT3uw+AaTPQjFQ4lpBfEL87mzt5/Rnh+z7CaOF5DBpVHhs4Z+9ylZO5pgyetlza0xtxYVu6auHbFMwZLInckBf0wiks1GVw15uN3ME43LPbrk2HewsUbjyl5AAm96RxlJPIUnvZgA1SZ+2SkJy8+xBQHEa62ylrMBP7qRGNxVh4qtO5rYv/hSZiLTNRipP6jPce5nQoNDa758SUSR8i6axY7w1jJ7E+xoz+762xjzLE8JezMQPSrAbFPrjPjDzVp8dlxOT8E8zlw== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(82310400026)(14060799003)(36860700016)(1800799024)(376014)(35042699022)(10067099003)(6133799003)(56012099006)(22082099003)(18002099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vBKy49VNrudgZd5/pLLUXIQhy6RklUDTWu7HP5RnHKPzlR+bA8Z5wkWrNPLNh0ckP0YcHdk5UjfMgh/1CESwv4La+uZxylaPpvtUdcY/Yp6YFF76CM6ziR0KXI8IOOx7p7f4mBxXSvUB7UsDOJaCct3DHQzcvFJIviXYhIG5m/yZNneg/WdkiqAAcv/Di4QLe5fDj5M8NJFh9nCJT9+mntB0E8Srqp2FsrORczBD9SLOFjaPK4S17t7RG1aUaDNx6DG8h4rvYalvUOXf3XkaETUBeuUNCadjDB9T/qZYXxaKAQaenRynI5NuPM3/EHbo61Pfx0kdJ5HwfO/QAjP/PDSw9QATQo7rKKyIEAWyOwRTO3ctOrZKlyFfb7YiGX4nhtjIvAVWekDmjWtFRuR6qF6CQmYSwA+Hib52hucIpbvDicBh298Mv1YVDXCMizQB X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:52.5523 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 497ab323-617a-4235-ffa1-08df18eaa1d5 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF00070CF9.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR08MB10468 Content-Type: text/plain; charset="utf-8" Mali v15 reorders several register regions, including GPU_CONTROL, MCU_CONTROL and PWR_CONTROL, so the driver can no longer assume a single fixed base layout across all supported GPUs. Add per-GPU register base offsets to the panthor hardware description and switch the GPU, FW and PWR local iomem setup to use those stored values. With the base addresses now owned by the hardware description, drop the corresponding fixed base-offset definitions from the register headers. This prepares the driver for GPUs with different register layouts without changing the existing behaviour on currently supported parts. Signed-off-by: Karunika Choo --- v1: - rebased on drm-misc-next - use a generic panthor_hw_regbank structure for all register offsets. drivers/gpu/drm/panthor/panthor_fw.c | 2 +- drivers/gpu/drm/panthor/panthor_fw_regs.h | 2 -- drivers/gpu/drm/panthor/panthor_gpu.c | 4 +-- drivers/gpu/drm/panthor/panthor_gpu_regs.h | 2 -- drivers/gpu/drm/panthor/panthor_hw.c | 23 +++++++++++++++-- drivers/gpu/drm/panthor/panthor_hw.h | 29 ++++++++++++++++++++-- drivers/gpu/drm/panthor/panthor_pwr.c | 2 +- drivers/gpu/drm/panthor/panthor_pwr_regs.h | 2 -- 8 files changed, 52 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 13efed3a2ea72..679ea1d233d53 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1500,7 +1500,7 @@ int panthor_fw_init(struct panthor_device *ptdev) if (!fw) return -ENOMEM; =20 - fw->iomem =3D ptdev->iomem + MCU_CONTROL_BASE; + fw->iomem =3D ptdev->iomem + ptdev->hw->regs.mcu_control.offset; ptdev->fw =3D fw; init_waitqueue_head(&fw->req_waitqueue); INIT_LIST_HEAD(&fw->sections); diff --git a/drivers/gpu/drm/panthor/panthor_fw_regs.h b/drivers/gpu/drm/pa= nthor/panthor_fw_regs.h index b2e59cfc22b00..a3492f7f913f9 100644 --- a/drivers/gpu/drm/panthor/panthor_fw_regs.h +++ b/drivers/gpu/drm/panthor/panthor_fw_regs.h @@ -4,8 +4,6 @@ #ifndef __PANTHOR_FW_REGS_H__ #define __PANTHOR_FW_REGS_H__ =20 -#define MCU_CONTROL_BASE 0x700 - #define MCU_CONTROL 0x0 #define MCU_CONTROL_ENABLE 1 #define MCU_CONTROL_AUTO 2 diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index ade2646e2caf6..d6534fabc682e 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -158,7 +158,7 @@ int panthor_gpu_init(struct panthor_device *ptdev) if (!gpu) return -ENOMEM; =20 - gpu->iomem =3D ptdev->iomem + GPU_CONTROL_BASE; + gpu->iomem =3D ptdev->iomem + ptdev->hw->regs.gpu_control.offset; spin_lock_init(&gpu->reqs_lock); init_waitqueue_head(&gpu->reqs_acked); mutex_init(&gpu->cache_flush_lock); @@ -175,7 +175,7 @@ int panthor_gpu_init(struct panthor_device *ptdev) return irq; =20 ret =3D panthor_irq_request(ptdev, &ptdev->gpu->irq, irq, - ptdev->iomem + GPU_INT_BASE, "gpu", + gpu->iomem + GPU_INT_BASE, "gpu", panthor_gpu_irq_threaded_handler); if (ret) return ret; diff --git a/drivers/gpu/drm/panthor/panthor_gpu_regs.h b/drivers/gpu/drm/p= anthor/panthor_gpu_regs.h index 4c5b953796e4f..753df87009901 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu_regs.h +++ b/drivers/gpu/drm/panthor/panthor_gpu_regs.h @@ -4,8 +4,6 @@ #ifndef __PANTHOR_GPU_REGS_H__ #define __PANTHOR_GPU_REGS_H__ =20 -#define GPU_CONTROL_BASE 0x0 - #define GPU_ID 0x0 #define GPU_ARCH_MAJOR(x) ((x) >> 28) #define GPU_ARCH_MINOR(x) (((x) & GENMASK(27, 24)) >> 24) diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 40012ba7e23ca..2ca5a334f5817 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -37,6 +37,14 @@ static struct panthor_hw panthor_hw_arch_v10 =3D { .power_changed_off =3D panthor_gpu_power_changed_off, .power_changed_on =3D panthor_gpu_power_changed_on, }, + .regs =3D { + .gpu_control =3D { + .offset =3D 0x0, + }, + .mcu_control =3D { + .offset =3D 0x700, + }, + }, }; =20 static struct panthor_hw panthor_hw_arch_v14 =3D { @@ -45,6 +53,17 @@ static struct panthor_hw panthor_hw_arch_v14 =3D { .l2_power_off =3D panthor_pwr_l2_power_off, .l2_power_on =3D panthor_pwr_l2_power_on, }, + .regs =3D { + .gpu_control =3D { + .offset =3D 0x0, + }, + .mcu_control =3D { + .offset =3D 0x700, + }, + .pwr_control =3D { + .offset =3D 0x800, + }, + }, }; =20 static struct panthor_hw_entry panthor_hw_match[] =3D { @@ -196,7 +215,7 @@ static int panthor_gpu_info_init(struct panthor_device = *ptdev) { unsigned int i; =20 - void __iomem *gpu_iomem =3D ptdev->iomem + GPU_CONTROL_BASE; + void __iomem *gpu_iomem =3D ptdev->iomem + ptdev->hw->regs.gpu_control.of= fset; =20 ptdev->gpu_info.csf_id =3D gpu_read(gpu_iomem, GPU_CSF_ID); ptdev->gpu_info.gpu_rev =3D gpu_read(gpu_iomem, GPU_REVID); @@ -222,7 +241,7 @@ static int panthor_gpu_info_init(struct panthor_device = *ptdev) ptdev->gpu_info.gpu_features =3D gpu_read64(gpu_iomem, GPU_FEATURES); =20 if (panthor_hw_has_pwr_ctrl(ptdev)) { - void __iomem *pwr_iomem =3D gpu_iomem + PWR_CONTROL_BASE; + void __iomem *pwr_iomem =3D ptdev->iomem + ptdev->hw->regs.pwr_control.o= ffset; =20 /* Introduced in arch 14.x */ ptdev->gpu_info.l2_present =3D gpu_read64(pwr_iomem, PWR_L2_PRESENT); diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index bdda3b10e660a..9231c18af94d1 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -26,14 +26,39 @@ struct panthor_hw_ops { void (*power_changed_off)(struct panthor_device *ptdev); }; =20 +/** struct panthor_hw_regbank - Register offset and instance stride inform= ation */ +struct panthor_hw_regbank { + /** @offset: Register offset relative to &struct panthor_device.iomem */ + u32 offset; + + /** + * @stride: Register offset between instances, or 0 for non-instanced + * registers + */ + u32 stride; +}; + +/** struct panthor_hw_regs_layout - Hardware register bank layout */ +struct panthor_hw_regs_layout { + /** @gpu_control: GPU_CONTROL register bank layout */ + struct panthor_hw_regbank gpu_control; + + /** @pwr_control: PWR_CONTROL register bank layout */ + struct panthor_hw_regbank pwr_control; + + /** @mcu_control: MCU_CONTROL register bank layout */ + struct panthor_hw_regbank mcu_control; +}; + /** * struct panthor_hw - GPU specific register mapping and functions */ struct panthor_hw { - /** @features: Bitmap containing panthor_hw_feature */ - /** @ops: Panthor HW specific operations */ struct panthor_hw_ops ops; + + /** @regs: Hardware register bank layout */ + struct panthor_hw_regs_layout regs; }; =20 int panthor_hw_init(struct panthor_device *ptdev); diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index dd7b6ef8ea209..cc2e01595f23b 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -480,7 +480,7 @@ int panthor_pwr_init(struct panthor_device *ptdev) if (!pwr) return -ENOMEM; =20 - pwr->iomem =3D ptdev->iomem + PWR_CONTROL_BASE; + pwr->iomem =3D ptdev->iomem + ptdev->hw->regs.pwr_control.offset; spin_lock_init(&pwr->reqs_lock); init_waitqueue_head(&pwr->reqs_acked); ptdev->pwr =3D pwr; diff --git a/drivers/gpu/drm/panthor/panthor_pwr_regs.h b/drivers/gpu/drm/p= anthor/panthor_pwr_regs.h index 9cf7a715066f8..05f5b48e6a39a 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr_regs.h +++ b/drivers/gpu/drm/panthor/panthor_pwr_regs.h @@ -4,8 +4,6 @@ #ifndef __PANTHOR_PWR_REGS_H__ #define __PANTHOR_PWR_REGS_H__ =20 -#define PWR_CONTROL_BASE 0x800 - #define PWR_INT_BASE 0x0 #define PWR_IRQ_POWER_CHANGED_SINGLE BIT(0) #define PWR_IRQ_POWER_CHANGED_ALL BIT(1) --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011053.outbound.protection.outlook.com [52.101.65.53]) (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 6348251C075 for ; Tue, 22 Sep 2026 20:47:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.53 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110042; cv=fail; b=f24XDOq0Aw96qswUWqg/FvHyYWCkiWQnedG5vnac4oxF68QUuDelS2qcnLLFTDs3yAfroDp3XK3Ofw/Y+62QvY2hGeTKyzkoU4S5c0dfY0wJO7pP17kz7psH16yJyIkfKtKiVwvunSDa4qXZvqayll9jCXVPO8zuuYeudzvyVQY= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110042; c=relaxed/simple; bh=JMIN/rOvqwklVK5usy5w2uZu2qBq3XGyorXu/etf+PA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dPQ8LF9cHsngjnV48zcN4Yar0Gze2rAbCviyxwEQfYy4VGUgAc5uagZmaEtkTuCYnBWqvIwJLY6CPLFO6fsdbzgLE4f5NpzKkS1VlE66SzppXAqssxuZ08U8icriYlEjSrK0Zyhi59dSqWm+z5NHQRaoTN9T/EtD0Ihra/hh7U8= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=msdiSbcJ; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=msdiSbcJ; arc=fail smtp.client-ip=52.101.65.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="msdiSbcJ"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="msdiSbcJ" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=wWeV83Z7dHQ/leBsYr3stzfqVil53UB84cEomJGClN/Zh/lZI6HYJmkMOfcgeSAFeGL/sTqwHc+1BULmxOXV7KA8cigVyhGQvQKQXZjG7hywrAByotyCkB7eaCIML9yWyKWc2MomOT2zAVuLH2CBsAm4d/GEk80+wAyryzreuVFoAsQR8JyZyDs3PrxO/+AY5k1BIggwACHTbTi+allYuq57EADM0YJIWjCjVG1cidyCJumA8eExaJYevaR6fK+fJW19pkiJ4d61lYx4qr86IOcwbFriwUAaATaqhUlnhC6K9KOAaoSFeRx2qjyk0s1cogyPDGzd7xLecIvALtptlQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oa0IdNOCdxQ+2DOYwzE9yChmhc4pcMRcCeBkhimrxCg=; b=AnnCrUwjQX1yF0oSnCV545BHcpA5LmsPwHkI7FYtZnxk1KdvU7TZ16X5vvtKqVw7TYtKcQwbySxNxOKeXecAqqSX5Xd3znKyCzKQH/qyQbWVvAEwiPG3vEgzW3DOEjEHoXKciXFgXnZKGGuAncoYtSvhMdVHEEXqXUs9XWFAJ61Vvyk/7GQC8/QS10PGOOipS6N5f7DX+qtysUo1YBdWU40VWrQ/ajZMkZ6GbwW+sP9f95wvi0AfwlVwr7mblTOSEPCU7yzN1rK5GMjr1+78H9ERfcP96RPDE9uIGBUE8NzO3JwGIOUeYxAZ59m/boYaYpgaC5jE5nhlOZtWCst2FQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oa0IdNOCdxQ+2DOYwzE9yChmhc4pcMRcCeBkhimrxCg=; b=msdiSbcJkTlzZzTIrRhZR28fgeiM9AV5/uq1EbgZaYy85kmgAOma2pRmLuqmaaELBcA8jqH5Jt1Lyn6LYeC7Qzk02ROZdAXvcHqjrM2WQ0H7ncCpRXLsYPBfilEjgoPmgSEtC1qaPgVunpUkPjki2Hq1FnNXtV6YTjYliCgHWEA= Received: from MI2PEPF00000B86.ITAP293.PROD.OUTLOOK.COM (2603:10a6:298:1::408) by GV1PR08MB7731.eurprd08.prod.outlook.com (2603:10a6:150:52::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.9; Tue, 22 Sep 2026 20:46:57 +0000 Received: from MI3PEPF00008552.eurprd05.prod.outlook.com (2603:10a6:298:1::86) by MI2PEPF00000B86.outlook.office365.com (2603:10a6:298:1::408) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.12 via Frontend Transport; Tue, 22 Sep 2026 20:46:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF00008552.mail.protection.outlook.com (10.167.240.6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:46:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rzmLVjHNP4Umpz8fV2Ze6Zc6AhKUfizV1eyVqXzAx5FibEVYIP8RJKvbDlkzKyMUIOGePz/44EYZWgVG6YIauNwwZBGhL4T5graOsAw4d9ukoQ7iNsX7CFbc9+P0P74r+7B/wx3YhHD7OoT5imeaHXI95f6Dm1Zdbeq7J9hXS7AFQCSlhHeid/R4EOlESRxNTkNOldfOiBPyJAhMUG/11Lb6k452bkDg81mafnkqsj868J/JbVW9LyCACydQhcdlL2jge6Bik+cwwOmh2WMs4BT4Wf1azEi4vA57wCI6yt1Hi1N/n9pLyrEhF/eQ2sC5+2Z3eVXXOHqpbFOvwchIRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oa0IdNOCdxQ+2DOYwzE9yChmhc4pcMRcCeBkhimrxCg=; b=JPyzF/eCT6JSEHcjj2A3Tztu6OgFoNK2wBohH9ABIlIgJCLrqExll47BwFp80OnxWx8VZEhZNTAL/bmdDo6ncAPX6+ud5SdCrpYMw9rl08JqEOtWAdfwmVfda9SS8ODg6H1akCYNxS2z3K71TLKTy7FCenk+T0836d6PB+gSKHoNl4XcsFlyJHPs0FlmBJfuWHDqL4ltsxbHE/jgLUwnkJzN46MFux1T3uAMi8MHqVV3ObSCgucnPqmn2B0VZP5vTNzeNzQx1OSTaEaC7NSb33Opx0ynGRxs9tf66K0xQlCaxtca+QwMORdU+pKfPWM1KUBybcdUWglgQ4RlC/flog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oa0IdNOCdxQ+2DOYwzE9yChmhc4pcMRcCeBkhimrxCg=; b=msdiSbcJkTlzZzTIrRhZR28fgeiM9AV5/uq1EbgZaYy85kmgAOma2pRmLuqmaaELBcA8jqH5Jt1Lyn6LYeC7Qzk02ROZdAXvcHqjrM2WQ0H7ncCpRXLsYPBfilEjgoPmgSEtC1qaPgVunpUkPjki2Hq1FnNXtV6YTjYliCgHWEA= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:24 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:24 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 06/27] drm/panthor: Derive MMU AS register addresses from base and stride Date: Tue, 22 Sep 2026 21:45:00 +0100 Message-ID: <20260922204535.2850094-7-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0114.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34c::17) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|MI3PEPF00008552:EE_|GV1PR08MB7731:EE_ X-MS-Office365-Filtering-Correlation-Id: 18b92b78-63b5-402f-c995-08df18eaa45a X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|3023799007|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: hjTLgiFcfVcO51acSVoD1ZSNLgljavuPuvNlq6CJHd//vBRTcw0Be2wyJ+WdS7OM20wKvGI6hVVAzC+Ek93m6qnBu3cn7VHr1FLUGmKPt9gSccq6F2YA8oyW99Dr7kcvzXmRnL+KSOPmDN6bsLofKRatagsQ0hIegb8aUXXzFxS2Q4WUeMIo0ujnj9hZ26GubQKShMHeFdCw7fc4Een6cXxF6fTPm5cdSUI1Co6P2qTflnX8/KUzL1ZqhOwtDatNErRWdxDtQhRGrnKSkiwooXcXDDTvAX9n2OJt5dORZkjQ5Q/NU1yquF3WBes/6AfUJCEiQ1bTjoHhT+sIXoaflNXTeTs5YaJEhUdjxZt7CLDgl/EHycrUtJ9GyKyiFXypL4VR2apXWwqr7OTLfYNtGSQDu7WA4K8hNXxOXvmcreQjgaUon4r2Vj+KE1WUCjshAYoZ2N7ZBT2fh4FuV0h8htljD+5wW2OzmnhjP78EiFOJz6+pHAMqbd57fPij3XymxROgJmtQzpSv+bYHQsc7riRDYA/B20fzW1lMhM+q4tJNhQZ/yChTi/AO4CaKw3+9Ip/Z5Vke8P8yAaZRw8VajQUaEJ2O3DB3kyOHS4H0QHtXg/ijTzeibgzHQ37/ML4MpJSgqCPdcXYvIY1Pvf8x3pSy12C/9RMt0JqcBe21krU= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(3023799007)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: GeyaqwgSvMAKPbzXJZ+G+NJcsKafh1VBaOTy4o79qPUo/F2gcKPPYaguaf48El8WIXkjf8vsGvWX4/n3tXVQPBf19nDkuqh4TX/YwU5O0gLhb2uzKeBhJhdK/cvoY/r0dgWMuPG5QL12VRkXlMOxm1/Al3hEpfCe6Uu6jeFcryrwxeq0luWNsKB4SlrRstjK2yvtA4XyOgq1bRzt0qs4jGNBJJZfIfqmjI9qvwEgP5Nq/DTJO12cbQ2l5B0mM3Gtkw7nkR119eU2VpwMra02SlBz2g+xDsZmDOqxfn+f/xl1bTzaDRxzUsDbPEP8+6leayFhgpWDHAFLfYznge609g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008552.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a474c857-00d8-4c11-109c-08df18ea9105 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|82310400026|35042699022|23010399003|14060799003|376014|56012099006|11063799006|18002099003|10067099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: riOtwnfH/DmpQjIBAtoGcOAYTu5E/C5TH+vZ3HWQFhiuJuYdnu4mD310rcQ/RXompi0NY6H+AdoWdNDw4rZHiwAAzoRBfcby4PInZG57rvggHjpHe8OwQmxlcAj8lf7TH2sH9sj709G6024LQrqH17kk3P2HG5B4pjw+M5BIaP/Xqa+D3yEqzym/9b222VRF9IBiOqAuTDgKsjQE2XkxB5byFaHhgXcAsoAFWolQHWL6c5UBbOP0ZGB8jYHn+hpPYGV/izQ3+jLWBMOmzljaBZesoxFlr5dtWggPFaeTXgwlqbIDVfLGkbkUvoTB1zW6ZxB3RydXLZX/+tidIuuVoL+XM+VkOicV/BHfjCqrNKEPr9mUYFSIlTpOpk2FhdGvp3XH8zZq8nmr8A34DrFpKruGE9gfdEvvini740o9ae7g6Zaqho+KUiQ3JQ9k7iD5Ibv6xedR1XcGajcTPmzRBhRygp9vvWilIAGsDxKfyhj2njE79v941NmVYDj4SXfOzEg1T+Aa3SWBIvrwLOenFBhzRIGPPnQ5GPe34NBa4Tx4vHMvt/mM7oXsTfOp9ikXCK7DVoJoNInuJJd1+jyY4HqomQP0AhQLsU2kx9KGk7+6Rbyz0LuyWbbJ5HOVORcooS22iNVFhJ4Ldf7Zk2LUMD9xHtFs10uqJB9zvzJqQUJxs+oSgPE2pO4zyJh5uDysIK9Hqh1gosYzKdmG/2dAeg== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(82310400026)(35042699022)(23010399003)(14060799003)(376014)(56012099006)(11063799006)(18002099003)(10067099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: usURlouiGta0vN6/k/h70SBq4zpaptOkApvzePEZUOnyMsla4PCsUtcwJAz2Q3kIhhtNKX6NJ6VU0qM/kiBXquLuwW6LJxNyQcA6BtdKG034/Mc3IN3om0Smj0p7FjDCtSPAkfhL1rZazQytqrgSMjdEwmkPtZH3ikOuRXRrCeEDlXfPchX+5QJiaCFNqaVRSTnrnMGe08uysLTxHHsuGUz3Y9qLhHRT6X9fjkzd99bb9JCZQP1fpeyZJ38IbM8i1no3pUBOGnFxgN/4YeLorkNltCC4iQmjqpNW3m7DTSfuibyjGtAP9cgp2FqryedQev04UMiV/W2nNwwMiMQKMfXiSNhNy9WMWKFickNvGIljhKo1x2snE7vebRNd3aqa4V6Ne4oGhN4jigI2eqXwrcKg/pL8JGpXCVsKZGegF66Q92wsJFXlZMrDoaTIzbur X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:46:56.6831 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 18b92b78-63b5-402f-c995-08df18eaa45a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008552.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7731 Content-Type: text/plain; charset="utf-8" Move the MMU address-space register layout into the hardware description by storing the MMU_AS base offset and per-AS stride in the Panthor HW map. Use those values to compute the iomem pointer for each AS slot and make the MMU AS register definitions relative to the per-slot register window instead of hard-coding the slot offset in every register macro. This prepares the MMU code for GPUs where the MMU AS register region is not at a fixed offset while keeping the existing register accesses scoped to a single AS window. Signed-off-by: Karunika Choo --- v1: - align with updated panthor_hw_regbank structure. - moved AS iomem tracking into panthor_as_slot and introduced as_iomem() to retrieve it. drivers/gpu/drm/panthor/panthor_hw.c | 8 ++++ drivers/gpu/drm/panthor/panthor_hw.h | 3 ++ drivers/gpu/drm/panthor/panthor_mmu.c | 45 ++++++++++++++-------- drivers/gpu/drm/panthor/panthor_mmu_regs.h | 23 +++++------ 4 files changed, 50 insertions(+), 29 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 2ca5a334f5817..13090ff6db7b5 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -44,6 +44,10 @@ static struct panthor_hw panthor_hw_arch_v10 =3D { .mcu_control =3D { .offset =3D 0x700, }, + .mmu_as_control =3D { + .offset =3D 0x2400, + .stride =3D 0x40, + }, }, }; =20 @@ -63,6 +67,10 @@ static struct panthor_hw panthor_hw_arch_v14 =3D { .pwr_control =3D { .offset =3D 0x800, }, + .mmu_as_control =3D { + .offset =3D 0x2400, + .stride =3D 0x40, + }, }, }; =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 9231c18af94d1..68627f0df7f95 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -48,6 +48,9 @@ struct panthor_hw_regs_layout { =20 /** @mcu_control: MCU_CONTROL register bank layout */ struct panthor_hw_regbank mcu_control; + + /** @mmu_as_control: MMU_AS_CONTROL register bank layout */ + struct panthor_hw_regbank mmu_as_control; }; =20 /** diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/pantho= r/panthor_mmu.c index d75d575473da4..169550413a1a5 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.c +++ b/drivers/gpu/drm/panthor/panthor_mmu.c @@ -35,6 +35,7 @@ #include "panthor_gpu.h" #include "panthor_gpu_regs.h" #include "panthor_heap.h" +#include "panthor_hw.h" #include "panthor_mmu.h" #include "panthor_mmu_regs.h" #include "panthor_sched.h" @@ -49,15 +50,15 @@ struct panthor_vm; struct panthor_as_slot { /** @vm: VM bound to this slot. NULL is no VM is bound. */ struct panthor_vm *vm; + + /** @iomem: CPU mapping for MMU_AS_CONTROL iomem region */ + void __iomem *iomem; }; =20 /** * struct panthor_mmu - MMU related data */ struct panthor_mmu { - /** @iomem: CPU mapping of MMU_AS_CONTROL iomem region */ - void __iomem *iomem; - /** @irq: The MMU irq. */ struct panthor_irq irq; =20 @@ -533,6 +534,11 @@ static void free_pt(void *cookie, void *data, size_t s= ize) kmem_cache_free(pt_cache, data); } =20 +static void __iomem *as_iomem(struct panthor_mmu *mmu, u32 as_nr) +{ + return mmu->as.slots[as_nr].iomem; +} + static int wait_ready(struct panthor_device *ptdev, u32 as_nr) { struct panthor_mmu *mmu =3D ptdev->mmu; @@ -542,7 +548,7 @@ static int wait_ready(struct panthor_device *ptdev, u32= as_nr) /* Wait for the MMU status to indicate there is no active command, in * case one is pending. */ - ret =3D gpu_read_relaxed_poll_timeout_atomic(mmu->iomem, AS_STATUS(as_nr)= , val, + ret =3D gpu_read_relaxed_poll_timeout_atomic(as_iomem(mmu, as_nr), AS_STA= TUS, val, !(val & AS_STATUS_AS_ACTIVE), 10, 100000); =20 if (ret) { @@ -560,7 +566,7 @@ static int as_send_cmd_and_wait(struct panthor_device *= ptdev, u32 as_nr, u32 cmd /* write AS_COMMAND when MMU is ready to accept another command */ status =3D wait_ready(ptdev, as_nr); if (!status) { - gpu_write(ptdev->mmu->iomem, AS_COMMAND(as_nr), cmd); + gpu_write(as_iomem(ptdev->mmu, as_nr), AS_COMMAND, cmd); status =3D wait_ready(ptdev, as_nr); } =20 @@ -609,9 +615,9 @@ static int panthor_mmu_as_enable(struct panthor_device = *ptdev, u32 as_nr, panthor_irq_enable_events(&ptdev->mmu->irq, panthor_mmu_as_fault_mask(ptdev, as_nr)); =20 - gpu_write64(mmu->iomem, AS_TRANSTAB(as_nr), transtab); - gpu_write64(mmu->iomem, AS_MEMATTR(as_nr), memattr); - gpu_write64(mmu->iomem, AS_TRANSCFG(as_nr), transcfg); + gpu_write64(as_iomem(mmu, as_nr), AS_TRANSTAB, transtab); + gpu_write64(as_iomem(mmu, as_nr), AS_MEMATTR, memattr); + gpu_write64(as_iomem(mmu, as_nr), AS_TRANSCFG, transcfg); =20 return as_send_cmd_and_wait(ptdev, as_nr, AS_COMMAND_UPDATE); } @@ -647,9 +653,9 @@ static int panthor_mmu_as_disable(struct panthor_device= *ptdev, u32 as_nr, if (recycle_slot) return 0; =20 - gpu_write64(mmu->iomem, AS_TRANSTAB(as_nr), 0); - gpu_write64(mmu->iomem, AS_MEMATTR(as_nr), 0); - gpu_write64(mmu->iomem, AS_TRANSCFG(as_nr), AS_TRANSCFG_ADRMODE_UNMAPPED); + gpu_write64(as_iomem(mmu, as_nr), AS_TRANSTAB, 0); + gpu_write64(as_iomem(mmu, as_nr), AS_MEMATTR, 0); + gpu_write64(as_iomem(mmu, as_nr), AS_TRANSCFG, AS_TRANSCFG_ADRMODE_UNMAPP= ED); =20 return as_send_cmd_and_wait(ptdev, as_nr, AS_COMMAND_UPDATE); } @@ -1808,7 +1814,7 @@ static int panthor_vm_lock_region(struct panthor_vm *= vm, u64 start, u64 size) mutex_lock(&ptdev->mmu->as.slots_lock); if (vm->as.id >=3D 0 && size) { /* Lock the region that needs to be updated */ - gpu_write64(ptdev->mmu->iomem, AS_LOCKADDR(vm->as.id), + gpu_write64(as_iomem(ptdev->mmu, vm->as.id), AS_LOCKADDR, pack_region_range(ptdev, &start, &size)); =20 /* If the lock succeeded, update the locked_region info. */ @@ -1871,8 +1877,8 @@ static void panthor_mmu_irq_handler(struct panthor_ir= q *pirq, u32 status) u32 access_type; u32 source_id; =20 - fault_status =3D gpu_read(mmu->iomem, AS_FAULTSTATUS(as)); - addr =3D gpu_read64(mmu->iomem, AS_FAULTADDRESS(as)); + fault_status =3D gpu_read(as_iomem(mmu, as), AS_FAULTSTATUS); + addr =3D gpu_read64(as_iomem(mmu, as), AS_FAULTADDRESS); =20 /* decode the fault status */ exception_type =3D fault_status & 0xFF; @@ -3388,8 +3394,11 @@ static void panthor_mmu_info_init(struct panthor_dev= ice *ptdev) int panthor_mmu_init(struct panthor_device *ptdev) { u32 va_bits =3D GPU_MMU_FEATURES_VA_BITS(ptdev->gpu_info.mmu_features); + unsigned long as_present_mask =3D ptdev->gpu_info.as_present; + struct panthor_hw_regbank *regbank =3D &ptdev->hw->regs.mmu_as_control; struct panthor_mmu *mmu; int ret, irq; + u32 as_id; =20 panthor_mmu_info_init(ptdev); =20 @@ -3408,7 +3417,13 @@ int panthor_mmu_init(struct panthor_device *ptdev) if (ret) return ret; =20 - mmu->iomem =3D ptdev->iomem + MMU_AS_BASE; + for_each_set_bit(as_id, &as_present_mask, MAX_AS_SLOTS) { + u64 offset =3D regbank->offset + (regbank->stride * as_id); + + guard(mutex)(&mmu->as.slots_lock); + mmu->as.slots[as_id].iomem =3D ptdev->iomem + offset; + } + ptdev->mmu =3D mmu; =20 irq =3D platform_get_irq_byname(to_platform_device(ptdev->base.dev), "mmu= "); diff --git a/drivers/gpu/drm/panthor/panthor_mmu_regs.h b/drivers/gpu/drm/p= anthor/panthor_mmu_regs.h index 4e32ab931949c..9d3747601e698 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu_regs.h +++ b/drivers/gpu/drm/panthor/panthor_mmu_regs.h @@ -10,13 +10,8 @@ =20 /* AS_COMMAND register commands */ =20 -#define MMU_AS_BASE 0x2400 - -#define MMU_AS_SHIFT 6 -#define MMU_AS(as) ((as) << MMU_AS_SHIFT) - -#define AS_TRANSTAB(as) (MMU_AS(as) + 0x0) -#define AS_MEMATTR(as) (MMU_AS(as) + 0x8) +#define AS_TRANSTAB 0x0 +#define AS_MEMATTR 0x8 #define AS_MEMATTR_AARCH64_INNER_ALLOC_IMPL (2 << 2) #define AS_MEMATTR_AARCH64_INNER_ALLOC_EXPL(w, r) ((3 << 2) | \ ((w) ? BIT(0) : 0) | \ @@ -28,8 +23,8 @@ #define AS_MEMATTR_AARCH64_INNER_OUTER_NC (1 << 6) #define AS_MEMATTR_AARCH64_INNER_OUTER_WB (2 << 6) #define AS_MEMATTR_AARCH64_FAULT (3 << 6) -#define AS_LOCKADDR(as) (MMU_AS(as) + 0x10) -#define AS_COMMAND(as) (MMU_AS(as) + 0x18) +#define AS_LOCKADDR 0x10 +#define AS_COMMAND 0x18 #define AS_COMMAND_NOP 0 #define AS_COMMAND_UPDATE 1 #define AS_COMMAND_LOCK 2 @@ -37,16 +32,16 @@ #define AS_COMMAND_FLUSH_PT 4 #define AS_COMMAND_FLUSH_MEM 5 #define AS_LOCK_REGION_MIN_SIZE (1ULL << 15) -#define AS_FAULTSTATUS(as) (MMU_AS(as) + 0x1C) +#define AS_FAULTSTATUS 0x1C #define AS_FAULTSTATUS_ACCESS_TYPE_MASK (0x3 << 8) #define AS_FAULTSTATUS_ACCESS_TYPE_ATOMIC (0x0 << 8) #define AS_FAULTSTATUS_ACCESS_TYPE_EX (0x1 << 8) #define AS_FAULTSTATUS_ACCESS_TYPE_READ (0x2 << 8) #define AS_FAULTSTATUS_ACCESS_TYPE_WRITE (0x3 << 8) -#define AS_FAULTADDRESS(as) (MMU_AS(as) + 0x20) -#define AS_STATUS(as) (MMU_AS(as) + 0x28) +#define AS_FAULTADDRESS 0x20 +#define AS_STATUS 0x28 #define AS_STATUS_AS_ACTIVE BIT(0) -#define AS_TRANSCFG(as) (MMU_AS(as) + 0x30) +#define AS_TRANSCFG 0x30 #define AS_TRANSCFG_ADRMODE_UNMAPPED (1 << 0) #define AS_TRANSCFG_ADRMODE_IDENTITY (2 << 0) #define AS_TRANSCFG_ADRMODE_AARCH64_4K (6 << 0) @@ -64,6 +59,6 @@ #define AS_TRANSCFG_DISABLE_AF_FAULT BIT(34) #define AS_TRANSCFG_WXN BIT(35) #define AS_TRANSCFG_XREADABLE BIT(36) -#define AS_FAULTEXTRA(as) (MMU_AS(as) + 0x38) +#define AS_FAULTEXTRA 0x38 =20 #endif /* __PANTHOR_MMU_REGS_H__ */ --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013003.outbound.protection.outlook.com [40.107.159.3]) (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 4A297439340; Tue, 22 Sep 2026 20:47:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.3 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110039; cv=fail; b=T7QexSle+cxw/3w2GzQMXEIK8NkHC857XnboaYeXKwYuyuY42Lk6pq3qpRJSp7K+NLXu4kjTmeDa77tW7jnaNVnVKx5UQ9btfwZeiJnKMVMq61oFoZ/0HU2Xeit7RkPuxLxhFZ6EKDDT/XyDRmJCss5ZsU1ab15Ued7wm7ADFE4= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110039; c=relaxed/simple; bh=inu8oRh9gJ/0puW6rH/zep1G+3pmBiybyiF4jKMSgts=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UopqGyxoHV0eLHdzmF2V35E4HDoz2q02XHXTG30ksE2G7rmZOeZofUycn6Kjk0mkqk4zspUOKsqB7FUgRUI3JL0gi1TlhhFHk/sITuAca6XlXeq9L7aYnCCj8VrEoeQEfQAhJ3Nhk9K3RXGOmiyP27jByG9468t/wVcMz+g+62Y= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=pJhs2QKz; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=pJhs2QKz; arc=fail smtp.client-ip=40.107.159.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="pJhs2QKz"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="pJhs2QKz" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=g++u4X46CXzTjT6bG2juSFwyZXDfDYUMnnSKRWDpK4P/w93sJFTMcsBKqi2LEoLOKQ38M/Z4VYfGUCHNm9sG0zVFq4HKIsaohhs7Bw8Bx+YU1Y7ywgEr/WYIdm+kZKJGJrUdhpT9eAfrdoBAbzc66NxJIAMJrJhNk214AL/q0VhvDa0eQttbIzEikfzNQ40go5Rj/9M+t2Eey26Ewthysgv/71PNKa6irQJnefbEixGsGFKnlwaV5WT/5huGFp2ojatzA7FE9M6BWvCD9Kmgf2oEinECD89seGEmdwxnC6mgZwiZrfYDQcdOZPhqjzWU1Jis5beasIk4NWjNIDP28Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=04UzrHhJCsBj0A2xmkEwwi/5LBGp/Z2ChU/53mgmk9Q=; b=dadET51KwMpSTyoZBXYAzTG19IoS44hglQ8QiJFS8s6H2FqWl1R4N868pr1rLC4XkPbF9zFC//sDwkc/foyqMztLkYwnZPbBW9f1Wf5+d3tCyy3byDCW7NFjPEYpPpECuAdi+5qDbQ3fg3RZtTZ8JmH7M2FPR733UskpUNxtSb60GJ4sl3q8ypfSZ7WJoFaFSfIw3yHqxPseOJZEF8pzjaeVfxo3CDR4/WJuVKD7zKnhUxbomuA5NK7cs0SdU3ghcOBh+YABysbYgV+QleTTCEbwqsylF3dg92sHzeqspdPhOK+pjH8fCXIE/kiAKy93QSz7xv8WzXLRT4eQ+w+CkQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=04UzrHhJCsBj0A2xmkEwwi/5LBGp/Z2ChU/53mgmk9Q=; b=pJhs2QKzEwlTPWaPNQD4djZLy23USM52fC84zQtoCkkqQ3lBiuY7aJ73Rary/ZSv0MD/oHlpM3ApfOFfwACki3RtB8tEKqeU3K8+fRfPkTpI7ax2E/bmZphF0v+vum7qiKVei7bdiY1qbyEOK+89h0fOWHoYzUdH6L8lQtsK9cg= Received: from PR1P264CA0011.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19e::16) by AS2PR08MB9427.eurprd08.prod.outlook.com (2603:10a6:20b:5e9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:04 +0000 Received: from MI3PEPF00008481.eurprd02.prod.outlook.com (2603:10a6:102:19e:cafe::2c) by PR1P264CA0011.outlook.office365.com (2603:10a6:102:19e::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF00008481.mail.protection.outlook.com (10.167.240.168) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vY2XkWkwUvhXIVqybrHBbzt2XmKrWizfx6OImi2YgyEYiyxtq9OG/7mhOh8LHTGyTfcNBBGTxAFv8k8W2l7bTvlDRMcRimVRArFodvcrlp1hFH3fM4lALepqdlQ6i0cIhpiNZjHYFIhQL2vcSMyInIDTwqD5/7j2ZP+EnvufkWqx/7i13+SdkAjGbCVT+NKE0nYzACGezFCvSn+hEkErQcPjQZDpsXbl8ukeieQ8mIiRYr+RQfUOtA1eynXgpe2H5NpTeIGSOGV0oaVTGl5OyRyTt64hUbDGV2ShmmqZzQeMYx4CBIQ9gCthHpUo8ZOmBZRIcTdHMssiORwLadir+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=04UzrHhJCsBj0A2xmkEwwi/5LBGp/Z2ChU/53mgmk9Q=; b=bgGGZpro61zcYEmw6vo34IQK++M6Kef0pHhlRPKhC1ArHQUresLZCi/gSvYjEkVEtFJ54rXuhaMZoQiQvkPnwx7s5TQF4lORX85Kn89NDDC1sMb/FCKgHp0Ow2cBmMFxmkXjol7D87YEObRL/xpdw8B0pnahmf2sCImArS5bUEvAaRjQddZl/9+hxF7g0jqa6QJjIsC3EA+7gz+G/Vu/5+KaFyzGBtLVeunlNotC2AwceNQVtLLTmK5md10TJeqkAjePPHjImOEg8PRtWao/iGbM70h+dmzC6ruVhZB7khPdQmN601oK6Z5cNKD++0GNAUHqJRIjwViI2mN6/3tanA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=04UzrHhJCsBj0A2xmkEwwi/5LBGp/Z2ChU/53mgmk9Q=; b=pJhs2QKzEwlTPWaPNQD4djZLy23USM52fC84zQtoCkkqQ3lBiuY7aJ73Rary/ZSv0MD/oHlpM3ApfOFfwACki3RtB8tEKqeU3K8+fRfPkTpI7ax2E/bmZphF0v+vum7qiKVei7bdiY1qbyEOK+89h0fOWHoYzUdH6L8lQtsK9cg= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:28 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:28 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Daniel Almeida , Alice Ryhl , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH v1 07/27] dt-bindings: gpu: mali-valhall-csf: Add Mali Gen5 AM compatible Date: Tue, 22 Sep 2026 21:45:01 +0100 Message-ID: <20260922204535.2850094-8-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P250CA0005.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:57::10) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|MI3PEPF00008481:EE_|AS2PR08MB9427:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a39ffb0-3eb8-4ba6-1ae1-08df18eaa87e X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 155OycUfkwzy6v6PKi9iBpPbzeRSBFcuadLV7dfbiqYDgywa5PKW1ZhZEwLyZcqCG8J2NgodvdBWbj4w4Vgc/3mUcIiqydWLvnF/kaTPcuDgiaxFknKL4TEnZ9C+M+BSADE+VI6p9jzkaqKQQiAlJnKhK7XsDzcgqc5ZWvoMV6EA2i0OB6s/4MsHf2P15QJBaSx8IMtYXc7goU3q+75MaPYbOMfo0v7uVXR9ATCyMu1xQ9Acu/z4UEr2obICiPGfq1ema29IYWTOWPmiTI+T/p/scI237LEHoy5PYSFQnqxpIFYzyL61stW3a1zyW/mg3Ekce78p1rx9yQ+RzbQxLknHI3yfrod9yRxqad5+XHUqiwxQgUxf2Oy2LyX1EIxxvaab5YfSaS+D9uLe2r0iid/TDpeWlgXr9pdoFc3iY1l5F0ywzs4lmIqqLgZs6spV5n4oJtxNiPc84o7QAyz8PwFYHM7WGxVwwCzR6kA4X4D87fWWw1+6+FvO82wx4+PU+TnVU/ikieVKGMqxccO42Gq/EaJBAnIbLdFcjndz9uv5d4MUIP4WMcp1Tc0RcztvAdglQKz33BYLaqL+1gy29EQHXDAro+jIcEpF/kQH/2hswFXbHp5q2VmarrLngz3cHAtj8ywxrJbFSJ98/vIx8KgaUzUVgeMQPRyrK1+ee84= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: JiwcXor8DN4G3I0fsyGFamHJjxxkS/YQ3S5VQGXmjZx5aT53ft7ndw/3FGHYts59wTx29wSq2vkf2st0Yr5Q0ERZaGasqLFn3/00QDVnBbOIDfuQl9BQDl8l7qMZSzXghH94/rUrJaJlO5IVLSdBS5MNh5TbEGHSe3qzeDnulOw0LYceH6BS2FXboNuROcNuIdCPoPczIvp9U7g5UsfAXkR80TcCue4BhTHAxMJ9TK2SLVP6a6HqKevLkWlVBCTI4SpOHjOmL7owVvFnymMymJfL7aE2XUwe87VaBcsvgfkEFodj6gMysJMKUZdEJ6DECRRbTpYhCKzH7GIildlXXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008481.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 91ead820-36d7-46b2-c255-08df18ea935c X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|35042699022|376014|14060799003|23010399003|7416014|82310400026|6133799003|11063799006|10067099003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 348ubYaRZ/ItkiD76fbJKFiOjElv+raEG2wOt+GDTii6+5WeK9mEF2SmPubAuvD4gTduIf0UKB44lXsjXPUSAHnnA3pifGLAA7e9CEipzG37bh2wmI3gZ/dYfhAw8ooYh5gXik6+6OaQ4aM/+CSjeEnYYeK5AjpDdmKzzMT8gvbIOAhm8RmqfR9puylPhDsQ40yV3itWOKmkAYQsMWXmgFWh/8d0/Icc1UqhU3t5VzPhY0kOjzW8VnxWV9wSAEfyDNUrTKAQ4Z32LbntyKd3a2m5xz3WqV1Iwn+ZNYxXBrG8iftvODxgqZgCxPdznv2B4Tf4EFr3G2k4Fi5ihDZYSFF4j/LcCwb2WMqfZcFPCLLj0jn/nSiZhyR7NNtpsSMQHDv5dMZIGuPfqpb5s2ZfhGQnX++HRPsdsx8M/eyr8pfNylhckW9DpUml6JZ4sSzZmq4r3vmmbFcgMeQe/Pv0jo7u13gvgD8GLK+BGvLpgjQ0xeyujW5lzn0BlH0ZtA1T3EGgUgFrP1cvcoJgG3R+AIxkaMA381p+MNWGTNIudjC0aR+ksrZzXz3ScpUnQX5pfEap0eynXIGRk9wODMWPNmc5qhRxsD+LY+norvvzI1BwNpZJNfL1snQMgkqbAuD7j2hVtxOkCSZ005E8IN7y+sUgG1ZupaU3PPEu9TH25zqeoW7oQuNYoJqTj2c/3ypCukznti29bgaqiDEeJ4199Q== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(35042699022)(376014)(14060799003)(23010399003)(7416014)(82310400026)(6133799003)(11063799006)(10067099003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1BR2nBx741tTb+q6K24Swc/WqC6mhFdo4N139H19i5uCTmkDWtl/WW/rvFFKsBFHqc3IuyJcbjRuXrosUz5q+pzhq3ZPYpw6eRlCjpVd9KUvGod1v+/yln+Z9vYcJ9CYQPGZ3w05fz/gQXSmslFhhNR/bSQfL0Ps9Vb7ItIqpCnB/BTEQ/pH8JG3VXXO/mXWyMpXZe1+gFdRbDiiRN3Cdy4o9Jfio4kvHXHPgs8fnhEI2O7lgA9AmSOIw2GQ1xCSurLhssDkqgpQZiEsuH4xXw3d8zGzBiVusCYXh0y80GvXRG7cVmygaQ05gsgxXUbieDZYOZGPDWcVPrJPAwD8ezcqte5kypGF8O91NVpOxlMgyg4df3fvxVjBKWEpFIuGcZ84L+x0XePTUU397ayK3p2bimJaDXXs/idltp/iG+bnG043PEomVj83qbjVvUtc X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:03.6331 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0a39ffb0-3eb8-4ba6-1ae1-08df18eaa87e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008481.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9427 Content-Type: text/plain; charset="utf-8" Add the generic "arm,mali-gen5-am" compatible for Mali Gen5 AM GPU integrations. Mali Gen5 AM systems use the external AM_GOVERNOR block for frequency scaling, so OPP, cooling and local GPU supply properties are not valid for this compatible. Add a matching example node. Signed-off-by: Karunika Choo --- .../bindings/gpu/arm,mali-valhall-csf.yaml | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yam= l b/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml index 8eccd4338a2b2..a1e85570b4b3b 100644 --- a/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml +++ b/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml @@ -22,6 +22,7 @@ properties: - nxp,imx95-mali # G310 - rockchip,rk3588-mali - const: arm,mali-valhall-csf # Mali Valhall GPU model/revisio= n is fully discoverable + - const: arm,mali-gen5-am =20 reg: maxItems: 1 @@ -146,6 +147,19 @@ allOf: - nvmem-cells - nvmem-cell-names - power-domains + - if: + properties: + compatible: + contains: + const: arm,mali-gen5-am + then: + properties: + mali-supply: false + sram-supply: false + operating-points-v2: false + opp-table: false + "#cooling-cells": false + dynamic-power-coefficient: false =20 examples: - | @@ -195,5 +209,15 @@ examples: nvmem-cell-names =3D "shader-present"; power-domains =3D <&gpufreq>; }; - + - | + gpu@100000 { + compatible =3D "arm,mali-gen5-am"; + reg =3D <0x100000 0x480000>; + interrupts =3D , + , + ; + interrupt-names =3D "job", "mmu", "gpu"; + clocks =3D <&gpu_clock 0>, <&gpu_clock 1>, <&gpu_clock 2>; + clock-names =3D "core", "coregroup", "stacks"; + }; ... --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010035.outbound.protection.outlook.com [52.101.69.35]) (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 2DE094334A5 for ; Tue, 22 Sep 2026 20:47:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.35 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110055; cv=fail; b=DpMkUBlzAKNFMrXUsVf46xjIo0DtyT+baAUVwnjIvMgAIcDsehDvhaRHaGAwTYv0SdrkJMYGVKBqrGjJKqTWh9+PEH59RlRKWLR66uE1IGmcDF+KaVZOjtMik4zKaJe7mctGzVC+vSCd0A8nBJfqh53KlnMOLjNKlYOHH+7QHLY= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110055; c=relaxed/simple; bh=Pthoar3138AbgNYuLQPEUwPPZOm9/4hUKRft8+sL2pg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OCbVtFSwbsaCM65ZZ+qeGqDPiGP1U2tIOruWHo6SBpeIE/DrArYCjBAvSshwV2MfQp5VRM7zVYQAObQKnwDjmlFj+xlkHyLpx05mzJ4Dr/g+0piKoX6MyCKE70oQtO52UMYgZgEaRhES4GNCbPUAiA/zI+CM21e/qcFC0T6oAEo= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=KeW11jEM; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=KeW11jEM; arc=fail smtp.client-ip=52.101.69.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="KeW11jEM"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="KeW11jEM" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=CosjThUJb+dwie6x/gFJ6Vgk6Zizrw7sRhzJH0nZC2cGmndzLR0Q1cQk4d4yxUQeFleoRTZAuenegkq4cs1ASDKda8BGTIb5eJz1X+cSiiw6MO/SUlrSo8VfWE6p9RxOM8Q5mS0Ovf8+de7xq9vAQExF+2EQK3y0tdY+HZaez8XB68qY2BnrJEIqBHMJyMobbPRyn2zlqSW2yPb5j/QNqr6EwrXknfxZlodUUwQexNvC1Ry4ph62Ace8HpcoP9s060HWTXTJZ4NexTU147qYF39j8532M8IxmJ9UYn0ZIU1qn96nLqtqhtKuSP6YfXZLhE96sp5d223s7EdSRZa2xQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=woW4ky7LaTtybjJHws91sxpUMhAisHrZKc/3pKTju4o=; b=ZCB/dHozLN0jdKFfdz/LngmZB+LTO+OTuBoAbbXqTTrzaC3muFxOVP6XXpOKn0hrOQjas++H66htafKg9r6jv4yHcopxSIgea/U2BB479NZtjNgLHOd3kJO+pnJBBY8t1TyadDDktN7Q2bXhokZCPYipR4bxxL5rg18KpUG5ToNZG1bhC9I4Ehm5Y0qiJemRJDXZEZQCeBkHkqora8UogP9UVbT6M8yb440wypDjescZj2x0lrlnZBVvh21wSO2eURhoGiTcT4NeJzF4CvnJi5Z9Xj3cKHpZgf0sORMcFd96b75qqdwvlQ+moG+n7e6x/k9N91nmIEFTyNxG+qOrcA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=woW4ky7LaTtybjJHws91sxpUMhAisHrZKc/3pKTju4o=; b=KeW11jEMyxM0eV5NHzURtOAGH/x/1f50bK6WItPFQuzQEedfpL09XcfjL8Vj2RaayOtoBdAb+GkBBBycKHqxlPpTm6ZrNHEhLWXQBajDBxqshlVpaiv3uyV4+muFHaZB8DgokJ8y3SYO75OTtFJ7Rf/Se6o+uSuvQ4R7eE+MTZ4= Received: from AS4P189CA0056.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:659::26) by DB9PR08MB9491.eurprd08.prod.outlook.com (2603:10a6:10:45a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:06 +0000 Received: from DU6PEPF0000A7E1.eurprd02.prod.outlook.com (2603:10a6:20b:659:cafe::92) by AS4P189CA0056.outlook.office365.com (2603:10a6:20b:659::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000A7E1.mail.protection.outlook.com (10.167.8.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lJqLdySGdZQhDD6cr13XzctnkMss61mGApE8bkVHiFHtZr6QdpEa6N08IynhgtidDu6vWMY03WcWyPZzrWvSXAt3Q3UmH4l4FyWALpchspvnMIyKz2CBxjDlh72yf+aHWHbE9nfpkSLar8To5Si+/FRxSXTIohts5/Ohsp9p48v9JLtc1LpSdteyhnrOgxbynMpjMOGf61wINKpaVcEN3jui+cGLN15IQNfNhmqOuk2HhCQm/j7H5fFAUUPkgNVC0vdIh4TxtZHfw0fjW2TlX367tx5YwbUmcJ1FLR6CaSGAeF00JPzKoCxYsJP/B47B38A3lxIsu0NJvp4SGDtS+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=woW4ky7LaTtybjJHws91sxpUMhAisHrZKc/3pKTju4o=; b=es8c5+iEgbMPvlZCIc8lubXQi+qMujUJHmPd1AEf6PKvYzzhz1Uf75z1WmpTbQnEDFFRYtiOW4PcXEyorh5P1E3+OIp+AQDywLuBm2IwpL1cMlWO7gVWuf8wXdgdnB6gF9UqUF/6wdDkwHR7C6yFN4Te3Ucs/HS26uvnD5MOccJs523zd+l4ickJgCbNA0gthpXRT9mwHRB7D/yU9dnFCeUaxq12qf7gDDVLkuyU343ufenAVn3+Xw1p9uYjR1XDY1HxGmHlMkyHXEAD1w7rNDdfgLTDy1rPMyUKAwE/CBXLlJPUXWOIQRhk5+CA2Aychd2AQINeq4WZQ9zG3+P5iA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=woW4ky7LaTtybjJHws91sxpUMhAisHrZKc/3pKTju4o=; b=KeW11jEMyxM0eV5NHzURtOAGH/x/1f50bK6WItPFQuzQEedfpL09XcfjL8Vj2RaayOtoBdAb+GkBBBycKHqxlPpTm6ZrNHEhLWXQBajDBxqshlVpaiv3uyV4+muFHaZB8DgokJ8y3SYO75OTtFJ7Rf/Se6o+uSuvQ4R7eE+MTZ4= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:33 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:33 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Daniel Almeida , Alice Ryhl Subject: [PATCH v1 08/27] drm/panthor: Add Mali v15 hardware support Date: Tue, 22 Sep 2026 21:45:02 +0100 Message-ID: <20260922204535.2850094-9-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO3P123CA0031.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:388::10) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|DU6PEPF0000A7E1:EE_|DB9PR08MB9491:EE_ X-MS-Office365-Filtering-Correlation-Id: 83fc26f5-ffe4-42a2-ada0-08df18eaa9c9 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|3023799007|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 4C1e28Up49Bn4yB4RpvSBNpGrsE3vnjBe2v5dEDDVIypErYB2UwAMHCAIGp+iU4NeDYIx9oco8vOAntcwQtcV03t5eeclfW4YVCdVhP60r0Q3DvIjsxi4Bu7JBxdd30WEstxlwHcKW84u1WqewCYdYHb9dVV4kXA9cxad4VCvKcmaaMhQEiVXtaL5ukke4g1JYazFzQDz6hmDqfI0xzlsPYOmNXExgLxrd+nD9UpQVl/PlzZtldcdcVawaMPkh4xmXgFGQRZRMgv5tYnyfWO57ugZCITowRH4Gd93T0JL58eE5bOSPWi5H4C5EfDJTHCCrvC8zAdKua5uomoSAFIO8lDH7TCAIlwF6U6L1LTe0zWT1lIWz8acHeWyfW5PLwM/8i54ltj5hP1o3kAzlrOB4V4OsGdGZD+MgBlVAZsqr4Q7mZ32r6JWkoPn2lTrfzhP8U4FMMu5gXJLfld2K15Y0QzaAji+OS2AIk+lFwLj7v/6K1+uImHXyOQ+u1RM72kSxbSP+weCEIDQqhsaQjlkIt71hVFuZ+Zl+0v4mihA5IvhIPkzBdCTkkNhhVE1fe67QHcnYjFOtx9T81oJEh2zpKLj8uf/WQC9cjcFk1b476+xrPrwFofckj62wBk6P8yd+b27md4EJTD/nj/6L+Pjj9IQRy40ke1lXJJVBCiTSs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(3023799007)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: Ax3TQhiOHUf/CNGjZOPAP1DaGjYro9tIngFutNolKWCBssEhpFl2sxM17K9c3lQwfSPZVIdgmtOK/flMvwjZ6aRXeL021LUpgbZTYrkYgHSbDKQZbo1m2amJAHNfdD45gHc2OuEX/bwKzKB0xMbEBacjrYGVRiGsTkQJjvnwMuvm2JfcGjtFqhjbrZDC7NhVmyMwsJAee1/dyTeL91aRmw6y3yumWMhgBzdoMWPQwfYG6iQ6if6GcfzOUT9PaNyF7+/tVn0zNeKy7OUJ4zLjFO6ki4PcJ1HuJWO7yCR7HpX8LLj87ePMjIlgQb/0QCTZ+TWWBNANJImFmRmvrCSZQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 445aee5e-57a2-4ec0-7df0-08df18ea9651 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|23010399003|36860700016|82310400026|1800799024|376014|35042699022|7416014|10067099003|6133799003|3023799007|11063799006|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: 5OUtRmoXVz01zbzkO0w9hQHTDssh2jq5LYi3M7Vd6VyGQlz/NtpysWhOflETCdKE2Z7FrT873jdsU1lt9hgX8JXvsf8t9mjQ32JElL3wFrCYkcLm/u5hqfpZcmseFayeX5aHywx+a0dfm2//+i3ZrUt6oijuWnWn02MrDqp0uobMr0/SFZM51+Z7+r414I97AirvTWgDRwfF2NPZr8FaQ8QSy2NYciwailsKUfz74YHqi6i5+vRTs/1LvMQC2XqbLF/qiVJKRzD1/4lXARRJH9qLeBy6qX2yMZgV+txAsasE63pTIdw6tTjcVocdjMIMl64gag0EKbI6k1+u/LvdJTxAS0MsFhKi1xkAl2WIeqoXAAqZfiwIEI8QaRtaJr6GVyywA2Y6nSIge8d4lzE8fkXYyFr4ERqOn21CWc4yLyGxZWzABnkMAeRs8bnT8HYqkuYbfOOXq7jUWKjRoa7+ZpYQq3vVKx6Z+0qbfRSHo4SrNIalVDVLw8NQJuQUctq+tbAtza7y35p1WRQXTAlepSz0MUJVBvv0u+qujxZe+eHa+kCpL/Ygh/cdl3F5ipZG0zmslM4zIifMUQOZ0756TcNJL9JQEMCXUZD0bU+O0eagrkh11q7maLqDrRsFftFuapZk4JQbHnsI9kthaT425YvhzY/IF8zEblbRpk86G6pb1PaxFS0eusklILf1bsj13LuUxR6yZJ+QrwomSglcVA== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(23010399003)(36860700016)(82310400026)(1800799024)(376014)(35042699022)(7416014)(10067099003)(6133799003)(3023799007)(11063799006)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BKWmiO1lSNIkjsuRrfxm5dPLbYtNqmBf1hFLFQmLEHgeub0nZswy6DpmeBH1bMlNCh8IL9xC0IDSreArZ5HhXVfka6u8NrKni7zEb4zVqJ215SprbpPNxgYKxZAmwxp9rh4Bd9Ci0fzvCRh4UKz+N/Pa+9V+Lhl09xeMGTEdu+j1CoMD/pm5zStHs2J+ODUXcLV74xXHE3wiKG2mtE4Wjbrbhoe1cOjm275edNyw9RWaK9VCBLCIKQsqKdT0fIb58LzYsw9mJUNecoV7Igw9ArE8ZU2/t+x6xgJVcqHw8d6gWfbkIvtyA+JbS98AsnMN5Ah1rxhTOAOT/3SwWFVbWvAazN0X5T6/byc0zF8kUJ/r3+7z9g1/HrSMyK6ESDa/nRR2c9Kga8imVT6xBfgDEhOF1XTYO1nmWE9WXwYytIz8c/czrKUUUAo9w+y1KG3D X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:05.8720 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 83fc26f5-ffe4-42a2-ada0-08df18eaa9c9 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9491 Content-Type: text/plain; charset="utf-8" Add the panthor hardware description for Mali v15 GPUs and hook it into device matching. This includes the v15 register map and product identification needed to populate the GPU information exposed by the driver and its uAPI. Add compatibility string for v15 GPUs. Signed-off-by: Karunika Choo --- v1: - make COHERENCY_FEATURES register read use cached gpu_info values. - Added Mali-G2 name variants and NX aware model identification. - fix premature reading of l2_features gpu_info field during panthor_hw_info_init(). - build as_present using GENMASK. drivers/gpu/drm/panthor/panthor_drv.c | 1 + drivers/gpu/drm/panthor/panthor_fw.c | 1 + drivers/gpu/drm/panthor/panthor_gpu.c | 3 +- .../drm/panthor/panthor_gpu_discover_regs.h | 25 +++++ drivers/gpu/drm/panthor/panthor_gpu_regs.h | 1 + drivers/gpu/drm/panthor/panthor_heap.c | 3 +- drivers/gpu/drm/panthor/panthor_hw.c | 98 ++++++++++++++++++- drivers/gpu/drm/panthor/panthor_hw.h | 13 +++ include/uapi/drm/panthor_drm.h | 10 +- 9 files changed, 147 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/pantho= r/panthor_drv.c index 8cdba0c1a14b9..3fe9f96f7755e 100644 --- a/drivers/gpu/drm/panthor/panthor_drv.c +++ b/drivers/gpu/drm/panthor/panthor_drv.c @@ -1886,6 +1886,7 @@ static const struct of_device_id dt_match[] =3D { { .compatible =3D "mediatek,mt8196-mali", .data =3D &soc_data_mediatek_mt= 8196, }, { .compatible =3D "rockchip,rk3588-mali" }, { .compatible =3D "arm,mali-valhall-csf" }, + { .compatible =3D "arm,mali-gen5-am" }, {} }; MODULE_DEVICE_TABLE(of, dt_match); diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 679ea1d233d53..1449d9a66302e 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1563,3 +1563,4 @@ MODULE_FIRMWARE("arm/mali/arch11.8/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch12.8/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch13.8/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch14.8/mali_csffw.bin"); +MODULE_FIRMWARE("arm/mali/arch15.8/mali_csffw.bin"); diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index d6534fabc682e..e6e970e9b59d3 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -499,8 +499,7 @@ int panthor_gpu_coherency_init(struct panthor_device *p= tdev) /* Check if the ACE-Lite coherency protocol is actually supported by the = GPU. * ACE protocol has never been supported for command stream frontend GPUs. */ - if ((gpu_read(ptdev->gpu->iomem, GPU_COHERENCY_FEATURES) & - GPU_COHERENCY_PROT_BIT(ACE_LITE))) { + if ((ptdev->gpu_info.coherency_features & GPU_COHERENCY_PROT_BIT(ACE_LITE= ))) { ptdev->gpu_info.selected_coherency =3D GPU_COHERENCY_ACE_LITE; return 0; } diff --git a/drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h b/drivers/= gpu/drm/panthor/panthor_gpu_discover_regs.h index e6bfe1fe2c68a..c4d0cb2fca92d 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h +++ b/drivers/gpu/drm/panthor/panthor_gpu_discover_regs.h @@ -16,4 +16,29 @@ #define GPU_WIDE_VER_MINOR(x) (((x) & GENMASK_U64(15, 8)) >> 8) #define GPU_WIDE_VER_STATUS(x) ((x) & GENMASK_U64(7, 0)) =20 +#define DISCOVER_REVIDR 0x8 +#define DISCOVER_GPU_FEATURES 0x20 +#define GPU_FEATURES_VARIABLE_RATE_SHADING BIT(0) +#define GPU_FEATURES_SIMD_STATE BIT(1) +#define GPU_FEATURES_CROSS_STREAM_SYNC BIT(3) +#define GPU_FEATURES_NX BIT(4) +#define GPU_FEATURES_RAY_TRAVERSAL BIT(5) +#define GPU_FEATURES_LD_LEA_TENSOR_INSTRUCTIONS BIT(6) +#define DISCOVER_MCU_FEATURES 0x40 +#define DISCOVER_PRFCNT_FEATURES 0x50 +#define PRFCNT_FEATURES_COUNTER_BLOCK_SIZE(x) (((x) & GENMASK(7, 0)) <<= 8) +#define DISCOVER_DOORBELL_FEATURES 0x60 +#define DISCOVER_MEM_FEATURES 0x100 +#define DISCOVER_MMU_FEATURES 0x108 +#define MMU_FEATURES_AS_COUNT(x) (((x) & GENMASK(23, 16)) >> 16) +#define DISCOVER_AMBA_FEATURES 0x120 + +#define DISCOVER_L2_FEATURES 0x128 +#define DISCOVER_TILER_FEATURES 0x200 +#define DISCOVER_CORE_FEATURES 0x300 +#define DISCOVER_THREAD_FEATURES 0x320 +#define DISCOVER_THREAD_MAX_THREADS 0x330 +#define DISCOVER_THREAD_NUM_ACTIVE_GRANULARITY 0x334 +#define DISCOVER_TEXTURE_FEATURES 0x360 + #endif /* __PANTHOR_GPU_DISCOVER_REGS_H__ */ diff --git a/drivers/gpu/drm/panthor/panthor_gpu_regs.h b/drivers/gpu/drm/p= anthor/panthor_gpu_regs.h index 753df87009901..60819c4ace428 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu_regs.h +++ b/drivers/gpu/drm/panthor/panthor_gpu_regs.h @@ -65,6 +65,7 @@ =20 #define GPU_FEATURES 0x60 #define GPU_FEATURES_RAY_INTERSECTION BIT(2) +#define GPU_FEATURES_NX BIT(4) #define GPU_FEATURES_RAY_TRAVERSAL BIT(5) =20 #define GPU_TIMESTAMP_OFFSET 0x88 diff --git a/drivers/gpu/drm/panthor/panthor_heap.c b/drivers/gpu/drm/panth= or/panthor_heap.c index 99311abdf1e91..afb7d68abc874 100644 --- a/drivers/gpu/drm/panthor/panthor_heap.c +++ b/drivers/gpu/drm/panthor/panthor_heap.c @@ -11,6 +11,7 @@ #include "panthor_gem.h" #include "panthor_gpu_regs.h" #include "panthor_heap.h" +#include "panthor_hw.h" #include "panthor_mmu.h" =20 /* @@ -105,7 +106,7 @@ struct panthor_heap_pool { =20 static int panthor_heap_ctx_stride(struct panthor_device *ptdev) { - u32 l2_features =3D ptdev->gpu_info.l2_features; + u64 l2_features =3D panthor_hw_get_l2_features(ptdev); u32 gpu_cache_line_size =3D GPU_L2_FEATURES_LINE_SIZE(l2_features); =20 return ALIGN(HEAP_CONTEXT_SIZE, gpu_cache_line_size); diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 13090ff6db7b5..9d539f5f80158 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 or MIT /* Copyright 2025 ARM Limited. All rights reserved. */ =20 +#include #include #include =20 @@ -74,6 +75,29 @@ static struct panthor_hw panthor_hw_arch_v14 =3D { }, }; =20 +static struct panthor_hw panthor_hw_arch_v15 =3D { + .ops =3D { + .soft_reset =3D panthor_pwr_reset_soft, + .l2_power_off =3D panthor_pwr_l2_power_off, + .l2_power_on =3D panthor_pwr_l2_power_on, + }, + .regs =3D { + .gpu_control =3D { + .offset =3D 0x3000, + }, + .mcu_control =3D { + .offset =3D 0x3100, + }, + .pwr_control =3D { + .offset =3D 0x3800, + }, + .mmu_as_control =3D { + .offset =3D 0x2800, + .stride =3D 0x80, + }, + }, +}; + static struct panthor_hw_entry panthor_hw_match[] =3D { { .arch_min =3D 10, @@ -85,6 +109,11 @@ static struct panthor_hw_entry panthor_hw_match[] =3D { .arch_max =3D 14, .hwdev =3D &panthor_hw_arch_v14, }, + { + .arch_min =3D 15, + .arch_max =3D 15, + .hwdev =3D &panthor_hw_arch_v15, + } }; =20 static int panthor_hw_set_power_tracing(struct device *dev, void *data) @@ -152,8 +181,11 @@ static char *get_gpu_model_name(struct panthor_device = *ptdev) gpu_id->prod_major); const bool ray_intersection =3D !!(ptdev->gpu_info.gpu_features & GPU_FEATURES_RAY_INTERSECTION); + const bool neural_present =3D !!(ptdev->gpu_info.gpu_features & + GPU_FEATURES_NX); const u8 shader_core_count =3D hweight64(ptdev->gpu_info.shader_present); =20 + switch (product_id) { case GPU_PROD_ID_MAKE(10, 2): return "Mali-G710"; @@ -196,6 +228,18 @@ static char *get_gpu_model_name(struct panthor_device = *ptdev) return "Mali-G1-Premium"; case GPU_PROD_ID_MAKE(14, 3): return "Mali-G1-Pro"; + case GPU_PROD_ID_MAKE(15, 0): + return "Mali-G2-Ultra-NX"; + case GPU_PROD_ID_MAKE(15, 1): + if (neural_present) + return "Mali-G2-Premium-NX"; + + return "Mali-G2-Premium"; + case GPU_PROD_ID_MAKE(15, 3): + if (neural_present) + return "Mali-G2-Pro-NX"; + + return "Mali-G2-Pro"; } =20 return "(Unknown Mali GPU)"; @@ -219,7 +263,7 @@ static int overload_shader_present(struct panthor_devic= e *ptdev) return 0; } =20 -static int panthor_gpu_info_init(struct panthor_device *ptdev) +static void panthor_gpu_info_v10_init(struct panthor_device *ptdev) { unsigned int i; =20 @@ -260,12 +304,55 @@ static int panthor_gpu_info_init(struct panthor_devic= e *ptdev) ptdev->gpu_info.tiler_present =3D gpu_read64(gpu_iomem, GPU_TILER_PRESEN= T); ptdev->gpu_info.l2_present =3D gpu_read64(gpu_iomem, GPU_L2_PRESENT); } +} + +static void panthor_gpu_info_v15_init(struct panthor_device *ptdev) +{ + void __iomem *pwr_iomem =3D ptdev->iomem + ptdev->hw->regs.pwr_control.of= fset; + u64 texture_features; + + ptdev->gpu_info.gpu_rev_wide =3D gpu_read64(ptdev->iomem, DISCOVER_REVIDR= ); + ptdev->gpu_info.l2_features_wide =3D gpu_read64(ptdev->iomem, DISCOVER_L2= _FEATURES); + + texture_features =3D gpu_read64(ptdev->iomem, DISCOVER_TEXTURE_FEATURES); + ptdev->gpu_info.texture_features[0] =3D lower_32_bits(texture_features); + ptdev->gpu_info.texture_features[1] =3D upper_32_bits(texture_features); + + ptdev->gpu_info.thread_features =3D gpu_read(ptdev->iomem, DISCOVER_THREA= D_FEATURES); + ptdev->gpu_info.max_threads =3D gpu_read(ptdev->iomem, DISCOVER_THREAD_MA= X_THREADS); + ptdev->gpu_info.thread_num_active_granularity =3D + gpu_read(ptdev->iomem, DISCOVER_THREAD_NUM_ACTIVE_GRANULARITY); + + /* The upper 32-bits of following registers do not contain any informatio= n (yet) */ + ptdev->gpu_info.gpu_features =3D gpu_read64(ptdev->iomem, DISCOVER_GPU_FE= ATURES); + ptdev->gpu_info.mem_features =3D gpu_read(ptdev->iomem, DISCOVER_MEM_FEAT= URES); + ptdev->gpu_info.mmu_features =3D gpu_read(ptdev->iomem, DISCOVER_MMU_FEAT= URES); + ptdev->gpu_info.coherency_features =3D gpu_read(ptdev->iomem, DISCOVER_AM= BA_FEATURES); + ptdev->gpu_info.tiler_features =3D gpu_read(ptdev->iomem, DISCOVER_TILER_= FEATURES); + ptdev->gpu_info.core_features =3D gpu_read(ptdev->iomem, DISCOVER_CORE_FE= ATURES); + + /* AS_PRESENT register removed on v15+ create virtual mask from MMU_FEATU= RES.AS_COUNT */ + ptdev->gpu_info.as_present =3D GENMASK( + MMU_FEATURES_AS_COUNT(ptdev->gpu_info.mmu_features) - 1, 0); + + ptdev->gpu_info.l2_present =3D gpu_read64(pwr_iomem, PWR_L2_PRESENT); + ptdev->gpu_info.tiler_present =3D gpu_read64(pwr_iomem, PWR_TILER_PRESENT= ); + ptdev->gpu_info.shader_present =3D gpu_read64(pwr_iomem, PWR_SHADER_PRESE= NT); +} + +static int panthor_gpu_info_init(struct panthor_device *ptdev) +{ + if (panthor_hw_has_gpu_discover(ptdev)) + panthor_gpu_info_v15_init(ptdev); + else + panthor_gpu_info_v10_init(ptdev); =20 return overload_shader_present(ptdev); } =20 static int panthor_hw_info_init(struct panthor_device *ptdev) { + u64 l2_features; u32 major, minor, status; int ret; =20 @@ -273,18 +360,23 @@ static int panthor_hw_info_init(struct panthor_device= *ptdev) if (ret) return ret; =20 + l2_features =3D ptdev->gpu_info.l2_features; + major =3D ptdev->gpu_id.ver_major; minor =3D ptdev->gpu_id.ver_minor; status =3D ptdev->gpu_id.ver_status; =20 + if (panthor_hw_has_gpu_discover(ptdev)) + l2_features =3D ptdev->gpu_info.l2_features_wide; + drm_info(&ptdev->base, "%s id 0x%x major 0x%x minor 0x%x status 0x%x", get_gpu_model_name(ptdev), ptdev->gpu_id.prod_major, major, minor, status); =20 drm_info(&ptdev->base, - "Features: L2:%#x Tiler:%#x Mem:%#x MMU:%#x AS:%#x", - ptdev->gpu_info.l2_features, + "Features: L2:%#llx Tiler:%#x Mem:%#x MMU:%#x AS:%#x", + l2_features, ptdev->gpu_info.tiler_features, ptdev->gpu_info.mem_features, ptdev->gpu_info.mmu_features, diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 68627f0df7f95..48232254fef97 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -88,4 +88,17 @@ static inline bool panthor_hw_has_pwr_ctrl(struct pantho= r_device *ptdev) return ptdev->gpu_id.arch_major >=3D 14; } =20 +static inline bool panthor_hw_has_gpu_discover(struct panthor_device *ptde= v) +{ + return ptdev->gpu_id.arch_major >=3D 15; +} + +static inline u64 panthor_hw_get_l2_features(struct panthor_device *ptdev) +{ + if (panthor_hw_has_gpu_discover(ptdev)) + return ptdev->gpu_info.l2_features_wide; + + return ptdev->gpu_info.l2_features; +} + #endif /* __PANTHOR_HW_H__ */ diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h index 843a0b40e1d36..5c75dda5f0ae7 100644 --- a/include/uapi/drm/panthor_drm.h +++ b/include/uapi/drm/panthor_drm.h @@ -371,8 +371,8 @@ struct drm_panthor_gpu_info { /** @core_features: Used to discriminate core variants when they exist. */ __u32 core_features; =20 - /** @pad: MBZ. */ - __u32 pad; + /** @thread_num_active_granularity: Granularity of number of active threa= ds */ + __u32 thread_num_active_granularity; =20 /** @gpu_features: Bitmask describing supported GPU-wide features */ __u64 gpu_features; @@ -389,6 +389,12 @@ struct drm_panthor_gpu_info { #define DRM_PANTHOR_WIDE_VERSION_MAJOR(x) (((x) >> 16) & 0xff) #define DRM_PANTHOR_WIDE_VERSION_MINOR(x) (((x) >> 8) & 0xff) #define DRM_PANTHOR_WIDE_VERSION_STATUS(x) ((x) & 0xff) + + /** @gpu_rev_wide: 64-bit GPU revision for v15 onwards */ + __u64 gpu_rev_wide; + + /** @l2_features_wide: 64-bit L2_FEATURES for v15 onwards */ + __u64 l2_features_wide; }; =20 /** --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013019.outbound.protection.outlook.com [52.101.72.19]) (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 765B1440654 for ; Tue, 22 Sep 2026 20:47:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.19 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110055; cv=fail; b=BH9t0wOUJve62ddKwyKBacu7eGwWQeOlk4OoO4S4Hkw6XvuSy51U5V0DELHQjRKGaRLdJR2YEFsuoLRW/0rFTQD8Mq6ATmio3Y95xVHqRVzyHZRwzvowBpMlkBxmIBVb0oXhF1PHOapBrfCXs1X2qeTQC+MMN94t22uKDN1wTRc= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110055; c=relaxed/simple; bh=jlcvy5bOe+a5BD5Qwtr+MjeWkorafh47K+FRydlp6BM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=D0KUdiHjrZwjvkJwlGJFNxBSDi/5dYtlR2k2BwMLGATpS1RWaAL6cxtE61L+2EZDqEwqHdXsztnamQZNHAvRVpIV5hKzKOgzCdmrcygpPABoi1GhISoxVdCpWnkZpaMRgg5NyJYrfpDeawhibtKpsWGS8WTEAftLC4YdaUysVgs= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=VSMp3ffU; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=VSMp3ffU; arc=fail smtp.client-ip=52.101.72.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="VSMp3ffU"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="VSMp3ffU" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=F9Pmw8a0Bm+nCgRVRNjysyZ+uZzfkZj8dCoVVyM7Pr4Y6LzwAJLaBFJMJg1c+TzvnqOSyIXNIOSCC18d6cDSK4svw/mX3wi/9dr5b3gDDV4N+Vmi5lq/12lQU2nN8X1Y+H06LhPakbj1tm4wTetlgA8kzQATJcnTrQjhVCZa8erxlSXgvTTtG38zVAei9KjD/0Opy/WMhUFi/gpGp1NRoDjzkwXArfWY9fwzoDWnwszrvnrXHPLxEvvBf4chKH+bvegjj4srkZEoikpL5PqDKkFUcR+hUyLDKvkG5EyPXVtkQ5w0BJ+OCU6X1ZqEPbcHoo7c+ujhvtVX/l58/MYpAQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4CdvBFTSvSbbxQmACGfQljI4weUvRAN138KYCAn5C4I=; b=EdC1gEOGuB8n3xQA29M4zx9vgXbR5xHqRUCDzDpPemDp4g/0nVQcJS6eX2GXiGE09I/7nP7DVpJpKO0rQJ2TS06bBgVJs+HhZ0rZo1gQgilWQzmF8foPnSqTwAtRjiz/agNvREGxYGx4y7OptfhpH/hWi72osEBAZq9+Mq4MEqKfRxRBJJSwe9V3Z5xiaCF+hjvswjys9ZuRfJSTwsI+7pl5CaP964UH3cwa07pkubafXF0BN8twX2qE2jfACEtKiRgYpkoPwjStxSEuxQJD3D2GKlHOvVk0B1WHbziyocXThKMCjtNdwJMrmJpKARtazSj57KgPJZvWTxrX9f6DSQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4CdvBFTSvSbbxQmACGfQljI4weUvRAN138KYCAn5C4I=; b=VSMp3ffUGeHDDIdZJ06AXLdGC8rwzwfmdEoEpfNYJWK16mrlURR1MbjYy42aFwgho4+mrV0GOgRvddnQNMz8brJbu/eTiDRfxRyFEIZnUTrGYnytLKwMlix/VcqygAaaqYntPS96YfnbR/KHA3+hRODxoM8e/YQMfvwKy62DMAA= Received: from AS4P191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d9::11) by MI9PR08MB352182.eurprd08.prod.outlook.com (2603:10a6:290:b6::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:11 +0000 Received: from CPH1EPF0000051A.eurprd04.prod.outlook.com (2603:10a6:20b:5d9:cafe::51) by AS4P191CA0016.outlook.office365.com (2603:10a6:20b:5d9::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF0000051A.mail.protection.outlook.com (10.167.241.229) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nc/yMMILCKJ8te/x4pRLzU/2+IifvdeZ7tdmSciD0aAgtjRRa2HfYm1NN2Z7KkOFiBNcqudIpLp0ZwJmpo7CR9F7grI+dD0ne17wcmF8NiYtyhsC4O1C4xI+f7axLJZJosp9e4aU7NxFxatIb66T8H2iMszgsttpf4elbZ76Vs7Iie40zFx+fEP2uUgSytoVxnMVUyiCUee4u+ICignhnR52J+avNQ+Osy6fho1si1gv7oEcRC4wKu0XMGjN7dhX7HmyqIABnGjGRU9472rvHlf2thO8VW9Aluz2KN3P00WNRINPmzFfPQyFLn8Te8Og/IlUA3HmRgpBy6FvhFIuPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4CdvBFTSvSbbxQmACGfQljI4weUvRAN138KYCAn5C4I=; b=XLhC/fWj6SdwjUkaVgY9iFJnUqYNBCbZSjlh7F5fnjk6RsIiLF5dg+uGmyWOvJ/2XMg394Z/jYjucT2uPASoJbCMkfsdypMIXK12hjyLFAi+nWwO3DiNNQgEhbSHorFRGUiMGeKQewZZkNhAeSju9kkZeWCjPvuds6KIe3TdWm8hmRJ35yBILKhfRSiethphyXnkmDesu91g18AVrpP9BkpUHZxvaLqUqelWxd72g1sXe+EAq87tvHp+kLOyB7drbBbK2mK+MNGeRRDPttGjHaOVP9I2GfgG06PlyDq/FcCDIYagP/MdwL3g3oBWgugXOtzoHJsUEHowT2k+C2ZLmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4CdvBFTSvSbbxQmACGfQljI4weUvRAN138KYCAn5C4I=; b=VSMp3ffUGeHDDIdZJ06AXLdGC8rwzwfmdEoEpfNYJWK16mrlURR1MbjYy42aFwgho4+mrV0GOgRvddnQNMz8brJbu/eTiDRfxRyFEIZnUTrGYnytLKwMlix/VcqygAaaqYntPS96YfnbR/KHA3+hRODxoM8e/YQMfvwKy62DMAA= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:38 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:38 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 09/27] drm/panthor: Skip devfreq when no OPP table is present Date: Tue, 22 Sep 2026 21:45:03 +0100 Message-ID: <20260922204535.2850094-10-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0094.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::9) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|CPH1EPF0000051A:EE_|MI9PR08MB352182:EE_ X-MS-Office365-Filtering-Correlation-Id: c39e8bae-99b0-431c-b9ce-08df18eaacb4 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 38uD8iq+++3v97gVGbjIipjFQnDIZBILoukURHr0x77k3MIKpOiuJuU0N0UNkI/sJZPBI1NGgMypT+hnNzXtpcQF53jl8MQmZxGa0b6fl3uGtUHBpVL6AiSyBsS+CTGJf4qECwFravKXvZ3Ty8hJYZj0si51Zob4shi4/kSa5vcqUqE19hYRyCSrxXI4brrqj49wUs5muxKrh372tWBMpbUWpoOlTWneB4yklxpz7BJ2yXxPY3hdOpg4IAPbitEbrjBNQ66dYmu8mQbkdLBZ9k+cYgpE5XCt1ytLP3j8EUJ10Yf9gLacN1LDTbloR72TEKA0o3xp5mxZU9ylPxsn6Pbscu8I8AdZzR6+IKmMCe9r84v8Ic9YmLSL18Ze8d4Rk7WYg3p8ZOEu8ThcRVszlSpNbOVr5IpvWYyDJ0KlwUqqFcBHYglqnkj0UVCZeN9FkJ0WsczfdHp6vSN8D6aJy5wFq1MGQ5x+vAuj8MCFZ4ZJ36Bi2SVfU7wrXVnBBg2lpznBlS8YsGiHHfTpZll3qaE2gW03OwAVR7oThuQonDvh2BNuhXjtkCK4KuJK7xwCYNbKH5drtasyFsIUCh1DNRQe4LexwHZareNsUM9wAfFdgNhpAHonbtw7CBqbWpWPevfRLcycktz9IljG51ujzQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: Lq4lagxEW8lSrL5syFaOYIby4+8L+frirRmo+pLS2KgPtvFL8S9xvy2eaqC3o/6WkV3d1aFOLgDVjvZmbNAhMz4I1pDVjLz/fRn+zBuRleZlHc0aMWzZcnjj/opAAtERoynzSI8bkXW7HLV/vdfusjrwqh7Q0Axdxz7rG0wIAVDBA1UQmPwGyIeADUI1lkqtCDy2PwHFB54UOR5Cq9LzoI4WApo0PrJY2ptzrUANpwgNw3ObZCFJkpMrf46fUcpDsb/ivFOBRCHU3ZYa5VYvEa4yXBBgAuvrGYadVvma024akVunAfnrMDHP5VC4gwtHdnmJ+5bb5jUPCLCTFSRVVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF0000051A.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b88299f6-fe1c-44f9-4378-08df18ea993c X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|82310400026|36860700016|1800799024|14060799003|35042699022|11063799006|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Db95C4BSbPQH/tlq8UeNRa04BbeQ4XbQ7426ZxiCkNBaXPPXUIzPK/VK5PZ/0CaFr7NNPVKHzrBMo6Z0fe5GgWLoGcOr7lIGYBXsrGjJuTncWVo/hEbCESfgP8yMyNmIJvG7idQd/N2VsleC/bl0ONNkCiR1ea5rIkwUvPF3/i5FxcL0H2zMkak9XUzyS62KumjoGFp9Oa4mLHFvmuDBk0RneJatXs7jHmxI71Nx27L26CvfyMeSkV2/4yBmxpHBaUzaIKVLhk9Gjt/eetvn8pFq19tdxym1VNhSsoMXIqFf1mx7euvGaiGm0Fzm145MAvYoJD9B2NW1tRQFB5FSAa9XB3BEygtI5Y0MEPR6WK8u16rjTgKfB+iLlweVB9d/rsfxw8HUK45Xm+2Z4IYK5hW079Of0u7p2kjEksuHq4XEFBr9UfD8sqjfcvMIDfSHwwbDzXv0nyj6RaRl94Yr6UExcY+VAsDjIeqCXJYmAgMqdJtLgkU/6lyikOzwFPQ/5OhP9eVKcZbIb9BrAIyyEt7kmRkKselhL/ANuLs8sMB/oJhc5A4LAN5nN/1wTeCXv7MjpY5FEVoWjbE34oeuWrDTFn6xsZFn6h9XtqL5mmtXzisgOFgRs/FdSHQqxsCDPr+/d/p/ivwfe6ht0dVqCsJiJWjPEf+Uy/v35751xzcd851firbbQI7h9nYDsQyn X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(376014)(82310400026)(36860700016)(1800799024)(14060799003)(35042699022)(11063799006)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SZYN5/K57arVlx1zT3QzlBCEmH0XN5dtssGjYmvAFO3X++XfJCPIeUQbc4qeGUF7lv54Nad5eFz1SpkDWVfzYjJmC4KVVdEBU6hXFqKjDXrB19T09riTldiGfsOz5LU4c/ipUlQ/XmQeaXWfT29xSY1CeEoN4mtjHe32yIcQBLDbPIkSGBcj+fhT1mr8ydmohqUjeW5KqYhXm5AcOECebaTuEUIt/ErzGY5XmVvh3BGhu432SX+9VWlccu82Ixmy/2iI/cCeL+AsOF4CGfWnTCUnQh/tPls3UV6xKz/Izuk8KaVHIGvTEInLBt7wgvUroEDLvrT/eZo6jE2VTDj0TLzBm3Ub2qR4myWUXlkbSOPOuW4jE1KeGHvMzoQulrl1nFWemA3d/AZd0ribgZ3sziH+ce6j8oLNF+7++WeDlFw3i8ApshghpiulxLbpraew X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:10.7475 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c39e8bae-99b0-431c-b9ce-08df18eaacb4 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF0000051A.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MI9PR08MB352182 Content-Type: text/plain; charset="utf-8" On Mali v15 AM systems, frequency scaling is handled outside panthor by the AM_GOVERNOR block, so the GPU DT node may not provide an OPP table. Make panthor_devfreq_init() return early when dev_pm_opp_get_opp_table() returns -ENODEV, and guard the devfreq helper paths against a missing devfreq instance. Also make it so that frequency can be queried even if the devfreq instance is missing. This keeps devfreq enabled for existing platforms while allowing v15 AM systems to probe without a local devfreq setup. Signed-off-by: Karunika Choo --- v1: - Only skip panthor_devfreq init when OPP lookup returns -ENODEV instead of direct DT-property check. - Support frequency query without devfreq. drivers/gpu/drm/panthor/panthor_devfreq.c | 31 ++++++++++++++++++----- drivers/gpu/drm/panthor/panthor_hw.h | 6 +++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_devfreq.c b/drivers/gpu/drm/pa= nthor/panthor_devfreq.c index 2249b41ca4afe..18c1a7e56ca08 100644 --- a/drivers/gpu/drm/panthor/panthor_devfreq.c +++ b/drivers/gpu/drm/panthor/panthor_devfreq.c @@ -12,6 +12,7 @@ =20 #include "panthor_devfreq.h" #include "panthor_device.h" +#include "panthor_hw.h" =20 /** * struct panthor_devfreq - Device frequency management @@ -164,6 +165,19 @@ int panthor_devfreq_init(struct panthor_device *ptdev) */ table =3D dev_pm_opp_get_opp_table(dev); if (IS_ERR_OR_NULL(table)) { + /* + * On v15 GPUs, frequency scaling is handled outside of panthor + * by the AM_GOVERNOR block, so the GPU DT node may not provide + * an OPP table. In such cases, do not initialize devfreq for + * panthor. + */ + if (panthor_hw_is_gen5_am(ptdev->base.dev) && + PTR_ERR(table) =3D=3D -ENODEV) { + drmm_kfree(&ptdev->base, pdevfreq); + ptdev->devfreq =3D NULL; + return 0; + } + ret =3D devm_pm_opp_set_regulators(dev, reg_names); if (ret && ret !=3D -ENODEV) { if (ret !=3D -EPROBE_DEFER) @@ -267,7 +281,7 @@ void panthor_devfreq_resume(struct panthor_device *ptde= v) { struct panthor_devfreq *pdevfreq =3D ptdev->devfreq; =20 - if (!pdevfreq->devfreq) + if (!pdevfreq || !pdevfreq->devfreq) return; =20 panthor_devfreq_reset(pdevfreq); @@ -279,7 +293,7 @@ void panthor_devfreq_suspend(struct panthor_device *ptd= ev) { struct panthor_devfreq *pdevfreq =3D ptdev->devfreq; =20 - if (!pdevfreq->devfreq) + if (!pdevfreq || !pdevfreq->devfreq) return; =20 drm_WARN_ON(&ptdev->base, devfreq_suspend_device(pdevfreq->devfreq)); @@ -290,7 +304,7 @@ void panthor_devfreq_record_busy(struct panthor_device = *ptdev) struct panthor_devfreq *pdevfreq =3D ptdev->devfreq; unsigned long irqflags; =20 - if (!pdevfreq->devfreq) + if (!pdevfreq || !pdevfreq->devfreq) return; =20 spin_lock_irqsave(&pdevfreq->lock, irqflags); @@ -306,7 +320,7 @@ void panthor_devfreq_record_idle(struct panthor_device = *ptdev) struct panthor_devfreq *pdevfreq =3D ptdev->devfreq; unsigned long irqflags; =20 - if (!pdevfreq->devfreq) + if (!pdevfreq || !pdevfreq->devfreq) return; =20 spin_lock_irqsave(&pdevfreq->lock, irqflags); @@ -319,14 +333,17 @@ void panthor_devfreq_record_idle(struct panthor_devic= e *ptdev) =20 unsigned long panthor_devfreq_get_freq(struct panthor_device *ptdev) { + int (*get_cur_freq)(struct device *dev, unsigned long *freq); struct panthor_devfreq *pdevfreq =3D ptdev->devfreq; unsigned long freq =3D 0; int ret; =20 - if (!pdevfreq->devfreq) - return 0; + if (!pdevfreq || !pdevfreq->devfreq) + get_cur_freq =3D panthor_devfreq_get_cur_freq; + else + get_cur_freq =3D pdevfreq->devfreq->profile->get_cur_freq; =20 - ret =3D pdevfreq->devfreq->profile->get_cur_freq(ptdev->base.dev, &freq); + ret =3D get_cur_freq(ptdev->base.dev, &freq); if (ret) return 0; =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 48232254fef97..e5bcb908068cb 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -101,4 +101,10 @@ static inline u64 panthor_hw_get_l2_features(struct pa= nthor_device *ptdev) return ptdev->gpu_info.l2_features; } =20 +static inline bool panthor_hw_is_gen5_am(struct device *dev) +{ + return device_property_match_string(dev, "compatible", + "arm,mali-gen5-am") >=3D 0; +} + #endif /* __PANTHOR_HW_H__ */ --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013009.outbound.protection.outlook.com [52.101.83.9]) (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 4EC4F44064E; Tue, 22 Sep 2026 20:47:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.9 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110060; cv=fail; b=pakDAEhycetq6abhhq3TCkliD5+WztRdGgbuG9RG+mjr90GCqn2TED9I/nl1E7/7CGXqAaYmbsYcT1W2lmVrVbcK/JiptQp6yRBN9cFbDibpEyTp0w+tBLOJmc5FZ6yjiZSlj7AoiafWhjM0G/rR1/Qdd3egxWrzyZ3q+cATQ4w= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110060; c=relaxed/simple; bh=85IiIY8pBE5AdTjmXyA5TY06LIyv/LSedBHWbUgSvD4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eEOk9MwF/32/FUq519bf3LdVQtL7B/PXIvykjkyQEIXUGz2WE0c3TcAGwQk6IZrEphC0uWm8W2yjOMf6kt0I84gpsmOwITF7c05hPMR4pl5mO5kyJwO1kL41K+qgLzECS1EvfV71jwNJUBR0XkpVP6wXKckuxA8RP6Aay7CVF3c= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=glzKbpTt; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=glzKbpTt; arc=fail smtp.client-ip=52.101.83.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="glzKbpTt"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="glzKbpTt" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=GsNz79qNWHhUhi1ofpuzx0CiCn1SSAwoSobSHIsGVlldBWFcI1IleVVbrq00WD6WOSR9GmqficKXt2rE2N5LI1Nu0gt7gqiRPyEWeYc2bBu/V8VwfvjMikyw325awmviEx58wF/sdMBKxVqEr9FRMOymzmDwxsx0ZCVYFK/6i6ORaGLi1EIphJyHZ0Co9g3PAguY6s8pVccW5Xfv2l98IarAzR/MsYhIETpeSa/9LW+xg1aBqONGs4zqNf9SHK1CNzRr98HcfGaYyDY2hBfEmmUggtDJgjSzzCJjHIG0zXZdP8atvbZurn5DeTDhvXw5ri9PwNgi/vDRI5nkJRaFiw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=j8bdvAvRaA37by+SOu5d2U+q2CF5pOPbCZRkDOAF7YQ=; b=cDpCsVmfzuLVPL6Kr4dzWpfCEqQIFbMXBnIivBjccFMcqu3sPcAxGVGqB0K3m0n6fEky7Wh5GSH0AfxOMrCAt4GDnierbh5dNLJi6GU+TKa2Ssj7CFDK/VQhuUvjMjPSXsv4j8mxlw06gq0B6PavCj/3aju0qEhws/13NEvqJ1xxrKAZSK53l3z6WqPCh6O3Q0z/LWKX/O+GWE/Z802dRjuwkV1HUQZTB7zvGREkgLcDdzOqD5MUtlQ35Jjx+IEwSmZyetr4NcIWr6egjz4oZHkpMRzKhG6o62U11Web6DF4oEsBx9wGD1wRAQSreS3l9BCcEc5CIpDoZmv5hehkig== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j8bdvAvRaA37by+SOu5d2U+q2CF5pOPbCZRkDOAF7YQ=; b=glzKbpTtCEBf5tqn24xyvxNCaBDXPdCqvfeDDpf7WerHMaloRbnrMdXRodidjqZ3VwV4qGjt9gB76kbb7sT5TDwWIFFmf5HeRnmunBFMIv/goKyjN5otHoFh+YWgvqi1zEmqpwQZCQSHF3xuZG90AXI7XTm2mc05hJKhAS/PLVE= Received: from DUZPR01CA0010.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c3::12) by DB9PR08MB9444.eurprd08.prod.outlook.com (2603:10a6:10:45a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:15 +0000 Received: from DB1PEPF000509E3.eurprd03.prod.outlook.com (2603:10a6:10:3c3:cafe::31) by DUZPR01CA0010.outlook.office365.com (2603:10a6:10:3c3::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509E3.mail.protection.outlook.com (10.167.242.53) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Tue, 22 Sep 2026 20:47:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hG48FYdtTU3kCsq6dXiMs0gBMq7Qw/IQZvmMZytiMMDFM9E3q9ehQC9RsChxCLnoID+sm8joqvJ314O7nOszKO6yq3k+EaZysqxCjJavkXENZsTvVyLGhQNGX4xfeQCS8/cLB4BrkfKxZu6Ti6YgBa7WSqwaU2oYNYMl36vDD+kATqrEk9pJ1e3M46A+qVNEOEqcK6896A7NQnivPRDjNouDtcj2C1QjFUZvJJ6ba3/qRclh9SyRkrQqKx0JsUMmpkRc5huM/5odjn2wiY8F6D0pfbPdgjLuuw/MNsS8VEgLKEwQTA0E06+9cbnmlDmDjLpSKOW6lJiHfIgMCUYOUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=j8bdvAvRaA37by+SOu5d2U+q2CF5pOPbCZRkDOAF7YQ=; b=rj69qiOmHzLpHx8q91glmwVObmcqDBfameZrwBlFfeLHdf5CJy1T72z8D2oJ0wO6+CiBFMr+gW39enScCMvAlvsRMw57tUQVyKP1c21euYCsh/kj7CSkc9NyFNWLoQDcjpujflkWN3SDWt7wQCYgM2zVQKbi+v6vUM2pCb+NcvGuUlTaiLrFWwAHlloEUnUlnwfY3gUkfGHv7Hx49maoer2IUTjCTijRzSZ3IjEfvAz0Sl3ogSg9Km3DfBzxhqJeAdTiKV6ZAJJeCxkOAjCI8r2A/GThAT22oJBB4+4YVWIpPBzpsp4aLiUSLIXXUvoECNkwZVdaIYJ/ObYAd1wHhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j8bdvAvRaA37by+SOu5d2U+q2CF5pOPbCZRkDOAF7YQ=; b=glzKbpTtCEBf5tqn24xyvxNCaBDXPdCqvfeDDpf7WerHMaloRbnrMdXRodidjqZ3VwV4qGjt9gB76kbb7sT5TDwWIFFmf5HeRnmunBFMIv/goKyjN5otHoFh+YWgvqi1zEmqpwQZCQSHF3xuZG90AXI7XTm2mc05hJKhAS/PLVE= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:43 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:43 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH v1 10/27] dt-bindings: gpu: panthor: Document panthor-system bindings Date: Tue, 22 Sep 2026 21:45:04 +0100 Message-ID: <20260922204535.2850094-11-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P189CA0082.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::27) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|DB1PEPF000509E3:EE_|DB9PR08MB9444:EE_ X-MS-Office365-Filtering-Correlation-Id: a2778625-8cae-4414-2563-08df18eaaf60 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|3023799007|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: WdZwuhxdE18ln4abmd2J9s69ZeWK213pI15iFI6Jsnge73uxtDrguYReNeKoFPhMyEV4pymFALdQBT+uPccCZ5/0lpPzl68UwERgmyfVPDHC5xvZRBATyWGr4CB97eYkrT/B4Zmb7xeU+D1+VVeHkvtZxRT+e4CVcn7f/U53A0Za+R0w1y4EmUcvf1FU+4j/S2bi4hIWKeWpR+3tWQLyAB1Qtv1hJ+ID3UMukgQCynpqapVFLgmIXXaJVJhCIXGy8tgspc+dL2NwdN73MW7X0HAQV0VOITlcaSFNL7D3KWrOW7Qn+vhFfaAZEbXoohlc48d6LbVgpxiQnvpRdfnN+YPF/H9uY8mIH9EudkLxpPvlijS5uYkNtTAXZZLIxNrE6Z40Cq0I70tOL4JgtFkda6xQ1SiGI7sPd8IKzdMULoosRB2h+l1bY9STMSRoN+j1tZ4qHKwCYowdugjbGtU8COO2k4X7V8LZUIZyeDRQWJ08hj3rC5yCXq6VDnIz93r/0UGe2O5+B40nbpyald2N7AoxlKvgEVA6TXbyg7D4XRxuTmec62Yi7EJ/VKeRtEhnLM9X9ZosNGdJo/GJ9se2BZNTEPlm0vRlxOP/LWO4meKVtFrE/YmYqxBxZTRt2WmH X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(3023799007)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: o1Qs9QY1kHhly64iFh1jJ5geX2rUAFIMfdxJySJTn/nm/fTJRkUNY/hHdcOw2612vxDRvJD0fvz0rzIs+jWIov5p3hdgOvRvoiokVJMSpTtuezSbKP055R+EqDggQEHxyu0MFDUVq4pUzqNbh7at8Ikf1gIrbcpH21Iuxnypy99lz0xoPlYMZQxkJYdnGvZ+lA/fMZqBF7SqP1aStaPdn9HYfjHkvxYhfAs9oqC4j96PryadRJWKitNNRh+qV7qvB20XHsxrBWo89QDIspiV9fcslxPRaBlZMOXRI0IydN5AA6Te1qpfkPioDbQ4R2ObYKe7er0qiX3SvNRvd6SRNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E3.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7c7c367e-b2df-40a3-b39f-08df18ea9bd8 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|14060799003|36860700016|7416014|82310400026|35042699022|376014|1800799024|10067099003|3023799007|6133799003|22082099003|18002099003|56012099006|11063799006|13003099007; X-Microsoft-Antispam-Message-Info: cHNNTnV7dS8LLkRAhiCIPUMuuLoPc+PfSqBl4zXG6HIu0rZ1paXHu9yFcpHdxSdJ1Th+z8ovRNEVH8mpvcsGKB1aIOkJ9mf9yyEDgdpVoUQxIhpcfEGhHM9hwHMdZAWlVC/nhty+NB5TBeDet7cMouw3PpaTYZEk/034J19ZH1jVkxdQJOF0gc8OgX7t8m8peTP/dgXMdFL5z+RBSplI3ZahMct7XOxBMKYT8Qkk34Vb/p7u/xdIch/jSvn+ZarSvLgGe9vY/IpSRP1sGvqkxSZ/sVgyk3ilRDV2kpGyCO3ALSvHuntLtloeghWGOYAh+BoWUPvn2Zwzb4oZJvX0QPv3QPK9ExLQdkY9nIihhWoYFzz0FDRJN325XfVJkapCdP7j06QLb4YFzHBFpAOvZq/FlaIcn4conN4jd7PaIEevu28KNglJqtxZ+gGpQX2j4GP1z88NW8dKNLMzr0hG4x0OP83bS8ESXA8Z7YlNxItMM82AQBiHXolxfeL6bNQOrU3LVISg1oWGC3vzKcMW5H07ZSY5DD9BMCOLBQyjzJY/LmoqZaiKXYysomadCgGtbLdSmDzgT3OttuAYqGcYQ0zHDNujVuTU3beAQmlshtk+oJ0ClxCEYlhudmGXRUBiDvUmZffX7wf/37S7UZ2hTQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(14060799003)(36860700016)(7416014)(82310400026)(35042699022)(376014)(1800799024)(10067099003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006)(11063799006)(13003099007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x92q9zutbqGz4IznkdGCXecxr4D+4pNacqHRpX3LU6KgJRdbvM0cEiJfoPnopVQ+jbmRlTRKUE6AUOHXbIrVGwMXr2qiePYp7LwnrHtykQlrALkN7yRrqPPqc04u5/but53d/kKy5eaogDZy0W3pbJLQPGsh2HEpVQbDGuxgWKJdjbUbbNCYuFSbLivZO+65okC9Xv5sbNob0qH7xlfWHPE3jfciFb2nhtCExD80XGdqglOdZ8ToQjPIHKMWuCodk+6u42eeIwUbjQONy3OckHoBZAEKhNOTEa6pjsmRg9HnxFzGhqJedOm95f/HeKS481qiYyX/t/SgvnBcnN4adl4kmZTi84nb7z/9a/m9DeMSKvaQOt7aDxrf0qwv+FDdlqd2naR6qOw+nU4EwfbvWmv+3Wynot0EYIwCuTMW6VMCGzTQSI2PWumGPmCZ4+Qr X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:15.2589 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a2778625-8cae-4414-2563-08df18eaaf60 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E3.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9444 Content-Type: text/plain; charset="utf-8" Mali 5th-Gen AM GPUs expose an AM_SYSTEM block for GPU-wide control outside the main GPU register window. Document the system node compatible, register and interrupt resources, GPU clock, and optional GPU regulator supply used by the AM_SYSTEM platform driver. Signed-off-by: Karunika Choo --- .../bindings/gpu/arm,mali-gen5-am-system.yaml | 67 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 68 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-= system.yaml diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.= yaml b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.yaml new file mode 100644 index 0000000000000..f0689bb8f05a2 --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.yaml @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +# Copyright 2026 ARM Limited. All rights reserved. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpu/arm,mali-gen5-am-system.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ARM Mali 5th-Gen GPU System Device + +maintainers: + - Liviu Dudau + - Boris Brezillon + +properties: + $nodename: + pattern: '^panthor-system@[a-f0-9]+$' + + compatible: + oneOf: + - items: + - const: arm,mali-gen5-am-system + + reg: + items: + - description: System register + + reg-names: + items: + - const: system + + interrupts: + items: + - description: System interrupt + + clocks: + maxItems: 1 + description: + Phandle to the GPU clock. + + gpu-supply: true + + dma-coherent: true + +required: + - compatible + - reg + - reg-names + - interrupts + - clocks + +additionalProperties: false + +examples: + - | + #include + #include + + panthor_system: panthor-system@68000000 { + compatible =3D "arm,mali-gen5-am-system"; + reg =3D <0x68000000 0x10000>; + reg-names =3D "system"; + interrupts =3D ; + clocks =3D <&mali_gpu_clk>; + gpu-supply =3D <&gpu_supply>; + }; + +... diff --git a/MAINTAINERS b/MAINTAINERS index 40fdb0ecc9c12..377156650580c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2324,6 +2324,7 @@ M: Liviu Dudau L: dri-devel@lists.freedesktop.org S: Supported T: git https://gitlab.freedesktop.org/drm/misc/kernel.git +F: Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-*.yaml F: Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml F: drivers/gpu/drm/ci/xfails/panthor* F: drivers/gpu/drm/panthor/ --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011012.outbound.protection.outlook.com [52.101.65.12]) (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 E0D0C51EE19 for ; Tue, 22 Sep 2026 20:47:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.12 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110065; cv=fail; b=YDNWfDr3MfM1efZxyvKeJCCBGl22SaVqW48ZZEHxaPdVpvW2MonuXbaQrw3gxEWxXR4/WkFDTXb2qaDRB2KuQjwEkZ3HyKBsxrzoUmUgykTQEJSo9aV5yqsvY4ZAogabRxUIcACLdqYMM8h5Vi++U+yCDOF3Ghsn2hFJF2TQcZs= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110065; c=relaxed/simple; bh=plzIhT67X6E20yVOf4qXA00buI1FOwGxfLRTJdnLABk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qcl1OX45P12X4z5dv2h1jQMecA4sV1XXWIcdbzJbD23NCWFQ8LjcmLkTJ7XjoQ/KuD0mystpXiu3PRpKtA20RMp3vUx+y/tfSi/HLXgHxUPY4Y2owCgfNGqQ7Fsmu2gWj6SkN7ijh4XHZjOzqdth8oE+EcUl3zBSuWsbzBtCP9U= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=jJKHlSRy; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=jJKHlSRy; arc=fail smtp.client-ip=52.101.65.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="jJKHlSRy"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="jJKHlSRy" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=YQBlmcVFP3f/mXqhbooiC0o067oemCeg45olnnq6O4PuT81CUoKZvPI+vrInCzmj859/ZhhiCUrhfIvkzCAZnFIuUhzovPOLHetYFru4u3jlnFtqvIrvknA95hZczQYMrrf+rBdmh4dXWz2X1mOy2V1vs/5zOWn0Vq9huI11O/OaBblSITikCt+0jo7k6cETWHR2E8yXRM7HxqQDxlkGAOhRWaEiDXRjGZ72cbv8m7MG/oe6JGCJXzwZy/a1hRFjcX8p7MuqHWWT83qxN1ijWXBARChJH+siE1BiI5MniKE8f8p28kcJdFBImndp5m6W/LAjKx8d7CsXGEytTEE4Ow== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KKCYPQnmKMXMA1fzQ46hp1KTByU1+gXLfUU7WOtzneQ=; b=hh22DVwgb2DbAYPfRUpSQm1BgLaX6Njzn207zC9zc4ncPGemaCgOI9Rcul4o3dvZehIaQgTEplffNbqLqMMwsiXM2v3YHnaf73ej12R2yPbIBKIEAyaYns7ZV34WQQVIBXjUikVJVcVoombRSjvCQmuYQrZ134JNVYjuOmmHiltgwCf+p2E00FZORoFXng5qPaZh2Yg2MYYO5R/MeuE54JAyDlAptdN5pjxEMpIzYynwDHYnCAr/HCqCKO1IA80nyAaSzc+E9nCf5j+MtGy63hLx7qyQrUCizBaqXxFWf6KSZJEwzaYap0A4pQOoMv9lV97Ip56IHsl/FyFHRlNVAg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KKCYPQnmKMXMA1fzQ46hp1KTByU1+gXLfUU7WOtzneQ=; b=jJKHlSRy0UHxeudMO+Qgb32Ek5TOHcPyUX3S86quQr0XiFshzV7xnJo3FVENKRo+vY8GaNRcu+2ZdScqCabCdewzY/a1VE0e5GDkkYXnpDX9mRIYiZHBT9lLH8gdJPWhJJi0zgFzClEu4qWSGC8OY7BMH5q+Tk1ayR8UYhsalTU= Received: from GV3PEPF0001DDA3.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::6ca) by VE1PR08MB5840.eurprd08.prod.outlook.com (2603:10a6:800:1b2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:20 +0000 Received: from WA1PEPF000099CF.eurprd04.prod.outlook.com (2603:10a6:1d8::167) by GV3PEPF0001DDA3.outlook.office365.com (2603:10a6:158:401::6ca) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.11 via Frontend Transport; Tue, 22 Sep 2026 20:47:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by WA1PEPF000099CF.mail.protection.outlook.com (10.167.242.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bc3cSlruXD8UBNBAmca2/j+nsI0PoFCc44xQxnHcN4wrnTi8Vsa707BdenTlbd+QQjmvguSjQ1eOC+y2clUQto0jGPVrO7DoB1CwTnBQ7Sx2tlyHw/bh6na7Y5DQ5YNVdnfXWRgg5aOytScB5TY2PxC3JJegi04IBqlmK1Jgx1tbH/r2H/c/3AjZFUVKGriddabWUDZAq+B+sGof7sozrwPkGagiH5FyteRxXWVXFH4AyktWibwa8F76BkKs18LCm9r32EE1bwTfJpBWQ7ylNMUpevCXGAqIZ9aj9MTM/+iFwztV0cYyLSSuX7Vk5fMR6NrQj9Uw9pMWLnZDq1zl2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KKCYPQnmKMXMA1fzQ46hp1KTByU1+gXLfUU7WOtzneQ=; b=IrJynkI4CyF0kYU/egYy/eHM5v9IEdEcTE5L0PVT/FC964QI9TX9+uPc61GO47VQTI9u341YwxMGJfqcTmF3YMyk4MGf+qY5ehsotbshICQGjeR90SNyaCeW/SytAvmKzbvKgSUN6heTFEFnIrVUgn0ycrWaX//GZGy643QmSdyPmwtRFvxcgJdYj/rw5wxxxs6FLDUUeJKSpepRQvLGoq627fEeC7x44DC4IYrh6siD9G1T9uug/077bLS0fazHrwmQPmo0FnebDyjwVYW2+ZF35a46osKPCgH/KO0aXB6zZ0TyJZ8s4/+zpu9fwKPlyA25hCdqHRRS//tzI/thBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KKCYPQnmKMXMA1fzQ46hp1KTByU1+gXLfUU7WOtzneQ=; b=jJKHlSRy0UHxeudMO+Qgb32Ek5TOHcPyUX3S86quQr0XiFshzV7xnJo3FVENKRo+vY8GaNRcu+2ZdScqCabCdewzY/a1VE0e5GDkkYXnpDX9mRIYiZHBT9lLH8gdJPWhJJi0zgFzClEu4qWSGC8OY7BMH5q+Tk1ayR8UYhsalTU= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:47 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:47 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Liam Girdwood , Mark Brown Subject: [PATCH v1 11/27] drm/panthor: Add AM_SYSTEM platform driver Date: Tue, 22 Sep 2026 21:45:05 +0100 Message-ID: <20260922204535.2850094-12-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0216.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a5::23) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|WA1PEPF000099CF:EE_|VE1PR08MB5840:EE_ X-MS-Office365-Filtering-Correlation-Id: c91a91e2-92e7-4b1a-c573-08df18eab231 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 4DJtYL3tSNkMFY/drM9w6SBUkmWQuz6qmv/jvtznNEkR1oWmozpBzBQRXIrHfGw8psDPiKs/+IyOjCz2sVbACfGsG4PbQczhlWsuMsvucZsyESX0XJbhc6QNN07MOzVFsqPWSuaRZqKF9etova8bPR5j4zHUWD+xbhxMQAGxTYiXoZo4Pa/KblYRRd+7THllZHQ6Iix+iaUoJa+Kzvi1RFNg3NWmGuvzE5MwOoZEKkwTrYd6OZX2Or65Jw00eT/1AWhz/ChU8Ysfs22lsO+LgzT6ID3siOdxoKp2rsNiPgNXDMD1uNrMilH+oLMgOjhJBO0ipEt+zshkLsdlcoBp6sxU/a0W5Zl4iWaO1XjzbOF+wuUp8ZXzeD10EAYiloM7vKp/rc3j/4OP4iTTuXOqDOyUzOzNR8dKbFzaklXB8xG0FP3Wa4RBBXIMV2AxABSTtS/6/byalSxgrB3ZnqTfDgv4MDzcOv3zjomUfRQFqawFuQeQZiXNGzL+3M5xw0LW+fcqSdXV9q/qsStl72sA8gThVai4gN5WD/Zr1krbdPanVDetb89ZBZlSL7+ybOTTylIuLngkcHaF+/klh5y5IK5JgXG+mtWPt+XuuUxM3NwiCySsz9t5F6m4hRqXinEM78lXpUwSKA5lG6nlJiae+vunYcBoSbTAEGONpGC6ZHs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: 0kXT3sSSdviG9ESRHzE0sqXNaXwxPLkQS74Eq6Lia79sCnceDO9H9CJxKjLNHezzmdxROJdQ3f0QmjIw/OvbLy/J1J9mDNXf/RJWw4eEh8QKCU9bgQ4Qm16XEf/Lrgl3b4BuOfkffvI+pJ5LCDtG3mzty1LUI0lE+ugAkTju7Dz+BzJmL7UaXr6L83agEp0v68oR7LxuNmKq8l005oQfC/Lt+bXKR7/l8fXO0Vo/g9NBUk8qeSfdLu/wFFfo4Rc9HN9+tVIKzi7a6ghqf7RuSXTnAiSLsVxyP3joZBNyCSAMEsh1j4isQgKitDLEZCepyGU4O000PMBYpTP6MPFurw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: WA1PEPF000099CF.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3aa196d6-6c37-4c47-32df-08df18ea9deb X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|1800799024|7416014|14060799003|82310400026|23010399003|35042699022|6133799003|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: pmDNLQWYbFMAKbsqNkaRYOHCExHbYL3AoRZ6ezqAkQnRRwsYS4uOH8+KLgHQLiTputyYkD5YWFrhU4Pu6gSWoW24q3ukuZkHxXv/Z7B8Xzi9UPErhpItQ3eBmO2pLbNM26omp0n4XHiL9imzI2EBpfxpgpJXBrCNCBbqOkKX3kdIp7/fYYETa9CpaBWgfbjQvnvDRSPH3gFTDLd+ZBY/rCubhCRxMGHNpJ3qj7WwRmC4rbYYFmLiqZaIfDayJjNDGjf5e5fGg+Wx4mW1iBGXGWbScqh7W4mbX82HRWBJ/vhadSlUELkXMU5lEmgPPLPl4qWXuqxmNnxClIp0sXEkFEsIuQuO/supoZOEIngCH+Kl8IWCpBW9iLlgFpNKCFJMMNkngnLIq0Oe5hDa0fWfJsVc2qxQfTBRpw/99ng3ajyAoKfVMikIap/fWWnw+xMo7HhWHF3JvzPQtShBT6RbPG7yDevJproOd0SymUrygTgGl+QX8J3YbTKC37xxVnhTsZh8uFzoS5Oc2J4yaFDDGgxv7Wx4m4+2TaTnDGHCluRux/sEdyblr81gtD5PTYkPvofItadCePMn2izdmNSlZ9g8pkST6H9GhEz5ME8/7Gx4ERGdVyAXtJDrrwAARebhAKmR0ifyEC0r2s3AnnqzTzW+8i+yEmFl0ymAM2O7TV7MxzsMmEx5RMc66finj+Lbz/ZGNVLiSZU7vZxzCk7Mjg== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(1800799024)(7416014)(14060799003)(82310400026)(23010399003)(35042699022)(6133799003)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MObx3oLDv+prU+ubxHveHz/0sXNnHoP9wxdV6N27YCpGdqxq9bB37mTPn8TkMo916jwPHgjsTn6NQP8043W1uva/2qHjGg1+s56CmgdEipvyc18odlt/ZBOMdXtno3pOeNHOnHZLsjJKNpHsjBMAY6rjI+eyeoKt7rpApN4eqwRMSrZ8tsn5ZFXKh4fZ/iREQSnroroNw8teV6sbXz86xASIuU0i8yKdVjW35+9J7oRiUi2BwFF7hkii1p0czalyeiLVtY+mSHXrit8TFSxdNQLPdV/GaSqKuavuDoKnW75S4qcDeyFfvfrS5/BRJmlj/EsgFFS9+HD3DeGnj7vfJNhbJnDAfyWPA8Kf6J+BWgriS1VkBd3Wy1FdKXrYai8IprTDvzLNxTe7IH/jCZYhf1wlo+0hHUHtfKcDhOO2mX4ikbmQgrSyJf8eoAAVjNH6 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:19.8886 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c91a91e2-92e7-4b1a-c573-08df18eab231 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: WA1PEPF000099CF.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5840 Content-Type: text/plain; charset="utf-8" Mali v15 AM systems expose an AM_SYSTEM block for GPU-wide control. Add a small AM_SYSTEM platform driver, wire it into Kconfig and the panthor build, and use it to manage the GPU clock and regulator resources. The driver also performs the initial GPU reset sequence during probe. Signed-off-by: Karunika Choo --- v1: - Renames panthor_system.c to panthor_system_drv.c to facilitate adding another source file for v15-AE support. - Explicitly obtain named "system" IOMEM resource. - Explicitly use "gpu-supply" regulator instead of inferring it from the "clock-names" DT property. - Populate/depopulate child devices. - Clear stale RESET_COMPLETED interrupts before reset. drivers/gpu/drm/panthor/Kconfig | 10 + drivers/gpu/drm/panthor/Makefile | 1 + drivers/gpu/drm/panthor/system/Makefile | 13 + .../drm/panthor/system/panthor_system_drv.c | 304 ++++++++++++++++++ 4 files changed, 328 insertions(+) create mode 100644 drivers/gpu/drm/panthor/system/Makefile create mode 100644 drivers/gpu/drm/panthor/system/panthor_system_drv.c diff --git a/drivers/gpu/drm/panthor/Kconfig b/drivers/gpu/drm/panthor/Kcon= fig index 911e7f4810c39..e17c93035e8b7 100644 --- a/drivers/gpu/drm/panthor/Kconfig +++ b/drivers/gpu/drm/panthor/Kconfig @@ -20,3 +20,13 @@ config DRM_PANTHOR =20 Note that the Mali-G68 and Mali-G78, while Valhall architecture, will be supported with the panfrost driver as they are not CSF GPUs. + +config DRM_PANTHOR_SYSTEM + tristate "GPU-wide configuration for Arm Mali 5th Gen AM GPUs" + depends on DRM_PANTHOR + depends on OF + help + Enable support for the AM_SYSTEM block found on Arm Mali 5th Gen + AM GPUs. This block provides GPU-wide control outside the main GPU + register window, including reset handling and management of shared + clock and regulator resources. diff --git a/drivers/gpu/drm/panthor/Makefile b/drivers/gpu/drm/panthor/Mak= efile index dd15d52a88bac..488a5e03efbc4 100644 --- a/drivers/gpu/drm/panthor/Makefile +++ b/drivers/gpu/drm/panthor/Makefile @@ -14,5 +14,6 @@ panthor-y :=3D \ panthor_sched.o =20 obj-$(CONFIG_DRM_PANTHOR) +=3D panthor.o +obj-$(CONFIG_DRM_PANTHOR_SYSTEM) +=3D system/ =20 CFLAGS_panthor_gpu.o :=3D -I$(src) diff --git a/drivers/gpu/drm/panthor/system/Makefile b/drivers/gpu/drm/pant= hor/system/Makefile new file mode 100644 index 0000000000000..018b569655b67 --- /dev/null +++ b/drivers/gpu/drm/panthor/system/Makefile @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-2.0 OR MIT +# Copyright 2026 ARM Limited. All rights reserved. + +obj-$(CONFIG_DRM_PANTHOR_SYSTEM) +=3D panthor_system.o + +panthor_system-y :=3D \ + panthor_system_drv.o + +INCLUDES =3D \ + -I$(src)/.. + +ccflags-y +=3D $(INCLUDES) +subdir-ccflags-y +=3D $(INCLUDES) diff --git a/drivers/gpu/drm/panthor/system/panthor_system_drv.c b/drivers/= gpu/drm/panthor/system/panthor_system_drv.c new file mode 100644 index 0000000000000..1f25c7bad49b5 --- /dev/null +++ b/drivers/gpu/drm/panthor/system/panthor_system_drv.c @@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "panthor_device_io.h" + +#define AM_SYS_IRQ_RAWSTAT 0x40 +#define AM_SYS_IRQ_CLEAR 0x4C +#define AM_SYS_IRQ_MASK 0x58 +#define AM_SYS_IRQ_STATUS 0x70 +#define AM_SYS_IRQ_RESET_COMPLETED BIT(1) +#define AM_SYS_IRQ_INVALID_COMMAND BIT(2) +#define AM_SYS_IRQ_INVALID_ACCESS_MASK GENMASK(31, 16) +#define AM_SYS_IRQ_INVALID_ACCESS(x) FIELD_GET(AM_SYS_IRQ_INVALID_ACCES= S_MASK, x) + +#define AM_SYS_STATUS 0xC0 +#define AM_SYS_COMMAND 0xC4 +#define AM_SYS_CMD_INDEX(x) FIELD_PREP(GENMASK(11, 8), x) +#define AM_SYS_CMD_SOFT_RESET 0x10 +#define AM_SYS_CMD_HARD_RESET 0x11 +#define AM_SYS_CMD_AW_RESET 0x12 + +#define AM_SYS_RESET_SLEEP_US 10 +#define AM_RESET_TIMEOUT_US (20 * USEC_PER_MSEC) + +/** + * struct panthor_system - System device + */ +struct panthor_system { + /** @dev: Device pointer */ + struct device *dev; + + /** @iomem: CPU mapping of the AM_SYSTEM IOMEM region */ + void __iomem *iomem; + + /** @regulator: Pointer to device regulator */ + struct regulator *regulator; + + /** @clk: Pointer to device clk */ + struct clk *clk; +}; + +static int panthor_system_regulator_init(struct panthor_system *sdev) +{ + struct regulator *regulator =3D NULL; + int ret; + + regulator =3D devm_regulator_get_optional(sdev->dev, "gpu"); + if (IS_ERR(regulator)) { + ret =3D PTR_ERR(regulator); + + /* Regulator not found. Exit */ + if (ret =3D=3D -ENODEV) + return 0; + + return dev_err_probe(sdev->dev, ret, "Failed to get gpu-supply"); + } + + sdev->regulator =3D regulator; + + return 0; +} + +static int panthor_system_regulator_resume(struct panthor_system *sdev) +{ + int ret; + + if (!sdev->regulator) + return 0; + + ret =3D regulator_enable(sdev->regulator); + if (ret) { + dev_err(sdev->dev, "Failed to enable regulator"); + return ret; + } + + return 0; +} + +static int panthor_system_regulator_suspend(struct panthor_system *sdev) +{ + int ret; + + if (!sdev->regulator) + return 0; + + ret =3D regulator_disable(sdev->regulator); + if (ret) { + dev_err(sdev->dev, "Failed to disable regulator"); + return ret; + } + + return 0; +} + +static int panthor_system_clk_init(struct panthor_system *sdev) +{ + struct clk *clk =3D NULL; + + clk =3D devm_clk_get(sdev->dev, NULL); + if (IS_ERR(clk)) + return dev_err_probe(sdev->dev, PTR_ERR(clk), + "Failed to get clk"); + + sdev->clk =3D clk; + + return 0; +} + +static int panthor_system_clk_resume(struct panthor_system *sdev) +{ + int ret; + + ret =3D clk_prepare_enable(sdev->clk); + if (ret) { + dev_err(sdev->dev, "Failed to enable clk: %d", ret); + return ret; + } + + return 0; +} + +static void panthor_system_clk_suspend(struct panthor_system *sdev) +{ + clk_disable_unprepare(sdev->clk); +} + +static int __panthor_system_reset(struct panthor_system *sdev, u32 cmd) +{ + u64 val; + + /* Clear stale RESET_COMPLETED IRQs before issuing reset */ + gpu_write64(sdev->iomem, AM_SYS_IRQ_CLEAR, AM_SYS_IRQ_RESET_COMPLETED); + + gpu_write(sdev->iomem, AM_SYS_COMMAND, cmd); + + return read_poll_timeout(gpu_read64, val, + (val & AM_SYS_IRQ_RESET_COMPLETED), + AM_SYS_RESET_SLEEP_US, AM_RESET_TIMEOUT_US, false, + sdev->iomem, AM_SYS_IRQ_RAWSTAT); +} + +static int panthor_system_reset(struct panthor_system *sdev) +{ + int ret; + + ret =3D __panthor_system_reset(sdev, AM_SYS_CMD_SOFT_RESET); + if (ret) { + dev_err(sdev->dev, "SOFT_RESET failed, attempting HARD_RESET"); + + ret =3D __panthor_system_reset(sdev, AM_SYS_CMD_HARD_RESET); + if (ret) { + dev_err(sdev->dev, "HARD_RESET failed"); + return -EIO; + } + } + + gpu_write64(sdev->iomem, AM_SYS_IRQ_CLEAR, AM_SYS_IRQ_RESET_COMPLETED); + + return 0; +} + +static int panthor_system_suspend(struct device *dev) +{ + struct panthor_system *sdev =3D dev_get_drvdata(dev); + + panthor_system_clk_suspend(sdev); + return panthor_system_regulator_suspend(sdev); +} + +static int panthor_system_resume(struct device *dev) +{ + struct panthor_system *sdev =3D dev_get_drvdata(dev); + int ret; + + ret =3D panthor_system_regulator_resume(sdev); + if (ret) + return ret; + + ret =3D panthor_system_clk_resume(sdev); + if (ret) + goto err_regulator_suspend; + + return 0; + +err_regulator_suspend: + panthor_system_regulator_suspend(sdev); + + return ret; +} + +static int panthor_system_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct panthor_system *sdev; + void __iomem *iomem; + int ret; + + sdev =3D devm_kzalloc(dev, sizeof(*sdev), GFP_KERNEL); + if (!sdev) + return -ENOMEM; + + iomem =3D devm_platform_ioremap_resource_byname(pdev, "system"); + if (IS_ERR(iomem)) { + return dev_err_probe(dev, PTR_ERR(iomem), "Failed to ioremap \"system\""= ); + } + + sdev->dev =3D dev; + sdev->iomem =3D iomem; + + ret =3D panthor_system_regulator_init(sdev); + if (ret) + return ret; + + ret =3D panthor_system_clk_init(sdev); + if (ret) + return ret; + + dev_set_drvdata(dev, sdev); + + ret =3D devm_pm_runtime_enable(dev); + if (ret) + return dev_err_probe(dev, ret, "Failed to enable runtime PM"); + + ret =3D pm_runtime_resume_and_get(dev); + if (ret) + return dev_err_probe(dev, ret, "Failed to resume device"); + + ret =3D panthor_system_reset(sdev); + if (ret) { + dev_err(dev, "Failed to reset GPU"); + goto err_rpm_put; + } + + /* Probe any child devices */ + ret =3D of_platform_populate(dev->of_node, NULL, NULL, dev); + if (ret) + goto err_depopulate; + + pm_runtime_put_sync_suspend(dev); + return 0; + +err_depopulate: + of_platform_depopulate(dev); +err_rpm_put: + pm_runtime_put_sync_suspend(dev); + + return ret; +} + +static void panthor_system_remove(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + int ret; + + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) + dev_warn(dev, "failed to resume during remove: %d", ret); + + of_platform_depopulate(dev); + + if (ret >=3D 0) + pm_runtime_put_sync_suspend(dev); + else + pm_runtime_set_suspended(dev); +} + +static const struct dev_pm_ops panthor_system_pm_ops =3D { + .suspend =3D pm_runtime_force_suspend, + .resume =3D pm_runtime_force_resume, + .runtime_suspend =3D panthor_system_suspend, + .runtime_resume =3D panthor_system_resume, +}; + +static const struct of_device_id panthor_system_dt_match[] =3D { + { .compatible =3D "arm,mali-gen5-am-system" }, + {} +}; + +static struct platform_driver panthor_system_driver =3D { + .probe =3D panthor_system_probe, + .remove =3D panthor_system_remove, + .driver =3D { + .name =3D "panthor_system", + .pm =3D pm_ptr(&panthor_system_pm_ops), + .of_match_table =3D panthor_system_dt_match, + }, +}; + +module_platform_driver(panthor_system_driver); + +MODULE_AUTHOR("ARM Ltd."); +MODULE_DESCRIPTION("GPU system driver for AM GPUs"); +MODULE_LICENSE("Dual MIT/GPL"); --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011013.outbound.protection.outlook.com [52.101.70.13]) (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 75BF8440640; Tue, 22 Sep 2026 20:47:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.13 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110079; cv=fail; b=n8pS5t6XtMsYdh3aEwliZgjSBRvJEw2SpSkS5EGLem1dzg010iuJYeh9njN1kR6Qh/HtPvQ0dzOBQi70AxJOQyyT5Q15AWUYl9DXn83UDSwwi78Btl/lVkb9zowN/7Gtwh0RQDLtYBCjLCk+tIuKJEmRTMzKDJwwgHHO1/AfryQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110079; c=relaxed/simple; bh=ZTy1YWMx1rA4XphKygfcXtxVCqJJWUslFHbDJQyv6oY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=egTlS6FSzhukb3RQ40h59iHKtg1MR2Nm7Mi4lnXbsrFgWq9mRPHPwwrcz5O/VFyh9lExwIabwYPfhidP/V6WKYoZS+MGCv1HrTpao0QJrSNTNz6paMv5H59excpaIXKA9bnMdKWvodX4rmAPczHsSiPdB3Az54CPooKFG2zYCf0= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=XADNs5Yf; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=XADNs5Yf; arc=fail smtp.client-ip=52.101.70.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="XADNs5Yf"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="XADNs5Yf" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=mHzC9g3YICQEdDwSXxr3qXvZe9wDKI67/e1NGM8FdpnTBd2k4lM9jfggfzHb3J6hyRJN5QBbBnvXHM03r7XAFOnIB3OJdaj3pmWHA/kLf/+NGx0AQ002NVYGGq7QnVv85WttpadPgOCIHkr6sDTH0Oedd3AqvRallJ5PeUMZygoAmSaC4vnYbn7p0BhW9heOSQgJ56CAMPyVOvlUy3u3bUAnhpaJiyXt39jRTjR55aN2VayS2Fse0JUqStjSGs8/mp9jgZgbh+f1rkTKobbdoctaxb3wje2gOxg+TVs91SOattDgSwP8G+zr099lmZ4tWEkdHrMFRgEyN6r6USsnYQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=h9g1JtaqDQvXyWCVVJP6YHHXic///QBgDhYDelhtLMY=; b=d0a/RBRrh8pTgHnvn2tMYsbAVjtMlrXhHYyVDWbfHT6xve+21JR+uJHBakUct2T9TR3NJi7Tsg1IgrPlTZ288rF+VGAvodbSd7hFn8yveo8/Bp2syxK2vbAqRmtSCQdejqstHnwR0nQcxr+ut9fjsceNRHkE1/L70vkPaoxFHV3l1ISsl43fuVh+Z7aF8FBH42rgTIwZUf4DGhh5R48QWYwfH/ZrI60q8CNznZfCa2vxoGvSNZYP5Cq+OUE/bXT061Nd9Z9/WXHE/S4WOUluqErziU6r0uDH3marA1u5RDWdZMll+mCmyPYaBxp2hVL20O8FlutsiwRuBVNu7HvdfQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h9g1JtaqDQvXyWCVVJP6YHHXic///QBgDhYDelhtLMY=; b=XADNs5Yf6OnaU25SPhhFFaZqIxO+j61OHVnQrFsaiApo3oRFuNhoTcGI4xZPfOHZctMAvyBwPfutDZ/j2RZ/TSce1QR0rpAvR5ak3MQFDDPm3y7TVeUu4ehxXCPSuuYhCbXmeOOj+VnZxuZEaeIN9LK/BdCqTcgKo0fP34zK0AE= Received: from PAZP264CA0013.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:21::18) by DU0PR08MB7906.eurprd08.prod.outlook.com (2603:10a6:10:3b2::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:24 +0000 Received: from MI3PEPF00008499.eurprd03.prod.outlook.com (2603:10a6:102:21:cafe::2f) by PAZP264CA0013.outlook.office365.com (2603:10a6:102:21::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF00008499.mail.protection.outlook.com (10.167.240.184) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qiLXumTGsmPsiPZxVNyi6vZeQwjP28vDADSx2Fe5z2wvKqqFPCe6Iwh5dNUtZby64CChnhLqvahZrC0jMEn6UBP8xOWbyHSp0Hx6v9ctFSuWiYgO3dE6BAric/QZBFDfJTjNcoqawWEuu1rVp+4UQIBT9OMyTELIiSFaY4xbGlQHt0oQrcOjlDXXEXQIl8Y6JY7e0nwje2wvb3tC1fXX2BtGE6+PgdZw9LfCAyQ6DzUw6O1RSnNdn/Ngiz7chN5eov0OYwFe8Q6HT4VRJLVkdHdmaznDTMoGIdvPAJYH7dZ279gUNvtgaWj+wvuC/mYxn3VqUZhcq+aYcwP15zSXbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=h9g1JtaqDQvXyWCVVJP6YHHXic///QBgDhYDelhtLMY=; b=alr6B+zU1l/2HXkiLDUMVufHwEUuXrR1B5wMOUrpy758ufnocdZjJmhEgUEonUabO01c27FyEzj3gERP9ILuHWnsXO6JGGRSLcLdFL6+kKNNrU33+VQMNqk3z8KaGo+yMY/VNkXFlswD+rBD/vfSP7PXUiuGowdNK3VSyWBPT5gcV4Ag/xhEHOQExNMKgWo9Vgqt5yK0W0EPLj9xijZYt32h5aWzHkKR+65YhbSIlsmZec5JjXdfxEOpUFUChw8FxhLumSI7n1H41QcakIcQ6gHe6kuPV3YXYv5ZQWLNPcVpYxRRypEtbtE97Dm6RT9Y0xwa8OJaodc65ychBehlfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h9g1JtaqDQvXyWCVVJP6YHHXic///QBgDhYDelhtLMY=; b=XADNs5Yf6OnaU25SPhhFFaZqIxO+j61OHVnQrFsaiApo3oRFuNhoTcGI4xZPfOHZctMAvyBwPfutDZ/j2RZ/TSce1QR0rpAvR5ak3MQFDDPm3y7TVeUu4ehxXCPSuuYhCbXmeOOj+VnZxuZEaeIN9LK/BdCqTcgKo0fP34zK0AE= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:51 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:51 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH v1 12/27] dt-bindings: gpu: panthor: Document panthor-arbitration bindings Date: Tue, 22 Sep 2026 21:45:06 +0100 Message-ID: <20260922204535.2850094-13-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P191CA0011.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|MI3PEPF00008499:EE_|DU0PR08MB7906:EE_ X-MS-Office365-Filtering-Correlation-Id: d9d6bf28-d173-4b20-dfe2-08df18eab477 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|3023799007|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: lCL/b8vzmpShRwO80CRh6IA+rmFeAX6IblAO09iVKby/iUbLH0hrqFAGsDXjWLVh1lG5Ue0jZghZeWQPWH9f38K47eGqlS1WmmajeU+6IOiMfJLin7pgm1XERwEmh3LpjSZprCUJ2veAVA3R4pxEBeFIytNIMi0UAJlkWR9Kd0mIbb8un7EUvYutu6WQ/YAO40aG3gWhdDucadUU92WCCrulg2LppfTYaFkRcvuUZFzPBfnA1e0yMMO7SbJ+VYzr2PBvNshxLPU7vaMxA3sir9lalyvL4XHZyGL539IqZuJddWxbmom43CZ/7h2E2VSOt2KGfZpt+aqBbiVhtSDu/mGwLbqbm3rA0w4C+ByHqdeM0OSG9KTE5RGpdIJ7rmnvz/CTQGCMW5OX08ndBtyxSsqzD3uu2WxZdgfJ9r3s5kpH7xAj91/qwOd4+0Ii+vM0KuyXLf1U29E5f1HCjRrKZg6lMVNBX4OdjQ5E6ztv0z++arRg53cPXLo3+prOGClKcnj0W50Ki76OJsaHnj4jTlIJ2eo/3Ji2ojy0d3h0L90bTEZIwOt5LKSkDkS4AfDMPUPvMqBr36ejAOIfFnh9xs69jav7WN1ysDBxqaTYk5Y= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(3023799007)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: vid4bshej+vAZEjvBQAROT8p2XQUejeYzxVhLral1c0vWw5XJbKvxutgi5PB1/2CHuhGAhTfNn2RbN9Un9XclvoY8JiUI5RgvbeGMnt//yFtipyaUmb5y5MCUFET4WftnLaS4juvU9zAfwTrIawI03zQYBFuNXUeNC7LcwzG8sQQA+/gh9SfcQMBHzw5H4yxgHJMatAijls9rff4C3SP8k6eq/DctrS2hjKhvnII3E3HH0xR1C33s8z2+1768VjHaTZbQxfgAQHVRXClTgKcbXYX4ocqm6QtcUtSicbdK4w4oWgAoaB5mFGxbgx2sJ2hNfJv6ZKUGPSm2J8h5is/xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008499.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4e3de65f-f8bc-4030-c28c-08df18eaa0d9 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|1800799024|7416014|36860700016|82310400026|376014|23010399003|35042699022|11063799006|56012099006|10067099003|3023799007|13003099007|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: czn6DBXEqn41u09sRrYQlXvxagdf94Rx6gBqrVm+oB77xxVUoAmogYXCuqjZSz/BFupLX1WhC6bXaU5/iwTREvb/wZwa2h7/LhxTMND91/rYinxWQbiLzgcuHDUlAHYMu4K+yynS2rMw4WrM68boIZAc/gLYlRClWcBAUFJgmHu6M0XR7tgTpU0F5gk8tYDsF9j900Dm5CfkdbpJ20BrCEXl5iHVjA6gJyZGu1pb1TiFG8pXT+u+SH4d7+2hVLTDorfkSjqoNNKFCIldZQgMINwY1p7ia+JQMRdq9pNc2HaL3CBM6rBXN40abiwQSdc05j4EIWMgb1GW7sMoKLi/QkrwyDn/l2ZVHl5E+UvBHrxNRw/M6hn8j5UMBXCyDzBf/BM35mB/1hn3Qw8lRe/5j4aF3N2bO52iRGO5MCFDIXB8ozdyobV4tt5Uk63EkRdf7xWfc0nhCkTgjdfalUkYKASCB8l/KuzuVVn/h86NFmGbqfgAVrDQJmTP9Nctoue8H76AnYK0VU5uWnCrefyz24FSZPgUSRPa+IwLwyDHsOqzaV7sQGSgV6kexLoEdhDjp3qN2QGJfTq6n2FIY/A6qqtg6N895TdnRdMoP5KJY7O+0W8kVkTZu5crmbbTdRw2urHLuF0sxrYCxR0dwHduTw== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(1800799024)(7416014)(36860700016)(82310400026)(376014)(23010399003)(35042699022)(11063799006)(56012099006)(10067099003)(3023799007)(13003099007)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: isXfk7ZYrmvcWq1wny3Ss1dCrYzZR6tAQcxk1z8MFXCMWblG56m31B9KqLXNKBKXZRq1/2cOnbCmXTbeobHF9JieKss3fFGdT7GtrUfPeuTzeZIVdQ5d4R68rxTUmie1D00f9Dq3M5nm85/eJimuzxhEnUdYRk3bKIsKT60nKFrAQQlm6+KA58v+MUV3uT7S56k+sZczWM7I23G9375bhzZ0b3OZJRnUte3XntsW+ySloqTkD7AHnHIOWIWMJ3pdnLPvedEZ2qfGZ/6rKX5KtP9i/5MHWVZ2H7syRfDPmMVlvaX61JAApqbyjK0ioHumtGpQ4Ov8Wazs+RTCHxZZax2hIhcINHZDRitdWHHbu4YBTKkhnTjPhE6tSKwtFw4AQ4EreQ33XGSOvEFI46LTm5YSXPUKG+MH4CxymIbezUApTsZfmuaWbSuileFH4FLF X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:23.7408 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d9d6bf28-d173-4b20-dfe2-08df18eab477 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008499.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7906 Content-Type: text/plain; charset="utf-8" Mali 5th-Gen AM GPUs expose arbitration registers outside the GPU node. The arbitration device contains partition-control and resource-group register blocks used to grant, yield, and close access windows. Document partition and resource-group child nodes, each with its own register range, interrupt and hardware ID. Signed-off-by: Karunika Choo --- .../gpu/arm,mali-gen5-am-arbitration.yaml | 125 ++++++++++++++++++ .../bindings/gpu/arm,mali-gen5-am-system.yaml | 9 ++ 2 files changed, 134 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-= arbitration.yaml diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitra= tion.yaml b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitrat= ion.yaml new file mode 100644 index 0000000000000..9ea2b4bb9a344 --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitration.ya= ml @@ -0,0 +1,125 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +# Copyright 2026 ARM Limited. All rights reserved. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpu/arm,mali-gen5-am-arbitration.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ARM Mali 5th-Gen GPU Arbitration Device + +maintainers: + - Liviu Dudau + - Boris Brezillon + +description: + The arbitration device manages partition-control and resource-group bloc= ks. + Each block is described by a child node with its own register range, + interrupt and hardware ID. Partition and resource-group IDs are separate + namespaces. Access-window IDs are global to the GPU. + +properties: + $nodename: + const: panthor-arbitration + + compatible: + const: arm,mali-gen5-am-arbitration + + "#address-cells": true + + "#size-cells": true + + ranges: true + +patternProperties: + "^partition@[0-9a-f]+$": + type: object + additionalProperties: false + description: + Partition control block and its initial resource assignments. + + properties: + reg: + maxItems: 1 + description: Partition control register range. + + interrupts: + maxItems: 1 + description: Partition control interrupt. + + arm,id: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Hardware partition control index. Must identify a partition pres= ent on + the GPU and be unique among this device's partition nodes. + + required: + - reg + - interrupts + - arm,id + + "^resource-group@[0-9a-f]+$": + type: object + additionalProperties: false + description: + Resource group block used for access-window messaging. + + properties: + reg: + maxItems: 1 + description: Resource group register range. + + interrupts: + maxItems: 1 + description: Resource group interrupt. + + arm,id: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Hardware resource group index. Must identify a resource group + present on the GPU and be unique among this device's resource gr= oup + nodes. + + required: + - reg + - interrupts + - arm,id + + "^gpu@[0-9a-f]+$": + $ref: arm,mali-valhall-csf.yaml# + properties: + compatible: + const: arm,mali-gen5-am + +required: + - compatible + - "#address-cells" + - "#size-cells" + - ranges + +additionalProperties: false + +examples: + - | + #include + #include + + panthor-arbitration { + compatible =3D "arm,mali-gen5-am-arbitration"; + #address-cells =3D <1>; + #size-cells =3D <1>; + ranges; + + partition@50000 { + reg =3D <0x50000 0x10000>; + interrupts =3D ; + arm,id =3D <0>; + }; + + resource-group@c0000 { + reg =3D <0xc0000 0x10000>; + interrupts =3D ; + arm,id =3D <0>; + }; + }; + +... diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.= yaml b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.yaml index f0689bb8f05a2..a027dc5f4f890 100644 --- a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.yaml +++ b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-system.yaml @@ -41,6 +41,15 @@ properties: =20 dma-coherent: true =20 + "#address-cells": true + + "#size-cells": true + + ranges: true + + panthor-arbitration: + $ref: arm,mali-gen5-am-arbitration.yaml# + required: - compatible - reg --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010024.outbound.protection.outlook.com [52.101.69.24]) (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 7D472492E2D for ; Tue, 22 Sep 2026 20:47:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.24 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110061; cv=fail; b=eeklEW7Wy8dMsQPqq4paDMaV2HwulXZOYW5Q/S0eMJOP4dvAo2x3YhgPGUlQkI0kpFc91T249w/rkdkKiKbjS8xva7RQGMWGV6e0HXaZVXRvt22ihTU7qgzIJJzURCCYl4wMSqPR5XIT4eEQETrKrHJX3spMWuoyFpcq6IJyems= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110061; c=relaxed/simple; bh=vd4zINqBv3b1WdGEE3efO2wnfb8pfD0Ky9icmB2v4BA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jxov998OGXE9cT2IdBWYNjdshkNjj0IbATGMGadyBgwBnDLXcmXLW0iiWmOJIzxOF56yzu4T5T3IzpEhaTFjDkqJuYYRHejGq+IJnjXj5TGDG9Z5fvMUxE8kNMby1h924aLTl5vSjg6SP9XL50L8rGVFMjHdIz9JrbuOX10U0sc= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=plItAced; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=plItAced; arc=fail smtp.client-ip=52.101.69.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="plItAced"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="plItAced" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=EBuVYvVNO7FDiQQkhL9MLsy+E56DryyGmgfimsWfiCqmKo5v6TRGOsAXVfjctE8lft2vDhHBNLxbFp3jqpV3z2l2I9XbTTD7NEg+swhn/s7cSTeCQrCg9tyg3/K7k43ei67pgi0qFawax02tc211+/DDqbXPI88w3ek0Vn9ENPKX8IL1LvOs3Ivtx01kUW1NTMcQilTjYAPF5I7Q5Cx8h4/J0aVo9nV1TSS1K3j2ZGJVQrPURR6XhmTFQCi6gQTCO8FL61cxNvAE+8yPMV9aKhhjHrEC2hbAzNyNySYjF0ovutFehwTc3qE8O175px5IZ7juPadMMz/SfGBsSPrmIA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IlJSwUJSWsbKbhjhq9Zr/UwId01rGUa8y1X9pQIEf8o=; b=MIXoI09Vp/RmOy46XV5lLBr/iH67SMft9xtJD1p66HZRS3Xkdg1F1M1SD/I7dUpTLRhIcQwANGRMxwTwq2W0iebnbbysgljutelijVzBcfO71Wkk1xtRJkbFsHjPaGcCEcdyFHyLehbkIE4hVmn8XqJvHCV87sw5+4Hibb8dQQ8eGohd3B/U+WyhWE9oZzLWlD/FwHg1oHDdeTC7c4HQAoRcAt4skPfp/E301H9PZeyX2SFJuBsFtO8OKaRb/sOhzVhQdNudCizVOnTU/tG1QsL8R1KSJe/BumbsjWW52Qca4N0caFvyVoC4/+KtzkyIZTXMu0Ro5YPrnWKfmGL03A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IlJSwUJSWsbKbhjhq9Zr/UwId01rGUa8y1X9pQIEf8o=; b=plItAcedQ4Llw09XgepfSiuJx8GAqfUt9w28EW8duw5xAV567WWd/+n5F77gZi2a4hQDMLqxzNAIkTUnCqVNwMx2zHBd9yJZDWr4czPp7kGPK+Ct+/fwy0bdRijmXSraFN5K3owLB9ubqSScGewGzUJLVXRNk0qNWVJ583k/eA0= Received: from AS4P191CA0015.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d5::12) by PA6PR08MB10444.eurprd08.prod.outlook.com (2603:10a6:102:3c7::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:28 +0000 Received: from DB1PEPF000509F6.eurprd02.prod.outlook.com (2603:10a6:20b:5d5:cafe::9e) by AS4P191CA0015.outlook.office365.com (2603:10a6:20b:5d5::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509F6.mail.protection.outlook.com (10.167.242.152) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g4cYgwxj47JDUIjK/14bmh9GD7r5U+tz0eu/FYBqUGXfA5PPiR+Z5uSKOTPlRUkG9DQ6x77pHbOe/O9quaSlbvrhLWS7Uj1owtiOabWl0AcEepw403IIYlJ1uxQCYYqtusvU+FKD+pNDjRjhKIhipC3Q5I3shGqNT7WMSb9+DvUGUnyENJQsxoyZ/Fc/HrFNk0PxUycyGTsuFrn+H4DZHc5nSRQFGufZFt0zzUGQs8BmB+YwgqYg/G/B3wGQL1vOuVquk1S3SM4bUJB8nSx5OncvVNOOyeOAlUWFYTmGcu5NuhWOgiuhaOJqbFbgDzXbP9xoJMDlxxQuWkHg+obxZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IlJSwUJSWsbKbhjhq9Zr/UwId01rGUa8y1X9pQIEf8o=; b=qDIqc8sAr0q6i/qOG2tXzABd5STbrrXatLohrNOldNsadvSYvvybGNBOAkw92cE5ItZ1emWXMYaQshbAP8swde731FhzD4j59EbLy/dVtVE+6vlUn08SMY1zeyC/4l96DSJJuWXHlhDHAjZRlxp5iardKP47YNSsD8eg+TT3XgfxnrsxHEKbNSzFC/jtRaDOJE2wdGsOqYgJcQ3BdV0fVqi1wkuWOr17SfIVvJZKOLfCtiBseLJ0PEoN4o75z7cUn0ior2Fs9bsLdU9NE3ud4b9TP+SKvpTCYfBCzpKbIXvOcPmzdDAtGpxyMsZ5qI9Wgh22ZZt2QpoRFUYII8btgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IlJSwUJSWsbKbhjhq9Zr/UwId01rGUa8y1X9pQIEf8o=; b=plItAcedQ4Llw09XgepfSiuJx8GAqfUt9w28EW8duw5xAV567WWd/+n5F77gZi2a4hQDMLqxzNAIkTUnCqVNwMx2zHBd9yJZDWr4czPp7kGPK+Ct+/fwy0bdRijmXSraFN5K3owLB9ubqSScGewGzUJLVXRNk0qNWVJ583k/eA0= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:55 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:55 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 13/27] drm/panthor: Add AM_PARTITION_CONTROL support Date: Tue, 22 Sep 2026 21:45:07 +0100 Message-ID: <20260922204535.2850094-14-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO0P265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|DB1PEPF000509F6:EE_|PA6PR08MB10444:EE_ X-MS-Office365-Filtering-Correlation-Id: dc1fe265-a4a3-4cbb-31ce-08df18eab6be X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: SSKH1DK6ZwDtnL/Df30hBY/dEqs5GXjpqHdbdLPrvVpByyY+a2XGkB1yGvgog0b3L+1YB7YkYb0ruo72rEguRqTkuc9p3Jh3Z7wlQ+HirJ9FY4cDod4Iiykr0J1Gus4wDu8jG5JIH2sCDB6Yr9Kl0mRwhAunLEnhR1ESTBKMKK72rulqk3xEU1xDW6A0ys8EULKVvi/knpP7LlfBl8+l9z4QDiPKdokdKSaJ65/vXKl/7ofKQFI3PEH2FBEQ/brAME1eLArV2qSl/DEQ2jlkCURm3GsapWLqI9a8+nzF9pL+z++04veQYMSWhxt/NbqDX+SYbAaewzHMRGHmVmq35TPmQiNP6G0viJw/NNLeywqIEqsRv6OkJOehfjvzgV4vz25jbbc6TlW81Nj/VZoFdo4qeY6gb1FODhEfXCOOhwIKRvZC3zlifknxwTeYwcKYU3BNUI81g/95/dcbAyJlJUV62HEFYH3HkqcSdZ2sy9AZ03Fcir7hhXyKesmADIjNJi9NXRvVnMYTEJm7Q4Pu+a84Qbv05+O6AWKFLvz5j25+Dx9PRY/qtuxKOx4ug0cpEobnRm2L/S+mtzIn44Agm8Vlx3JtgWhhj8sfa5pVcVJskYG2Uo967rPEFv/t2hrP8KwuCeqjbhwHlZRBU/cgM1rnA/77fGEpyjoICm1Ejd8= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: moxw2egnduObJ/VbiK38XCZxCC/lr+Xh2FY8e1bkmuJIcuu92IzeEto8c+IbCHXtnr7qbodHTFGySnYwwbVLLsBM1HHPiHlAKZ2bxDXwX9zGzY+7K9pOwvpiUgHT5+NQwUanz/HxUSBkcf5nfyZ9v05mwMzxsJ8moltKhZDRfIy22Jl31EmA6EOxpxQr8ksMsUoT+px7eQ0ziAbQvHmFlcYJJl8HiKGDs7Vi4BB1BcMQpjfuiCp7tLK2kB+pdMSlVJ9MqycBMHk4sUxwA7gRlaN8leeRZ4kznjJeIlrPp3hKMXBqa/LboXerlpRB/2pWUlaG/Ded8MN5JjdbrYpfxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F6.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6ecaf20f-c6f4-4a12-3bdf-08df18eaa347 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|35042699022|82310400026|14060799003|23010399003|36860700016|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: L++be7Tk3z9Tm7OisdKdSpUbJMl86ZaDddgcDWp31nto4lSGYlR3MBGd23yHH8ntEj1pUSffUI2dyfzhdJ7nQeg0XO3L/ABJO6z1ZpZ8WVuYgClIt3hAYw6FwsHT9th5TSSGwgqAEXxCeQ/Cjac0tJWxXKPCYouQ2avivzTJUCNh7Ric1924jP+vxtQoJcTuY7CWgxuASG7GO+ClILtfcMMKE/yhTRYePaZTjQuAz7wEHAaDqYqJ2+fPlmPo8xhG4UlBZtwuxUcF+UaoSCNi8lWXK8aSFInWYC6O9smZ5x+dwEX7OgsWlaNV1a6maQzq0oLfO0kuF0aur2kH3sGDKOiLg5y3/gCJj7bzyFn0ABFBkthMzGWGvclbubRvg1KRA6PahmcZGLYDO/m6Y3SldKMOLmOwZ/SQEcYr2qKWZ8p+NFrk1Dh2QKfnRC/gXHPE46XP+EocYy6d+sClG0eFfJXf+OjjrEw+hjuQeWiYJeUDYIcAOdJk5wnl/sAvyPMfB/PowiLrFPv746eQHtTrMya82yB2uSMGTNivQwXnoqtNz+cMr1wWzuGmsOp1Geg98DXJbFS4eh1y23xIaMp5yJXVMdqg5SUoU4McloMOgBZd3ZOAg6sK9tC8kh9aqdwSoAi3sgo5xWUq3C89PMiObWdqHQh9bhAbHu18pt0Bbt+lRNLwc83Ho/HXrPF762gGDZP/PzpXHs3JG35ZYGEm6Q== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(35042699022)(82310400026)(14060799003)(23010399003)(36860700016)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IgJV//jNneCS1qrvztE2dynMvjFS7MWG2nrclesYJbGef825cm/rP3P8fHGfJ2rJyRnYipogENmvHFm2rc5a5QnPMcwVIUjYxmNIZoBCLT6OkVi9rleE7LF/Qy+Jfe/sS4L9AB5sXAard8wKuU/AipLsTpeTKIZjTjG80EyGsP08cdQ9EqTqZqkvrbq8zzj+vOjgpEQ1crgDHcGSgdgOayz1vxuDQvTh52VgVjpb0b4aEf8lpEhhqZzPK/OReuDkcC3xgUeUxjG2lKrDW0Jy7cKWEYopCtGf1DTZpbvZDcoZnhw/oIuG9DfUXqcuFgiZ5jlq2KxKFF3sVraxMCNxRU/vPOWeSehX+qEb0Cm1wf2x+XQL9c5JYtdvkcE7XWpRFvZgxGrVluhyilpegD8Rm5eurCWxzZNnoZKqxLVNUK4i1Hh6cUSKZ9yF7mZAaVer X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:27.6138 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc1fe265-a4a3-4cbb-31ce-08df18eab6be X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509F6.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10444 Content-Type: text/plain; charset="utf-8" Mali v15 AM GPUs expose AM_PARTITION_CONTROL blocks to manage partition access windows. Add a panthor arbitration platform driver and wire it into Kconfig and the panthor build. The driver maps partition-control registers and interrupts described by DT child nodes. It also provides helpers to open, close, and yield partition access windows. Signed-off-by: Karunika Choo --- v1: - Updated DT structure and accompanying parsing to handle child nodes instead of named platform resources. - Add child device population/depopulation. - Remove blocking waits on partition open, close and yield operations. - Adds YIELD_IDLE helper. drivers/gpu/drm/panthor/Kconfig | 10 + drivers/gpu/drm/panthor/Makefile | 1 + drivers/gpu/drm/panthor/arbitration/Makefile | 13 + .../panthor/arbitration/panthor_arbitration.h | 40 +++ .../arbitration/panthor_arbitration_drv.c | 174 +++++++++ .../arbitration/panthor_partition_control.c | 333 ++++++++++++++++++ .../arbitration/panthor_partition_control.h | 29 ++ 7 files changed, 600 insertions(+) create mode 100644 drivers/gpu/drm/panthor/arbitration/Makefile create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_arbitration= .h create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_arbitration= _drv.c create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_partition_c= ontrol.c create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_partition_c= ontrol.h diff --git a/drivers/gpu/drm/panthor/Kconfig b/drivers/gpu/drm/panthor/Kcon= fig index e17c93035e8b7..04b11b933290e 100644 --- a/drivers/gpu/drm/panthor/Kconfig +++ b/drivers/gpu/drm/panthor/Kconfig @@ -30,3 +30,13 @@ config DRM_PANTHOR_SYSTEM AM GPUs. This block provides GPU-wide control outside the main GPU register window, including reset handling and management of shared clock and regulator resources. + +config DRM_PANTHOR_ARBITRATION + tristate "HW-assisted virtualization for Mali 5th Gen AM GPUs" + depends on DRM_PANTHOR + depends on OF + help + Enable support for the arbitration blocks found on Arm Mali 5th Gen + AM GPUs. These blocks manage partition controls, resource groups and + access-window scheduling, allowing multiple access windows to share + GPU resources under hardware-assisted arbitration. diff --git a/drivers/gpu/drm/panthor/Makefile b/drivers/gpu/drm/panthor/Mak= efile index 488a5e03efbc4..5d4d0ae64952e 100644 --- a/drivers/gpu/drm/panthor/Makefile +++ b/drivers/gpu/drm/panthor/Makefile @@ -15,5 +15,6 @@ panthor-y :=3D \ =20 obj-$(CONFIG_DRM_PANTHOR) +=3D panthor.o obj-$(CONFIG_DRM_PANTHOR_SYSTEM) +=3D system/ +obj-$(CONFIG_DRM_PANTHOR_ARBITRATION) +=3D arbitration/ =20 CFLAGS_panthor_gpu.o :=3D -I$(src) diff --git a/drivers/gpu/drm/panthor/arbitration/Makefile b/drivers/gpu/drm= /panthor/arbitration/Makefile new file mode 100644 index 0000000000000..b0b6b2e3edf8d --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/Makefile @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-2.0 OR MIT +# Copyright 2026 ARM Limited. All rights reserved. + +obj-$(CONFIG_DRM_PANTHOR_ARBITRATION) +=3D panthor_arbitration.o +panthor_arbitration-y :=3D \ + panthor_arbitration_drv.o \ + panthor_partition_control.o + +INCLUDES =3D \ + -I$(src)/.. + +ccflags-y +=3D $(INCLUDES) +subdir-ccflags-y +=3D $(INCLUDES) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h new file mode 100644 index 0000000000000..26950e47852dd --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_ARBITRATION_H__ +#define __PANTHOR_ARBITRATION_H__ + +#include +#include + +struct device; +struct panthor_partition_control; + +#define AM_ARB_MAX_PC_COUNT 1 +#define AM_ARB_MAX_AW_COUNT 16 + +/** struct panthor_arbitration_resource - Arbitration resource */ +struct panthor_arbitration_resource { + /** @res: resource parsed from child 'reg' property */ + struct resource res; + + /** @id: id parsed from child 'arm,id' property */ + u32 id; +}; + +/** + * struct panthor_arbitration - Arbitration device + */ +struct panthor_arbitration { + /** @dev: Device pointer */ + struct device *dev; + + /** @pc: Pointer array to partition control data */ + struct panthor_partition_control *pc[AM_ARB_MAX_PC_COUNT]; +}; + +int panthor_arbitration_parse_resource(struct device *dev, + const struct fwnode_handle *child, + struct panthor_arbitration_resource *res); + +#endif diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c new file mode 100644 index 0000000000000..09342245a47d1 --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "panthor_arbitration.h" +#include "panthor_partition_control.h" + +#define PANTHOR_PM_AUTOSUSPEND_DELAY_MS 100 + +#define DT_ID "arm,id" + +int panthor_arbitration_parse_resource(struct device *dev, + const struct fwnode_handle *child, + struct panthor_arbitration_resource *res) +{ + const char *name; + int ret; + + if (!child || !res) + return -EINVAL; + + name =3D fwnode_get_name(child); + + if (of_address_to_resource(to_of_node(child), 0, &res->res)) { + dev_warn(dev, "Missing 'reg' property in %s", name); + return -ENODEV; + } + + if (!fwnode_property_present(child, DT_ID)) { + dev_warn(dev, "Missing '%s' property in %s@%llx", DT_ID, name, + res->res.start); + return -ENODEV; + } + + ret =3D fwnode_property_read_u32(child, DT_ID, &res->id); + if (ret) { + dev_warn(dev, "Malformed '%s' property in %s@%llx", DT_ID, name, + res->res.start); + return -ENODEV; + } + + return 0; +} + +static int panthor_arbitration_runtime_suspend(struct device *dev) +{ + struct panthor_arbitration *adev =3D dev_get_drvdata(dev); + int ret =3D 0; + + ret =3D panthor_partition_control_suspend(adev); + if (ret) + return ret; + + return 0; +} + +static int panthor_arbitration_runtime_resume(struct device *dev) +{ + struct panthor_arbitration *adev =3D dev_get_drvdata(dev); + int ret =3D 0; + + ret =3D panthor_partition_control_resume(adev); + if (ret) + return ret; + + return 0; +} + +static int panthor_arbitration_probe(struct platform_device *pdev) +{ + struct panthor_arbitration *adev; + struct device *dev =3D &pdev->dev; + int ret; + + if (!pdev) + return -EINVAL; + + adev =3D devm_kzalloc(dev, sizeof(*adev), GFP_KERNEL); + if (!adev) + return -ENOMEM; + + adev->dev =3D dev; + + dev_set_drvdata(dev, adev); + + ret =3D devm_pm_runtime_enable(dev); + if (ret) + return ret; + + ret =3D pm_runtime_resume_and_get(dev); + if (ret) + return ret; + + ret =3D panthor_partition_control_init(adev); + if (ret) + goto err_term_pc; + + ret =3D of_platform_populate(dev->of_node, NULL, NULL, dev); + if (ret) + goto err_depopulate; + + pm_runtime_set_autosuspend_delay(dev, PANTHOR_PM_AUTOSUSPEND_DELAY_MS); + pm_runtime_use_autosuspend(dev); + + pm_runtime_put_autosuspend(dev); + + return 0; + +err_depopulate: + of_platform_depopulate(dev); + +err_term_pc: + panthor_partition_control_term(adev); + pm_runtime_put_noidle(dev); + return ret; +} + +static void panthor_arbitration_remove(struct platform_device *pdev) +{ + struct panthor_arbitration *adev =3D platform_get_drvdata(pdev); + int ret; + + if (!adev) + return; + + ret =3D pm_runtime_resume_and_get(adev->dev); + if (ret < 0) + dev_warn(adev->dev, "failed to resume during remove: %d", ret); + + of_platform_depopulate(adev->dev); + + if (ret >=3D 0) { + panthor_partition_control_term(adev); + pm_runtime_put_noidle(adev->dev); + } + + pm_runtime_set_suspended(adev->dev); +} + +static const struct dev_pm_ops panthor_arbitration_pm_ops =3D { + .resume =3D pm_runtime_force_resume, + .suspend =3D pm_runtime_force_suspend, + .runtime_resume =3D panthor_arbitration_runtime_resume, + .runtime_suspend =3D panthor_arbitration_runtime_suspend, +}; + +static const struct of_device_id panthor_arbitration_of_match[] =3D { + { .compatible =3D "arm,mali-gen5-am-arbitration" }, + { /* Sentinel */ }, +}; + +static struct platform_driver panthor_arbitration_driver =3D { + .probe =3D panthor_arbitration_probe, + .remove =3D panthor_arbitration_remove, + .driver =3D { + .name =3D "panthor-arbitration", + .of_match_table =3D panthor_arbitration_of_match, + .pm =3D pm_ptr(&panthor_arbitration_pm_ops), + }, +}; + +module_platform_driver(panthor_arbitration_driver); + +MODULE_AUTHOR("ARM Ltd."); +MODULE_DESCRIPTION("Panthor HW-assisted virtualization Driver"); +MODULE_LICENSE("Dual MIT/GPL"); diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.= c b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c new file mode 100644 index 0000000000000..e6fbf5e58b51a --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c @@ -0,0 +1,333 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include +#include + +#include "panthor_arbitration.h" +#include "panthor_device_io.h" +#include "panthor_partition_control.h" + +#define AM_PART_IRQ_RAWSTAT 0x40 +#define AM_PART_IRQ_CLEAR 0x44 +#define AM_PART_IRQ_MASK 0x48 +#define AM_PART_IRQ_STATUS 0x4C +#define PART_RESET_DONE BIT(3) +#define PART_INVALID_COMMAND BIT(6) + +#define AM_PART_STATE 0x60 +#define AM_PART_STATE_GET(x) FIELD_GET(GENMASK(11, 8), x) +#define PART_STATE_RESET 0 +#define PART_STATE_WINDOW_OPENING 1 +#define PART_STATE_WINDOW_OPEN 7 +#define PART_STATE_WINDOW_CLOSED 8 +#define AM_PART_STATE_WINDOW_GET(x) FIELD_GET(GENMASK(15, 12), x) + +#define AM_PART_COMMAND 0x100 +#define AM_PART_SET_COMMAND(x) FIELD_PREP(GENMASK(7, 0), x) +#define PART_CMD_YIELD_IDLE 0x10 +#define PART_CMD_YIELD_NOW 0x11 +#define PART_CMD_CLOSE_WINDOW 0x20 +#define PART_CMD_OPEN_WINDOW 0x21 +#define AM_PART_SET_WINDOW(x) FIELD_PREP(GENMASK(11, 8), x) + +#define PART_CONTROL_IRQ_MASK \ + (PART_RESET_DONE | PART_INVALID_COMMAND) + +#define PART_REG_POLL_SLEEP_US 10 +#define PART_STATE_TRANSITION_TIMEOUT_US 5000000 + +/** + * struct panthor_partition_control - Partition control data + */ +struct panthor_partition_control { + /** @dev: Device pointer */ + struct device *dev; + + /** @name: Resource name */ + char *name; + + /** @iomem: CPU mapping of the partition control IOMEM region */ + void __iomem *iomem; + + /** @irq: IRQ number */ + int irq; + + /** @lock: Proctects partition control state data */ + spinlock_t lock; + + /** @current_aw: currently open access window */ + int current_aw; + + /** @closing: synchronous closing of the partition */ + bool closing; +}; + +static void partition_irq_suspend(struct panthor_partition_control *pc) +{ + gpu_write(pc->iomem, AM_PART_IRQ_MASK, 0); +} + +static void partition_irq_resume(struct panthor_partition_control *pc) +{ + gpu_write(pc->iomem, AM_PART_IRQ_MASK, PART_CONTROL_IRQ_MASK); +} + +static u32 partition_state_get(struct panthor_partition_control *pc) +{ + const u32 state =3D gpu_read(pc->iomem, AM_PART_STATE); + + return AM_PART_STATE_GET(state); +} + +static u8 partition_aw_get(struct panthor_partition_control *pc) +{ + const u32 state =3D gpu_read(pc->iomem, AM_PART_STATE); + + return AM_PART_STATE_WINDOW_GET(state); +} + +static int partition_state_wait(struct panthor_partition_control *pc, u32 = state) +{ + u32 partition_state; + + return read_poll_timeout_atomic(partition_state_get, partition_state, + partition_state =3D=3D state, + PART_REG_POLL_SLEEP_US, + PART_STATE_TRANSITION_TIMEOUT_US, + false, pc); +} + +static int yield_now(struct panthor_partition_control *pc) +{ + gpu_write(pc->iomem, AM_PART_COMMAND, + AM_PART_SET_COMMAND(PART_CMD_YIELD_NOW)); + + return 0; +} + +static int yield_idle(struct panthor_partition_control *pc) +{ + gpu_write(pc->iomem, AM_PART_COMMAND, + AM_PART_SET_COMMAND(PART_CMD_YIELD_IDLE)); + + return 0; +} + +static int window_close(struct panthor_partition_control *pc) +{ + /* Partition already closed. */ + if (partition_state_get(pc) =3D=3D PART_STATE_RESET) + return 1; + + guard(spinlock_irqsave)(&pc->lock); + + pc->closing =3D true; + + gpu_write(pc->iomem, AM_PART_COMMAND, + AM_PART_SET_COMMAND(PART_CMD_CLOSE_WINDOW)); + + return 0; +} + +static int window_open(struct panthor_partition_control *pc, u8 aw_id) +{ + if (aw_id >=3D AM_ARB_MAX_AW_COUNT) + return -EINVAL; + + if (partition_state_get(pc) =3D=3D PART_STATE_WINDOW_OPEN) { + u8 cur_aw =3D partition_aw_get(pc); + + if (cur_aw =3D=3D aw_id) + return 0; + + dev_warn(pc->dev, + "%s: OPEN_WINDOW(%u): Already opened for aw=3D%u, state=3D%u. Closing.= ..", + pc->name, aw_id, cur_aw, partition_state_get(pc)); + + window_close(pc); + } + + guard(spinlock_irqsave)(&pc->lock); + + gpu_write(pc->iomem, AM_PART_COMMAND, + AM_PART_SET_COMMAND(PART_CMD_OPEN_WINDOW) | AM_PART_SET_WINDOW(aw_id)); + + pc->current_aw =3D aw_id; + + return 0; +} + +static void partition_handle_reset_done(struct panthor_partition_control *= pc) +{ + scoped_guard(spinlock_irqsave, &pc->lock) { + pc->current_aw =3D -1; + + /* RESET_DONE from CLOSE_WINDOW */ + if (pc->closing) + pc->closing =3D false; + } +} + +static irqreturn_t partition_irq_raw_handler(int irq, void *data) +{ + struct panthor_partition_control *pc =3D data; + u32 status; + + status =3D gpu_read(pc->iomem, AM_PART_IRQ_STATUS); + if (!status) + return IRQ_NONE; + + if (status & PART_RESET_DONE) + partition_handle_reset_done(pc); + + if (status & PART_INVALID_COMMAND) + dev_warn(pc->dev, "%s: Invalid command", pc->name); + + gpu_write(pc->iomem, AM_PART_IRQ_CLEAR, status); + + return IRQ_HANDLED; +} + +int panthor_partition_control_suspend(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_partition_control *pc =3D adev->pc[i]; + + if (!pc) + continue; + + partition_irq_suspend(pc); + } + + return 0; +} + +int panthor_partition_control_resume(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_partition_control *pc =3D adev->pc[i]; + + if (!pc) + continue; + + partition_irq_resume(pc); + } + + return 0; +} + +void panthor_partition_control_term(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_partition_control *pc =3D adev->pc[i]; + + if (!pc) + continue; + + if (!WARN_ON(window_close(pc) < 0)) + WARN_ON(partition_state_wait(pc, PART_STATE_RESET)); + + partition_irq_suspend(pc); + } +} + +static int partition_control_init(struct panthor_arbitration *adev, + const struct fwnode_handle *child) +{ + struct panthor_arbitration_resource res; + struct panthor_partition_control *pc; + struct device *dev =3D adev->dev; + struct irq_data *irqdata; + void __iomem *iomem; + u32 irq_flags =3D 0; + char *name; + int irq; + int ret; + + ret =3D panthor_arbitration_parse_resource(dev, child, &res); + if (ret) + return ret; + + if (res.id >=3D AM_ARB_MAX_PC_COUNT) + return -ENODEV; + + if (adev->pc[res.id]) + return dev_warn_probe(dev, -ENODEV, "partition@%llx: id (%u) already pre= sent", + res.res.start, res.id); + + pc =3D devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL); + if (!pc) + return -ENOMEM; + + name =3D devm_kasprintf(dev, GFP_KERNEL, "pc%d", res.id); + + iomem =3D devm_ioremap_resource(dev, &res.res); + if (IS_ERR(iomem)) + return dev_err_probe(dev, PTR_ERR(iomem), "%s: Failed to ioremap", name); + + pc->name =3D name; + pc->dev =3D dev; + pc->iomem =3D iomem; + + spin_lock_init(&pc->lock); + pc->current_aw =3D -1; + + irq =3D fwnode_irq_get(child, 0); + if (irq < 0) + return dev_err_probe(dev, irq, "%s: Failed to get IRQ", name); + + irqdata =3D irq_get_irq_data(irq); + if (irqdata) + irq_flags =3D irqd_get_trigger_type(irqdata); + + ret =3D devm_request_irq( + dev, irq, partition_irq_raw_handler, irq_flags | IRQF_SHARED, + devm_kasprintf(dev, GFP_KERNEL, "panthor-%s-irq", name), pc); + if (ret) + return ret; + + adev->pc[res.id] =3D pc; + + partition_irq_resume(pc); + + return 0; +} + +int panthor_partition_control_init(struct panthor_arbitration *adev) +{ + device_for_each_named_child_node_scoped(adev->dev, child, "partition") { + int ret =3D partition_control_init(adev, child); + + if (ret =3D=3D -ENODEV) + continue; + + if (ret) + return ret; + } + + return 0; +} + +int panthor_partition_control_open_window(struct panthor_partition_control= *pc, u8 aw_id) +{ + return window_open(pc, aw_id); +} + +int panthor_partition_control_close_window(struct panthor_partition_contro= l *pc) +{ + return window_close(pc); +} + +int panthor_partition_control_yield_now(struct panthor_partition_control *= pc) +{ + return yield_now(pc); +} + +int panthor_partition_control_yield_idle(struct panthor_partition_control = *pc) +{ + return yield_idle(pc); +} diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.= h b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.h new file mode 100644 index 0000000000000..9a688d7bbdb1f --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_PARTITION_CONTROL_H__ +#define __PANTHOR_PARTITION_CONTROL_H__ + +#include + +struct device; +struct panthor_arbitration; +struct panthor_partition_control; + +int panthor_partition_control_init(struct panthor_arbitration *adev); + +void panthor_partition_control_term(struct panthor_arbitration *adev); + +int panthor_partition_control_suspend(struct panthor_arbitration *adev); + +int panthor_partition_control_resume(struct panthor_arbitration *adev); + +int panthor_partition_control_open_window(struct panthor_partition_control= *pc, u8 aw_id); + +int panthor_partition_control_close_window(struct panthor_partition_contro= l *pc); + +int panthor_partition_control_yield_now(struct panthor_partition_control *= pc); + +int panthor_partition_control_yield_idle(struct panthor_partition_control = *pc); + +#endif --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010038.outbound.protection.outlook.com [52.101.84.38]) (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 36CEA4E9C1A for ; Tue, 22 Sep 2026 20:47:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.38 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110080; cv=fail; b=qDizuSRUk1B62nsaYajIKqpAiSHHF2HBLCHdKbBPdbq/0N/HxU9UyLmDMN2J3sKs6QwmNNBemGhqNMIbOr4mjnpgNNbBRiFcUcBz8IyxEihti6bAQdLiMJwTqYKRL8zdY9OKI7/pXKn/vcD1lDUf4r39nTsXJG0gFC05VsJT9S4= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110080; c=relaxed/simple; bh=Th1T5mWpmuG9e5CCWrzHn6uxF8F0qhG3DIWV+nFYgKI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=T8ecNeEZzQrNLHpIBRvTrlflGBiwHP1aWLhSRRzDbltbX2ervIjqua97g6CdsnY6HlPjhFFiG9cd1FZh5TUnfJUKYNDbiRDcizeu2pMwhKFc/l5QBD4caBcVHI7Y0tLB4TKa8CHAgck5vrGEa2quQXK5XaRGt7qa2mnb+piz/jE= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=q2/s6ufO; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=q2/s6ufO; arc=fail smtp.client-ip=52.101.84.38 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="q2/s6ufO"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="q2/s6ufO" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=UHEnbistQpyMKghEeVCKRnuaFh7Y0YnxSRf3PNhlmypY8et9skr24uYaV+7uyyB+LMnLL8ywbVl7SgR/2lXINz98hin7EcYvgX4+Kv1mlWPtjddhdGUr6pehbZMVG1SAqLrjvfdzpqUcwln4Uzep6ZlYPQxc9BSGtpcmdI+7AapVUUivBtjUCEku5Y/MNtoKCqmaA3aojb+rxaJH8gOWi701/RuZEmWo+TrrzqdVE7TgmJdVn3ZQt9VqOVREzP5ktSMoabdPQM4rRgmqdGg52X3s8M+r01qBrJ/H8MRhAAP3UVXAwWgfmqIU174iLZtKcST55dOC2Ikk8GoE4N4v5Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LgYLdhxSNAUXmnGRjlvqE1NRyFA10B/pIWB3noQBNC8=; b=cNrUcz6ZuYYHncF/szs73ppauOoCEk3gOt2r8AC2mcCaPGWbv63NkHaSrK341qfG4WesRwXS35x4Fwe0zs5+hrqYXdA6D3zHWSlQSXF0uEQxlHRFFR045Joux0a8j4ZKL6rJdgqWImW1V0pYn7Q/Pm+904FzqOI9cPvhBm6os4vSFXdNenr98trMvProk2O4GQOXehhVeY7TdIIpAH+OZWg/hiP5yQ4h1NPH2WIrKohMyHq7khNcQx5Y/HZjCrwKMiPGatr2jp8KAiZg+nk+xSna9nYr0Xo+r1f5hJBd8cueT55p2imQFZLWEWg9F/J//UL5oQOXCY4G7djQ6lz8jg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LgYLdhxSNAUXmnGRjlvqE1NRyFA10B/pIWB3noQBNC8=; b=q2/s6ufOryfYg/1JDq7TcuZjmawaGuhUz7MT+jbV576ygg4l2UaKmg1juWRH0UlnxJsJyrcTZRmblx9THObuGMF/rgB+JizZSJmy9TEgOtaoG8TKySu+AU97/AXvg3oT1WdHou91mLxq/dXvFWp18ZVQMJj0aDdASX2B0TkUobQ= Received: from DUZPR01CA0279.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b9::28) by PA4PR08MB6253.eurprd08.prod.outlook.com (2603:10a6:102:e4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:30 +0000 Received: from DU2PEPF00028D01.eurprd03.prod.outlook.com (2603:10a6:10:4b9:cafe::36) by DUZPR01CA0279.outlook.office365.com (2603:10a6:10:4b9::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D01.mail.protection.outlook.com (10.167.242.185) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Tue, 22 Sep 2026 20:47:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gLR09FFhxuL97frqwg7hdSjoOJjuTBnrSSIFAdNk7k9C+hINXTOoPh8Omn1u2OIi0Sy++TFZn4Tr2ohH+LivOCBhw1yT0Mzh+E7ccu3UquySwLfLllfwhjVZzXan2jPTjtjHWFILbhx2njIK3K6xsteeBXSi1XpP8VC8JOrL1bVhUokAfxMuYg+3wWw49E20WyidDpqQ0zPKTPhTo5R5ot9qhcrXUrdKZL/6GuIxukCHXxw/XKKz5OBEtk6cZtClJMAWq1hfI/06dvaqWzKhwG8EutOmJYLGTtJAMi9LCnxeR9+YYGDkl+/FChCsKMIvBsIM1VCdAQHUTuKNo9bpWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LgYLdhxSNAUXmnGRjlvqE1NRyFA10B/pIWB3noQBNC8=; b=oY9Eh0LIYUZ1MsJ6jyUouaeOQ5NR3WKNl19l/B19cWwl73S3J9iJcLdPKmXuAFwq9NDcyrVNMF+Sgr94XzQtzv22PzLgB4G6hLzIaGAxX9V8bJ4gt0R7xJ6BbdwJS4c1cWo23Z0AcfT5t5M8CMc9vtrjdYpR7uQPud0xS0m9+lTdMJd348otqd51lfOlwa6wtzanhAp/mtSCKFtxShRkZFr2HQrIqPnkdndtzxOCFZzqliXooPhlumGc+HodXet/CRaLJVLN3J3bBDcNJyfzORT3gkSDrbU5now48dX9BolSbISOvcDP58G6js8SOC+JeuAsdhFgnsnv/dCaVkeQdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LgYLdhxSNAUXmnGRjlvqE1NRyFA10B/pIWB3noQBNC8=; b=q2/s6ufOryfYg/1JDq7TcuZjmawaGuhUz7MT+jbV576ygg4l2UaKmg1juWRH0UlnxJsJyrcTZRmblx9THObuGMF/rgB+JizZSJmy9TEgOtaoG8TKySu+AU97/AXvg3oT1WdHou91mLxq/dXvFWp18ZVQMJj0aDdASX2B0TkUobQ= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DBBPR08MB10796.eurprd08.prod.outlook.com (2603:10a6:10:530::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:46:58 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:46:57 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 14/27] drm/panthor: Add AM message helpers Date: Tue, 22 Sep 2026 21:45:08 +0100 Message-ID: <20260922204535.2850094-15-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0169.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36f::15) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DBBPR08MB10796:EE_|DU2PEPF00028D01:EE_|PA4PR08MB6253:EE_ X-MS-Office365-Filtering-Correlation-Id: 57e5ea2b-bd2e-49a2-4633-08df18eab814 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|1800799024|366016|23010399003|3023799007|10067099003|56012099006|5023799004|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: FBH+WEctHoDEEgv0DGIj1FOLAjz042nEisJqqGAmZX2Bk12L/wcPBK/DTH+zvtYt3uenYfG6aA0QOvnATgQhYtJRd42vh9ZkRpGN/1uF3TM3OCFDmTZ3OQCQxmnDMO25k1IP8asQSHv12EXjMvnlENPNkk1oqR1vktsispmnyTuvot8bMqoM2ccU9x96/UDTqpSwhCbcXAJGgm/anm/Vm/4oZjr3Hr/PSz3oQHTXH/n6d1ERdG7hWdH6jC+ctzRkEm2cFP0TKXF7ZObevrGW6AxblykGpqaUFinma0lOFZbfQAIqlsuP7g6qrGTqYnd95qXr0Sfu+j9ctUpTN6Z8mHJ8v2RHDLTGRGRqcmr9PlLxlXqV7Z9uLNDbIdQ3vQoAeRF9yv1qsge6Y80qn+YAEO/8QR/7iPr8MQukp2POuseM5hqJB+TK3m8fqA29fiBoK72L1mvLCGi8BJdnWrCz4r7b8iDVu9yOmbv/QAIwH3QL0wOdQvvK60t1p6u6iUI9v/WIPNuN9fO7eN2LD5sMm0WyOIEeHJKNJxFe5fNc9UwihlL23u7Ca8o8rS1G01PDRbrRiwEAtnbTTydaySvXvWNOLtvE1y91hiwG2P1b8izSCVwEbKEgvRYE5Vw9Qad35rv2eDjwRKSBeGLJZJyzDmTsam1ZYf47lZQazjupxw0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(23010399003)(3023799007)(10067099003)(56012099006)(5023799004)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: Gf5/Lc3RQJYB7ewKX2+hILUn5kw/iZf5lj7Mwl5sL95eh8O8bdE5gvw9o2oxjAH6Huu0iYgd/Aj2uYLhoQOpunNO7Ik0eNCpsF+kLVj7fDP6qfLsObAfnorZ8SOApRkSeV0Jb7zvVWm5Q/zZ4PEXeZZLRGwo/8qxlUdS975pY/hJ9Wd1+HVY5Z2E70sDF769e6N0wxlubCic81bOHfZrqZP5ZuL2btwLfKZmJ/YbmodkwESLTlnOelpka2anDMriEzBnihLynx4euFiqJsVuaqh4TIM4oS8TWyiDn6VhM/gNxYGDGZuFrOuy//5RoT1jThJQUOVNe2tJvdUwqiy61g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10796 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D01.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 000fa311-be3c-4852-32ad-08df18eaa4dd X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|82310400026|14060799003|36860700016|35042699022|1800799024|10067099003|11063799006|5023799004|3023799007|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: VlMeWd4BakgCSQCu1lfMAuIPaQYKT1Y4M3Qs8ispTAKVGuxQHMLg+SVPaDuoYQSfnTEMgVGXYd5groLLB5kNZZrK8Yo223lXwSFkK2r6Np72vsmNJ/WjN0rK3sl7y59gjD46IRoOm4l1Wlchnsjda1NsBwFfqKLBY7KRxIQXQLQG/ospS23ezPkb3R1at7Luagim23p8pRzPwJ3Z9qOh1T392gtqYTwP6qaAYZ1a2EyfcApX8z0iT4y7b1aSNBiuOr/lj+HZIYHWmxANSHs8y4Z+Ov4WszCqVXiT0xgrozby2s2kM14+Q893agR+oxMHJLwCcO3QzCb7Y+gNO8BOfx0QwqjpEimWTTauhnYpd8KYcXA7QdC2fP2tEQ+wX1uA7rj1z8JX0cley0onfvAyB4/b294JKIio1Ky77dH74Zq8OLHa0DpfhyGe+/urZc5Va8JDJQkYmNIqq4n0Xj8q233yvG60nuayxtZhGEUk7NF3fB3hp8sXu1J8zDAQTuVhMX0UQj2TXRkjQTR8NcpxFC3Sq1XjxOY1EyWl9WRF7vQDMbAkYvMmvsz7bTbmLtAlVHR5FNskwMfeDpYefbsDcfbO98gJHnSckGGETD/I05IrzW1TlsUVGsQTz6ZP5IXC9v7uuuk1NSvmhj06VaRN9F2VqNHKopswhH6V8xXe16spY3/bbn5h2WlU2fihUwDbtHRpm0ziJjsm2Jg9SebDnQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(376014)(82310400026)(14060799003)(36860700016)(35042699022)(1800799024)(10067099003)(11063799006)(5023799004)(3023799007)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Gy2qGMwaWMaw/KvH0ds40nzmlgl9chqkhnedDhLZAxIPLMTWD9HfZBdVw7V7DfcVMOqbEsLWFc1voFrGuwCZIpaf619wBN0Aq1bh11iNWzCKdBMt4pz+CjLbdeNHTWkBWYbXS/SQxGUUq3TZe1pX41GFMY+Vul1looXtaCwYWY6/GvIPmpvYItM9Jf4B24R5DyAztGVWvrHZO6feApLY663L2wVNnD9ZFQNa1VqTuMYT/4T95jJyn0bGMVadwkILCDIGBSSQqVNCoY78AVAGrEjaVMvWlHUD6fLsvbK6ahudcnkpx7HDtasR4+niYJeELcvbHjTBTUI1OpmPSeStN7U/LPUCdDiWjyQowfzKLtmIS7rvNBlQmK7bjs9SkqtyiZL08/bLbvrLNkNOYythEiIwsQqcyLcXMPI2Vm0GgwxdDfMpgbAp1AKMzs9V2wYG X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:29.8591 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57e5ea2b-bd2e-49a2-4633-08df18eab814 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D01.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6253 Content-Type: text/plain; charset="utf-8" Add a shared helper layer for the AM_MESSAGE registers used by v15 GPUs to coordinate between access windows to enable virtualisation of the GPU. The helper defines message IDs, register accessors, version negotiation, and FIFO-backed sending. Outgoing messages are serialized with a spinlock, written in the required register order, and queued for later retry when the hardware outgoing slot is busy. Signed-off-by: Karunika Choo --- v1: - Raises minimum/current protocol support to v2. (v1 was for G78AE) - Removes ARB_VM_GPU_STOP. - Return -ENOSPC instead of -ENOMEM on full outgoing FIFO. drivers/gpu/drm/panthor/panthor_am_msg.h | 159 +++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 drivers/gpu/drm/panthor/panthor_am_msg.h diff --git a/drivers/gpu/drm/panthor/panthor_am_msg.h b/drivers/gpu/drm/pan= thor/panthor_am_msg.h new file mode 100644 index 0000000000000..fc1e3f1051fe5 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_am_msg.h @@ -0,0 +1,159 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_AM_H__ +#define __PANTHOR_AM_H__ + +#include +#include +#include +#include +#include + +#include "panthor_device_io.h" + +/* Protocol versioning */ +#define ARB_VM_PROTOCOL_V1 0x1 +#define ARB_VM_PROTOCOL_V2 0x2 + +#define AM_MSG_MIN_SUPPORTED_VERSION ARB_VM_PROTOCOL_V2 +#define AM_MSG_CURRENT_VERSION ARB_VM_PROTOCOL_V2 + +#define AM_INCOMING_MESSAGE0 0x0 +#define AM_INCOMING_MESSAGE1 0x4 +#define AM_OUTGOING_MESSAGE_STATUS 0x8 +#define AM_OUTGOING_MESSAGE0 0xc +#define AM_OUTGOING_MESSAGE1 0x10 + +/* Arbiter to VM message IDs */ +#define ARB_VM_INIT 0x04 + +/* VM to Arbiter message IDs */ +#define VM_ARB_INIT 0x05 +#define VM_ARB_GPU_REQUEST 0x08 +#define VM_ARB_GPU_STOPPED 0x09 + +#define AM_MSG_ID_MASK GENMASK(7, 0) +#define AM_MSG_ACK_MASK BIT(8) +#define AM_MSG_VERSION_MASK GENMASK(15, 9) + +#define AM_MSG_ID_GET(x) FIELD_GET(AM_MSG_ID_MASK, x) +#define AM_MSG_ACK_GET(x) FIELD_GET(AM_MSG_ACK_MASK, x) +#define AM_MSG_VERSION_GET(x) FIELD_GET(AM_MSG_VERSION_MASK, x) + +#define AM_MSG_INIT_MAKE(_id, _ack, _version) \ + ((_id) | FIELD_PREP(AM_MSG_ACK_MASK, _ack) | FIELD_PREP(AM_MSG_VERSION_MA= SK, _version)) + +#define ARB_VM_INIT_MAKE(_ack, _version) AM_MSG_INIT_MAKE(ARB_VM_INIT, _ac= k, _version) +#define VM_ARB_INIT_MAKE(_ack, _version) AM_MSG_INIT_MAKE(VM_ARB_INIT, _ac= k, _version) + +#define AM_MSG_DEFAULT_FIFO_SIZE 4 + +struct panthor_am_msg { + /** @iomem: CPU mapping of the AM_MESSAGE registers */ + void __iomem *iomem; + + /** @lock: Lock for send_fifo and outgoing message register */ + spinlock_t lock; + + /** @send_fifo: FIFO to queue of messages to send */ + DECLARE_KFIFO(send_fifo, u64, AM_MSG_DEFAULT_FIFO_SIZE); + + /** @version: Protocol version */ + u8 version; +}; + +static inline void panthor_am_msg_init(struct panthor_am_msg *msg, + void __iomem *iomem) +{ + spin_lock_init(&msg->lock); + INIT_KFIFO(msg->send_fifo); + msg->iomem =3D iomem; +} + +static inline bool panthor_am_msg_pending(struct panthor_am_msg *msg) +{ + return !!gpu_read(msg->iomem, AM_OUTGOING_MESSAGE_STATUS); +} + +static inline u64 panthor_am_msg_read(struct panthor_am_msg *msg) +{ + return gpu_read64(msg->iomem, AM_INCOMING_MESSAGE0); +} + +static inline void panthor_am_msg_write(struct panthor_am_msg *msg, u64 me= ssage) +{ + lockdep_assert_held(&msg->lock); + + /* + * Registers must be written in this exact order to prevent interrupts + * being raised before the complete message is written. + */ + gpu_write(msg->iomem, AM_OUTGOING_MESSAGE0, lower_32_bits(message)); + gpu_write(msg->iomem, AM_OUTGOING_MESSAGE1, upper_32_bits(message)); +} + +static inline int panthor_am_msg_retry(struct panthor_am_msg *msg) +{ + u64 message; + + guard(spinlock_irqsave)(&msg->lock); + + if (kfifo_is_empty(&msg->send_fifo)) + return 0; + + if (panthor_am_msg_pending(msg)) + return -EBUSY; + + /* FIFO should never be empty at this point */ + if (!kfifo_get(&msg->send_fifo, &message)) + return -EINVAL; + + panthor_am_msg_write(msg, message); + + /* There are still messages in the FIFO, notify caller to retry again */ + if (!kfifo_is_empty(&msg->send_fifo)) + return -EAGAIN; + + return 0; +} + +static inline int panthor_am_msg_send(struct panthor_am_msg *msg, u64 mess= age) +{ + guard(spinlock_irqsave)(&msg->lock); + + /* + * If there already is a pending message in the FIFO or the outgoing + * message is still not read by the receipient, add to the FIFO. + */ + if (!kfifo_is_empty(&msg->send_fifo) || panthor_am_msg_pending(msg)) { + if (!kfifo_put(&msg->send_fifo, message)) + return -ENOSPC; + + /* + * return -EBUSY to indicate to the caller to schedule work to + * retry sending messages in the FIFO. + */ + return -EBUSY; + } + + /* We are free to write to AM_OUTGOING_MESSAGE */ + panthor_am_msg_write(msg, message); + + return 0; +} + +static inline int panthor_am_msg_version_validate(struct panthor_am_msg *m= sg, + u8 version) +{ + if (version < AM_MSG_MIN_SUPPORTED_VERSION) { + msg->version =3D AM_MSG_MIN_SUPPORTED_VERSION; + return -EOPNOTSUPP; + } + + msg->version =3D min(version, AM_MSG_CURRENT_VERSION); + + return 0; +} + +#endif --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013057.outbound.protection.outlook.com [40.107.162.57]) (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 D8CC242FCDB for ; Tue, 22 Sep 2026 20:47:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.57 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110094; cv=fail; b=dIV02VwywordASEEI3WRkw6Ph59nciSwsQw+N4Trnsoia/WUANroU81P5YtjV5X2ZT8Hn9dZFOPzIUZLXe2GwIvJSDJtUoM9GFUtukEbYvpqdo0ihxK4npvAKcc9PP5kLC4Rr2JmWQotnsJUMzaTjUEM+g0sJg2mv7LUVrwv/dw= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110094; c=relaxed/simple; bh=9wkb/7TaCyfMM2pV0mrez24HSrpvOGmfAdNTcXOepX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PxjYxJzhwbY35glg6sit3pertUhH/0kSCZmzdlr+K4awXzpmTf3bXShyfEo67bGEPVNnKdaBfwFKsHLTF1Hx7m8Yqawy8cehFi422E7bXTnLbCT+NQ2xQI+3czUqkhy2m4JVTZIz4Wr/jYhVPhNJ1njgzM+k4I5PtcIGSXmKVv8= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=fJQM9l8M; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=fJQM9l8M; arc=fail smtp.client-ip=40.107.162.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="fJQM9l8M"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="fJQM9l8M" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=lRnyd2dSpW3N0fvv0nNaiHnwfpTMfqVywvaWxrJYn1XjXyjmi7eFSu4pdcDhbM3L0AXCzQpSX7/IjWO059sssFyNbrI82V0DTAe9mmciDooN+CthiABQyX417KX48Wi7F65szREzLxb8UAx8jJweYc87RnjmvhuAY0+ROKE6IHXRY9rJMmR/GVIYVkeO0wcbSrlCwEwBBvXy7akwGtT1mLSXsweFMVWwrLlNv23FkADt+KJ5IL+qAOKfQWpZvSmw+HBYFXyxzqcUEZju4mygu+XumjcCtiH8vwBfn43rI/qtuW9kaErn4bg8wfP1CFgOGhsHkfrT6ujYa+Gi/Bvl5g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Z17U7A9cgUYVBG1n+DJZXAVYu3i1qpjBiOXRFJO+EbU=; b=b8jn1PZWPo6bWiT+dV0a3F2/f8ZH2BIio+v+YR9z3bmXEYEp6dMWcaOLGQ2SkDUOlxkGMlZTjkpt+eP9Pi5hDEx2/9RYoTCf4Kp6ebQidNkusWm55wCPwmSaSQA7akP3Re8DiGw+wmkdOJ6gYyIV+kCYF+omlFH0mYvrS5MJSMzjMf9aAIsIknYBU8KP0q0D+vEwBPxw7Ze/DiCLZ8MagXzuULMezHUdfU4RElaxHaB7K2rQge68E4xTUfjbY69AVZqo+nCHT6f+W8B+mdjhcWzTOR78ccnbrHkllbCEB5Y3eBQsTn8B2fm/t3MetYv155rcuWdrb7xGzYk1OfWOiQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z17U7A9cgUYVBG1n+DJZXAVYu3i1qpjBiOXRFJO+EbU=; b=fJQM9l8MOhbHWJHftN84OTWOVJA+UaoOIzfLxhXvata9uhhLmFjS1kQzmyvmgpbDYZ9mVGGrYgo7D6H1kC/VwLDoNKRhj//ckchCycU8lvmVD/9Nc4xAQ2cRBQ55y4NV3qkAxI856AwykbhTAf//hv8nmhjCzcpw0tmO3t8812M= Received: from OL1P279CA0072.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:15::23) by DU4PR08MB10982.eurprd08.prod.outlook.com (2603:10a6:10:576::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:39 +0000 Received: from CPH1EPF00000519.eurprd04.prod.outlook.com (2603:10a6:e10:15:cafe::ac) by OL1P279CA0072.outlook.office365.com (2603:10a6:e10:15::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF00000519.mail.protection.outlook.com (10.167.241.228) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vv/g2YL7TydSIPvj8SjmjssNOWUiT/KoKRSmyCtGqYxSZK/IyBmptakIragTOEzx2D/eGgz7OJcL+//80XFFnNFBcxedfCuD/QVssusC3dbVqwAJgxrVj3hOwi2QlYfqImqs9/rkLYuyb7AMUY/8lR32IwfZ9sBHjTC5IG5D/jbQ0mjYX0VyTPAtA3U7yxm9Ch/nd3sIP4Nb9eH3rhJxOCeyPEleev6GI6aFKe7ips/HS5EHv0FMAxqSE5MPKQplk+nUi+ExE909o6deVKklNVGcwVPw6u7lqE1fpMs3qwU/rO/SF3ebav2D3QHxd0+Ne/ADeReddIRopczqt7bMGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Z17U7A9cgUYVBG1n+DJZXAVYu3i1qpjBiOXRFJO+EbU=; b=p80M87j3rkNRA+ULWAxjtWBt5dVQFYiUOsC+PXVwL+IPoLFQ14vpopIcZHJAFXMQrLSvFqUbAPLb2wE0WEC5BMLutE23WS1H7SYxmUgjGJs93FFQd89DAgHpRbBJAKim03Pbm7BrK7q6/SyeZBv6HXQYWOz7YSKN6fsfauf094ub3UW0JlzCvgYzoat12oai7dWruAYzbzOuwqVi2e/DYokxuiiMuFfQAPY+PysJF/YXVvcP9Xoj4aTEujxhWH0u0D6KTS4j9W3Q4cQSG9eWplgVR2mUt2lC2RefXEWZx7tkDJO49mPShMNhopjd1prudK0POVj5MQUTrWowDPHXmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z17U7A9cgUYVBG1n+DJZXAVYu3i1qpjBiOXRFJO+EbU=; b=fJQM9l8MOhbHWJHftN84OTWOVJA+UaoOIzfLxhXvata9uhhLmFjS1kQzmyvmgpbDYZ9mVGGrYgo7D6H1kC/VwLDoNKRhj//ckchCycU8lvmVD/9Nc4xAQ2cRBQ55y4NV3qkAxI856AwykbhTAf//hv8nmhjCzcpw0tmO3t8812M= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:01 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:00 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 15/27] drm/panthor: Add AM_RESOURCE_GROUP support Date: Tue, 22 Sep 2026 21:45:09 +0100 Message-ID: <20260922204535.2850094-16-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0441.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a9::14) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|CPH1EPF00000519:EE_|DU4PR08MB10982:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b2059c7-d04f-4b39-afbb-08df18eabd18 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|3023799007|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: v8FVNAyCma1JHj0UlC9V6u9vvJZOrYrrDlG0nFUs3x5ZWpR37Got+VTk+aw9Uur2pztwieKYMdMzPb6GgxmfaMFn+YfLyY/LbV83TW/j1zRSgUeV13g9BvyQINYXKyKz9Vzp5I8M8ag/RD0r8rq3aWic4bR5Ji2mkSr4UEChtRM3H6pULk7uI9+o+GOWol7/UmmVxrWPfnzbLwyuoYNluNRFPSA3K0qH2BIImoce6gXnDxutdqZ+iSiw4YzMO116vVPgZttikR4AJOdeBqDQN4hVYRIocnD22tit5QK2r3jcxizxKARXP8AuwRHnSxBpBg6bej9OpEeyHjg2PO90MVt+Zgs/RtuE5TW95orveoy9qCuyrjmhKPqUP8rb/UKYPwlalsiTykI4LdUU9idaNRttULUgmCgGOdy8+Erjx5pYMlBLyrFZEg/4eYpc0zM0YBdsYmwcL84EsHWB9KPq2mZuKd2gyvoC8/NUvxxYFevQ2u8ZRObBA1le1MqRrgADsOQY6SOLVQvZNYO+XYJWZkc2jAf+NCjous/NhYwrgf2jjsoJFycuOp59XW48Lh3+O5Ze40n2gL6ESJ8tFjYcIhmgpl/1Kq3XL6rQF0U5ppr1rFeMHEQ/PUzoyhDjbJGEsNzFDgIGcesVEMjsUDhyp6AECCbccT2ZN5DfB/06tjc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(3023799007)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: KOO0eUjwW6EYySOuigkIhxLsHt0116HZOKdYe4xMbXfun9pjJq5AXZnzM5mZOXI+kZWrV96BcY68UZTedwzLHHqfUW00hR7t4pbsEy6vnzE2b3R/NmQcYqss8gcmSFTKskeCSTDB8zt3wJodfqhvP7hsEWXYzr5ONzCT25SN4rAXse5OOVxSQ7PtixDjtKrCqXALb+ZtkXEBnnMwMb6OWVSHTYfw457HCV9/xkIJxBxo3+qzpAspf+Uo1oC4dyvX2gy58Eg4DY3oyyr0eTreviOxm7m3mptwn57j3pMb4d8gf5xiyNv7h/sN5YxhS/W4Dq70wEZ168ZPaIiBd/mTzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000519.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8a2a8011-2842-44c7-2556-08df18eaa69f X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|1800799024|14060799003|82310400026|23010399003|35042699022|56012099006|3023799007|6133799003|10067099003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: fk9GV2f0+05sIxkSRX7G7s01h/1XDuJmaBONhFF/6JdeIwOSnyYeYSwyzTKfdO7HIMD6UJcY4GYQChFrlm52E6rhyp92wn3fGolZSmpP+Z/btZFc2SzX6ew//wFZ6t/y4qpQRjOVfxg2FAWev3rST5Yece2hVoZds59mzhxJUVrwqil60BmpsoUW+b4Q4adCLErk9B/H6xM8DJyxxK+raqo8QqRoocZd7Egb+7kdhAqF6mht4C0v58t+sO+eyPK2KJ14IC7DQ/ThagWUCGC3NCIXuHMn/kEtvnGEcbzxXXPKZJq8wcD5rnG6TpNpbgxv/1LFKOCuEOXBvCVaBK1XzDRquVV4XxcfpoxWmIeocn8bLs20I5PqFzd1RKoaoWBXzdTwF9LvXsHbk4uuVScZ6hUQMuv0v/ua6Y79Rm0WuGdUSGjzzQ4Dxz5NRzEZnFWRpLk6vD0T7snHdb2eXSQWUomkLmhGAMFcX7ScsvJ3hhcIHEWPOVzUBNcE4Q7GEjcVYZ7v7FjnpBGwEvgPulyHmLbk6PkZEw79nPrxyEweYWUrQd7jMWTM8MklvO8oKBmd7swfosggbkPJieaFiowA1W6LeiEEQe2JUcQ6pLJzmAltLpinwJD+DrjgVJTwrk9Ch565KBZOOtuFwbCB8cJvR0vtgmfcW9BobzDOeh6CW3Ae6cm4KPULYRlYZhveEFEbZKpOIh3DRN0ZPc/wPrCD3g== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(1800799024)(14060799003)(82310400026)(23010399003)(35042699022)(56012099006)(3023799007)(6133799003)(10067099003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: p223kVvAKARObi5brA1i+7ikMCmV33HIwRG1JEdPzZ0n2V4WSDh3qoK9MabhF5PEJcoNZDKTY+OOuWZoq9PlF4LORct3RM/lShmOdPZq8g0/s/AQggzbJjOSbbnIUdLMbFLigdo1/S9Qx1RvAO51J4OaZUfNtNJQEOShhEJ7kFNEJDEzwiTnW7kvrFidGIfjbjVPK2dazeMx4YU8yfOEgKQg/XzH4uORHEEcZVgUByspHvvF3rS93EtOiKFzfggcwRh1WRFXPzO+5c+lgRZlhQ5YG8JxzzDBqYwhHIn4HpFHlmqvSyABzaYpp2XTMWUohKhdQUZFvWGpz8Ugb5QkUOUXdtPAXk6YZHI8+xI3mBj7y3U+C4jQZ5EJ3F9iPfHY2xYGRQVnp4kOsUcGFQHTtPgFr2brNQQ/xcHW3TuQ2pYX/HkY23mBPkmqFghc2Jt6 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:38.2092 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b2059c7-d04f-4b39-afbb-08df18eabd18 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000519.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB10982 Content-Type: text/plain; charset="utf-8" Add resource-group probing for the arbitration device, including MMIO resources, IRQ handling, per-AW AM message helpers, handshake negotiation, and retry work for deferred outgoing messages. Hook resource groups into arbitration init, teardown, and runtime PM. Signed-off-by: Karunika Choo --- v1: - Updated DT structure and accompanying parsing to handle child nodes instead of named platform resources. - Hold runtime PM reference during message retries. - Fix suspend resume ordering. drivers/gpu/drm/panthor/arbitration/Makefile | 3 +- .../panthor/arbitration/panthor_arbitration.h | 5 + .../arbitration/panthor_arbitration_drv.c | 19 +- .../arbitration/panthor_resource_group.c | 323 ++++++++++++++++++ .../arbitration/panthor_resource_group.h | 22 ++ 5 files changed, 370 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_resource_gr= oup.c create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_resource_gr= oup.h diff --git a/drivers/gpu/drm/panthor/arbitration/Makefile b/drivers/gpu/drm= /panthor/arbitration/Makefile index b0b6b2e3edf8d..2d2684321d978 100644 --- a/drivers/gpu/drm/panthor/arbitration/Makefile +++ b/drivers/gpu/drm/panthor/arbitration/Makefile @@ -4,7 +4,8 @@ obj-$(CONFIG_DRM_PANTHOR_ARBITRATION) +=3D panthor_arbitration.o panthor_arbitration-y :=3D \ panthor_arbitration_drv.o \ - panthor_partition_control.o + panthor_partition_control.o \ + panthor_resource_group.o =20 INCLUDES =3D \ -I$(src)/.. diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index 26950e47852dd..dfeab1b078d06 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -9,8 +9,10 @@ =20 struct device; struct panthor_partition_control; +struct panthor_resource_group; =20 #define AM_ARB_MAX_PC_COUNT 1 +#define AM_ARB_MAX_RG_COUNT 1 #define AM_ARB_MAX_AW_COUNT 16 =20 /** struct panthor_arbitration_resource - Arbitration resource */ @@ -31,6 +33,9 @@ struct panthor_arbitration { =20 /** @pc: Pointer array to partition control data */ struct panthor_partition_control *pc[AM_ARB_MAX_PC_COUNT]; + + /** @rg: Pointer array to resource group data */ + struct panthor_resource_group *rg[AM_ARB_MAX_RG_COUNT]; }; =20 int panthor_arbitration_parse_resource(struct device *dev, diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index 09342245a47d1..a1068a2c78f1a 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -12,6 +12,7 @@ =20 #include "panthor_arbitration.h" #include "panthor_partition_control.h" +#include "panthor_resource_group.h" =20 #define PANTHOR_PM_AUTOSUSPEND_DELAY_MS 100 =20 @@ -55,6 +56,10 @@ static int panthor_arbitration_runtime_suspend(struct de= vice *dev) struct panthor_arbitration *adev =3D dev_get_drvdata(dev); int ret =3D 0; =20 + ret =3D panthor_resource_group_suspend(adev); + if (ret) + return ret; + ret =3D panthor_partition_control_suspend(adev); if (ret) return ret; @@ -71,6 +76,10 @@ static int panthor_arbitration_runtime_resume(struct dev= ice *dev) if (ret) return ret; =20 + ret =3D panthor_resource_group_resume(adev); + if (ret) + return ret; + return 0; } =20 @@ -103,6 +112,10 @@ static int panthor_arbitration_probe(struct platform_d= evice *pdev) if (ret) goto err_term_pc; =20 + ret =3D panthor_resource_group_init(adev); + if (ret) + goto err_term_rg; + ret =3D of_platform_populate(dev->of_node, NULL, NULL, dev); if (ret) goto err_depopulate; @@ -116,7 +129,9 @@ static int panthor_arbitration_probe(struct platform_de= vice *pdev) =20 err_depopulate: of_platform_depopulate(dev); - +err_term_rg: + panthor_resource_group_cancel_work(adev); + panthor_resource_group_term(adev); err_term_pc: panthor_partition_control_term(adev); pm_runtime_put_noidle(dev); @@ -136,8 +151,10 @@ static void panthor_arbitration_remove(struct platform= _device *pdev) dev_warn(adev->dev, "failed to resume during remove: %d", ret); =20 of_platform_depopulate(adev->dev); + panthor_resource_group_cancel_work(adev); =20 if (ret >=3D 0) { + panthor_resource_group_term(adev); panthor_partition_control_term(adev); pm_runtime_put_noidle(adev->dev); } diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c b= /drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c new file mode 100644 index 0000000000000..9bdd0876dd457 --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c @@ -0,0 +1,323 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include +#include +#include + +#include "panthor_am_msg.h" +#include "panthor_arbitration.h" +#include "panthor_device_io.h" +#include "panthor_resource_group.h" + +#define AM_RG_IRQ_RAWSTAT 0x80 +#define AM_RG_IRQ_CLEAR 0x84 +#define AM_RG_IRQ_MASK 0x88 +#define AM_RG_IRQ_STATUS 0x8C +#define AM_RG_MESSAGE_MASK GENMASK(15, 0) + +#define AM_RG_AW_MESSAGE(n) (0x100 + (n) * 0x20) + +struct rg_aw_data { + /** @msg: Messaging data */ + struct panthor_am_msg msg; +}; + +struct panthor_resource_group { + /** @dev: Device pointer */ + struct device *dev; + + /** @name: Resource name */ + char *name; + + /** @iomem: CPU mapping of the partition control IOMEM region */ + void __iomem *iomem; + + /** @irq: IRQ number */ + int irq; + + /** @aw_data: Data for each access window */ + struct rg_aw_data aw_data[AM_ARB_MAX_AW_COUNT]; + + /** @wq: Resource group workqueue */ + struct workqueue_struct *wq; + + /** @msg_retry_work: Work to retry sending pending messages */ + struct work_struct msg_retry_work; +}; + +static void rg_retry_messages(struct work_struct *work) +{ + struct panthor_resource_group *rg =3D container_of( + work, struct panthor_resource_group, msg_retry_work); + bool retry =3D false; + int ret; + + ret =3D pm_runtime_resume_and_get(rg->dev); + if (ret) { + dev_warn(rg->dev, "Failed to resume to retry messages"); + return; + } + + for (u8 aw_id =3D 0; aw_id < AM_ARB_MAX_AW_COUNT; aw_id++) { + struct panthor_am_msg *msg =3D &rg->aw_data[aw_id].msg; + int ret; + + ret =3D panthor_am_msg_retry(msg); + if (ret =3D=3D -EBUSY || ret =3D=3D -EAGAIN) + retry =3D true; + + if (ret =3D=3D -EINVAL) + dev_warn(rg->dev, "AW%u send FIFO unexpectedly empty", aw_id); + } + + if (retry) + queue_work(rg->wq, &rg->msg_retry_work); + + pm_runtime_put_autosuspend(rg->dev); +} + +static void rg_send_msg(struct panthor_resource_group *rg, u8 aw_id, + u64 message) +{ + int ret; + + ret =3D panthor_am_msg_send(&rg->aw_data[aw_id].msg, message); + if (ret =3D=3D -ENOSPC) + dev_err(rg->dev, "AW%u send FIFO is full", aw_id); + + if (ret =3D=3D -EBUSY) { + dev_dbg(rg->dev, "AW%u has pending messages, scheduling retry work", aw_= id); + queue_work(rg->wq, &rg->msg_retry_work); + } +} + +static void rg_send_init_msg(struct panthor_resource_group *rg, u8 aw_id, + u8 ack, u8 version) +{ + u64 message =3D ARB_VM_INIT_MAKE(ack, version); + + rg_send_msg(rg, aw_id, message); +} + +static void rg_respond_to_handshake(struct panthor_resource_group *rg, + u8 aw_id, u64 message) +{ + struct rg_aw_data *aw_data =3D &rg->aw_data[aw_id]; + bool acked =3D AM_MSG_ACK_GET(message); + u8 version =3D AM_MSG_VERSION_GET(message); + int ret; + + ret =3D panthor_am_msg_version_validate(&aw_data->msg, version); + if (ret =3D=3D -EOPNOTSUPP) + dev_warn(rg->dev, + "AW%u protocol version less than minimum supported (%u < %u)", + aw_id, version, AM_MSG_MIN_SUPPORTED_VERSION); + + /* AW initiated the handshake, reply with supported version */ + if (!acked) + rg_send_init_msg(rg, aw_id, 1, aw_data->msg.version); +} + +static void rg_handshake_init(struct panthor_resource_group *rg) +{ + for (u8 aw_id =3D 0; aw_id < AM_ARB_MAX_AW_COUNT; aw_id++) + rg_send_init_msg(rg, aw_id, 0, AM_MSG_CURRENT_VERSION); +} + +static void rg_handle_message(struct panthor_resource_group *rg, u8 aw_id, + u64 message) +{ + u8 msg_id =3D AM_MSG_ID_GET(message); + if (!msg_id) + return; + + switch (msg_id) { + case VM_ARB_INIT: + rg_respond_to_handshake(rg, aw_id, message); + break; + case VM_ARB_GPU_REQUEST: + /* TODO: on_request */ + break; + case VM_ARB_GPU_STOPPED: + /* TODO: on_idle */ + break; + default: + dev_warn(rg->dev, "Invalid message (0x%llx)", message); + break; + } +} + +static irqreturn_t rg_irq_raw_handler(int irq, void *data) +{ + struct panthor_resource_group *rg =3D data; + unsigned long message_mask; + u32 status; + u8 aw_id; + + status =3D gpu_read(rg->iomem, AM_RG_IRQ_STATUS); + if (!status) + return IRQ_NONE; + + message_mask =3D status; + for_each_set_bit(aw_id, &message_mask, AM_ARB_MAX_AW_COUNT) { + u64 message =3D panthor_am_msg_read(&rg->aw_data[aw_id].msg); + + rg_handle_message(rg, aw_id, message); + } + + gpu_write(rg->iomem, AM_RG_IRQ_CLEAR, status); + + return IRQ_HANDLED; +} + +static void rg_irq_suspend(struct panthor_resource_group *rg) +{ + gpu_write(rg->iomem, AM_RG_IRQ_MASK, 0); +} + +static void rg_irq_resume(struct panthor_resource_group *rg) +{ + gpu_write(rg->iomem, AM_RG_IRQ_MASK, AM_RG_MESSAGE_MASK); +} + +int panthor_resource_group_suspend(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_RG_COUNT; i++) { + struct panthor_resource_group *rg =3D adev->rg[i]; + + if (!rg) + continue; + + rg_irq_suspend(rg); + } + + return 0; +} + +int panthor_resource_group_resume(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_RG_COUNT; i++) { + struct panthor_resource_group *rg =3D adev->rg[i]; + + if (!rg) + continue; + + rg_irq_resume(rg); + } + + return 0; +} + +void panthor_resource_group_cancel_work(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_RG_COUNT; i++) { + struct panthor_resource_group *rg =3D adev->rg[i]; + + if (!rg) + continue; + + disable_work_sync(&rg->msg_retry_work); + } +} + +void panthor_resource_group_term(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_RG_COUNT; i++) { + struct panthor_resource_group *rg =3D adev->rg[i]; + + if (!rg) + continue; + + rg_irq_suspend(rg); + } +} + +static int resource_group_init(struct panthor_arbitration *adev, + const struct fwnode_handle *child) +{ + struct panthor_arbitration_resource res; + struct panthor_resource_group *rg; + struct device *dev =3D adev->dev; + struct irq_data *irqdata; + void __iomem *iomem; + u32 irq_flags =3D 0; + char *name; + int irq; + int ret; + + ret =3D panthor_arbitration_parse_resource(dev, child, &res); + if (ret) + return ret; + + if (res.id >=3D AM_ARB_MAX_RG_COUNT) + return -ENODEV; + + if (adev->rg[res.id]) + return dev_warn_probe(dev, -ENODEV, "resource-group@%llx: id (%u) alread= y present", + res.res.start, res.id); + + rg =3D devm_kzalloc(dev, sizeof(*rg), GFP_KERNEL); + if (!rg) + return -ENOMEM; + + name =3D devm_kasprintf(dev, GFP_KERNEL, "rg%d", res.id); + + iomem =3D devm_ioremap_resource(dev, &res.res); + if (IS_ERR(iomem)) + return dev_err_probe(dev, PTR_ERR(iomem), "%s: Failed to ioremap", name); + + rg->name =3D name; + rg->dev =3D dev; + rg->iomem =3D iomem; + + rg->wq =3D devm_alloc_ordered_workqueue(dev, "panthor-%s-wq", 0, name); + if (!rg->wq) + return -ENOMEM; + + INIT_WORK(&rg->msg_retry_work, rg_retry_messages); + + for (int i =3D 0; i < AM_ARB_MAX_AW_COUNT; i++) + panthor_am_msg_init(&rg->aw_data[i].msg, + rg->iomem + AM_RG_AW_MESSAGE(i)); + + irq =3D fwnode_irq_get(child, 0); + if (irq < 0) + return dev_err_probe(dev, irq, "%s: Failed to get IRQ", name); + + irqdata =3D irq_get_irq_data(irq); + if (irqdata) + irq_flags =3D irqd_get_trigger_type(irqdata); + + ret =3D devm_request_irq( + dev, irq, rg_irq_raw_handler, irq_flags | IRQF_SHARED, + devm_kasprintf(dev, GFP_KERNEL, "panthor-%s-irq", name), rg); + if (ret) + return ret; + + adev->rg[res.id] =3D rg; + + rg_irq_resume(rg); + + rg_handshake_init(rg); + + return 0; +} + +int panthor_resource_group_init(struct panthor_arbitration *adev) +{ + device_for_each_named_child_node_scoped(adev->dev, child, "resource-group= ") { + int ret =3D resource_group_init(adev, child); + + if (ret =3D=3D -ENODEV) + continue; + + if (ret) + return ret; + } + + return 0; +} diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.h b= /drivers/gpu/drm/panthor/arbitration/panthor_resource_group.h new file mode 100644 index 0000000000000..ad85cd171c4a3 --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_RESOURCE_GROUP_H__ +#define __PANTHOR_RESOURCE_GROUP_H__ + +#include + +struct device; +struct panthor_arbitration; + +int panthor_resource_group_init(struct panthor_arbitration *adev); + +void panthor_resource_group_term(struct panthor_arbitration *adev); + +int panthor_resource_group_suspend(struct panthor_arbitration *adev); + +int panthor_resource_group_resume(struct panthor_arbitration *adev); + +void panthor_resource_group_cancel_work(struct panthor_arbitration *adev); + +#endif --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013062.outbound.protection.outlook.com [52.101.72.62]) (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 927663BED6A for ; Tue, 22 Sep 2026 20:47:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.62 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110086; cv=fail; b=JNCJnOBkP09HdGTygjEUQRYM5KZgKf6Vq00LOfT2AZcmNaVSwDnmn8jkUwcjUwPYOprzuEVS/CG1uqBREkI+1G4EZQIdgx6HtAuIjGlxNJL5u1x6bW29pSrC85ethyW25DWm7GzLqGQLx0ybLvQwSx5xjs8xh8hGcl1UHsLZdiQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110086; c=relaxed/simple; bh=vqhHcuxuEMgFF6JZiMtOL7wagfLGz9hd+5tWQG6XNe8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TC9ZLkLRJcxmP5V4s5f+n0JgWG+BBTdW6F0J4/KclXeRvPGruXVCYrZFyPzU0fpIn794s94NiC3wY5GW+pONhl1uU36X1Xm0K55FfqSWft49yiX2hpyhiY0PeG9SyR56khQez+uJE/gNxNWjcU4xpl3nz+J487Gr/rcDK8G9aPk= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=iKH9ZYcx; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=iKH9ZYcx; arc=fail smtp.client-ip=52.101.72.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="iKH9ZYcx"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="iKH9ZYcx" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ReUu0KE1GGWZ9it7r7TVcVieUHYqlrJCos7n0vdcAztvAeNJTBiE9cG6hBQ0SgP2cX1RbU6mOP3NlMmchSkBIE99DQyk5UOPlfje1zaiaMtoer3ZMZ+vS63VF+MC3z5U7IihSBmXLCeGGGjqpPPDNvnoPOch80OQ6VEfl/qzNdeTm3fVsFnvXL5TYb9KtwBJo3I4vzQmqmhNB9kBkvdtr/IrcwljUFcyC2pgTmq3TlI3Kgyeya1JY2eNWzFSPukrHrQTuk7m72LqqM/llTA2UrFjkJtyorCfK5xBrlz+x3/xq9IS8grzBOgsae/csmniDxNj5S3qGgF9PpaEDaSHWw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VqsaEfMmghbnjFeL209tFfTFzsYvUTuuxY8TFLKTwVg=; b=F0o/a99Bsnnc7TvXC0urMZ30JgI0MmF/WOGM+qnnRc+8x4ImfL0ph3P0pG58iRBNDntTQveJ7HO75sePrYrY+gXRme3zzxX4Tl1vO+44OL1iWoCtVGtfKyPcEG+kRZkwMxRIrz6cGo7jkm4KkEdXHzYA4p0Do1pNs9RBGCScnOpz3lwf39hpDKMp4DDnvSWkrScYiASNZsaokKwTaggRcPdbwGm4ZJPSGZJ6zTxUYaRibxI19GmINiKABgi+/PEgN8+L6D0a4z+4AJ/P9nQ2JdVb4v94re0wbPb7If6ltQTThRamu4oRMTeypK9qE9r1QUnjeWIzImnXxo8RzRZ2HQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VqsaEfMmghbnjFeL209tFfTFzsYvUTuuxY8TFLKTwVg=; b=iKH9ZYcxdwAS7sDJwIWAmwa63KWXixAEUSuLYX7Cy0x00aZ7d2ATYTvA7XVARa+tgPivZYdEI9ZzbMThWblAku22f+3OoIA0WO7WIuuX5iIJ/hM/4tLDPFFZT/WJ7rAAVAknWvVJtfhRZp0WU4A2wl3iVVp3dECeaBrn3JQtz6E= Received: from DU2PR04CA0326.eurprd04.prod.outlook.com (2603:10a6:10:2b5::31) by AS8PR08MB8369.eurprd08.prod.outlook.com (2603:10a6:20b:56c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:38 +0000 Received: from DU2PEPF00028D0A.eurprd03.prod.outlook.com (2603:10a6:10:2b5:cafe::16) by DU2PR04CA0326.outlook.office365.com (2603:10a6:10:2b5::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.16 via Frontend Transport; Tue, 22 Sep 2026 20:47:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D0A.mail.protection.outlook.com (10.167.242.170) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IL/p3aFYGQjjfdjEJ9z+B0ZEsGPuLzTiutsJaTtBYYw9asWBlyzAvl8VO80dJtN0nxLdSHd38gFvIpfBhY9z9O+1oSf+K4Wj+aeKdyTmvBu+IROFcip43FJnhrxVN7w0+jav0ljoGgHvEMDQdcWvz+16SYGyb+6j41sdWWSEo4HuQMEM1ykAgIF6qNtGeBLnkm9CK0t+EYg4H6LEqQm2aoRjxgdTmmeUVb0iIp1/cNrdb3RFssMK2+yqzc/QQthCn8Lc7I1mI76Y/PJDtwJYzHL9IRLVoWoe+RQ3RgxOpDoaxgFxHChL3+IWlcpI26qSx36AVz75UZzTQuhcItPTEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VqsaEfMmghbnjFeL209tFfTFzsYvUTuuxY8TFLKTwVg=; b=UI0z/oPMHQdUu7QQZInPlGsFsx0x+93/6oaSOHWSrBc1eXozl1TDDuRY2XpZci5MrJBpHQRxM7edECR4f9HP2htOeYoTdZAvIe+PnUQDHDCPlt0+UGdrLgh34gQdrvqnBnYOWUB7ppGbYJ5bJ0xT6gXhAhhDpLgyjpqBJ3mGa+VnutJ4akXkxtp8JLpEBykSm7lwZ71e/z1RkcqU1Xne/1y211EZX1d6w1BywYqLGjkDv+cSDcCZnD3ocZibFwZJVDKpuTDQVY/KIeTcCY6T6yA6Lot+OwlE0YCKjkrPoSDHol/XvsWEdxVTxI0xB8SY/Zci6ESkO3qDC8s7bRFbJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VqsaEfMmghbnjFeL209tFfTFzsYvUTuuxY8TFLKTwVg=; b=iKH9ZYcxdwAS7sDJwIWAmwa63KWXixAEUSuLYX7Cy0x00aZ7d2ATYTvA7XVARa+tgPivZYdEI9ZzbMThWblAku22f+3OoIA0WO7WIuuX5iIJ/hM/4tLDPFFZT/WJ7rAAVAknWvVJtfhRZp0WU4A2wl3iVVp3dECeaBrn3JQtz6E= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:04 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:04 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 16/27] drm/panthor: Add arbitration scheduler Date: Tue, 22 Sep 2026 21:45:10 +0100 Message-ID: <20260922204535.2850094-17-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0019.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2df::15) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|DU2PEPF00028D0A:EE_|AS8PR08MB8369:EE_ X-MS-Office365-Filtering-Correlation-Id: e435f10a-f9e0-4eca-a58c-08df18eabd2a X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|3023799007|5023799004|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: j4SvLczSoMaOpn9nAqsToqZ3wOW71+qDww3P80wvkb9ynnnx5z8irja8p5qO1DP+MJQklbtxGUnEPeU8uZ6kvRjfVTYSnDAlivRXZfKS3vhycEX79VfYvexmurwOyTHgpa6x+K8pRRt9pqxM7PSex+m3X7NGNV5oWqyJe4dNf8x3WQCs7nKtPtBuSfVPUt6O4QH0PeCcjQgJX6SaQ0U8xxjIUWB3p/uFHn4ruIQ8dd472aWWep7EYyYQtT5vs3Xw6k7WZ8+musKDeUaHRWHrrzUMmJ66IOrmsIq5NDgq9w6YfzoJUA4LXPfhiy3npA5AlD0S0tLnGNSCQbDJTAJZPRNRd45j9AWdScXbLmn1iwcJBJFNXVtS8+IkJGCPTDkHrSNxqMI4Dk/zT8vo92/ctOBnLnnljFwKTJFMLEiM75wmsic0LktJI6w2B6mNDFYX+UZh5dPdJkn0lnjsBSAWDYRcNqEXDewHjp4Y9cutOOD4qq5Ij3+8CwmAGydB6B8+L/g1X7HtQQ4nI81aekegWaDXJ9BiUt+j1A6+KIxg7nkVUpllL67GXhs7/m4cqTCKESTToYrtbHm30RFlAahfMbEcG4uLb1vWr94+Ll5Oyp2plQOTByWD1uWiDv/R52RB X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(3023799007)(5023799004)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: 5p+42ZB6G+gJvhjYoMDNVGoxKazG+vcecETRGqpWeqKNC0HLpSiMY8GE4lRkASVJ8yJFzul66BnTsPak+5ppgipKz+Rdi0tQx/UrAJsPQh9IWF6z+Bm5OH/tZpZazgJsjfNhHnBBqllW7MI0hlBJEf3Zm2ZjvQJJerMGlvHSzb1NOjJAfJQwD+8by7hYPUd8wq4IzEc5ptObXgPqILPlN2stwW+bD2V2kCEhqxvfdWHXuqrxuJVBdj5mbwDDczuuiVCF01AliW7uPlpMmUJdsn7oWMsomnIBLEdMitMwYutaYE6PH5CPWkbMkWUopTLUPam/BC1zh7rYqiVZLqRNeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D0A.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6aa0d34c-b2b3-436f-f396-08df18eaa8d2 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|14060799003|36860700016|82310400026|1800799024|35042699022|23010399003|10067099003|5023799004|6133799003|3023799007|56012099006|11063799006|22082099003|18002099003|13003099007; X-Microsoft-Antispam-Message-Info: 7J1asU8Xo2qQjr3f841RzF3yE2taD0ZuVI6D4cqx9tQ+I3DMi3BbB7MKu9Kaa+EDLaMM4WPqfF2Gc70gLlXNzU0pHbKDs6YDAHqHE1O1Fcv10If19+NWm96Au/QuWjnq+W4n1+1fxGu8feLngArBqsP9wk+4vZJJzBUX+ZKRIvV5o0epdiTw0c/2YVkU0V0cLzHvJq8DkZ1VHBUEiodbUo2oGh18v70n4hDy1H9FD1AlMmFg6Yor9ZiIjjn7qA/aK6QznF2O51KZ75VdMcccbvDzZmGUBLXOineq0vrHjftVbwleBCVPhveyXB1psNsz4LDq3I+rJkBjSoEbDHPqSyj08VjVuPqSRojMaQU/AVyxUyqjVEWVv2Q3xqkROhexU4OtLyDipf+v1GTl4ZK+luxQzFOg8ECnYXbOYNygVIVAxadlBFW6VRw8vB0tLDgDLTc5g2F5wq5weamTXLMVEO5aJXYM8aSkL6v6FhA7VeQILTEqCJUL7iTKNYg4Ae7GuQbWRtCZ3/WjV6jhRYK6LrL+gRdWkIMJDwEUJIV+ZoJxYaVy0XZ6Y6NK8AC1QZacljqzRVG7hZh07cTjmLCuGKfPWNFut32rllsJwnVX+oSnzH8GknHUKsgkWcBgjSVeK/QBbyaWn60uOFHs1c2qeg== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(14060799003)(36860700016)(82310400026)(1800799024)(35042699022)(23010399003)(10067099003)(5023799004)(6133799003)(3023799007)(56012099006)(11063799006)(22082099003)(18002099003)(13003099007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vPx9X0zITKrybse59QyZy1EX4DU1O18pPP29e8q5YJX7geZrdRFbOjKrGJW4ndBY+azB/LRo+P97RqMZR13tWc6ZWJbfk7iDUuX5VonmdML04g4tilWmU/vsk+LWczNVCqQAqBk0Haz3C93dFNFr7IB4oDs5oNe48Int0DScXbkoatwcS+Eu1nuFlmkcrDNi9jgZKeF7NKKugoVWopEI5hmgO+JlJlMs1SKfA661ZxEVyfM+L/nniYW0QnPVkj3XY44uaH1/WQ/WfqzGOkoinlbPsEbgiU8eAs93qRJDpeUwjLXHUoAKGv35UZ0mHqNtbw4obfeEsXJ8Irwrc3YjlJLGVinIB+VZoz0enTAAJtr7K+0skSOcWZjFGWwa6mdL6FLfy37p9F5bG49euewParR654Rlz09rMzQJ9hASUmf+6EgM32dKzBcGltZcyy+Y X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:38.3815 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e435f10a-f9e0-4eca-a58c-08df18eabd2a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D0A.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8369 Content-Type: text/plain; charset="utf-8" Add a per-partition arbitration scheduler that queues access-window GPU requests, grants the active window, asks it to stop when its lease expires, and force-closes it if it does not yield in time. An uncontended access window can retain access even after its timeslice expires. Track grant, stop and close deadlines with hrtimers so scheduler progress remains bounded. Use scheduler reset work to recover from unrecoverable arbitration errors and stale timeout state. Signed-off-by: Karunika Choo --- v1: - Move grant, stop and close operations from workqueues into IRQ-safe paths. Retains work for scheduler recovery. - Add closing phase and timer to ensure CLOSE_WINDOW completes in due time, otherwise enter recovery handling. - Rename "grant_timeout_us" to "request_timeout" and "yield_timeout_us" to "yield_timeout". Both units are now in milliseconds. - Add ABI documentation .../testing/sysfs-driver-panthor-arbitration | 18 + MAINTAINERS | 1 + drivers/gpu/drm/panthor/arbitration/Makefile | 1 + .../panthor/arbitration/panthor_arbitration.h | 12 + .../arbitration/panthor_arbitration_drv.c | 47 +- .../arbitration/panthor_arbitration_sched.c | 729 ++++++++++++++++++ .../arbitration/panthor_arbitration_sched.h | 39 + 7 files changed, 843 insertions(+), 4 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-driver-panthor-arbitrat= ion create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_arbitration= _sched.c create mode 100644 drivers/gpu/drm/panthor/arbitration/panthor_arbitration= _sched.h diff --git a/Documentation/ABI/testing/sysfs-driver-panthor-arbitration b/D= ocumentation/ABI/testing/sysfs-driver-panthor-arbitration new file mode 100644 index 0000000000000..fbd21270a2412 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-panthor-arbitration @@ -0,0 +1,18 @@ +What: /sys/module/panthor_arbitration/parameters/request_timeout +Date: September 2026 +KernelVersion: 7.2.0 +Contact: Arm Ltd. +Description: + Controls how long, in milliseconds, the arbitration scheduler + allows an access window to keep the GPU before asking it to + yield when another access window is waiting. + +What: /sys/module/panthor_arbitration/parameters/yield_timeout +Date: September 2026 +KernelVersion: 7.2.0 +Contact: Arm Ltd. +Description: + Controls how long, in milliseconds, the arbitration scheduler + waits for an access window to yield the GPU after a stop request. + If the timeout expires, the scheduler force-closes the access + window. diff --git a/MAINTAINERS b/MAINTAINERS index 377156650580c..af7da4c08bf8a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2324,6 +2324,7 @@ M: Liviu Dudau L: dri-devel@lists.freedesktop.org S: Supported T: git https://gitlab.freedesktop.org/drm/misc/kernel.git +F: Documentation/ABI/testing/sysfs-driver-panthor-arbitration F: Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-*.yaml F: Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml F: drivers/gpu/drm/ci/xfails/panthor* diff --git a/drivers/gpu/drm/panthor/arbitration/Makefile b/drivers/gpu/drm= /panthor/arbitration/Makefile index 2d2684321d978..22ed68948fee3 100644 --- a/drivers/gpu/drm/panthor/arbitration/Makefile +++ b/drivers/gpu/drm/panthor/arbitration/Makefile @@ -4,6 +4,7 @@ obj-$(CONFIG_DRM_PANTHOR_ARBITRATION) +=3D panthor_arbitration.o panthor_arbitration-y :=3D \ panthor_arbitration_drv.o \ + panthor_arbitration_sched.o \ panthor_partition_control.o \ panthor_resource_group.o =20 diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index dfeab1b078d06..eeae8219b2894 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -6,8 +6,10 @@ =20 #include #include +#include =20 struct device; +struct panthor_arbitration_sched; struct panthor_partition_control; struct panthor_resource_group; =20 @@ -31,15 +33,25 @@ struct panthor_arbitration { /** @dev: Device pointer */ struct device *dev; =20 + /** @tearing_down: Driver remove in progress */ + bool tearing_down; + /** @pc: Pointer array to partition control data */ struct panthor_partition_control *pc[AM_ARB_MAX_PC_COUNT]; =20 /** @rg: Pointer array to resource group data */ struct panthor_resource_group *rg[AM_ARB_MAX_RG_COUNT]; + + /** @sched: Pointer to scheduler data. 1 sched per partition */ + struct panthor_arbitration_sched *sched[AM_ARB_MAX_PC_COUNT]; }; =20 int panthor_arbitration_parse_resource(struct device *dev, const struct fwnode_handle *child, struct panthor_arbitration_resource *res); =20 +int panthor_arbitration_on_grant(struct panthor_arbitration *adev, u8 aw_i= d); +int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id= ); +int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d); + #endif diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index a1068a2c78f1a..2d0c8d95f1abd 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -11,6 +11,7 @@ #include =20 #include "panthor_arbitration.h" +#include "panthor_arbitration_sched.h" #include "panthor_partition_control.h" #include "panthor_resource_group.h" =20 @@ -56,6 +57,13 @@ static int panthor_arbitration_runtime_suspend(struct de= vice *dev) struct panthor_arbitration *adev =3D dev_get_drvdata(dev); int ret =3D 0; =20 + if (adev->tearing_down) + return 0; + + ret =3D panthor_arbitration_sched_suspend(adev); + if (ret) + return ret; + ret =3D panthor_resource_group_suspend(adev); if (ret) return ret; @@ -80,6 +88,26 @@ static int panthor_arbitration_runtime_resume(struct dev= ice *dev) if (ret) return ret; =20 + ret =3D panthor_arbitration_sched_resume(adev); + if (ret) + return ret; + + return 0; +} + +/* Arbiter to AW events */ +int panthor_arbitration_on_grant(struct panthor_arbitration *adev, u8 aw_i= d) +{ + return 0; +} + +int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id) +{ + return 0; +} + +int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d) +{ return 0; } =20 @@ -116,6 +144,10 @@ static int panthor_arbitration_probe(struct platform_d= evice *pdev) if (ret) goto err_term_rg; =20 + ret =3D panthor_arbitration_sched_init(adev); + if (ret) + goto err_term_sched; + ret =3D of_platform_populate(dev->of_node, NULL, NULL, dev); if (ret) goto err_depopulate; @@ -129,6 +161,8 @@ static int panthor_arbitration_probe(struct platform_de= vice *pdev) =20 err_depopulate: of_platform_depopulate(dev); +err_term_sched: + panthor_arbitration_sched_term(adev); err_term_rg: panthor_resource_group_cancel_work(adev); panthor_resource_group_term(adev); @@ -151,15 +185,20 @@ static void panthor_arbitration_remove(struct platfor= m_device *pdev) dev_warn(adev->dev, "failed to resume during remove: %d", ret); =20 of_platform_depopulate(adev->dev); - panthor_resource_group_cancel_work(adev); =20 if (ret >=3D 0) { + adev->tearing_down =3D true; + + panthor_arbitration_sched_term(adev); + panthor_resource_group_cancel_work(adev); panthor_resource_group_term(adev); panthor_partition_control_term(adev); - pm_runtime_put_noidle(adev->dev); + pm_runtime_put_sync_suspend(adev->dev); + } else { + panthor_arbitration_sched_cancel(adev); + panthor_resource_group_cancel_work(adev); + pm_runtime_set_suspended(adev->dev); } - - pm_runtime_set_suspended(adev->dev); } =20 static const struct dev_pm_ops panthor_arbitration_pm_ops =3D { diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= c b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c new file mode 100644 index 0000000000000..41f06af92ce0c --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c @@ -0,0 +1,729 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include +#include +#include + +#include "panthor_arbitration.h" +#include "panthor_arbitration_sched.h" +#include "panthor_resource_group.h" + +static u64 request_timeout =3D 1 * MSEC_PER_SEC; +static u64 yield_timeout =3D 1 * MSEC_PER_SEC; + +module_param(request_timeout, ullong, 0644); +MODULE_PARM_DESC(request_timeout, "Time the GPU will be granted to the AW = in milliseconds."); + +module_param(yield_timeout, ullong, 0644); +MODULE_PARM_DESC(yield_timeout, "Time, in milliseconds, within which the A= W must yield the GPU."); + +enum arbitration_sched_phase { + ARB_SCHED_PHASE_IDLE =3D 0, + ARB_SCHED_PHASE_GRANTING, + ARB_SCHED_PHASE_GRANTED, + ARB_SCHED_PHASE_STOPPING, + ARB_SCHED_PHASE_CLOSING, + ARB_SCHED_PHASE_LOST, +}; + +struct panthor_arbitration_timer { + /** @timer: High-resolution timer */ + struct hrtimer timer; + + /** @epoch: The lease generation for which the timer was triggered */ + u32 epoch; +}; + +struct panthor_arbitration_work { + /** @work: Work struct */ + struct work_struct work; + + /** @aw_id: Window for which the work was queued */ + u8 aw_id; + + /** @epoch: The lease generation for which the work was queued */ + u32 epoch; +}; + +struct panthor_arbitration_sched { + /** @dev: Device pointer */ + struct device *dev; + + /** @name: Scheduler name */ + char *name; + + /** @waitqueue: Event wait queue. Not IRQ safe */ + wait_queue_head_t waitqueue; + + /** @lock: Protects scheduler state */ + spinlock_t lock; + + /** @queue: Pending request FIFO */ + DECLARE_KFIFO(queue, u8, 16); + + /** @queued_mask: Mask of currently queued AWs */ + DECLARE_BITMAP(queued_mask, AM_ARB_MAX_AW_COUNT); + + /** @active_aw_id: Currently active AW. Can be -1 */ + s8 active_aw_id; + + /** @phase: Current scheduling phase */ + enum arbitration_sched_phase phase; + + /** @epoch: Current active lease generation */ + u32 epoch; + + /** @wq: Scheduler workqueue to dispatch events */ + struct workqueue_struct *wq; + + /** @reset_work: Work to reset the scheduler */ + struct panthor_arbitration_work reset_work; + + /** @grant_timer: Timer to indicate grant window has lapsed */ + struct panthor_arbitration_timer grant_timer; + + /** @stop_timer: Timer to indicate yield window has lapsed */ + struct panthor_arbitration_timer stop_timer; + + /** @close_timer: Timer to indicate close window has lapsed */ + struct panthor_arbitration_timer close_timer; + + /** @disabled: Scheduler disabled. No further scheduling can happen */ + u32 disabled; + + /** + * @grant_previously_expired: Grant period previously expired but was + * not asked to stop + */ + bool grant_previously_expired; +}; + +static int arb_sched_on_stopped_locked(struct panthor_arbitration_sched *s= ched, u8 aw_id); + +static inline struct panthor_arbitration * +to_adev(struct panthor_arbitration_sched *sched) +{ + return dev_get_drvdata(sched->dev); +} + +static inline struct panthor_arbitration_work *to_work(struct work_struct = *w) +{ + return container_of(w, struct panthor_arbitration_work, work); +} + +static bool arb_sched_phase_reached(struct panthor_arbitration_sched *sche= d, + enum arbitration_sched_phase phase) +{ + guard(spinlock_irqsave)(&sched->lock); + + return sched->phase =3D=3D phase; +} + +/* This method is not IRQ safe as it sleeps. */ +static int arb_sched_wait_phase(struct panthor_arbitration_sched *sched, + enum arbitration_sched_phase phase, + u64 timeout_ms) +{ + if (!wait_event_timeout( + sched->waitqueue, arb_sched_phase_reached(sched, phase), + msecs_to_jiffies(timeout_ms))) { + + if (!arb_sched_phase_reached(sched, phase)) + return -ETIMEDOUT; + } + + return 0; +} + +static void arb_sched_queue_work(struct panthor_arbitration_sched *sched, + struct panthor_arbitration_work *work) +{ + lockdep_assert_held(&sched->lock); + + work->aw_id =3D sched->active_aw_id; + work->epoch =3D sched->epoch; + queue_work(sched->wq, &work->work); +} + +static int __arb_sched_stop_locked(struct panthor_arbitration_sched *sched) +{ + int ret; + + lockdep_assert_held(&sched->lock); + + ret =3D panthor_arbitration_on_stop(to_adev(sched), sched->active_aw_id); + if (ret) { + dev_err(sched->dev, "%s: Failed to send yield to AW%u", + sched->name, sched->active_aw_id); + + arb_sched_queue_work(sched, &sched->reset_work); + } + + return ret; +} + +static void arb_sched_stop_locked(struct panthor_arbitration_sched *sched) +{ + int ret; + + lockdep_assert_held(&sched->lock); + + ret =3D __arb_sched_stop_locked(sched); + if (!ret) { + if (sched->phase !=3D ARB_SCHED_PHASE_STOPPING) { + dev_warn(sched->dev, "%s: Stop ACKED when not yielding", + sched->name); + return; + } + + sched->stop_timer.epoch =3D sched->epoch; + hrtimer_start(&sched->stop_timer.timer, + ms_to_ktime(yield_timeout), HRTIMER_MODE_REL); + } +} + +static void arb_sched_grant_locked(struct panthor_arbitration_sched *sched) +{ + int ret; + + lockdep_assert_held(&sched->lock); + + ret =3D panthor_arbitration_on_grant(to_adev(sched), sched->active_aw_id); + if (!ret) { + if (sched->phase !=3D ARB_SCHED_PHASE_GRANTING) { + dev_warn(sched->dev, "%s: Grant ACKED when not granting", + sched->name); + return; + } + + if (sched->disabled) { + sched->phase =3D ARB_SCHED_PHASE_STOPPING; + arb_sched_stop_locked(sched); + } else { + sched->phase =3D ARB_SCHED_PHASE_GRANTED; + + sched->grant_timer.epoch =3D sched->epoch; + hrtimer_start(&sched->grant_timer.timer, + ms_to_ktime(request_timeout), + HRTIMER_MODE_REL); + } + + wake_up_all(&sched->waitqueue); + } else if (ret < 0) { + dev_err(sched->dev, "%s: Failed to grant access to AW%u", + sched->name, sched->active_aw_id); + + arb_sched_queue_work(sched, &sched->reset_work); + } +} + +static int __arb_sched_close_locked(struct panthor_arbitration_sched *sche= d) +{ + int ret; + + lockdep_assert_held(&sched->lock); + + ret =3D panthor_arbitration_on_close(to_adev(sched), sched->active_aw_id); + if (ret < 0) { + dev_err(sched->dev, "%s: Failed to close AW%u", sched->name, + sched->active_aw_id); + + arb_sched_queue_work(sched, &sched->reset_work); + } + + return ret; +} + +static void arb_sched_close_locked(struct panthor_arbitration_sched *sched) +{ + int ret; + + lockdep_assert_held(&sched->lock); + + ret =3D __arb_sched_close_locked(sched); + if (!ret) { + sched->close_timer.epoch =3D sched->epoch; + hrtimer_start(&sched->close_timer.timer, + ms_to_ktime(yield_timeout), HRTIMER_MODE_REL); + } else if (ret > 0) { + /* + * Window alread closed. We need to manually transition the + * phase back to IDLE. + */ + arb_sched_on_stopped_locked(sched, sched->active_aw_id); + } +} + +static void arb_sched_request_stop_locked(struct panthor_arbitration_sched= *sched) +{ + lockdep_assert_held(&sched->lock); + + if (sched->phase !=3D ARB_SCHED_PHASE_GRANTED) + return; + + if (sched->active_aw_id < 0) + return; + + /* + * In the event of a single requesting AW, let it continue to + * lease the GPU until another request comes in. + */ + if (!sched->disabled && kfifo_is_empty(&sched->queue)) { + sched->grant_previously_expired =3D true; + return; + } + + sched->phase =3D ARB_SCHED_PHASE_STOPPING; + arb_sched_stop_locked(sched); + + wake_up_all(&sched->waitqueue); +} + +static void arb_sched_request_stop(struct panthor_arbitration_sched *sched) +{ + guard(spinlock_irqsave)(&sched->lock); + + arb_sched_request_stop_locked(sched); +} + +static void arb_sched_force_close_locked(struct panthor_arbitration_sched = *sched) +{ + lockdep_assert_held(&sched->lock); + + if (sched->phase =3D=3D ARB_SCHED_PHASE_IDLE) + return; + + if (sched->active_aw_id < 0) + return; + + sched->phase =3D ARB_SCHED_PHASE_LOST; + + arb_sched_close_locked(sched); + + wake_up_all(&sched->waitqueue); +} + +static void arb_sched_force_close(struct panthor_arbitration_sched *sched) +{ + scoped_guard(spinlock_irqsave, &sched->lock) + arb_sched_force_close_locked(sched); + + arb_sched_wait_phase(sched, ARB_SCHED_PHASE_IDLE, + request_timeout + yield_timeout); +} + +static int arb_sched_next_locked(struct panthor_arbitration_sched *sched) +{ + u8 aw_id; + + lockdep_assert_held(&sched->lock); + + if (sched->disabled) + return 0; + + /* already have a running aw */ + if (sched->active_aw_id >=3D 0) + return 0; + + /* nothing to schedule */ + if (kfifo_is_empty(&sched->queue)) + return 0; + + if (!kfifo_get(&sched->queue, &aw_id)) { + dev_warn(sched->dev, "%s: queue unexpectedly empty", + sched->name); + return -EINVAL; + } + + clear_bit(aw_id, sched->queued_mask); + + sched->active_aw_id =3D aw_id; + sched->epoch++; + sched->phase =3D ARB_SCHED_PHASE_GRANTING; + + arb_sched_grant_locked(sched); + + wake_up_all(&sched->waitqueue); + + return 0; +} + +static int arb_sched_next(struct panthor_arbitration_sched *sched) +{ + guard(spinlock_irqsave)(&sched->lock); + + return arb_sched_next_locked(sched); +} + +static void arb_sched_reset_work(struct work_struct *work) +{ + struct panthor_arbitration_work *w =3D to_work(work); + struct panthor_arbitration_sched *sched =3D + container_of(w, struct panthor_arbitration_sched, reset_work); + + guard(spinlock_irqsave)(&sched->lock); + if (sched->epoch !=3D w->epoch) + return; + + if (sched->active_aw_id !=3D w->aw_id) + return; + + dev_warn(sched->dev, "%s: scheduler reset. active_aw=3D%u", + sched->name, sched->active_aw_id); + + arb_sched_force_close_locked(sched); +} + +static enum hrtimer_restart +panthor_arbitration_sched_on_stop_timeout(struct hrtimer *timer) +{ + struct panthor_arbitration_timer *atmr =3D container_of( + timer, struct panthor_arbitration_timer, timer); + struct panthor_arbitration_sched *sched =3D container_of( + atmr, struct panthor_arbitration_sched, stop_timer); + + guard(spinlock_irqsave)(&sched->lock); + + if (sched->epoch !=3D atmr->epoch || + sched->phase !=3D ARB_SCHED_PHASE_STOPPING) + return HRTIMER_NORESTART; + + dev_warn(sched->dev, + "%s: AW%d failed to stop in time. Force closing...", + sched->name, sched->active_aw_id); + arb_sched_force_close_locked(sched); + + return HRTIMER_NORESTART; +} + +static enum hrtimer_restart +panthor_arbitration_sched_on_grant_timeout(struct hrtimer *timer) +{ + struct panthor_arbitration_timer *atmr =3D container_of( + timer, struct panthor_arbitration_timer, timer); + struct panthor_arbitration_sched *sched =3D container_of( + atmr, struct panthor_arbitration_sched, grant_timer); + + guard(spinlock_irqsave)(&sched->lock); + + if (sched->epoch !=3D atmr->epoch) + return HRTIMER_NORESTART; + + arb_sched_request_stop_locked(sched); + + return HRTIMER_NORESTART; +} + +static enum hrtimer_restart +panthor_arbitration_sched_on_close_timeout(struct hrtimer *timer) +{ + struct panthor_arbitration_timer *atmr =3D container_of( + timer, struct panthor_arbitration_timer, timer); + struct panthor_arbitration_sched *sched =3D container_of( + atmr, struct panthor_arbitration_sched, close_timer); + + guard(spinlock_irqsave)(&sched->lock); + + if (sched->epoch !=3D atmr->epoch) + return HRTIMER_NORESTART; + + if (sched->phase !=3D ARB_SCHED_PHASE_CLOSING && + sched->phase !=3D ARB_SCHED_PHASE_LOST) + return HRTIMER_NORESTART; + + dev_warn(sched->dev, + "%s: AW%d failed to close in time. Resetting scheduler...", + sched->name, sched->active_aw_id); + + arb_sched_queue_work(sched, &sched->reset_work); + + return HRTIMER_NORESTART; +} + +int panthor_arbitration_sched_on_request(struct panthor_arbitration_sched = *sched, u8 aw_id) +{ + guard(spinlock_irqsave)(&sched->lock); + + if (aw_id >=3D AM_ARB_MAX_AW_COUNT) + return -EINVAL; + + if (test_bit(aw_id, sched->queued_mask) || + (sched->active_aw_id =3D=3D aw_id && + sched->phase !=3D ARB_SCHED_PHASE_STOPPING)) { + dev_warn(sched->dev, "%s: AW%u already in request queue.", + sched->name, aw_id); + return -EEXIST; + } + + /* Always put onto queue */ + if (!kfifo_put(&sched->queue, aw_id)) { + dev_err(sched->dev, "%s: request queue unexpectedly full", + sched->name); + return -ENOSPC; + } + set_bit(aw_id, sched->queued_mask); + + /* No active AW, schedule next AW */ + if (sched->active_aw_id < 0) + return arb_sched_next_locked(sched); + + /* + * Grant timer for the current AW has previously expired, request it to + * yield the GPU. + */ + if (sched->grant_previously_expired) + arb_sched_request_stop_locked(sched); + + return 0; +} + +int panthor_arbitration_sched_on_idle(struct panthor_arbitration_sched *sc= hed, u8 aw_id) +{ + guard(spinlock_irqsave)(&sched->lock); + + if (aw_id >=3D AM_ARB_MAX_AW_COUNT) + return -EINVAL; + + if (sched->active_aw_id !=3D aw_id) + return 0; + + if (sched->phase !=3D ARB_SCHED_PHASE_GRANTED && + sched->phase !=3D ARB_SCHED_PHASE_STOPPING) + return 0; + + sched->phase =3D ARB_SCHED_PHASE_CLOSING; + arb_sched_close_locked(sched); + + return 0; +} + +static int arb_sched_on_stopped_locked(struct panthor_arbitration_sched *s= ched, u8 aw_id) +{ + if (aw_id >=3D AM_ARB_MAX_AW_COUNT) + return -EINVAL; + + if (sched->phase =3D=3D ARB_SCHED_PHASE_IDLE) + return 0; + + if (sched->active_aw_id !=3D aw_id) + return 0; + + /* retire old lease */ + sched->epoch++; + + sched->grant_previously_expired =3D false; + sched->active_aw_id =3D -1; + sched->phase =3D ARB_SCHED_PHASE_IDLE; + + wake_up_all(&sched->waitqueue); + + return arb_sched_next_locked(sched); +} + +int panthor_arbitration_sched_on_stopped(struct panthor_arbitration_sched = *sched, u8 aw_id) +{ + guard(spinlock_irqsave)(&sched->lock); + + return arb_sched_on_stopped_locked(sched, aw_id); +} + +static void arbitration_sched_disable_work(struct panthor_arbitration_sche= d *sched) +{ + disable_work_sync(&sched->reset_work.work); +} + +void panthor_arbitration_sched_cancel(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_arbitration_sched *sched =3D adev->sched[i]; + + if (!sched) + continue; + + panthor_arbitration_sched_disable_set(sched, ARB_SCHED_DISABLE_PM); + hrtimer_cancel(&sched->grant_timer.timer); + hrtimer_cancel(&sched->stop_timer.timer); + hrtimer_cancel(&sched->close_timer.timer); + arbitration_sched_disable_work(sched); + } +} + +static void arbitration_sched_term(struct panthor_arbitration_sched *sched) +{ + panthor_arbitration_sched_disable_set(sched, ARB_SCHED_DISABLE_TERM); + + WARN_ON(panthor_arbitration_sched_stop(sched)); + + arbitration_sched_disable_work(sched); +} + +static int arbitration_sched_init(struct panthor_arbitration *adev, int i) +{ + struct device *dev =3D adev->dev; + struct panthor_arbitration_sched *sched; + + sched =3D devm_kzalloc(dev, sizeof(*sched), GFP_KERNEL); + if (!sched) + return -ENOMEM; + + sched->name =3D devm_kasprintf(dev, GFP_KERNEL, "sched%d", i); + sched->dev =3D dev; + + sched->wq =3D devm_alloc_ordered_workqueue(dev, "%s-wq", 0, sched->name); + if (!sched->wq) + return -ENOMEM; + + INIT_WORK(&sched->reset_work.work, arb_sched_reset_work); + + init_waitqueue_head(&sched->waitqueue); + + spin_lock_init(&sched->lock); + INIT_KFIFO(sched->queue); + sched->active_aw_id =3D -1; + sched->phase =3D ARB_SCHED_PHASE_IDLE; + + hrtimer_setup(&sched->grant_timer.timer, + panthor_arbitration_sched_on_grant_timeout, + CLOCK_MONOTONIC, HRTIMER_MODE_REL); + hrtimer_setup(&sched->stop_timer.timer, + panthor_arbitration_sched_on_stop_timeout, + CLOCK_MONOTONIC, HRTIMER_MODE_REL); + hrtimer_setup(&sched->close_timer.timer, + panthor_arbitration_sched_on_close_timeout, + CLOCK_MONOTONIC, HRTIMER_MODE_REL); + + adev->sched[i] =3D sched; + + return 0; +} + +void panthor_arbitration_sched_term(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_arbitration_sched *sched =3D adev->sched[i]; + + if (!sched) + continue; + + arbitration_sched_term(sched); + } +} + +int panthor_arbitration_sched_init(struct panthor_arbitration *adev) +{ + + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + int ret =3D arbitration_sched_init(adev, i); + + if (ret =3D=3D -ENODEV) + continue; + + if (ret) + return ret; + } + + return 0; +} + +int panthor_arbitration_sched_suspend(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_arbitration_sched *sched =3D adev->sched[i]; + int ret; + + if (!sched) + continue; + + panthor_arbitration_sched_disable_set(sched, ARB_SCHED_DISABLE_PM); + ret =3D panthor_arbitration_sched_stop(sched); + if (ret) { + panthor_arbitration_sched_disable_clear( + sched, ARB_SCHED_DISABLE_PM); + return ret; + } + } + + return 0; +} + +int panthor_arbitration_sched_resume(struct panthor_arbitration *adev) +{ + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + struct panthor_arbitration_sched *sched =3D adev->sched[i]; + int ret; + + if (!sched) + continue; + + panthor_arbitration_sched_disable_clear(sched, ARB_SCHED_DISABLE_PM); + ret =3D panthor_arbitration_sched_start(sched); + if (ret) + return ret; + } + + return 0; +} + +/** + * panthor_arbitration_sched_stop - Stop active aw and pause scheduler + * + * @sched: Pointer to arbitration scheduler + * + * This method is not IRQ safe as it waits for on_stopped() to be called. + */ +int panthor_arbitration_sched_stop(struct panthor_arbitration_sched *sched) +{ + int ret; + + arb_sched_request_stop(sched); + + /* + * Provisionally waiting for up to 2x yield_timeout, but path may + * include time taken for panthor_arbitration_on_grant() to complete + * if sched_request_stop() is called while in the GRANTING state. + * + * Realistically, if granting takes more than yield_timeout, HW is in + * bad state either way. Best continue and stop the scheduler. + */ + ret =3D arb_sched_wait_phase(sched, ARB_SCHED_PHASE_IDLE, + request_timeout + yield_timeout); + if (ret) + arb_sched_force_close(sched); + + /* Should no longer have any further activity. Cancel timer. */ + hrtimer_cancel(&sched->grant_timer.timer); + hrtimer_cancel(&sched->stop_timer.timer); + hrtimer_cancel(&sched->close_timer.timer); + flush_workqueue(sched->wq); + + scoped_guard(spinlock_irqsave, &sched->lock) + if (sched->phase =3D=3D ARB_SCHED_PHASE_IDLE) + return 0; + + return ret; +} + +int panthor_arbitration_sched_start(struct panthor_arbitration_sched *sche= d) +{ + return arb_sched_next(sched); +} + +void panthor_arbitration_sched_disable_set(struct panthor_arbitration_sche= d *sched, + enum panthor_arb_sched_disable_reason reason) +{ + guard(spinlock_irqsave)(&sched->lock); + + sched->disabled |=3D BIT(reason); +} + +void panthor_arbitration_sched_disable_clear(struct panthor_arbitration_sc= hed *sched, + enum panthor_arb_sched_disable_reason reason) +{ + guard(spinlock_irqsave)(&sched->lock); + + sched->disabled &=3D ~BIT(reason); +} diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= h b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h new file mode 100644 index 0000000000000..f1f50316a2fff --- /dev/null +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_ARBITRATION_SCHED_H__ +#define __PANTHOR_ARBITRATION_SCHED_H__ + +#include + +struct panthor_arbitration; +struct panthor_arbitration_sched; + +enum panthor_arb_sched_disable_reason { + /** @ARB_SCHED_DISABLE_PM: scheduler disabled due to PM suspend */ + ARB_SCHED_DISABLE_PM =3D 0, + + /** @ARB_SCHED_DISABLE_TERM: scheduler disabled for termination */ + ARB_SCHED_DISABLE_TERM, +}; + +int panthor_arbitration_sched_init(struct panthor_arbitration *adev); +void panthor_arbitration_sched_term(struct panthor_arbitration *adev); +void panthor_arbitration_sched_cancel(struct panthor_arbitration *adev); + +int panthor_arbitration_sched_suspend(struct panthor_arbitration *adev); +int panthor_arbitration_sched_resume(struct panthor_arbitration *adev); + +int panthor_arbitration_sched_stop(struct panthor_arbitration_sched *sched= ); +int panthor_arbitration_sched_start(struct panthor_arbitration_sched *sche= d); + +void panthor_arbitration_sched_disable_set(struct panthor_arbitration_sche= d *sched, + enum panthor_arb_sched_disable_reason reason); +void panthor_arbitration_sched_disable_clear(struct panthor_arbitration_sc= hed *sched, + enum panthor_arb_sched_disable_reason reason); + +int panthor_arbitration_sched_on_request(struct panthor_arbitration_sched = *sched, u8 aw_id); +int panthor_arbitration_sched_on_idle(struct panthor_arbitration_sched *sc= hed, u8 aw_id); +int panthor_arbitration_sched_on_stopped(struct panthor_arbitration_sched = *sched, u8 aw_id); + +#endif --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013069.outbound.protection.outlook.com [40.107.159.69]) (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 8BCC643934D for ; Tue, 22 Sep 2026 20:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.69 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110079; cv=fail; b=C+QJZAOzyB9H/cR/hO/EfMldVJvtOLbHbq4dgcGkTLEWCqWMLjRTiTfj55sTtB0J1q+AzAFm5fOtQbrcmdM0JM91ks7VpAT4OoHIYH9dcSEKFsPFQmlv0nhkZpUTOFi1dt4RpchMB9t1tRqBxkM5eAWxj/7KIS+5TztP//blrrw= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110079; c=relaxed/simple; bh=WlxPhsJHxWipzZR76v5/qApel3LrkG9rDpF99ALgn6w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=t6971ZYTRonVGh+Nd8w+UqKFPuljjIIj8Rr9JARVQKnhyAYdFJ/70v//TWFCqeYx2aZIE6GcRUpAw8hIEcIrv0HCC1h7SyEyUhjKVWPAb7BVoYiurgwz6iPn29YIf0vhkYuveDFrUV1JcypFOEnW2L6O3lZeGUySfPzvxZIAimc= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=IjSnJARH; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=IjSnJARH; arc=fail smtp.client-ip=40.107.159.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="IjSnJARH"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="IjSnJARH" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ymLclv2mPGOzVcjhwEpHI8g2JkLnUjew0CFOmYc1IRgtCDpwY1hn/mEIs/6qhEZA9yuoTi7HEK2AqZ7z0cgikX5F+4FnSSnhoHOqItFoxEFpWdpoxNI18u8nFqQARzzvnqT9uzl4Pu3UBqxlfPsnad3+2/ReknlZyxN5+y+p2j8JeYQGqXO23ZgiKlc29jrGqIxjaa6j51VZU6t8OkALkJd9uUyKd9SvaOJ+0IaUQc7hIz7chF009MIs6th+0/I6+PP6icQMMDq9++oocCt3ZJfB6SxbX1tEBI7PDWMa3FQDlNeqc0+kUk9ZoNdAk/hZQ5WjB6qYZWZYs6D/K4MGMw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IzeGUNMReTPebAjte1WClRekkaq00b78t92YFAi7B3E=; b=xyL0NiD8dEjCJbzK27SWxAqjdPKIrwrYwp/YLDrD3Nm56fYpp1asdyCVIXJzUMrkJA2ustjx2/lPLGeXW3hX1a9gQDvJ3B+lUhIgJku50VQ1zbzp+W4MDwOEJpukAFrgsG24wozkC18vvCQNeAo/3Zvpc5802XM12C6IgWr0sjhJP7lR5wQ/mEPgUF7jFyOnSmXk6JUyUiWKlaBr2gHGiQlh+ufTXxg/epbksgbAttQzONkFrpf8HvtuP7fWMSy72NxTYaAv1G1t1Vpmxvj+xvJOFZMSeNctC99gmdD2pgABAxpGryO/ThKFjvjECFg4XGM/Dkat0XoFFHBZ31Fg2w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IzeGUNMReTPebAjte1WClRekkaq00b78t92YFAi7B3E=; b=IjSnJARHnY/Shq1k9Y09O8hsrVIoMqUGDiAquXA7ebjy42mzDasIpsN+R0zvBD65ot+0yL8q3r1q8AkhRsYAkToF2qNGFIFKcdB5D/XPruYaq+XvU2umEzIKq+OQouzw5Kdnv4ve9MS0fww4nEdr34L7jVTI7R54P9vgyOd3oWY= Received: from GVZP280CA0089.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:275::9) by MI9PR08MB808160.eurprd08.prod.outlook.com (2603:10a6:290:bd::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:41 +0000 Received: from WA1PEPF000099CE.eurprd04.prod.outlook.com (2603:10a6:150:275:cafe::82) by GVZP280CA0089.outlook.office365.com (2603:10a6:150:275::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by WA1PEPF000099CE.mail.protection.outlook.com (10.167.242.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c9o4+qm422ADNRv9VQ7bJVyHJXp1lavDtsIofunPPWjLv07CdMyt1si9ep/SD/vD3/hJKj3JVo30pfj1ZXXX4WUHzdJgUlmB6HVsO4evxg+F/FQTOp+Ewx2F6/pFwJSGYImqpQv/2uSH0qshldIQuJ/lzpWAJeMya3gcX0A/sAKaJQRYqNQe83ICWuN2wkZGtl6JimLMs/shJNeYcQ8IeSgIlHZl5RrHwHYWVyNEWUX1WSrzmXVQbT4fd6zPuP9r5fLi2hs/ETy/4Jk+Jrwg4NtVJDNtM8DIKlsrecBac2/JgMePnhKd4Vcm0jhhfoTInl6E5ToiEBkmaQUKcBmpcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IzeGUNMReTPebAjte1WClRekkaq00b78t92YFAi7B3E=; b=aghjV1NyAO7bXL2MLrqsE1CqP3UxgeywbPEEAy8jQ9ttNmorz0SC+7B6NiJiiM95WGVmfruBGCEcMFPDmhuETNn3JptyKEMGLYY2qfYdI6MbBYrVzhLeRfX5SBfVk0hWxQsls3o8iSKHvchuj1/krAf/8Gh4zHKuUp0vlNu87lKt7O3A/1yXbOwucDFk1a7RdS+4NSmVXYdJLr1eWlT1dRX2qiBHP5aL8dza6Ewrxqo40MLCuix108tBHYkDEoFuEg2GsweOQ3gLcRl7DBkjV2vsYxChZR3bBXciFjlSt/5sAWAnXZZK/T1oxx4PhICOBmkEf5nQUiTuAC8ZLiH3Lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IzeGUNMReTPebAjte1WClRekkaq00b78t92YFAi7B3E=; b=IjSnJARHnY/Shq1k9Y09O8hsrVIoMqUGDiAquXA7ebjy42mzDasIpsN+R0zvBD65ot+0yL8q3r1q8AkhRsYAkToF2qNGFIFKcdB5D/XPruYaq+XvU2umEzIKq+OQouzw5Kdnv4ve9MS0fww4nEdr34L7jVTI7R54P9vgyOd3oWY= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:07 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:07 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 17/27] drm/panthor: Route arbitration events Date: Tue, 22 Sep 2026 21:45:11 +0100 Message-ID: <20260922204535.2850094-18-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0025.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2df::12) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|WA1PEPF000099CE:EE_|MI9PR08MB808160:EE_ X-MS-Office365-Filtering-Correlation-Id: 77bb45fb-796c-4d0c-4e8e-08df18eabe64 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: sPA6xk/4j0p/z4MaMG/65yXDheGKiStfG0LsYMDgqjcXgP4WG6oQ8g2FJaijXwuAyTXV5PH6bx4VwVeNPyL+WhSIcwq5eajKfzmH81wpPL/bkhuh+aAhZlW4XIOK+X2MmMnt0hpxfwCPjIk36FFfonef3AYiUCbyB6XDFbMWPga2TjIxmQMNU7dbhbm/ERepnHc0skrbZigOX6rk1neNODsj5ObVq/zlFfV/sV79jg4qCXBYGTI8xQ43PdPa/D0+BCXVnFPiSucJMG0T007MStMLIEqqlyYL3u7ERrES75lheAD+Z2FqWPurLJvarbViuDa4iu9YtGdBZ0AVqjTCyGdg7wDwCvLX2EYI1kJxku1vC1pqD/M6/n/p+w86kOfOXYYF5a++9HhAzSqF0e64gn1MhxqX7lxko1rNXpD6VwQc0VIXLtWnQYXhaaJC1yqeUMHgiqx+CuMtFg0gmeXFMlJUpeUx3ZAn5vzfs2I3bhRh4RwSIZ5dVS6THyZ2mLlzvCFl08rXzbGog37RPM+1X23HWxRa2WttnVSYsVqkF5Xw1riBwKgqDeI4acI8K8ihwXVSjwH8e3F155UIOnfs/qlhGGiZ5uPOBoCmtTtkaKxcXcojAo9z5E876+GVfonIX34ljTLGVPLaZ/XXeil7G8C9Tip9i1XVPbEUNBoCQ40= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: N6AR9ORcn5cgyegUi7i62lUqqOJKMl/UWR61ojWkIzh2lh5eDoKnTD1VyKcpZ+1P35TdVFt2k/FlZ3STpv0GoQxksq5r43+DooKcAdLY/QjGw5Hsi8y/E4HAFAYC0KsX//ikiF5jrR3sKYJWaaBmfEQVhcBPe+mu9DhiigBBeO6V/gUvJzyze2a7rxvth+6YnRW//9hqw7/5tCzwdwJ01wB8MJ3jNhJMV5/9C+o3aBdWw+WSSBSNcTgSTKgD/c1bgooXBYeKHmkGdWl4AVFjV2mbezWP4E2F3EVe07ESNCaloyWi+oJ076sNm4/k/BawC0IkEbf3Wxyf2HHmmzNSQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: WA1PEPF000099CE.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e4b60a06-fce2-4784-e37d-08df18eaaa6c X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|1800799024|82310400026|36860700016|14060799003|23010399003|376014|6133799003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: KaNr1YnVLcxl6a9PaDrdM7UZ7+eLM92RRSm6hh4b2NLkp47VBQvf5Tl+3OJ1V91X+w/CDcBaYTSUbN6hcDRXnDxDkNIZVyraniqx+588soQeIe0W5ZTjR2RaBXI62h9L+bToOFKdUrZsU49909Q8mqtHDWiN8k+ILPbFAZ+uvDObWaxlknQku9PeEYOyT/t2hAKQP6DsCfO/l7aGqwptP06ra5ZEwyx+Yy3u9qVzm9UvYNtilmZDZUWijQHY9UuYVJQH1VMwiUS81jIZxFQ2v2WpqIUJkesHZjF1Sjo9ZZ8h3kHSIgUqcK5Wxk2SvVYjfDK0oHNTc7clS+ctzUvHoTWBb37ZHrV3D2sMwAOoxiLvsUk2aWPmQKMAGToj0ZrwVLF/P8wJ+D3XhKI+EB5l//kVMILctVgJtnz2w7+SBbR54ibFRhlGOiqBWGQh1vZbe7OIapPWBa92niW7BNR0aUk0hDZP+QShp4ILsXBfQERJz7i+56YA5ik9Vie5r2sejngab3s7Kew8h9ZYc9koglQD8fyEU5q9pbFBYIJtSLHc2ao8Vq+FGH7U1OSTwcL8+GCkclO/yCPxgVV1OoynqMYdnazAWJn6sdy1HhELVs20NinTRc/SKmaMUDVMv+R7lw1Cy4evuI6c55FFvudBMH3oTDDre8GaiIHYXdJgmIUmsAzcYb1ptxqNXW8RoBPFppB+BFpO/w0A4ta7g/S21g== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(1800799024)(82310400026)(36860700016)(14060799003)(23010399003)(376014)(6133799003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yBJxXovWswbj5SMk1VXfCYN8ByXhVcoJy0bANnpIlTfKwUufXwG9ZbugwQ401ufxtyDZcSlH/jUYYHYGgpJjVwsDfsvsnaGAqxRrLFJUeoa67Ek7dga0C5tP9cQ4i1pfajeK9aJsaBJpUniSTGulRSeelulZ4F9MCh0OQod7itGHEFVUs/1V8tWRE6FmZyhDCYignHm2LvJu+Oyxe4/PAw9qcElC3hUDMyZl+R8muUoZwkO04J77V11IFfboynY7GTrn6ZzFejBd84BKVhID+lmXNszAunQ0TU3E+MJN/vFpHjPEG5AZSBDRFlXikxQ99XxPvwAdqikjw/xQ75zzhLAkBJ0onIwXG8s2XWBRSVGFUKXHWogacRwepV/WDixb0w9eelDoiTBXFT/nLp4OJzkawl/7OiRCWga+XfxUGzs4lFbiRlWq6FVO7vYHqUVx X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:40.3500 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 77bb45fb-796c-4d0c-4e8e-08df18eabe64 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: WA1PEPF000099CE.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MI9PR08MB808160 Content-Type: text/plain; charset="utf-8" Wire the resource-group, scheduler, and partition-control blocks together. Resource-group messages now feed request and idle events into the scheduler, while partition RESET_DONE from a YIELD_DONE or CLOSE_WINDOW reports the active access window as stopped. Add the arbiter-to-window callbacks used by the scheduler to grant, yield, and close partition windows. Signed-off-by: Karunika Choo --- v1: - Notify arbitration scheduler when RESET_DONE completes due to close_window, as well as due to yield by Panthor FW. .../panthor/arbitration/panthor_arbitration.h | 6 ++++ .../arbitration/panthor_arbitration_drv.c | 28 +++++++++++++++++-- .../arbitration/panthor_partition_control.c | 9 ++++++ .../arbitration/panthor_resource_group.c | 4 +-- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index eeae8219b2894..149221333eb1e 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -50,6 +50,12 @@ int panthor_arbitration_parse_resource(struct device *de= v, const struct fwnode_handle *child, struct panthor_arbitration_resource *res); =20 +/* AW to Arbiter events */ +int panthor_arbitration_on_request(struct panthor_arbitration *adev, u8 aw= _id); +int panthor_arbitration_on_idle(struct panthor_arbitration *adev, u8 aw_id= ); +int panthor_arbitration_on_stopped(struct panthor_arbitration *adev, u8 aw= _id); + +/* Arbiter to AW events */ int panthor_arbitration_on_grant(struct panthor_arbitration *adev, u8 aw_i= d); int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id= ); int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d); diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index 2d0c8d95f1abd..723cf605e16a3 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -95,20 +95,42 @@ static int panthor_arbitration_runtime_resume(struct de= vice *dev) return 0; } =20 +/* AW to Arbiter events */ +int panthor_arbitration_on_request(struct panthor_arbitration *adev, u8 aw= _id) +{ + /* TODO: AW to PC assignment */ + return panthor_arbitration_sched_on_request(adev->sched[0], aw_id); +} + +int panthor_arbitration_on_idle(struct panthor_arbitration *adev, u8 aw_id) +{ + /* TODO: AW to PC assignment */ + return panthor_arbitration_sched_on_idle(adev->sched[0], aw_id); +} + +int panthor_arbitration_on_stopped(struct panthor_arbitration *adev, u8 aw= _id) +{ + /* TODO: AW to PC assignment */ + return panthor_arbitration_sched_on_stopped(adev->sched[0], aw_id); +} + /* Arbiter to AW events */ int panthor_arbitration_on_grant(struct panthor_arbitration *adev, u8 aw_i= d) { - return 0; + /* TODO: AW to PC assignment */ + return panthor_partition_control_open_window(adev->pc[0], aw_id); } =20 int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id) { - return 0; + /* TODO: AW to PC assignment */ + return panthor_partition_control_yield_now(adev->pc[0]); } =20 int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d) { - return 0; + /* TODO: AW to PC assignment */ + return panthor_partition_control_close_window(adev->pc[0]); } =20 static int panthor_arbitration_probe(struct platform_device *pdev) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.= c b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c index e6fbf5e58b51a..95c26015cb637 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c @@ -163,13 +163,22 @@ static int window_open(struct panthor_partition_contr= ol *pc, u8 aw_id) =20 static void partition_handle_reset_done(struct panthor_partition_control *= pc) { + bool notify_stopped =3D false; + int aw_id; + scoped_guard(spinlock_irqsave, &pc->lock) { + aw_id =3D pc->current_aw; pc->current_aw =3D -1; =20 /* RESET_DONE from CLOSE_WINDOW */ if (pc->closing) pc->closing =3D false; + if (aw_id >=3D 0) + notify_stopped =3D true; } + + if (notify_stopped) + panthor_arbitration_on_stopped(dev_get_drvdata(pc->dev), aw_id); } =20 static irqreturn_t partition_irq_raw_handler(int irq, void *data) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c b= /drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c index 9bdd0876dd457..ba345233c7db2 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c @@ -140,10 +140,10 @@ static void rg_handle_message(struct panthor_resource= _group *rg, u8 aw_id, rg_respond_to_handshake(rg, aw_id, message); break; case VM_ARB_GPU_REQUEST: - /* TODO: on_request */ + panthor_arbitration_on_request(dev_get_drvdata(rg->dev), aw_id); break; case VM_ARB_GPU_STOPPED: - /* TODO: on_idle */ + panthor_arbitration_on_idle(dev_get_drvdata(rg->dev), aw_id); break; default: dev_warn(rg->dev, "Invalid message (0x%llx)", message); --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012010.outbound.protection.outlook.com [52.101.66.10]) (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 652F043E070; Tue, 22 Sep 2026 20:47:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.10 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110091; cv=fail; b=Y9WxyaKGs6KavnQvJgtWvvmiRWZ3m7XXwgW4GuiXq/RNS15C5PkrSIyfSBRNkEgitH8DI2uKAxHNWCaj6ILyz1YeqSTWXfDyriFxs6zFm3Dv8JhkkRl3iS8Irt8hrNZVgK2rw0v4dkcxcdzB24V/63AnhZEZ5VyehllogL5DOIo= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110091; c=relaxed/simple; bh=cBkcb7uJksSicWddUM6KoTxIBgFZYiTF4KiaHxELblw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uRFuXE4gI0RZo/BO389GOM8dJOMEzweByDQyKBg2DzklyRFvS65Kl8NQARzDXsC6uOXOePtv1AdnHd2aVoASMIPMU3Enp7zvHEpy3YqCGxMkR792LlUeP5gruVrjy/vialOnTTOBLmSp/zfqthrp4npU0shgX5XRXRvWsnwBZLo= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=K9NgT65l; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=K9NgT65l; arc=fail smtp.client-ip=52.101.66.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="K9NgT65l"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="K9NgT65l" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=va5p4AOC4wxvh5V5uGtfCbDEdaLlztYZU4rkCxO9bzHkboYvGJuYhI8QSynatkp3zaQFLJGSR2MX6aAxaeAO1AbJT09tRXqF2E77dDZL/sXziL7AnZ5iT+IWi51UgR72qo+YarcVqiKpPwR+ERtpgRiOojvvIeYu0R7MEm5+EcOr8hB8ktC4SXvo7+DvPbj531CemlVsNgWsGa+JEQD1FIjOeFjk692kAIsWPlhJIV30zCHFbD0gyZgFNp82JNXHJPz97xNsr4GSBsDyvI29LvO/OJXeuO5xn0HPKA2zclhxLb5hDKF5MdHBusPWkmB3XXOVFXdKrzaKGJOh0dptDQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sAEXG57BKTHSgLa9mJDl/tH2/ad8mlmwECtgHmgFib8=; b=Jwn1ZY9PwbU50CGMs3DWsRXgrrZCcuQYAKGlyNy7DEf/V4q8L5E6EKNo0i4KPZ33kDmqf9/mBbafAnyYWGN4II0BZsJB0rQzgDHpzXHo810tpb8rh3b4WsqX4fLAbHsTrA1pAC0VUGvD/DekcNsChYJ+EXlp6t5WA9bK6nraicL7pXDxnzHtNgKPEl2Z7G2BLxmxXYPcHtp6trr6Aa6HFvSu5baVrF3SGqCFwB2J3SIiMKkUHJy46jbtfjNiTEHLxja9fz6d487rMSLfAiEYFhm8Ijs4zgeysRmOQmj7gINOkFXKRl2dy+U1yX9z0sbXPfK00h/0vdEUDZvSRTtOZQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sAEXG57BKTHSgLa9mJDl/tH2/ad8mlmwECtgHmgFib8=; b=K9NgT65lLUuv8rg2R4wIVdwzMphdCzzaal8qCv2BzEPoylTCGTefR6Rjwi2luVF7zc2oxeMTZWCJpqYq8dIN6y3+qtjiShKH6k4MJvmQgG+3P2rsVQ1Af76c/ZS4Xf/j1h5d5fb0O68BHIpVcYytcYaEaq7Z4fNnEofhQ3nHKsU= Received: from LO4P123CA0631.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:294::17) by DB9PR08MB7699.eurprd08.prod.outlook.com (2603:10a6:10:392::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:43 +0000 Received: from MI3PEPF00008554.eurprd05.prod.outlook.com (2603:10a6:600:294:cafe::76) by LO4P123CA0631.outlook.office365.com (2603:10a6:600:294::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF00008554.mail.protection.outlook.com (10.167.240.8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dNc+/9vg8EpUwDqguk3T0B6QzgiV9AZ85VQ4jhwIja/4ZxvmZvpRrMgaJ2+w1NZtr/TNLOPpSCSvEuuSnoo8tTr3KycwtjV+rQmzLghJ3n3Ocitu8nA2pRZ4/UXVSD+Xxl8fj9QhJn1UbkZQzT6FiTpgEsBt4ewRUjb155w7jeG77xyGi346lVHlMKCAgR4Kd8F0DKTaUo2beTRQtAEpHJcrhaPzhr41OsKUtIAsg5V6MlNbn2efCyxUGHqrEPA7sU2JdefaC1YXkPHFiiK+LHypDZlBPj4an78iiTIHm5BDkX8bIj6MbbM+KJQuZkQA5GUoRbe/3c93XYTzqL4Cug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sAEXG57BKTHSgLa9mJDl/tH2/ad8mlmwECtgHmgFib8=; b=mD+PNOlOZibyhfpwxxsmZid6eOlpvgYyJQyzh90lI+BImlMqw+aeg+u8Tu9+xmpc0bMHL8LNIU3LGMI7CwLMhE+pmV4jiA4orfu2kf4UH6U2n9XlqJ5S3DdZwAH3QcqW5luPUvx/azRJlZq8LVRFjzl4AH5TaCDlYr24qlmNVqK4Zk2mOwA3HMyHpn5DTuzLQNsMY4lOS9EiIMgvV+Ayjnv1+4HiFMfNLzCR1l0vzpgevgvmYsJqIn+OI7SRlFOnpVHDPaYi97QiWwVsljGfMHklI2J9AcqKhImC+cSeswxVAz9Y4UgzUV1hAlFFgoVKyGX2AtduGnEYYmbKdEXaDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sAEXG57BKTHSgLa9mJDl/tH2/ad8mlmwECtgHmgFib8=; b=K9NgT65lLUuv8rg2R4wIVdwzMphdCzzaal8qCv2BzEPoylTCGTefR6Rjwi2luVF7zc2oxeMTZWCJpqYq8dIN6y3+qtjiShKH6k4MJvmQgG+3P2rsVQ1Af76c/ZS4Xf/j1h5d5fb0O68BHIpVcYytcYaEaq7Z4fNnEofhQ3nHKsU= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:09 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:09 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH v1 18/27] dt-bindings: gpu: panthor: Document AW assignment DT property Date: Tue, 22 Sep 2026 21:45:12 +0100 Message-ID: <20260922204535.2850094-19-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0228.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|MI3PEPF00008554:EE_|DB9PR08MB7699:EE_ X-MS-Office365-Filtering-Correlation-Id: e8d00dd1-d125-46ae-8821-08df18eabfe0 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|7416014|376014|366016|10067099003|3023799007|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: FqxatPFpH2Ckh4vhFnCDOyct6vtPxmtFe5Uq9cng9jEdSjByWbQy34DLD7tM+zkE4VaiP98LTTKlH2h8CzyZ2Hlg96qkoUz+raS0FTpCNhNTLKjtYf43bkgLJ+OJp92qtp02KJLSvsa0oQRGujlmFp0LkCPasqMG2HApe8SzYsT89p4/mtBTqSBWCyNQLp/dlfVCss52vJD1eiFeISkJeFJR/xbi2QGYs+7WlTGktqhHyIy9FVIkKNl3PLV7YENYXfMkEpHeeTxo/vX/dvUkeyzIqPmUOx6fTL20MmRgRYGqZM7GRuhxAli7DmR3dI0sHf3O3UrdB0fkTRLHyqwpIdDgcXZ4Ca0q6gaqnVLwnUxI6HxE5vUQO/L3OtyqNtquFX7xMYvKLhlvZF6wELHoSSvSZigvXLpW1FLPwiqiJ+pOkVJjXfGZBvd2ISR4zVWRbw3XSZAFBdWTXyh1wlZSJ0ghevKS8hxKuzpHPjfxHkAKkJ4tt5kWfQ9zOrQPhefjec+oIeLQnRGAFbiOjKmzVyh+s8cLsrF4YTRVTyxHHBbiWeQztrOjqebvKT4WFmC8sG6cCz82LRP1TXogqyOjJy/WO34pAi9hQVDz4djp/lDIDbCq/QogLYud2fiPc6j1AFvVeqeaxTpIT6Pb8oon0aHpcYznNFwNjKgTcFrGWaw= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(7416014)(376014)(366016)(10067099003)(3023799007)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: u28Q32wbXP8Sz7+JEtYAAQ4JnaJwxYjjmjFphGxMA9INJ7aEaU29RAWWzwyP3GUaGSUsQvy830DRwTvYDQGgFTnRDynytk6AROQ6mTbq0XgdzYMGPiO0gFxleNppFafHexSgHEzIswCV8B37eH3qYwe5zKsM5LtM/Hl4QIGKhr4YyyVcQ/u+hd3GIBm6ux0PhiMWbtiUEMolb0jMu9S3Gth3xJMnmQEc1bvVC7r9S4TwWJuEKgwlwLv+guNePR4uEy3o7VbjMWO7Rbg70oGPLSJAuePCUEDQSm9gVo8LM3+WyoDXwgVdG7HWfnE2FkOPc9NTXzZRqlkIFKu69KtpcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008554.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5e8eac63-341b-4494-a491-08df18eaabdb X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|7416014|36860700016|35042699022|82310400026|14060799003|376014|3023799007|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: hOWH2KAUVCQLnbuTXiGxfvnXQNa/AeyhMa/eYKnRFax972AB3D/0uBIsirBxFI9AbD2WR4DypQBR53Q6ZsZTaRM37SftfOtssziJdyszH3mAY7D+X5OPMhS9eCWFbaFAPRJlC8UVDjpttAQBS8ty+HybSWEgRQkflw9p9SGxoOi5qf6UjiETGQ7y9UmAdoeTvrs5Qr3X2i5wCp5ebhDF53NckvgNG7nTyEymIxwKFHG3qs+0WzajNsetKrNNbhJIhwItbuNxaFfWL94EWDmC9Wj7lPihcGs10UZ31UaN352vDjMM2ZWHA9XMxIumpuSXtJ7ZL1Ru/c8cQ+lYQFqo1r4GxIh/swR+9n5PDne4tVXc6ZeCJySgii29jiLIrQjtVBBSkH2MO8rT742yu2UatSt/jDQMxiYK42IRjZ/1ZW7+bcIygDtpdZRcLwrZiI8ZH5+RbjiNtyFquMG8FH3ZRkVcyp6b8CT1+OOFanmuDzDPibHW2hAn7BUgMHPvqrNGLGOpNP7dEpWZnSKe5bDobDWTBX9SYPfE6fOw1S0M3zM3HWkneWgoH8XZtM3SMFijEXhSdycOXVkfpDBWZXeGVi+iZES2Gyc4k/f8fjkngOy6qrTc71fQZ+FUJ86K6h0SkfMcLifR9/5Q15XRU+svNLNZSdSLvpWsc6ZbRgIKIkBBKyU1+AbGut5sx+TzJwHkTvunixy6SbfKLDmvxSYypQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(7416014)(36860700016)(35042699022)(82310400026)(14060799003)(376014)(3023799007)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vdQs+uSp2ejMRtk9Mv/lvbVmRKgdJq3WsMJ1xohK7lLygccQwx44Kz5fNAAShAP5csBd/a6Co2V8HMBqdLwQK5dE0OhPANT5AMIao+fhNMx98c92phcXBoEraPhDOBNkf9LySivBCaiMGm79Um7fwv2ZgMTInEq0Obq+w8/20RNVDsGv73J8purrpkBdXZtEKQle8j1SobCou/0hj3NxIB4aN+NuhuPu6M9ac+7+7SwBN3GYk/cQ3Xy54mAHz1i3tGct6eO9a+ViCxktIhg2yOw1yWd7z4kUfSaCEGO7t46V5zG0JtnAzAkPHGi+wop5CY8lwclVtCz82xAVSnaiG2s3EuuMuiw+c9O4sp6wrCcYOgN6PtFbQBxzaxr3wk8THBQghLBactOdm8emwO5dqL5T/NRteyagyGxxikjw35qIG5aESPUi0mhNOYzB2RHU X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:42.8783 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e8d00dd1-d125-46ae-8821-08df18eabfe0 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008554.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7699 Content-Type: text/plain; charset="utf-8" Introduce arm,access-window-mask property to allow partitions to define the assigned access windows at probe time. Signed-off-by: Karunika Choo --- .../bindings/gpu/arm,mali-gen5-am-arbitration.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitra= tion.yaml b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitrat= ion.yaml index 9ea2b4bb9a344..4e7933829e2be 100644 --- a/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitration.ya= ml +++ b/Documentation/devicetree/bindings/gpu/arm,mali-gen5-am-arbitration.ya= ml @@ -52,6 +52,15 @@ patternProperties: Hardware partition control index. Must identify a partition pres= ent on the GPU and be unique among this device's partition nodes. =20 + arm,access-window-mask: + $ref: /schemas/types.yaml#/definitions/uint32 + maximum: 0xffff + default: 0 + description: + Initial access window assignment mask. Bit N selects global + access window ID N. Masks must be disjoint across partitions. + If omitted, no access windows are assigned by default. + required: - reg - interrupts @@ -113,6 +122,7 @@ examples: reg =3D <0x50000 0x10000>; interrupts =3D ; arm,id =3D <0>; + arm,access-window-mask =3D <0xffff>; }; =20 resource-group@c0000 { --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011022.outbound.protection.outlook.com [52.101.70.22]) (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 AAF2F439340 for ; Tue, 22 Sep 2026 20:48:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.22 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110101; cv=fail; b=KROPRm4pVbZQ2FJdnNIT14211YIZIO8bzZFgy5FoffLH/2ggJxOtTgWEhYFYBh+kHUsYqp643E/d/5sUl11x3vhVXQW5Rsyr7OZFoWdQmQwAK+67NALtKKqhFyRRYiGExQZAnrs9r0uUbi9k89Y6Yx6MVlfPXM2FQwLEdSimGY4= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110101; c=relaxed/simple; bh=H+j/vyEtgSvoFrWzNcMP7sTeVmHDsYnA1K5TzgSC3dQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=beMsbEQ8MAiH6C0e1rwzQS9YpCHLuDZAm275eC+QCzPPmK6L6KlaIxXYcQ+q9EzPFo1Jx98DA6iNxJVTapiBNdyvP9UQoJlh34Yk/RRBPW55SM0uZuS+9oy0mTxveAiAAfsgPcVBF3n6u1Twqxa7igGB9ZumgjB6AlL07b/9ruc= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=ne+Bj2dW; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=ne+Bj2dW; arc=fail smtp.client-ip=52.101.70.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="ne+Bj2dW"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="ne+Bj2dW" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=fTGY/fl2mP7a8jGqkfNL8es8D6KikfJA1l88iVSOPQgWCMPLXaurJ3irOvC3SvC1XpeoQCmg1GtLeZSrH+O6Omfga3+q4KtXE8ZV98cy2AMzf+1b17asrVsrkbnSjRb+DxCeE7iOstqKO/SG0b4xh55llOvWU9bikrXdPWOEUiHgX+ZGwNpmf5jMBW3VXKD4oFmlTeQS10V16XLbkTYOxgfuOSqwhQ//vTcLv2LsOUS17sJJiDV2RHvNasiu94ruHk6lfwVUERgFVGGqJrjPmnGHHboAzMOOKj+XvIUWseJJGvGSpA90eqlxCgjYtpfDwg19ZkqNq0qkMEC//UZJrg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JRkYwoeXnXN3LykwIKPUpF8ENKoP7R/3YQrwGvhorL0=; b=dHt0hSJfQL9zo41zTkyCmA4rtDI1F6SBz4K6Ydq0mlS4185iz+alxOg/Is1KdND7U1WMXPrJB5K4zR5ko/26yJHc15Jj3Qv6JVmgdE3T8RCA/MZYpINDw1mHXObEWkC5Mf2axtE7TtRTLsgoLraKdTsjRA9OZAId/l5ezF5rxJMY4GLT+whMB2Ca2iv15NnbutKOVHxoMZ+hRlr5AugNh6wIAdo14fMxjQpnJxbqgDuyaY/4FqAxWYhuMqUsyoeK1yIQ6e72CjPYxaLRLmHebv4sef676Qu0xktMA66mweHQOCy4wEtO7hZD+5UVZsTB/ZWPaPztvOMCBacAmSLmKQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JRkYwoeXnXN3LykwIKPUpF8ENKoP7R/3YQrwGvhorL0=; b=ne+Bj2dWUOicvdnNXDnBtPK3K1TrkEpFdXV8VtevS8InExFAQygOlSycNl2ePrPix4ACNJdq8nkFoz7h3+YkWndTSN5NG81jRsLhqt0aJsArONQPyjfxnsId07lcp4ctd+B4P6Pq/mT6UPp1J/vE/39kfBEkUDQCFtrJQJoGsHc= Received: from PAZP264CA0229.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:238::11) by DU2PR08MB10186.eurprd08.prod.outlook.com (2603:10a6:10:46c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:47 +0000 Received: from MI3PEPF00008490.eurprd03.prod.outlook.com (2603:10a6:102:238:cafe::97) by PAZP264CA0229.outlook.office365.com (2603:10a6:102:238::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF00008490.mail.protection.outlook.com (10.167.240.151) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hdyAddeOJJlYqBw5ZKXJAv5F1h6LX0xLdn6Dt5NB7lWCWxz+z82okr+3n223cV4ONkehrNmTTTD5t4Kup8A/DyRH80dOU0zXWafKalhn3zI3J5fYqtpimtlLjyMfQocP7xVPlSNE89JBMx+8A12tQ/N4srseYZOSda5lsAPSowljHdaythE/+HGuvzVJoy+FDyp3irPorNSbkJobr4JODGWM3TdedHCyB4UnpuiBXEuapQtDNTGZ6aWutVfC5tJh+cklTGyznFdHsFOvuFO7iCMMkMPxZgvBTpZ6H8x9wFyUE067DAKCKEBBEb6ow+gEv+SypbgJ5h+34jE6RvrUcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JRkYwoeXnXN3LykwIKPUpF8ENKoP7R/3YQrwGvhorL0=; b=PLryKTNo7J/OcVXc4WiK2WoRhJQyZpWX5nw5ncSu3+64f+15NhkPP1ekk4OSanqeniBF0fW+YA4nzj3CRhBImOac/7JtyAW4m82UyI5Dra0GGWLhAaqLP+1+JdKlHgXlbP0d7EnS3uCK1b3LOClhyahNvN2o1eSNo1jo/qpcUJbCI0iARmxLqWbbND3b2yIA9vdAr83LpR/CXFt62xZGspyKTPPoJeBylF0a1jFp4Gyqos/t7CzTipZRG7dtQz16rgHXmFxNK7G/rlPWjdqoRAvQCYhiL1k79IIfuT9OjTir7O+ZI2o28K9wN7yRWfo7Ulni8NSkc3i35QTJ0eAImA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JRkYwoeXnXN3LykwIKPUpF8ENKoP7R/3YQrwGvhorL0=; b=ne+Bj2dWUOicvdnNXDnBtPK3K1TrkEpFdXV8VtevS8InExFAQygOlSycNl2ePrPix4ACNJdq8nkFoz7h3+YkWndTSN5NG81jRsLhqt0aJsArONQPyjfxnsId07lcp4ctd+B4P6Pq/mT6UPp1J/vE/39kfBEkUDQCFtrJQJoGsHc= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:13 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:13 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 19/27] drm/panthor: Add AW assignment tracking Date: Tue, 22 Sep 2026 21:45:13 +0100 Message-ID: <20260922204535.2850094-20-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0234.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::11) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|MI3PEPF00008490:EE_|DU2PR08MB10186:EE_ X-MS-Office365-Filtering-Correlation-Id: ab43eda8-626e-4e82-4b25-08df18eac1d8 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: +iJCVRFVMs1XRnXPJjYy0ugoqGfEtMm58Huw4oJeB25IRhWB2pkgGaW84NeWUNS3dqwUOwo9uTLpq/L94j7FfUPnpaA66SP9j5di22YGeFk6ucIS0/RIT3iXmA1Fabn82hYxI/U6qKDTd+7j6rK8mrjggj1OFOrBF06wMnenpYlabinSUXokeTvCw3mXYf2OyaWomiDePy0ByY++RTFyPD4LGrDLS5r1mRkYMlsSCjvt1Lh69dYFYA5ifrYYUa+sdoymggp5DjzLEtSEmiAY+562AUg4No2I89N9WvAJ5QhQn8RScckSYwGxoqFxmB0Xxb8hPCWLnNjz3DIAH/zNKCrVQPw6ZzaKUJa9cUTx4uwP+xxvsTeMS+B86Xb012NUGyPvSNy2Jgo2tHjnN5ycdX3Te34FLlIq8zV5K/LIJ4lnVs718APaFRH/7WItfxnqbzLSspv93Bz3zaFZZ8RZ+71VFZUFMsXs4ffzQlptDsmYxL1HcpXFsp/S5u9An8rztvpgC5l/gHDdPLU9rk3WPt1bMzDSLQT2yN6wRCS88tQA2rGN/HglE7ICOQK1omxiErXebV4p2k6r8p99/F7wN5Ep42tNmRx3Y9NToWu+ahuAxLUBYOUcCnRrFCTOfDhdQwzsNeJx7f8GtqFj1ECKRfj8dd9kM4bBcboj6cv/uK0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: 5idUmrvpMtjO0C5O8Um4A/KxcWsAvZdOb7YmCXGMXH9dYShEyRSDG3AWXxZs1zCfBxNs0R8wHF8fsvxy4XckUCkI8MMa8aAJS64Y0KpSpzezRSLGk9qBPpcfcq4O3P1ZpNLHo1oyO2oTvbINP1aYVTwCOZd+ka3lgZEqZIBrwkhQYRkYLlrF2y6HxGgGyq93S1MOQSCOe8PTszn7k4EAu9O6D998B8ZcZa1W6ZuBQTaBmsyAY4j3fKbKWr7SR0iJR1F/s05nQQT2Li5e8BroyV6mUs6BS73AsB7bi97HVMUYQzz7I3i2ZG/VOj7QYz/mel1SqBUFbEf0SsWy6HsfSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008490.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fa0806da-0a5a-4801-1742-08df18eaad8e X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|23010399003|82310400026|36860700016|376014|1800799024|35042699022|10067099003|56012099006|6133799003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: M2ckxiuvhgFDLRsj80bSTWRvKgYSc+RBZ2OTdXpZx8nYOC/1KR0/KSUHGpc8Uk20uF0pYpW12a2JyxjFvfdwyRRIMblkW9d18c04fllXschWhUJiEj1EyGAm68IDhtHs/Vi8Yjme5BsPtAg7aYo1AtxBWZ7afFgNhpSj0IYULcQhHVApLaTwcjE68FtvS7deoo/aOK/xBvGekqdF8cZLG5tVuxXiNgkjqthE0k/MIqXg3gjnvHHoJdNLzuoc3dM7v0gPyp9t7vEf3UOGedbr8FKCF8C8xRgdXWaPqlZ2L393dkKc/pMixM2SX7ggAeaP5ehyQkK2EAqa4+lNlnXd67uTty7U2nkpr//RfZ+RuxnI3HPjiA1YxlhMB78dd6bRS30ggNK7zDnkXkyTKmrGx2YtHNFv7QQXVlwHbgaI5Zg4aD/d3Nhm/idQsQ4cOwlkGwl6SlJVnRsu/wjtIfQ4jZ4ckc85N75cYPVQunGGecdSyKBSm37pSKkg7DXjwPf58GeKxrPazFjt/PTQutjUb4M9A5idI1xD2YWoZTwbTiZzYoXKljrlvRkDpkIWxWIkDjGS4ySjSILa1tKqq+zlN9kbYnfmUtxolLduO4Nae2jsGS4jPxeNMI4NxZhDFaoCl9ihzLUGdQVLcOWlsr/MkYouMnlN3am+UrQiGiVdk4zl6aR6NbgtPdwVJxNRyjRkp6ZpRI6IunLeoAJuYWYIIw== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(23010399003)(82310400026)(36860700016)(376014)(1800799024)(35042699022)(10067099003)(56012099006)(6133799003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QtvD9JCD9kpBK1R9wkixCfEoGyX66Wv+p46TDeEIFIPit/0eglfOzdODWiuAdEIwlEMzUtbNJf8UAoRSw4WXGkHeF2Y3d2lVnc5TcEhgXjbliN6JDNAAt+S0xVSOoeidElBWAILykYVYN4PJS022pU//bOXnsUzNYBGUFaCUw+DTRyTPuCsY4zldatGqXmDdNG8sw0OesOfST60BcGnQH0378euHpk38DemUth9qs9oiqYZHQXLMExk69aRfUqgdddhVLaNPHhjgDaxV7JW1wn7V47GM9+nPKzQvsH6dLMYRjLyJ4WUwIZ0a4raDS0P6mhvfmB3ytMpSBx1lCZ6smBgJ/mpgIzMskqCwY836oQTqQjQ1U6xful2FQpEDwS2+91jti3pKwa4dpNPzmGUsOtuLhWa3hQDB99bFJGvJlYJ+WnNpqJ9vzq9/s4Dl3UOG X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:46.1594 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab43eda8-626e-4e82-4b25-08df18eac1d8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008490.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10186 Content-Type: text/plain; charset="utf-8" Track the scheduler assignment for each access window using the default access-window masks parsed from device properties. Use the mapping to route request, idle, stopped, grant, stop, and close events through the scheduler associated with the access window, and keep schedulers disabled while they have no assigned access windows. Signed-off-by: Karunika Choo --- .../panthor/arbitration/panthor_arbitration.h | 15 ++ .../arbitration/panthor_arbitration_drv.c | 201 ++++++++++++++++-- .../arbitration/panthor_arbitration_sched.c | 2 + .../arbitration/panthor_arbitration_sched.h | 3 + 4 files changed, 209 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index 149221333eb1e..e1d569158ac6c 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -7,6 +7,7 @@ #include #include #include +#include =20 struct device; struct panthor_arbitration_sched; @@ -26,6 +27,11 @@ struct panthor_arbitration_resource { u32 id; }; =20 +struct panthor_arbitration_dt_info { + /** @default_aw_masks: Default per-partition AW assignments */ + u32 default_aw_masks[AM_ARB_MAX_PC_COUNT]; +}; + /** * struct panthor_arbitration - Arbitration device */ @@ -44,6 +50,15 @@ struct panthor_arbitration { =20 /** @sched: Pointer to scheduler data. 1 sched per partition */ struct panthor_arbitration_sched *sched[AM_ARB_MAX_PC_COUNT]; + + /** @dt_info: Properties parsed from the device tree */ + struct panthor_arbitration_dt_info dt_info; + + /** @assignment_lock: Protects AW and slice assignment */ + struct mutex assignment_lock; + + /** @aw_sched_map: Tracks assignment of AW to sched instance */ + s8 aw_sched_map[AM_ARB_MAX_AW_COUNT]; }; =20 int panthor_arbitration_parse_resource(struct device *dev, diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index 723cf605e16a3..f44cd45ea342e 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -1,11 +1,13 @@ // SPDX-License-Identifier: GPL-2.0 or MIT /* Copyright 2026 ARM Limited. All rights reserved. */ =20 +#include #include #include #include #include #include +#include #include #include #include @@ -17,8 +19,27 @@ =20 #define PANTHOR_PM_AUTOSUSPEND_DELAY_MS 100 =20 +#define DT_ASSIGNED_AW "arm,access-window-mask" #define DT_ID "arm,id" =20 +static int to_assigned_sched_idx(struct panthor_arbitration *adev, u8 aw_i= d) +{ + int idx =3D -1; + + if (aw_id >=3D AM_ARB_MAX_AW_COUNT) { + dev_err(adev->dev, "Invalid AW ID (%u)", aw_id); + return -EINVAL; + } + + idx =3D READ_ONCE(adev->aw_sched_map[aw_id]); + if (idx < 0 || idx >=3D AM_ARB_MAX_PC_COUNT || !adev->sched[idx]) { + dev_warn(adev->dev, "AW%u not assigned to any sched", aw_id); + return -ENOENT; + } + + return idx; +}; + int panthor_arbitration_parse_resource(struct device *dev, const struct fwnode_handle *child, struct panthor_arbitration_resource *res) @@ -95,42 +116,186 @@ static int panthor_arbitration_runtime_resume(struct = device *dev) return 0; } =20 +static u32 arbitration_get_sched_aw_mask(struct panthor_arbitration *adev, + u8 sched_id) +{ + u32 aw_mask =3D 0; + + lockdep_assert_held(&adev->assignment_lock); + + for (int i =3D 0; i < AM_ARB_MAX_AW_COUNT; i++) { + if (adev->aw_sched_map[i] =3D=3D sched_id) + aw_mask |=3D BIT(i); + } + + return aw_mask; +} + +static int arbitration_dt_parse_assigned_aw(struct panthor_arbitration *ad= ev) +{ + struct panthor_arbitration_dt_info *dt_info =3D &adev->dt_info; + struct device *dev =3D adev->dev; + u32 seen_mask =3D 0; + u8 seen_partitions =3D 0; + int ret; + + device_for_each_named_child_node_scoped(dev, child, "partition") { + struct panthor_arbitration_resource res; + + if (panthor_arbitration_parse_resource(dev, child, &res)) + continue; + + if (res.id >=3D AM_ARB_MAX_PC_COUNT) { + dev_warn(dev, + "partition@%llx: id (%u) >=3D %u not supported", + res.res.start, res.id, AM_ARB_MAX_PC_COUNT); + continue; + } + + if (BIT(res.id) & seen_partitions) { + dev_warn(dev, "partition@%llx: id (%u) already present", + res.res.start, res.id); + continue; + } + + seen_partitions |=3D BIT(res.id); + + if (!fwnode_property_present(child, DT_ASSIGNED_AW)) + continue; + + ret =3D fwnode_property_read_u32(child, DT_ASSIGNED_AW, + &dt_info->default_aw_masks[res.id]); + if (ret) + continue; + } + + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + u32 aw_mask =3D dt_info->default_aw_masks[i]; + + if (aw_mask & ~GENMASK(AM_ARB_MAX_AW_COUNT - 1, 0)) + return dev_err_probe(dev, -EINVAL, "%s[%d] entry exceeds max AW count", + DT_ASSIGNED_AW, i); + + if (aw_mask & seen_mask) + return dev_err_probe(dev, -EINVAL, "%s entries overlap", + DT_ASSIGNED_AW); + + seen_mask |=3D aw_mask; + } + + return 0; +} + +static int arbitration_dt_parse_properties(struct panthor_arbitration *ade= v) +{ + return arbitration_dt_parse_assigned_aw(adev); +} + +static int arbitration_sched_try_start(struct panthor_arbitration *adev, u= 8 sched_id) +{ + struct panthor_arbitration_sched *sched; + u32 aw_mask; + + if (!adev->sched[sched_id]) + return -EINVAL; + + sched =3D adev->sched[sched_id]; + + scoped_guard(mutex, &adev->assignment_lock) + aw_mask =3D arbitration_get_sched_aw_mask(adev, sched_id); + + if (aw_mask) + panthor_arbitration_sched_disable_clear(sched, ARB_SCHED_DISABLE_RESOURC= E); + else + panthor_arbitration_sched_disable_set(sched, ARB_SCHED_DISABLE_RESOURCE); + + return panthor_arbitration_sched_start(sched); +} + +static int arbitration_resource_init(struct panthor_arbitration *adev) +{ + struct panthor_arbitration_dt_info *dt_info =3D &adev->dt_info; + + for (int i =3D 0; i < AM_ARB_MAX_PC_COUNT; i++) { + unsigned long pc_aw_mask =3D dt_info->default_aw_masks[i]; + u8 aw_id; + int ret; + + if (!adev->pc[i] || !adev->sched[i]) + continue; + + scoped_guard(mutex, &adev->assignment_lock) { + for_each_set_bit(aw_id, &pc_aw_mask, AM_ARB_MAX_AW_COUNT) + WRITE_ONCE(adev->aw_sched_map[aw_id], i); + } + + ret =3D arbitration_sched_try_start(adev, i); + if (ret) + return ret; + } + return 0; +} + /* AW to Arbiter events */ int panthor_arbitration_on_request(struct panthor_arbitration *adev, u8 aw= _id) { - /* TODO: AW to PC assignment */ - return panthor_arbitration_sched_on_request(adev->sched[0], aw_id); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_arbitration_sched_on_request(adev->sched[idx], aw_id); } =20 int panthor_arbitration_on_idle(struct panthor_arbitration *adev, u8 aw_id) { - /* TODO: AW to PC assignment */ - return panthor_arbitration_sched_on_idle(adev->sched[0], aw_id); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_arbitration_sched_on_idle(adev->sched[idx], aw_id); } =20 int panthor_arbitration_on_stopped(struct panthor_arbitration *adev, u8 aw= _id) { - /* TODO: AW to PC assignment */ - return panthor_arbitration_sched_on_stopped(adev->sched[0], aw_id); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_arbitration_sched_on_stopped(adev->sched[idx], aw_id); } =20 /* Arbiter to AW events */ int panthor_arbitration_on_grant(struct panthor_arbitration *adev, u8 aw_i= d) { - /* TODO: AW to PC assignment */ - return panthor_partition_control_open_window(adev->pc[0], aw_id); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_partition_control_open_window(adev->pc[idx], aw_id); } =20 int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id) { - /* TODO: AW to PC assignment */ - return panthor_partition_control_yield_now(adev->pc[0]); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_partition_control_yield_now(adev->pc[idx]); } =20 int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d) { - /* TODO: AW to PC assignment */ - return panthor_partition_control_close_window(adev->pc[0]); + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_partition_control_close_window(adev->pc[idx]); } =20 static int panthor_arbitration_probe(struct platform_device *pdev) @@ -148,8 +313,16 @@ static int panthor_arbitration_probe(struct platform_d= evice *pdev) =20 adev->dev =3D dev; =20 + mutex_init(&adev->assignment_lock); + for (int i =3D 0; i < AM_ARB_MAX_AW_COUNT; i++) + adev->aw_sched_map[i] =3D -1; + dev_set_drvdata(dev, adev); =20 + ret =3D arbitration_dt_parse_properties(adev); + if (ret) + return ret; + ret =3D devm_pm_runtime_enable(dev); if (ret) return ret; @@ -170,6 +343,10 @@ static int panthor_arbitration_probe(struct platform_d= evice *pdev) if (ret) goto err_term_sched; =20 + ret =3D arbitration_resource_init(adev); + if (ret) + goto err_term_sched; + ret =3D of_platform_populate(dev->of_node, NULL, NULL, dev); if (ret) goto err_depopulate; diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= c b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c index 41f06af92ce0c..9e26b8f92b69a 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c @@ -585,6 +585,8 @@ static int arbitration_sched_init(struct panthor_arbitr= ation *adev, int i) INIT_KFIFO(sched->queue); sched->active_aw_id =3D -1; sched->phase =3D ARB_SCHED_PHASE_IDLE; + /* Scheduler is disabled until its resources are configured */ + sched->disabled =3D BIT(ARB_SCHED_DISABLE_RESOURCE); =20 hrtimer_setup(&sched->grant_timer.timer, panthor_arbitration_sched_on_grant_timeout, diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= h b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h index f1f50316a2fff..803a405964a4e 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h @@ -15,6 +15,9 @@ enum panthor_arb_sched_disable_reason { =20 /** @ARB_SCHED_DISABLE_TERM: scheduler disabled for termination */ ARB_SCHED_DISABLE_TERM, + + /** @ARB_SCHED_DISABLE_RESOURCE: No resource assigned. scheduler disabled= . */ + ARB_SCHED_DISABLE_RESOURCE, }; =20 int panthor_arbitration_sched_init(struct panthor_arbitration *adev); --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013018.outbound.protection.outlook.com [40.107.162.18]) (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 0A46C486B8C for ; Tue, 22 Sep 2026 20:48:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.18 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110096; cv=fail; b=bysQlpmbgSP6tF1uw6DsUBg92J4OhfhxBk6qj1rUsyMUm6QiHXOxpkWngApazuMa6ypQgFQaMj9c7T1TY1eT2fNgvE5Sn30mn20tI672N/UPMDiKqTk2s8fNl5k1VYz3ktCn3H6K9lD6TP5GO1rd834KChH5s4C8IjCqTH0vHgw= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110096; c=relaxed/simple; bh=jkBuw49Kt0bpN7zfjopYrHSIpEUAg9Vdsk2zUFbE51s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eSIyawR3gZ0WnKIIwIIkuNmqZOY3t7GYx/ef9I+TEnPtj5zXyKaGzh7Vl+CqyghSLGn2uNWx3nZFHgYMYtBwRIP8qd2gNivDit59WMpzNQHrYpaDJ0/QIw+k+IXk52P3N7dUHR7M6W2HVFcZ8xMfmRdl91NM6foX3WiY2ySSCOE= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=LCHWR7VN; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=LCHWR7VN; arc=fail smtp.client-ip=40.107.162.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="LCHWR7VN"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="LCHWR7VN" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=zU0hTFMtJ9annmEy4FhXQUPkDDv4YeCHuqYkr21zpLC+4SMuJzg3RQn4f+d1zdLw0fs/pxJJTslLY3VZ1+vGQoV09wfyox8OP/NacDWp27tCk9tuH7VZmZD3ZaEI0ywJEwXtP0oOcsOc0QbrQ50DIg3sy8UYBva4vXDCPbQ2bwfbQYtKpNYEIB+5nb2KaYSX3QWwnYA/7vRvNyk1PyqryiuHbUuRRZYe4CF4Wy3/jx1ZK69ybLWjqflo0NWzVEvhq6/emPxJrym19I7QXguSXQ0lv6B17DKXv8XqvqD2LEapjJ5Wz1Kn0v7ZJttBbSv8emh7BNUWfzZsvjcNPZ2Zqg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1UeYNoRfYQfkid8h1HObcVh9J7Etq4WOGznh1icA3vw=; b=Qx2DKgOzZLmwbtn0xH7HnZ9mylLHHGK7Xki60SBwhjM9bPLFi/CkjLqFvITOBGtMU3ogEK7pB/mNhOhcINPM+GT8RAdyl6AqmBSHstISWaQy6penZ3w0xSa0RMaTZkPOh6AapkEjKzxFVbJ7V3h14rHbDu4A08z/dGxMp4FPP870ebdPTdtY7ZccoTQpsOtHJM78b9djX0BDpnWJd2XUgy3cUgnk9al+Hx+jXQAVegbauKy8T+UPvhgdv+6CNUeZNvIU23oBBL+SauupqTy0ti75uORD02e2IhetvPeIp84VqhPEOr5lZ/29Ry4ttiXvxr4OcF35ey1fEJ4ldliEDQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1UeYNoRfYQfkid8h1HObcVh9J7Etq4WOGznh1icA3vw=; b=LCHWR7VNvW8MEME0E+/rxOVaJJGN/IJQmk4rbX6s5DJOkV2aw8Z6GbQHBbgRmxyCL4mKTTnIDIBOpx6owY69Ldn3qTRV9gtrgePw6ujc2CURxtiJM6ca3rrBqmcbcn+HgWTndYJuUfL7oos8k1Y1j4QJbfcDxkG7LPGrJbEHSiU= Received: from DU2PR04CA0307.eurprd04.prod.outlook.com (2603:10a6:10:2b5::12) by GVXPR08MB7896.eurprd08.prod.outlook.com (2603:10a6:150:16::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:49 +0000 Received: from DU2PEPF00028D12.eurprd03.prod.outlook.com (2603:10a6:10:2b5:cafe::24) by DU2PR04CA0307.outlook.office365.com (2603:10a6:10:2b5::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.16 via Frontend Transport; Tue, 22 Sep 2026 20:47:49 +0000 X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D12.mail.protection.outlook.com (10.167.242.26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NCi4V0HvG8uVX9HSBLvk227kqy/evqmX1rR1xEJtFeLUgfVR30Zw6ducDqdTkZ0CJxEfZKNSY7yh6hwW9AVtzL/QOLRRayyvbdLnwmK5Lrs9YPEv78gL+UKiIJa0fko3bBvtnmkExnWR8vkb6datXvxVUapvgZNX+C+nK4pyHLmBMzfPB2wJLJOv6I+cOLluBHmYoZ4d/Gl5gD2qlnHbDqwgOdXiRMczM96KcTnNbJlRePgmvoPjCTQYsWJf+QnvvdmGJ/zyjgqkSCKIsTizp4Ig1tuLcokAx2qyXXkI/BwEHH5cv86XaYNb82accFAYvfPrv34TuANLb5KkpVEc9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1UeYNoRfYQfkid8h1HObcVh9J7Etq4WOGznh1icA3vw=; b=aTAxd6BdXT9Es/sZfJLUyAWy+lRLRzUoNaZr9Xv/Ctm1w0GbrmcMjGbewc4KLJ+CJZxW4ZQbn/PsAx8yauKOMqVB1/xGKeGjKvoJayCg7uuZ3oNZOPv90FkH+qQJAgCL3I2Hg47jIQtKuGGY9DLJ0MRIvzlQO3GdFTbqBf9mAvpUP7FZULgZSLyWeIG6tJxscxsjbXr5EqXuERyD/aL928PxuW39H8ZWiVt49qX8m/s2y3jOakykPyu2hdN/sCLEzvjUgkD37H+FPmN36HfcHWmDiTy/vqfQuYUFntn1E37sYhljT78ZRmgIlJ2mxMbwjXigFY3BvhX2F0SqdI20tw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1UeYNoRfYQfkid8h1HObcVh9J7Etq4WOGznh1icA3vw=; b=LCHWR7VNvW8MEME0E+/rxOVaJJGN/IJQmk4rbX6s5DJOkV2aw8Z6GbQHBbgRmxyCL4mKTTnIDIBOpx6owY69Ldn3qTRV9gtrgePw6ujc2CURxtiJM6ca3rrBqmcbcn+HgWTndYJuUfL7oos8k1Y1j4QJbfcDxkG7LPGrJbEHSiU= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:16 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:16 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 20/27] drm/panthor: Handle partition control INVALID_COMMAND interrupt Date: Tue, 22 Sep 2026 21:45:14 +0100 Message-ID: <20260922204535.2850094-21-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0665.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:316::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|DU2PEPF00028D12:EE_|GVXPR08MB7896:EE_ X-MS-Office365-Filtering-Correlation-Id: f340b994-9791-4073-418c-08df18eac39c X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|3023799007|5023799004|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: CSPJ6M8TMiC1RhOK1OqDah9p7aPhAxCib4BGhv2tWdl08XDeseo5fGAG0bLlnBmmvlXLzLQ1zcT9BokXC+eCWfPbDE+pCrqdy9/EoYwEXnL9H94P+rRH6hkKcO/D25wPFtbRTX1x458qgtnxqnyhp4YtfENxVowr8zH3LKCz8Y8/b58/yZRZHpRS7dEK6zS0d/e08Dxsc07Szsd1vDuaig8hEBfELmr92Or+MJUhsYNKyrj5chRspK+NTlebhy1581ku2ICCxgvmZDYx+NUvpPPRdxwDWBkmCQIvuoW0fyAGRxOocu+2e38uqIrnm1btAWlpXhNhyOe0XtZ/Cnv1fjEDL4BYK+Dk7/l/ewyO4LHsGhWc5J9bpTwJGcBfGysPVGiCDW3cvdIu/8PxrukmTSom01ktJtH3y8mRMSCa6aXBiQSfmHUwqzsP2pPU54b8wJVV6pUnU0xGYPKeWI7VJ45Xl/vyFa7DDNdblEXyNrFMs7O2flumnhalRz6TpUVoqVcfJ6QmxEZJtgckwMEsA0X/HDQ7h36CV1HbsfKgxvdXbQj8OnWTRj/aG/ud1y60JAw2erjn+dc5evAskHBBESDHF8fuGix0+8i8AQQWgjEqu9Wx3YJDYR475pvbgqMVNs7FQx1Dp1j8/m3mFaIOgE+Tykh11ragIwjgjvfnO3k= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(3023799007)(5023799004)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: ro0HsC5xPausfD8L1WENiVIqrng1qeaV5C5RayPQwIcWYQaMJU8qNjEaTtY3QHHw+1GuHziIQ2nmRj6fyGmvVysJBGFoN/SZodi6+XJPJlWRAGDIEsSAmumTRKwOKBfdSEjX/9C77EM2grWiJc+6Zz1CwfNrxtZnR0FjlOyzmYhrNofuoNx7VGjJenVSvepe7YUixgquwDdwLNT49f2RFy6ss7ubOOffIBHF4ZVHYPgyFH/cR/gK3T1w0JoijiRD7/bRFMalhiUQZN0m4SCZi+ycwHEDs/yYVSGO5Wqhg1bsue18TU4LkucFr3mp3/KXr3qVIDEeDKPJMw4yN+Vj4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D12.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1ec708c7-926a-4bc5-a199-08df18eaafa4 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|82310400026|36860700016|23010399003|376014|1800799024|35042699022|10067099003|56012099006|5023799004|3023799007|6133799003|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: d8qYNHBseZEnzAV8stlHw0n2vYKocSODVUl3pIC07vf4Lf94yIe9L/URiYGcsZOOtZW+sVITChj0MS5hz1q4SqVqyTrt0OF4mTSIrnGPGpS7wJ4ySPxfUzl2/o9gX4QIfPPFUA5wEQL7AYcl81Lf3I5KiaqiF14btHkvq5JXruB4G4y1r8GXqTtGmKpfjyjuPzUC0dunAeOe8LLZDwXMUTERgZyP1d5TbnbIbhSUVECBQPRWuiAcwA6B45U+DOH53tkCb4V9tr8zUNQHs2ZGHxbrlmjVEyhq3QP4RLNZp2kKLcWc+gGPQu0TEnhOODlfVR3eRcr0O9wsjSe3SJBQB52YR6xslqIBZT1g2RhP5vhOMhfFhcuN4KroEAjQ2k3AATGQCDZK+JsfLvA3T4GG/43l8Zz1xe/SZ9aL2+6HFfSwk4+EJaPRGJxqD3oQzq2SKLFxUu8iyLCoQagFB4os4wqorkGzTUMnJvn2FFAEoww/x24x8ewLxLgAlkRhSOBpdbCSM2I5cEgAYRFIYQXylqbOhdqsWulyBabYumxxUODARnRsn6YjFsHm4hvIswrpPv6goYvEpQChC8fVcHs8xTZWbxEcEWRoaY29xjvOwpNBfb4KwVHSFD5RhU9NTGDBM6/f0JzenwWhU5Z4cDPT5IUr0urXFmag1fZvZC25RSUtAEE28n8Sc2kMxkzEPEtJxD2HIXw/ImAYs2uWubW7Rg== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(35042699022)(10067099003)(56012099006)(5023799004)(3023799007)(6133799003)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BK7+4QBW3OLyzing8wIILs6KLx5Q5B2IfWpgXMGXOYK/FkTn9DFjPY07gDAW+Z2DEq0eXHBuwbAmYTVgLUoJzc87bMv+sluhyk6bXZaIs27hKbHLhGdjF4J8qKpMgbOTHvMFe1WFhR285InL6BlbXUGhbeE2adkS+RYWmasIOAHKg5mSy3IGnQrA8YuBLordaG79CM75FU/qL+YKCtTTojWlv5BhftRpKaE9fpUx4wONXiX2nxAYw7zvuRJGXtn50fufLb8wgDaK9rgN2Hn81PByfbPpiCE13DW42eYFEPLOOGdNnRjnCh8exmD8PqtqXZ5UavjrmYlU/aTwTYjeIf4fOtDvZLnixcrWFc0MBjFYtpJpu/Nc8Cxo00R792bYocMaLOzBuB/SzHuqmItqSNMKnwuFQys15l557BfqitXExy95tp9Z2lO/M9DFHg0i X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:49.1919 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f340b994-9791-4073-418c-08df18eac39c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D12.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7896 Content-Type: text/plain; charset="utf-8" Partition control commands have specific partition state requirements to be valid. We cannot afford to wait for the states to complete transitions before sending these commands as it would work against the arbitration scheduler's goal of handling phase transitions as fast as possible (i.e. in IRQ context). Fortunately, the hardware raises INVALID_COMMAND interrupts in cases where the partition state requirements are not met. In such cases, retry commands when the partition state permits, and request scheduler recovery when an open-window command encounters an inconsistent assignment. Signed-off-by: Karunika Choo --- .../panthor/arbitration/panthor_arbitration.h | 2 + .../arbitration/panthor_arbitration_drv.c | 12 ++ .../arbitration/panthor_arbitration_sched.c | 10 ++ .../arbitration/panthor_arbitration_sched.h | 4 + .../arbitration/panthor_partition_control.c | 108 ++++++++++++++++-- 5 files changed, 125 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index e1d569158ac6c..53d64abb50379 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -75,4 +75,6 @@ int panthor_arbitration_on_grant(struct panthor_arbitrati= on *adev, u8 aw_id); int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id= ); int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d); =20 +int panthor_arbitration_notify_err(struct panthor_arbitration *adev, u8 aw= _id); + #endif diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index f44cd45ea342e..3cdf03f3f4879 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -298,6 +298,18 @@ int panthor_arbitration_on_close(struct panthor_arbitr= ation *adev, u8 aw_id) return panthor_partition_control_close_window(adev->pc[idx]); } =20 +int panthor_arbitration_notify_err(struct panthor_arbitration *adev, u8 aw= _id) +{ + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + panthor_arbitration_sched_reset(adev->sched[idx], aw_id); + + return 0; +} + static int panthor_arbitration_probe(struct platform_device *pdev) { struct panthor_arbitration *adev; diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= c b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c index 9e26b8f92b69a..df0785a80442c 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c @@ -729,3 +729,13 @@ void panthor_arbitration_sched_disable_clear(struct pa= nthor_arbitration_sched *s =20 sched->disabled &=3D ~BIT(reason); } + +void panthor_arbitration_sched_reset(struct panthor_arbitration_sched *sch= ed, u8 aw_id) +{ + guard(spinlock_irqsave)(&sched->lock); + + if (aw_id !=3D sched->active_aw_id) + return; + + arb_sched_queue_work(sched, &sched->reset_work); +} diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= h b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h index 803a405964a4e..ba43cc19f0eff 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.h @@ -6,6 +6,8 @@ =20 #include =20 +#include "panthor_arbitration.h" + struct panthor_arbitration; struct panthor_arbitration_sched; =20 @@ -35,6 +37,8 @@ void panthor_arbitration_sched_disable_set(struct panthor= _arbitration_sched *sch void panthor_arbitration_sched_disable_clear(struct panthor_arbitration_sc= hed *sched, enum panthor_arb_sched_disable_reason reason); =20 +void panthor_arbitration_sched_reset(struct panthor_arbitration_sched *sch= ed, u8 aw_id); + int panthor_arbitration_sched_on_request(struct panthor_arbitration_sched = *sched, u8 aw_id); int panthor_arbitration_sched_on_idle(struct panthor_arbitration_sched *sc= hed, u8 aw_id); int panthor_arbitration_sched_on_stopped(struct panthor_arbitration_sched = *sched, u8 aw_id); diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.= c b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c index 95c26015cb637..446f77fc67891 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_partition_control.c @@ -28,6 +28,7 @@ =20 #define AM_PART_COMMAND 0x100 #define AM_PART_SET_COMMAND(x) FIELD_PREP(GENMASK(7, 0), x) +#define AM_PART_GET_COMMAND(x) FIELD_GET(GENMASK(7, 0), x) #define PART_CMD_YIELD_IDLE 0x10 #define PART_CMD_YIELD_NOW 0x11 #define PART_CMD_CLOSE_WINDOW 0x20 @@ -40,6 +41,15 @@ #define PART_REG_POLL_SLEEP_US 10 #define PART_STATE_TRANSITION_TIMEOUT_US 5000000 =20 +/** struct panthor_partition_cmd - Partition command data */ +struct panthor_partition_cmd { + /** @cmd: AM_PARTITION_COMMAND value */ + u32 cmd; + + /** @aw_id: AW ID the command was sent for */ + int aw_id; +}; + /** * struct panthor_partition_control - Partition control data */ @@ -64,6 +74,9 @@ struct panthor_partition_control { =20 /** @closing: synchronous closing of the partition */ bool closing; + + /** @last_cmd: Last sent command */ + struct panthor_partition_cmd last_cmd; }; =20 static void partition_irq_suspend(struct panthor_partition_control *pc) @@ -101,18 +114,45 @@ static int partition_state_wait(struct panthor_partit= ion_control *pc, u32 state) false, pc); } =20 +static inline void +partition_command_write_untracked(struct panthor_partition_control *pc, u3= 2 cmd) +{ + gpu_write(pc->iomem, AM_PART_COMMAND, cmd); +} + +static void partition_command_write(struct panthor_partition_control *pc, + u32 cmd, int aw_id) +{ + lockdep_assert_held(&pc->lock); + + partition_command_write_untracked(pc, cmd); + + pc->last_cmd.cmd =3D cmd; + pc->last_cmd.aw_id =3D aw_id; +} + static int yield_now(struct panthor_partition_control *pc) { - gpu_write(pc->iomem, AM_PART_COMMAND, - AM_PART_SET_COMMAND(PART_CMD_YIELD_NOW)); + guard(spinlock_irqsave)(&pc->lock); + + partition_command_write(pc, AM_PART_SET_COMMAND(PART_CMD_YIELD_NOW), + pc->current_aw); =20 return 0; } =20 static int yield_idle(struct panthor_partition_control *pc) { - gpu_write(pc->iomem, AM_PART_COMMAND, - AM_PART_SET_COMMAND(PART_CMD_YIELD_IDLE)); + guard(spinlock_irqsave)(&pc->lock); + + /* + * This is a notification to yield the GPU once FW is idle. It is not + * a command that must succeed. Nothing of note is lost if the command + * fails apart from some minor scheduling optimisation losses. We can + * skip tracking this command. + */ + partition_command_write_untracked( + pc, AM_PART_SET_COMMAND(PART_CMD_YIELD_IDLE)); =20 return 0; } @@ -127,8 +167,8 @@ static int window_close(struct panthor_partition_contro= l *pc) =20 pc->closing =3D true; =20 - gpu_write(pc->iomem, AM_PART_COMMAND, - AM_PART_SET_COMMAND(PART_CMD_CLOSE_WINDOW)); + partition_command_write(pc, AM_PART_SET_COMMAND(PART_CMD_CLOSE_WINDOW), + pc->current_aw); =20 return 0; } @@ -153,8 +193,8 @@ static int window_open(struct panthor_partition_control= *pc, u8 aw_id) =20 guard(spinlock_irqsave)(&pc->lock); =20 - gpu_write(pc->iomem, AM_PART_COMMAND, - AM_PART_SET_COMMAND(PART_CMD_OPEN_WINDOW) | AM_PART_SET_WINDOW(aw_id)); + partition_command_write(pc, (AM_PART_SET_COMMAND(PART_CMD_OPEN_WINDOW) | + AM_PART_SET_WINDOW(aw_id)), aw_id); =20 pc->current_aw =3D aw_id; =20 @@ -166,6 +206,8 @@ static void partition_handle_reset_done(struct panthor_= partition_control *pc) bool notify_stopped =3D false; int aw_id; =20 + gpu_write(pc->iomem, AM_PART_IRQ_CLEAR, PART_RESET_DONE); + scoped_guard(spinlock_irqsave, &pc->lock) { aw_id =3D pc->current_aw; pc->current_aw =3D -1; @@ -181,6 +223,52 @@ static void partition_handle_reset_done(struct panthor= _partition_control *pc) panthor_arbitration_on_stopped(dev_get_drvdata(pc->dev), aw_id); } =20 +static void partition_handle_invalid_cmd(struct panthor_partition_control = *pc) +{ + bool on_err =3D false; + int aw_id; + + gpu_write(pc->iomem, AM_PART_IRQ_CLEAR, PART_INVALID_COMMAND); + + scoped_guard(spinlock_irqsave, &pc->lock) { + if (!pc->last_cmd.cmd) + return; + + if (pc->last_cmd.aw_id < 0) + return; + + if (pc->last_cmd.aw_id !=3D pc->current_aw) + return; + + switch (AM_PART_GET_COMMAND(pc->last_cmd.cmd)) { + case PART_CMD_YIELD_NOW: + case PART_CMD_CLOSE_WINDOW: + if (partition_state_get(pc) =3D=3D PART_STATE_WINDOW_OPEN) { + partition_command_write_untracked(pc, pc->last_cmd.cmd); + return; + } + break; + case PART_CMD_OPEN_WINDOW: + if (partition_state_get(pc) =3D=3D PART_STATE_RESET) { + partition_command_write_untracked(pc, pc->last_cmd.cmd); + return; + } else if (partition_aw_get(pc) =3D=3D pc->last_cmd.aw_id) { + return; + } + + on_err =3D true; + aw_id =3D pc->last_cmd.aw_id; + + break; + default: + return; + } + } + + if (on_err) + panthor_arbitration_notify_err(dev_get_drvdata(pc->dev), aw_id); +} + static irqreturn_t partition_irq_raw_handler(int irq, void *data) { struct panthor_partition_control *pc =3D data; @@ -194,9 +282,7 @@ static irqreturn_t partition_irq_raw_handler(int irq, v= oid *data) partition_handle_reset_done(pc); =20 if (status & PART_INVALID_COMMAND) - dev_warn(pc->dev, "%s: Invalid command", pc->name); - - gpu_write(pc->iomem, AM_PART_IRQ_CLEAR, status); + partition_handle_invalid_cmd(pc); =20 return IRQ_HANDLED; } --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011053.outbound.protection.outlook.com [52.101.70.53]) (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 0A6E451B17B for ; Tue, 22 Sep 2026 20:48:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.53 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110098; cv=fail; b=FiI2xYIlw+Mz8hT0gCG4O467qjR3d50THECWK9JOSQRZeZsJHE9VDPZk8UMipNpKhy2/aHVsycgcfk8x6ZWzVgemM7/E3AZ6YUR37l0jeb5XjaoNh+hgz2HUtXI2aI0vdCdEqvHq6pyjh96tela027hYiZzEPXCGrL0azFq5QLI= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110098; c=relaxed/simple; bh=/tK6DYhBnvumDcjRHJ3luvqgDc7cqoREm9uqGdGRyGg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TotE/QUdB6U6018U/3nPoEtEL+Z6nfVwHGiv32rLM/CgNZ+cjTgbUFsHddamOnB9qWH0r1Ouui31YBe/80rR0e59Od/OV2PHKFN+OndWnT5YO+L9mBuTKIo/2n8lYwDAwz06G8kmtdX6Yisa2+u9riG9DMnMVCN55Z77SzIgIfs= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=TV2O0CIC; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=TV2O0CIC; arc=fail smtp.client-ip=52.101.70.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="TV2O0CIC"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="TV2O0CIC" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=koJX6TUghNWxIwJIz3qzSzO7oD0beBP22ssnahK5oXVe9OvPw8OWKswKGhsvqymycD9rdgESleYbT0aRjrI5c3elYMkC/eSFRlNcbNEQfq9X8aDkIzcieZwL2i429iTBenUVUhbSFtiz+gylisXv+xmnRd42p7xlxNL8qTQUH8ldiSvXcuPRChG7lJ0ONCkhFC7YY7ZhQOyFUSrwKLsb+oO4T6bjeJqBFHL8H0LBklXL1VlFJKtJUQV4MTwIzMpd//nCVfvodmQ7vKO2ANWT2S8Q5SAecx2ro/SIQ94VX/pTpYRgLTUyjvdeVjYTjuCa7b5SKV0gW/wgSPSw39C6jw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=72XUu9qvcNAiKJ34JJWY5us9GNWTuLBsPfjcSZWzwZw=; b=IxSHXBO0ssXktu73XpLBaiJe9C0TcMXS2vcGR2kyzgkxuIKUzDTmtY9txtuPflgbxem0jBVdKgXHTAF8Tg+bz60MG0o702dA3RGs+sBc3VUk8+e74gbXYlF80YB/JsPJuXmyG6AttQMCmKVvvsyJLNPT7at4dd08Y4YDk+AjG+I6Y8KJT90LPTrRvPccAzeMUukOg2JRzh24W3qhqvJwn0nLDAOXdCYxEtvwJtEQRbsMp8Ptb/okpuhbAwR9MJPt13KcGqZ57gZz7f4vrO57nBraEgD/7kiUrS8sEpfIykT0AxXN4pruP0FJiaiDqGmp1cPzMjmEWN9yn7WhzzLfrw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=72XUu9qvcNAiKJ34JJWY5us9GNWTuLBsPfjcSZWzwZw=; b=TV2O0CICv2k0/dqqw6wq8osylF7fQ9TxM7LvLcnvf797bknPy3KsshUGsowGadYFYiUpT7NQXPH1BqtnthPZ4ZURsqqV+QIjOJ5BbugKFGesQc9W0PotqMh+0MU2wjM/bSXimjxouPlpf8E04jkjr0m3abftKG3Q23wrPUNyX88= Received: from WA2P291CA0027.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1f::18) by MI9PR08MB384524.eurprd08.prod.outlook.com (2603:10a6:290:bd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:47:53 +0000 Received: from WA1PEPF000099CC.eurprd04.prod.outlook.com (2603:10a6:1d0:1f:cafe::3c) by WA2P291CA0027.outlook.office365.com (2603:10a6:1d0:1f::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:47:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by WA1PEPF000099CC.mail.protection.outlook.com (10.167.242.20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:47:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ztla3sPigBJ6+Ecir9NFdXJ35QU8O3t7zfqcr3NeJU3sJy+QPuWv/ZTrbp1ef/sX0iikFNRtw7RjpRbra5KXGHJgfr1KC8ZzNJebO8tNIXda9hkZRxuFTMQ6/m4vPYGd7yDxa1SAn+4/M3AI4xNYgb2VYItZcyv+LeI0gShG7LI6ClmyaFvNW2NY4ToNxFd17yuNkf2Lcaj4iTy+wT2pnfYHOSwJVw62Oa7RyUaxB88o2nv3/eMSZZ6RpWTMbtI2OkCS/TdInDlhrMabawCGSnRZ2t9hlvHQ3bVai5PPTVKUFwxAVHPtPCZ/JSbjqOfRInLZ2F2W1kTVmCDjooFPTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=72XUu9qvcNAiKJ34JJWY5us9GNWTuLBsPfjcSZWzwZw=; b=cEtFhUoNPiB4YnGq5dLr6GLqV0qRvkFKBKH51ZMmysn64hOoCdiduIo1ohe3NAL/ydi9Qtj67j7ft3QavX1GQzIv223xY0gzJqkhWXa7Dxxz+EBXPu/OPGH9m2f/Crdpp6pu/DaKPUh9WgVDkWIKWIVTDoLwDzCtMUh0BN4yCLHdjlM8r5XX1VpSjAiEovtwR/Wsn41e4qdisYuacz/AVqJbH+QwPywFcApSUQZerCAgVYtWoAGrMA2ASFx3acaTccwlenn+pyb5jPacJjo2Zaf5WdCN+cHMPpFcyHKAR5L51/dY2HWw2CG6ve8ZSRGKn8awcP7gN0PsEMd7K1rHvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=72XUu9qvcNAiKJ34JJWY5us9GNWTuLBsPfjcSZWzwZw=; b=TV2O0CICv2k0/dqqw6wq8osylF7fQ9TxM7LvLcnvf797bknPy3KsshUGsowGadYFYiUpT7NQXPH1BqtnthPZ4ZURsqqV+QIjOJ5BbugKFGesQc9W0PotqMh+0MU2wjM/bSXimjxouPlpf8E04jkjr0m3abftKG3Q23wrPUNyX88= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:20 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:20 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 21/27] drm/panthor: Request AW to yield GPU access on idle Date: Tue, 22 Sep 2026 21:45:15 +0100 Message-ID: <20260922204535.2850094-22-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0082.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:349::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|WA1PEPF000099CC:EE_|MI9PR08MB384524:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e8088d1-b5d5-4e6e-6a49-08df18eac5b8 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: 59zFqj8BqaT+xgP5Tx6UCCX2Pgvt3tjj4PwIYwVqYY4MvVrsEOfhHLYRAmr6FquTboEDOnr4lJpVWvzBU3uXf+BKkAk6KbRmB7B7p0oUrti1r+G2Wci6+xAnUE4JpcV6/QF5UoNw3G1wGtbxRN4UGdQVlJZKi77y46ZEt5z9aQ12MFtMGdbxD3ekMsdVUlQc2IMCfBwS//xUMD4DHccrTr0ciEaSDIm1cWPRnBhm/VjfXeZtmw8h982lLAoFn6EXaib7yIEH2zC9E7ayBnA2+k2RYFZpK8AtW0GK7M8BTjperAnTBAVDQoUYPCTr6mb+GJ3dFvat6grnLHH+/9M+Kyp7XMRgubzYJhfYzRYYk0Bz9JARDP8Z1J76SYo39RfoNQ3nnWIoTNukYRlP8pGNa5BQBpHuQeu08wzjxwLv4805aIqMY4z/f46av8aCntbsvmtPpVB/kHaVB6trPVx72hr853P3fsLZHLxL3E4+x44MNiAq4/EuoawBKey6f6CYTbLeWGapomv5egQYXycK12TFLxHiHCCcbgP4EECS1Ht5dli5zzphS9ZbKzk0wjbjKOODK0ttGWG6qGALiV7ENFwtqW44xDXTaqql3q7AdlSJnLIgefxc8jn5fSoo9jRrXSqohkkKXMfm9YQtMtN2KmgZz2lAjHZrhLLBIxMqdww= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: JDhNK98Pko2xuW3ynsycJ74to5aXOHElVj0P3UtxWu5KKEQUHPnsL1/n7HTf0B/lBrtuXI069S072YqD8H0NYZ79xysa+JnD6NjC6YyOvNcYfvaGQc411LdTlYS7VdlaWH8O2l52bhffrzivmC4QkunYbJN90Ox7waq0Q10GuLy52ObemGY152Z8Sin1Bq94PbLA2LKp44nUH0sZtvy4W/JH7ZDwQNx/zFiK0UzupPDreGL4FL7cyPPirxPXsiUtwrMKHTh9+VwnKxPuUpENChLcmeKdisur5dn6nY4u84Ee/MADWrE4+YQJhHRzRtRQpNM1xelTW8r4AW4Xsvv0KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: WA1PEPF000099CC.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dc94089f-ce0e-4e8a-9a39-08df18eab204 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|14060799003|376014|82310400026|36860700016|23010399003|35042699022|6133799003|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: IuoKtCUJhFmQ53Kn0tyVLk4IeLxwGkqVPEY3/mm2xu87BfEyajYWOXvMfe00u3xMiF8hLDGN4m5EA70NuHt+A3t3aedr8XUdc1qsM+lg/LwkUTMSoj2XR/n0NCeX/pzkJIQMowYPZm3axDWpoHGJzbUzeXCwhpVT6lF9HaiY3XnoohE1WHQzukC/1kEx8gn9ONf5U4hD6qlivPHPZs9A8+cEzv01+yXGS74RFLO0jGKLqeZUx3Ua1UohKIk5Jq1F3lzVtKen3wh0uFnyMAxV09CRaCTq/DXLGYKFc524Je9BBnVEJm2E0Xjis2soRAI/PSoixGQd0Y0hetqJK+1vbiWy4p1xigHomVRewUUjI11aX9Q9+wdeQZzy3KDFYBbAz1TvS5BYNE1Qk8f2fej+NdohzEpb1Kt6WjhXKcdrrkj3EObZvSTKiXNhmSY0Msfc+/7hzxI9qIRE5cfUfVRB+wuj9UvOIhUKRwLtjR1tlOMmVukZThXaSIi7WZloscen3kCjv0eRL2MPqx+94WT2e3ts/SAXvVAbMa6xaGrgCLDRryS+wChnjGPHrEl/BK2ushebyPctUZKYh9StIrAKsCvaX6zKq7+RYUy66twhGh0A6Y8ApqWxQ1R5Uug5BebQBFAHtcNPxKomYa1RNog3yqeKOzOkzHqzv3hEW3Z0oAqAmNkqgq67FGhAE5rBX5HN2xGFAfe9JVRftJDef3V0RA== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(14060799003)(376014)(82310400026)(36860700016)(23010399003)(35042699022)(6133799003)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uGJK7wfDN14+/FRh9CXvv7XPgQ6SVeppx5rNAW6tTx9/TvoPSuh6FNj9+NTSaoWVB+9TtCwDHuVaevxq1mCMSJsPtXhNMa0wnHT96bzDA9gvLZI0JxCDMeMm/tzfPYvAt6qNKpxtLbQxHvNM7qtmetJ2q6v3Kab8hVHB8WGqcin0qbqdaa5cfT67qWneWEC754HUAKUjYwFaVk1Wx+g/uednCv4BT5c8GPeio9HcE3Bf5F2P76HUd0A2U6XJRAWu91JrfyRC735Ruu2gLyRI7wQQ+89utTXvCw3mgeuaWrflxEo1wW7qMkrlgw85jNaz+EXFC5VCAtaIqgoUjE015sy9ssuVR6WZHXlgqL5jOE2qnkzpoRU0kUITomK8eX4bKxLAPGDqdpeG57d1Jr1HiUWQDmrw88OYTXQsDA/WHsNnpm+fpyWfF+OrfCEmQc9K X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:47:52.6725 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8e8088d1-b5d5-4e6e-6a49-08df18eac5b8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: WA1PEPF000099CC.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MI9PR08MB384524 Content-Type: text/plain; charset="utf-8" v15 GPU introduces a YIELD_IDLE command/interrupt to signal an access window to relinquish GPU access as soon as it is idle. With FW v2, the GPU is immediately yielded when it detects the GPU is idle and the YIELD_IDLE interrupt is raised. For latency and CPU scheduling reasons, we want to avoid constantly yielding the GPU the moment it goes idle when there is only a singular access window requesting access. As such, we only send YIELD_IDLE when: - The GPU is granted to an access window and there are other access windows requesting GPU access. - A new GPU_REQUEST was received and the currently active access window was the singular requesting AW. Signed-off-by: Karunika Choo --- .../panthor/arbitration/panthor_arbitration.h | 1 + .../arbitration/panthor_arbitration_drv.c | 10 ++++++++++ .../arbitration/panthor_arbitration_sched.c | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h b/dr= ivers/gpu/drm/panthor/arbitration/panthor_arbitration.h index 53d64abb50379..c0e93f940fccb 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration.h @@ -75,6 +75,7 @@ int panthor_arbitration_on_grant(struct panthor_arbitrati= on *adev, u8 aw_id); int panthor_arbitration_on_stop(struct panthor_arbitration *adev, u8 aw_id= ); int panthor_arbitration_on_close(struct panthor_arbitration *adev, u8 aw_i= d); =20 +int panthor_arbitration_notify_yield_idle(struct panthor_arbitration *adev= , u8 aw_id); int panthor_arbitration_notify_err(struct panthor_arbitration *adev, u8 aw= _id); =20 #endif diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c = b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c index 3cdf03f3f4879..058fe39cbc002 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_drv.c @@ -298,6 +298,16 @@ int panthor_arbitration_on_close(struct panthor_arbitr= ation *adev, u8 aw_id) return panthor_partition_control_close_window(adev->pc[idx]); } =20 +int panthor_arbitration_notify_yield_idle(struct panthor_arbitration *adev= , u8 aw_id) +{ + int idx =3D to_assigned_sched_idx(adev, aw_id); + + if (idx < 0) + return idx; + + return panthor_partition_control_yield_idle(adev->pc[idx]); +} + int panthor_arbitration_notify_err(struct panthor_arbitration *adev, u8 aw= _id) { int idx =3D to_assigned_sched_idx(adev, aw_id); diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.= c b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c index df0785a80442c..df58fcc56e375 100644 --- a/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c +++ b/drivers/gpu/drm/panthor/arbitration/panthor_arbitration_sched.c @@ -347,6 +347,10 @@ static int arb_sched_next_locked(struct panthor_arbitr= ation_sched *sched) =20 arb_sched_grant_locked(sched); =20 + if (sched->phase =3D=3D ARB_SCHED_PHASE_GRANTED && + !kfifo_is_empty(&sched->queue)) + panthor_arbitration_notify_yield_idle(to_adev(sched), aw_id); + wake_up_all(&sched->waitqueue); =20 return 0; @@ -475,8 +479,18 @@ int panthor_arbitration_sched_on_request(struct pantho= r_arbitration_sched *sched * Grant timer for the current AW has previously expired, request it to * yield the GPU. */ - if (sched->grant_previously_expired) + if (sched->grant_previously_expired) { arb_sched_request_stop_locked(sched); + return 0; + } + + /* + * GPU was previously granted to a lone requesting AW, YIELD_IDLE was + * not sent to it. Send YIELD_IDLE to it now that multiple AWs are + * requesting for the GPU. + */ + if (sched->phase =3D=3D ARB_SCHED_PHASE_GRANTED && kfifo_len(&sched->queu= e) =3D=3D 1) + panthor_arbitration_notify_yield_idle(to_adev(sched), sched->active_aw_i= d); =20 return 0; } --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011020.outbound.protection.outlook.com [52.101.70.20]) (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 28C29442FBD for ; Tue, 22 Sep 2026 20:48:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.20 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110098; cv=fail; b=soSmn6mwCSzemaZ3TaAvKZ803K8wH6s88ZTE8MMLwjgHCRAurX8zBdckMdL75h2VZky5XrOu0Ar/rOJKyyxhwJ37mXGDsSW+vJJeYVVSrR77ENTL6oO+KWsSAPmLJ1+hBVhXxnsytayJMeHrwj0DRkp/sSwglWU9r/py+ujC/pA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110098; c=relaxed/simple; bh=B1GXfwI2JAeIA2IzK8oZzyE4CnpTo/QkOgj+pQKH+tw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XjjPoYeUUCblargfx93PcnZhi8l7M605sI2OU1uE6mAXVZSI50QkT6Q5kA/zMPeqvULcZSrkgy1cWxkkcjLuTHujR5Hg1hOr0cCAem4hmsPiNrflaKDQu97kyFX2wQpf1a9tK8xwGZ5+gLhW1VxpVDKX2btPtd2YMSNiZVfGNGk= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=rJxPGo9M; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=rJxPGo9M; arc=fail smtp.client-ip=52.101.70.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="rJxPGo9M"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="rJxPGo9M" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=elQbbMOO5Fs6la0rk8dnQtbt7zklQTPbVqgb54OVpWSAR9hqlxR2hZYUtVjH4p5oVxNMS4Q6fkW7LQIIqlIXUSuoSF3nucC8cHRQWca5oJDAVrPDYEyrEcS13wD7pxx5OI+oKOPz0PJulgx/lW/7vNoehNxaoVl3+MWwYdbxsvbvj4g5Si1f//8hZqk3G3v/f0rxyc5tbuwyC5KN8So0875QDqw5TqqlEtCmb5PoFQGTuYuhWImFmhqkkHEd99J2KM38Yz10GpEZF3O5UM574ORpc47IxMU1yu4Tgs+vVj92i+J2X+iwqw8RsPChj8NbGs7JOogBuSNAX/yKgHEW3w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i7XIj6UgR9genQilsHXaROT2459uobPhBSmMHHrzV5U=; b=KRWCdc+HuSyi0VYuSoiiIk8WthfLQiWBFK+y+lPz/hdEd+wE3sYHW+lWTvIj0lacdxzIJ3gen4kJd5/5Kb6B65nKEzboEKS1dlAfrJJgTGjHuaiNC6nUElpLx4OkwBvGNuhDte31FjVXie9tkp7QGOJv5yPU2EBPy3TtCkbEqAyA29qmpFK8C9bcCEVMj0CxZSsCsz2hZ7fwMcNMrW2yWs3px4zDBT85IhTaTjkykCl3awRBXT+k8zIXX04KbOuuJTKJKOfjNNZ654fxtFE25QCGn6vDBvjTlsmGD1zOVC6t04LC+I3aDB7d3qTwaB9uyu683ZCXQyAMjmgiApoW5Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i7XIj6UgR9genQilsHXaROT2459uobPhBSmMHHrzV5U=; b=rJxPGo9MVuKAod3L7TB4/X+28cI0pNt24i3vuBjWKFfQnxYcxCRg9BoeBLX5g6AkFOvv8DAbgYInziEbxzeeXBdAexEmRYdBoYCWcDMbrHUEspLx9ngcAm1sDR91zE8ujDhTHVcjUF4wPLFsNTQAjbxe/Dfi+QAmxJHQ7Mdyays= Received: from DUZPR01CA0344.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b8::9) by PAXPR08MB6527.eurprd08.prod.outlook.com (2603:10a6:102:156::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.9; Tue, 22 Sep 2026 20:48:02 +0000 Received: from MA3PEPF00000406.eurprd04.prod.outlook.com (2603:10a6:10:4b8:cafe::3d) by DUZPR01CA0344.outlook.office365.com (2603:10a6:10:4b8::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MA3PEPF00000406.mail.protection.outlook.com (10.167.241.151) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:48:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dYleMGpN7wCVHq4MlCxMk0lZUWDKbP6RXA0HkY4AugXv/ccVi+EdV4R8nu55zrdSsSMB+4j+CvxOmyq5G3QfBaPR5jnOBZWDLZZJrCp/3bmY3LnyIwm9/0qyeXWwFyWD83mrOUJvb58o2sD2blzakyf6tq+yIIo4tGgeGGMpwvEyi+I/7wJ946Tq5/Vsn9PDi0bbjxpAXw8+7zBRfISDdC4HcEm6U47DSQXBeOVs/qsjKipL2mXtKMuRa/sHRjgpiIuQ1uAaodAnZs0uOASe+VQa4GExNgxkIiYnd3x9Fso8O+wwBqj6bZrzSCXo6I4YjfQcKDEU/GBCAGNIWbRWSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i7XIj6UgR9genQilsHXaROT2459uobPhBSmMHHrzV5U=; b=DstSY9carExd89OoHcDDgbePu19vTNhUzN9Oo3V6tEn24IpY4N5sdbl3QBwfR+NqpdnVkdacSDQJsGVKgHfbJbmQj1AU2U2pzPInNE/ljkch53b5AEaaxai7kkrfyZ7yUEAGc5F3mHGBNkLuoMM9CzYI9yICwy8fsdwQXssqW0xNjLLOgspgSMh00fjTTHtZPHebzPVwNgxw2adH0PKr/MFCgNrC1y+31n6H35XsGg9uUB/vyF0sadOJufeAhHuMFOR/zhriGh1huOe4ze3EhSRfDAiBCWsxZl3B1T960BkL7PtTAomgZjCPGINFeFfK1hX38wbnVyju4DBBujCHEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i7XIj6UgR9genQilsHXaROT2459uobPhBSmMHHrzV5U=; b=rJxPGo9MVuKAod3L7TB4/X+28cI0pNt24i3vuBjWKFfQnxYcxCRg9BoeBLX5g6AkFOvv8DAbgYInziEbxzeeXBdAexEmRYdBoYCWcDMbrHUEspLx9ngcAm1sDR91zE8ujDhTHVcjUF4wPLFsNTQAjbxe/Dfi+QAmxJHQ7Mdyays= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:29 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:28 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 22/27] drm/panthor: Add access-window support Date: Tue, 22 Sep 2026 21:45:16 +0100 Message-ID: <20260922204535.2850094-23-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0540.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:319::6) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|MA3PEPF00000406:EE_|PAXPR08MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: b3fd19a5-5412-437c-5351-08df18eacb38 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|3023799007|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: /kznXf5YQs125UjRpDJYLuWC8QuJUzi6xqSwaf/94tAGZHgXmvv65hMqDBOcCY09ZjoDi44etdeIygye7SilixwsYLr2i2Su6rEZ2YKjFHwI2+L8LfVvU0fBmGFPEEP4lpeVqBgLSHaYcWORQA6L7o3hBjHkKwVFn63/Q0vjzq9lc+Z3KqyAwrc38N2AvQ706SdLaWXxTKfHjkWyD3uNRGVS8iMLKaTqp+Kq4ukbg68nT/bVDERfcdygpCRXtTkyYjnLs12k7OWWjhH1HkZpRZpxoILRgD63ZLz1q28A45T4SeWrSCuoVCKvNu8eAMjRcbpA1M6q0I9fURwXmbKjXfkWIdUTKAJJT4l06d4PIXM54KE44SxFS1TuEvg6pjxHrqBhKdZCj1gaUv7ij0osqUepgJKlCbYlbXHXG+A2fz3mTiD7u/QiOZK+V2Oj40y3nyfRg2LixqDhHLTxqeyqd5IRjGaQNm8mg+N0QaQRpaEGGLB3uFk3tY2aMFdrGytUIDz1hqUNoGFL6g4QwN8JlgLXcBOazSKFg3O8FbbjTNHRKID82Tnp0gw/q6Bxd/ynnPv49HV4GR/LQ8L7JrxEOzmCIGXXQZ7GDnIuLlFl2m4NBFLSNef6dMJvsbK034c9btPf3IyhlSNhA4qIB+xS690/+vZoH2hZktGD1p17uPE= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(3023799007)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: fUh/B5MuK/xBJhQhYTi4TVtmgKHLQAWQLIHyjcxbgqUgXfBts9hpskiot0zyIT/tvOaNDzIbExsBvm4tMY4e+C1f1E3RdO/98x9PwcnhzzItymaZ8RmEvIKvRaG3VVPVVig8FXmY66OivN/FlAZwwC8Bl0bhbdFYgzEXGM+dMk6rtDNx2irpXd92XoQ4ScTL1C8uHnZb7uj4tz1lSuAW2NViS3anaR2fEST+B95ny3l02LgxcJD5XjIv21DtwGe3e6KTq2odECWi0b9SXe4gXisjcpPAr95mDmeisu7PgJieD+nBop8BaFIM34NmfbSvNZFp9axTd4zbhdfpmPbtlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MA3PEPF00000406.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c14c91ae-4a16-4651-4ecc-08df18eab6c0 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|82310400026|14060799003|36860700016|23010399003|376014|1800799024|11063799006|10067099003|56012099006|6133799003|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: KgYMDVVMtLsaxQ6SX2Iobr+DOyHXx3QPDdAn3/O5jDn8vfyd4OYhOd514XPGPg9yUu/ViheQnbMKfnEB9ATe+8BeWdu1UQmiXZaBhCjiTTEpJQ9A4q/bX56OxtE2Y5y+quR3HfPTKX3szKhUbmJRPuhWZH6NmSSpH3AHnF76tFGBZ9pzRT3nvHKtrCTMF9AKr5Z4AxF4GqGHGUPsOgk2KQ8FhMd9+SfT7pjMw5V26YnndOfuWRVPAnbPAR8lqa3jxsf4dLeJZ0h82+AjZ4HCbXqKzMtONszWsGRMfkqSHRvkEsGMf4G17kdUUp36CVdJSG2uG1L0oHfNIwmO4+ZyMKeCfdhva+4EbW+3axhO/Pb15wKwypVkG0ohnFYW5umBT97sJidew4ui9Kx2PPpVY+N1mFoMixCS8MjvO5KnsG3KgLpsVWuItPaapXFVzF4p5NuZMmHi7j8UAKkSivaCqE5egN9NMnZVbQNWJxRnijdW63NMEzwa9IkI4WS6oZklyNwEyXKvY7HY/aC5Js7cgHLCSK1fV5QERo0c3HOd/n1S6e4OSnxcgDroDAMlcKpPW+99ga28svASd+EFasyHVLIAeHgtmfym+RsGhUuuE4v3iSr8zuBs6BCJ/UDyZEcz6Xh483xBAqoMCEP13t4LVuHSj4F5iBARH6qLsLuJnzX9aoSvpJ11Z+sy4vfu2T3/L+XDnG0ymO+HOOqDsBZEoQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(82310400026)(14060799003)(36860700016)(23010399003)(376014)(1800799024)(11063799006)(10067099003)(56012099006)(6133799003)(3023799007)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w92lyoeaphdnQgh9iiV7cuLcWwLEQCNRATRicnpNvlY5/ewsk72s4lRhakqufZyG93UIX/sNOAMj2Qr2fH0PlhoLZA9sUV4L9rENe0GsBaYGyxiYdVNR2AqMhNFVtePunbyXa8N6fkCT52zNWjvHCSox7NvI8aAynvx/RdIP1nG632MK0IlXvdHug+pJQ/SPbm99UYSugJQUKTMruxFW9uNIo8cy1oeHGK525LFXHuJLyutaSNHywh4ApQU+2+P7M0qypmtqOf977cLyRYQWclsacOIjjlphlLM4SYsLtpEbGF3za2dySMNpyPVK9d6eY5roW6AHttGtVa5GA7vZkCZgvtVsnm8Rj6b4Fnf8SfGp0t9zgIi/4OPKWLsbzo0alo7KXvCYL/WL50yk6yiQjRrlmLDcIiUkVUbEbOTuI6oUOzeAoN64JcrSBmdmC2vc X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:01.8889 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b3fd19a5-5412-437c-5351-08df18eacb38 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MA3PEPF00000406.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6527 Content-Type: text/plain; charset="utf-8" Add the VM-side access-window component for v15 GPUs. The new code handles AM message handshakes, requests GPU access from the arbiter, waits for the window-open interrupt, and yields access on suspend. Split panthor_hw_init into bind device and initialize gpu_info after panthor_aw has ensured GPU access. Signed-off-by: Karunika Choo --- v1: - Adapt AW IRQ handling to the updated IRQ locking/state interfaces and reuse panthor_irq_suspend(). - Handle -ENOSPC from AM message sending when the outgoing FIFO is full. drivers/gpu/drm/panthor/Makefile | 1 + drivers/gpu/drm/panthor/panthor_aw.c | 416 +++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_aw.h | 42 +++ drivers/gpu/drm/panthor/panthor_device.c | 15 +- drivers/gpu/drm/panthor/panthor_device.h | 4 + drivers/gpu/drm/panthor/panthor_hw.c | 8 +- drivers/gpu/drm/panthor/panthor_hw.h | 2 + 7 files changed, 481 insertions(+), 7 deletions(-) create mode 100644 drivers/gpu/drm/panthor/panthor_aw.c create mode 100644 drivers/gpu/drm/panthor/panthor_aw.h diff --git a/drivers/gpu/drm/panthor/Makefile b/drivers/gpu/drm/panthor/Mak= efile index 5d4d0ae64952e..aa48212653dc3 100644 --- a/drivers/gpu/drm/panthor/Makefile +++ b/drivers/gpu/drm/panthor/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 or MIT =20 panthor-y :=3D \ + panthor_aw.o \ panthor_devfreq.o \ panthor_device.o \ panthor_drv.o \ diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c new file mode 100644 index 0000000000000..848fd64eb51b5 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -0,0 +1,416 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#include + +#include +#include +#include + +#include "panthor_am_msg.h" +#include "panthor_aw.h" +#include "panthor_device.h" +#include "panthor_fw.h" +#include "panthor_hw.h" +#include "panthor_sched.h" + +#include "panthor_trace.h" + +#define WINDOW_CONTROL_BASE 0x0 +#define WINDOW_CONTROL_SIZE 0x1000 + +#define WINDOW_STATUS 0x43c +#define WINDOW_STATUS_IRQ_WINDOW_CONTROL BIT(0) +#define WINDOW_STATUS_IRQ_GPU_CONTROL BIT(1) +#define WINDOW_STATUS_IRQ_GPU_POWER BIT(2) +#define WINDOW_STATUS_IRQ_JOB_CONTROL BIT(3) +#define WINDOW_STATUS_IRQ_MMU_CONTROL BIT(4) +#define WINDOW_STATUS_WINDOW_OPEN BIT(31) + +#define WINDOW_INT_BASE 0x440 +#define WINDOW_IRQ_MESSAGE BIT(0) +#define WINDOW_IRQ_INVALID_ACCESS BIT(1) +#define WINDOW_IRQ_WINDOW_OPENING BIT(2) +#define WINDOW_IRQ_WINDOW_OPENED BIT(3) +#define WINDOW_IRQ_WINDOW_CLOSED BIT(4) + +#define WINDOW_MESSAGE_BASE 0x460 + +#define WINDOW_IRQ_MASK \ + (WINDOW_IRQ_MESSAGE | WINDOW_IRQ_WINDOW_OPENED | WINDOW_IRQ_WINDOW_CLOSED) + +#define PANTHOR_AW_HANDSHAKE_TIMEOUT_MS (5 * MSEC_PER_SEC) +#define PANTHOR_AW_GPU_REQUEST_TIMEOUT_MS (5 * MSEC_PER_SEC) +#define PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS (5 * MSEC_PER_SEC) + +#define panthor_aw_wait_cond(_aw, _cond, _timeout_ms) \ +({ \ + int __ret =3D 0; \ + if (!wait_event_timeout((_aw)->waitqueue, _cond, \ + msecs_to_jiffies(_timeout_ms))) \ + if (!(_cond)) \ + __ret =3D -ETIMEDOUT; \ + __ret; \ +}) + +struct panthor_aw { + /** @ptdev: Pointer to Panthor device */ + struct panthor_device *ptdev; + + /** @iomem: CPU mapping of WINDOW_CONTROL iomem region */ + void __iomem *iomem; + + /** @irq: IRQ data */ + struct panthor_irq irq; + + /** @msg: Messaging data */ + struct panthor_am_msg msg; + + /** @waitqueue: Event wait queue. Not IRQ safe */ + wait_queue_head_t waitqueue; + + /** @state: Current state of the AW */ + atomic_t state; + + /** @wq: Scheduler workqueue to dispatch events */ + struct workqueue_struct *wq; + + /** @msg_retry_work: Work to resend messages */ + struct work_struct msg_retry_work; +}; + +static bool panthor_aw_is_open(struct panthor_aw *aw) +{ + return gpu_read(aw->iomem, WINDOW_STATUS) & WINDOW_STATUS_WINDOW_OPEN; +} + +static void panthor_aw_state_set(struct panthor_aw *aw, enum aw_states new) +{ + atomic_set(&aw->state, new); + + wake_up_all(&aw->waitqueue); +} + +static bool panthor_aw_state_try_set(struct panthor_aw *aw, + enum aw_states expected, + enum aw_states new) +{ + int old_state =3D atomic_cmpxchg(&aw->state, expected, new); + bool res =3D (old_state =3D=3D expected); + + if (res) + wake_up_all(&aw->waitqueue); + + return res; +} + +static int panthor_aw_state_wait(struct panthor_aw *aw, enum aw_states tar= get, u32 timeout_ms) +{ + return panthor_aw_wait_cond(aw, atomic_read(&aw->state) =3D=3D target, ti= meout_ms); +} + +static int panthor_aw_state_wait_transition(struct panthor_aw *aw, u32 tim= eout_ms) +{ + return panthor_aw_wait_cond( + aw, + (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_READY || + atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_GPU_GRANTED), + timeout_ms); +} + +static void panthor_aw_msg_retry_work(struct work_struct *work) +{ + struct panthor_aw *aw =3D + container_of(work, struct panthor_aw, msg_retry_work); + struct panthor_am_msg *msg =3D &aw->msg; + int ret; + + ret =3D panthor_am_msg_retry(msg); + if (ret =3D=3D -EINVAL) + drm_warn(&aw->ptdev->base, "Send FIFO unexpectedly empty"); + + if (ret =3D=3D -EBUSY || ret =3D=3D -EAGAIN) + queue_work(aw->wq, &aw->msg_retry_work); +} + +static void panthor_aw_send_msg(struct panthor_aw *aw, u64 message) +{ + struct panthor_device *ptdev =3D aw->ptdev; + int ret; + + ret =3D panthor_am_msg_send(&aw->msg, message); + if (ret =3D=3D -ENOSPC) + drm_err(&ptdev->base, "Send FIFO is full"); + + if (ret =3D=3D -EBUSY) { + drm_dbg(&ptdev->base, "Pending messages, scheduling retry work"); + queue_work(aw->wq, &aw->msg_retry_work); + } +} + +static void panthor_aw_handshake_handle(struct panthor_aw *aw, u64 message) +{ + struct panthor_device *ptdev =3D aw->ptdev; + bool acked =3D AM_MSG_ACK_GET(message); + u8 version =3D AM_MSG_VERSION_GET(message); + int ret; + + ret =3D panthor_am_msg_version_validate(&aw->msg, version); + if (ret =3D=3D -EOPNOTSUPP) + drm_warn(&ptdev->base, + "Msg protocol version less than minimum supported (%u < %u)", + version, AM_MSG_MIN_SUPPORTED_VERSION); + + if (!acked) { + u64 reply =3D VM_ARB_INIT_MAKE(1, aw->msg.version); + + panthor_aw_send_msg(aw, reply); + + /* TODO: Handle AW restart */ + } + + panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_INIT, PANTHOR_AW_STATE_READ= Y); +} + +static void panthor_aw_handshake_init(struct panthor_aw *aw) +{ + u64 message =3D VM_ARB_INIT_MAKE(0, AM_MSG_CURRENT_VERSION); + + panthor_aw_send_msg(aw, message); +} + +static void panthor_aw_handle_message(struct panthor_aw *aw) +{ + struct panthor_device *ptdev =3D aw->ptdev; + const u64 message =3D panthor_am_msg_read(&aw->msg); + const u8 msg_id =3D AM_MSG_ID_GET(message); + + /* currently only support ARB_VM_INIT */ + if (msg_id =3D=3D ARB_VM_INIT) + panthor_aw_handshake_handle(aw, message); + else + drm_warn(&ptdev->base, "Unsupported msg id (0x%x)", msg_id); +} + + +static irqreturn_t panthor_aw_irq_raw_hander(int irq, void *data) +{ + struct panthor_irq *pirq =3D data; + struct panthor_device *ptdev =3D pirq->ptdev; + struct panthor_aw *aw =3D ptdev->aw; + u32 status; + + scoped_guard(spinlock_irqsave, &pirq->lock) { + if (pirq->state !=3D PANTHOR_IRQ_STATE_ACTIVE) + return IRQ_NONE; + } + + status =3D gpu_read(pirq->iomem, INT_STAT); + if (!status) + return IRQ_NONE; + + if (status & WINDOW_IRQ_MESSAGE) + panthor_aw_handle_message(aw); + + /* TODO: handle WINDOW_CLOSED*/ + + if ((status & WINDOW_IRQ_WINDOW_OPENED) && panthor_aw_is_open(aw)) + panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_STATE_GPU_GRANTED); + + gpu_write(pirq->iomem, INT_CLEAR, status); + + return IRQ_HANDLED; +} + +static void panthor_aw_irq_suspend(struct panthor_irq *pirq) +{ + panthor_irq_suspend(pirq); +} + +static void panthor_aw_irq_resume(struct panthor_irq *pirq) +{ + guard(spinlock_irqsave)(&pirq->lock); + + pirq->state =3D PANTHOR_IRQ_STATE_ACTIVE; + gpu_write(pirq->iomem, INT_MASK, pirq->mask); +} + +static int panthor_request_aw_irq(struct panthor_device *ptdev, + struct panthor_irq *pirq, int irq, u32 mask, + void __iomem *iomem) +{ + int ret; + + pirq->ptdev =3D ptdev; + pirq->irq =3D irq; + pirq->mask =3D mask; + pirq->iomem =3D iomem; + spin_lock_init(&pirq->lock); + + ret =3D devm_request_irq(ptdev->base.dev, irq, panthor_aw_irq_raw_hander, + IRQF_SHARED, "panthor-aw", pirq); + if (ret) + return ret; + + panthor_aw_irq_resume(pirq); + + return 0; +} + +static int panthor_aw_request(struct panthor_aw *aw) +{ + int ret; + +again: + switch (atomic_read(&aw->state)) { + case PANTHOR_AW_STATE_GPU_GRANTED: + return 0; + + case PANTHOR_AW_STATE_READY: + break; + + case PANTHOR_AW_STATE_INIT: + panthor_aw_handshake_init(aw); + ret =3D panthor_aw_state_wait(aw, PANTHOR_AW_STATE_READY, + PANTHOR_AW_HANDSHAKE_TIMEOUT_MS); + if (ret) + return ret; + goto again; + default: + ret =3D panthor_aw_state_wait_transition( + aw, PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); + if (ret) + return ret; + goto again; + } + + if (!panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_READY, + PANTHOR_AW_STATE_GPU_REQUEST)) + goto again; + + panthor_aw_send_msg(aw, VM_ARB_GPU_REQUEST); + + /* Wait for GPU to be granted */ + ret =3D panthor_aw_state_wait(aw, PANTHOR_AW_STATE_GPU_GRANTED, + PANTHOR_AW_GPU_REQUEST_TIMEOUT_MS); + if (ret) { + panthor_aw_state_set(aw, PANTHOR_AW_STATE_READY); + return ret; + } + + return 0; +} + +static int panthor_aw_yield(struct panthor_aw *aw) +{ + panthor_aw_send_msg(aw, VM_ARB_GPU_STOPPED); + + return panthor_aw_state_wait(aw, PANTHOR_AW_STATE_READY, + PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); +} + +int panthor_aw_init(struct panthor_device *ptdev) +{ + struct panthor_aw *aw; + int irq; + int ret; + + if (!panthor_hw_has_gpu_discover(ptdev)) + return 0; + + aw =3D drmm_kzalloc(&ptdev->base, sizeof(*aw), GFP_KERNEL); + if (!aw) + return -ENOMEM; + + aw->wq =3D drmm_alloc_ordered_workqueue(&ptdev->base, "panthor-aw-wq", 0); + if (!aw->wq) + return -ENOMEM; + + aw->ptdev =3D ptdev; + aw->iomem =3D ptdev->iomem; + + INIT_WORK(&aw->msg_retry_work, panthor_aw_msg_retry_work); + + init_waitqueue_head(&aw->waitqueue); + atomic_set(&aw->state, PANTHOR_AW_STATE_INIT); + + panthor_am_msg_init(&aw->msg, aw->iomem + WINDOW_MESSAGE_BASE); + + ptdev->aw =3D aw; + + irq =3D platform_get_irq_byname(to_platform_device(ptdev->base.dev), "gpu= "); + if (irq < 0) + return irq; + + ret =3D panthor_request_aw_irq(ptdev, &aw->irq, irq, WINDOW_IRQ_MASK, + aw->iomem + WINDOW_INT_BASE); + if (ret) + return ret; + + ret =3D panthor_aw_request(aw); + if (ret) + return ret; + + return 0; +} + +void panthor_aw_unplug(struct panthor_device *ptdev) +{ + struct panthor_aw *aw =3D ptdev->aw; + + if (!aw) + return; + + disable_work_sync(&aw->msg_retry_work); + + panthor_aw_irq_suspend(&aw->irq); +} + +int panthor_aw_resume(struct panthor_device *ptdev) +{ + struct panthor_aw *aw =3D ptdev->aw; + int ret; + + if (!aw) + return 0; + + panthor_aw_irq_resume(&aw->irq); + + ret =3D panthor_aw_request(aw); + if (ret) { + drm_warn(&ptdev->base, "Timedout waiting for GPU to be granted"); + goto err_out; + } + + return 0; + +err_out: + panthor_aw_irq_suspend(&aw->irq); + return ret; +} + +int panthor_aw_suspend(struct panthor_device *ptdev) +{ + struct panthor_aw *aw =3D ptdev->aw; + int ret =3D 0; + + /* suspend hw components directly if AW is not supported */ + if (!aw) + return 0; + + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_READY) + goto out_irq_suspend; + + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_GRANTED, + PANTHOR_AW_STATE_GPU_STOPPED)) + ret =3D panthor_aw_yield(aw); + else + ret =3D panthor_aw_state_wait( + aw, PANTHOR_AW_STATE_READY, + PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); + +out_irq_suspend: + panthor_aw_irq_suspend(&aw->irq); + return ret; +} diff --git a/drivers/gpu/drm/panthor/panthor_aw.h b/drivers/gpu/drm/panthor= /panthor_aw.h new file mode 100644 index 0000000000000..c2b89caa87c48 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_aw.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2026 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_AW_H__ +#define __PANTHOR_AW_H__ + +#include + +struct panthor_device; + +/** + * enum aw_states - Enumeration of possible Access Window states + */ +enum aw_states { + /** @PANTHOR_AW_STATE_INIT: Initial state, prior to handshake. */ + PANTHOR_AW_STATE_INIT =3D 0, + + /** @PANTHOR_AW_STATE_READY: Handshake with Resource Group completed. */ + PANTHOR_AW_STATE_READY, + + /** @PANTHOR_AW_STATE_GPU_REQUEST: AW requested for GPU access. */ + PANTHOR_AW_STATE_GPU_REQUEST, + + /** @PANTHOR_AW_STATE_GPU_GRANTED: AW is granted GPU access. */ + PANTHOR_AW_STATE_GPU_GRANTED, + + /** @PANTHOR_AW_STATE_GPU_STOP: AW is requested to stop GPU access. */ + PANTHOR_AW_STATE_GPU_STOP, + + /** @PANTHOR_AW_STATE_GPU_STOPPED: AW has stopped GPU access. */ + PANTHOR_AW_STATE_GPU_STOPPED, +}; + +int panthor_aw_init(struct panthor_device *ptdev); + +void panthor_aw_unplug(struct panthor_device *ptdev); + +int panthor_aw_resume(struct panthor_device *ptdev); + +int panthor_aw_suspend(struct panthor_device *ptdev); + +#endif diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 9687c59de3505..98c0dd3ce7bcb 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -16,6 +16,7 @@ #include #include =20 +#include "panthor_aw.h" #include "panthor_devfreq.h" #include "panthor_device.h" #include "panthor_fw.h" @@ -100,6 +101,7 @@ void panthor_device_unplug(struct panthor_device *ptdev) panthor_gem_shrinker_unplug(ptdev); panthor_gpu_unplug(ptdev); panthor_pwr_unplug(ptdev); + panthor_aw_unplug(ptdev); =20 pm_runtime_dont_use_autosuspend(ptdev->base.dev); pm_runtime_put_sync_suspend(ptdev->base.dev); @@ -259,10 +261,18 @@ int panthor_device_init(struct panthor_device *ptdev) if (ret) goto err_rpm_put; =20 - ret =3D panthor_pwr_init(ptdev); + ret =3D panthor_aw_init(ptdev); if (ret) goto err_rpm_put; =20 + ret =3D panthor_hw_info_init(ptdev); + if (ret) + goto err_unplug_aw; + + ret =3D panthor_pwr_init(ptdev); + if (ret) + goto err_unplug_aw; + ret =3D panthor_gpu_init(ptdev); if (ret) goto err_unplug_pwr; @@ -322,6 +332,9 @@ int panthor_device_init(struct panthor_device *ptdev) err_unplug_pwr: panthor_pwr_unplug(ptdev); =20 +err_unplug_aw: + panthor_aw_unplug(ptdev); + err_rpm_put: pm_runtime_put_sync_suspend(ptdev->base.dev); return ret; diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index ba93a100ceda2..960e06236fc03 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -20,6 +20,7 @@ =20 #include "panthor_device_io.h" =20 +struct panthor_aw; struct panthor_csf; struct panthor_csf_ctx; struct panthor_device; @@ -201,6 +202,9 @@ struct panthor_device { /** @hw: GPU-specific data. */ struct panthor_hw *hw; =20 + /** @aw: AW-specific data */ + struct panthor_aw *aw; + /** @pwr: Power control management data. */ struct panthor_pwr *pwr; =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 9d539f5f80158..0bbd102fa1890 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -350,7 +350,7 @@ static int panthor_gpu_info_init(struct panthor_device = *ptdev) return overload_shader_present(ptdev); } =20 -static int panthor_hw_info_init(struct panthor_device *ptdev) +int panthor_hw_info_init(struct panthor_device *ptdev) { u64 l2_features; u32 major, minor, status; @@ -463,9 +463,5 @@ int panthor_hw_init(struct panthor_device *ptdev) if (ret) return ret; =20 - ret =3D panthor_hw_bind_device(ptdev); - if (ret) - return ret; - - return panthor_hw_info_init(ptdev); + return panthor_hw_bind_device(ptdev); } diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index e5bcb908068cb..8972b510287a4 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -65,6 +65,8 @@ struct panthor_hw { }; =20 int panthor_hw_init(struct panthor_device *ptdev); +int panthor_hw_info_init(struct panthor_device *ptdev); + int panthor_hw_power_status_register(void); void panthor_hw_power_status_unregister(void); =20 --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013028.outbound.protection.outlook.com [52.101.83.28]) (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 1A97A5505F0 for ; Tue, 22 Sep 2026 20:48:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.28 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110109; cv=fail; b=Z1OSTKDq6lDHNLUMblQEhkoyZFYhhFOOwYqE/s68UeqC8uS/DQN06U2FnbJm+chOYAAkaK+otQCcukJ/aSMTU2YLnqmxMT9nwZ2PEjiforX7WqzmPx79HQ7FRZ0rZywUraJYB9H5tnF5e1y8NWXIoq2FbBTYbyK1Q8SvnWHBRAU= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110109; c=relaxed/simple; bh=b+oJAZ8CG1aeOqT06EYMMzBlhCzwPwTud1AbalMswUc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=X02qLwu7lDeV7fHP/CbxUbEo44Nhen7xzHTlICSeZklfMBHcl/FUCVwR8DfEOH+qvqXF8uNhZvqHvjgLgvy+AopTfcKHRUToiw4Z3lVR88Y4vkidja9icUM+7w/nHjViRdQDcnp2s5Qc9/ux93E/jVjNUw3co9tlHFbYcZV6mgo= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=m9dH+Gse; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=m9dH+Gse; arc=fail smtp.client-ip=52.101.83.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="m9dH+Gse"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="m9dH+Gse" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=N+21Vgs029I7oC2NEUPVF7rFTUkXKkZHB99COn0M6hscIRli3PPDxuhSK96i3T9ZSKAdyYHOU5V9tat9BX6Uga5A7g7DUKDb6dOMKIdsgw7Y+AK0U/C0Ch2FO3zBxyUbKprpOPGfFXa8ldoi6riFTVVN0WcY9miOqGq1o+wIJXULk8enS+cCEQ02RN6YfbmrjylOKEAIrvxZYvSCCgqztkRnnWQ7lSjActHazRPHruHdHyKwf5uPk3oSD5C970u4sf0derxMpqnyssmNnl/pxgJus+DjZDGVyvEelwg81LmVaNKk3WfxXgQxv66mfJbxJIsKPuTBh4CshUlYBz5PcA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3O8HMqwZOBiUDO+yQIot2F0/bZaTbSJr678HuFSXmLg=; b=iXHxFl2m62rDzGp0xz/fWZA5tZFsQoL2ot+KggQHYmabdW1I3f59T+dHSWlBFM7qLYtzQ5sP65UYHxX9DA5ipP76kR0ls7WTaEYDD93BSxpSPu3aK3d1/oPrkaV2WswRzg77QTtoJzEw8JwgJZw3mgmMu/yNgoX5KeMw4s0aJWBnqRgcMGZyt3Ys8PZCi5P2UppXGa7ONyXJB6lYwBCTu8AaKUVHDhWEjS8x3Y5F60jO5YSADMu/c6NJ+Q0jDDIY2fa5NvWVjUKpzoqVkrVYuwSSe1Qe3RRaW28i1GF5gR2YnMB2WzdTxqwAPkIXj2Arn54o/wFwAsCCnIykUgDhKg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3O8HMqwZOBiUDO+yQIot2F0/bZaTbSJr678HuFSXmLg=; b=m9dH+GsezsVRBQEOBwtJ3vmLlgyN8ZjvC+SzGtJT4kF8U21BakUS/jc1wKfoRB5zQyCz0b57UW2wO8JfAiJaZrioxnSaNBudaSyyK/0rD3j6Rg/qzd06qPlsDDoLWNoF3JxtE+GTccvg76e1/vrOMjnqtUUL4Ba38Zm6j2gqYak= Received: from DU6P191CA0051.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53e::7) by AS1PR08MB7499.eurprd08.prod.outlook.com (2603:10a6:20b:4dc::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:48:03 +0000 Received: from DB1PEPF000509E8.eurprd03.prod.outlook.com (2603:10a6:10:53e:cafe::11) by DU6P191CA0051.outlook.office365.com (2603:10a6:10:53e::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:03 +0000 X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509E8.mail.protection.outlook.com (10.167.242.58) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Tue, 22 Sep 2026 20:48:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wNIqCOeRkEWf4Bf8k2cOsuReMFvwLnpnRqTpkkwQk+AiEsOvYUrN9DL8bPUPeURsSdnK/MifSQoBxJY/mTm27wH+LK/UsAr6IMD1zX1BjklZNHmDX5yjvujHT/Ic0Zv9W3SdTeYTNAKoQnWHPHNz8phJ/rnqGHzy+SCK1MMcSVMEhrR0cprc7FIRtqBEQba+df24XEqukB/BG/HewPcvX93tW+o+vXVpDdfpWDmRsxgIXXsXri5mjprU4z3baAXG/ODG+9VfQsKWAMLhxuQ4I/3F56lHgfXFAcS4iOY9BoFCOWCGBOtK5VRa1mV7P64agbxdgLrHMikT/Hpsqp3Jnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3O8HMqwZOBiUDO+yQIot2F0/bZaTbSJr678HuFSXmLg=; b=Mwlz8SQPcxZ+ig6FQe74I1LOe3zlQU1eO5tjg9yaP0+rnhSPzNAuFCabWJA5MJBLo3xq/cgHZ+cvBhetZyA5ziGJ64bME8OVui7dhBq27bjx8lP3DZCi9a8Nxtqm180SAj7dK1VISiZ5+uxQDITsQURQrFYRcxaGolNimWbHiLoAzcUx2WhCs2Fj1WjoSfz+00UtGHmMiV7tf3ufD7nl/GpCFFq7OCu4XQVj5Mkcaq0V4QZtuMbX/WXDO28U6JFaKrH05t3MZSuqTcyn8t4pqA8G8j45uX5OmshRtrVjlexKzubi5rhd+vBXP3+QPefrVBH6o3raZ+wM17CdISO6hQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3O8HMqwZOBiUDO+yQIot2F0/bZaTbSJr678HuFSXmLg=; b=m9dH+GsezsVRBQEOBwtJ3vmLlgyN8ZjvC+SzGtJT4kF8U21BakUS/jc1wKfoRB5zQyCz0b57UW2wO8JfAiJaZrioxnSaNBudaSyyK/0rD3j6Rg/qzd06qPlsDDoLWNoF3JxtE+GTccvg76e1/vrOMjnqtUUL4Ba38Zm6j2gqYak= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:30 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:30 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 23/27] drm/panthor: Synchronize HW component PM transitions Date: Tue, 22 Sep 2026 21:45:17 +0100 Message-ID: <20260922204535.2850094-24-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0217.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:33a::14) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|DB1PEPF000509E8:EE_|AS1PR08MB7499:EE_ X-MS-Office365-Filtering-Correlation-Id: e55a212b-5661-47b1-58de-08df18eacbdf X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: kmox6Q5dZ0mcT8QCmgoKtmFLVZ1W+3Z5mV0peYoTSk8oXuukRcZ4QTHzImguSxS1LSFfFI48iN7eyez5zQkN2rzWYTlEOi0LtiynI8OuLo4ewjSlG5FWqjn7RDAkCdS/wCTcVnWNIaSRmB2RtvFl2fzggsXeaHcwiOA307R//TLv/uUK07GFbHvT0t375QIsalDwnLSByi7w4lEBYK6n4zNwRgDCIT06NRvqgpz1vRa3vaOxnck8TlceGVPXuNZ3JOXbepYeM9OFmQ+E3bgMopLZw4obtvBMx+0EziO4uT7gCmF6eVzUpdfGGp/0YF4cl4iReN251KwJGEp0R5kg+EhY8Z69gi2fqIswRHfp8cDXDRNsTWXEQjVWHs8p9W5nX/iKfurwk4EM6zR4j8cVI48HyOEJhnEMDdZ/eslu459MEHvYQrTWslFgK7p05dYeVyp8UQlZTBwtsFmVTmcrY2gZRTrClq2oUFusAayTrcL7l1UHNfbXhMG6NOofsC+Kn4MUjBv92uFSNUgMv0xOTjC1xMazi/3c78LgwHYY/tB65G2okuRy7+BVwRKrf6dz43CTBTg9+ZBX8Qv4rGoeI3pA9w1vxPG3pEg7as/GDU+ir2WxUOU+anCAbzEDaHeADgNzS43Sd5cl0jzDEw8LA3H5BxkX52GyPRYUFyb4rRw= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: bNvaIhsxyS7dlMhlbP46IsFLzfBQDpUlVArWh2TMd+XGx4wdw4CJp3YztRs+q8ZrIBt2zmZZ7a9sSL5130N00Ai63sgsyllKwS8t5x0c4eqF+4B2phJHAE+AzegyfCr4uwmyaFOaT0IBqQ6Jk7RPlE68lmrs/mYgUYJ7i1XA9dj0/FMv9S0r9ope4TZ7tlqb7/GwDpdGIfEfXUtLE+VbXLrcNwDz1Vtou7zCqNONRUmZ1LGHxjgs5qfYo4Pwi9cnlNV2UvJo/pH1KTxb7K87JHS09C+KA5i6kbZ10GctV/x3mc7SQX3xMWw/5i1Ha+cpBKKBaLm+SZXB8zuhd49IrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E8.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9e888a31-d9c1-4a79-74d5-08df18eab83e X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700016|14060799003|82310400026|35042699022|23010399003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 8OFaIJSyqOGN842iK0SLPGBtUHf2D9j03nTq0YhdIG4CWvQkQ5Hjzbc1XLqAEWPiK+mS3OfNBXmtdeePMnFENuCp9yJhYSRcg8YXbjIacYuTHltfAuWaz49+tPvP7qQXzTimpuzgER2rKymKY+gOsJ0qrTZJHuonVTElvyFFaoJovEER+PRwNu+U3/pGXSsn0yy0GxAS2unyebHyXTFTAhuhZoFV/eWfsTY8XyO6+DTlqhxwmLh2ewmJ+Gvm2QNWxQetEE1iedldCrySms5WcSYOJ6v/gi8/TDhOnU3TP6Y/xV88Qq/MdyKJ37gO56JL7DnIvk6SriqqjgDCQGYQXWXh/T56XR0P2UVAyztFTzX65mkMhl2kZ5evBfGtJ2mFjDQubWnk3TfQlg5kqBuVoqAhhoF/ec+pEuYWbS/LzI3Y92ei3sX6saSAOsNZuteom+LD7PvWTn4gcky5rT6/7LjDemnX5Fej8kfPmL1meR0Ptg8LbZgezSc5THqoyMKr87AUSxzwGrI7NHUo/owFzUSKauOiEh0sNFJDvCrVEJN9XPLRxAAe10UQt9HAofuABW0IWpRWhQLEmYKEwq+qYzk4MFGrKV6cZQbnUHO0xFWzbfyxu6QazvL4i1qd+4IxUgQ/KAhFvg9+yrrG3uiHWfisbdj2VVADCHkPi7rDWl4p3Erryo7p92g10iJLn0pqBtoVAAVeT8NMrXAqAMtD8Q== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700016)(14060799003)(82310400026)(35042699022)(23010399003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Wr6zff8RL0gOfMtKABkflfKh7hMzMXWqJecpNMyPr+hjbMLAYOI88xPwlOjn+K4Fa4WqkX0ikvtO7m2hG+ha0PNDZLqs6cPrzeXRgvLxWMNaFisv1F0T7tm3tU8IS5SllV4mSG+iG6gX7ds5r6eioqAp6v/2KEje8uMsJPc7d6LwsTpQmJrcRMx0e5VN4aik8hxE6mhxe6PAlt9DobP8wUv5ULe/5tOhbRjKcrtT+whF3jwMz+IKtLeXKqpBQFSAJiryG0BprAIhgV74y8iX+cicOhgDs6wFoJbt16nObeV2xGWJef5S9tBLt6tv395rt65cRLDehp07/+C5GYJ8sdToUlH6rz1bEbPZe3CVmWcC7RbptAhe6Gt6KM7DojUxSrGzuTIwQ1QV09ztUGcMwhKZ9vvUWEMIW+rvGgEbwXJ0R/1dd5w4ZZ9R2IQooikq X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:03.0703 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e55a212b-5661-47b1-58de-08df18eacbdf X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E8.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7499 Content-Type: text/plain; charset="utf-8" Split hardware component suspend/resume from the top-level device PM path and protect those transitions with a dedicated mutex and state flag. This lets access-window arbitration suspend or resume GPU components while runtime PM state remains controlled by the outer PM path. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_aw.c | 1 - drivers/gpu/drm/panthor/panthor_device.c | 50 +++++++++++++++++++++--- drivers/gpu/drm/panthor/panthor_device.h | 9 +++++ 3 files changed, 53 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c index 848fd64eb51b5..40122bb4b83af 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.c +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -192,7 +192,6 @@ static void panthor_aw_handle_message(struct panthor_aw= *aw) drm_warn(&ptdev->base, "Unsupported msg id (0x%x)", msg_id); } =20 - static irqreturn_t panthor_aw_irq_raw_hander(int irq, void *data) { struct panthor_irq *pirq =3D data; diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 98c0dd3ce7bcb..2ccd8ad6318d1 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -179,6 +179,10 @@ int panthor_device_init(struct panthor_device *ptdev) if (ret) return ret; =20 + ret =3D drmm_mutex_init(&ptdev->base, &ptdev->pm.hw_component_lock); + if (ret) + return ret; + ret =3D drmm_mutex_init(&ptdev->base, &ptdev->pm.mmio_lock); if (ret) return ret; @@ -293,6 +297,9 @@ int panthor_device_init(struct panthor_device *ptdev) if (ret) goto err_unplug_mmu; =20 + atomic_set(&ptdev->pm.hw_component_state, + PANTHOR_DEVICE_PM_STATE_ACTIVE); + ret =3D panthor_sched_init(ptdev); if (ret) goto err_unplug_fw; @@ -484,21 +491,55 @@ int panthor_device_mmap_io(struct panthor_device *ptd= ev, struct vm_area_struct * return 0; } =20 -static int panthor_device_resume_hw_components(struct panthor_device *ptde= v) +int panthor_device_suspend_hw_components(struct panthor_device *ptdev) +{ + guard(mutex)(&ptdev->pm.hw_component_lock); + + if (atomic_read(&ptdev->pm.hw_component_state) =3D=3D + PANTHOR_DEVICE_PM_STATE_SUSPENDED) + return 0; + + if (!pm_runtime_suspended(ptdev->base.dev)) { + panthor_fw_suspend(ptdev); + panthor_mmu_suspend(ptdev); + panthor_gpu_suspend(ptdev); + panthor_pwr_suspend(ptdev); + } + + atomic_set(&ptdev->pm.hw_component_state, + PANTHOR_DEVICE_PM_STATE_SUSPENDED); + + return 0; +} + +int panthor_device_resume_hw_components(struct panthor_device *ptdev) { int ret; =20 + guard(mutex)(&ptdev->pm.hw_component_lock); + + if (atomic_read(&ptdev->pm.hw_component_state) =3D=3D + PANTHOR_DEVICE_PM_STATE_ACTIVE) + return 0; + panthor_pwr_resume(ptdev); panthor_gpu_resume(ptdev); panthor_mmu_resume(ptdev); =20 ret =3D panthor_fw_resume(ptdev); - if (!ret) + if (!ret) { + atomic_set(&ptdev->pm.hw_component_state, + PANTHOR_DEVICE_PM_STATE_ACTIVE); return 0; + } =20 panthor_mmu_suspend(ptdev); panthor_gpu_suspend(ptdev); panthor_pwr_suspend(ptdev); + + atomic_set(&ptdev->pm.hw_component_state, + PANTHOR_DEVICE_PM_STATE_SUSPENDED); + return ret; } =20 @@ -609,10 +650,7 @@ int panthor_device_suspend(struct device *dev) * The end of the reset will happen in the resume path though. */ panthor_sched_suspend(ptdev); - panthor_fw_suspend(ptdev); - panthor_mmu_suspend(ptdev); - panthor_gpu_suspend(ptdev); - panthor_pwr_suspend(ptdev); + panthor_device_suspend_hw_components(ptdev); drm_dev_exit(cookie); } =20 diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index 960e06236fc03..42c5052ac83b9 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -352,6 +352,12 @@ struct panthor_device { =20 /** @recovery_needed: True when a resume attempt failed. */ atomic_t recovery_needed; + + /** @hw_component_lock: Lock protects HW component PM state transitions = */ + struct mutex hw_component_lock; + + /** @hw_component_state: HW component PM state */ + atomic_t hw_component_state; } pm; =20 /** @profile_mask: User-set profiling flags for job accounting. */ @@ -441,6 +447,9 @@ int panthor_device_mmap_io(struct panthor_device *ptdev, int panthor_device_resume(struct device *dev); int panthor_device_suspend(struct device *dev); =20 +int panthor_device_suspend_hw_components(struct panthor_device *ptdev); +int panthor_device_resume_hw_components(struct panthor_device *ptdev); + static inline int panthor_device_resume_and_get(struct panthor_device *ptd= ev) { int ret =3D pm_runtime_resume_and_get(ptdev->base.dev); --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010031.outbound.protection.outlook.com [52.101.84.31]) (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 6EB2E421229 for ; Tue, 22 Sep 2026 20:48:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.31 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110114; cv=fail; b=VX9LaWjRb9uIFBltmRvfuwyWtwYwaAsL4opqfEmqI9rhb3MYRgAo1SNuscfs38ihioAanzkO3fP5NXeGx+y+bfCiFkSkwrTPgBMJtRVByTXMk7C3vEtoribUDO+aMEqiv6Neg6QKbOOsuh6g/ABP2Ih+tsojFZ7hxuOqwTOcRIA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110114; c=relaxed/simple; bh=6577goBusZSdvA0e5d5UL5h/XnNJDl5a+us+60WDS4w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fJgQNRgafOcS3grZXQVESi+0zh5YDcFXFxZY4gNQmmDokHgh/fd3nUg9x+VEmU49jpCegM2ULzdjscL6RNLJEtVpVYGNSHt8z4u9kOY0yVwK+/y0247RVwr+ev7I0zvwc1aQS1IDdbg73WluzZxy9DWjeu7o3PM+LRTZPeZh01A= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=HpbaDdwu; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=HpbaDdwu; arc=fail smtp.client-ip=52.101.84.31 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="HpbaDdwu"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="HpbaDdwu" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=JawO5K8JBFCyp/uQArXj9yf/+lQS/enLGj1l2GWF+9JDL5KqfgWTmj+1WNGwd4p1bPoelXZR5e7pazAe0kvRnSuhs2dI0+fdgrsg9rtwHxMVl/LcAHIC796J57sW3QogrLtCcVyY/cWA4W90H6dVN9J/y0JsUTsUl+UuqfM/iPWuwnWuT5bmN8Vw4tWKwK9b5ooO+7DQQemLoQ4fIGzjz+RTw03Iv4p74YIlwiEiQA9WKHW4hBnZxzHZDl+Kahg6g2p97WlCNCtY+Bmgl0huBavTV0lJV2vJuBM2xuOBe7bk6lEnIhb0XGHvqCYvwpX5Kjdh5zfMdIglqjDWlEPB5Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UEIMUIDEtXxnhZaUC2V83Oj3097KKnXyvWIut9RVChY=; b=bB2czm8206IjTrY0kEGfmFYWqKHWtC3Y+63etKZAxbKMqXw5X0Bs6y4oeG0y5lRvr3lBHuG430knsbwSFZqk9I0bJLcmHVgVL5sZOlrAidHXViT6NSqiQW15Gr8LUgqHkHZJgkbZrOny7atkx4XECqBFNBnWtxYaXND4jloOY3rsuMIAsHf+6YgeI1UJNIj0JILBwvgpxKN+tfUQkgVpAsvVR7l6vgTZ2K+2m6JOJn/iCOXrnNoZnpG15BCM1astXsGNvfDMx4BLKCoCwqfEaVNlT5Lfz4/IVMTjzosZjF2A7u/V3Si6DTiMm7wH1I2PTBUH6QFMgNDot1nDE9GuNA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UEIMUIDEtXxnhZaUC2V83Oj3097KKnXyvWIut9RVChY=; b=HpbaDdwuRi9UQP2Ar6vseHtPMX2SuCe1j/JMwGMYxPnIPgUOnmGCYDMKK4O5zQ9DS16plj9JKLNIs2o36F3SjATwjlUOt2BZw0DjZ+Ueaa91CISTYjJti7of6c3rp68hJtDY4sn++QBLhFk+ffSXuWvBmafmQMQ4bEZ1OprrJdY= Received: from PA7P264CA0488.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:3dc::22) by AS2PR08MB8746.eurprd08.prod.outlook.com (2603:10a6:20b:55e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:48:06 +0000 Received: from MAD0EPF000008C6.eurprd05.prod.outlook.com (2603:10a6:102:3dc:cafe::34) by PA7P264CA0488.outlook.office365.com (2603:10a6:102:3dc::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MAD0EPF000008C6.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:48:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SanCoilI1I3PkZVcVW637QIEm+ALLu6/Rxd4ZoMpkmkxd56DY5LtavI3QWQpItHQFXjpapBKu7bLId74rdSdecyD+CIwMTfnFC6RYcMxqSaPlCB9rivVKr6/hM4lDWpdUT3Vy1LSl9i0dCbt4xMJv3NLfSgIeTCFURYxXivHwPzw4uCIS/QFFhXNnn1ojApKYm28u5rmgiYW9V7BRyE0lFjCeh5Dsodct8stSvYc+DjPy1Av/dJ2LQHVJCCNPtTvOavt/Lxx5d2VcFMSvWtg0JUvEOnX6oxVuv0hpTGAbfrPPgAjl3QGnAc0sM5BhDtV4pgenT+Ekfd7i1aDrImabw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UEIMUIDEtXxnhZaUC2V83Oj3097KKnXyvWIut9RVChY=; b=mf2CC7R32RZdBaRkmnbGizDgGmWP2IrqdyhScMxv1sOYlRgpIazFI8ocyZI1i5yfe6gFmrM10BLAnhStqs55Tu4amff42/uDVse/gLFQ55WUPGFvgSn4o21GrRtLht5KiUYR3a2b+eqxgTkIHT2UgqrnreIW1cwdkIbGT7pHA3styoHTGQU4UMCAvaE0G+8EU7f2Q+8vUZe35F4X91tfTWH6/A6r2/QUPFKu0QPHb7nyxXy0ySYyjIJzVc5yBGIDSqijVGXSb7Ey+AmebFJnswX4S2BV4u++XgUSGI5+/ZcVhtcRxjUkCwi89NDmGTCkLIPELHFgeR2U/Aa9lEBwDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UEIMUIDEtXxnhZaUC2V83Oj3097KKnXyvWIut9RVChY=; b=HpbaDdwuRi9UQP2Ar6vseHtPMX2SuCe1j/JMwGMYxPnIPgUOnmGCYDMKK4O5zQ9DS16plj9JKLNIs2o36F3SjATwjlUOt2BZw0DjZ+Ueaa91CISTYjJti7of6c3rp68hJtDY4sn++QBLhFk+ffSXuWvBmafmQMQ4bEZ1OprrJdY= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:33 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:33 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 24/27] drm/panthor: Route HW component PM through access windows Date: Tue, 22 Sep 2026 21:45:18 +0100 Message-ID: <20260922204535.2850094-25-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P265CA0012.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:339::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|MAD0EPF000008C6:EE_|AS2PR08MB8746:EE_ X-MS-Office365-Filtering-Correlation-Id: 23486822-4511-4b5b-9661-08df18eacd7c X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: E7c78rgcPDPdMhavHdXmKDEUOCVB4YBldXrkjg7qwpzEhK6qxBHMdfdkvT58lIcD9qgM+bFx82SnUuBzCMXLP6V8lZc+ybh9gBJcQ8TsF3erS13fETM5Cy0K9s2ot7620TfmPQhjZtmsiYlmQBxn6Xa4tezUPfXCVyWagXS+zlqLeOeHzd86YJz/wJGXTVs5p+BmK2PnmFtX7ye1Z6bbqms4YAxaGcThfmzkO9/X1akFnyaRpj8LzWq3YwOinJdBJYO3AV/8XX5KACAbOAf9Wn0KbKd7O20i+OjPTMCLXsgISlOsthN4dFw0R/9W6cXXCSmvII7isasW9RasoZyqX+ggo2KbAruVIUXq9n/BtZSzGxbftg+KKSY637JWVLF8VH9AGpPr5mEg0dxx+GZbjoQWMQuKEIOvJEKn162sZTEVWdZby/uztZdT44+N652OjDkaA6+iDgeEC2gA9zUVlQUUArsaZb8q1LPKKWQ3eL/uG0TCBsIhyTR9UQgWASsUIcjtjLzkkA+eeKnMrfOnUgteeS+QFyZZmWqwPbCA1bEbZo20zuCZViVNsTWBJPs4NLMwkoHVjNZ0r8YmMRLfNP2Gg0t3VL1GTt/plr+G22yu8A+oI1rYf1wAqE//LyV8VJiv/AGgrpAjY3oZ1wzEFGS15v19EZtOIdfAsIGKM6c= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: t+kIgesK9i02SNBEwHWErHooQ2f/8cb38iQ8+zORiH8ma8czOuxzxnyUsfbtWfI1nmuJWIabBdrQNIz5X6+1e9LiEu6WhYvRk6vhJn28jEuZ8IWMtaR+JGCkmD41H3Tq1QGSuhHDHXnJdUVvXlLLf8FgciaZTUT7Wic3qZG+G+tUTg8sUDeI+CHpsMj0fDtVSRqcpzeB11zCM491l211jvobT/aFKACxqKeRJOGhGDJ8/4/d+mKNRTuXM8mMPIJ7BKaAye5CYu5CaXyiBAZiYOIzHcrLh2FiNHmFPVpjdstIKUtChWkt157NqT1OBRmsfmfAx+0NwVT8wvUbDRhVVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MAD0EPF000008C6.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4241cb05-f68d-45d9-8734-08df18eab9b9 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|14060799003|36860700016|1800799024|35042699022|23010399003|376014|10067099003|56012099006|6133799003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: sE5/4mNMYqb1378COiRDJQvzTsT5CHCcVq33RQYwnr1mDE+GgQ6+O/Wm7+glpQCYQ26sRBYZ06Yew3bRg+Ld3C3EQKOoLaB4F3uX/wcqVsTirA5e0MSMSkVcP37IqB1w62MvCxPJpQ6bxb76tnWBUQJolyJz+AgMVEvV+fAyhPnDTpt86ZBkagOd5nFwSZgqTVNmjPJ+Ak2iAUwl7HNfoNjDiZIxiZjjuHeOw+gS5LIGFyiiTEW/RcWvRGivPvt/Riv+ns6hN2Qz8nd44h0oH4YxfzU1TkBRE/Gy3OzMTR0w0JFw5rJ5oBL0U2YrlASjmALkaxKCQULaLFi8U6E/HEaC3/gwzuF40EuqSsD73hN8wCFVUP95G3Y/S3DiwFxwo9D7OLS66GOj4NiMgeipZWKRFlr70TFvODt7U4UKFsJl43b6rfiHjwhT/cYf//wzpfzRntdig2iZ2jg972LDdXx4yDkTCgG7DMyhS6GFUQambIkBbBvT9w5cLga/shhpe2PE1w82oaBLshqbpQP1y0GzpcwYZNgP+eYR3vo2feO9Zk6MWXtmzuHOArTMITKjJe08fp6deKK973Icd0K0+ubxWdQq8vcd4mJwxWZaVGqZhxVuS6mWZE8p7xS9P5LqXFGbuuNvwQ65x6NCfo5Z7AJ2EgsHWVhP/tQQYs/5izE2VaKPDEJJn/SgDP2WyezqBqaR3rV+jqPl2909MWe1rA== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(36860700016)(1800799024)(35042699022)(23010399003)(376014)(10067099003)(56012099006)(6133799003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GXnWshAGCBZVhVtBsDkrtLHa92rUjDzQczc3ZYt88N5fkWWUskpbi1Wk6GfbFAKEGm0iPKrZTWRP/COMVREqFP4jQV/GP+vOdMpqs/KdU3+IZRcmCKd5AiiUpxwFRWrVQ1ulgz/3xDRoFeMP8wLudKZuomj/EIEwh3y74DFsArqqzDXDi+ADK3bJBaXKQ7NsLbmAnN8Rdbv4cqVbHIbJ3j44q/B2NHfwK0RJGo2gCijJkbICrFnWbPPRS/ZLMF1VOUBQHhCkyoesc4+Bqs7alcSR6tH4k9i5Pol9fqWyHfSGXDeJ16JvAzJ4ZVVUryRf+FhT147Th3HDTI/Aj7I6p61kFj/LII5vLJdmq/wzvGijtk0d/AQcAjles3+zZ4/506Czbq34mJXZUql3z6WOYIGRjVYnH8sm4GkXxojGmvpwpfUaV+yBB+yu1YaK380h X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:05.6971 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 23486822-4511-4b5b-9661-08df18eacd7c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MAD0EPF000008C6.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8746 Content-Type: text/plain; charset="utf-8" Make access-window resume and suspend own GPU access when AW support is present, while keeping the direct HW component PM path for older GPUs. Handle WINDOW_CLOSED and arbiter restart events, defer post-yield cleanup to workqueue context, and make panthor_device_resume_and_get() ensure that GPU access is obtained before callers touch hardware. Signed-off-by: Karunika Choo --- v1: - update panthor_aw_ensure_gpu_access() to wait for AW state transitions and retry on -EAGAIN. drivers/gpu/drm/panthor/panthor_aw.c | 194 +++++++++++++++++++++-- drivers/gpu/drm/panthor/panthor_aw.h | 8 +- drivers/gpu/drm/panthor/panthor_device.c | 6 +- drivers/gpu/drm/panthor/panthor_device.h | 15 +- 4 files changed, 198 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c index 40122bb4b83af..4fcfb3ad05073 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.c +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -77,6 +77,9 @@ struct panthor_aw { =20 /** @msg_retry_work: Work to resend messages */ struct work_struct msg_retry_work; + + /** @post_yield_work: Work to yield the GPU */ + struct work_struct post_yield_work; }; =20 static bool panthor_aw_is_open(struct panthor_aw *aw) @@ -118,6 +121,52 @@ static int panthor_aw_state_wait_transition(struct pan= thor_aw *aw, u32 timeout_m timeout_ms); } =20 +static void panthor_aw_post_yield_work(struct work_struct *work) +{ + struct panthor_aw *aw =3D + container_of(work, struct panthor_aw, post_yield_work); + struct panthor_device *ptdev =3D aw->ptdev; + struct device *dev =3D ptdev->base.dev; + int ret; + + /* Something else has progressed the state to READY. */ + if (atomic_read(&aw->state) !=3D PANTHOR_AW_STATE_GPU_STOPPED) + return; + + /* + * Ensure in-progress resume is completed and prevent future RPM suspend + * to keep the clocks turned on when accessing HW registers. + */ + pm_runtime_get_noresume(dev); + pm_runtime_barrier(dev); + + ret =3D panthor_device_suspend_hw_components(ptdev); + if (ret) + dev_warn(dev, "Failed to suspend hardware components."); + + panthor_aw_state_set(aw, PANTHOR_AW_STATE_READY); + + /* + * schedule an immediate tick to re-evaluate if there is any additional + * work. This will request access to the GPU again and if the driver has + * gone idle, it will yield GPU access via the runtime suspend path. + */ + panthor_sched_resume(ptdev); + + pm_runtime_put_noidle(dev); +} + +static bool panthor_aw_schedule_post_yield_work(struct panthor_aw *aw) +{ + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_GRANTED, + PANTHOR_AW_STATE_GPU_STOPPED)) { + queue_work(aw->wq, &aw->post_yield_work); + return true; + } + + return false; +} + static void panthor_aw_msg_retry_work(struct work_struct *work) { struct panthor_aw *aw =3D @@ -166,7 +215,9 @@ static void panthor_aw_handshake_handle(struct panthor_= aw *aw, u64 message) =20 panthor_aw_send_msg(aw, reply); =20 - /* TODO: Handle AW restart */ + /* Arbiter was restarted. Window is no longer granted access. */ + if (panthor_aw_schedule_post_yield_work(aw)) + drm_info(&ptdev->base, "Arbiter was restarted, yielding GPU"); } =20 panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_INIT, PANTHOR_AW_STATE_READ= Y); @@ -192,6 +243,38 @@ static void panthor_aw_handle_message(struct panthor_a= w *aw) drm_warn(&ptdev->base, "Unsupported msg id (0x%x)", msg_id); } =20 +static void panthor_aw_handle_window_closed(struct panthor_aw *aw) +{ + struct panthor_device *ptdev =3D aw->ptdev; + + /* Ignore this WINDOW_CLOSED as part of reset operation. */ + if (panthor_device_reset_is_pending(ptdev)) + return; + + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_GPU_STOPPED || + atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_READY || + atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_INIT) { + drm_warn(&ptdev->base, "Unexpected WINDOW_CLOSED received"); + return; + } + + /* + * Window may have been closed immediately after opening. + * Setting state back to READY will prevent WINDOW_OPENDED from + * mistakenly transitioning the state to GRANTED. + */ + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_STATE_READY)) + return; + + /* Triggerred from messaged-based yield. Unblock its wait */ + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_STOPPED_IDLE, + PANTHOR_AW_STATE_READY)) + return; + + panthor_aw_schedule_post_yield_work(aw); +} + static irqreturn_t panthor_aw_irq_raw_hander(int irq, void *data) { struct panthor_irq *pirq =3D data; @@ -211,7 +294,9 @@ static irqreturn_t panthor_aw_irq_raw_hander(int irq, v= oid *data) if (status & WINDOW_IRQ_MESSAGE) panthor_aw_handle_message(aw); =20 - /* TODO: handle WINDOW_CLOSED*/ + if (status & WINDOW_IRQ_WINDOW_CLOSED) + panthor_aw_handle_window_closed(aw); + =20 if ((status & WINDOW_IRQ_WINDOW_OPENED) && panthor_aw_is_open(aw)) panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, @@ -259,6 +344,7 @@ static int panthor_request_aw_irq(struct panthor_device= *ptdev, =20 static int panthor_aw_request(struct panthor_aw *aw) { + struct panthor_device *ptdev =3D aw->ptdev; int ret; =20 again: @@ -266,6 +352,9 @@ static int panthor_aw_request(struct panthor_aw *aw) case PANTHOR_AW_STATE_GPU_GRANTED: return 0; =20 + case PANTHOR_AW_STATE_GPU_STOPPED: + return -EAGAIN; + case PANTHOR_AW_STATE_READY: break; =20 @@ -273,14 +362,22 @@ static int panthor_aw_request(struct panthor_aw *aw) panthor_aw_handshake_init(aw); ret =3D panthor_aw_state_wait(aw, PANTHOR_AW_STATE_READY, PANTHOR_AW_HANDSHAKE_TIMEOUT_MS); - if (ret) + if (ret) { + drm_err(&ptdev->base, + "Timed out waiting for handshake to complete"); return ret; + } + goto again; default: ret =3D panthor_aw_state_wait_transition( aw, PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); - if (ret) + if (ret) { + drm_err(&ptdev->base, + "Timed out waiting for AW state transition"); return ret; + } + goto again; } =20 @@ -290,15 +387,20 @@ static int panthor_aw_request(struct panthor_aw *aw) =20 panthor_aw_send_msg(aw, VM_ARB_GPU_REQUEST); =20 - /* Wait for GPU to be granted */ - ret =3D panthor_aw_state_wait(aw, PANTHOR_AW_STATE_GPU_GRANTED, - PANTHOR_AW_GPU_REQUEST_TIMEOUT_MS); + ret =3D panthor_aw_wait_cond( + aw, atomic_read(&aw->state) !=3D PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_GPU_REQUEST_TIMEOUT_MS); if (ret) { - panthor_aw_state_set(aw, PANTHOR_AW_STATE_READY); + if (!panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_STATE_READY)) + goto again; + + drm_err(&ptdev->base, + "Timed out waiting for AW GPU to be granted"); return ret; } =20 - return 0; + goto again; } =20 static int panthor_aw_yield(struct panthor_aw *aw) @@ -330,6 +432,7 @@ int panthor_aw_init(struct panthor_device *ptdev) aw->iomem =3D ptdev->iomem; =20 INIT_WORK(&aw->msg_retry_work, panthor_aw_msg_retry_work); + INIT_WORK(&aw->post_yield_work, panthor_aw_post_yield_work); =20 init_waitqueue_head(&aw->waitqueue); atomic_set(&aw->state, PANTHOR_AW_STATE_INIT); @@ -362,6 +465,7 @@ void panthor_aw_unplug(struct panthor_device *ptdev) return; =20 disable_work_sync(&aw->msg_retry_work); + disable_work_sync(&aw->post_yield_work); =20 panthor_aw_irq_suspend(&aw->irq); } @@ -371,17 +475,48 @@ int panthor_aw_resume(struct panthor_device *ptdev) struct panthor_aw *aw =3D ptdev->aw; int ret; =20 + /* resume hw components directly if AW is not supported */ if (!aw) - return 0; + return panthor_device_resume_hw_components(ptdev); =20 panthor_aw_irq_resume(&aw->irq); =20 +again: ret =3D panthor_aw_request(aw); + if (ret) + goto err_out; + + ret =3D panthor_device_resume_hw_components(ptdev); if (ret) { - drm_warn(&ptdev->base, "Timedout waiting for GPU to be granted"); + /* Yield GPU access if HW components failed to resume */ + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_GRANTED, + PANTHOR_AW_STATE_STOPPED_IDLE)) { + /* + * If failure is caused by WINDOW_CLOSED and the IRQ is + * handled after this condition, AW may emit a rogue + * idle event that will be ignored by the arbitration + * scheduler. WINDOW_CLOSED handler will then transition + * the state back to READY. + */ + panthor_aw_yield(aw); + } + + goto err_out; + } + + /* + * WINDOW_CLOSED won the race. post_yield_work owns component cleanup + * and will transition state to READY after this PM transition is + * complete. + */ + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_GPU_STOPPED) { + ret =3D -EAGAIN; goto err_out; } =20 + if (atomic_read(&aw->state) !=3D PANTHOR_AW_STATE_GPU_GRANTED) + goto again; + return 0; =20 err_out: @@ -396,20 +531,45 @@ int panthor_aw_suspend(struct panthor_device *ptdev) =20 /* suspend hw components directly if AW is not supported */ if (!aw) - return 0; + return panthor_device_suspend_hw_components(ptdev); =20 if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_READY) goto out_irq_suspend; =20 + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_GPU_GRANTED) { + ret =3D panthor_device_suspend_hw_components(ptdev); + if (ret) + goto out_irq_suspend; + } + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_GRANTED, - PANTHOR_AW_STATE_GPU_STOPPED)) + PANTHOR_AW_STATE_STOPPED_IDLE)) { ret =3D panthor_aw_yield(aw); - else - ret =3D panthor_aw_state_wait( - aw, PANTHOR_AW_STATE_READY, - PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); + if (ret) + panthor_aw_state_set(aw, PANTHOR_AW_STATE_READY); + } =20 out_irq_suspend: panthor_aw_irq_suspend(&aw->irq); return ret; } + +int panthor_aw_ensure_gpu_access(struct panthor_device *ptdev) +{ + int ret; + + if (!ptdev->aw) + return 0; + +again: + ret =3D panthor_aw_resume(ptdev); + if (ret !=3D -EAGAIN) + return ret; + + ret =3D panthor_aw_state_wait_transition( + ptdev->aw, PANTHOR_AW_STATE_TRANSITION_TIMEOUT_MS); + if (ret) + return ret; + + goto again; +} diff --git a/drivers/gpu/drm/panthor/panthor_aw.h b/drivers/gpu/drm/panthor= /panthor_aw.h index c2b89caa87c48..7a46a1e18093a 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.h +++ b/drivers/gpu/drm/panthor/panthor_aw.h @@ -24,10 +24,10 @@ enum aw_states { /** @PANTHOR_AW_STATE_GPU_GRANTED: AW is granted GPU access. */ PANTHOR_AW_STATE_GPU_GRANTED, =20 - /** @PANTHOR_AW_STATE_GPU_STOP: AW is requested to stop GPU access. */ - PANTHOR_AW_STATE_GPU_STOP, + /** @PANTHOR_AW_STATE_STOPPED_IDLE: AW has stopped GPU access. */ + PANTHOR_AW_STATE_STOPPED_IDLE, =20 - /** @PANTHOR_AW_STATE_GPU_STOPPED: AW has stopped GPU access. */ + /** @PANTHOR_AW_STATE_GPU_STOPPED: Window was closed, cleanup required. */ PANTHOR_AW_STATE_GPU_STOPPED, }; =20 @@ -39,4 +39,6 @@ int panthor_aw_resume(struct panthor_device *ptdev); =20 int panthor_aw_suspend(struct panthor_device *ptdev); =20 +int panthor_aw_ensure_gpu_access(struct panthor_device *ptdev); + #endif diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 2ccd8ad6318d1..ea35c5e1d87b4 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -577,11 +577,11 @@ int panthor_device_resume(struct device *dev) atomic_set(&ptdev->reset.pending, 0); } =20 - ret =3D panthor_device_resume_hw_components(ptdev); + ret =3D panthor_aw_resume(ptdev); if (ret && ptdev->reset.fast) { drm_err(&ptdev->base, "Fast reset failed, trying a slow reset"); ptdev->reset.fast =3D false; - ret =3D panthor_device_resume_hw_components(ptdev); + ret =3D panthor_aw_resume(ptdev); } =20 if (!ret) @@ -650,7 +650,7 @@ int panthor_device_suspend(struct device *dev) * The end of the reset will happen in the resume path though. */ panthor_sched_suspend(ptdev); - panthor_device_suspend_hw_components(ptdev); + panthor_aw_suspend(ptdev); drm_dev_exit(cookie); } =20 diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index 42c5052ac83b9..59bc48d05eb1e 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -19,6 +19,7 @@ #include =20 #include "panthor_device_io.h" +#include "panthor_aw.h" =20 struct panthor_aw; struct panthor_csf; @@ -466,8 +467,18 @@ static inline int panthor_device_resume_and_get(struct= panthor_device *ptdev) * succeeded. Given resume errors are not expected, this is probably * something we can live with. */ - if (ret && atomic_cmpxchg(&ptdev->pm.recovery_needed, 1, 0) =3D=3D 1) - pm_runtime_set_suspended(ptdev->base.dev); + if (ret) { + if (atomic_cmpxchg(&ptdev->pm.recovery_needed, 1, 0) =3D=3D 1) + pm_runtime_set_suspended(ptdev->base.dev); + + return ret; + } + + ret =3D panthor_aw_ensure_gpu_access(ptdev); + if (ret) { + pm_runtime_put_autosuspend(ptdev->base.dev); + return ret; + } =20 return ret; } --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012045.outbound.protection.outlook.com [52.101.66.45]) (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 9830744A414 for ; Tue, 22 Sep 2026 20:48:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.45 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110127; cv=fail; b=Zntv55OwiAvr7bzR4x5jewv2+dtl9gVNB+MPOiUCDOsMrVavMXHnXF0V/JkvrcVOyYSuDgOD/w8TdSIcCi9rzY2jBWHKf17OsGTKD9LoE8ebVwjl2hoZ/S7QP6aZu7+O6NRkMRF/w+wRzIRXCtVvK3F0+RoUC2vPSA9Bd/E/0eg= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110127; c=relaxed/simple; bh=tvDqaHu00P2HoJHnndEEf6lfcLRZLoUfon0bSs4pTDo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=G6xO+FbDRUbLKFXafbpLQu65W1VxISmb3i4cz8GWi2u87ct4Nm0/+/Lv3ZM9uuuA0emaStS39kKqwXLAs8pXnbaFmDfQDphcYaCA1pczpk/jcXHOyGAq9no4DJSy2sKMwa8U0+qwIkhXT8PI2jIQ9ZV9SuPF478HzEET/8mtfHs= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=qyVuKUNT; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=qyVuKUNT; arc=fail smtp.client-ip=52.101.66.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="qyVuKUNT"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="qyVuKUNT" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ABoJCI7n7HBeMDlYIcIJwD4kaU667SIj9/x0TrUaovN/rF8YPam9gGByph1kZeQ1B/kPsC0oL43a3gkTaR9NDVlW0TnVjfdGi/tALAvRJKHr8OEjbNIh3z/vhrrwjLQPIWtEKzO+KrMfRainvlGkYdT8E4L0Ow0XARd9i2P/cTIHqRimf/6DeZtwetyiLCfKLV8/ZXtPIKy21EG/DV0HekP0fSOvTUWk8A5S+uXzbNmYWVsAIeR1CMONpwNC2Qq8Izwi/alGj9Dum1zcSfj73FXvxk0kAvMfRxYjLdEpq0DnLK0Fn0R9pTh0veiJE6PyOtOARqVNEhGSz0sxq2vDpQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nL4tt9xfiu6dOgjKZVLEXnpy5Dt9Dn428w/U993q3bY=; b=dE/wWVDPiAMT5IZ1JJsgkdNPGygB1yjvCMuyYLqVVsmVrrAOfEk1g6Ays27rU5ZKDQMDsal3Ntx6/OR5cFwV+aBwGWeJTx9V6ALJTCHSFPUJMZSTNJjjOuEFhHRvvnJNUaEv1vrWpwdRtkwZjq37k2KY5GKyf8fNNYWqFjW/2RAFCyyW+QiSUbqqDNYvuD+pCKzBIgVBKtaefXltC/2k3nnYzL9+0DR4aE3eGQChBNrIn598z90ICbjTTOIzMwoXv2+vlnHPQDxNJ5hQPO3e+YWStn1rzEHZw+RFKk+Qw2oZCP9th9fy22s1+/MjyTiP2UV8RlsIWPVFIspOmD654A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nL4tt9xfiu6dOgjKZVLEXnpy5Dt9Dn428w/U993q3bY=; b=qyVuKUNT9SkTguMWzCwjkqGJkLPyw1qhkQAPA59mkvTP9JAyvrYH0Utc8tzUTuLvTcvEpMWFlB49qeJ/rPBv7zCd42yOF4GJjvhukNOLLmZFSUp1GAipbbhtRrg9I8zmjEPTuVoajMihjUcVqzT0HYNIxWk4Q0gxJMUnkFcQ7QM= Received: from AS4P189CA0067.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:659::25) by DB8PR08MB5337.eurprd08.prod.outlook.com (2603:10a6:10:11e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:48:08 +0000 Received: from AMS1EPF0000008E.eurprd05.prod.outlook.com (2603:10a6:20b:659:cafe::9b) by AS4P189CA0067.outlook.office365.com (2603:10a6:20b:659::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF0000008E.mail.protection.outlook.com (10.167.242.85) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:48:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ET1rqae3XuiZSzRiSTrrBLiF9CeymRa3BZE3UJqMsxbbcIqOmckBbzguqaAn/UU1n4vE2dy/QAd8cRurbnpDG3vXmkWDeNpTJjkGs8V8i6YWWfYow5ybMGXlVbfFu2T+oa0L1gfhoymP9IGykTLgLpBNtYE4dW/amVDpLhDR7B+NozYGplFyKFJ3tJQml3nusgmEOppr7YRqEEiZcfM5mTJl4MehKrzae7JOFNubigY9w+yTTymcsm2Rr7q6sUT42ZBG7cgthePSlsZ26E1omnr8HQOq3J4bTQdAkppu5StckFxIufP9EUKh9u/zm5wGKfNoKiM6qYWdHKfMQO99XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nL4tt9xfiu6dOgjKZVLEXnpy5Dt9Dn428w/U993q3bY=; b=e6Z92Ts8JZbPJJOykZi074ZFiz6+K1PCISved6W722rJBULei/TTTs9B/GypFl8K978+llLQ8fbp17QapX7G4KTYHbl3DLRQ6fi0CTQThRLH5doKHQ0905ZgXOg1v2/n5rFTlBzQCjvxA7qxv4rnOstJChf0kEWrsrgUYnWSL6pNbCkEoQFnLo5QKj0PamAdr9bMbmOIXWjW0GF4NUBGD05rUUPZ/cd2W9pqP5YeZX//FflXJNVy9mj6w+5J9k7cmnfyrHR6Ad0+7Kb6JAigb2jjEYJ4p+rNZJ12S6ooQZ4dGDWtLFvNNeWnQLLKJyx4tbIJyI2zegWrJAUZWa5fcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nL4tt9xfiu6dOgjKZVLEXnpy5Dt9Dn428w/U993q3bY=; b=qyVuKUNT9SkTguMWzCwjkqGJkLPyw1qhkQAPA59mkvTP9JAyvrYH0Utc8tzUTuLvTcvEpMWFlB49qeJ/rPBv7zCd42yOF4GJjvhukNOLLmZFSUp1GAipbbhtRrg9I8zmjEPTuVoajMihjUcVqzT0HYNIxWk4Q0gxJMUnkFcQ7QM= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:35 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:35 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 25/27] drm/panthor: Tolerate access-window loss during HW waits Date: Tue, 22 Sep 2026 21:45:19 +0100 Message-ID: <20260922204535.2850094-26-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0637.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:296::14) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|AMS1EPF0000008E:EE_|DB8PR08MB5337:EE_ X-MS-Office365-Filtering-Correlation-Id: 9bdf0b30-6ae3-490f-c338-08df18eacec0 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|3023799007|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: +GfPzDoNH5YpFR4+JZ/x2kTxo9R3WQHkIlQr3q6HWkZDBaEaQ75ELWQ78DhkjcvNvVxlAF6UV32xcyTX/gH/pDvbfIujb7twOZFywk4FPUR6iW5iVgfJ6MSeqNZTfJ6ukha22qrPYoVrmaP7ZKOOE8urv93m6b8jlZZLUI07juUCVbB9E9Pb29YKYVCdCvWZ8HFYZIdICdiKwmmU2jB0xKZNjd4P8So3JpefI5Ml92oKMDFVj3G8pZVOsHJqwDANOVh5hhjPwLnbD2NB4AeyMm/R3x0PjwfooGRA8qq8PsHxaS4N1JfO0UpveBL5bqJ6ho8aqV5pf/JeiDiRl3bRu0pPq3W8RZKZmxUhnEybXyENMNd9ZREeRIWzkDJJqBAHnlYtWn9JnPKGxp8c+tKm2jr09t17Q4BG17wUTDIzAl0uHdOwg6QercYnbId7CVzetaBj1mN2dROrX7ngJWMkC/qFJ//Nldkvlp9wLrebFmYe22n7IPdbhK710vLZjbJ5oiW6v8x3rI1rMFxJnqZMxj/M83JfR1LC16iVc6vUzC6EtcdZROp0D+zvgESa1RthWJlak2W0q0Kb4sSEA4zdG3bKbmCH5LyiKBd4e+PPDXXVv89B/BFIOGrASg6ehMSfwypT/hFH8OVwhCjXWgp+wInFEN5WN8KCQm4+edLAAn4= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(3023799007)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: S/BKwOm1RVTphOBWgYaVytCLB1Da+CszlmslOAWefdhXeyu4L38Zm0mL8PQ727ZSt3YOEDEcbVneTL5nXNmcpqvj+CJ62Bp3tZTZdOcnWRpn4DNTivqnq2cP6NBPeTSkY5YMaqAEyCeZ6LAD4XPExO+do18cAMrBBRmnEK/Rn/21MVGrj8ef2O+lhYUzY/MUOep+oifkmLbK1UtmYPOVmOlW3A5NExMbCnpEssfVuz0ko0BzR4Kz2ADTTkFlJEwgxILSd+yAHtrFWIYkUSTOxIHw9NRZOyHohvwr4EQtH5MtI58xXufLB8RttPSHv8Qd7Nefd8Xj9Iop27j8FeOMNA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF0000008E.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8025f6b2-5166-40dc-7ee1-08df18eabb2b X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|23010399003|82310400026|35042699022|376014|14060799003|6133799003|10067099003|56012099006|11063799006|22082099003|18002099003|3023799007; X-Microsoft-Antispam-Message-Info: JH/qCSPN6dxwh1zNDeCQuNw37Jl95h35w0RLy81R1l9uI0Bf8P7HfEdf6fMWn5h2Em0zjsxQ3izRBYYO5XOlz3Smwc7TVUgJE6qjHU+uyrqtQcHiirEzfrBM3K5g/7r4GHvleEX8HtyVscWWX/0K9q5H0u7Jk2vDyHEAte4GZIvN/qnjzWz7+EqrUim8YBLMDb5gQaoF4mpKT0t4LMV4Xu0m4cF0/xM219alE1bKleMvX6BoFTSm9sHX00WLldGOZwxhsk6nAD2f44zEsS6yF8NYR8l3kTfhjrha19XEqmHvVFmQZJWti7vWs0Z2BaxngLBjKjaYM/lrYzc5MWSBUUG5QrH7RU0UVqaBO4jamCPehTHtS//74dqdsVwTmCeSlKeU1lPVxrTmtYw/MuNn7tTPrq5KNHK9ZMJOdKtr9ZBIA64iWX0qENSTiB52dF4rHqAuO5EJYsaQVJKBQADM01vrK1zAQ6tVyns8wMStcaJRyT8IFUY02XnO2m3avMLsUOZQvWU5LaAXXc+zx5TnM8lgnLwkDo401fV0JkCoAPx5IGeBgrX0P7DhEnpdX1yXhqEwacLJp0aIhSZQsuCoM590epVcI0udOfvaBY5RrETwWLMQZXoSy6Oc0EReUZzqonsP08gPPztmaLbzCMdcOSemC2V5AFkDqz7d7amsMsXT+Gor2iWfbJJU8G679+ZSe6UsbvgZEqRwtuB3urf8pQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(23010399003)(82310400026)(35042699022)(376014)(14060799003)(6133799003)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SKZj/V8iYGtJ82JT52TJNk85x+PA7K9v8WYVpBgQ4olADWtDV2/Cs1u+IgAqs52GfZX4Fu1bFliVB+MGd8UiTLaE6fEDEgipysvMH+wNsBu4denOUVgrteHjK/ye0b8ZPR5NgPoQz5glj4KP2AiXmHbQkOFaq52o/wzNERoD8olRjq3NH5AByURLynTCGIXX7E+33A2zypnVajEAir6EjzVx2/bmVnA6z4MQIDnknP/xFVq4wQSJRLAJprWEOs0Au9a838TY0tfyJDpDsQ8LFdxDPYXvFtN+/watj6n4a83aMTcDhRiA8AtAgO7Ng3IlBZZRi9SuNc9U75iJrNoapzZGebtAQmLgUxKNecEiXzSt2tLiUN+r3P1uBAwlK1HuMDGYJb6NQWeAPG0EPU/H0Huu3kVgwXNBSbBVVbaSjUrGCMTS/Ds0P0VNV1B0zdlx X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:07.9024 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9bdf0b30-6ae3-490f-c338-08df18eacec0 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000008E.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5337 Content-Type: text/plain; charset="utf-8" The arbiter can close the access window while the driver is waiting for GPU, power, or firmware acknowledgements. In that case the pending MMIO wait cannot complete, but it should not be treated as a hardware timeout or trigger recovery. Add a helper to report whether the access window still owns GPU access and use it to suppress timeout handling once access has been revoked. Skip firmware-event processing when GPU access is unavailable. Signed-off-by: Karunika Choo --- v1: - extend access-window loss handling to fw boot wait. drivers/gpu/drm/panthor/panthor_aw.c | 8 ++++++++ drivers/gpu/drm/panthor/panthor_aw.h | 2 ++ drivers/gpu/drm/panthor/panthor_fw.c | 5 +++-- drivers/gpu/drm/panthor/panthor_gpu.c | 4 +++- drivers/gpu/drm/panthor/panthor_pwr.c | 27 +++++++++++++++++++------ drivers/gpu/drm/panthor/panthor_sched.c | 5 +++++ 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c index 4fcfb3ad05073..9ebb23eadfec5 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.c +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -573,3 +573,11 @@ int panthor_aw_ensure_gpu_access(struct panthor_device= *ptdev) =20 goto again; } + +bool panthor_aw_has_gpu_access(struct panthor_device *ptdev) +{ + if (!ptdev->aw) + return true; + + return (atomic_read(&ptdev->aw->state) =3D=3D PANTHOR_AW_STATE_GPU_GRANTE= D); +} diff --git a/drivers/gpu/drm/panthor/panthor_aw.h b/drivers/gpu/drm/panthor= /panthor_aw.h index 7a46a1e18093a..1da613fa330a0 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.h +++ b/drivers/gpu/drm/panthor/panthor_aw.h @@ -41,4 +41,6 @@ int panthor_aw_suspend(struct panthor_device *ptdev); =20 int panthor_aw_ensure_gpu_access(struct panthor_device *ptdev); =20 +bool panthor_aw_has_gpu_access(struct panthor_device *ptdev); + #endif diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 1449d9a66302e..b4c234f3d3ea4 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1140,9 +1140,10 @@ static int panthor_fw_start(struct panthor_device *p= tdev) gpu_write(fw->iomem, MCU_CONTROL, MCU_CONTROL_AUTO); =20 if (!wait_event_timeout(ptdev->fw->req_waitqueue, - ptdev->fw->booted, + (ptdev->fw->booted || + !panthor_aw_has_gpu_access(ptdev)), msecs_to_jiffies(1000))) { - if (!ptdev->fw->booted && + if (!ptdev->fw->booted && panthor_aw_has_gpu_access(ptdev) && !(gpu_read(fw->irq.iomem, INT_STAT) & JOB_INT_GLOBAL_IF)) timedout =3D true; } diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index e6e970e9b59d3..25fe7c77f8763 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -17,6 +17,7 @@ #include #include =20 +#include "panthor_aw.h" #include "panthor_device.h" #include "panthor_gpu.h" #include "panthor_gpu_regs.h" @@ -376,7 +377,8 @@ int panthor_gpu_flush_caches(struct panthor_device *ptd= ev, msecs_to_jiffies(100))) { scoped_guard(spinlock, &ptdev->gpu->reqs_lock) { if ((ptdev->gpu->pending_reqs & GPU_IRQ_CLEAN_CACHES_COMPLETED) !=3D 0 = && - !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & GPU_IRQ_CLEAN_CACHES_COMP= LETED)) + !(gpu_read(gpu->irq.iomem, INT_RAWSTAT) & + GPU_IRQ_CLEAN_CACHES_COMPLETED) && panthor_aw_has_gpu_access(ptde= v)) ret =3D -ETIMEDOUT; else ptdev->gpu->pending_reqs &=3D ~GPU_IRQ_CLEAN_CACHES_COMPLETED; diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index cc2e01595f23b..2a0feb0b39ece 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -10,6 +10,7 @@ #include #include =20 +#include "panthor_aw.h" #include "panthor_device.h" #include "panthor_gpu_regs.h" #include "panthor_hw.h" @@ -122,7 +123,8 @@ static int panthor_pwr_reset(struct panthor_device *ptd= ev, u32 reset_cmd) msecs_to_jiffies(PWR_RESET_TIMEOUT_MS))) { guard(spinlock_irqsave)(&ptdev->pwr->reqs_lock); =20 - if (reset_pending(ptdev) && !reset_irq_raised(ptdev)) { + if (reset_pending(ptdev) && !reset_irq_raised(ptdev) && + panthor_aw_has_gpu_access(ptdev)) { drm_err(&ptdev->base, "RESET timed out (0x%x)", reset_cmd); return -ETIMEDOUT; } @@ -266,9 +268,14 @@ static int panthor_pwr_domain_transition(struct pantho= r_device *ptdev, u32 cmd, =20 panthor_pwr_write_command(ptdev, pwr_cmd, mask); =20 - ret =3D gpu_read64_poll_timeout(pwr->iomem, ready_reg, val, (mask & val) = =3D=3D expected_val, + ret =3D gpu_read64_poll_timeout(pwr->iomem, ready_reg, val, + ((mask & val) =3D=3D expected_val || + !panthor_aw_has_gpu_access(ptdev)), 100, timeout_us); if (ret) { + if (!panthor_aw_has_gpu_access(ptdev)) + return 0; + drm_err(&ptdev->base, "timeout waiting on %s power domain transition, cmd(0x%x), arg(0x%llx)", get_domain_name(domain), pwr_cmd, mask); @@ -330,9 +337,13 @@ static int retract_domain(struct panthor_device *ptdev= , u32 domain) * allow-flag will be set with delegated-flag being cleared. */ ret =3D gpu_read64_poll_timeout(pwr->iomem, PWR_STATUS, val, - ((delegated_mask | allow_mask) & val) =3D=3D allow_mask, 10, - PWR_TRANSITION_TIMEOUT_US); + (((delegated_mask | allow_mask) & val) =3D=3D allow_mask || + !panthor_aw_has_gpu_access(ptdev)), + 10, PWR_TRANSITION_TIMEOUT_US); if (ret) { + if (!panthor_aw_has_gpu_access(ptdev)) + return 0; + drm_err(&ptdev->base, "Retracting %s domain timeout, cmd(0x%x)", get_domain_name(domain), pwr_cmd); return ret; @@ -387,9 +398,13 @@ static int delegate_domain(struct panthor_device *ptde= v, u32 domain) * allow-flag will be cleared with delegated-flag being set. */ ret =3D gpu_read64_poll_timeout(pwr->iomem, PWR_STATUS, val, - ((delegated_mask | allow_mask) & val) =3D=3D delegated_mask, + (((delegated_mask | allow_mask) & val) =3D=3D delegated_mask || + !panthor_aw_has_gpu_access(ptdev)), 10, PWR_TRANSITION_TIMEOUT_US); if (ret) { + if (!panthor_aw_has_gpu_access(ptdev)) + return 0; + drm_err(&ptdev->base, "Delegating %s domain timeout, cmd(0x%x)", get_domain_name(domain), pwr_cmd); return ret; @@ -519,7 +534,7 @@ void panthor_pwr_l2_power_off(struct panthor_device *pt= dev) const u64 pwr_status =3D gpu_read64(pwr->iomem, PWR_STATUS); =20 /* Abort if L2 power off constraints are not satisfied */ - if (!(pwr_status & l2_allow_mask)) { + if (!(pwr_status & l2_allow_mask) && panthor_aw_has_gpu_access(ptdev)) { drm_warn(&ptdev->base, "Power off L2 domain not allowed"); return; } diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index ac6aee554820e..6d801329514e0 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -1887,6 +1887,9 @@ void panthor_sched_report_fw_events(struct panthor_de= vice *ptdev, u32 events) =20 guard(spinlock)(&ptdev->scheduler->events_lock); =20 + if (!panthor_aw_has_gpu_access(ptdev)) + return; + if (events & JOB_INT_GLOBAL_IF) { sched_process_global_irq_locked(ptdev); events &=3D ~JOB_INT_GLOBAL_IF; @@ -2060,6 +2063,8 @@ static int csgs_upd_ctx_apply_locked(struct panthor_d= evice *ptdev, csg_iface =3D panthor_fw_get_csg_iface(ptdev, csg_id); =20 ret =3D panthor_fw_csg_wait_acks(ptdev, csg_id, req_mask, &acked, 100); + if (ret && !panthor_aw_has_gpu_access(ptdev)) + ret =3D 0; =20 if (acked & CSG_ENDPOINT_CONFIG) csg_slot_sync_priority_locked(ptdev, csg_id); --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010055.outbound.protection.outlook.com [52.101.84.55]) (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 4B02F43B3D5 for ; Tue, 22 Sep 2026 20:48:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.55 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110117; cv=fail; b=LhaGSMHqNBzmgtqprtR8ybYdzH02Nnc6CSbT72MOEAnoE8WnuVmqcuB5+LV2gUpszyuArxxpCjweicU7RTEtzA/G4V3ZPm+k4kWEUnJpVdp4Rlrqle/A04BrPsm6Kv8xD9sgPZjrLnfu+IVr49AIi9yeoYhE1yuU5CHA9KqqNDU= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110117; c=relaxed/simple; bh=WCLWD9Zku7PBy8nYomoVTHnD0GOBPex6igoYZLIiteY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CpecBxJnzQgo5TfCqb4OpPjPZcIkPvqWosW06t7nkSJicRbOJhiunB7yHyHYpkrAVaq3hUy8R3B7qzRv6Ayzhxjf3SW+eWkvA3mF8RFiwsyqvyqEZRv10DYu3dXGGi2fcaoEs7h/9medjGc9XRn1QhgydJb5ciFGmuRqYkXAKTM= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Ap4khveh; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Ap4khveh; arc=fail smtp.client-ip=52.101.84.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Ap4khveh"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Ap4khveh" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=HhTMRwPpMelz4LDKJ/nEoAf4zsk5dGh1zX8CDJ45XXzZtuyaID8Mzsp/o45do79QvX7NjnkpfooOzpSWL4CYwJHtvwd/QEzwv26QTyt3hQO6MNizXQ3m1uJPHQLoY+8QcbChnp4+nEBiDNPwHxaTXwK4laZau5HqYRfhH413OXhNcNBabpJJJ07LehQ01Y3nfgHbk5xuV/+SS2I4VEkU19dgoBdgaofe0PTZQnL5JractaSPLdgDTJyTQ7vhtWosC9N+Mm4ygOkhYnovwdBdTs82Bcs+rJtXxsvp14THuWO8bhjWJf9O1rhNNrHhhYTNkuh1NyMh9ZuB66tpgC2H3g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/5AljVafS12/A4VvkaxC6EYWb055xtVlipTgb9XwgaY=; b=MH6e+fAhwqDJ4v4cLdoxwZkFxSG/TOUs6rn3dURgD6lg3rVhjj80GGwq8W1EFgYuaO9zaw/xZHbbNXSDJSBfbtTfSiJ2K3oV/QhctdCFPiV386rTkzEZJXuW7Lcv8DMcwbaZ2rnk6pt6C5m9V6XTwfAsdTlSKsUWKd++iySVZSa3Ih/AYomd5k86xkJXp+WuOdxR3bZNc2FbPNAqhgULKpZsA29zI7JXnzm2xreCwm/PCUKtz0pm6xsnTwWFis5DO9XO2PTGmWpFjf7auyqZNH0Pmzmx0xeyTELeiQz9GwflWVc61hHOEy4LKZ9tSu4fu1j8hdrEq7OZVVHbD4xWfQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/5AljVafS12/A4VvkaxC6EYWb055xtVlipTgb9XwgaY=; b=Ap4khveh+wpH+L7f/r9vh2NSDoryTx3s5tkf/1otxhjXSant6sU+j8jef3e4ctN2oGpZxnLgV/dVH6hz/rTQMg5cyvLHo6EUGHHvzk4WSwdsG43O3BP/LWO0TTCEvvrNs0lgkIac5PcCxvf7lVYVTUNmiKj+zW4voBhJZZE09Ro= Received: from AS9PR01CA0041.eurprd01.prod.exchangelabs.com (2603:10a6:20b:542::15) by PR3PR08MB5771.eurprd08.prod.outlook.com (2603:10a6:102:83::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:48:10 +0000 Received: from CPH1EPF00000524.eurprd05.prod.outlook.com (2603:10a6:20b:542:cafe::6c) by AS9PR01CA0041.outlook.office365.com (2603:10a6:20b:542::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:10 +0000 X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF00000524.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:48:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wwnCwoCgzCgqb7Y/EIgdWTkUX9cA0wUwyZTtClpGlklc/AOCzME7mTCKAfH3YOdFisfTnIHhgy7vw03D/+Bx+ymxch8A6MKKnz/r5WTJLL+nownKOm66iyuTn65vVsGjApUqje6oQp1/o1vqxsDuQcqpFCIh0YY9xp/objNNUnXGq9s8aA3Dr/l6lF5gLfa6H6b857S8aqI9VrV9DUqGYsdLmfVR7oAKnoRUOBBW6W0X/PcQgcyynvuJT666xvMz1rs3q/cA3eTcpBkOGEnGVPe8NNP5E5jO4HcyzFLtr4s2Q2uZQIgCUYKe0Wnng9VLd+xoZTZCkmtXk6s/hH4UHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/5AljVafS12/A4VvkaxC6EYWb055xtVlipTgb9XwgaY=; b=J4r5Nh4HuQ78ZVTpUrFXKqHzbzJYyU3ybgH3jQWrodtgC6Tq83l3/mARwNWeyXZLMfpDom2jYRkc/lh5nPMRzKrjvSfS057NHLlkCnShApvA++UOR+MmpcXiMLrRjm0elPAVzMHn+JpIUhB0WIlu/jc7x3elmYgXsv6dC31JthJX6Lz00k/fQnyUG5tmY/Z1V/OJr67Vsykx4zOCAwH7m+RL8uNEy/BWuWj5Vi38OqZRKKdfTD7zCbt1t9tABpgVlFjY6fMjcmBzswspk4HylZnJtzmTjAuyim4wmQbTXL09lIYsTrbCTC9kyzjJj1cncHJAD643oa8y4n3ddd0SeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/5AljVafS12/A4VvkaxC6EYWb055xtVlipTgb9XwgaY=; b=Ap4khveh+wpH+L7f/r9vh2NSDoryTx3s5tkf/1otxhjXSant6sU+j8jef3e4ctN2oGpZxnLgV/dVH6hz/rTQMg5cyvLHo6EUGHHvzk4WSwdsG43O3BP/LWO0TTCEvvrNs0lgkIac5PcCxvf7lVYVTUNmiKj+zW4voBhJZZE09Ro= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:37 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:37 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 26/27] drm/panthor: Prevent missed post-yield cleanup due to reset Date: Tue, 22 Sep 2026 21:45:20 +0100 Message-ID: <20260922204535.2850094-27-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0370.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18e::15) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|CPH1EPF00000524:EE_|PR3PR08MB5771:EE_ X-MS-Office365-Filtering-Correlation-Id: b9323b15-1cde-4fba-d1c3-08df18ead013 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: ZTsJl57+tic3Jf0Qceb71vbjxCJTgqMXnJNVk/YtgirgzvdrWjpxbOkgYw63ojxvbXfbSMQgfUhEuadWI60EvT/3gWyTA+4cf3yRl0oTsqb/yKmvIaSr1LA/PaiwQtwT7vUtr8rXDc1zUhkNGkUYkCW0bo+z0to+d7BYqVHl102NjudfdvpreNWil0rChAsd2Bzm/xbl+CJSkryIaPiMUxemdjpTHWWiAHMZBve006QccRPXR1wdB9Q+dPudSv+MP130QR5iL31j/LxIGGVnw2DoTocniDgyhqbGC8TW1BJEd2kdGDQUrEOAUTpdDu0TI5p10Fp9qctRJuxJo/fQD6+0ue+3w7DDt6OyuB7MMVmHAxB6tbW4tdqaYJt8YMkNbe3/6KfmK4qPQgYd/2tyGDpVnAdYfRC+PEV474nTnggseDu0jITSc/yFHr11073jvi21YVyLBerR5yIe+nvYg7U6eVX87rSCbw7EUShreblTuYiEYfrYhG0XUf3kW29nbXO1wVHZlO/w31Wg2kD3PnykWZwVejkxSYiuQIetvw8aqHGjGMnxpTz9mDkSKkorxghGAhNTEfxGPldy0VBjAr+0CRz8hfOPfBxLNru0p4dfly093lROCb7ZzLPeXF3LN9RYe3n0ng4JrkxnXiumC/voNyI+D19NRvMXAGUwjf0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: xkIWXQ+jmy0jnoMcyiteEkjCqq66z2zZFITLtQBwMHLNAlXcB3k1NuPy0HWFsI/KFEGVx9UBu95NUqiy2x4mXygjXQ+8ptEJLpFDTtdGYpLIw8FiqIPOF7JX2LVZOlw5OX5F0pu1qH4dZumBZpZEB1L8EJCIwZ5NM3aauaVb4YiaO0lAumlqDh4WZ0Y8uMAt1uJnJxXBvsOjEhXZvgR2FiB5ZiIRrk89gY3Up9UJoN3/4cLDZfsAQu0v+//HaEsDRzEPT4Vv8EVPVf+RIEWIYFehy9WZYXNOLinXIiO5TAqsZafPQzUTKn5Fth1VZeqJWYMMEIbsS+BpWVu74G35/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000524.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 769f941d-2dec-4480-8e11-08df18eabc77 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|35042699022|23010399003|1800799024|82310400026|14060799003|6133799003|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: KZA0/lwM1wQo5/l+M+1NZ7RQjEgOokD284ERycap399gKofG9efVbq1xt/Plo3bIcIcoktRtmg4ozGdWpA4SyRDoVhxVL+1iZLdL9QCoiKHwBYhll7d68fHH3ZOZP9Z8iDJXSlGM0/Hy5updog+dOhd7dNTnQgLc/r49m1c/JOPLvL9LHLhtpG7Nv9AL+cemd+oceKdVsnUacbCWx63o4NZ+0BklI0HHedfsiMxdLDe/6CLfGcW8Rp6bFUx5zkW+MwWpGoVGR/HKkw0uWnv3crTgfaC8teTR75RjeIS62ECKWUIG3qHhbw/qffmSYVxOu8Hq1elmMK8CsMm5y5B1GlYnkh7X2LY0IIYICe2yq/B/d7VbG4KHyNZVyVhejBDIvsEXO9p9QpkQ4h+hfhfa8Ow88sTsH8R/UyrNL+uK04hxYD/nA4XJn/xDpCdDTeo2scDx5y4o6+vEsgKcymRwqVv57Beg5TVOAF3fj0rZnHBrOuOOLiwDxSKk+ZBosI6Q0hmCRawW1ic2SGThx3+ZLe1kXHlHV9CHPbsXg7ZFFqfvNlHTXMTbPTGsJuNgKXW4U4L0JZtpn45iwp63/WKwQ+7ubs5cUJxCGq1tUnO1YEmtESS4BvznZYPk+jSjVDOhJ4NJkAircsqXzbryy5IOMYhbwIol7RFdZTdnfEv2eK7b/byfftQLpYopA921cNdk66OddjaHOkEq2kioZqZk+w== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(35042699022)(23010399003)(1800799024)(82310400026)(14060799003)(6133799003)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Uh684HkjVZZQY0ixXN4yqa494WwpIJY4yBBwUA2ZBLc/mQ9WENLT+XNKPd04m8K4cjg72tBXyWdWAxmNI6yx0Rs4x/tT5SXjVat3Bp8bsBgBe8ZqtItusekIeWtwwkKt1lwixAzxBxeq3clhXacPQxVX9I3fxuy0b063nqtpqTAfEVpYgjQltb3XjNwD0PhvgPaKTeOTD9lywwSRSgf2PsTsgznzE3cLYnK9wrT24dlqEtVDJTarHbWOFKxa8IZ1vtTl1bRuP5gfpN9hANpfyf/jDPai1rAqx9jvqoYd0J88YNu5iXVy0Pv+FTgOD/A+kb8s1PsYeBjd/KSySdzKCjEyh0ouyd7WxGKPTr1h4sMaUPEfFCW5HjyBuYOfZB3tw+vu61Gd1Mp1W6ilEQy3dbniTWpEYu/tP1caomyUK2PJAPLPsVED35lyhJu9Gv5a X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:10.0719 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b9323b15-1cde-4fba-d1c3-08df18ead013 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000524.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5771 Content-Type: text/plain; charset="utf-8" With v15 GPUs, FW can yield GPU access at any point. This includes when panthor has scheduled a reset. If a WINDOW_CLOSED event is received after reset work is scheduled but before the actual RESET_SOFT command is sent, panthor_aw can end up assuming that the WINDOW_CLOSED is a result of the reset and fail to schedule the post-yield cleanup. Introduce pre_reset and post_reset helpers for panthor_aw which marks a granted AW as reset-active so reset-originated WINDOW_CLOSED handling does not suppress post-yield cleanup when FW yield wins the race. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_aw.c | 54 +++++++++++++++++++++--- drivers/gpu/drm/panthor/panthor_aw.h | 7 +++ drivers/gpu/drm/panthor/panthor_device.c | 13 +++++- 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c index 9ebb23eadfec5..7ef13db4acf50 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.c +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -248,7 +248,7 @@ static void panthor_aw_handle_window_closed(struct pant= hor_aw *aw) struct panthor_device *ptdev =3D aw->ptdev; =20 /* Ignore this WINDOW_CLOSED as part of reset operation. */ - if (panthor_device_reset_is_pending(ptdev)) + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_RESET_ACTIVE) return; =20 if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_GPU_STOPPED || @@ -260,14 +260,14 @@ static void panthor_aw_handle_window_closed(struct pa= nthor_aw *aw) =20 /* * Window may have been closed immediately after opening. - * Setting state back to READY will prevent WINDOW_OPENDED from + * Setting state back to READY will prevent WINDOW_OPENED from * mistakenly transitioning the state to GRANTED. */ if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, PANTHOR_AW_STATE_READY)) return; =20 - /* Triggerred from messaged-based yield. Unblock its wait */ + /* Triggered from messaged-based yield. Unblock its wait */ if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_STOPPED_IDLE, PANTHOR_AW_STATE_READY)) return; @@ -275,6 +275,17 @@ static void panthor_aw_handle_window_closed(struct pan= thor_aw *aw) panthor_aw_schedule_post_yield_work(aw); } =20 +static void panthor_aw_handle_window_opened(struct panthor_aw *aw) +{ + /* Ignore this WINDOW_OPENED as part of reset operation. */ + if (atomic_read(&aw->state) =3D=3D PANTHOR_AW_STATE_RESET_ACTIVE) + return; + + /* Window opened due to GPU_REQUEST */ + panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_STATE_GPU_GRANTED); +} + static irqreturn_t panthor_aw_irq_raw_hander(int irq, void *data) { struct panthor_irq *pirq =3D data; @@ -297,10 +308,8 @@ static irqreturn_t panthor_aw_irq_raw_hander(int irq, = void *data) if (status & WINDOW_IRQ_WINDOW_CLOSED) panthor_aw_handle_window_closed(aw); =20 - if ((status & WINDOW_IRQ_WINDOW_OPENED) && panthor_aw_is_open(aw)) - panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, - PANTHOR_AW_STATE_GPU_GRANTED); + panthor_aw_handle_window_opened(aw); =20 gpu_write(pirq->iomem, INT_CLEAR, status); =20 @@ -579,5 +588,36 @@ bool panthor_aw_has_gpu_access(struct panthor_device *= ptdev) if (!ptdev->aw) return true; =20 - return (atomic_read(&ptdev->aw->state) =3D=3D PANTHOR_AW_STATE_GPU_GRANTE= D); + switch (atomic_read(&ptdev->aw->state)) { + case PANTHOR_AW_STATE_GPU_GRANTED: + case PANTHOR_AW_STATE_RESET_ACTIVE: + return true; + } + + return false; +} + +void panthor_aw_pre_reset(struct panthor_device *ptdev) +{ + struct panthor_aw *aw =3D ptdev->aw; + + if (!aw) + return; + + panthor_aw_state_try_set(ptdev->aw, PANTHOR_AW_STATE_GPU_GRANTED, + PANTHOR_AW_STATE_RESET_ACTIVE); +} + +void panthor_aw_post_reset(struct panthor_device *ptdev) +{ + struct panthor_aw *aw =3D ptdev->aw; + + if (!aw) + return; + + panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_RESET_ACTIVE, + PANTHOR_AW_STATE_GPU_GRANTED); + + if (!panthor_aw_is_open(aw)) + panthor_aw_schedule_post_yield_work(aw); } diff --git a/drivers/gpu/drm/panthor/panthor_aw.h b/drivers/gpu/drm/panthor= /panthor_aw.h index 1da613fa330a0..0269bbbbdc165 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.h +++ b/drivers/gpu/drm/panthor/panthor_aw.h @@ -24,6 +24,9 @@ enum aw_states { /** @PANTHOR_AW_STATE_GPU_GRANTED: AW is granted GPU access. */ PANTHOR_AW_STATE_GPU_GRANTED, =20 + /** @PANTHOR_AW_STATE_RESET_ACTIVE: AW is being reset. */ + PANTHOR_AW_STATE_RESET_ACTIVE, + /** @PANTHOR_AW_STATE_STOPPED_IDLE: AW has stopped GPU access. */ PANTHOR_AW_STATE_STOPPED_IDLE, =20 @@ -43,4 +46,8 @@ int panthor_aw_ensure_gpu_access(struct panthor_device *p= tdev); =20 bool panthor_aw_has_gpu_access(struct panthor_device *ptdev); =20 +void panthor_aw_pre_reset(struct panthor_device *ptdev); + +void panthor_aw_post_reset(struct panthor_device *ptdev); + #endif diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index ea35c5e1d87b4..86eb4e9a61789 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -138,18 +138,27 @@ static void panthor_device_reset_work(struct work_str= uct *work) if (!drm_dev_enter(&ptdev->base, &cookie)) return; =20 + if (!panthor_aw_has_gpu_access(ptdev)) + goto out_clear_pending; + panthor_sched_pre_reset(ptdev); + panthor_aw_pre_reset(ptdev); panthor_fw_pre_reset(ptdev, true); panthor_mmu_pre_reset(ptdev); + panthor_hw_soft_reset(ptdev); + panthor_hw_l2_power_on(ptdev); panthor_mmu_post_reset(ptdev); ret =3D panthor_fw_post_reset(ptdev); - atomic_set(&ptdev->reset.pending, 0); + panthor_aw_post_reset(ptdev); panthor_sched_post_reset(ptdev, ret !=3D 0); + +out_clear_pending: + atomic_set(&ptdev->reset.pending, 0); drm_dev_exit(cookie); =20 - if (ret) { + if (ret && panthor_aw_has_gpu_access(ptdev)) { panthor_device_unplug(ptdev); drm_err(&ptdev->base, "Failed to boot MCU after reset, making device unu= sable."); } --=20 2.43.0 From nobody Thu Sep 24 14:26:44 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012023.outbound.protection.outlook.com [52.101.66.23]) (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 678AB560AB4 for ; Tue, 22 Sep 2026 20:48:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.23 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110118; cv=fail; b=nHnGHX9AMhpRub//rKq6GAC/AYIR/+BozHVrPbzQjPSaonUj8C48273lksz44QvnOLv9U1n+FOC6vVfO8Sol62NYgoJdK+jUo0Kdq9GIDlUXgWBnLbBHAy3w3RaN6yag8PONLXBAvaamV/XyTKYA/nKIyZtwv3WK9WgVMEwmYq8= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790110118; c=relaxed/simple; bh=h60qcapNVqt1LrRMbF3daggVG1A1AedU1HcuczmgQ+Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tayNPpUKeYj8bLr56K+AXF7YMSF2+MLQxf/NBAQ28iMjqTgmH3TQn1xDUFa/fa2Tluw8fiAMrost2lqZQLx60/HynTLvl42K4gymM2ZAojzUja62+GzhZI912yOEaolHUAErMuGMlvidnysg/WZ2nfoDkEAcuNy5H1Vj9PUA6/Q= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=JGihnI4u; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=JGihnI4u; arc=fail smtp.client-ip=52.101.66.23 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="JGihnI4u"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="JGihnI4u" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=BRV5a23pIK4T3p0Jy6DM3Jt8i6M7f+6jX91ELA7wkxA3PYnFQphWFcuDnVRuubwdLu4RWHp74FqOrxYujLMhzfrc2Bdg43yn04HFI9AZQdSXp24IY8DfgiFu5VGkbGW7BZGSeR5/QDxT5wRZf1v0gnVVe0ZLJMiEnFUUkDA+KhNCCzhJF43VzZ6eYXOA3fmgqK53/33vM7pEGDzme8m3jwBB04iBPfsJmObdiRqMnUw4XVwmmJuAj4mvAsEYAdGm4lMPbeepITEmbXxeS8ww7WoEeP5mBaTCXL8H10Is61yLqvYvViyQewRMSy2c0ovKa0I2hVCZ+8QK2pC+KZ/MIA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v8zpUBCs6S8jyxcO+TkPNfL83hLMkh2nufCCILC9MDs=; b=Tf3/6TN6PfFz7r3bFZyFoa0ys+g7vbe1RDMfZ1Pomloo6CXN9eeGAsTu9gWedTrDy2RxkHSomutWE95WGf3sjAmJXCzobMrcjQ2Dm375mKIeEj0XQKHEGBJEQX6bpHLdWCoh/5P4AeBAvdzMe6e/jod7sSuc5EwnY9z3QMiE47Yhgw1w5+FM5JtdrvtD7uDFuAGOpJxpc2XSzbcSrkIaRVIx00R/wxmo3rntaet5ikw/bWF+NYx0hKPiD3uKSN/MqoJu4/EPa8XUSt2LMGrbOUvvVLl4ULUgPa1XvlxkcyTnl0F7KUoFyrtgm+3y/JsKvhacfbJe/EqMlB9TQtE7cA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v8zpUBCs6S8jyxcO+TkPNfL83hLMkh2nufCCILC9MDs=; b=JGihnI4uaD8kLQNqcgC1F9Cwb4B0++bglpbh1rdNznbDpNl9hgcfheJ7YfQ8DAJ3iXt0SeiXV2lCuZ8bte494+5LIPKhKFMtn8RiLkR0VlmVGwnUvuIyTcWmulV112MQSwVG0qgRRqZMBbdsysyEYio7QWJmUp1Es70yIX7ZHaU= Received: from AM0PR10CA0026.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::36) by AM0PR08MB5379.eurprd08.prod.outlook.com (2603:10a6:208:182::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 20:48:12 +0000 Received: from CPH1EPF00000529.eurprd05.prod.outlook.com (2603:10a6:208:17c:cafe::43) by AM0PR10CA0026.outlook.office365.com (2603:10a6:208:17c::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 20:48:12 +0000 X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF00000529.mail.protection.outlook.com (10.167.241.164) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 20:48:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u4773R0AdhXvrMOoYkMGZr55HCIzg0H3f3oYFqWrqXj9L6VbBL0fXSacYfX45SJ2FQnZ7fJuPwoxYmO2FAS7M2TFAQ1sCyLMAHURUigEkElftGyg6Qr8rtp5Xl0CwqP+h/ZGL3Y7e/dXEgDqGczO0lplGVum19jFfQli8n8FW3EEcznyJs2LGujFE7fzdYFIms0Sqph7NUk6GjSW4Z4x88VwG5zC9v4+AaSXMakBsxccU+u8iTc14ZPdzyW1BJYO7/+ZRVV4UIwGQb/4IvFf95XT8HbvRKP4r8c34o4/ATpuFuq6K/baqbh5W9w4puEQkyP3j4JQ9tJj127BVPvxoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v8zpUBCs6S8jyxcO+TkPNfL83hLMkh2nufCCILC9MDs=; b=XKVpu/TlsLhwB8R5RDt+S4bSyVEoR3HC0sXfazmRDIT4OiY/b3pDJ/WHYu1VlOPIH2izj27bnIJI8fOVfQq04tLTtx5RxtNsYJg5Gd/FE30Z4KkI0/tvU6/Ikg30AHAAKEI16//CZfD/fIS51vgdtT0GpyNUrAiUdL/KO7O+L2uuq5mWjQbWTbxHfqNhVfRXrB4Hh405AC4xoN8WKOcwqyWPYyoRqLZTHYwr2YCHwjcjcgtmJU15LmZ6wj4ZNw3ftrq3jZEl6JJYIdsDD5rMDWSItinMYRp5uoQBTZ/UQ1am5bF+j0IwTlhx594A2QijXQw0AO0fhXIElCpY5hXO5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v8zpUBCs6S8jyxcO+TkPNfL83hLMkh2nufCCILC9MDs=; b=JGihnI4uaD8kLQNqcgC1F9Cwb4B0++bglpbh1rdNznbDpNl9hgcfheJ7YfQ8DAJ3iXt0SeiXV2lCuZ8bte494+5LIPKhKFMtn8RiLkR0VlmVGwnUvuIyTcWmulV112MQSwVG0qgRRqZMBbdsysyEYio7QWJmUp1Es70yIX7ZHaU= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by GV1PR08MB8743.eurprd08.prod.outlook.com (2603:10a6:150:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 20:47:39 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::27c:ea0c:e75a:d41d%3]) with mapi id 15.21.0451.012; Tue, 22 Sep 2026 20:47:39 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , linux-kernel@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Subject: [PATCH v1 27/27] drm/panthor: Release GPU access immediately for out-of-band grants Date: Tue, 22 Sep 2026 21:45:21 +0100 Message-ID: <20260922204535.2850094-28-karunika.choo@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260922204535.2850094-1-karunika.choo@arm.com> References: <20260922204535.2850094-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0265.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:194::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|GV1PR08MB8743:EE_|CPH1EPF00000529:EE_|AM0PR08MB5379:EE_ X-MS-Office365-Filtering-Correlation-Id: 8dfdfc75-c74b-4f2c-490b-08df18ead125 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|10067099003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: ARVTS+Oh5C2X+Kspq/LbErMPYYnYs4rSXNBtJ0/WATIOEux++m0SyrUWaCjk/v9FPqOucrORJOBvcZ5Ndqo9eOTDwrX/u1SfrkIvA18A5MxJFQFjTGCrouseJmlpDbod2W//yelnyObqT2bOtNhjke1S4QHTsZ06vMhYlaLJ5WWgwcLPnqGBluL0WUygQHE9eDzxprwgqPcTB28VU8+LdKynAXWY18byRlCrAuQwVE57wdO4HdTUM5Aw+IxUdYunq7/S9AXAtfagdTtTUZWDu7VzrrhsjcE6UoX4LEVD9z4juiWvvn6kKvOohk5YEEWBRkNgXjSYPBkodR7UOnY//VPrKrXDO6KqFSc3CtRyzrV1OT2uGdaTNA79+yc/UZv/7jMdbpp2KBaXrLO2GcV7r0lIpNvN22HUHMTdpx56v02GpWE9MQ7xgdH+i44/J2UvrSQqhTZqjoeyNPnKsYIwfIZ3aLYlZGyUbYkCv5SQGSUnqsndvPaaAwpsgOJBRGGdnAnS47KcjLxepqlPPRCMGfh9cyRAZ8G98c9fiqLfQUu5/vqQ2XdyFqrCS6faML87G8aVR9p8s2Nv5xgtpf0IxTVbdK0Sjs7Bf95Nmkfu7O4Uj3oZVNcdcaichaoPD+Oeqpz544utqM5/RNoKhsEdEOlx6Eg3d45zFN/noOpucn8= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-Exchange-RoutingPolicyChecked: NGeujvef9AnoQ/Qt316lwO+MzkP2eBhZsB4zvSTBWTZGNAgCZa/3mzOAGOJbQSoVEW0fx2HDSMiz0UHdpMWbBL/5BnBcoOJraPS/zjcDf657PnrmgaPPTZDRlH5I/FXGIOAmkUDRy7lhSK1FY0odKadK/os2W7kMgplGhj/cVY3An5VD56rDIPaVKKPAdNsq1bgtJ4c+cvdDaPEoRX/uzWyMyL9xIC9kyqESoWiXQmAxvPeRR8ymHvWuVhA1bKGmf5tUNIkig8VWmTCqC67mhKdBipLiTJvG49V830c3NhH39gGBiDdmylJGNkUSru66SZPW6q5yGSZ224RTRccxtA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8743 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000529.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 551aad8f-bd10-449e-c439-08df18eabd7d X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|376014|1800799024|82310400026|14060799003|23010399003|36860700016|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: TiXaTp0jcaxg1xUr2Yqv2LPTMSxjvqzlIohLMugy3qzUt0u6dYolnvcjYdrdLy0yadhMIQiahSRmG4bzKOmrXpTD/DURpHZqiMIY1m46O9aJ3Zj8lMNoOh5pnlQua5UmTp2DuISA3v/BizgkjI7xPn9QW6jvW3/9HdFn98krbjMfudJBcxEtdl0r3niItSncomT7ZGvgj0pAxrP0bVK4zBLwt3UMreMjDAY2ffG0r5hNtfcSwy5VrphljsuR8OoNlvZQp7+XaSk+Qs6+n6l9KksP5Ad1BOmseG1kVJcrdV4JoM/Mgre3asM0zvsldTz1NXpmFyc+tRUY+k3t6dQyZaQmoQIvyVjM24JOQPi0S3tLCDmQXOvgTKa5PqudiXng+JuiFC9b3x9W+DSpSJFPnFg+OmEGKo/r/+EGNOeW8eJL9BUaTH1BbqKSg4DLPoK5EctOX5yUFIYebSqu40qncL+SUubQ2hTvH1mkEEV14HL4audQkKvKwQwFih3dynHlESnBooPAXEVYZ86e1FqfZ+cSVdbGtLx5Xin3B1EL/Pfofux6CwGXFQgVz6XZPcu7+PqekZ4LmgkR4AU6ORWzvZ4ivY4B3Nj+eBIV20ZPJnKnjYmljiHLKnpI3jpo8BKusvDETx36Yw9gG0V9KCn/n0RkHSn6DOPQzmRluCcpb7nWj4j+rA5Ji0W4l/nsg9Kl0GMbO+vGjpCOAnTiM2dDYQ== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(376014)(1800799024)(82310400026)(14060799003)(23010399003)(36860700016)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: py13uNyHhi9+u2JrcyfN+k2rqnirz+x+OofzkQUAUR1AU1Ms9WvN+JASwvM12T7dmAzE/O5lx4PIwjZfpUWGrbdOMhmbVaEZwq3NlNiksukQiQJ0Tbjnp1you5Pz2sAMdpFxuHPt/75cosMVPBX9VvaB7yWiw2oWbz3/YTWKdDQVobbAKpAtzO6adlbyFFs0QnOuihrkFMojHkPV+qLXnhxd7WwHFQPfh38dxVWQQZB8pMmd6p9yFXRA2Z8CGvoTBAIpuhMCOtHnvCylbidvUNt27rw5fpoN1x2YQNgtqeH/RNblHazqz38MIzIexUjdtR8esMNW/6B7vEUDUOlKhpehgw9/Z9DLNS8iVsglUtwK6HuepSws6D5Sesz6hUfHN0cpMqBTaKztK02mbdQmXuaIH0hZ9H4mXl0foB6/xBNWp2KnXqTRTSenkETYn+B0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 20:48:11.8776 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8dfdfc75-c74b-4f2c-490b-08df18ead125 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000529.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5379 Content-Type: text/plain; charset="utf-8" A late grant can arrive after the request has timed out and the access window has returned to READY. Report GPU_STOPPED so the arbiter can release the unused grant. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_aw.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_aw.c b/drivers/gpu/drm/panthor= /panthor_aw.c index 7ef13db4acf50..27787c0b2f3a2 100644 --- a/drivers/gpu/drm/panthor/panthor_aw.c +++ b/drivers/gpu/drm/panthor/panthor_aw.c @@ -282,8 +282,13 @@ static void panthor_aw_handle_window_opened(struct pan= thor_aw *aw) return; =20 /* Window opened due to GPU_REQUEST */ - panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, - PANTHOR_AW_STATE_GPU_GRANTED); + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_GPU_REQUEST, + PANTHOR_AW_STATE_GPU_GRANTED)) + return; + + if (panthor_aw_state_try_set(aw, PANTHOR_AW_STATE_READY, + PANTHOR_AW_STATE_STOPPED_IDLE)) + panthor_aw_send_msg(aw, VM_ARB_GPU_STOPPED); } =20 static irqreturn_t panthor_aw_irq_raw_hander(int irq, void *data) --=20 2.43.0