From nobody Fri Dec 19 07:35:04 2025 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2075.outbound.protection.outlook.com [40.107.21.75]) (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 0F9051A7072 for ; Wed, 28 Aug 2024 17:26:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.21.75 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724866022; cv=fail; b=D4uNObsduATpKf0FvVtDCrRcuG5tLc49iiipKpwxUInUdVvGJ81zxMl0Di/+JNu/lAkPiOKRu9pCHxLa8rMW6DDu+IkqWdN6SJqm+uQfYSpani7UlhYWO7h4tsheFQy6Z0K25dunYtUCcmHzjMO+e93+VJSZTbL5SKgIMZHM0Bg= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724866022; c=relaxed/simple; bh=pGUubN2XdFgqwl9F1bYZKR69MuIRDkBPV3fJCwMSaCI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qgYDFHtWduDlreFpri6b+r8raUKXwsC6usD5ZlphP4gawWXu67QwltQz9g2zlBGnaSexVVfTm3gahivALb8jK9R/dGSxn/CaEHipqlrRA0sYi5h6uUlPljTsrnfrTWxqeO+EI8RJOBXHXyt80uW+EAGPdhT+JHQcJbogHzgvBXU= 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=B1qg64f5; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=B1qg64f5; arc=fail smtp.client-ip=40.107.21.75 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="B1qg64f5"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="B1qg64f5" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=E0CK2e6zffykVPTanZxFD7uJ/I0Lp+6+UY0dqobvZwH1cywT9TeMtVrVnNZShBtnsms+c9eihl7U4/G+yb/cnBdd+StxJwCi7lc1Qhe9mByILBNi3o1OE1cYHX+6IfDflQ+WLk1Jj73Cd0yJhunAUFa0exooRI0VQchnhkIRhyvOtGBJTCIEUQbnM/y6qDFfA9XpbqSiOGayYk4ZCkyWLLeGaiiuH8EDPuI+5Gz3INBbZqEAOA1OE7/Lr8gZ6qm8TUWAvjHM+OYhi4TDFVjZE7aBg3dEjK4ebSRVoYtDK0i7YpJbD2Y/Nvt3rHBycl/5q+zCyKElN5W9tSsOqNTTOw== 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=6orZbKeA+ZAkLam0Ko+xKmcpwenNalfbnojri2vJjus=; b=WQ4YRFtLjajQrxzEkU/xB58o13hXS02mZAfryIiale8Z2A0poij+GD1jWaQqoosVC/LXfRIUwPCgRL0ywzthqZWoVpGWMTUyAw27v/i9fJJM1dNQUdXFJ2CdZov/kSrH8LQas8M4KLEJ8kCldelge9ONZ3NaPjCogszHEf+hNMF4VhrSGVaoSO2M54h09iDl7wSaR25q7mPoxK8B5B4Qcr+XcYf42fr5i2QPsvi+qvvnTgJAiVnLuE0OegG6dvkJ83df3r4Gp28aU5YAW1GBQnpLXvZfrUiqz2B4hbKHOTiAKlzAt78J9hej/a4m4uyMFIgWlRxeKEyGzNW7sgtNKQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6orZbKeA+ZAkLam0Ko+xKmcpwenNalfbnojri2vJjus=; b=B1qg64f5fpQAK7QeE+jc/UMWqxIfnULep8MbWkPM8vW6Xi+jgRkrJ5iwaIU4Dmo9+XnobYV7ajOrLea3rYddmZdSgjknzHLZSpk/Nq1YL5FK95vVM7KsT1FL+I4oo56psDplOE2nEPVcf28plhik5YcLPbIg+6ic9oRcgq8cNp4= Received: from DB7PR05CA0031.eurprd05.prod.outlook.com (2603:10a6:10:36::44) by DBBPR08MB6058.eurprd08.prod.outlook.com (2603:10a6:10:201::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.18; Wed, 28 Aug 2024 17:26:53 +0000 Received: from DB5PEPF00014B9E.eurprd02.prod.outlook.com (2603:10a6:10:36:cafe::6e) by DB7PR05CA0031.outlook.office365.com (2603:10a6:10:36::44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.26 via Frontend Transport; Wed, 28 Aug 2024 17:26:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) 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 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5PEPF00014B9E.mail.protection.outlook.com (10.167.8.171) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13 via Frontend Transport; Wed, 28 Aug 2024 17:26:53 +0000 Received: ("Tessian outbound 8e666bd17457:v403"); Wed, 28 Aug 2024 17:26:53 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2b872d9813555bf6 X-CR-MTA-TID: 64aa7808 Received: from L5ae389042c40.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 03390737-02AB-42FD-89D8-CAF50D87C549.1; Wed, 28 Aug 2024 17:26:41 +0000 Received: from EUR02-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id L5ae389042c40.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 28 Aug 2024 17:26:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qTj/U41KGxl+XBlTQ2ATU6L6xTDGx1sxNjrIbMQPHRQqDwRCWE7oZRjIRU6imvT94OQcMln2M0EqiTt2T+hvTkTNdQ6cr+4PGueTNJPnpbARYFusytGJv39Gi2PE5IK7QIKl4l4eofGEsS5xws6XZRw+Iw9GWjdhXpwHM0Iu+Vd5rSvzBOStGrSY10AtFt+3IOBmfqgpaDFgW7KRkHvMZYmuNwX/yJ/1c5yUFaHqFBYFCdzClSWqGN87/ljLaUs9aO4udJy3saqNSt/iKvEGSl1yThxB7+fhiKnJUwycLTF84oaqJDX03Q2ddOoET4fGElNeJAxy7rN5Tx85JY8Wzg== 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=6orZbKeA+ZAkLam0Ko+xKmcpwenNalfbnojri2vJjus=; b=x+D61ChCtx23rvxtwuzmSC/atblBrPn6lmZKLYUkrov0sYUHXthpltbSVMOoH+x1pNaPeNIfQ9ykbSgrW2X/VQhWEEoRXJ46kyEY5AlGZ/Tv70ijOl/6S+tI4vX59arxOwF8TbQA0vaFav7BrrU7CqD+8DK46pPzagHgQyT+ZS2hV5aOAbzVv/95nDui2OM30RxoIjmqjQNNaE+wfiMxmrikc6xGT8t2YsI0h8UfsyL917Z4PlaJtl9n7si7lYn0dHgb0Iqred2u1lJQribefWkZvvXIkOa04+kmBd5fHZE5uVBnRg/JAImoE6WQgTAfZTpJbt82BcfUWdER1yubRA== 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=6orZbKeA+ZAkLam0Ko+xKmcpwenNalfbnojri2vJjus=; b=B1qg64f5fpQAK7QeE+jc/UMWqxIfnULep8MbWkPM8vW6Xi+jgRkrJ5iwaIU4Dmo9+XnobYV7ajOrLea3rYddmZdSgjknzHLZSpk/Nq1YL5FK95vVM7KsT1FL+I4oo56psDplOE2nEPVcf28plhik5YcLPbIg+6ic9oRcgq8cNp4= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6263.eurprd08.prod.outlook.com (2603:10a6:20b:290::9) by AS8PR08MB6551.eurprd08.prod.outlook.com (2603:10a6:20b:319::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.18; Wed, 28 Aug 2024 17:26:38 +0000 Received: from AS8PR08MB6263.eurprd08.prod.outlook.com ([fe80::12b5:3f0a:2090:fa7c]) by AS8PR08MB6263.eurprd08.prod.outlook.com ([fe80::12b5:3f0a:2090:fa7c%7]) with mapi id 15.20.7918.012; Wed, 28 Aug 2024 17:26:38 +0000 From: Mihail Atanassov To: linux-kernel@vger.kernel.org, Boris Brezillon , Liviu Dudau , Steven Price Cc: dri-devel@lists.freedesktop.org, Daniel Vetter , David Airlie , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Xinhui Pan , Shashank Sharma , Ketil Johnsen , Akash Goel , Mihail Atanassov Subject: [PATCH 5/8] drm/panthor: Factor out syncobj handling Date: Wed, 28 Aug 2024 18:26:01 +0100 Message-ID: <20240828172605.19176-6-mihail.atanassov@arm.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240828172605.19176-1-mihail.atanassov@arm.com> References: <20240828172605.19176-1-mihail.atanassov@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0070.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2af::10) To AS8PR08MB6263.eurprd08.prod.outlook.com (2603:10a6:20b:290::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6263:EE_|AS8PR08MB6551:EE_|DB5PEPF00014B9E:EE_|DBBPR08MB6058:EE_ X-MS-Office365-Filtering-Correlation-Id: bf423370-5e04-4dbe-058e-08dcc7869bf0 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?qfUxHBytr7mLBBJKwDvvr4SWTv/JicsftDfdX3Yy6ZL2ORZtK8VP36AyV0KY?= =?us-ascii?Q?gCyk57/nmRLI2kBlM9DgRpPaBoczOQx1nX33F8Y7Lws+ahFiFLMh4XGsFXDk?= =?us-ascii?Q?0YeBsWRO3kEwq4R/wlTTic2xLAL7hubg+Yv+AjBltfZM+czCndeCx1kBXwCP?= =?us-ascii?Q?BBBvA/yPBhCxz/0feuLsDQEq9a4N+yFdFzhQGi4PFokEsTCu0xUGOQOBg/nM?= =?us-ascii?Q?lWl1pATYS5MFsc9pS3C36CXyMsDiG5wed4RWYmWCe9otdsMfILCITqm59lgm?= =?us-ascii?Q?cQt6yhxyq3vWWziXiBAgRtmfo+g7fX0s5q1nc4t+rmy1gDWKAUH4Rr46Yb6L?= =?us-ascii?Q?8M2DHbTlwx8G1GlDdMfadDkrGR1cg8eeFFWpEx3sWIuRcryENyI5FOh194ad?= =?us-ascii?Q?nBt+FFYIPt9jKffzIpUIhx7eAut5PSV4rFwBvHeysPq9c1sA0Rj0CdNAznve?= =?us-ascii?Q?cB/yYKFyIOUkYxZq6f3V/2OuX/oqvcQlinXTIKkJVxRWn5fNm+hzxiC19QFj?= =?us-ascii?Q?ObOz05UnrErxFMha4atJCUFF+AoB9B23pU4PP7I7QY053pWqQOxnVNFG84uZ?= =?us-ascii?Q?LZgY6RJdUCBoicOxgkEeadfH8l9w0QLmE2yIiVlzDZ1gq0xVxDAI55xS8mf9?= =?us-ascii?Q?+V6Jpl1B/Bxc42XjviXzrLEfWx/j34TE7YFrk/6QVyguB0xjE5dXNeerUXY4?= =?us-ascii?Q?Krg7n780sEFPpgvXln8obsLVyqOV4j/oSNxplIs06FptRkAeUh9IfVDQHnTJ?= =?us-ascii?Q?xd30NyEwJeQ/iYwUh9Ef4pcTqb/PX7KVVe/YScHwRRAawL1i1z/5hsohp+XI?= =?us-ascii?Q?ZODzpxA+qI2zINVmMvZc8SL0urOyYH7TTGXq+N6JVvfL3YQ3Nd1JiQ0XIbO2?= =?us-ascii?Q?IksQv1GCIjSY/ZbIgVJZkWFojzNYCpOaVvmkwjoAWSQrk52XA1O67GydOqyk?= =?us-ascii?Q?m++1pxS1YxmVgrbrGxZazfmausdlffVO/3xYleSdWUXODRz3N8lXnjjqIzmH?= =?us-ascii?Q?BLYAi/0AoKumDZ/zuUQy//mLsERB2SZq9rBuRJX2e0m6+t8CPY4up4FtT32o?= =?us-ascii?Q?k85MzHciYmhYfxEg7J/yuvz2FKKhts8bBVksvoRG+aT0FL0+4OUT/qa9dNHw?= =?us-ascii?Q?w7x8JdKojtzivs0pDd4I7RD4+9U3oBAVLu3xkHGVbFhG8vqkEUVd9c6xHoc/?= =?us-ascii?Q?EhPqsM9lSybo1/KnFHLyhRMAbYmBpcQ6WKfNM3wp+yl+4R6BigGxgdSm9A0I?= =?us-ascii?Q?+B4t7Mz0ca3NA4v5Ie5bNPyDMMywN0Wj2SKtX+wAM2c6nukY8IraqEF0QNX8?= =?us-ascii?Q?XsHSfTwmoPY/MKPntZ8YxFAYU7wn6OtFp1cGocDxBw5y8Q=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6263.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6551 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[2603:10a6:20b:290::9];domain=AS8PR08MB6263.eurprd08.prod.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B9E.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 01395da6-af7b-4ad3-76df-08dcc7869285 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MTabfG2PkZxOArF9AOqksvga8aI3W9RDyw+YTMknAE4htGGiMWSc37Wl19Y3?= =?us-ascii?Q?rJolDf7sHAwME4v0d6SjjDIG0YBjLteWnV7XpUFGQ40Kp75QfTe6O4Hzu6Gr?= =?us-ascii?Q?/9neZNO3la6qwm4f3+ZCCcvxDTVBusMDq4UwubR+K8N3HMWZdpEWbA1/NIwC?= =?us-ascii?Q?wMSsa3hkY3cq+Lu263VAuE33NG0wLnBLtURrebueOMsFePDcxXLOfMhXDGS+?= =?us-ascii?Q?/ykSHboZbZY0B/Ykxfytb7V48IzxEFydKhCT+c7ueelofgVVI19+KiWK5+oI?= =?us-ascii?Q?7rntQqTeyqKzwcZJmrbF46TL3YqLtmcKLo4L83diuDAA9IVVgrwTrXjQmElm?= =?us-ascii?Q?7/7KiINey7uiZ1b+R0dtRpCy+o2/4ZKnhX22NgpoHCJPaBIFBIh9ppSXiBix?= =?us-ascii?Q?hVTOptRzSe98QvHQnygHuuwQKlDC0D6kmw6tds3311eBxn6klcQ8jUSv217O?= =?us-ascii?Q?qqEsucRmGl1k4L2qEUrrQrwgezvXyOJjUceItpDwPDnrUSBJGlVMJevhLE5P?= =?us-ascii?Q?vMaar/U8OhxaS++uzoSdw59CLfVO9uc7E/sHMYqpyrUxYBnDmaV9GRb+ExFF?= =?us-ascii?Q?FBNl7Z2mZmCPAiIBZAh8S73IssD1yFEy2+xdSHMxGRtUtrJfE2e1XYGnb/8f?= =?us-ascii?Q?dlOHVbL0UDoVSXVUD8qqKeIfVjhUBGgYr5dxNodwJJQm9uXVbvCswFIM7Dfr?= =?us-ascii?Q?JDAf0XuXa4hfN0oLG7YINYICWtBGwBqlDYSa7QKplmdBAqOg8WdckxRB0BmD?= =?us-ascii?Q?P/coR8E3PXIvj4Yz/41J4k8Es2Nz1zJrjiNtQxsEyLbQCjhepy42wCatL5S+?= =?us-ascii?Q?Ho/kATyMtfvQQcMQRgpir2pVkvNwnxoCK0vLY2EkWdLyzJ4eOXfZU/eXNiy8?= =?us-ascii?Q?bpbw+wt9MJWrUaCxfDy1zme9q8zI45oTujkvE4pM1AqECRHYKdYtKZnAlYc6?= =?us-ascii?Q?fJO6ZmohIHsQQx0b8sKHzXwSD5Fo5ONWwzTVtmv5k1kPz3vqsNTQEx8KFfD7?= =?us-ascii?Q?0OPiOLUOZK4moRAD6uckSO2VosW5FJXtKu4Tz+9km8BmcHhR/FduWpKqwYgw?= =?us-ascii?Q?9gvl1JGHGRiU0wseZXqTouHVO6/B7rrlui1gI2lQ7aBxqTbM0Ez4708J0QJ0?= =?us-ascii?Q?byI46IIY61aMK7mnPQCIWno28IcJqLiJGUTesqNqRZo2COwqAlc+xPG2t8qB?= =?us-ascii?Q?GVJQ5Mge1duE5TGD6VeAuzuFoWEAcj4/cAbyGw2Z9+VZshyiqXKMv91cDWv8?= =?us-ascii?Q?zbY2vYaFrQcaquJpVen0ugksUX2o25J7if/oy7E8SuNNeuKCfcoYuxECoitQ?= =?us-ascii?Q?nzbZqtHWS03c/pGbOQWXXX1y5qmAdV+2loEqOpCxNhL8wgUpik2iiKnE7HRH?= =?us-ascii?Q?2it6Xdnbijt2n4QGhQpeTw4zjkQn/NssfhzCwhRcV422yuvdbKVwIhxH9InF?= =?us-ascii?Q?o9m1ajKP0QNJtait94FqU5OSwz6wDA2c?= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(82310400026)(376014)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Aug 2024 17:26:53.5042 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf423370-5e04-4dbe-058e-08dcc7869bf0 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B9E.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6058 Content-Type: text/plain; charset="utf-8" From: Ketil Johnsen The code is needed both for the existing kernel submission path and for implementing cross-group sync (XGS) queues which link between drm_syncobj and the HW syncobj primitives. Signed-off-by: Ketil Johnsen Signed-off-by: Mihail Atanassov --- drivers/gpu/drm/panthor/Makefile | 3 +- drivers/gpu/drm/panthor/panthor_sched.c | 154 +++++--------------- drivers/gpu/drm/panthor/panthor_syncobj.c | 167 ++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_syncobj.h | 27 ++++ 4 files changed, 234 insertions(+), 117 deletions(-) create mode 100644 drivers/gpu/drm/panthor/panthor_syncobj.c create mode 100644 drivers/gpu/drm/panthor/panthor_syncobj.h diff --git a/drivers/gpu/drm/panthor/Makefile b/drivers/gpu/drm/panthor/Mak= efile index 15294719b09c..0af27f33bfe2 100644 --- a/drivers/gpu/drm/panthor/Makefile +++ b/drivers/gpu/drm/panthor/Makefile @@ -9,6 +9,7 @@ panthor-y :=3D \ panthor_gpu.o \ panthor_heap.o \ panthor_mmu.o \ - panthor_sched.o + panthor_sched.o \ + panthor_syncobj.o =20 obj-$(CONFIG_DRM_PANTHOR) +=3D panthor.o diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index 3b56526a4b97..f272aeee8a8f 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -31,6 +31,7 @@ #include "panthor_mmu.h" #include "panthor_regs.h" #include "panthor_sched.h" +#include "panthor_syncobj.h" =20 /** * DOC: Scheduler @@ -318,39 +319,6 @@ struct panthor_scheduler { } reset; }; =20 -/** - * struct panthor_syncobj_32b - 32-bit FW synchronization object - */ -struct panthor_syncobj_32b { - /** @seqno: Sequence number. */ - u32 seqno; - - /** - * @status: Status. - * - * Not zero on failure. - */ - u32 status; -}; - -/** - * struct panthor_syncobj_64b - 64-bit FW synchronization object - */ -struct panthor_syncobj_64b { - /** @seqno: Sequence number. */ - u64 seqno; - - /** - * @status: Status. - * - * Not zero on failure. - */ - u32 status; - - /** @pad: MBZ. */ - u32 pad; -}; - /** * struct panthor_queue - Execution queue */ @@ -445,17 +413,8 @@ struct panthor_queue { /** @sync64: True if this is a 64-bit sync object. */ bool sync64; =20 - /** @bo: Buffer object holding the synchronization object. */ - struct drm_gem_object *obj; - - /** @offset: Offset of the synchronization object inside @bo. */ - u64 offset; - - /** - * @kmap: Kernel mapping of the buffer object holding the - * synchronization object. - */ - void *kmap; + /** @syncobj: Wrapper for the syncobj in memory */ + struct panthor_syncobj *syncobj; } syncwait; =20 /** @fence_ctx: Fence context fields. */ @@ -794,53 +753,6 @@ struct panthor_job { struct dma_fence *done_fence; }; =20 -static void -panthor_queue_put_syncwait_obj(struct panthor_queue *queue) -{ - if (queue->syncwait.kmap) { - struct iosys_map map =3D IOSYS_MAP_INIT_VADDR(queue->syncwait.kmap); - - drm_gem_vunmap_unlocked(queue->syncwait.obj, &map); - queue->syncwait.kmap =3D NULL; - } - - drm_gem_object_put(queue->syncwait.obj); - queue->syncwait.obj =3D NULL; -} - -static void * -panthor_queue_get_syncwait_obj(struct panthor_group *group, struct panthor= _queue *queue) -{ - struct panthor_device *ptdev =3D group->ptdev; - struct panthor_gem_object *bo; - struct iosys_map map; - int ret; - - if (queue->syncwait.kmap) - return queue->syncwait.kmap + queue->syncwait.offset; - - bo =3D panthor_vm_get_bo_for_va(group->vm, - queue->syncwait.gpu_va, - &queue->syncwait.offset); - if (drm_WARN_ON(&ptdev->base, IS_ERR_OR_NULL(bo))) - goto err_put_syncwait_obj; - - queue->syncwait.obj =3D &bo->base.base; - ret =3D drm_gem_vmap_unlocked(queue->syncwait.obj, &map); - if (drm_WARN_ON(&ptdev->base, ret)) - goto err_put_syncwait_obj; - - queue->syncwait.kmap =3D map.vaddr; - if (drm_WARN_ON(&ptdev->base, !queue->syncwait.kmap)) - goto err_put_syncwait_obj; - - return queue->syncwait.kmap + queue->syncwait.offset; - -err_put_syncwait_obj: - panthor_queue_put_syncwait_obj(queue); - return NULL; -} - static void group_free_queue(struct panthor_group *group, struct panthor_q= ueue *queue) { if (IS_ERR_OR_NULL(queue)) @@ -852,7 +764,7 @@ static void group_free_queue(struct panthor_group *grou= p, struct panthor_queue * if (queue->scheduler.ops) drm_sched_fini(&queue->scheduler); =20 - panthor_queue_put_syncwait_obj(queue); + panthor_syncobj_release(queue->syncwait.syncobj); =20 if (queue->ringbuf_offset) drm_vma_node_revoke(&queue->ringbuf->obj->vma_node, group->pfile->drm_fi= le); @@ -2065,7 +1977,6 @@ group_term_post_processing(struct panthor_group *grou= p) cookie =3D dma_fence_begin_signalling(); for (i =3D 0; i < group->queue_count; i++) { struct panthor_queue *queue =3D group->queues[i]; - struct panthor_syncobj_64b *syncobj; int err; =20 if (group->fatal_queues & BIT(i)) @@ -2086,12 +1997,13 @@ group_term_post_processing(struct panthor_group *gr= oup) } spin_unlock(&queue->fence_ctx.lock); =20 - if (!group->user_submit) { + if (!group->user_submit) /* Manually update the syncobj seqno to unblock waiters. */ - syncobj =3D group->syncobjs->kmap + (i * sizeof(*syncobj)); - syncobj->status =3D ~0; - syncobj->seqno =3D atomic64_read(&queue->fence_ctx.seqno); - } + panthor_syncobj_ptr64_signal_with_error( + group->syncobjs->kmap + (i * PANTHOR_SYNCOBJ64_SIZE), + atomic64_read(&queue->fence_ctx.seqno), + ~0); + sched_queue_work(group->ptdev->scheduler, sync_upd); } dma_fence_end_signalling(cookie); @@ -2461,28 +2373,32 @@ static void tick_work(struct work_struct *work) static int panthor_queue_eval_syncwait(struct panthor_group *group, u8 que= ue_idx) { struct panthor_queue *queue =3D group->queues[queue_idx]; - union { - struct panthor_syncobj_64b sync64; - struct panthor_syncobj_32b sync32; - } *syncobj; + struct panthor_syncobj *syncobj; bool result; u64 value; =20 - syncobj =3D panthor_queue_get_syncwait_obj(group, queue); - if (!syncobj) - return -EINVAL; + if (!queue->syncwait.syncobj) { + syncobj =3D panthor_syncobj_create(group->ptdev, + group->vm, + queue->syncwait.gpu_va, + queue->syncwait.sync64); + if (IS_ERR_OR_NULL(syncobj)) + return PTR_ERR(syncobj); =20 - value =3D queue->syncwait.sync64 ? - syncobj->sync64.seqno : - syncobj->sync32.seqno; + queue->syncwait.syncobj =3D syncobj; + } + + value =3D panthor_syncobj_get_value(queue->syncwait.syncobj); =20 if (queue->syncwait.gt) result =3D value > queue->syncwait.ref; else result =3D value <=3D queue->syncwait.ref; =20 - if (result) - panthor_queue_put_syncwait_obj(queue); + if (result) { + panthor_syncobj_release(queue->syncwait.syncobj); + queue->syncwait.syncobj =3D NULL; + } =20 return result; } @@ -2887,16 +2803,22 @@ static void group_sync_upd_work(struct work_struct = *work) cookie =3D dma_fence_begin_signalling(); for (queue_idx =3D 0; queue_idx < group->queue_count; queue_idx++) { struct panthor_queue *queue =3D group->queues[queue_idx]; - struct panthor_syncobj_64b *syncobj; + void *syncobj; =20 if (!queue) continue; =20 - syncobj =3D group->syncobjs->kmap + (queue_idx * sizeof(*syncobj)); + syncobj =3D group->syncobjs->kmap + (queue_idx * PANTHOR_SYNCOBJ64_SIZE); =20 spin_lock(&queue->fence_ctx.lock); list_for_each_entry_safe(job, job_tmp, &queue->fence_ctx.in_flight_jobs,= node) { - if (syncobj->seqno < job->done_fence->seqno) + u64 value; + + if (!job->call_info.size) + continue; + + value =3D panthor_syncobj_ptr64_get_value(syncobj); + if (value < job->done_fence->seqno) break; =20 list_move_tail(&job->node, &done_jobs); @@ -2928,7 +2850,7 @@ queue_run_job(struct drm_sched_job *sched_job) ptdev->csif_info.unpreserved_cs_reg_count; u64 val_reg =3D addr_reg + 2; u64 sync_addr =3D panthor_kernel_bo_gpuva(group->syncobjs) + - job->queue_idx * sizeof(struct panthor_syncobj_64b); + job->queue_idx * PANTHOR_SYNCOBJ64_SIZE; u32 waitall_mask =3D GENMASK(sched->sb_slot_count - 1, 0); struct dma_fence *done_fence; int ret; @@ -3289,7 +3211,7 @@ int panthor_group_create(struct panthor_file *pfile, if (!group->user_submit) { group->syncobjs =3D panthor_kernel_bo_create(ptdev, group->vm, group_args->queues.count * - sizeof(struct panthor_syncobj_64b), + PANTHOR_SYNCOBJ64_SIZE, DRM_PANTHOR_BO_NO_MMAP, DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC | DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED, @@ -3304,7 +3226,7 @@ int panthor_group_create(struct panthor_file *pfile, goto err_put_group; =20 memset(group->syncobjs->kmap, 0, - group_args->queues.count * sizeof(struct panthor_syncobj_64b)); + group_args->queues.count * PANTHOR_SYNCOBJ64_SIZE); } =20 for (i =3D 0; i < group_args->queues.count; i++) { diff --git a/drivers/gpu/drm/panthor/panthor_syncobj.c b/drivers/gpu/drm/pa= nthor/panthor_syncobj.c new file mode 100644 index 000000000000..337f75bfa648 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_syncobj.c @@ -0,0 +1,167 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2024 ARM Limited. All rights reserved. */ + +#include + +#include "panthor_device.h" +#include "panthor_gem.h" +#include "panthor_mmu.h" +#include "panthor_syncobj.h" + +/** + * struct panthor_syncobj_32b - 32-bit FW synchronization object + */ +struct panthor_syncobj_32b { + /** @value: Value field. */ + u32 value; + + /** + * @error: Error status. + * + * Not zero on failure. + */ + u32 error; +}; + +/** + * struct panthor_syncobj_64b - 64-bit FW synchronization object + */ +struct panthor_syncobj_64b { + /** @value: Value field. */ + u64 value; + + /** + * @error: Error status. + * + * Not zero on failure. + */ + u32 error; + + /** @pad: MBZ. */ + u32 pad; +}; + +struct panthor_syncobj { + /** @bo: Buffer object holding the synchronization object. */ + struct drm_gem_object *bo; + + /** @offset: Offset of the synchronization object inside @bo. */ + u64 offset; + + /** + * @kmap: Kernel mapping of the buffer object holding the + * synchronization object. + */ + void *kmap; + + /** @ptr: CPU ptr to synchronization object */ + union { + struct panthor_syncobj_64b sync64; + struct panthor_syncobj_32b sync32; + } *ptr; + + /** @sync64: true for 64-bit synchronization object, otherwise 32-bit */ + bool sync64; +}; + + + +struct panthor_syncobj *panthor_syncobj_create(struct panthor_device *ptde= v, + struct panthor_vm *vm, u64 gpu_va, + bool sync64) +{ + struct panthor_gem_object *bo; + struct iosys_map map; + struct panthor_syncobj *syncobj; + int err; + + syncobj =3D kzalloc(sizeof(*syncobj), GFP_KERNEL); + if (!syncobj) { + err =3D -ENOMEM; + goto err; + } + + bo =3D panthor_vm_get_bo_for_va(vm, gpu_va, &syncobj->offset); + if (drm_WARN_ON(&ptdev->base, IS_ERR_OR_NULL(bo))) { + err =3D -EINVAL; + goto err_free_syncobj; + } + + syncobj->bo =3D &bo->base.base; + + err =3D drm_gem_vmap_unlocked(syncobj->bo, &map); + if (drm_WARN_ON(&ptdev->base, err)) + goto err_put_gem_object; + + syncobj->kmap =3D map.vaddr; + syncobj->ptr =3D syncobj->kmap + syncobj->offset; + syncobj->sync64 =3D sync64; + + return syncobj; + +err_put_gem_object: + drm_gem_object_put(syncobj->bo); +err_free_syncobj: + kfree(syncobj); +err: + return ERR_PTR(err); +} + +void panthor_syncobj_release(struct panthor_syncobj *syncobj) +{ + if (syncobj) { + struct iosys_map map =3D IOSYS_MAP_INIT_VADDR(syncobj->kmap); + + drm_gem_vunmap_unlocked(syncobj->bo, &map); + drm_gem_object_put(syncobj->bo); + kfree(syncobj); + } +} + +u64 panthor_syncobj_get_value(struct panthor_syncobj *syncobj) +{ + return syncobj->sync64 ? + syncobj->ptr->sync64.value : + syncobj->ptr->sync32.value; +} + +u32 panthor_syncobj_get_error(struct panthor_syncobj *syncobj) +{ + return syncobj->sync64 ? + syncobj->ptr->sync64.error : + syncobj->ptr->sync32.error; +} + +void panthor_syncobj_signal(struct panthor_syncobj *syncobj, u64 value) +{ + if (syncobj->sync64) + syncobj->ptr->sync64.value =3D value; + else + syncobj->ptr->sync32.value =3D (u32)value; +} + +void panthor_syncobj_signal_with_error(struct panthor_syncobj *syncobj, u6= 4 value, u32 error) +{ + if (syncobj->sync64) { + syncobj->ptr->sync64.value =3D value; + syncobj->ptr->sync64.error =3D error; + } else { + syncobj->ptr->sync32.value =3D (u32)value; + syncobj->ptr->sync32.error =3D error; + } +} + +u64 panthor_syncobj_ptr64_get_value(void *syncobj_ptr) +{ + struct panthor_syncobj_64b *syncobj =3D syncobj_ptr; + + return syncobj->value; +} + +void panthor_syncobj_ptr64_signal_with_error(void *syncobj_ptr, u64 value,= u32 error) +{ + struct panthor_syncobj_64b *syncobj =3D syncobj_ptr; + + syncobj->value =3D value; + syncobj->error =3D error; +} diff --git a/drivers/gpu/drm/panthor/panthor_syncobj.h b/drivers/gpu/drm/pa= nthor/panthor_syncobj.h new file mode 100644 index 000000000000..018cfc87cdaa --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_syncobj.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2024 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_SYNCOBJ_H__ +#define __PANTHOR_SYNCOBJ_H__ + +#define PANTHOR_SYNCOBJ32_SIZE 8 +#define PANTHOR_SYNCOBJ64_SIZE 16 + +struct panthor_syncobj; +struct panthor_vm; + +struct panthor_syncobj *panthor_syncobj_create(struct panthor_device *ptde= v, + struct panthor_vm *vm, u64 gpu_va, + bool sync64); +void panthor_syncobj_release(struct panthor_syncobj *syncobj); + +u64 panthor_syncobj_get_value(struct panthor_syncobj *syncobj); +u32 panthor_syncobj_get_error(struct panthor_syncobj *syncobj); + +void panthor_syncobj_signal(struct panthor_syncobj *syncobj, u64 value); +void panthor_syncobj_signal_with_error(struct panthor_syncobj *syncobj, u6= 4 value, u32 error); + +u64 panthor_syncobj_ptr64_get_value(void *syncobj_ptr); +void panthor_syncobj_ptr64_signal_with_error(void *syncobj_ptr, u64 value,= u32 error); + +#endif --=20 2.45.0