From nobody Mon Dec 15 23:36:51 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013031.outbound.protection.outlook.com [40.107.162.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 56EF3314D2A for ; Mon, 15 Dec 2025 11:56:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.31 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799785; cv=fail; b=uG+uZ4jzDdfCMzK3kvLaPwMa0V8ZeZ0oH76MGuv0PrcqueWfRInFHRQ3vbEKzImGgstN5PZOqEuchaRd7Oj0duhq/fb9/oPXms7/9Y9nz+XSJL6fwO+ojThEF24ZMoT0cyaHMUwJkXyjnGrSipt/+qnFWyhTOYXFsB0wicaxAjY= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799785; c=relaxed/simple; bh=Sf9yV0vKLJROpCj+BbmSYw8dm46QCNBFRfDQABSh1vU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=j8vxZRLiCHXMuidU5K31Bd+Sy7NX7/G2Rz3kibzP8wkTcCggOZhQRaY7GICby4NB/45gG6i0pzNdkV4g3i0a4YMyqUAnMEOgzPEDcYW49lXcSWUPsIwVHfeuBaxDTxuHP4MWJWoorgf41s9g2TbKPPxHgzrtZRWyQp8wyEI58JI= 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=V5iIaa8L; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=V5iIaa8L; arc=fail smtp.client-ip=40.107.162.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="V5iIaa8L"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="V5iIaa8L" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=MISVfN8Y0KnrVwDCV8MFxINNKq1gF4kvJ6Sx5t9ylExWZx510z0jpouhJWK6aew1VKQWF3TdQpPHzXYrZGaXOfs+He6nqjw4lowfvVbDjDOi4PMqe2IoZRYnf/NyaaC6zle3SLD2tvyescVjr2Nlu+G3IIHBN5HEvAUl0XYbaZf2JvSa1PK6QSVDXH1/V/loWJYyMisMfw5O9v72VORiJQ7AmDuJHPwrPESW4JIY5b9NUr3EPtCEtRxTFlwGUHSqld5xvhDE19dXw2H0jstt51kSgc6btYCElAAW85EfbgtMACK2ei1qPFjspsnkpqQL9cK6HctnNmZ3ypIJkDYx0w== 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=OqdWduCkLYBAQptFu7kAPKORu52qhtzMtaBLDLQFywE=; b=UPwiG8XvgHT6utmaas23OjmSmGLs1dnht7Iu9CxPwYYA5M5LzexPObQH9dmavOP3s69292EKyi4JWwm1xSBNdvtZI/4j7pTx7eDgVfFgVMZ2WYsolGOIkuOkj0D0qOVecj9EK5sLaewDgX8cF/m3vdOj/6/kO5K0esQqaI7t8GQo7RCg8wCnVaFrMaKQjL96p6ZlFupnbCU3tH8p78+AasZlP/8xElXj1LMhqB8L85T5g/IP3U2hKKZWOlbT7WU2NKHToWhAWtxHi2lJpq/dpOxldzavz200feDlP6tuPRvXJ6W99ygJNbB3UVpQT76vuIXPdCmCxJt+tyeLz5mvbw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=collabora.com 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=OqdWduCkLYBAQptFu7kAPKORu52qhtzMtaBLDLQFywE=; b=V5iIaa8LaPFO/itVWmnkSM9mtJCPOpSmDpNt4E6aZWu8LkaShWNzi+IEBJei5tLjrZ6AzuR81R5FJoz8TYNTKz53AXzMToRktMDW0sMrSdjjc3NnSZ06KJHCfIRsnOdkrZHbdIkXhLpwyFfEE0kXNn5+E5mNjNKANJEzMjhdrSI= Received: from DU2PR04CA0216.eurprd04.prod.outlook.com (2603:10a6:10:2b1::11) by AM0PR08MB11831.eurprd08.prod.outlook.com (2603:10a6:20b:747::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:56:15 +0000 Received: from DB5PEPF00014B92.eurprd02.prod.outlook.com (2603:10a6:10:2b1:cafe::71) by DU2PR04CA0216.outlook.office365.com (2603:10a6:10:2b1::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.13 via Frontend Transport; Mon, 15 Dec 2025 11:56: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 DB5PEPF00014B92.mail.protection.outlook.com (10.167.8.230) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Mon, 15 Dec 2025 11:56:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X2KejnTaoOtaLK6LRl9PfpHQ6EwX8nsR85oKHj5V0qgsGNgCtNR0K54qdGDNCmOTo3tAHd+EDqO9r5lXG+vyVA39r9woO+smPjOlByL4zc+Pryr0pyOISN9Z9HmduVKuDt9EKuL5+MY6GQilmrKHRJl5+ukkO3JZQ3YNPXMmvA+kuju9wqLcDb0e+tdCyAeGG1WbznCocg/N9hjBwh7EVDfJ2b+Z5CHN1XURL6zqHzUICltAzDYjzkVAzHGOXd7i6tVgXQ1XMR2513rfHmzcjbwTqx3Thdu7hzOB1Ccg3g19J3LKZ/UUtWgtJXqAAUG943TCvhG3WGrUuQwC0fqcpw== 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=OqdWduCkLYBAQptFu7kAPKORu52qhtzMtaBLDLQFywE=; b=M6upKs/RPA64GJ3ebOeAVygWa5lz03e5wYIHSfTEbx8ukA8l9oO/by94U9b7VUhU5VZqL97/hB9v7InAUUOPO6adJyDxudjkSPo/oSE89KHLBXXfEXkdPixHzSxj5eZwFr/bZfQG+mpyMnKcEnWX9/loE7RCuXBZQoFGqJ9OEqg7gW6ztfUj/w5sCJWV/jDyeBU+0So7BitwZ8W2hHZ/11gmSffPAB8Ibd9+URhAaFduRU7JdnyMFYaD/yPcgVLWxGv84ELY81r2OlKhG5ZSPYkgCe29vQBb8/mHUEMCYd+LhEroCg57FGmqPkivjrjF6Rx3l1S1e4pc5LNITVO5Qg== 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=OqdWduCkLYBAQptFu7kAPKORu52qhtzMtaBLDLQFywE=; b=V5iIaa8LaPFO/itVWmnkSM9mtJCPOpSmDpNt4E6aZWu8LkaShWNzi+IEBJei5tLjrZ6AzuR81R5FJoz8TYNTKz53AXzMToRktMDW0sMrSdjjc3NnSZ06KJHCfIRsnOdkrZHbdIkXhLpwyFfEE0kXNn5+E5mNjNKANJEzMjhdrSI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) by VI1PR08MB5312.eurprd08.prod.outlook.com (2603:10a6:803:139::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:55:07 +0000 Received: from AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb]) by AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb%6]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 11:55:06 +0000 From: Lukas Zapolskas To: Boris Brezillon , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: nd@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Paul Toadere , Lukas Zapolskas Subject: [PATCH v1 1/5] drm/panthor: Implement CS_FAULT propagation to userspace Date: Mon, 15 Dec 2025 11:54:53 +0000 Message-Id: <20251215115457.2137485-2-lukas.zapolskas@arm.com> X-Mailer: git-send-email 2.33.0.dirty In-Reply-To: <20251215115457.2137485-1-lukas.zapolskas@arm.com> References: <20251215115457.2137485-1-lukas.zapolskas@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0279.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:195::14) To AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6820:EE_|VI1PR08MB5312:EE_|DB5PEPF00014B92:EE_|AM0PR08MB11831:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b2231b9-8ed2-497e-0a30-08de3bd0f2f7 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|366016|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?ltiSL0YdELkpu0GIQssiusNXN21PfdmZaytQIyR0BuzwNW87gXt84BFS2Tyk?= =?us-ascii?Q?KGuDFTkR08BBn7duMsOqVyJSBaHNJyzuCcTX9T83nKBz9H4YN2a9PiVaP+v6?= =?us-ascii?Q?mmHJSISCLvymXoaFZKfeWmT8d+hW4LO7mPG8K7//LD7RzliZ0F6q4yvLMMYi?= =?us-ascii?Q?eo57Sz7fFN7gmPppe43xpIjgXDDI7imAdF6mMpcpAmtXWM3+G6VQh4NqXUGf?= =?us-ascii?Q?eYoybQ/lCfFhA0ogz3hnjwy7AWwUtlA+7j3WYS2YdPk5A3O5/F3usmShGHo6?= =?us-ascii?Q?TX2GloILyEMnLcXUJnDmDCfZAJ14hrBA78Rkhnp6IbDhrjQqGfR69p72EpMb?= =?us-ascii?Q?G2+r/MJ4qMqhhsvwcOlch/uIXPRPmpYCutUCu/uoN6dNhm8iEZ3m6j2T4eAI?= =?us-ascii?Q?S6M1c8baXbhYsTdSojHcDFBzXaPFdbLLU10D0260NP7gvOE0V2QIqnmQy0oN?= =?us-ascii?Q?/zHtCF4EI4Ye2mGXCRpqybU/g2JgfcSMPS2dd0s5k4MS/nxL5rqiVuxR+YxM?= =?us-ascii?Q?IFJiU8/B8nZyJ0R0y7Fe72l7BHH8Iuzu6JFsxPvtPXJvCGeqgow1R0BVJ6Ty?= =?us-ascii?Q?Grfg3KS0saY31Bqo/oOutQinfsY+K/fwyA2doi6WtNpu13wcqA7knKr0tkxH?= =?us-ascii?Q?++BgZiJhadnRo2EABmtsRImTZFKvJjidf0/PCL51LKAgqDprvdOECO6PnkiN?= =?us-ascii?Q?m0s6B6hOUAGjiTWGrkGrVYUnzMjMLYlTb/PXq+xqEZxxZmRWfosFblZIYYHr?= =?us-ascii?Q?yexK7TIEV8PfPhuetl1KatCo0FfMZIKYjELLvAmvlFEVFA5LO/pM7vKfzVNM?= =?us-ascii?Q?whMy52KNToWVfAEozmJqUi/tlbh1KNKNFVLXJu0RB0o5+6kE2tIRy2WpuxDK?= =?us-ascii?Q?qM1tNTSBtHa2pCfteo8VeMTRMKderjmN7arX2eG7F0oM0J8pzL1Dtmo4jLAt?= =?us-ascii?Q?CPL2z6xyQQR8Z0wuYrd+5fGa+ICJmEPLfIr12r+Oqi+q3Wk3U1O51uWOSOKJ?= =?us-ascii?Q?3bkg8EkKmT0dop46sJMlFHEXLqGnzjm/oeiewv8qrdzaOehRuj3/ICjvfGXd?= =?us-ascii?Q?SZvYGvDs40tJY6nijQTW2YCJe09rjTymPePU5+ZhQ5AA0QRQ5D/LrH4Sowbf?= =?us-ascii?Q?RbwFPoY5YXLV7RthhR1sUrM1JtVN1by1Rh6uBYGHHt0c+9+bmzeRNrfGMoVJ?= =?us-ascii?Q?KgoqTbzLW/w0DIPF5sACMPg1ikxcyyQjgSmqHL/rS1R6KoD2nys5HnFnsqWD?= =?us-ascii?Q?JWb1HLfsIS40y6xyI4Pr8RmZznI8baFs9AJwrqg/xNG1SCg0oU6eNq23hBqO?= =?us-ascii?Q?SLBaKJ5WMUaPPHBymTaNEJbwtLrTQ7g8hjEs5z9BUDyXbVNTJQnPgSYmY3q+?= =?us-ascii?Q?BvuviPfUPKkEetN8rhWW/DAQbnZacfqz1N4DIelzjYJ0/hAZ+sDpeXZOerwr?= =?us-ascii?Q?3MrsBOtOmgo3pblfZaHM0AoTlMVs8Lzf?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6820.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5312 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B92.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9a38dcb3-5849-4485-ebc0-08de3bd0ca41 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|1800799024|14060799003|82310400026|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?P5ABMELX1rOMRtkCdeZZmWrnfMwQw81lBun+M1EMtqZoCGUF3WqAGoG1rLwz?= =?us-ascii?Q?4x+d+mLYClJJdQeSPK8y53rVxbJuvxPNS3pPr0QeG9Ajg544bFRZocmp2CgA?= =?us-ascii?Q?66tUmvn8CPvPxhI0zpcf30oF48XPcL5e5zA9SEahyMS+gM+shm+BHYaQgKQh?= =?us-ascii?Q?WPqkDCLJGYcoKNO6AIFZAiJnGv2tJIHS0u9lKFIuZ3mSJ0Ej2t3VM9R4d15d?= =?us-ascii?Q?VJ3fxoR03LjfC4CNJYTKbIlN5GfTRyQBFOpZqDBSxyD9sL8iSw5CfPCIi7or?= =?us-ascii?Q?bFZyaeWZP2osWIR+rrC39EcDhdemCjO3cWIKKHL1CF7BBxpTreear+/BLon3?= =?us-ascii?Q?duIGjDMXvoGbEdYKg33miYhttRRTU97vELJlFMMRmD4rQgjMHDQXSRp6f44k?= =?us-ascii?Q?+L6XAFc3cWjQcJX+OA1eJ3xmf50BGLR9XxxIrGrFqzOKHgluiM0K1S2g8dOd?= =?us-ascii?Q?2I1yq/+1arrceOPVDIm/f5wKo0kvBrKmIZzta7Gt2hcI0g6IcOOOQAuUtCEn?= =?us-ascii?Q?aRt26vmijiYY2FbcJETuB7exMBgn/iVNIv8fA97ReclEzFfuN5hNBTMkZC4W?= =?us-ascii?Q?zaWfCLuu3itDMqBMKDZDt0FNco2Gy4PqI1a7FqGyb21z/rxpvYrqjlA1ugzJ?= =?us-ascii?Q?HP8vyk6bZ7G+pgpriuoEAZXxFY07kGeg98kAwSizW4GAWlnyEcnhUXc/Snzb?= =?us-ascii?Q?rETPLUMqEVgfaZltGbstr54ukf89uf82l5wcy4NRM0rru3dAopOzzTpdBHYk?= =?us-ascii?Q?vP0RvnyJ7dNiEuNC1E8sF5RKK/15qavbrwzTHUPwlMPH/v/E8aW7iDfDlIoo?= =?us-ascii?Q?mmhZwrzrwKl37Y86avCOqDRUlKJePUZug/JtUn4pBCB6Wm3GSRnqZFHpO5Je?= =?us-ascii?Q?aa7Ha0o+k8h9CEYR94NDwitgvsNaPsghH/p5mDOpUKcgJIu8JWtOWBpFf3/C?= =?us-ascii?Q?0u336HIbCsljeFpN0m7gr0JgjT3jZ5PiZQW3E8By571zTVKtiVomro8FNhYT?= =?us-ascii?Q?611SkT4XQGyRQclDhaVXVwsxkbOClCsFxA4McKpNYanlFIVkfi/dOQgZPICN?= =?us-ascii?Q?xPeizvR9Y179YCk0/Ll2CdVUvpOOor6gLEQOMGp2plclaOcaClST5zRP/P5s?= =?us-ascii?Q?jmmxX8lJLFuOkjnOuvRpNpnQXJbgONDKTT8Zgi6iCs/pbNOwPARlOwORcz95?= =?us-ascii?Q?8PMK8mbupPDZQxPd62IFvhqEQzpBrUwSxk1ai92jX0+BJgJHFWXf0Etp5uyn?= =?us-ascii?Q?HvwX/jP5ziweFpvyZ/KBy7wsRTrQa67AJlOq0TbJEFlgFNZ0222yyHEa46tm?= =?us-ascii?Q?bhrRrQ7CNJVZlGhu2eaHqS64lWMx1C/+EPV6qcEnvrH9ETuVwAcP5DDgy1Vy?= =?us-ascii?Q?kbh0he0Hp5AOY34903m5wEMedw4t/HP590SR348GZySqTH0ujSBPmnnTx+ye?= =?us-ascii?Q?XogUnZYBCxflQ69wMOulMuoqj7BhcbNKRazXjuJZVFiJyUVoV1whXVRZrhKB?= =?us-ascii?Q?NDcswChG8vwgsXn4sjkpFT1FM8wyXk2UNpraKClckcaQGqAapW4DYM5rb8wo?= =?us-ascii?Q?bCwRC2uVLQemq25jrYU=3D?= 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)(36860700013)(376014)(1800799024)(14060799003)(82310400026)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 11:56:14.7690 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b2231b9-8ed2-497e-0a30-08de3bd0f2f7 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: DB5PEPF00014B92.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB11831 Content-Type: text/plain; charset="utf-8" From: Paul Toadere Though faulted queues do not prevent further submission, the recoverable faults may have further consequences which are worth recording and providing to the user. Signed-off-by: Paul Toadere Co-developed-by: Lukas Zapolskas Signed-off-by: Lukas Zapolskas --- drivers/gpu/drm/panthor/panthor_sched.c | 18 +++++++++++++++--- include/uapi/drm/panthor_drm.h | 11 +++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index a17b067a0439..eb8841beba39 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -569,6 +569,14 @@ struct panthor_group { /** @fatal_queues: Bitmask reflecting the queues that hit a fatal excepti= on. */ u32 fatal_queues; =20 + /** + * @fault_queues: Bitmask reflecting the queues that hit a recoverable ex= ception. + * + * This field is reset when the GROUP_GET_STATE ioctl is used to collect = the fault + * information. + */ + u32 fault_queues; + /** @tiler_oom: Mask of queues that have a tiler OOM event to process. */ atomic_t tiler_oom; =20 @@ -1553,6 +1561,8 @@ cs_slot_process_fault_event_locked(struct panthor_dev= ice *ptdev, if (group) { drm_warn(&ptdev->base, "CS_FAULT: pid=3D%d, comm=3D%s\n", group->task_info.pid, group->task_info.comm); + + group->fault_queues |=3D BIT(cs_id); } =20 drm_warn(&ptdev->base, @@ -3807,9 +3817,6 @@ int panthor_group_get_state(struct panthor_file *pfil= e, struct panthor_scheduler *sched =3D ptdev->scheduler; struct panthor_group *group; =20 - if (get_state->pad) - return -EINVAL; - group =3D group_from_handle(gpool, get_state->group_handle); if (!group) return -EINVAL; @@ -3825,6 +3832,11 @@ int panthor_group_get_state(struct panthor_file *pfi= le, } if (group->innocent) get_state->state |=3D DRM_PANTHOR_GROUP_STATE_INNOCENT; + if (group->fault_queues) { + get_state->state |=3D DRM_PANTHOR_GROUP_STATE_QUEUE_FAULT; + get_state->fault_queues =3D group->fault_queues; + group->fault_queues =3D 0; + } mutex_unlock(&sched->lock); =20 group_put(group); diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h index e238c6264fa1..77262d2b9672 100644 --- a/include/uapi/drm/panthor_drm.h +++ b/include/uapi/drm/panthor_drm.h @@ -965,6 +965,13 @@ enum drm_panthor_group_state_flags { * DRM_PANTHOR_GROUP_STATE_FATAL_FAULT is not. */ DRM_PANTHOR_GROUP_STATE_INNOCENT =3D 1 << 2, + + /** + * @DRM_PANTHOR_GROUP_STATE_QUEUE_FAULT: Group had recoverable faults. + * + * When a group ends up with this flag set, jobs can still be submitted t= o its queues. + */ + DRM_PANTHOR_GROUP_STATE_QUEUE_FAULT =3D 1 << 3, }; =20 /** @@ -986,8 +993,8 @@ struct drm_panthor_group_get_state { /** @fatal_queues: Bitmask of queues that faced fatal faults. */ __u32 fatal_queues; =20 - /** @pad: MBZ */ - __u32 pad; + /** @fatal_queues: Bitmask of queues that faced fatal faults. */ + __u32 fault_queues; }; =20 /** --=20 2.33.0.dirty From nobody Mon Dec 15 23:36:51 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013055.outbound.protection.outlook.com [52.101.72.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 3404E318121 for ; Mon, 15 Dec 2025 11:56:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.55 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799788; cv=fail; b=Lv6L0pMwRT7BvP5EcoNREVJzBDvDpJ4zvcrhmVC2vB4exMId9JG/CFpuSK4BGMihOmSzntsQW0igMxfDZTdPkInGh80JnlI+8orJHQmet4/7lrm8NNn2zwJ20QXTUKQ1ac0DzEPgU0ky/eeFELIkafyy8HvDGLak1mHI8Ez5USY= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799788; c=relaxed/simple; bh=eb+u4GLc7a0p/dOAasotZlLyk2it+gWObMLxWt3TAGY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=i7oOJxdxkwFlJKSNoji1p+wdZP0g18wQm59toP2Cot7cJXRnzCU92btWO5aGAcoJSyZQrzzgICo9g5P6LnD50h4I1gu0NfcNp06soRI7A84TtSEIFfM7qrOGj8BlfFume7EwT4jvxyTpsZHcy5Fkn+ZeJm0ld9TaeRlEm3dN5Mk= 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=gZCyxec9; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=gZCyxec9; arc=fail smtp.client-ip=52.101.72.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="gZCyxec9"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="gZCyxec9" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=rFycZpwDYU6scOoa9jdy7nOQLPsZLSnMRiEfmslDf027wHYvxclmNeSNEyx0OzkgJKzXMy+CCKdbNWtgJDVXoc7NwCX07IJLtWz7pt1hFOfI/lMrcfni8Zw6ubifO3RJTx/VymU1VFHnK2KowpvE23TVvi2yZ4+HpMwmdmNs0gtvNbz4SrN4QgpS7iCw9moU046DaTRkg2u5olSUUEt4uan+5EFPOVlpTN04De1c6bHhtsrIuRHYmjPt4g9fpJG82HZ08amnLSWqw9LQep98W3q0f2va6W1rLrssyMYBnlrDC/O/sPqXa+k4joOVNfEUGeISKD+CcgqZ/ChXe/Nq8Q== 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=fEM1iGO/gxI/xpEwv5ln7wY0dlVv1Wk35zeKZT3reQQ=; b=ota4ExfsYZiczsD7J09yoqz3V+Y4Tr79bEExXbrwzxQWAhB+aSHr6EopPb+UckDhi9TdL1kXNJwuTU/7X0rzeu+qAblqsT/JdGiIfkeI/yZzfq68PLLUJvLC8CHfkTvbeMzsJXKsPs+JZGm4rwV3AY0u06IQVbJ553fmH8BPqaVfqxqjW9rjQG+BIQkhetW2v8+YIzO9sSRdSz1RQGum1ofHw3e1ny3TQSrcZac1DcG68xsejRrZs8nLCOjW/3Bx9YRAOXSFfBYijLHOZLNEDrtJonKJst8+Lx0gspZbB/d/2xxdZgJMyNEqSqMRz4zo4mv4KPyxNuEcinKnmx5Azg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=collabora.com 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=fEM1iGO/gxI/xpEwv5ln7wY0dlVv1Wk35zeKZT3reQQ=; b=gZCyxec9S/9wGoi5x1nVGcb3mvC/UVhY2zZRgQApTBkQr+TueFrq4JGSxis/NQzAeAO6CbPQlNaPNZ9cqs6esyYDE/vGQNheqr/Nk6f3LNamo41JGAjfiRm70Z1y5hkC7dhXSEqJZmoypuHW8dE4JtY69Budyboc3VVLxQ04TmI= Received: from DB3PR08CA0012.eurprd08.prod.outlook.com (2603:10a6:8::25) by GV2PR08MB11468.eurprd08.prod.outlook.com (2603:10a6:150:2b1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:56:16 +0000 Received: from DB1PEPF000509E7.eurprd03.prod.outlook.com (2603:10a6:8:0:cafe::ef) by DB3PR08CA0012.outlook.office365.com (2603:10a6:8::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.13 via Frontend Transport; Mon, 15 Dec 2025 11:56:21 +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 DB1PEPF000509E7.mail.protection.outlook.com (10.167.242.57) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6 via Frontend Transport; Mon, 15 Dec 2025 11:56:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XmsHnNTskyYW71ES4kybGkAPakZCWfAq3QP5TFisUD1ib2UWGEK2sv0fLbltvV6x/CbEPyp6I8eC/3kF1d5bFOi1ZEj3VmO7Wb1b/4ikZBf5KKu0JkxxzOGoirBgO/I4nO5SKCOm7WyfsZJ6+OOyhHmmWrgps8MHtZre4DlYXpm+dNts08wXDdDJ+tjWKyEa1kB7Yqal8MmtkRqOiVz+dHNgYXCOrLfeF624Hh+M773+n87BU5WBtV+Qt3oiwQK1EMvIAoCq79ru8fgAumO8Aku3ZHf1873/T1kEooDXCkTqZxE0J52Qcdz/yX4l7AWZGNee+WKHDbUbQP3I9p02ag== 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=fEM1iGO/gxI/xpEwv5ln7wY0dlVv1Wk35zeKZT3reQQ=; b=GfGlhYumKqYIWM3fp9fiJDB/g6k7kZj9p56TjQg9U8oztb9tSIAIoWTs/GrJTPri6EsOdnCRQmAl1pf58Pc4gs6LZ4OHamfJOOsU8kmkz8fJr4almkEhLSc9lzpWshVMZHXvn9896kDX5afspM5CcK5oWWHCF1iYUGnUXx6k97fHZC3MIHff8U7msQ7K+m5AHPFJYZxQDounT7u60Bu9LGFpOmwDsQPp8/E5oJwQtPyr3AzlZyfXq+tblJ0LNJHeUaxihNHosYOCglNj0aHccwvtfl4TRVwtc5pnaPM0PjZjlfYOs7YbA/GztNziVsLYFoB0H0PNn3LOOPMbs83eyw== 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=fEM1iGO/gxI/xpEwv5ln7wY0dlVv1Wk35zeKZT3reQQ=; b=gZCyxec9S/9wGoi5x1nVGcb3mvC/UVhY2zZRgQApTBkQr+TueFrq4JGSxis/NQzAeAO6CbPQlNaPNZ9cqs6esyYDE/vGQNheqr/Nk6f3LNamo41JGAjfiRm70Z1y5hkC7dhXSEqJZmoypuHW8dE4JtY69Budyboc3VVLxQ04TmI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) by VI1PR08MB5312.eurprd08.prod.outlook.com (2603:10a6:803:139::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:55:10 +0000 Received: from AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb]) by AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb%6]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 11:55:10 +0000 From: Lukas Zapolskas To: Boris Brezillon , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: nd@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Lukas Zapolskas Subject: [PATCH v1 2/5] drm/panthor: Store queue fault and fatal information Date: Mon, 15 Dec 2025 11:54:54 +0000 Message-Id: <20251215115457.2137485-3-lukas.zapolskas@arm.com> X-Mailer: git-send-email 2.33.0.dirty In-Reply-To: <20251215115457.2137485-1-lukas.zapolskas@arm.com> References: <20251215115457.2137485-1-lukas.zapolskas@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0564.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:33b::17) To AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6820:EE_|VI1PR08MB5312:EE_|DB1PEPF000509E7:EE_|GV2PR08MB11468:EE_ X-MS-Office365-Filtering-Correlation-Id: 7fbc6961-82dd-45f9-44a5-08de3bd0f313 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|366016|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?xhZ7zIqNQ68gMJCR4WAHBZh77S3p2a7MgUltR7llFduNox+6T3j2ZlXYXlhs?= =?us-ascii?Q?ePvGA2S2oYv300DYUjd/A7lHU2VqXfA/luCtyiLqWgzNXXpMWGtqu24supUm?= =?us-ascii?Q?imU4irX6Zt5TdLZ+z+l807kgCkuu1GsM3YU2TXsMzln8cDP3DZw90sueapyd?= =?us-ascii?Q?EidEIsh8JXec81b0fKG9torHKJVIhHn3ShRz5pi0wMauUrLplyVU4zctdH/g?= =?us-ascii?Q?e6ajCUriYNKyiuuARhnlEHZEGcPbtCYXPblCV+1XX2l2gdWgPsidl3PazFid?= =?us-ascii?Q?etXE7acElOvWIBm5SjihlJxaWxWTct2O7tBnYLIBbErIIp6uoWlTb05zFEft?= =?us-ascii?Q?SPUT6kf+b9ka2O2z8xOYVkBcSczuLrGBb+7zpV+DmT/lbEM8B3PhWfrU37eh?= =?us-ascii?Q?IxxRwkE5lqe4AYci+b2/rG3IW/8sBw+tEEsAikMEo74vtLkoWu7viUcZR4gN?= =?us-ascii?Q?TU3p3vpl0nRXkkp3vDQWpbczumFRntqG/mgmPDzbW2Jkbgs60uhNWX8+XmiI?= =?us-ascii?Q?0w5kHi9Hl1nM/l96WxCa5az3+NmqhyjWey4am5pe2yccJCTMns34WiGcXAEK?= =?us-ascii?Q?lsu397LvRWUaxRiqptLu8xJif9kteSilEZilqcINqkJzhFwiOwTmTQiCw9ub?= =?us-ascii?Q?kDjnk7JXJc1qrjOF3FMyFzla6f+yVqU0SJHI0spCyyXauNfQURk+oeJ67qOn?= =?us-ascii?Q?Mn+0ViGQRbJM1AjbqnOHLJ+yqfqVZkSTRiqdG9/o3dpbLDc7V9c75WJyT752?= =?us-ascii?Q?xtBzGItl77/qpvW8yD5M1TBdnqTuHzD/NZqbxDkUEp1LHaAQPtssfcj1v2Ts?= =?us-ascii?Q?uE6k4EE/fUH803sRrQVWbpr7UKNdCPjlSxhgWNQ520IEH2fj2OO1zHB5kgzR?= =?us-ascii?Q?A6qgQLIFXSvJny5tw29P4V6Suvg9OJQd1V5BRIguk76fk3mhXoYlvj0NqYNc?= =?us-ascii?Q?osmVp6c0YcuDY7DabwCy4T6HrSL2E0FmZl2nyRHcn2XeIRyuLQuwEsj1CTzF?= =?us-ascii?Q?ppxlOQUofkc8rm/rUchzMU5bQuXMhQX80eJDzjT0R7+5FMLj6kes3y0EWc5C?= =?us-ascii?Q?/nGNIncwbuc0O/nTYjTrtvTNLxGKT2c4S2dsn0MhhL48XbAyhiF+4qEM4+w/?= =?us-ascii?Q?HOBcGBPQ9Fi/DpUpl9u/Z5usWHXODF9JJKUCKCfOK0Nx+3o7KyLPQyQvgM5P?= =?us-ascii?Q?dAsznYJT7KbHdVLF6sWO80NmxDY2F7RdLjHPp4KRyyTx01kZSr4INkJmIykd?= =?us-ascii?Q?/Pc9BDeoQ+XOfdG6kayDjPvrabezaBqN0/029N8qgI7TUU/5iRIMIH+rQShS?= =?us-ascii?Q?lxb0igoz/kuZDQIqlutXY2NOD2fFZvdU8mAjEIJNIlwD2ILYsTEd1ZyUAd0n?= =?us-ascii?Q?qGCu8PlwvVKnVMOF4h7i3u31lwVdVjihzZ77LuhJhKshzUjzil1Dv5rmwFTN?= =?us-ascii?Q?xAeu2fClqSO7zrzqb8YfUXNMXavHHQ+S?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6820.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5312 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E7.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 69fef06e-a159-4c0b-c62f-08de3bd0cc53 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|1800799024|82310400026|376014|36860700013|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?cXcgokVq2rn7YRqJDfpAo8yWd2QabEWF2nxsCd3vqDs8pZQaMRUFjRvJLyUd?= =?us-ascii?Q?gfgoZ7DgQGAJ6vcN2xZvuHhdnVfbN6YifBNOSA2aEFzP4+0n2VoqXMhzXEFf?= =?us-ascii?Q?dlxEZVLMM1lqPSGKLgZNBLKA4f8jv0oqa43jDS2cU3nEs3xFcJjPWEbUjxOT?= =?us-ascii?Q?8ymY+SNr4b0BODFWRr+TA9vNKvsMLBUCSAUrgBCaiETus+vocmduypIL9frl?= =?us-ascii?Q?PmP/g4YKkHVd3sNzQfKBbDzSOBtxrXemKEoTpsGtgZq86b+omkoA8G962gIx?= =?us-ascii?Q?Q7cu6mTfgmGjg5A3uc3x8jqbFPQ8NCR/J3Sq8DM8H3tJqcacBaG0xs+4/wuM?= =?us-ascii?Q?U12PGA6jAM9UwqxubTDI+mmzPRtu26VvzdiJ+SKHWsefe2OsMqj7d44cu16F?= =?us-ascii?Q?VwgDVM6MkWpJ2Yu5MEWTMeWgcBEb5T0REjheDqfKaApXKTbHSCXE5vOYQwpG?= =?us-ascii?Q?tbMr6rco82IVyfTJR09cJsWCDRC1VsTNAO4CR/cq+jpv7xJNm9/enRFuXmpN?= =?us-ascii?Q?rHyyp9zVGBCIMCImzL/1z8FLlyfQP7ahKBp7dzW1pTALvHU8a26nUcYKJ3XN?= =?us-ascii?Q?mtMPxcfEcMfPQFJkjfssBiWU6ddU3X5X3xMLrFaRtUD5GSODqEqqV9gpNjVT?= =?us-ascii?Q?2DDIZkYsHrNnurrZujyXjsPxuEIW8peHHUF1TBBNCuggeg9XCdf/F9Dw7rTv?= =?us-ascii?Q?2E3r3ehrlr417TEV4mhyWrffLxf4XzX/C9f6IiHYk86O/tkfirMg/CjrGMaG?= =?us-ascii?Q?2waYR5iwYXkcyvPot5+HAyKCMjMCJsTYfOap1caAYQ/9VPPGQQ0BlBvq2Ncs?= =?us-ascii?Q?eLCGqF/7VKJjVb/YyVzmN8leZi+maDQ1dRsZ3WltX2amXM9eagfQ7SzkTt6l?= =?us-ascii?Q?hQM8kYmJzpBVQhnxhC8f6arbqra9Ne1NWshFFrcy4k/J/Yg3WM5TaCtET9Vz?= =?us-ascii?Q?zRD87y1B1z/LrUoV8Dg2WV164mXE2XWac6+e6HKa7eHW42igd91oCGS7Ckni?= =?us-ascii?Q?9Ek/pnS+G/Tfx7POf6HI+2efVco1Lp9uCwRK/EUWJp7EmxA4mA1s4BSkPFUo?= =?us-ascii?Q?0BuK/befSzrOd9n9LlNi+Nyhk1ZjzCAEj3VfEdQXJXu9G5tQgZxnfVCnbNq6?= =?us-ascii?Q?+PF/YIKVTPHIxclk8ZQguiu8J62pbAvntscF8+Bf7L0dafeC1gVTRRh93diq?= =?us-ascii?Q?g1q9s/Z6OM8QyzYr91MfCb5QOkVmTwztLoJZub21ICMKfVmxV8QJb4l9Dw+5?= =?us-ascii?Q?hBbDq8fMFiUG4jZ20ezDfmhtgsXpd3OfhmeubEXXK8Q50EZX5LfGtT35KMh7?= =?us-ascii?Q?Iasy7txhShrEjngsSKRyFZ2N1pXyGjcJ0HGDUNGQx/p4EyrOVbESF4UR8Jtd?= =?us-ascii?Q?j38n82pds6mM1pDce/XmnRzqrrdcnX8L0bvHvevChl1cfgW672iL3RnHpcSZ?= =?us-ascii?Q?DDsfNf7iwKL/SykDvAyhncfuj8eMkthaMVuoxw3ghivWQIrVn45ovcvL8s8m?= =?us-ascii?Q?4P7luIgwKfjAmWdUKHUIasQ39SfkwW2nqt/pzVv/MFfePdpYuUtDlPrezYnz?= =?us-ascii?Q?zoznZ/eCq7ee7Qsu//s=3D?= 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)(82310400026)(376014)(36860700013)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 11:56:14.9465 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7fbc6961-82dd-45f9-44a5-08de3bd0f313 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: DB1PEPF000509E7.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11468 Content-Type: text/plain; charset="utf-8" A queue may encounter either one fatal fault or any number of recoverable faults during execution. The CSF FW provides the FAULT/FATAL registers, indicating the fault type, and another set of registers providing more metadata about why the fault was generated. Storing the information allows it to be reported to the user using the GROUP_GET_STATE ioctl. Signed-off-by: Lukas Zapolskas --- drivers/gpu/drm/panthor/panthor_sched.c | 116 +++++++++++++++++------- include/uapi/drm/panthor_drm.h | 17 ++++ 2 files changed, 100 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index eb8841beba39..a77399e95620 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -342,6 +342,14 @@ struct panthor_syncobj_64b { u32 pad; }; =20 +struct panthor_queue_event { + /** @link: Link to a list of Panthor event errors. */ + struct list_head link; + + /** @event: The event containing all of the fault/fatal metadata. */ + struct drm_panthor_queue_event event; +}; + /** * struct panthor_queue - Execution queue */ @@ -485,6 +493,9 @@ struct panthor_queue { /** @seqno: Index of the next available profiling information slot. */ u32 seqno; } profiling; + + /** @events: List of fault or fatal events reported on this queue. */ + struct list_head events; }; =20 /** @@ -918,6 +929,8 @@ panthor_queue_get_syncwait_obj(struct panthor_group *gr= oup, struct panthor_queue =20 static void group_free_queue(struct panthor_group *group, struct panthor_q= ueue *queue) { + struct panthor_queue_event *evt, *tmp; + if (IS_ERR_OR_NULL(queue)) return; =20 @@ -934,6 +947,11 @@ static void group_free_queue(struct panthor_group *gro= up, struct panthor_queue * =20 panthor_queue_put_syncwait_obj(queue); =20 + list_for_each_entry_safe(evt, tmp, &queue->events, link) { + list_del(&evt->link); + kfree(evt); + } + panthor_kernel_bo_destroy(queue->ringbuf); panthor_kernel_bo_destroy(queue->iface.mem); panthor_kernel_bo_destroy(queue->profiling.slots); @@ -1476,6 +1494,69 @@ csg_slot_prog_locked(struct panthor_device *ptdev, u= 32 csg_id, u32 priority) return 0; } =20 +static struct panthor_queue_event * +panthor_queue_create_event(unsigned long event_type, u32 cs_id, u32 except= ion) +{ + struct panthor_queue_event *event; + + event =3D kzalloc(sizeof(*event), GFP_KERNEL); + if (!event) + return ERR_PTR(-ENOMEM); + + event->event =3D (struct drm_panthor_queue_event){ + .queue_id =3D cs_id, + .event_type =3D event_type, + .exception_type =3D CS_EXCEPTION_TYPE(exception), + .exception_data =3D CS_EXCEPTION_DATA(exception), + }; + INIT_LIST_HEAD(&event->link); + + return event; +} + +#define PANTHOR_DEFINE_EVENT_INFO(__type, __msg, __event) \ +static u32 panthor_queue_set_ ## __type ## _info(struct panthor_device *pt= dev, \ + struct panthor_group *group, \ + u32 csg_id, u32 cs_id) \ +{ \ + struct panthor_scheduler *sched =3D ptdev->scheduler; \ + struct panthor_fw_cs_iface *iface =3D panthor_fw_get_cs_iface(ptdev, csg_= id, cs_id); \ + struct panthor_queue *queue =3D group && cs_id < group->queue_count ? \ + group->queues[cs_id] : NULL; \ + struct panthor_queue_event *event; \ + \ + lockdep_assert_held(&sched->lock); \ + \ + if (!iface || !queue) \ + return 0; \ + \ + const u32 exception =3D iface->output->__type; \ + const u64 info =3D iface->output->__type ## _info; \ + \ + event =3D panthor_queue_create_event((__event), cs_id, exception); \ + \ + if (!IS_ERR(event)) \ + list_add_tail(&event->link, &queue->events); \ + else \ + drm_err(&ptdev->base, "Could not store fault notification, err =3D %ld",= \ + PTR_ERR(event)); \ + \ + drm_warn(&ptdev->base, \ + "CSG slot %d CS slot: %d\n" \ + "CS_" __msg ".EXCEPTION_TYPE: 0x%x (%s)\n" \ + "CS_" __msg ".EXCEPTION_DATA: 0x%x\n" \ + "CS_" __msg "_INFO.EXCEPTION_DATA: 0x%llx\n", \ + csg_id, cs_id, \ + (unsigned int)CS_EXCEPTION_TYPE(exception), \ + panthor_exception_name(ptdev, CS_EXCEPTION_TYPE(exception)), \ + (unsigned int)CS_EXCEPTION_DATA(exception), info); \ + \ + return exception; \ +} + +PANTHOR_DEFINE_EVENT_INFO(fatal, "FATAL", DRM_PANTHOR_GROUP_STATE_FATAL_FA= ULT); +PANTHOR_DEFINE_EVENT_INFO(fault, "FAULT", DRM_PANTHOR_GROUP_STATE_QUEUE_FA= ULT); + static void cs_slot_process_fatal_event_locked(struct panthor_device *ptdev, u32 csg_id, u32 cs_id) @@ -1483,15 +1564,11 @@ cs_slot_process_fatal_event_locked(struct panthor_d= evice *ptdev, struct panthor_scheduler *sched =3D ptdev->scheduler; struct panthor_csg_slot *csg_slot =3D &sched->csg_slots[csg_id]; struct panthor_group *group =3D csg_slot->group; - struct panthor_fw_cs_iface *cs_iface; u32 fatal; - u64 info; =20 lockdep_assert_held(&sched->lock); =20 - cs_iface =3D panthor_fw_get_cs_iface(ptdev, csg_id, cs_id); - fatal =3D cs_iface->output->fatal; - info =3D cs_iface->output->fatal_info; + fatal =3D panthor_queue_set_fatal_info(ptdev, group, csg_id, cs_id); =20 if (group) { drm_warn(&ptdev->base, "CS_FATAL: pid=3D%d, comm=3D%s\n", @@ -1509,17 +1586,6 @@ cs_slot_process_fatal_event_locked(struct panthor_de= vice *ptdev, } else { sched_queue_delayed_work(sched, tick, 0); } - - drm_warn(&ptdev->base, - "CSG slot %d CS slot: %d\n" - "CS_FATAL.EXCEPTION_TYPE: 0x%x (%s)\n" - "CS_FATAL.EXCEPTION_DATA: 0x%x\n" - "CS_FATAL_INFO.EXCEPTION_DATA: 0x%llx\n", - csg_id, cs_id, - (unsigned int)CS_EXCEPTION_TYPE(fatal), - panthor_exception_name(ptdev, CS_EXCEPTION_TYPE(fatal)), - (unsigned int)CS_EXCEPTION_DATA(fatal), - info); } =20 static void @@ -1531,15 +1597,10 @@ cs_slot_process_fault_event_locked(struct panthor_d= evice *ptdev, struct panthor_group *group =3D csg_slot->group; struct panthor_queue *queue =3D group && cs_id < group->queue_count ? group->queues[cs_id] : NULL; - struct panthor_fw_cs_iface *cs_iface; - u32 fault; - u64 info; =20 lockdep_assert_held(&sched->lock); =20 - cs_iface =3D panthor_fw_get_cs_iface(ptdev, csg_id, cs_id); - fault =3D cs_iface->output->fault; - info =3D cs_iface->output->fault_info; + panthor_queue_set_fault_info(ptdev, group, csg_id, cs_id); =20 if (queue) { u64 cs_extract =3D queue->iface.output->extract; @@ -1564,17 +1625,6 @@ cs_slot_process_fault_event_locked(struct panthor_de= vice *ptdev, =20 group->fault_queues |=3D BIT(cs_id); } - - drm_warn(&ptdev->base, - "CSG slot %d CS slot: %d\n" - "CS_FAULT.EXCEPTION_TYPE: 0x%x (%s)\n" - "CS_FAULT.EXCEPTION_DATA: 0x%x\n" - "CS_FAULT_INFO.EXCEPTION_DATA: 0x%llx\n", - csg_id, cs_id, - (unsigned int)CS_EXCEPTION_TYPE(fault), - panthor_exception_name(ptdev, CS_EXCEPTION_TYPE(fault)), - (unsigned int)CS_EXCEPTION_DATA(fault), - info); } =20 static int group_process_tiler_oom(struct panthor_group *group, u32 cs_id) diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h index 77262d2b9672..083a02418d28 100644 --- a/include/uapi/drm/panthor_drm.h +++ b/include/uapi/drm/panthor_drm.h @@ -974,6 +974,23 @@ enum drm_panthor_group_state_flags { DRM_PANTHOR_GROUP_STATE_QUEUE_FAULT =3D 1 << 3, }; =20 +/** + * struct drm_panthor_queue_event - Fault or fatal event occurring on a si= ngle queue. + */ +struct drm_panthor_queue_event { + /** @queue_id: The ID of the queue that faulted. */ + __u32 queue_id; + + /** @event_type: What kind of event is being propagated. */ + __u32 event_type; + + /** @exception_type: The type of exception that caused the fault. */ + __u32 exception_type; + + /** @exception_data: Exception-specific data. */ + __u32 exception_data; +}; + /** * struct drm_panthor_group_get_state - Arguments passed to DRM_IOCTL_PANT= HOR_GROUP_GET_STATE * --=20 2.33.0.dirty From nobody Mon Dec 15 23:36:51 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013042.outbound.protection.outlook.com [40.107.159.42]) (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 30C93280023 for ; Mon, 15 Dec 2025 11:56:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.42 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799787; cv=fail; b=t4NbqjDZWdmRfJx/eFe7PAy7DaG8XUex2kHPgV4zbIj8o7oZQRHYpYZzjx20lKhB7WXa4E+5lFOvfV8W0mciaLq0UprVEpfqwrcyGmlWYeAgBaS6HzcXnpgT6igAGgRC7MrsM3UP/kfNXBNZy2MY+27MDzRQt5075ehfMkIXf4g= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799787; c=relaxed/simple; bh=39pPE7q31rLX3GQBVBwjh5IFaUC7dNNlEAyypzQDZ94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=PNoLozMNvlj+FPdOds5paB1hnI4Apfd92/V0YZqCLHTrYegnHns7kVxAa66Z9hO89A3LcX/HWhvUg28eLWduA6kJ7GZcV6gIBRQ5PBz312/UoIVka2bwVU32nnblRRFsDME+t/zhnkzvtb9NOo05S17VK7anq2shTPgutGat8r4= 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=WC4K7kGJ; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=WC4K7kGJ; arc=fail smtp.client-ip=40.107.159.42 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="WC4K7kGJ"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="WC4K7kGJ" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=qH4bm9XiLmdKUxq7RPR77wxVU/pQqHjT+vcOufpNn6DgEJbp/ZNwD19LVMRXjsRi9HRWlO24wbWxfr4OPkC6VKaBS6v4mG7rP9mFOxjw8OVmBKKJqJuNA6GjBw+YUi5rfHdaTZU2/7VmDyzFS0ANWc7uMGzS1ko5IaNXcePJaRCruQEPbeleskW2hp1XLZi4dlNGqL0LArPMg9wsh4rRr03YqPWrzHjlkt+XxS5uKJ636fNpDgQX1jGDge387uP7tWxQtVgWio/y3B87nwPk1SFqx4mZBQUWorWZ8R4S44tGr3Is6EGE2D1gB6JeOVX6jTRVoIeOgelX92vO3H6WjQ== 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=af1xWpuXnn624A9sFc9UvQ397D7r1iZ7jPBbzqntxwI=; b=dRITMR94SaJJrgYTZsDaLRi5WX0H5nn4P4OhaWoSfAkLo+fvEgHbtGYhM72xCiI8dPjKe4bF62UiotJ/DcnGxZmOKxL3XkAmityhWvqOig8lRVCJe7mKrZofKH39mDz8Ef8XWyZASGOn4xoeNx1OTzp36+rjyKXvynqiPlW5A03uZIjPOwykjRuoME8mGv9mwJg2tKko0AegLRIBWxk3SoWi7BRxvC7LFXHZQxB9nR4yEHmlxleIPztDLc4tQiO4nKaKvpusdegyoPY/TUtkp5A4xO0l+wk3w4+sh9APQl8A1fmp1inDaJM562sebPS8eIgw6M8ZAgyiHB8E6lhK+Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=collabora.com 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=af1xWpuXnn624A9sFc9UvQ397D7r1iZ7jPBbzqntxwI=; b=WC4K7kGJujkE6bCmjxCGX/MggINTSSFssFmhewCjO/n7CRPC49G4Zh030mGaF/wAEP/5ppBddIgd5O1ozdfnrK0l629xOThWiIW+nkX6KqjPmWs7NGx2OzWjf2fzHziXlJEBAAuTuOudsWlcTB0fsdrM91FUfJVMDMwR+fmyYiM= Received: from AS9PR06CA0355.eurprd06.prod.outlook.com (2603:10a6:20b:466::22) by AM9PR08MB6691.eurprd08.prod.outlook.com (2603:10a6:20b:303::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:56:15 +0000 Received: from AM3PEPF0000A78F.eurprd04.prod.outlook.com (2603:10a6:20b:466:cafe::29) by AS9PR06CA0355.outlook.office365.com (2603:10a6:20b:466::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.13 via Frontend Transport; Mon, 15 Dec 2025 11:56:07 +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 AM3PEPF0000A78F.mail.protection.outlook.com (10.167.16.118) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6 via Frontend Transport; Mon, 15 Dec 2025 11:56:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ynAUoS3km6HADCtWPAcHtNV/1gRsNaoc+XtguvWz8/UzU90lKyNEJep3U0SK8cH5ajsU25KJfuzZUK4EwqjphpMXzAXTM4IlqvYaUPsoGRGbCjhfMgR5DAINU8JfwTZSmOdOIvLdagnYoiXWMBUucCeETga3g901+F58PzW8MikTRweOYz1JBDtbF2jkFTuSP9ZjR0KaD/Vx/TAT5G1p+ulLEuv30EgAjlWlRSz2BRk5xX2JvTAeTv2ZT3cvNcRFWJvEiPVANASY+jurQPriJOgNvRanWvqM+8kbq32kaR3TGePbnxoXV2PjJvnYapsRtD71V3RX5atZbDmd4RZ6iw== 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=af1xWpuXnn624A9sFc9UvQ397D7r1iZ7jPBbzqntxwI=; b=u673uXWgDxoSAoiSLXcCLJMZ4+O6RhGwlVnZ6P/Vr9ZGwUZBW6ncMlpPwtcFVQL6jnILUJxrEL0g1fq3HjMQqz9fAbE4ibYrbu9+2sFQx3xuL7OnhN49boJ0z9HBnfRwnvGs3rKMh/wyL4EPiEn3JkNpiwMrnlBx55PE7/BW69SVIK41vXtskkgBzn8Y4dP1YT3o4DZ9/8zq3e/1n5f7uPbOhbc10AgCYxGMABxrlxGQDwfiqwxngNjBXj1eup08YtZh8ZWLEwGJG/TmdR1vwoGyF/CetxZ780gG4BnA6eaaHzlYh+2R2AsKFlTg2ORTVIHXrbFEzgCRhMIn7801dw== 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=af1xWpuXnn624A9sFc9UvQ397D7r1iZ7jPBbzqntxwI=; b=WC4K7kGJujkE6bCmjxCGX/MggINTSSFssFmhewCjO/n7CRPC49G4Zh030mGaF/wAEP/5ppBddIgd5O1ozdfnrK0l629xOThWiIW+nkX6KqjPmWs7NGx2OzWjf2fzHziXlJEBAAuTuOudsWlcTB0fsdrM91FUfJVMDMwR+fmyYiM= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) by VI1PR08MB5312.eurprd08.prod.outlook.com (2603:10a6:803:139::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:55:13 +0000 Received: from AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb]) by AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb%6]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 11:55:12 +0000 From: Lukas Zapolskas To: Boris Brezillon , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: nd@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Lukas Zapolskas Subject: [PATCH v1 3/5] drm/panthor: Track VM faults Date: Mon, 15 Dec 2025 11:54:55 +0000 Message-Id: <20251215115457.2137485-4-lukas.zapolskas@arm.com> X-Mailer: git-send-email 2.33.0.dirty In-Reply-To: <20251215115457.2137485-1-lukas.zapolskas@arm.com> References: <20251215115457.2137485-1-lukas.zapolskas@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0696.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:37b::10) To AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6820:EE_|VI1PR08MB5312:EE_|AM3PEPF0000A78F:EE_|AM9PR08MB6691:EE_ X-MS-Office365-Filtering-Correlation-Id: 6985c7d4-10dd-4c71-311e-08de3bd0f370 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|366016|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?M6ZcvkAzT+IkEP24LDrPvpKu0fnGWuZSRsdiE7m7vQf1K85jklxy+ciKQY5R?= =?us-ascii?Q?3kNyKTR3rR+HZ6VLmQY1kVtUrKNPRwoYyDnVTD0jNt/3NPph1E1/b/YGUlLr?= =?us-ascii?Q?ij8ScOlJFuesjD/eWe37IGhP3O/V6vRkoEt+qLKCNC+lgfWXc+fAXX1VvsvA?= =?us-ascii?Q?o3cj5rKeav4yAt1zD6eTToSriP+Gcoe81cHSXWssLUhoC8/SQceKv7Jj9H7C?= =?us-ascii?Q?SFOnHaDB3dkM9tosKFoNvFYOSbCIUEr8ZtUpWvFfM5Yjs7VsuGIgQHnFR9eP?= =?us-ascii?Q?xwNJwRd1S200hG+vrcWfrLOmEFgHpkRePBpyQ3CsGBhcVqWjpdF3EIfTenPW?= =?us-ascii?Q?rMzlAP2LBYJxcVpUxD4SL2z2FmuNQPo2sZgSvPnjcXkySeqEA+bGTzAd5R7B?= =?us-ascii?Q?pbU/D/NUNWSIhG4690ObONAKCUfs37juOMPIe+bGzmh9hfw8DRqgRtMn/O8s?= =?us-ascii?Q?VUxBQHv+XE9WIs0KBTrbBT5e2Z3dfqZOwrAzV1GDhyLP36AY2c8r9aBdoqif?= =?us-ascii?Q?qpCDuf5/MeUUumYvgT8RgYR8XEHyDgopK6ScEcMqim13ukzxPCDzEV+u56al?= =?us-ascii?Q?x9/18kw6EessBeZlaN0zFuvn/AIpnGhvnnESP4yC4tCBAxXX0mXt3hgNrpqu?= =?us-ascii?Q?Io9P+58VGxiBXC6yv6eKI4+0hakmKKt90mmErRhV8FTrRp+r8T8PTxBnTLpz?= =?us-ascii?Q?At30ABWoEOiNj4FPVHN6hBvhympKcSMiNnresN7prIFUTgsWw8hb0ActlAtZ?= =?us-ascii?Q?5ISmjI/7slzhKIHoHPvxcGyU3zyzbf7bAwas6E1dqrEnsSQOYHJPLea/RSyZ?= =?us-ascii?Q?HOiLVQvJCiSooUcHdm7osYebYcHYCDo9NZewMGRJLjQ2r+PMGLlCjh1lqPAg?= =?us-ascii?Q?4yrbSWhOIn5DxmTEQdnXek1u4bwb0oHIkMxdKRPTFiFFTORTNdZ2r5IKkc26?= =?us-ascii?Q?6j0i8q9XLpXItcv5a7/rX/apk9OYgxlZdDx/HLmYLVOsvu1C773iTnoBweXn?= =?us-ascii?Q?SvrLxWENFuUOqU2mOwJsa7PW1fBkXl4nVXLZDNfTdddKztHJXjHpc1sNk8fI?= =?us-ascii?Q?9g7Q2fiuCGX+i1rLpO9Btbu5CdZyZA5kcISeIgOCaGbdH6Wa1FXv+J3VJds8?= =?us-ascii?Q?KTrSa298DyYOnM/o2M+iljA/VzmbLJDuJzOnMZBOM7kvU5Ci89T/Hux/2bKH?= =?us-ascii?Q?o7Y6CHAOKCIIDl1T1SBoMIvZ6Cd5v144MYaHCgXbNzTV3sZc8+xtGecQQrjc?= =?us-ascii?Q?xE+n/yYf+NJebUq7CB4QcEKCoi9TiCw3p5PZHO2g706WIVrBMnpOsQExZdxZ?= =?us-ascii?Q?BpoJrE1zCLUsvT7Ok0rwpUH3ECoifIERto52mm5oMTrxeFHcPB7UpuR5ixbB?= =?us-ascii?Q?NSiD5Tq+1sAt+1FVvCkDqAfuL8kPZkrc6vit2De1WnGtSr+cuRcPyeI95rfM?= =?us-ascii?Q?mXLDfhzkX47H9aTXfkUdl/UiSReMT2Tr?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6820.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5312 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A78F.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: bbf2ec8b-ac9a-4bd2-51e3-08de3bd0cdbe X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|35042699022|36860700013|82310400026|1800799024|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Sbhvj7H0wXZkGoNeNC73LqcQTUtPsAxyYcuQf41NutyXWJYWDy+75ui7FGtS?= =?us-ascii?Q?sX6fyynryoRC5pyyDKCt0wNv9KSmEzTmOA/zTaMCicJtndTTNLSIaE8hV8q8?= =?us-ascii?Q?Eqk2Hwq86F5xsveJUiAOzWqiSsZab7uL5+4D27I2DqACYJbCKuZmAX3ZkN3t?= =?us-ascii?Q?nA1hSc4rGfPyBoP2QD3Jsj/WNfpb16XvoWmMUyYH8l8upYHky9G90V8U/wZn?= =?us-ascii?Q?BwsvdsNTXsRYqMADTTkV26+xB7ohu5VwWBDro2uW1BzvIEafnX+tEw1K8l7f?= =?us-ascii?Q?+F9hfjOLxVDcqB4p1kkgEhLt3U46X6aTr9ny8NTDunNxu4ddtJC7YzfS7JN0?= =?us-ascii?Q?hOWn9A99ulLEswKa7Pn62Y0/bDvRgAeSQrCVw6Mu6Ddcw1rlPpH+/XNby2ss?= =?us-ascii?Q?rTjt9TLIV6Sd4X1YkkBcuplXVbYd//J/f0mzTHEy9THomWeRQEP8qXClBeSf?= =?us-ascii?Q?cE6MoAAqsHx4vpVWEANdlOy72Zg/amZWwnmmJYD4/LhYPys3pL88GksJULKU?= =?us-ascii?Q?2sMJFq1Jl9w4Ub2Uzy9ePqzp+DhbbY5XVSXU1rEklsRfwfRPXFB/1UcTMLus?= =?us-ascii?Q?ZlEJM8IRdWppTgqRPhH4EMnDTgKxn7Ht1fw+MYK7ylVps4FG+1CHM56Ihedp?= =?us-ascii?Q?u5Icv8t/e+y+gt8i1xDEbgubqmi0n3euRGoSRxsMqz6YRaKdR+y+g7lZaeY4?= =?us-ascii?Q?wqZqeznCW1pZxKBjJTr+dUA116QfEu7a4nynWum4zvUxwbvN0n2szUvCDe5O?= =?us-ascii?Q?nj1z+utepkFNU6F+iJNbMfHK7e+h79y8BAxjeJ6J6yfWZ3FmXKXlFeDG+QPo?= =?us-ascii?Q?VftKShXQ8DCB5J5P0H7Zc4/oS7dNRCshB8C5/habT003eGdWAOgfG5YLCfrF?= =?us-ascii?Q?IR4eKO8XAvdRQvmUX7DifCoqzTY3CbY2f1aY+q8TI0uVx9fIkOkQVXQm73Fc?= =?us-ascii?Q?Im99tQMuuUMgcx6L6rsWiZUlhvKTsZYLAI1Zf9HWXReVQAFdyGAJauOT5thd?= =?us-ascii?Q?PbdcupG/AFXOMeo0Jq6l6ULgxyh0KNDYCLfs6pW8siXTJgxakAO1QtCa85tm?= =?us-ascii?Q?ukormuzhCWtSyPx3WVd/SOw+2J6ozqNnd+/NFyj8hg1Iqeik3cFHZgt2nGHM?= =?us-ascii?Q?I6zez9vUWxdmLiBU3soSgE2yWG3C3Bn1XHdiOZfbo58mbt+Ag5wAALZZW2i5?= =?us-ascii?Q?9WrwXojvfeFftcubxS86DObtLt0JTG6BaiGH2/Z6akZxTXk+b1RV8D+6/4zH?= =?us-ascii?Q?MQPE+dX80lIO9qzgPPoVhdsEjqN/0kF/5EttXMLn8OfDP7xdOfeLb7IczI4Y?= =?us-ascii?Q?yuLLerTOjlvErFt/GqWq5mBVb2f6CsEbYfaccRTY4G7dTji+ajD+nSlO9OdS?= =?us-ascii?Q?oc/HorDBQ4/gKrYlrooz5AHnCxDG5AXBx/e2bJEpQkUscdoW84iIvaFXW08G?= =?us-ascii?Q?ITPVmRuxG5dMl6j1QQgJ6qWQS8piA6Hx261epDZO8awzERRgAmaxXg19mxm7?= =?us-ascii?Q?7ZFWUMsUgfPV3KACu9GC4h4wHyW6FNw99Mysg11ECx+5n1KoXsvHHwnCwGpS?= =?us-ascii?Q?2jTEoL6ISvopgvsGPKU=3D?= 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)(35042699022)(36860700013)(82310400026)(1800799024)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 11:56:15.5773 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6985c7d4-10dd-4c71-311e-08de3bd0f370 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: AM3PEPF0000A78F.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6691 Content-Type: text/plain; charset="utf-8" Faults reported via the MMU_CONTROL register block will result in fatal faults for running groups on that AS, which will also be useful to know for the user. Signed-off-by: Lukas Zapolskas --- drivers/gpu/drm/panthor/panthor_mmu.c | 16 ++++++++++++++-- drivers/gpu/drm/panthor/panthor_mmu.h | 20 ++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_regs.h | 3 +++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/pantho= r/panthor_mmu.c index 473a8bebd61e..10a7418eecda 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.c +++ b/drivers/gpu/drm/panthor/panthor_mmu.c @@ -384,6 +384,9 @@ struct panthor_vm { /** @locked_region.size: Size of the locked region. */ u64 size; } locked_region; + + /** @fault: Fault information (if any) for this VM. */ + struct panthor_vm_fault fault; }; =20 /** @@ -741,6 +744,7 @@ int panthor_vm_active(struct panthor_vm *vm) =20 /* If the VM is re-activated, we clear the fault. */ vm->unhandled_fault =3D false; + vm->fault =3D (struct panthor_vm_fault){ 0 }; =20 /* Unhandled pagefault on this AS, clear the fault and re-enable interrup= ts * before enabling the AS. @@ -1744,8 +1748,16 @@ static void panthor_mmu_irq_handler(struct panthor_d= evice *ptdev, u32 status) */ ptdev->mmu->irq.mask =3D new_int_mask; =20 - if (ptdev->mmu->as.slots[as].vm) - ptdev->mmu->as.slots[as].vm->unhandled_fault =3D true; + if (ptdev->mmu->as.slots[as].vm) { + struct panthor_vm *vm =3D ptdev->mmu->as.slots[as].vm; + + vm->unhandled_fault =3D true; + vm->fault.exception_type =3D AS_FAULTSTATUS_EXCEPTION_TYPE(status); + vm->fault.access_type =3D AS_FAULTSTATUS_ACCESS_TYPE(status); + vm->fault.source_id =3D AS_FAULTSTATUS_SOURCE_ID(status); + vm->fault.valid_address =3D true; + vm->fault.address =3D addr; + } =20 /* Disable the MMU to kill jobs on this AS. */ panthor_mmu_as_disable(ptdev, as, false); diff --git a/drivers/gpu/drm/panthor/panthor_mmu.h b/drivers/gpu/drm/pantho= r/panthor_mmu.h index 0e268fdfdb2f..023fdc79c231 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.h +++ b/drivers/gpu/drm/panthor/panthor_mmu.h @@ -16,6 +16,26 @@ struct panthor_vm; struct panthor_vma; struct panthor_mmu; =20 +/** + * struct panthor_vm_fault - Tracking information for VM-level faults. + */ +struct panthor_vm_fault { + /** @address: Virtual address of the faulting access. */ + u64 address; + + /** @exception_type: The type of exception that caused the fault. */ + u32 exception_type; + + /** @access_type: The direction of data transfer that caused the fault. */ + u32 access_type; + + /** @source_id: ID supplying further data about the source of the fault. = */ + u32 source_id; + + /** @valid_address: Whether the virtual address is valid. */ + bool valid_address; +}; + int panthor_mmu_init(struct panthor_device *ptdev); void panthor_mmu_unplug(struct panthor_device *ptdev); void panthor_mmu_pre_reset(struct panthor_device *ptdev); diff --git a/drivers/gpu/drm/panthor/panthor_regs.h b/drivers/gpu/drm/panth= or/panthor_regs.h index 08bf06c452d6..5aa5e37d29c9 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -178,10 +178,13 @@ #define AS_LOCK_REGION_MIN_SIZE (1ULL << 15) #define AS_FAULTSTATUS(as) (MMU_AS(as) + 0x1C) #define AS_FAULTSTATUS_ACCESS_TYPE_MASK (0x3 << 8) +#define AS_FAULTSTATUS_ACCESS_TYPE(x) (((x) >> 8) & GENMASK(2, 0)) #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_FAULTSTATUS_EXCEPTION_TYPE(x) ((x) & GENMASK(7, 0)) +#define AS_FAULTSTATUS_SOURCE_ID(x) (((x) >> 16) & GENMASK(16, 0)) #define AS_FAULTADDRESS(as) (MMU_AS(as) + 0x20) #define AS_STATUS(as) (MMU_AS(as) + 0x28) #define AS_STATUS_AS_ACTIVE BIT(0) --=20 2.33.0.dirty From nobody Mon Dec 15 23:36:51 2025 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012070.outbound.protection.outlook.com [52.101.66.70]) (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 3592A320CAB for ; Mon, 15 Dec 2025 11:56:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.70 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799786; cv=fail; b=cGn2c0DiQilhXMs1J6P/ZOb73uMf60uF4NVvvx+unZnwQ6267ylOa66T/JL94RwNvhIiCio1/apS+NQc8RTqeg09/6TrUZyYPXnMqLt/YbtNhAFCsQ78sY2qBj/KBocAimB9eCiCcQv0ma88nHSc5j4eLGAVKZVvyatMQxwdpok= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799786; c=relaxed/simple; bh=qlp7JwDM3TCFBgVe/n7zL0ua65y4N/fvGb813QoBMa0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=LTIaLQ/hqfaKgjE+YeT6GxL0fuZROPUYktacHDUNuMVBViWhbesJGNFQroe4MLVUC47gZK2wMbu34LTsFBNJ0iv8eAdsASJwreRqPlKenbGNU92E7z2wj3kuOb2CZAxdDKYz7yVV9Ly6jhGdpedjYopIt+PXeJDwz7M9EM73Q4I= 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=Ig0APbgM; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Ig0APbgM; arc=fail smtp.client-ip=52.101.66.70 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="Ig0APbgM"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Ig0APbgM" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Uy65okhjinzxsQ4Emsh0ph9cIPZRuU9b3C15XzjVLq5BhkK6jHpojC0cwmMWhS0r7psW9AkskTYH7vzfhOvAoANrHahJPvN1of8KbJEO5//Mq7hmiBSOoHWtZA1UMpESS+qGldoH19lP05jWLj0WL1/dIebkHaK0mrYSQGTBrGdx+cNA3M7/gO/3UFGuqyfWJzy56kWkoYO3LA5I41bOM/1ygYhOLchvzoGqZBsHF91Vxv/2QG+InAUl1NRm16ua0kaynucfK2djw32ZmivPqvgK8Jp76CMWztqWZfwt8JpsY8iTZShHrZ+BFirW/mmhm490ysHVdOIjdsmE0/1mHQ== 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=08e6JFnrRF/yk4FlfXaCh9OKOAvAzjy5mqEPDcsUi60=; b=qtlaLiXKotduf9on/AFT6L8ZCiFuKoDZ5P3joR0ovyl6l0Wvb509Kxn0xEK25WOP2zRaWzjNa2zSHunbPSg59V3oR9Rf0U6hy2XbvkNjwguSY2J9GF7R+mAtbO3NEpRxACZT4sy4iP8ILjJXXwA9l6LJJ+Y6fxSNtrXLdogfjQkpqA+SVG6Uyc4JM70+McyZzzYUcu6a7iMeOiiAPnXx/1QXkMpC1xMukRCu9xfM4g7x/QZeL0PqkOwGgzScNnBrZ9Enk87ugJSOEC9cH4Px4rA8t1ppS9fdpkwt134K2AXIdvSGGVl02+8dFu8bNciRpq3qPj035DITyNrqHqH4uQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=collabora.com 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=08e6JFnrRF/yk4FlfXaCh9OKOAvAzjy5mqEPDcsUi60=; b=Ig0APbgMDSDmDGXdx/vY/wt7sGWSgTfNuLgCkev5I/5qx6Qzy+mWW0vZzzWk74iXV36meGzMIp0pxGyO+WNRd/aqOvE3Oi5tEnmCInkIFp9v4fh7Lw00klFhl+LVDsM99nVfNEekavqJWltEHF6/KlRCwKjHq5CRvXlW7gy6xpc= Received: from CWLP265CA0436.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d7::6) by VI1PR08MB5358.eurprd08.prod.outlook.com (2603:10a6:803:13c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:56:17 +0000 Received: from AM3PEPF0000A792.eurprd04.prod.outlook.com (2603:10a6:400:1d7:cafe::62) by CWLP265CA0436.outlook.office365.com (2603:10a6:400:1d7::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.13 via Frontend Transport; Mon, 15 Dec 2025 11:55:55 +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 AM3PEPF0000A792.mail.protection.outlook.com (10.167.16.121) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6 via Frontend Transport; Mon, 15 Dec 2025 11:56:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xp/ld/mOgRv3sf5rKd37UyKARj6o1iP2LKTuVlyfbbjzo/+UJG+5O+MNgPNJ9kr5qSnG3/KNH3qTAp/65DMaXvXoGp3V5d1Rby9tV+h7EKY3E9Ej1eFc12/RCm6NKUeM8hHzahg/edeqmb7L+1ug2DYTg3hdMSciyEh5ifTyNlm63vim2/COJFstKC/Nz11giKgRXuQTeGT/CiVIZyJLI3eCXQBY4aNsr5XwIbPzCJUiDAIvNkbEjxfaptoN1Kb1TYgGguAodpL5vC+FMwCLbOcsW2auk/i367ZhA8B48qDPNOcTemLBo4bIjn6TnvX2cUCFjHptp3NKY35h20G/RA== 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=08e6JFnrRF/yk4FlfXaCh9OKOAvAzjy5mqEPDcsUi60=; b=kF/Ii4ucF+3a10xUR6MuS/788iv42NeNlHtcjcK0OXd6Y4PIYbmgl+vuqlEL+x5k1aXX4MNaseuCfNhJUt5egnjStyb3yHhIHAKBujFBxkxIhJ8sSyLTs7/UU9XfdPeORw1DGWEmkNIAtkXSn777icuQyuu+7acES0P+R4xYSKsTTeTCHxdvjBtPo4bnj8BWKGkfqPl2jO0M9Mf7MtNvKBHfud3xC/BL2a518cnlmr6X+IVsPXxYTZG4pLluquxF8F+UNlunrqpXqpHErxldeQEIE8FOeS7+VQLtoMo13wXJjlHlEfKhI1IBiGhWVoZ1djQzgyHYkM4BBbHAEga+zg== 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=08e6JFnrRF/yk4FlfXaCh9OKOAvAzjy5mqEPDcsUi60=; b=Ig0APbgMDSDmDGXdx/vY/wt7sGWSgTfNuLgCkev5I/5qx6Qzy+mWW0vZzzWk74iXV36meGzMIp0pxGyO+WNRd/aqOvE3Oi5tEnmCInkIFp9v4fh7Lw00klFhl+LVDsM99nVfNEekavqJWltEHF6/KlRCwKjHq5CRvXlW7gy6xpc= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) by VI1PR08MB5312.eurprd08.prod.outlook.com (2603:10a6:803:139::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:55:15 +0000 Received: from AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb]) by AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb%6]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 11:55:14 +0000 From: Lukas Zapolskas To: Boris Brezillon , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: nd@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Lukas Zapolskas Subject: [PATCH v1 4/5] drm/panthor: Propagate VM-level faults to groups Date: Mon, 15 Dec 2025 11:54:56 +0000 Message-Id: <20251215115457.2137485-5-lukas.zapolskas@arm.com> X-Mailer: git-send-email 2.33.0.dirty In-Reply-To: <20251215115457.2137485-1-lukas.zapolskas@arm.com> References: <20251215115457.2137485-1-lukas.zapolskas@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0323.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:390::11) To AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6820:EE_|VI1PR08MB5312:EE_|AM3PEPF0000A792:EE_|VI1PR08MB5358:EE_ X-MS-Office365-Filtering-Correlation-Id: 2bc95a08-5374-4c67-243b-08de3bd0f45c 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|366016|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?jJQOOSOhDj4T+olj2s/Pln5nJM9fBjPOi8HiFGqz4hGpZ46AIzkOPlU9l/Vp?= =?us-ascii?Q?H7iMmpeeji2Jt64fhkVHms2c87IxoWVGnD5mBjMuMzc5eHgWOl/hzl+iQI8A?= =?us-ascii?Q?E4V6HsKX7Gyh2ch1DS2m2Dq4/sN9SJXbuBZpASHNUOy/i7fgvxV8ixw/12n0?= =?us-ascii?Q?ylOjZzMM5L91UCYZxtRRWqSpOFmgoSEZfsfX9k1Yw6Ba9zp+GQLqKHqLKNGK?= =?us-ascii?Q?Nx67PBc1CfwjC0Z9ggaBCmVSvPaJ3uGntOTrk/+UPfDQdaBOtUIMBzbcdO1F?= =?us-ascii?Q?OS4YxXj5ykAmSW03xve6LBO5552Gr3ydTarZWUvZkSxnFivinNXpI3eMZLGj?= =?us-ascii?Q?yCrxiW5tAdA1ic/6+oe4adjpiQgpxFP6FKBuDBtmMxhmcSYfzO2ZsDKMJDB2?= =?us-ascii?Q?SMLr64fCm91NcWL++HOyTygY346+31LChIRl1elGfNTd97v7vEJ/Pl80QS62?= =?us-ascii?Q?Opz1eEWyMLJz32GixiyW/q+mvvpA2rlhTFkomOfA9U+h4rtx3E6G/NlKRYS2?= =?us-ascii?Q?mmzTRNrI2nCqQQ5IcVU+mvMNfIWEdUCdGvtH0kjKvOj0kT85Qd6D6vVJ6m3y?= =?us-ascii?Q?CD5IPjRYZW68u5bA3CywTI5vKaxH3++FuKOq7tS+jLX98RsyAsqiz8cwqO15?= =?us-ascii?Q?ttcKWUOdFT3JI2JfRkBEG2l+e7ZH1ZgqvZKUydeLvTuJ9sDIuaQywQlT7/B7?= =?us-ascii?Q?RypWW76px+ULTHDvrv+qn+7kovA/JEqdZkTSvI3quM0i9OfqxxsBQFz1HRx2?= =?us-ascii?Q?gvjYfXfLgHBI8o2m+ta2nFsY5ProASLa5c1LtaDt1c3d5mIuSCrxptTr3IFR?= =?us-ascii?Q?2SG9aBYa8FhppiqOHkASKFFPMZPH6b2Qtau9xYowvo3DBF1GdLcOkx9tqYMF?= =?us-ascii?Q?b2m3EFzYRFRTo//wd8UPS/dfiBMTwdlZ4vP3MJc36DARy0Pjt+S9pGnNehg4?= =?us-ascii?Q?bPCyWMwFLd3+5bb2iQGE2dYlL+fuDK9Gp24QnK/uujbVxlJagdKYuQ5oRX17?= =?us-ascii?Q?DCopmx6c1Aus534VbKnsNlpLI7P/O2KIyFmjPxKqzfCIW5h1I+yUAL4ttwzq?= =?us-ascii?Q?hWluq2bj1Ef3GUg7RgWqTMBxr14PWguH5prMdV5qiNvOkgl4nsixZl9KgSTz?= =?us-ascii?Q?aaNifB1FmrFt65k6OPRnJRr+eX/dHqOamwMHxf+Zsbvd+LheOkeAe+1CXrbd?= =?us-ascii?Q?4uH3SjHXbVVNXJmxZ3ytM6YPsXxYJJlzQQQugTuvja+zp202VFdFYveQdy5f?= =?us-ascii?Q?RS/bj7hKbN0Vbj2wmCE79Ib6cGzDTbQw49RX/NKFFKKpBiIs0Ur2lvPtNtZF?= =?us-ascii?Q?zDloJ4/0Hju982pon7DE825bCWg1MZd61CD1jD7ojURB2nFCyYFzEON1BFiL?= =?us-ascii?Q?7zcAuChcVbDMzjdWNRnQuzcYd/NiFNFU3+4G5T6Q6GNbK+msNc/7/tZS0jvv?= =?us-ascii?Q?nN+YfUdiV7lwJzCQ5EotmBKXlwPON++y?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6820.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5312 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A792.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dd668026-0bb2-447c-48a2-08de3bd0cf26 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|14060799003|376014|1800799024|82310400026|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Hr1lM3cQmvTg/47SuoVMFsnOiY0vuen5IaiIqR149fIzLmvZhQ/wavjZ/Wrw?= =?us-ascii?Q?bzepBriycNvoxQfu6F4xCqi6Y1VcxOExKv1eTwtVxFOebSwCyT41WP8OpI21?= =?us-ascii?Q?jQGLLuY+oBWsHEyBX5FiY6PnbGUmFM4kuiPv5/NxXXW0ln2TYRkCq/JL+wlA?= =?us-ascii?Q?sH8uYLv+XWcBc3gcqcXUwwWhFWAY+W9h6z98OfD+PbSwLwEo9cp1GXk84gGf?= =?us-ascii?Q?VLZCfWttbOhZ1J8jH1rZMuegJ/x5tbZWWmxVXwz1TF8XiEt/vdgOLBWHqxaX?= =?us-ascii?Q?udEA+2m3KOn7+RSaltOJeQyMC8w6Ud4WHytMggZM7h0zPC4EsL64wVfdmzUH?= =?us-ascii?Q?ovZReoazv/JL1vurpiY5QFeAmuO8zJA0subCM7u+lxbbJkrtQc06ckqMrsdt?= =?us-ascii?Q?uPkmmgIgkqvPUXdE7BvLP0qAC7J73o0Rhs01In4fUe3Q8Qevi5IOGGROGQ3U?= =?us-ascii?Q?MM7MWTUqQitbwy047zt9bnnBZSQTMZyUuAfjAYVipHn7juOkwcUvm7pgnWfZ?= =?us-ascii?Q?ZrfKzDdb9vS+lHpkUWncbzeY9f1MDHYBlV64/YuKj1uRvUTEJSJV54e7Nwll?= =?us-ascii?Q?aOQqvlZwGeFA2D1r729BdK/kSLD75bCLVwjV2m/wtXfGpiKlJiyZ2dmgFBIz?= =?us-ascii?Q?Itw/7rNL9+57yZbkdebq6Wtl02QBH2KJuCtyp6PfIcMFhW+QyGzHzjyMXjqD?= =?us-ascii?Q?fMy4S3u6qMzElSqXpwp0J1IZbp4rgVTx2DR/6xLnb+FOqIWzgdSxPVphTOfK?= =?us-ascii?Q?paNpO6JH2+P2bPzZyfmAMclZFfNy6YSeP8tjzKJ/TvuqVfYZWw2iiONYrkmq?= =?us-ascii?Q?JGEwxKDQzEf4sip4c759Wsh1K9h4jc9FC83Lq6kLGk9VDFaNhr+n+W7w3wMo?= =?us-ascii?Q?Xrk6Vge4jV3OqUpT8nLGmV+UQdTh/TGunBPBf3xJ9ELG0WViYdVdC6UTxRHk?= =?us-ascii?Q?LtRiAfSDjpAm0zPTn2ApmMf3meTa4+yk0rGoVgpggBzJU+XvNF9ON5gZJWR6?= =?us-ascii?Q?UbuiBtkjP3Iz+PVCVASKZI1GuK35WkT56kR4SgkTgB5N0W8SlpnvqnbvA8Lw?= =?us-ascii?Q?yD8zlgDB3qrBp81sHlgjdmKmAr4M9i1kLW6rufjsR5iTyd+/y7AG8Q4Ja3f3?= =?us-ascii?Q?5NaHQqyjsBLJrrVW35Zxtwd+XFEXOSUDGSEdxZ4rxi38yiQh6f9pNg0hbUu2?= =?us-ascii?Q?JSJtT0EvNNmZ+GXw4/6cFFQix/KHjoZoWoqGfItrLtUDDn8O60Wz8LkVEXdB?= =?us-ascii?Q?NvUVA/SU2Js55GgicyzO/ncc+cH9VZb2TJJm0AvtvnBfPWJv9hZfYI1wWHyV?= =?us-ascii?Q?RQiB3lWVXxU52nGnC38pV0yJBX3NvXwzYdFDLAfJBs60HncuQanB8dbMLE+E?= =?us-ascii?Q?Ieu88nTplWQ+g4/HWcADFJ//cpksejeAdYSFlC8eX7YwLXQyrT/JJTMp3+/U?= =?us-ascii?Q?BbCRDDh6rWnUGVeOCEkGkwX9cYrjT/2cYdV00pC6gxLycPlSpWG4LIPE/+5s?= =?us-ascii?Q?CsP6UTl0bYGS2++k7SOvaz6cD9lNllqMkOUrG8QYbpIGaIScdPgzI/IuNdPX?= =?us-ascii?Q?mvD9xJ/pe6vn58bxeCo=3D?= 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)(36860700013)(14060799003)(376014)(1800799024)(82310400026)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 11:56:17.1119 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2bc95a08-5374-4c67-243b-08de3bd0f45c 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: AM3PEPF0000A792.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5358 Content-Type: text/plain; charset="utf-8" Receiving an MMU fault currently disables the AS, so each of the groups is marked with the appropriate faults. Since no further submissions can occur on a fatal fault for that group, the fault information does not have to be cleared until the group is terminated. Signed-off-by: Lukas Zapolskas --- drivers/gpu/drm/panthor/panthor_mmu.c | 8 ++++++++ drivers/gpu/drm/panthor/panthor_mmu.h | 2 ++ drivers/gpu/drm/panthor/panthor_sched.c | 13 +++++++++++++ 3 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/pantho= r/panthor_mmu.c index 10a7418eecda..9e78b0509f1a 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.c +++ b/drivers/gpu/drm/panthor/panthor_mmu.c @@ -2895,3 +2895,11 @@ void panthor_mmu_pt_cache_fini(void) { kmem_cache_destroy(pt_cache); } + +struct panthor_vm_fault *panthor_vm_get_fault(struct panthor_vm *vm) +{ + if (!vm) + return NULL; + + return &vm->fault; +} diff --git a/drivers/gpu/drm/panthor/panthor_mmu.h b/drivers/gpu/drm/pantho= r/panthor_mmu.h index 023fdc79c231..d69b4000a39e 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.h +++ b/drivers/gpu/drm/panthor/panthor_mmu.h @@ -123,4 +123,6 @@ void panthor_mmu_pt_cache_fini(void); void panthor_mmu_debugfs_init(struct drm_minor *minor); #endif =20 +struct panthor_vm_fault *panthor_vm_get_fault(struct panthor_vm *vm); + #endif diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index a77399e95620..9ea0d2b27114 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -722,6 +722,11 @@ struct panthor_group { * panthor_group::groups::waiting list. */ struct list_head wait_node; + + /** + * @fatal: VM-level fault that caused a fatal error on the group. + */ + struct panthor_vm_fault fatal; }; =20 struct panthor_job_profiling_data { @@ -1575,6 +1580,14 @@ cs_slot_process_fatal_event_locked(struct panthor_de= vice *ptdev, group->task_info.pid, group->task_info.comm); =20 group->fatal_queues |=3D BIT(cs_id); + + if (panthor_vm_has_unhandled_faults(group->vm)) { + struct panthor_vm_fault *fault; + + fault =3D panthor_vm_get_fault(group->vm); + if (fault) + group->fatal =3D *fault; + } } =20 if (CS_EXCEPTION_TYPE(fatal) =3D=3D DRM_PANTHOR_EXCEPTION_CS_UNRECOVERABL= E) { --=20 2.33.0.dirty From nobody Mon Dec 15 23:36:51 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013006.outbound.protection.outlook.com [40.107.159.6]) (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 79905272E61 for ; Mon, 15 Dec 2025 11:56:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.6 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799791; cv=fail; b=Zx4eOUvdYkOhHIFLE4RH1ObPceyj7CRoIVdelTpV+Ut9bllLTEhpXFyJK36m7CcPOVzDILHvcvCBLKygcZL1Kj9UuYxdgCRNfNxi4492G6BylzLFDT08dLUyoQHuus7V51QHfSMK68RxwA6OKaOLJ4hQi6Fm2Z0dQbVudD0DYVs= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765799791; c=relaxed/simple; bh=c9GTB0AZdnoz37Q3aQnCd42DrfPqMzwL8alXRzzqgf8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=VF21nW8R2jYONrf1+Rsga0mfmqKtQRusJUH/wQHCJGSA6nnGDH2XrI1yvxBTOLjJkbnucae39AuwRj0F8ZoSeNgv47yoi5UQJ8NHn4Ig0iXJp6ZQP/kVJ4DL60TXFMdayM2NgFPNuwwVmhWa+UUqC1jVB4Rb3r0Kwe1f5f69lpg= 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=JeTTds47; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=JeTTds47; arc=fail smtp.client-ip=40.107.159.6 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="JeTTds47"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="JeTTds47" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=n8VwC6IFt13VrrAaijXl9u8aH7WNUyCvrJ4B3BaZ/nnkZtgz7/HMNiT215wkwMP7B2nEdetrMz1coEIJVwKy5B+9oFM9Yo7pPYNObX3mfUCU416GAUghRhmG/ghRF9/N/hffd0BGteGT6rG9xc0YuCP/C0x+mnmFl8uXMYb3XeF7ATfZcXUNu8RN0QrugJM3K3S5cla5rlWMc36uWUVx3+4c3ppjnrMIsI7IYoVANdvqI0GPMohYCJn5sVX4wkYXNuvnoALTazDfFSsl84cZAYedPHOfI+xgMDkiooC4G+xJUZVcPv5skuTGlUm0KZzSR1FXXcyfSyQI65Dm/wgWdA== 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=cpqFq9juyPhK+FbHziWCcl81Bfq5e+5gFwa9KwzzXp4=; b=ab5niTKltdwHg7eHGaaNti0mTJMnjKGcHYhzjVc2bVz3oq+pGiPSPEiXh3sjD54Ac3lQAkNRpGSalUSgrOs1UNkfQT7D8+naTQApQxSpzgWBecYnYDMf5/I5nuaqoo2A1S2i0FBDKjQl14xAVaclhOQeljmHkRzsrWuTZ6lWBuXey+l8w62U722jB9wj+uJxa2YBYmXyrcVMEQTBgFREvWkLvB2CP8D6J4lDvhH/HkKGhaHtW9Z+xEPJVpqbFbDdQj8oVSNgiZB0X5REH9Tvetdp6//oQXffgq1h3ONBT+znOKax98NhVomp8LqR69g/kQ8irZVlUIsOF3cEoo75lg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=collabora.com 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=cpqFq9juyPhK+FbHziWCcl81Bfq5e+5gFwa9KwzzXp4=; b=JeTTds471MQtvQSbnWsLn3z+9J6FBvi61QSp2fLtsQT7xGPWoLvvzYTBdOkM60SsTQIoOnMaAS+VA0n9OOfdX4XY0gsZUFNKGIVs/hCBsYiezHQox7Jrt2GYBCdEJesqgZ+VOm+bk0KiFTCf+1Y51UXOHEkQ10qGYWhSxvXjcCA= Received: from DU2PR04CA0236.eurprd04.prod.outlook.com (2603:10a6:10:2b1::31) by PAWPR08MB11559.eurprd08.prod.outlook.com (2603:10a6:102:50c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:56:20 +0000 Received: from DU2PEPF0001E9C6.eurprd03.prod.outlook.com (2603:10a6:10:2b1:cafe::de) by DU2PR04CA0236.outlook.office365.com (2603:10a6:10:2b1::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.13 via Frontend Transport; Mon, 15 Dec 2025 11:56: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 DU2PEPF0001E9C6.mail.protection.outlook.com (10.167.8.75) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Mon, 15 Dec 2025 11:56:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ffY26trOLTSG94PUko4Eqpf/uk0ZaSa9mc/O5CJkmD2bjPhB62VKK1X/b8u9hdeHq+3uhq0KTmQHIVROJ7VpL50qMvqvRcg56s86suIYCAd7wSj4wY9BIEU7sGWzfQac9EKPTBpu7P87XGxMu09rPC7KfJEukE2yfFK9Hjr40q2CsewociA0uYZfaDCHobgNWxk1zyiqvMy/hJx1L6wQfVol7lSSLrZQrrFflZfvPJ1RCUZSQmO29U8tIOs4Prnugzspm/ydI7Q0g9K+ssi31W6F8iqPU7UTmojF7tgfK3CY9acQXM/91Apk2JW5QDpYPn0eBBQCJsXhn9KuDkLbKg== 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=cpqFq9juyPhK+FbHziWCcl81Bfq5e+5gFwa9KwzzXp4=; b=ISlM/r1bmCiyR+5daaICxwpQWqFJbWccokK7Y3Kfnwgs9bW9h+LKy4/1uZyLsRi97zNCi1PALBONpNBDPBnZ0PQtiQmOaKsqIojnlXQAWsxBsuV//jwLQYRApyK2b/5OGxnVoRKI9HtIyB+62EIsd5BnEfjhOQD21ALqw0BdM6MTgWOIoJN41olxXDKFAB9AuXVL0rfoViUNM7L0g9SozjPwiL5WGyKA8DbnIfGllN2oq7vZu1I9KiSCaT15/vj+DL3I2ckw4Dq5BZjU6xnj2ZQjzWYzTWvDxDCjWAu6nXmyI+aHZ4a4wY5M1cY9ZAcAePLjUlV1Yxu5v+ceulhMqQ== 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=cpqFq9juyPhK+FbHziWCcl81Bfq5e+5gFwa9KwzzXp4=; b=JeTTds471MQtvQSbnWsLn3z+9J6FBvi61QSp2fLtsQT7xGPWoLvvzYTBdOkM60SsTQIoOnMaAS+VA0n9OOfdX4XY0gsZUFNKGIVs/hCBsYiezHQox7Jrt2GYBCdEJesqgZ+VOm+bk0KiFTCf+1Y51UXOHEkQ10qGYWhSxvXjcCA= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) by DB5PR08MB10191.eurprd08.prod.outlook.com (2603:10a6:10:4a6::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 11:55:17 +0000 Received: from AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb]) by AM9PR08MB6820.eurprd08.prod.outlook.com ([fe80::a89a:b887:8053:a1fb%6]) with mapi id 15.20.9412.011; Mon, 15 Dec 2025 11:55:17 +0000 From: Lukas Zapolskas To: Boris Brezillon , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: nd@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Lukas Zapolskas , Ketil Johnsen Subject: [PATCH v1 5/5] drm/panthor: Use GROUP_GET_STATE to provide group and queue errors Date: Mon, 15 Dec 2025 11:54:57 +0000 Message-Id: <20251215115457.2137485-6-lukas.zapolskas@arm.com> X-Mailer: git-send-email 2.33.0.dirty In-Reply-To: <20251215115457.2137485-1-lukas.zapolskas@arm.com> References: <20251215115457.2137485-1-lukas.zapolskas@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0323.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:390::11) To AM9PR08MB6820.eurprd08.prod.outlook.com (2603:10a6:20b:30f::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6820:EE_|DB5PR08MB10191:EE_|DU2PEPF0001E9C6:EE_|PAWPR08MB11559:EE_ X-MS-Office365-Filtering-Correlation-Id: eba852fc-7374-45e7-3c57-08de3bd0f5f9 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|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?2mWugcX06aXS2vlJs2cSaVQMoMIiWjS+Vv6MSS7eCoBFUa57Hl6u+Svaac07?= =?us-ascii?Q?joKCROvN/iVFlN9q5JMHDd+PCgaq4hZOwu4PJmU6q6V1JVzTQylQm0hD5Vo6?= =?us-ascii?Q?Wh/17ZDNfk53fOJ041Vw/jK0Z6mVM9Do1lSGxyrl48d91XPbCbZR88iv7YLr?= =?us-ascii?Q?IWfqZhTnrFxF20gFVdhB/T5+jEEUwtFejwkdQjWlmZXHnyMBZH6hsWKCakCa?= =?us-ascii?Q?y4PdkOtRAO4SlLsct0R7c8mmMRX2xNIDPki7VcE+7HDKxLsIZ0qwPmatkl2T?= =?us-ascii?Q?Lt5lBZndJ+X2610agIpcKdEwi7+OqEEfZ+Oqst1jEPbwFTiHAn+hqdVqtBd8?= =?us-ascii?Q?zpOuQnJur/yzYC1ksQL1bn/FJBKlcaAJpzKbDKIcOYLWjpG8jDQafW9peYHH?= =?us-ascii?Q?03DB+5eQNa2ncLK/cybZQhswMi61g+uoQuX4WKmRYTFuFGaRwzLOWOz5y3OH?= =?us-ascii?Q?ZuI9dSn5m0s+8vEDvZH4dk46N0X+8K9GOGqXS+On+NP1fS+996+Z9gMRZQdq?= =?us-ascii?Q?yx7RqDJyahqngEuNgmS3icc/cQuMoo1db7SH4RPBo6Zk8YlwBfLrS8K6B+su?= =?us-ascii?Q?pKjFKpL1ygWZyOGDSZG/K3pCJ5Z64f3HaNgrF8pGTcPUvy/q6o8w8CZ+6zBr?= =?us-ascii?Q?0XsWGsI9ENhX66zd3Ed73z1o++b2vju2zDTXE7puQNWX2FZ3h3jeyNHjAFz9?= =?us-ascii?Q?TBzxaKX9/PD+RtXD/lt0f5g5PaGm4/YjPsc35buRuYnzOkdlxOxbGP4kM6md?= =?us-ascii?Q?UbrAOQuZbzZizIVH/cebHdk5saa+aG6d1d08gXe+ZO0Te0A36q29r08gXqJs?= =?us-ascii?Q?T4K/sJ5yeFBZFMSY8sVn10TfHybF6TKASk7qYlaqGFvPvvpMs9Ft8ZKSBjCC?= =?us-ascii?Q?430CxZ/X6ZoRjEdet3Uqao6bh/7gLUc0F7n23X4I8n4+u4/+S+3mmTwJFhYK?= =?us-ascii?Q?EFLMKFNL6fMkXQgeswmzb0pKZ8TI2PzJxi4jXJttuI5AzJNx3FVGnEI5EPxe?= =?us-ascii?Q?SEQwOC4ytID85bMJqqKT8CKOtGSfpB/dEbcfK0vaKfnc8+GOZ/Ujpyjo37Tv?= =?us-ascii?Q?4ZLD0msVzW6ksSu8msYYHT4Cg7zbMrc7WW+cb8IKYCu8OZmtA1B6G+IXyPCg?= =?us-ascii?Q?2gytxc0nKquu3yLDqrch5E7bjtydQp6pYoWzO917rQzd3gmrN3dBYsmjaXBz?= =?us-ascii?Q?kT1FB5nUHzgD/BeBL1K4boTM6FmnF3wgvTyQHtLzRgqW3APeskls0pl9r94/?= =?us-ascii?Q?EjThq6fPLCZS/W3FEWP7HspWOz5fOavxkp7MVnF7GYE7DBUMiXAc8LRjAkq1?= =?us-ascii?Q?7cFuCFOaeXmZWENF89hZEdOByC6Iw36qszLj1maUus6sk8PePB42NOYD/vWr?= =?us-ascii?Q?gBAO2ifMgSDX1iftjXkSazbLCbVioUif9c0vMqZ3aDb31lyG/wVqjUesZ9Y0?= =?us-ascii?Q?et71W25jtH5ZfP2qh6mCu0bg4hJuZ7xsDf0FN+d8U5Am+xkG22mjeA=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6820.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10191 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF0001E9C6.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c3a27f43-41ab-41d9-331b-08de3bd0d078 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|376014|36860700013|82310400026|1800799024|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fkaHThQJ43XP/W5BHcs3NWNmaGhGAMdF4Ejj+eWJRGVpX8t3Ad8DV6xC9/bL?= =?us-ascii?Q?HZ5hnYNH6dUr4TkEMMt4Y1zEHKnaPlua/IA8Dpd0eNKZEzoLA5Kpv1S2T+uE?= =?us-ascii?Q?rJEWJiBSp+A9SercR7+q40IN0xxdbEMKI+xu8N/y6HNr6F7zfnvr3JCx58Bk?= =?us-ascii?Q?8RHApi1oSltB3CxnFp9FH9IeYzHQGZe0m6Afl3/ag9SlaJmSWMIz3RDkr/qC?= =?us-ascii?Q?oAMPlQnmaCHdY7UCMLaSwjzx6XveehVwQPG8qWFWprdajcHjk/tTBKy2nx4G?= =?us-ascii?Q?dDRXMX7lH7XrBV6KDYeANzSdg8YX34PoJb+x+mikcQ/yvp84DBKbjFyeX8N8?= =?us-ascii?Q?2Y1BApUaAlMySo/KtzR42j3+RPBDTUbUFa+SY8qtYkcFt+6NowxPRuavFPu0?= =?us-ascii?Q?kV5hMvjaJyjd1nvMYBBQynxXkA3s8Az9/Y2EsWkpO9Q16IXAnOyn6C6CCpof?= =?us-ascii?Q?bQP9HJfqnBOs71u9zVaMeO2msLa8pN2Ugk1WmT4kNZJEwwh2zH1/CsNZbWn6?= =?us-ascii?Q?KOT1aOxXX80bglL1d/LQUDHQKHi7fSjIvIAqJZLHUmwkCuxqmvIvWGR4/8JY?= =?us-ascii?Q?xeHSZ39NTG8ENBhop4Olln4JWLGlbdQzIHUEjqFVobdkFTWJclZ58l67eEUz?= =?us-ascii?Q?ekHWH7FFOyt3pmBRVhm5ot1EYOp8pz1+ckQiGGEqkEXTCX7Ud9PK8iUVupux?= =?us-ascii?Q?O7dmkk44j9opAH+dzRfw30+trMo4RC4Dk60rZE3RvOcjkBhQokE6SbVvE1Un?= =?us-ascii?Q?awWKk0NiEUPOLkMOFhs8GJeqFmQDTBjYP22a3HLjDCES5g+sPBVhu+lDsfHk?= =?us-ascii?Q?bxyx9MoPt93Suj+F4sb8edamUye8l4oIZkVx4sUWYyZfMdzn29HrgqU4Ljt0?= =?us-ascii?Q?cj0bop0ZYvs+e5VIGRXC962PxEg4gCb5tU43WKRg28pqT+s8qf1d/DntiJHR?= =?us-ascii?Q?kKhDBvXgupfShbW3/5tRziMz70yyrzTrldhTC30kwvrHiDIWsGFQBKQKe6Pz?= =?us-ascii?Q?6ThTKjtxrOLuFSExQVOIKQIZrmZrvjZBQmJDhmOZKxOVwxooWwHcCFLk43Xv?= =?us-ascii?Q?r+S3YK0vX0RNTdAjiPcCQXpLalK/KmRKUSXU4hgBgbq59L6vRebnbVtWyIpO?= =?us-ascii?Q?fuS8B9TDfWut4cAGB4kSxiTSo0gjPrqPa2oIO9aDfJUHGXjfd+dDdqOkXuxK?= =?us-ascii?Q?oKYvAj8LqJuo5MBVwrofLxONMURgUtIXwlXEj3s61ZMUHapd64JQJv93czaM?= =?us-ascii?Q?/roQqxtBzQhMbxUf3Pg2Ahsm9UTGQQjQteXflP96zYaCyVvOfcAGZsR1+kD7?= =?us-ascii?Q?FHcAP7LyOv78OhWljhp/g+3mPuJZMTzklaqH8bTva1qpVF5Qpe+8A6/qCzqI?= =?us-ascii?Q?G4Ed+UCvxC2XP/dJl7BwRctXhLcMFQM5unWLACkj6vouwJxLFlrNhqp5D9de?= =?us-ascii?Q?nePYDWsOYgBWsG46USKpVd2Bd2Jdz6C59Pw4plV7BGHRZyjzVQYC+6JzAfei?= =?us-ascii?Q?GENB4ZLK7OJfZKHItCZGtXI5YCv+A9k0/mUx3r5ZY3tDXBJD5Uwgw0fqZInc?= =?us-ascii?Q?0GhPxrWGzDC9IQljboqKaDsYx/fj13oZympkK4II?= 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)(36860700013)(82310400026)(1800799024)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 11:56:19.8102 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eba852fc-7374-45e7-3c57-08de3bd0f5f9 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: DU2PEPF0001E9C6.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB11559 Content-Type: text/plain; charset="utf-8" GROUP_GET_STATE now can be called two times: the first time to enumerate the faults that occurred on the associated queues, and the second time to copy out any fault information. The necessary infrastructure to copy out drm_panthor_obj_array's is pulled in from https://lore.kernel.org/dri-devel/20240828172605.19176-7-mihail.atanassov@a= rm.com/ Signed-off-by: Lukas Zapolskas Co-developed-by: Ketil Johnsen Signed-off-by: Ketil Johnsen --- drivers/gpu/drm/panthor/panthor_drv.c | 85 ++++++++++++++++++++++- drivers/gpu/drm/panthor/panthor_sched.c | 92 +++++++++++++++++++++++-- drivers/gpu/drm/panthor/panthor_sched.h | 4 +- include/uapi/drm/panthor_drm.h | 24 +++++++ 4 files changed, 195 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/pantho= r/panthor_drv.c index 98d4e8d867ed..bdcaf85b98cd 100644 --- a/drivers/gpu/drm/panthor/panthor_drv.c +++ b/drivers/gpu/drm/panthor/panthor_drv.c @@ -75,6 +75,55 @@ panthor_set_uobj(u64 usr_ptr, u32 usr_size, u32 min_size= , u32 kern_size, const v return 0; } =20 +/** + * panthor_set_uobj_array() - Copy a kernel object array into a user objec= t array. + * @out: The object array to copy to. + * @min_stride: Minimum array stride. + * @obj_size: Kernel object size. + * @in: Kernel object array to copy from. + * + * Helper automating kernel -> user object copies. + * + * Don't use this function directly, use PANTHOR_UOBJ_SET_ARRAY() instead. + * + * Return: 0 on success, a negative error code otherwise. + */ +static int +panthor_set_uobj_array(const struct drm_panthor_obj_array *out, u32 min_st= ride, u32 obj_size, + const void *in) +{ + if (out->stride < min_stride) + return -EINVAL; + + if (!out->count) + return 0; + + if (obj_size =3D=3D out->stride) { + if (copy_to_user(u64_to_user_ptr(out->array), in, + (unsigned long)obj_size * out->count)) + return -EFAULT; + } else { + u32 cpy_elem_size =3D min_t(u32, out->stride, obj_size); + void __user *out_ptr =3D u64_to_user_ptr(out->array); + const void *in_ptr =3D in; + + for (u32 i =3D 0; i < out->count; i++) { + if (copy_to_user(out_ptr, in_ptr, cpy_elem_size)) + return -EFAULT; + + if (out->stride > obj_size && + clear_user(out_ptr + cpy_elem_size, out->stride - obj_size)) { + return -EFAULT; + } + + out_ptr +=3D out->stride; + in_ptr +=3D obj_size; + } + } + + return 0; +} + /** * panthor_get_uobj_array() - Copy a user object array into a kernel acces= sible object array. * @in: The object array to copy. @@ -178,7 +227,8 @@ panthor_get_uobj_array(const struct drm_panthor_obj_arr= ay *in, u32 min_stride, PANTHOR_UOBJ_DECL(struct drm_panthor_queue_submit, syncs), \ PANTHOR_UOBJ_DECL(struct drm_panthor_queue_create, ringbuf_size), \ PANTHOR_UOBJ_DECL(struct drm_panthor_vm_bind_op, syncs), \ - PANTHOR_UOBJ_DECL(struct drm_panthor_bo_sync_op, size)) + PANTHOR_UOBJ_DECL(struct drm_panthor_bo_sync_op, size), \ + PANTHOR_UOBJ_DECL(struct drm_panthor_queue_event, exception_data)) =20 /** * PANTHOR_UOBJ_SET() - Copy a kernel object to a user object. @@ -193,6 +243,20 @@ panthor_get_uobj_array(const struct drm_panthor_obj_ar= ray *in, u32 min_stride, PANTHOR_UOBJ_MIN_SIZE(_src_obj), \ sizeof(_src_obj), &(_src_obj)) =20 +/** + * PANTHOR_UOBJ_SET_ARRAY() - Copies from _src_array to @_dest_drm_panthor= _obj_array.array. + * @_dest_drm_panthor_obj_array: The &struct drm_panthor_obj_array contain= ing a __u64 raw + * pointer to the destination C array in user space and the size of each a= rray + * element in user space (the 'stride'). + * @_src_array: The source C array object in kernel space. + * + * Return: Error code. See panthor_set_uobj_array(). + */ +#define PANTHOR_UOBJ_SET_ARRAY(_dest_drm_panthor_obj_array, _src_array) \ + panthor_set_uobj_array(_dest_drm_panthor_obj_array, \ + PANTHOR_UOBJ_MIN_SIZE((_src_array)[0]), \ + sizeof((_src_array)[0]), _src_array) + /** * PANTHOR_UOBJ_GET_ARRAY() - Copy a user object array to a kernel accessi= ble * object array. @@ -1128,9 +1192,23 @@ static int panthor_ioctl_group_get_state(struct drm_= device *ddev, void *data, struct drm_file *file) { struct panthor_file *pfile =3D file->driver_priv; + struct drm_panthor_queue_event *__free(kvfree) events =3D NULL; struct drm_panthor_group_get_state *args =3D data; + int ret; =20 - return panthor_group_get_state(pfile, args); + /* First call enumerates the faults. */ + if (!args->faults.count && !args->faults.array) + return panthor_group_get_state(pfile, args, NULL, 0); + + ret =3D PANTHOR_UOBJ_GET_ARRAY(events, &args->faults); + if (ret) + return ret; + + ret =3D panthor_group_get_state(pfile, args, events, args->faults.count); + if (!ret) + ret =3D PANTHOR_UOBJ_SET_ARRAY(&args->faults, events); + + return ret; } =20 static int panthor_ioctl_tiler_heap_create(struct drm_device *ddev, void *= data, @@ -1678,6 +1756,7 @@ static void panthor_debugfs_init(struct drm_minor *mi= nor) * - adds DRM_IOCTL_PANTHOR_BO_SYNC ioctl * - adds DRM_IOCTL_PANTHOR_BO_QUERY_INFO ioctl * - adds drm_panthor_gpu_info::selected_coherency + * - 1.8 - extends GROUP_GET_STATE to propagate fault and fatal event meta= data */ static const struct drm_driver panthor_drm_driver =3D { .driver_features =3D DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ | @@ -1691,7 +1770,7 @@ static const struct drm_driver panthor_drm_driver =3D= { .name =3D "panthor", .desc =3D "Panthor DRM driver", .major =3D 1, - .minor =3D 7, + .minor =3D 8, =20 .gem_create_object =3D panthor_gem_create_object, .gem_prime_import_sg_table =3D drm_gem_shmem_prime_import_sg_table, diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index 9ea0d2b27114..f58d9a21dec4 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -3872,21 +3872,86 @@ static struct panthor_group *group_from_handle(stru= ct panthor_group_pool *pool, return group; } =20 +static int panthor_group_count_faults(struct panthor_scheduler *sched, str= uct panthor_group *group) +{ + int count =3D 0; + unsigned long queue_events =3D group->fault_queues | group->fatal_queues; + + lockdep_assert(&sched->lock); + + for (size_t i =3D 0; i < group->queue_count; i++) { + struct panthor_queue *queue; + struct panthor_queue_event *evnt; + + if (!test_bit(i, &queue_events)) + continue; + + queue =3D group->queues[i]; + if (!queue) + continue; + + list_for_each_entry(evnt, &queue->events, link) + count++; + } + + return count; +} + +static void panthor_group_get_faults(struct panthor_scheduler *sched, stru= ct panthor_group *group, + struct drm_panthor_queue_event *events, u32 count) +{ + int nr_events =3D 0; + unsigned long queue_events =3D group->fault_queues | group->fatal_queues; + + lockdep_assert(&sched->lock); + + for (u32 i =3D 0; i < group->queue_count; i++) { + struct panthor_queue *queue; + struct panthor_queue_event *evnt, *tmp; + + if (!test_bit(i, &queue_events)) + continue; + + queue =3D group->queues[i]; + + if (!queue) + continue; + + list_for_each_entry_safe(evnt, tmp, &queue->events, link) { + if (nr_events >=3D count) + return; + + events[nr_events++] =3D evnt->event; + list_del(&evnt->link); + kfree(evnt); + } + + /* In case of additional faults being generated between invocations + * of group_get state, there may not be enough space to drain + * events to the user provided buffer. In those cases, the queue + * should remain listed as faulted. + */ + if ((group->fault_queues & BIT(i)) && list_empty(&queue->events)) + group->fault_queues &=3D ~BIT(i); + } +} + int panthor_group_get_state(struct panthor_file *pfile, - struct drm_panthor_group_get_state *get_state) + struct drm_panthor_group_get_state *get_state, + struct drm_panthor_queue_event *events, u32 count) { struct panthor_group_pool *gpool =3D pfile->groups; struct panthor_device *ptdev =3D pfile->ptdev; struct panthor_scheduler *sched =3D ptdev->scheduler; - struct panthor_group *group; + struct panthor_group *group =3D NULL; + u32 fault_count; =20 group =3D group_from_handle(gpool, get_state->group_handle); if (!group) return -EINVAL; =20 - memset(get_state, 0, sizeof(*get_state)); + guard(mutex)(&sched->lock); =20 - mutex_lock(&sched->lock); if (group->timedout) get_state->state |=3D DRM_PANTHOR_GROUP_STATE_TIMEDOUT; if (group->fatal_queues) { @@ -3898,10 +3963,25 @@ int panthor_group_get_state(struct panthor_file *pf= ile, if (group->fault_queues) { get_state->state |=3D DRM_PANTHOR_GROUP_STATE_QUEUE_FAULT; get_state->fault_queues =3D group->fault_queues; - group->fault_queues =3D 0; } - mutex_unlock(&sched->lock); =20 + get_state->exception_type =3D group->fault.exception_type; + get_state->access_type =3D group->fault.access_type; + get_state->source_id =3D group->fault.source_id; + get_state->valid_address =3D group->fault.valid_address; + get_state->address =3D group->fault.address; + + fault_count =3D panthor_group_count_faults(sched, group); + + if (!count && !events) { + get_state->faults.count =3D fault_count; + get_state->faults.stride =3D sizeof(struct drm_panthor_queue_event); + goto exit; + } + + panthor_group_get_faults(sched, group, events, min(get_state->faults.coun= t, count)); + +exit: group_put(group); return 0; } diff --git a/drivers/gpu/drm/panthor/panthor_sched.h b/drivers/gpu/drm/pant= hor/panthor_sched.h index f4a475aa34c0..d75870a6d836 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.h +++ b/drivers/gpu/drm/panthor/panthor_sched.h @@ -14,6 +14,7 @@ struct drm_panthor_group_create; struct drm_panthor_queue_create; struct drm_panthor_group_get_state; struct drm_panthor_queue_submit; +struct drm_panthor_queue_event; struct panthor_device; struct panthor_file; struct panthor_group_pool; @@ -25,7 +26,8 @@ int panthor_group_create(struct panthor_file *pfile, u64 drm_client_id); int panthor_group_destroy(struct panthor_file *pfile, u32 group_handle); int panthor_group_get_state(struct panthor_file *pfile, - struct drm_panthor_group_get_state *get_state); + struct drm_panthor_group_get_state *get_state, + struct drm_panthor_queue_event *events, u32 count); =20 struct drm_sched_job * panthor_job_create(struct panthor_file *pfile, diff --git a/include/uapi/drm/panthor_drm.h b/include/uapi/drm/panthor_drm.h index 083a02418d28..931c8371b1b6 100644 --- a/include/uapi/drm/panthor_drm.h +++ b/include/uapi/drm/panthor_drm.h @@ -1012,6 +1012,30 @@ struct drm_panthor_group_get_state { =20 /** @fatal_queues: Bitmask of queues that faced fatal faults. */ __u32 fault_queues; + + /** @exception_type: The type of exception that caused the fault. */ + __u32 exception_type; + + /** @access_type: The direction of the data transfer that caused the faul= t., if known. */ + __u32 access_type; + + /** @source_id: ID supplying further data about the source of the fault. = */ + __u32 source_id; + + /** + * @valid_address: Whether the address is valid or not. Some faults may n= ot come with + * a valid GPU VA. + */ + __u8 valid_address; + + /** @pad0: MBZ. */ + __u8 pad0[3]; + + /** @address: GPU VA of the faulting access, if present. */ + __u64 address; + + /** @faults: Array of faults passed back to the user. */ + struct drm_panthor_obj_array faults; }; =20 /** --=20 2.33.0.dirty