From nobody Mon Feb 9 16:33:40 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6CF021C548C for ; Tue, 24 Dec 2024 14:01:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048881; cv=none; b=kmxXIvi9xvrWzq8wMDLAAeEl/T6TYgdc/ZRqpmuusyiU9Er2N4PCothqtP6SP6iu4v4BCh4nCS2x7C1u0S4PkhXPEXjE2kupT76IkyCHcGIiRaZ7eXjrgMhFFOvsVy6LHkAXmpi2+Pbfri+eEM8lrTQO0NXMF00aqaQB6Q+8Y20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048881; c=relaxed/simple; bh=2q64Jp03o3t6jzZXlU/yVP9FQTQM5OdzbtR25jurl9s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To; b=hx6cim+5Vs+c6bcx3cfh1vV5S5U/tMMowXwm3OYhZofZ3+f7aMGESrucUWmwrp4jz2kmbfs3yp3kPwv/MHbcIjNk0GjdvO0m2phjdCcsawyrr3I16cYZ7NOwvZcc9P2jMQ79AQDV2M5sjNMySXUYp+eTHd2mcp2l68JYyHbSfWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 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 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 62B841FCD; Tue, 24 Dec 2024 06:01:41 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B9A983F59E; Tue, 24 Dec 2024 06:01:12 -0800 (PST) From: Sudeep Holla Date: Tue, 24 Dec 2024 13:57:51 +0000 Subject: [PATCH 4/5] firmware: arm_ffa: Fix big-endian support in __ffa_partition_info_get() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241224-ffa_updates-v1-4-01233aba3e1e@arm.com> References: <20241224-ffa_updates-v1-0-01233aba3e1e@arm.com> In-Reply-To: <20241224-ffa_updates-v1-0-01233aba3e1e@arm.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Sudeep Holla , Arnd Bergmann X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1735; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=2q64Jp03o3t6jzZXlU/yVP9FQTQM5OdzbtR25jurl9s=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnar6l8cTinKnhnzQ/5CPB/Mfbn/B3tGfYPWhCg hUnEpQIuMKJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ2q+pQAKCRAAQbq8MX7i mMm1D/46Tcd53xMZi42H9IY2wkrm8ejgt1x15l8mlXrf/+DcYzhZGBOrNyBUMB4GNuTMHn55WBD H53VzM8Rxvz3Nsifbm0CFVSg87kWy16MOWIIr2dZrGVbmqwQKogbEIrOb6TjO9PI0PNnIUBv9Ij UsHiKX7QvRx6HHK+FsBm4WTFhnpB2wg0CceNzB/bKZ1UhOQNPHRqSeooqi1EGFFgBxmqY2HTeuo mKkhdgWqz8XqNBPmkD5kAt7ziKOr08CtkDtUPUAWeVZFmmRjrzKOqgZ5Zkk1k5YBNA+0rmzrB+6 jwwx+cU5MSoYXKbXwMGU7A9eE3HmOyA8L5VwAxWJOH9jAI9zIyxAke29+UOokVB1J/b6aE1fJQI YYXJdiFNeajlwNRdSKEBU4QPt7kTUVSUSjNbiSRKH2jQCB4jVzUTK+2ORw6Cz6dfmLkTPCp2S3n 1ZtXqLanhhslx5ojZxEdXxgsNmEO68OI4STnn4tGC9ci1gIjf/d3WnHHzJm4qzjOHHOB4bPBnCO 5rstaGBUJmklTYvt7pTsxHhHl5wvMVJuH9+me9W795aJjThg2GfeOScodAE+uYVo0WunDLixuCW EWYWCVLCqiLJ6S9CPUsMJ7TOCb2prE7LFSczLoaagIoJZf5/8bXXjK7ORPEH6NMhQ3ejlf4Lgm6 D1YlIB4zG2/eK0w== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 Currently the FF-A driver doesn't support big-endian correctly. It is hard to regularly test the setup due to lack of test infrastructure and tools. In order to support full stack, we need to take small steps in getting the support for big-endian kernel added slowly. This change fixes the support in __ffa_partition_info_get() so that the response from the firmware are converted correctly as required. With this change, we can enumerate all the FF-A devices correctly in the big-endian kernel. Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/driver.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/d= river.c index 037e0d684994fd30971f40bf139367d1e45c1bf0..bc6ffd25ad2e2fea0fe3610cf89= 6718dbed8f0ad 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -276,9 +276,21 @@ __ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uui= d2, u32 uuid3, } =20 if (buffer && count <=3D num_partitions) - for (idx =3D 0; idx < count; idx++) - memcpy(buffer + idx, drv_info->rx_buffer + idx * sz, - buf_sz); + for (idx =3D 0; idx < count; idx++) { + struct ffa_partition_info_le { + __le16 id; + __le16 exec_ctxt; + __le32 properties; + uuid_t uuid; + } *rx_buf =3D drv_info->rx_buffer + idx * sz; + struct ffa_partition_info *buf =3D buffer + idx; + + buf->id =3D le16_to_cpu(rx_buf->id); + buf->exec_ctxt =3D le16_to_cpu(rx_buf->exec_ctxt); + buf->properties =3D le32_to_cpu(rx_buf->properties); + if (buf_sz > 8) + import_uuid(&buf->uuid, (u8 *)&rx_buf->uuid); + } =20 ffa_rx_release(); =20 --=20 2.34.1