From nobody Fri Sep 25 23:53:11 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011063.outbound.protection.outlook.com [40.93.194.63]) (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 81BFF43E06A; Mon, 7 Sep 2026 08:29:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769763; cv=fail; b=D30Zizk2UjciewjeukpLTPGt9vPFFt02e0LzwQTExOq3O0YzyAW9dGupVpgjr6Dd07ExYPPo+Ck41/Hk62USwYbVQoaM1nbnYJ+N+00XIAnfzJjNnv6Os+r2YK5uyfq+ZpvnnxDDJiQjTS0BHeY8QIOjkh8KNT/SEu5B2KY1bRU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769763; c=relaxed/simple; bh=WmjM2ny8eyxfTKCApTNykvy+ZGH1GOgkaiNsbdlkUAg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=faynDme4f6ZqHL5VupZ0edbLa0488FzpAz1M9JfOw0SJURvpObddXeiZ3OBtaKn5ABletLYS8iOes1IuTFM/D/qCH7xFbZcE1k6x2ICl42Sa+OiqGar8CGoVjoKQrQSa1XQ1uTF1RrreekOY8Ee16tqNTpqakJ5m67/NliI1V54= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=CrDWbbFE; arc=fail smtp.client-ip=40.93.194.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="CrDWbbFE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z1guEYRQWoe9bT9zbAEHMHBdA9y13CDdeDM27416zgWTxtRYqM0r8KJEfztLgGB1Ev7vHZRTPhbCqCUA8P0iNiJREDB5/27nHaleebqvopiyhreynzJU4uyYTuZ9PLzTIbjyDMSuxI0zlm+d7Eo4waVVi0GYhjemivQRVz7gvR1LEF+mFf9mWAqsh6K4V4/eHdVK6+y/RQeNZ2ysvcPVaxUQRKj3gVri/sYeZgruDnRsRK2CyXU3qwykjksTtMj7cZuyZhn9jtsT83TVVnvNfs/kvsRWrnZ5bBsyHOqtiQt4yUzhYHoA6YBmJAP9IqXJYctEU9OlkL2gmAqkDiNDTQ== 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=tgq2Ymqk8DSj2LrnvhQEzZVIqVNbu6pnaQRuj8JdnFw=; b=vIlSH12eXszvhd8ehomgnHGxgJiI9Ma1T2m1LNoljwFVzOaJMOJI2XLh4Vz2/oZnFFnR4Nampu3eJOGqoHQnbfgCarBEc077xVwqQrz1NqXwUd9FkjuvCsJwjwBYevouR/bi97gBfy/Nh+q19bm52l/zPG3vfMBoalkqS2ke6EaUk5LmCByIuLrNcpnQJPHIVaGshKi2eZu+61p64reQu0vC7AlSxL4jCu3gCcyNSblKc2j0mFyA7wf5F1eUkRo4jXtGehqnI/CoUDExlvch1XkiLJQYYPTzjLSqXsp4AuJC8zT5D+0eFdma6dEF2/LXtU3scstpIlU7m1r+zUNEdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tgq2Ymqk8DSj2LrnvhQEzZVIqVNbu6pnaQRuj8JdnFw=; b=CrDWbbFE0DAjrVMAqZ781JgTlfr72PRmcU2G9lP4zRNkf8hsYiyuTDBhacyQrfQ8khK/o+sx41uXUIre9Ox/j+WZU3Hm5uqtn+r6j2Cnqq7I3cZ77QsN2Ce5P6KCX5pHRFijoc5Zb+eio13+777CwMmv8KDCZo/QWrCFZMXnTXbBbkDnuBQnAjqDhUq/AYaPgkIgdEOqcATpx4cDbIRN6F4ocY2pkCLys6o7K/bi/0Rjjt/hU0D7uiZpn7E6r26q1LIozb92JrNKCQgCGfOE9kQO56h5L8e8epf5qFAmhkA30hvHiRnMrpNnLBOKkbhvZ1C+oSzo7EtNS2IUkZV9qQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by CO1PR03MB5777.namprd03.prod.outlook.com (2603:10b6:303:9c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 08:29:19 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.21.0382.014; Mon, 7 Sep 2026 08:29:19 +0000 From: Adrian Ng Ho Yin To: dinguyen@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Adrian Ng Ho Yin Subject: [PATCH v3 1/4] arm64: dts: socfpga: agilex5: add FPGA manager and region nodes Date: Mon, 7 Sep 2026 16:20:24 +0800 Message-ID: <20260907082203.2639395-1-adrian.ho.yin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0011.namprd07.prod.outlook.com (2603:10b6:a03:505::20) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|CO1PR03MB5777:EE_ X-MS-Office365-Filtering-Correlation-Id: 1be61c9f-8a28-4238-cf5f-08df0cba1c3a X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003|55112099003; X-Microsoft-Antispam-Message-Info: x6gX2/pmR/MsPxpU8mSbpwNWl72mRcv7+SHIqCN0upgXhcymgkUUP2V7tsNG5klMytY86n0EvXaVz3qJldX4QwXwm8qCtry3T20ThurOk5S2h6CgZSjdJJ9/7l9/av8hwA4LUdnCYS4Boa/642CJdt+HyP1aNVYc+GoF5rVDPeCodukCbmWFANghh4xRkMXzfF5PPkrwam8vjBLH3+7MUlUAMhp4aG/0tfgUc6ntPYQQXj7PLxdJvn/Rt1rLS7SAhdKzXmHbVDrZ2/7HsaLnKlbYzLmaAKP20BxchCJH2MXhCB5R0fqL3vxZy0e/fsZmFVF/Dtx6+U4KYbTNPYj1HCz/r4BtQhVP5QUMvbXJGK/TfTDbbu5LmS1Hk1exUH/xrLLgBZyIWHTfzF6lls9ERuiw/lQRUZFu7u3kZyp1GUlDtT+MM4Fbn80iearIG1INAOwFnnvn/tDTRKP1V0FcjzZaJE9iK36PXqdgrsnBbD0BBCG3H32m/1KkeHukWIPYc6ie8lZ2r3K6v3nQRv31uI0MEJic+GI5STXkppbS0dja1vFiNmqE2eQ9R+k9izqV5TTmco6dbuvTWDxu7CiNvBfrBpNmDHr+Bcdef0B5WpAxGFb9EFgTqpFUmKCT4bJANuqo3CgsZNoWD8ag0GXqoDE6BnoHkWAEXB6ai6+N8YI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003)(55112099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0LcsaMYvVY3p31oDQ7Rab9tsbNzRKTQS9rLIxu+8xeQ4gorDsSyA4htxxXmV?= =?us-ascii?Q?VpZr2dYlN11PZf2ZifCK9SlqbSSh+DSHXL4g+LAr3dAiRS2k7TAnD1qK1RpG?= =?us-ascii?Q?VCRBAqjOFSURqdkXbSEnoChJyIj9eQwbZY5WdwPuSAmfAhka6WKb4Vkyeb1e?= =?us-ascii?Q?0vlIuOnALvu6xPIJ75HaLv4GD9xoyUbyWO/8LK8j4nWVmIJWczQLjjrUZ6Zx?= =?us-ascii?Q?jftcgy2GkzkdioExZFjlqgw2I8YzsoaKciP+rwn218jB+P9Xz3zYFBhIi9zT?= =?us-ascii?Q?a3aKl69U0AKpJTkJ2X/jJ9M6hbQhqfVs9l15GBCDakBegZTCuKBCuyXbHzFk?= =?us-ascii?Q?h4S48ixmAv2bopa4FurVEF1rl69YMj4xvIR4iKMPlcyc8RMWrgFilgtn2frC?= =?us-ascii?Q?9j/BBi93XrMViADEEs7X8tAiRX13iTsGebAEW6QZMeC5i+s9vCCvHX0WNzMg?= =?us-ascii?Q?TpdPG80TF3PIqKu35LuLXeUYOgoDMuJ83by/D9YwH3NNLmS6IS1+4E0PG3rO?= =?us-ascii?Q?y7wqfNhXrMz0qmI1wE2gzU4wEtcHvuVOC4+POAhsjn3K21jQgbQx8w+vpfF6?= =?us-ascii?Q?YKPrwX0CmdURWkO3Kz0v+Z037c3DZajp0t2OEqHo1fGpg0+NPFZkIa0x5G4R?= =?us-ascii?Q?GEJXfke0bU4Zn9cGxBvuRyi8NMhixWOulGaJua/thGobRWBHHMQWK2O2/CXx?= =?us-ascii?Q?3By/UoANN7E4V1/xTwbMUGV4dihg0FxKP80IGSHyWkcaBTI+8aG2be1Ax6NJ?= =?us-ascii?Q?dQS0PPl7kmQBHxv1XdEqQoXJNdQiy9TBQYwMfCCnRbL0Y/GyMDAyJdMl0LPv?= =?us-ascii?Q?2sWF+kyIeEk5LfxPUVIRT63GrDpiqYPEptFuoeJX9Aq4SnsuhJ/X0/86W+xk?= =?us-ascii?Q?/5jUUjcsvnnGE0snOJxs6I9WXmWTbkNg+XCB5Y8212ZM60XouhvZKONdo8j8?= =?us-ascii?Q?3rm/ECfAKKuHDvKQT/35uSVRi6/s60Bp2psUKNFbijF+3GHeD//D8k9ex3Ku?= =?us-ascii?Q?rGk8+KuelR5RIRF4ntYBb+/lEF7JdM3QwczRg2qvFa3FTKrZ3XmDzmipVD3w?= =?us-ascii?Q?3+vW/rl6Z5MZ6R/FATvo6UKytjJdBdBUov6ZKdzSrleKxqSaKJTjShY3MIpJ?= =?us-ascii?Q?xFHXGU3RxrZult/asK2DYeF51bbacXSl/qnFc7Z9BAcI4gBdQ3wzTYF0qnTe?= =?us-ascii?Q?p6frEWZntGixclmke/9NOOWlgsxDayp5mW1HOvLVvBlAiHduQfTnYDfJA8qm?= =?us-ascii?Q?nycSiFidFrDAONcC4Agvcyc/VdtZtTYc/1mVk1qrWBVz3iX2YNXulahWv2nQ?= =?us-ascii?Q?40TY04gjMi/osQEAFHps8D/JYP39TeYU6PoVkoFqdylrHt9RhuKsSLimE0aA?= =?us-ascii?Q?RO/KeyaSzE9Osc9mSB6yUdTKLA4YalgJECv4n7aEHrbiqidajQ+UFPG/ORee?= =?us-ascii?Q?20ZQK1Cpwk+eC0vwuwY1UXi2a4rXSnmj8PEEcZ3akCnARaO4BtYO4p2LfH3P?= =?us-ascii?Q?FQ6MxsHtjdvSaqrGJg7YYwjZDna4vw5DUo+hjp0WyRoiZ3QXnOLU9dq6q7VG?= =?us-ascii?Q?0X1gdOvWha/cA1ypZuSU+TLduw/b+JNkXMVj8Rqzk+o3tGNsIJUW3FSRyLWQ?= =?us-ascii?Q?BUA4uu7Pd0PkQDHx8aqOqNNYX0Pzns5/buuioFG1aQRJBIja2Ck30xoidd71?= =?us-ascii?Q?FmXTboqeAsC/absEJXT4KXbFVA4fZnbTy61w1lJJT7ZsGSriUVzIT8ycDEVO?= =?us-ascii?Q?Er6ojkSC95Oj2687AgWrZ8UMYDV3UBQ=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1be61c9f-8a28-4238-cf5f-08df0cba1c3a X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 08:29:18.9973 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZePp9N70di1QZmmPl/CNVqNnoQ8neSQHg2kWk949E10L9q6e4QgaxInzBrCyhj/eAafCh7qBtlXGzePW3Vnax/E3q+MUf+rKCO7tOHTIhwE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5777 Content-Type: text/plain; charset="utf-8" Add the fpga-mgr child node under the svc firmware node and a fpga-region node to enable FPGA configuration and partial reconfiguration on Agilex5. The SMMU is already enabled upstream; it remains a hard requirement for the svc driver to allocate DMA buffers within the SDM-accessible address range. Signed-off-by: Adrian Ng Ho Yin --- arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi b/arch/arm64/bo= ot/dts/intel/socfpga_agilex5.dtsi index f54767d1526e..2e9844ce1ed4 100644 --- a/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi +++ b/arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi @@ -85,9 +85,20 @@ svc { method =3D "smc"; memory-region =3D <&service_reserved>; iommus =3D <&smmu 10>; + + fpga_mgr: fpga-mgr { + compatible =3D "intel,agilex-soc-fpga-mgr"; + }; }; }; =20 + fpga-region { + compatible =3D "fpga-region"; + #address-cells =3D <0x2>; + #size-cells =3D <0x2>; + fpga-mgr =3D <&fpga_mgr>; + }; + psci { compatible =3D "arm,psci-0.2"; method =3D "smc"; --=20 2.49.GIT From nobody Fri Sep 25 23:53:11 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011063.outbound.protection.outlook.com [40.93.194.63]) (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 ACD4F43F4B4; Mon, 7 Sep 2026 08:29:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769767; cv=fail; b=V8GarX1ZV11Y4OE6Sfavw1itn5VNIYrt9GYt2Cb/JgUM0uyNwbTElS2wUl42l3TLkThsnXnGk9JiAf3JXdLMthzMgVstJmULb86bZ3adMhLVst9EWyvN9Kgb0uCsZLGxZ6qsgQttN7k2eyC8EgtXlu8XDjUH0g2msubcNMiVLZo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769767; c=relaxed/simple; bh=XRVXUxyAnMc0hhWUhZNT78+5r/f3ay05rAaKiajLGCU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DdxBaAil8wFZuRWPIK7OK74nEKl1g/8yRsCfxFhluOTpjbNzBvqaZIWz34yGJJBZnOqQOK8fKTPwSMox2JHpGy/jH0m43HRAwXZR8gHFsGWRCvK4xFnaLVKjzkpLNY5Ee2h3aB/Zxz8BhWF3taYjZbpv5GHMgMlZwkA3RzIHQwY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=m41P/T9P; arc=fail smtp.client-ip=40.93.194.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="m41P/T9P" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oTZdRKGOZZ2iHYLCzwu5h88l/lVz95Esx9Sg6g18a6AEq2P+MOA0cdimgzOzzPN1EFhvsUuUKbip5XqjwbyarrEj6a+1TQ9L+nEcJDHwgv8cbFqDv1kIPQ+F+Wdq15FILh48+pYsZCqvdFKoULlislz64uC4xyr4ShlHrahxA6EIpwSc/Dao8JA9mm1dL+qGMDo2gYaB84FungIugXVtc1LsUpqJt4HWLWssTH3ZancvdN2X5sq2z4oOiIyaDazUKGg1RpDcwAoewkKre6ypJGI5QnE0bhiT0mDO7YXmwW431VbuVFpQop2mGbOeOzF4ZlKee7YXJFRne7xYir2jIQ== 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=MNreuDKCs2tMIEHis2Ja2R3m87BYrE2POINsZEvpEkE=; b=vDS2hW8D9EoS5/w1KPYAPpGO7xlw6a4IJm48as2+f/bm5YYP1Up7OII8O+TMMWEM1oDCUbdc/grLdjpezmy/tBAjd+yqo3FBN+v7LdqLQE5h0hcdvp2XAt+6QbM89Or4xqwk6P3NrgS+hKUoHJMn2zNU05UES1Xrg/ooGzgzZHBryLRkTtfpcCYDV3BixV/JVWOUC8NPytVy3L+Y7flIsOcih9PsWSjeAPqOfnaoNI/oLU8GOUFFNHzWmKrF4/L6DGuBDM43/zo6FezW80qKRObdTLkZuNNeSPN+sxwfGOyeBK2N8kmjSwU5z5rQYM/u0xixCheYyqwvqhzphIJUeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MNreuDKCs2tMIEHis2Ja2R3m87BYrE2POINsZEvpEkE=; b=m41P/T9PSoGL6G7hIDcxlHFBAv5aODB15C49FxEcRECdNqLD2h1ZvKeF7araNtJyJu8gK3BM2WfW5oAuXm73DCGasnQYvtVeg/8SMJV6uazyBtu1hjvXzN6OMZbU7bj5BYlmJisKcnn1WylNVCZ6mlOWwUld8ESTBJDvfr1JQm5doid7yu1Ku+OyThm70NJV1ph9utZmvlRKOcmaZOuC2WiHj4F7fWgtj+gvlyg+tXuhrsdtlfdeWlL9vsWP4HoCzFCsaSsflnPLVlfmz6Gg+wgsAjn9lyZjhCPDFjkZ8Vk/LOqsVUbEXS2TOM95sMnVIRitr6Jx1NQ6SN9kekrMDg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by CO1PR03MB5777.namprd03.prod.outlook.com (2603:10b6:303:9c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 08:29:21 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.21.0382.014; Mon, 7 Sep 2026 08:29:21 +0000 From: Adrian Ng Ho Yin To: dinguyen@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Adrian Ng Ho Yin Subject: [PATCH v3 2/4] firmware: stratix10-svc: warn on unmatched free in stratix10_svc_free_memory Date: Mon, 7 Sep 2026 16:20:25 +0800 Message-ID: <20260907082203.2639395-2-adrian.ho.yin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0011.namprd07.prod.outlook.com (2603:10b6:a03:505::20) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|CO1PR03MB5777:EE_ X-MS-Office365-Filtering-Correlation-Id: 15cdb9ca-2f56-49db-8200-08df0cba1dc6 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|10067099003|56012099006|11063799006|18002099003|22082099003|55112099003; X-Microsoft-Antispam-Message-Info: 2A++Y5GECqBx6kopa2BPKKBw8L/kCSsK51TecI/9YMYmh7M2mDd4FX8YrODrQoyM05ZXuLAFJr4HVA1d1m7XI2pBQrUu6XzQII3/GKlBu5+B6KVGGSXkLjSK1sNyz+whMplZXdnCAyAWjoHpm/ECvFk2GjI7AAxKqfW03Y10c/yj9n8x3ib5eoXt+XoawuBNsKmWoNa+EjQ1hb9Jh+zBcVFzFcXm9wULqQc9haYgcjDgevMl8qh/JqiMo++5bxyIrZUBsQO17QruOmVuF61YhjXccz/60MJIvyW6JtH/uHVo0eXahWt1CIEkbqX5WjdONL7QpD30J5f71ObaQKGcaYTps5mKclssiTtRfxhn2fr7JVyKmQRJe8MHwL60UeySrhEccA5sj3OZd7dsMYDd79VlrKCzs+snxtRUuagcQBgqYPxlp3tE7K7m2BI7AcLNoHLyi9LGwOLyVs1WShbMi7cOr9jcTgEOUUz9Ua9u3dZi73k1WekfarAnD4VcujyEKmyIwKtcVAGBRn4re4coDMWMVtjqI3EOwFXTJc+8kUAcIEVgO3jsI4Xhj3fcg56nFI9h5C9QdoP6TLKNAm66uTjv317tJDMwopxDSlD5TWBScdRDZEC0MV/Wq7BO4roxktHUx2tGIOEX2pRqD/y/ZIfCAscVmarUPVLrNU+dcWM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003)(55112099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NS9IFHJZL9A1WKmEzBZpwr033jnPY+WVZmibq/mzscqqQPY8clfWyheNOlov?= =?us-ascii?Q?6vRD5qZLTYeFiCyZfKIsjAqHNTd3j7S6UVRqewyiM87FPBR++OvN0Gy1P+ZP?= =?us-ascii?Q?3Gs0B/BJUu2t8D69szBtmvJfT1OkWjz3OUZlpchK9wNEHUoIYdKDO7ul+xoh?= =?us-ascii?Q?OeOGithgx809WN1l0bjHGYITUfsq+r63c2mwhKXItPC7q/TOPX/jDhaUCsC7?= =?us-ascii?Q?F5DrD+tsScj2sqWqA0s36/xpXmG04OYrHYA1POeTC3ibQQj0aOXFBNwePgma?= =?us-ascii?Q?4bOh51ouwoEGmSl1ccLLRsviR5Po+OHmc0Zhmf+iKl3nTuSgP1jvu8PTIbP1?= =?us-ascii?Q?HOP2GlnnmKZB7mKddfPhSd9i3HdJb4HHqC3Qb6R8ZqN1C2toZZl+CZ2O14q0?= =?us-ascii?Q?WbiqCruThATrr2tkSr/BPcXwzwKrVdpq/PQnk5ojupvtB0CqsatONBMRiy9M?= =?us-ascii?Q?Ro57GuGA+PIM4A5+nBJa+Hy5r6AdLmJbXiy244NCmYgnexBLwCq/ckZtqy7v?= =?us-ascii?Q?82/DvyBtdiOEtWSsqkf4iRuTC/UZGQfaTptehvXM/jil4/0CEhVvPv9JFiQ2?= =?us-ascii?Q?6U7BWxi1/d5OJ5wZkxlgWM14XmBPg9MIDFojG8TshU6TqhzId/Tlb2AtFPbs?= =?us-ascii?Q?sj7/JtHvpeWUKlLTS/5WWP9w9V+V63Wd6MyRv3UwbzLdXXF/mPBeQDbVv7+S?= =?us-ascii?Q?d35bFSG0MDXCj7hdq51avWvlgnRGqNvz2jbh6BJVDWAVYPYDbGEXlUj2MM99?= =?us-ascii?Q?9OFMT/AglnkAxx9dCCGzzhYp40OGTv0QwPFfBB83cebw4XgcNZsZVInsK6JA?= =?us-ascii?Q?qOfWfQbjrp8+iJY+gElgfpCFb5/UVpFY8/+pOMV1cvxfaPOb4lzZug2CBdGs?= =?us-ascii?Q?RwmhwUH7tNuVcyFS1z63DT55sk0SkksouV07sOsAr4cgTPIw0aZQgZ+QUUMt?= =?us-ascii?Q?W5KhdG3qucS1U78uBWK8ToaX2gmTEZvLq0cz0FN4zKyEJH8i2lhKq1ZHlJNG?= =?us-ascii?Q?5l5F0yqxWb/xQLjcWnJUcfCoCk1GxpzlSblFakWygV/I/95hPpwcdI86sOaU?= =?us-ascii?Q?ZrWy3DvYSHaiXraYdpjxQ4511MT23c8L7qJG78lXxD17RDkY32xUFdYqh/Od?= =?us-ascii?Q?gTbgMy9sOk9QXQwuO9uyqMtbh3rpY6DUXVeJ6XOst8U6RBg2EhXs86jJSdhM?= =?us-ascii?Q?AfPpC9xn0uISuYAc7bWLZUCEcLP7Ai3+IylBh7OuPAmihsVGCLBBAmntvyTi?= =?us-ascii?Q?oF/3rzwIdYNw2Q+JbSLDCoZ0/uj0QKjS2Dy0gLss4mxyFR9GCILlg/6+F0w6?= =?us-ascii?Q?jtm98TxkliNQXJ1txRkI8zEfaJJprGuB6yyVIb8dFof4qotDG5CHJEgHq0Lp?= =?us-ascii?Q?NLViE7a2FuYIx9RqNAx2syvfbN+NUg7BcWKS5iDp147XLhR6C4j+6IhUlGX3?= =?us-ascii?Q?/990ouQ8lfhahWXirUa6F2pnUyr9XA5VzWqvLrid5pay51bRCOw5yTi8WezA?= =?us-ascii?Q?xJbPeatbDr4scfXg6mYtq0XB9TYTaZgzDBCzvywCQ+0cPjAM9ZBy31sJZ1xo?= =?us-ascii?Q?T2II3R7Mdy2YVZPjcIHDbLTJ/T5QdlEU13vcx7nfIvYCJ3WVyhluAlpQIBCP?= =?us-ascii?Q?iulw1GDWE+bwIYpUeuH4yyPAhcDuSJxltzeEcg/69dU/z4gpWcFpatxf1xMJ?= =?us-ascii?Q?s++EseL3BUy0n9ufn6LBZ6VtjoTWXI4ibizxOjNliJUiIL1N4IJkyVA7utIf?= =?us-ascii?Q?TQju2/3TAGX3g6/TvQmbF9TX/fnXt1c=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15cdb9ca-2f56-49db-8200-08df0cba1dc6 X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 08:29:21.6520 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PESzpG49r0ers0jw/10SBvUuTOLOrCW7baSOKqgKyTBHtslzSaQgJZ4ohGHt/+vk+dVVcRnd5UoQoqfCnVTPM4GOG2CGEFFdxt1T7gA0GUc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5777 Content-Type: text/plain; charset="utf-8" After commit 9119ceb76e98 ("firmware: stratix10-svc: fix memory leaks and list corruption bugs") removed the erroneous list_del(&svc_data_mem) that corrupted the list head on failed lookups, an unmatched free still silently returned. Report the spurious address with dev_warn(). While here, refactor the loop to use an inverted condition with continue to reduce nesting. Add braces in svc_pa_to_va() for consistency, and fix a stale "physical address" comment to "address" since paddr is not strictly a physical address. Signed-off-by: Adrian Ng Ho Yin --- drivers/firmware/stratix10-svc.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-= svc.c index 34c591d7fd58..643cc008808e 100644 --- a/drivers/firmware/stratix10-svc.c +++ b/drivers/firmware/stratix10-svc.c @@ -338,11 +338,12 @@ static void *svc_pa_to_va(unsigned long addr) =20 pr_debug("claim back P-addr=3D0x%016x\n", (unsigned int)addr); guard(mutex)(&svc_mem_lock); - list_for_each_entry(pmem, &svc_data_mem, node) + list_for_each_entry(pmem, &svc_data_mem, node) { if (pmem->paddr =3D=3D addr) return pmem->vaddr; + } =20 - /* physical address is not found */ + /* address is not found */ return NULL; } =20 @@ -1997,19 +1998,23 @@ EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory); */ void stratix10_svc_free_memory(struct stratix10_svc_chan *chan, void *kadd= r) { + struct stratix10_svc_controller *ctrl =3D chan->ctrl; struct stratix10_svc_data_mem *pmem; =20 guard(mutex)(&svc_mem_lock); =20 - list_for_each_entry(pmem, &svc_data_mem, node) - if (pmem->vaddr =3D=3D kaddr) { - gen_pool_free(chan->ctrl->genpool, - (unsigned long)kaddr, pmem->size); - pmem->vaddr =3D NULL; - list_del(&pmem->node); - kfree(pmem); - return; - } + list_for_each_entry(pmem, &svc_data_mem, node) { + if (pmem->vaddr !=3D kaddr) + continue; + + gen_pool_free(ctrl->genpool, (unsigned long)kaddr, pmem->size); + pmem->vaddr =3D NULL; + list_del(&pmem->node); + kfree(pmem); + return; + } + + dev_warn(ctrl->dev, "free of unknown buffer %p\n", kaddr); } EXPORT_SYMBOL_GPL(stratix10_svc_free_memory); =20 --=20 2.49.GIT From nobody Fri Sep 25 23:53:11 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011063.outbound.protection.outlook.com [40.93.194.63]) (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 05C64242910; Mon, 7 Sep 2026 08:29:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769771; cv=fail; b=di5I9ZXTi/J9rBcDA+DxXdQs3R3eptUuRPD+ngVrZU1iEwtUt+dNx5Y0I2CsBPRsR75VFZi9e9nTYvIGV7sC7dE37wuYKmn4/6jRJ3sj5XkSofva2SL7CPmA/CnSwAwjb+RB4+z57cfe7VblPuC/5hZb017t7QnEm9V1cpp5bnU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769771; c=relaxed/simple; bh=Ftroh2uRPyb47ixP93gSLtsWYTFcvjOjeyd6I/chrPE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Dc5I/SxL63+HvICnpa1RGIGRFBccJVMjRWcaHqDvZ8nTwjBI5LBlcpGTvwfFDCuLDZdUHbwfdGy81F7UZ898+u3XcANc9jpiB4qLfRmixTZUDs8pD3PCOu6jaoCAqVPBZRInXw+aULCarbZmSyhDbP0ZYy9qMY/QV+vsVcdivpY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=wDhtJRzI; arc=fail smtp.client-ip=40.93.194.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="wDhtJRzI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WHYvjPFPqqorzzjSQ54mfq/ucSZs1MNgkzkyJ76s46vTFV97fR0fvQ3nKh+q6wu60XWHDe8cSfN5Z76lNONzufNVdrb4cCmc2z8WZCuhIBBcWRE8czHL/24xZCaEgJfjZVfpAdefoiWOPlG26/mjHdfdRW5YEG1EvDNo14lujg73Vs7bYX2SXjXKuDJ2XWs7E6lAUWhoqF7+jGXvOH/SATIjfIX9fpdZmjXeY8Bbiv3K1p4M+GT6FjIGLnXVL5wHOClMZs2jyh+jNsiS6S8ALU+4WccICbUuHyJcXFDE4kNplKKDDRfiUJthNsturO02oa3a/4M+CVW5zB3kjIsjoQ== 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=8JkhMotFQUkfLdCyzcrerndmBQ3oLNnXIsxclNSMtTc=; b=ANUfSzvYOLhfdjKXy+67hW+oW+mOi4u31Qm1G6D/FLPRhIGYcqu9H3DcYTLw1OOsQ2SywRv9UpYdF1N+YTfOxsUh+XSaWotxXNRYOitoB4kE59VIgm5I7KDhEixKSiHWkD1+DQ92PyjJTVW5mlBMy6LMGMlGnRbilpR5GjUY+zMcTheA6lEp7gs/3snKo9X9PI1BrPfZ/biqULAHLi1proqy/fMJc21pAT44/4ynZpIjFyZKob2ARPgb5i1UXhAzmwKQfyrmdPuHZvH8Sb13d33WyPX1OZcygwhovrN+7XjdPl6nRiMF7kqdu+CRJVJAt7gaqNR3ExMgOJuVx7QU0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8JkhMotFQUkfLdCyzcrerndmBQ3oLNnXIsxclNSMtTc=; b=wDhtJRzIJY0ozOCCRIIFmpHb+udR0mnfxSUmJRMVmpqdOH7XkWrAVhIUi9hUJvD9FI1j/XaEVeVRORfE18M47Ed+W7OnpSpuhj6pgqjgxtpejTpAesGKMJ3T/D+4OZn2InTa7KEWQ343zn3ZEO+wn0KMFLBfjOWoYwIQ2L7J/uOZzA5vW8GtkY+F35qHO8dHItbF4XfIf7XewOy4F6dzaWPakHBSbzIOkxi234O0bmWJYQjWXeBl95ZcfAZJ7UDt/EEqLEH5FNuTBeu6R0Ais2KZKPBkx7B9Xj9+CS4MSOvuoILIEZO5dvZ7ski0MVZsSTjlDuT1IteEGQfTc60FEQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by CO1PR03MB5777.namprd03.prod.outlook.com (2603:10b6:303:9c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 08:29:24 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.21.0382.014; Mon, 7 Sep 2026 08:29:24 +0000 From: Adrian Ng Ho Yin To: dinguyen@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Adrian Ng Ho Yin Subject: [PATCH v3 3/4] firmware: stratix10-svc: add DMA coherent memory allocation for SMMU-enabled platforms Date: Mon, 7 Sep 2026 16:20:26 +0800 Message-ID: <20260907082203.2639395-3-adrian.ho.yin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0011.namprd07.prod.outlook.com (2603:10b6:a03:505::20) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|CO1PR03MB5777:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d526034-7a83-4854-e186-08df0cba1f5e X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|6133799003|10067099003|56012099006|11063799006|18002099003|22082099003|55112099003; X-Microsoft-Antispam-Message-Info: +atr5BYhrEtz3PxBIXiogasEUdn3HVTd8P0uv5yMXhs8pZAkSneHXSqukirnfyvLc277W8JCBQ4R0AGcmuB4zKuUG2HlsHqXjuSuhhfnCFeZC1n3OMRoZ/W839Lc8u9Jdg/zRfzWzY2Vpo+On3TJLEBHjt/+8wmBwn++9tkIxqi6Z0KBRgraLqTobr+E8ko+SNTx3pcT1kkPmpavaIK7/jXhjoXB1+8EKR9EHsUazYnqP8ir/MYa3QYzYcZKpy/g7LfGEg7qjoZTOBA0CFzEaz6p0tpItUk60ZyrvrsitfcTW865HDwd7ShliTkd/vKeGG9/ZB0nWTX835pyuIGS4vDU355vq9eub+qWT06uFAEyqQPPwoCJBzctZt1r4uWGsNeC1XGdCAIxJdulbXgZjq/8Z7yFGb1tNpROrcmv3biJSbmsakDjwXyuU+tyKwVGSx72NPkz37HMPlMypAelD9SJTN6Z99VIofOVgYD33tWiTeAtuW9wneympwhoWZ4kWU5WmAWsdiMefDE/8+Wd1F58UmbqlkPLla3M7V9wFWb76v7Q223j0F5Cyvp/Z0Wf8RLBHvfExx3yJqfxn1g5P+pOW1SfwGr8/vcaaelIlOsPUl7gPiuKK2ItOYrWfO7N5ry3viWkwuPZjg4FCtuBQhD1DMGvsD3lICHZ51KQhcc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003)(55112099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?eqMbl83O0LUjmxagVMj96+1XSR7wuvl+gzz1NeGPUy9rOiBlyyuywmU34b6q?= =?us-ascii?Q?MBWxiLpn7V6Cwv3dA8N9uTK7zrqilgRYnNjUwq7MjvXyDtJNUxRzCZlOBzSA?= =?us-ascii?Q?f82BVCqMW6/1RqB/I+8mZIqbKNZ6mDvbM+LelyhlS7BxOw43RKi3mk/4ttOR?= =?us-ascii?Q?xMuL7OYP+g3n3S+xr6nY6UZvfSIIoOvqs6UV2gheuwCXfXzTC1XH+GDom4S1?= =?us-ascii?Q?WYEMppuwr2HGZxJMV6VtqfRRvtc1R9s/jQfjcy9JanGJVge26hftaXDi+6/v?= =?us-ascii?Q?KlOjyeGnGpxxULpJYyNLS910Wdf10g6DwSZnFNS50xk7ri5Qu9tnW15HNHPE?= =?us-ascii?Q?MOtZMczUbP4rifQIL3MxMGzMYI2Mj72TFRNv/w9E76CQ48fdQRRGaWmMXJgL?= =?us-ascii?Q?Y9fZAnAoOqO7t2RgdAlObpI5QJClCnud9X6VfF/1SXHusu0odrerykusROYR?= =?us-ascii?Q?PJeUUJXFD56Te3xItNYB/IU27nJqMLKUEGf+eN9PlK7met8pB5nOpn0v7Mf1?= =?us-ascii?Q?k6SXIsTvg8Yvm/skicUPnVWKLJTr8MWX5Di2h7Ht7IyQi1y56v4WVDojxOuX?= =?us-ascii?Q?cSdxLXrLvw/LPnfdiXSXhQS5poN5U9K70ss7AmqnLw60T5r3QP4XkkNNQpPr?= =?us-ascii?Q?qVLg3zOm4pr0TptyDOOlLaYX3nVxLDhQS5MrREhh0qcfzPP1mz41hWrD7fJH?= =?us-ascii?Q?npHemKJhjhCkZBL1th9nv3GR/ecZEaSnxCBaqVKAGORDXamirhj7bKPRlCru?= =?us-ascii?Q?8/AQDWg0M86RtbY3Hp0kzUHj1RRNI/owlDHGvJ+AlZyAcTBVzfPUng/lrn4J?= =?us-ascii?Q?oBh4uzhbNKwmQflSP3flzU6xSjaAV8l9JpsOcBEbC4DQKiL3Lbs5bxXUeIEt?= =?us-ascii?Q?G5ltpjW1BzzAg7XGO0x2t7S8qhQJhnAndK4g7/orZl+o9uNvT8kY9u0ne/Aw?= =?us-ascii?Q?wbFbu3VskFJ9P126lGmVe+S0g94t+mz7rLiFXbMjwVQDkd9XqrifaBSYSTQs?= =?us-ascii?Q?lyU8FfhdeYr+vaxHfXrqsHNRkCyz61BJPHvjvuxtn8Ov1Xh1wykClume96mg?= =?us-ascii?Q?1l9yxEuGo4aehWwFBg8iSkoZeuNy1l6I1fPlSw7hLRkgWNnCgT2lFUIXI8ar?= =?us-ascii?Q?1Al+Eq5sJppeZzKQiJJ7tL0AHG6nKC6RM56PQ6s1VZFtawCLro5sB3eCN6w8?= =?us-ascii?Q?mzwGXB5uARkltjzXXpb9lD33zpSQYDDzDYilEoltWTp77yuzYzQ/iINtWFGX?= =?us-ascii?Q?wVHdcjXrmzxeEh1ah6drqLkSLtGlcWLFfX9EuzFsGmoxBlPvvlI/V+g0kkgL?= =?us-ascii?Q?faALFY0jcTfQC14G9TXTwJfHXqAV2zOQJk5qyCCw1s4+93JsRDraX66Od5Yd?= =?us-ascii?Q?3RvJTqP9VrM/fs/6GmHYyWsbQEH4AmOkpVnJXXWLcn/1l1O/tfUcAQEkewR9?= =?us-ascii?Q?dsv1OxLk5SCRkLSG18OZVeYjWzoyLfkPNhnrQ2SYOH6q+pOf/5VmMuitizWx?= =?us-ascii?Q?bl2p9fqkXSBZVCt00lBhdY9DhlJWd+D+bXa/YT4ftDt3eEl7+PoYZCabFF8v?= =?us-ascii?Q?sdCfPHWg255LRV4exQq0zhGIhZandPRDGo7QUUaIpZtqkxT+kO9dJE2F2HrM?= =?us-ascii?Q?psdZu71AYjgioPTxTj1jAUVRdMmTSMBfjhJqfzXCvsFOQO/8KzcQ6zqnNWrE?= =?us-ascii?Q?fUuoyd47X2mwOe1PMZ9x9T6X7NCi3j446IkG6Qfbw1Ho5YQvoEuKVTWlZoCo?= =?us-ascii?Q?K9zNQk+cPEfO50qp7JQmcaP1p+Ku00g=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d526034-7a83-4854-e186-08df0cba1f5e X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 08:29:24.3941 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PdiutuKjW/+8k3UHOwSIhbNTOl4qVAy2aYQ27IDh8OY8B1h02i6r3Ij6tuTVu7cxIEkW5OpI/H/wO36Gdxp/6ZJCVr8nuUGwho6t1MBswtI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB5777 Content-Type: text/plain; charset="utf-8" On Agilex5, DDR starts at 0x8000_0000 which is outside the SDM's addressable range. When SMMU is active, the driver must allocate DMA-coherent buffers and pass IOVAs (not physical addresses) to ATF. Add SVC_SDM_DMA_ADDR_BITS (29) and SVC_SDM_DMA_ADDR_OFFSET (0x8000_0000) to constrain IOVAs to the 0-512 MB window the SDM can reach and to satisfy ATF's address range check respectively. Extend struct stratix10_svc_data_mem with dma_addr to hold the raw IOVA for teardown, and struct stratix10_svc_controller with use_dma_mem and dma_addr_offset to select the DMA path at runtime. Add svc_setup_dma_memory() to set the 29-bit DMA mask. Update stratix10_svc_allocate_memory() and stratix10_svc_free_memory() with a dma_alloc_coherent()/dma_free_coherent() branch, and adjust svc_thread_cmd_data_claim() to reapply dma_addr_offset when resolving ATF completion addresses back to virtual addresses. Both new controller fields default to zero so existing gen_pool platforms are unaffected. Signed-off-by: Adrian Ng Ho Yin --- drivers/firmware/stratix10-svc.c | 146 +++++++++++++++++++++++++------ 1 file changed, 121 insertions(+), 25 deletions(-) diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-= svc.c index 643cc008808e..d790ae239cf4 100644 --- a/drivers/firmware/stratix10-svc.c +++ b/drivers/firmware/stratix10-svc.c @@ -7,10 +7,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -48,6 +50,23 @@ #define FPGA_CONFIG_STATUS_TIMEOUT_SEC 30 #define BYTE_TO_WORD_SIZE 4 =20 +/* + * SVC_SDM_DMA_ADDR_BITS - constrains the IOVA allocated by + * dma_alloc_coherent() to 29 bits (0x0000_0000 - 0x1FFF_FFFF) + * when SMMU is active on Agilex5. The SDM accesses these buffers + * via the SMMU using IOVAs, so the 29-bit limit keeps IOVAs within + * the SDM's addressable window. + * + * SVC_SDM_DMA_ADDR_OFFSET - ATF on Agilex5 distinguishes + * SMMU-mapped buffers from direct physical addresses by the + * presence of this offset. The driver adds it to the IOVA before + * passing the address to ATF via SMC; ATF strips it, translates + * the remaining IOVA through the SMMU, and the SDM accesses the + * underlying physical memory. + */ +#define SVC_SDM_DMA_ADDR_BITS 29 +#define SVC_SDM_DMA_ADDR_OFFSET 0x80000000UL + /* stratix10 service layer clients */ #define STRATIX10_RSU "stratix10-rsu" #define SOCFPGA_HWMON "socfpga-hwmon" @@ -149,18 +168,25 @@ struct stratix10_svc_sh_memory { /** * struct stratix10_svc_data_mem - service memory structure * @vaddr: virtual address - * @paddr: physical address + * @paddr: address passed to ATF via SMC and echoed back in completion + * notifications; used as the lookup key in svc_pa_to_va(). + * On the SMMU path this is (IOVA + %SVC_SDM_DMA_ADDR_OFFSET); + * on the gen_pool path this equals the raw physical address. * @size: size of memory + * @dma_addr: IOVA returned by dma_alloc_coherent(); used to free the + * mapping via dma_free_coherent() on the SMMU path. * @node: link list head node * * This struct is used in a list that keeps track of buffers which have * been allocated or freed from the memory pool. Service layer driver also - * uses this struct to transfer physical address to virtual address. + * uses this struct to map the address returned by ATF back to a virtual + * address. */ struct stratix10_svc_data_mem { void *vaddr; phys_addr_t paddr; size_t size; + dma_addr_t dma_addr; struct list_head node; }; =20 @@ -296,6 +322,15 @@ struct stratix10_svc_chan { * @sdm_lock: only allows a single command single response to SDM * @actrl: async control structure * @psci_reboot_nb: reboot notifier for PSCI secondary CPU offlining + * @use_dma_mem: when true, buffers are allocated via dma_alloc_coherent() + * instead of the ATF reserved-memory gen_pool. + * @dma_addr_offset: value added to the DMA address (IOVA) before passing = it + * to ATF via SMC. ATF uses this offset to distinguish + * SMMU-mapped buffers from direct physical addresses; it + * strips the offset, translates the remaining IOVA thro= ugh + * the SMMU, and the SDM accesses the underlying memory. + * Set to %SVC_SDM_DMA_ADDR_OFFSET on Agilex5 when SMMU = is + * active; zero otherwise. * @chans: array of service channels * * This struct is used to create communication channels for service client= s, to @@ -313,6 +348,8 @@ struct stratix10_svc_controller { struct mutex sdm_lock; struct stratix10_async_ctrl actrl; struct notifier_block psci_reboot_nb; + bool use_dma_mem; + unsigned long dma_addr_offset; struct stratix10_svc_chan chans[] __counted_by(num_chans); }; =20 @@ -377,11 +414,17 @@ static void svc_thread_cmd_data_claim(struct stratix1= 0_svc_controller *ctrl, break; } cb_data->status =3D BIT(SVC_STATUS_BUFFER_DONE); - cb_data->kaddr1 =3D svc_pa_to_va(res.a1); + /* + * The firmware COMPLETED_WRITE response returns the + * raw IOVA (without dma_addr_offset). Add it back to + * match the key stored in pmem->paddr at allocation + * time. dma_addr_offset is zero on non-SMMU paths. + */ + cb_data->kaddr1 =3D svc_pa_to_va(res.a1 + ctrl->dma_addr_offset); cb_data->kaddr2 =3D (res.a2) ? - svc_pa_to_va(res.a2) : NULL; + svc_pa_to_va(res.a2 + ctrl->dma_addr_offset) : NULL; cb_data->kaddr3 =3D (res.a3) ? - svc_pa_to_va(res.a3) : NULL; + svc_pa_to_va(res.a3 + ctrl->dma_addr_offset) : NULL; p_data->chan->scl->receive_cb(p_data->chan->scl, cb_data); } else { @@ -1052,6 +1095,38 @@ svc_create_memory_pool(struct platform_device *pdev, return genpool; } =20 +/** + * svc_setup_dma_memory() - configure the device for dynamic DMA allocation + * @pdev: pointer to service layer device + * + * Called instead of svc_get_sh_memory() + svc_create_memory_pool() when + * the device is behind an SMMU. Sets a 29-bit coherent DMA mask so that + * every subsequent dma_alloc_coherent() call yields an IOVA within the + * first 512MB (0x0000_0000 - 0x1FFF_FFFF). The driver then adds + * %SVC_SDM_DMA_ADDR_OFFSET to the IOVA before passing it to ATF; ATF + * strips the offset and uses the SMMU to translate the IOVA to the + * underlying physical memory for SDM access. + * + * Return: 0 on success, or a negative error code on failure. + */ +static int svc_setup_dma_memory(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + int ret; + + ret =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(SVC_SDM_DMA_ADDR_BITS= )); + if (ret) { + dev_err(dev, + "failed to set %u-bit DMA mask: %d\n", + SVC_SDM_DMA_ADDR_BITS, ret); + return ret; + } + + dev_info(dev, + "SMMU enabled: using dynamic DMA allocation (IOVA range 0-512MB)\n"); + return 0; +} + /** * svc_smccc_smc() - secure monitor call between normal and secure world * @a0: argument passed in registers 0 @@ -1958,34 +2033,50 @@ EXPORT_SYMBOL_GPL(stratix10_svc_done); void *stratix10_svc_allocate_memory(struct stratix10_svc_chan *chan, size_t size) { + struct stratix10_svc_controller *ctrl =3D chan->ctrl; struct stratix10_svc_data_mem *pmem; - unsigned long va; - phys_addr_t pa; - struct gen_pool *genpool =3D chan->ctrl->genpool; - size_t s =3D roundup(size, 1 << genpool->min_alloc_order); + struct gen_pool *genpool; + dma_addr_t dma_addr; + size_t s; + void *va; =20 pmem =3D kzalloc_obj(*pmem); if (!pmem) return ERR_PTR(-ENOMEM); =20 - guard(mutex)(&svc_mem_lock); - va =3D gen_pool_alloc(genpool, s); - if (!va) { - kfree(pmem); - return ERR_PTR(-ENOMEM); - } + if (ctrl->use_dma_mem) { + va =3D dma_alloc_coherent(ctrl->dev, size, &dma_addr, GFP_KERNEL); + if (!va) { + kfree(pmem); + return ERR_PTR(-ENOMEM); + } =20 - memset((void *)va, 0, s); - pa =3D gen_pool_virt_to_phys(genpool, va); + pmem->vaddr =3D va; + pmem->paddr =3D dma_addr + ctrl->dma_addr_offset; + pmem->dma_addr =3D dma_addr; + pmem->size =3D size; + } else { + genpool =3D ctrl->genpool; + s =3D roundup(size, 1 << genpool->min_alloc_order); =20 - pmem->vaddr =3D (void *)va; - pmem->paddr =3D pa; - pmem->size =3D s; + va =3D (void *)gen_pool_alloc(genpool, s); + if (!va) { + kfree(pmem); + return ERR_PTR(-ENOMEM); + } + + memset(va, 0, s); + pmem->vaddr =3D va; + pmem->paddr =3D gen_pool_virt_to_phys(genpool, (unsigned long)va); + pmem->size =3D s; + } + + guard(mutex)(&svc_mem_lock); list_add_tail(&pmem->node, &svc_data_mem); - pr_debug("%s: %s: va=3D%p, pa=3D0x%016x\n", __func__, - chan->name, pmem->vaddr, (unsigned int)pmem->paddr); + pr_debug("%s: %s: va=3D%p, addr=3D0x%016llx\n", __func__, + chan->name, pmem->vaddr, (unsigned long long)pmem->paddr); =20 - return (void *)va; + return va; } EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory); =20 @@ -2007,8 +2098,13 @@ void stratix10_svc_free_memory(struct stratix10_svc_= chan *chan, void *kaddr) if (pmem->vaddr !=3D kaddr) continue; =20 - gen_pool_free(ctrl->genpool, (unsigned long)kaddr, pmem->size); - pmem->vaddr =3D NULL; + if (ctrl->use_dma_mem) { + dma_free_coherent(ctrl->dev, pmem->size, + pmem->vaddr, pmem->dma_addr); + } else { + gen_pool_free(ctrl->genpool, + (unsigned long)kaddr, pmem->size); + } list_del(&pmem->node); kfree(pmem); return; --=20 2.49.GIT From nobody Fri Sep 25 23:53:11 2026 Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11010008.outbound.protection.outlook.com [52.101.61.8]) (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 0D2E8448399; Mon, 7 Sep 2026 08:29:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.61.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769773; cv=fail; b=CDrjfHMieIMFu9FAy+lihhwdgCkoauQuSWcD+B0mP3gn7T9x7VjMytGkGbhY3O+cXBcXyuaEhPRD8SJJsoQSfhBsacO9eidkxpffjqxnqsb841eo8/9J4D7KtqGZUNWqfQi6FAmPk/rjB/UA+sGVxMYro25v+DJEuwK0SdYudNE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788769773; c=relaxed/simple; bh=gI3JNoWGbuclnklgauIuzyum56MCYo3DcatLCITsXu0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tRaCoYhtFpI1T6hRRgIhwOnxn5fA+13v0EwKUieMF1+wlcN7UcivxYPmIBq6feRow7lr85r+zRnvUcrikFxauPMvwDASkc6Vza0WA/s7jZmAHQHvJ0ts4/opMwYwVY5seaISiuyrc/e4dmgXa5p+O5E0lQawhStSBXcWBShvTDQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=NfMX7qMz; arc=fail smtp.client-ip=52.101.61.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="NfMX7qMz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i6ZRCSfPgtmqoTf8GQEW88CGuloHTHlJbOE7M/vTRdwX0QJoz1xZte4/ZovQjl7hNNH93sSZAs9VweBLyKeS4dxUoZRezsuu64moXOVxfHDPrA6PEERIc0Qey/oLnfkfs6SfkRaUa/JKAgGlxDiworCfOlBK2LZlC1DmKki2pX+GSbzmvqkNYu/eAb1fB/cgxBWM7M1Fr2wnej3WvRrATCw+iiCA7+3J7G+E7KSxyUUfCDHL46bi0bYgki3TKnvZcXLgKLq9NlaLQT0t+PCSSENB1jXWaEjbgOFMNKoTGmVdZnT+g1rQZYe977yNQYaDrkxyPKAjepCwe9Po4+AYSQ== 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=+RfoZJlWax6qqGP3EUxzt8uht6KP1PvZjATXl+dBTcY=; b=mTf+0C1NyBpfhCZtOBE0IIeaV7dFfO8NGbDcO1ija9+8yvCH9e5/P+FO1wbIw6Ef1WG4JD0zziVtChXGDopNoMiGhA24PG52ez9TI6S5gorFPwFP04GwTS+POahru2vURWNNP+xuuVrx3ZYXeROw+8MlW9634+5wTh/024LvBIv05o9HHsJPuaUQWyEGPhqV62aibDnOpm4pZa0npFE35sYAwEfKcth3CJ23n6VKjjw8+PhL3NF9XqEahpRrS1BKclSTh4mbY1288IEHJYQzvPCLUeUyWSx9kJHt+QSOvnxmNZBvbYrjXgDUGqC1KYTVYkZHjWN9L+LpgRbKsF/D8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+RfoZJlWax6qqGP3EUxzt8uht6KP1PvZjATXl+dBTcY=; b=NfMX7qMzBzQXF5FnhX7fNe369pmQyCWhBLdBsFpiXE3fKPOyxnWX8vKEJU5RQdkCnIHH7WXDK+zJQE64wZtWycKM1KGYumoVYpfthGumspCzA0+GW3wKlHOAr3mtdsZSjbf+TofzVh++X6tquzzBsgFkwK/h7qc4epGuAGwFG7FRfA+x83JMuWDRKTvD8mSciqoE2GJ3TMUGvRhlNZMF4iNYif9haJxSSl19xNcDAQiYavVNVBhnZIUdaUQM/NNcQNemjxmVlKlNsLDlxzmOXtcwEE1Fh6Yiq7rsrLPNLrYzfKvZVrV4sRW/GsZflpqRLTRt5hirazLHDLuGugjHZg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) by DS2PR03MB8372.namprd03.prod.outlook.com (2603:10b6:8:32f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 08:29:27 +0000 Received: from DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542]) by DM8PR03MB6230.namprd03.prod.outlook.com ([fe80::abad:9d80:7a13:9542%3]) with mapi id 15.21.0382.014; Mon, 7 Sep 2026 08:29:27 +0000 From: Adrian Ng Ho Yin To: dinguyen@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Adrian Ng Ho Yin Subject: [PATCH v3 4/4] firmware: stratix10-svc: enable Agilex5 SMMU support in probe Date: Mon, 7 Sep 2026 16:20:27 +0800 Message-ID: <20260907082203.2639395-4-adrian.ho.yin.ng@altera.com> X-Mailer: git-send-email 2.49.GIT In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ2PR07CA0011.namprd07.prod.outlook.com (2603:10b6:a03:505::20) To DM8PR03MB6230.namprd03.prod.outlook.com (2603:10b6:8:3c::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR03MB6230:EE_|DS2PR03MB8372:EE_ X-MS-Office365-Filtering-Correlation-Id: 6bf40da7-7094-4f1b-c2e9-08df0cba20fb X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|6133799003|10067099003|56012099006|5023799004|11063799006|22082099003|18002099003|55112099003; X-Microsoft-Antispam-Message-Info: twtWOsRqE6Kb3YS5kBGwf4MQipSdpoK0WccA+M8zeyY61B6ea8jIegk6BX/8sgHB75072Nz0awFdSipuSVrHCC0g+4c1AkPXncHaxxdROonTM7wvY5RNfy4v+3lIcOO56bqT/k+EcMwuyrp1KFn7ua7vEPJVRPCqPTQiHPGsatPBIusWULS7GGE6i7a/9eQSixLczcKs1IpcUP6//QQTsLnXcQdRzYd4A2dabKfIMRr0rePFDGfBhMl8iTfbl5uCtXYP3R2s8jCavutvF6fYzF90pXIrrAjvivcN+pJM0R+jPHfRbGDgjZhuxpNp8Voj71mKeAxN83MpC8proeaOOpy54Js41/+I79kXc3ehDiIfVSCFLttDUL2EOfhofBsKsRo1rJih5Vb2bpgmVJVxKXZyFkSB8wiPao5oU64bNYLqRF1MjBPYsPlGHomX1dyUAF0fsxUQPdbXXse2Q4N9IshoCjqc0tsooHDP9S2fpuUutA+fFFFsLzxIFxT119zRoG2sYnslv20+K0QgVkzmXnJtdhb9V7b0UjhXumj3kw5vLXKFVaZ/yBcoXqwB3aCBjozKkJUlGn3p+jAE94WCswegpKiTqgsUxQkSWbxn++eLQdtkt08MfvP+B7LHiJUSbEv/MjrQ/Iu9dn58QNjEZtrVcW+ivUD7gBnvmhGQZCc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR03MB6230.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(6133799003)(10067099003)(56012099006)(5023799004)(11063799006)(22082099003)(18002099003)(55112099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ct9Y7uMt4EWFhpOwXaq3v3Jh9R8TnCa/eB5Pj/2mTcTUqDozknTrZwTaaBMJ?= =?us-ascii?Q?8U143SFy5M9DDKUcqN8ZZRsOyReDS+XgA/ocYQKf2QbsVT9cYUxL4BIqOx36?= =?us-ascii?Q?z7iAplQW1WiusQpW09t0fCAPZCVFh5jKelXIxgcEbSo90T4ZJ7uXrasuw1zs?= =?us-ascii?Q?McGXfB58Hb7si75N85P/qDtnhEuPs5saqnsnvVeqDxedtG38nC/LMJzuNqI9?= =?us-ascii?Q?GIXpKdjJKxZT6uTqhozzf3qjnhUHMJrgpMXbVDnueH89NgW20pg4iHnaTdtJ?= =?us-ascii?Q?SO0sMB3I8RmnPJ2VXwOLbxjg32Xbn5Onfglr4g3ELeR+umTBpSehfY+h2c7s?= =?us-ascii?Q?AqoxSkl4Zbg1yuX8Ut18Tcz3C1LVgYr3c8GEN3ncAidh/9KTFA8g2iiayab8?= =?us-ascii?Q?iwRY68rCm6xkLPOSGvvEJwKypfj7YPEVofC0AsYeDx/AtmB5wk697cvebRAZ?= =?us-ascii?Q?h01hiP8tHugRxDr8YSc+OK5xT5jyqDqGQMoju4Tcp0QORgg8LCz+hcmRxlJH?= =?us-ascii?Q?xhBqEjLl4t1mf2VsBgbSadsQJQfsJnwdrj6WGapUqWhQ4KZ85BaWWKbIV20B?= =?us-ascii?Q?9TWSuMX03U3ZCa0tZJT5LsG2VVLzJEZdgIEu4jqns+r03j6005HKxLEBIVUF?= =?us-ascii?Q?XDbNzcvDyI0S8jatpZEVrmzRmcsWoYYpFXYNj8W8KS1D5lpG/5Z2STuz9dgJ?= =?us-ascii?Q?kEg0ubGQ6MWAM9Qgcc4Vauj0GIRvdCqLoN0f06xGAv1qvp31EU/PJR/DOn1F?= =?us-ascii?Q?1qk9jAqdU+q5BJkKoCs0TqUjkxXxy4M269IIiNxQ6Ifly+4WZljY3vvtUHU1?= =?us-ascii?Q?hOHOOfkq5HbrfG5CdhTFkmLK+6s/DO6o5cbYS6zjCSLu/UNlygBmG1Z4/616?= =?us-ascii?Q?xO1/5maP1CPeAPszLciPxnDraL0HCdUuurwNSl3aaF333+KBVQLJreQxqITW?= =?us-ascii?Q?smeUwDwme72E0xOa4HvVUJAmufYhIlMct4k10ZdyxzYyTm4upmRV2sQebATx?= =?us-ascii?Q?zFG9zDABcrzmfBzF9xlTTm9OuTEynt2k1EZLgCl8NpOBmEGOnQL+VGMrWU7V?= =?us-ascii?Q?EXMTQ9HQ0/eey7yd/HFsR71XyeatkkwOApxGOM9ULY5KeUM1ba7QHx3dCbXP?= =?us-ascii?Q?GLcfgSgpg/JPqpt0Uxjs4BUAILRbZUXN3GCV3qDPMIWo1g34mWZTDqYVi1id?= =?us-ascii?Q?fwwGvd4g2bqNdW/4IhRcLNAhKnbMRrYyxbAXzi4JGaly8efcEKiHhQQTFlZt?= =?us-ascii?Q?LwVHmzexpoPxJ5tu1VzQm8h/HC2H5mB2eF2fS+gPlfNKRRt9Bu3sDpm+IlRv?= =?us-ascii?Q?DJUo4KUbA/grBHtIc+1+R3z+Yne5Zo8q9hiRl0pTEzuUGnHm96vitACGfYJY?= =?us-ascii?Q?Iu9+2ALvw8rJlRyYm4Espy4wUXWhi83LVIMDZYVNQltSTUWFEx5vt+YVF8Az?= =?us-ascii?Q?PbempbPSKuCneRis6HWOoQyuNIvovZJKg39Fma8Gg4GpfTENdiNP12nuN5An?= =?us-ascii?Q?UCv9iumfzgZqw0J6w/Pll5QuaPEv11D6Gn2vqtO6HOWrbNiXewTZAp1w8NKO?= =?us-ascii?Q?kLNMpUnKKJ/wwNFFDLk9SbfAPQwMuB9K1ymnuvBkahjCY7+9gHtM/G+en4S/?= =?us-ascii?Q?TZiLqVK28627SvE99j0pj5sRp22RRuSE09QvAVrdt2wAOhmME86up+eE1v1l?= =?us-ascii?Q?ABo4fDlpIq9ls17r+7Sh7JzPX4r9rpn6aM5dSKwKSs63YOZiujrsxW59jSfE?= =?us-ascii?Q?3INXK0Cgyj/pNHVjY4vgK2udLokXal0=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bf40da7-7094-4f1b-c2e9-08df0cba20fb X-MS-Exchange-CrossTenant-AuthSource: DM8PR03MB6230.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 08:29:27.1287 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8vbAYX7UN9/MWxRDVMr5arfXVgt9EpxSsZUu9It5MwvwzuxuQhKIAN8dhPLvC0BGeANPQS2hxk1DZQPiicyTE7wt527rvnQqXDVo0478JlM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR03MB8372 Content-Type: text/plain; charset="utf-8" Wire up the Agilex5-specific path in stratix10_svc_drv_probe(). Add INTEL_SIP_SMC_SDM_REMAPPER_CONFIG to stratix10-smc.h and issue INTEL_SIP_SMC_SDM_REMAPPER_BYPASS from probe. On Agilex5 REV B the hardware SDM address remapper must be bypassed when the SMMU is active so no extra offset is applied on top of the IOVA translation. Extend stratix10_svc_pdata with use_dma_mem and add intel,agilex5-svc to the of_device_id match table with that flag set. Probe reads the flag via of_device_get_match_data() so it shares the same pdata mechanism used for needs_psci_cpu_off. On Agilex5, DDR starts at 0x8000_0000 which is outside the SDM's addressable range, making the SMMU mandatory. Fail probe with -ENODEV if no IOMMU domain is attached to the device. Register svc_data_mem_cleanup() as a devm action on the DMA path to free any buffers leaked by service clients on driver unbind. Guard err_destroy_pool against NULL genpool for the early-exit DMA path. Signed-off-by: Adrian Ng Ho Yin --- drivers/firmware/stratix10-svc.c | 83 +++++++++++++++++--- include/linux/firmware/intel/stratix10-smc.h | 23 ++++++ 2 files changed, 94 insertions(+), 12 deletions(-) diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-= svc.c index d790ae239cf4..fa2335378536 100644 --- a/drivers/firmware/stratix10-svc.c +++ b/drivers/firmware/stratix10-svc.c @@ -122,12 +122,17 @@ =20 struct stratix10_svc_pdata { bool needs_psci_cpu_off; + bool use_dma_mem; }; =20 static const struct stratix10_svc_pdata psci_cpu_off_pdata =3D { .needs_psci_cpu_off =3D true, }; =20 +static const struct stratix10_svc_pdata agilex5_pdata =3D { + .use_dma_mem =3D true, +}; + typedef void (svc_invoke_fn)(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, @@ -2169,6 +2174,7 @@ static void psci_cpu_off_teardown(struct stratix10_sv= c_controller *ctrl) static const struct of_device_id stratix10_svc_drv_match[] =3D { { .compatible =3D "intel,stratix10-svc", .data =3D &psci_cpu_off_pdata }, { .compatible =3D "intel,agilex-svc", .data =3D &psci_cpu_off_pdata }, + { .compatible =3D "intel,agilex5-svc", .data =3D &agilex5_pdata }, {}, }; =20 @@ -2179,14 +2185,38 @@ static const char * const chan_names[SVC_NUM_CHANNE= L] =3D { SVC_CLIENT_HWMON }; =20 +static void svc_data_mem_cleanup(void *data) +{ + struct stratix10_svc_controller *ctrl =3D data; + struct stratix10_svc_data_mem *pmem, *tmp; + + guard(mutex)(&svc_mem_lock); + + list_for_each_entry_safe(pmem, tmp, &svc_data_mem, node) { + dev_warn(ctrl->dev, "leaked svc buffer %p, freeing on unbind\n", + pmem->vaddr); + if (ctrl->use_dma_mem) { + dma_free_coherent(ctrl->dev, pmem->size, + pmem->vaddr, pmem->dma_addr); + } else { + gen_pool_free(ctrl->genpool, + (unsigned long)pmem->vaddr, pmem->size); + } + list_del(&pmem->node); + kfree(pmem); + } +} + static int stratix10_svc_drv_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; struct stratix10_svc_controller *controller; - struct gen_pool *genpool; + struct gen_pool *genpool =3D NULL; struct stratix10_svc_sh_memory *sh_memory; struct stratix10_svc *svc =3D NULL; const struct stratix10_svc_pdata *pdata =3D of_device_get_match_data(dev); + struct arm_smccc_res res; + bool use_dma_mem =3D false; =20 svc_invoke_fn *invoke_fn; size_t fifo_size; @@ -2197,18 +2227,38 @@ static int stratix10_svc_drv_probe(struct platform_= device *pdev) if (IS_ERR(invoke_fn)) return -EINVAL; =20 - sh_memory =3D devm_kzalloc(dev, sizeof(*sh_memory), GFP_KERNEL); - if (!sh_memory) - return -ENOMEM; + use_dma_mem =3D pdata && pdata->use_dma_mem; =20 - sh_memory->invoke_fn =3D invoke_fn; - ret =3D svc_get_sh_memory(pdev, sh_memory); - if (ret) - return ret; + if (use_dma_mem) { + if (!iommu_get_domain_for_dev(dev)) { + dev_err(dev, + "SMMU is required for agilex5-svc but no IOMMU domain found\n"); + dev_err(dev, + "Ensure the SMMU node is enabled in the device tree and 'iommus' is se= t for this node\n"); + return -ENODEV; + } + + invoke_fn(INTEL_SIP_SMC_SDM_REMAPPER_CONFIG, + INTEL_SIP_SMC_SDM_REMAPPER_BYPASS, + 0, 0, 0, 0, 0, 0, &res); + + ret =3D svc_setup_dma_memory(pdev); + if (ret) + return ret; + } else { + sh_memory =3D devm_kzalloc(dev, sizeof(*sh_memory), GFP_KERNEL); + if (!sh_memory) + return -ENOMEM; =20 - genpool =3D svc_create_memory_pool(pdev, sh_memory); - if (IS_ERR(genpool)) - return PTR_ERR(genpool); + sh_memory->invoke_fn =3D invoke_fn; + ret =3D svc_get_sh_memory(pdev, sh_memory); + if (ret) + return ret; + + genpool =3D svc_create_memory_pool(pdev, sh_memory); + if (IS_ERR(genpool)) + return PTR_ERR(genpool); + } =20 /* allocate service controller and supporting channel */ controller =3D devm_kzalloc(dev, struct_size(controller, chans, SVC_NUM_C= HANNEL), @@ -2223,9 +2273,17 @@ static int stratix10_svc_drv_probe(struct platform_d= evice *pdev) controller->num_active_client =3D 0; controller->genpool =3D genpool; controller->invoke_fn =3D invoke_fn; + controller->use_dma_mem =3D use_dma_mem; + controller->dma_addr_offset =3D use_dma_mem ? SVC_SDM_DMA_ADDR_OFFSET : 0; INIT_LIST_HEAD(&controller->node); init_completion(&controller->complete_status); =20 + if (use_dma_mem) { + ret =3D devm_add_action_or_reset(dev, svc_data_mem_cleanup, controller); + if (ret) + goto err_destroy_pool; + } + if (pdata && pdata->needs_psci_cpu_off) { controller->psci_reboot_nb.notifier_call =3D psci_cpu_off_reboot_notifier; @@ -2333,7 +2391,8 @@ static int stratix10_svc_drv_probe(struct platform_de= vice *pdev) err_free_notifier: psci_cpu_off_teardown(controller); err_destroy_pool: - gen_pool_destroy(genpool); + if (genpool) + gen_pool_destroy(genpool); =20 return ret; } diff --git a/include/linux/firmware/intel/stratix10-smc.h b/include/linux/f= irmware/intel/stratix10-smc.h index 366309260121..b0d42d585a75 100644 --- a/include/linux/firmware/intel/stratix10-smc.h +++ b/include/linux/firmware/intel/stratix10-smc.h @@ -813,4 +813,27 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_= CONFIG_COMPLETED_WRITE) #define INTEL_SIP_SMC_ASYNC_FUNC_ID_RSU_NOTIFY (0xEC) #define INTEL_SIP_SMC_ASYNC_RSU_NOTIFY \ INTEL_SIP_SMC_ASYNC_VAL(INTEL_SIP_SMC_ASYNC_FUNC_ID_RSU_NOTIFY) + +/** + * Request INTEL_SIP_SMC_SDM_REMAPPER_CONFIG + * + * Sync call to configure the SDM address remapper. On Agilex5, the remapp= er + * must be bypassed when the SMMU is active to avoid conflicts with IOMMU + * address translation. + * + * Call register usage: + * a0: INTEL_SIP_SMC_SDM_REMAPPER_CONFIG + * a1: INTEL_SIP_SMC_SDM_REMAPPER_ENABLE or INTEL_SIP_SMC_SDM_REMAPPER_BYP= ASS + * a2-7: not used + * + * Return status: + * a0: INTEL_SIP_SMC_STATUS_OK + * a1-3: not used + */ +#define INTEL_SIP_SMC_FUNCID_SDM_REMAPPER_CONFIG 513 +#define INTEL_SIP_SMC_SDM_REMAPPER_CONFIG \ + INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_SDM_REMAPPER_CONFIG) +#define INTEL_SIP_SMC_SDM_REMAPPER_ENABLE 0 +#define INTEL_SIP_SMC_SDM_REMAPPER_BYPASS 1 + #endif --=20 2.49.GIT