From nobody Sun Feb 8 03:26:55 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7984542A8B for ; Tue, 24 Dec 2024 14:01:17 +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=1735048879; cv=none; b=PMrnRRclRXo0C4wsqYipDjh/pXHF6Vm5oYkWol2ASX2DGG8ecHHzOd8Xauaozx+rJT6Pm9djvmIk/yq71vhu18i7gd98fxw4dBptpWrTkueC/diPBZSKr1KQwGVGUPTR80IVVzOJROM44sGqHXH1Zh+VFitQAf09k7Wng/OMD30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048879; c=relaxed/simple; bh=F0mUi+DToOzDCZQ+Cn7ewDbLcZibROUf9A/AQezLWS0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To; b=gOO2RRDA5V8LvGGAUqyQS2mcZhUbsvBDURrC1Zi7EfxX+Is0nMH0D4AZzkxpB5h8ixeEH6qqvQUcHM6rJ7Wf8YJczF5aKrSEoLGnNCFdH0+DlYmbCRRJFkCEoWvBJxOyq46VdtDbtA6R3U8DujZjcKHW6Y80p8kq4mQdsturlz4= 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 28FEB1C2B; Tue, 24 Dec 2024 06:01:39 -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 7FB5C3F59E; Tue, 24 Dec 2024 06:01:10 -0800 (PST) From: Sudeep Holla Date: Tue, 24 Dec 2024 13:57:48 +0000 Subject: [PATCH 1/5] firmware: arm_ffa: Replace SCMI by FF-A in the macro 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-1-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=1548; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=F0mUi+DToOzDCZQ+Cn7ewDbLcZibROUf9A/AQezLWS0=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnar6lsBYaGgauK2/XjgFfso/PxaQaIrjb7IGW9 1FFiZFKnIWJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ2q+pQAKCRAAQbq8MX7i mDiyEACJv6w3bvhfP5nsQ6fAoa+6aDeJSEMdWv4K72GoC4HyqsZbeDQe9yVa8KJ99FmLha27W68 aVy/eKGuqMUaUdeKEM9Cnou4KSpmfrVhxkU18w2R3Z5GQiEJpdX9aY9yDE/nG3FejyVMVC0+3Jl EdraLdx9jvTP4JNj1sR2yjoH5uNq3AnCXVLFK3DHDcQRE4FIesb7Q2PuDNW+d5I9ZjPW1QbKwjR di5rb/UrKeIEomMn107PvqABz38Y0knj+oyIrvLO7DSb+9JcruHJsJIUH298f0ur6p6DYU3Hylg IONN2Q7uRZYdCDN3lSmg+qinXF2NXpCu5HsO2qA1qcPMo6k3jAbNKHPJFDv9MdVADokFBHkiacm 5d5JC0KXY2UKj/mvdt2gALxQdNn2TxE7nlflNNrqLNVNw6rT2n5snaw7CKM6VIKTPX3MdAtBQ2B eLm951fV3g1FGZwZ2rsdcuhEJmgE/AD/A3VnSAfXiKGRCPoI1ry+iFSz01Zm5ZJxXTwI6LPY57x AjXuKrhAxcPZa6frb0wXu3JnnmeEJE002mD1bRY2S6PgieyC+Y/31SyF781/7PX/QtYKKNDDCxB a5DHpBn672gdOB6OP6oBdMjR+zvTwOAVfzoikmyMk2jQ08D6y3JIkDcmSIjVhhH3qjEACsAhcrp hBPzZyV7oUuAOtQ== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 Commit 22779149e93d ("firmware: arm_ffa: Emit modalias for FF-A devices") added modalias for FF-A devices. However the macro added used SCMI incorrectly. Replace the reference to SCMI by FF-A and update the macro. (i.e. s/SCMI/FFA/) No functional change. Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/bus.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm_ffa/bus.c index dfda5ffc14db7208e8b622cdd648194c9cb1ef34..52b1f09209a0e51e321cd23a69a= a7e4c4daa8dd1 100644 --- a/drivers/firmware/arm_ffa/bus.c +++ b/drivers/firmware/arm_ffa/bus.c @@ -15,7 +15,7 @@ =20 #include "common.h" =20 -#define SCMI_UEVENT_MODALIAS_FMT "arm_ffa:%04x:%pUb" +#define FFA_UEVENT_MODALIAS_FMT "arm_ffa:%04x:%pUb" =20 static DEFINE_IDA(ffa_bus_id); =20 @@ -68,7 +68,7 @@ static int ffa_device_uevent(const struct device *dev, st= ruct kobj_uevent_env *e { const struct ffa_device *ffa_dev =3D to_ffa_dev(dev); =20 - return add_uevent_var(env, "MODALIAS=3D" SCMI_UEVENT_MODALIAS_FMT, + return add_uevent_var(env, "MODALIAS=3D" FFA_UEVENT_MODALIAS_FMT, ffa_dev->vm_id, &ffa_dev->uuid); } =20 @@ -77,7 +77,7 @@ static ssize_t modalias_show(struct device *dev, { struct ffa_device *ffa_dev =3D to_ffa_dev(dev); =20 - return sysfs_emit(buf, SCMI_UEVENT_MODALIAS_FMT, ffa_dev->vm_id, + return sysfs_emit(buf, FFA_UEVENT_MODALIAS_FMT, ffa_dev->vm_id, &ffa_dev->uuid); } static DEVICE_ATTR_RO(modalias); --=20 2.34.1 From nobody Sun Feb 8 03:26:55 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 797FE282F0 for ; Tue, 24 Dec 2024 14:01:17 +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=1735048879; cv=none; b=Vysn7lI12qdEOvvBDQtTZlHjtGpm8E3SqJ5pGCR7WNNboOJd7DuL+VtgmN0RWRJq3AkCp/C7P/OcyQLNU3g9H6jNfRKjfoRgiAzGFoeB48KA7Cp1nIKGfuQxtKzTbrRoTQfK87G0MoUdrgQSiUDRZzw3bkOHzuVyqHZ31TpInOU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048879; c=relaxed/simple; bh=an0T8BaHmmjnOIWFrg0XcNclda/TDCEpL5ml8sjKwio=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To; b=cmOWrg+dV3E+BEZCLFk3vwy6yWjg3ty2tr5py4WdxGbXwFmp3ZnTG81xQm0T+6C5oQ+riCEi+zn7tdYXInCege9Z6BsdvCQKplWRl4YiUJwFYkDRhv1fLn8ILCPyfQz8vc6d9ufRZY/DKjda8cWhjXtbcHht3H7/71Mj3xAT7B8= 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 DF3A61CDD; Tue, 24 Dec 2024 06:01:39 -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 41AC43F59E; Tue, 24 Dec 2024 06:01:11 -0800 (PST) From: Sudeep Holla Date: Tue, 24 Dec 2024 13:57:49 +0000 Subject: [PATCH 2/5] firmware: arm_ffa: Replace UUID buffer to standard UUID format 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-2-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=1783; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=an0T8BaHmmjnOIWFrg0XcNclda/TDCEpL5ml8sjKwio=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnar6lhi4yhEDslzvYCrjWKpW44hclMgOQaNwhi YMs6mHQP7+JAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ2q+pQAKCRAAQbq8MX7i mLDyEACrsAezKlrginjjexiWtgrP7eT8IBa0q8aJSh0aqu7z8PezFY1ZgvF+kEjCexmJPryJGSZ ExnfLADqV43gJF/9cf6XUUfMit2MW9jR5Z9eqbRjr1+nGoSyxU1vcploxYGZooL0SwSClZCwFxt xPygmR2sAQ7Q9PIi+8cB0pYgMRfH6Bu6QWu98c9Ckq0DDdvydoMQpp05I7yWwKAO2qDBUlAKqE7 0WAB3vG5sXwadYzWRwaE0YcDfyeVekh4Qa2cYlKGasnE2sjfzPOym8D2BryK4iFMQvYJamkRtaQ jFA8iIWy18sf3/zAWCI48SaJ361jC3gp9XrbWKqOmPck47d6fHjEW+XZINkH9W/gA0qTL0yeBnR 9kWa9hzh5JODhjIOHxAwS2T7dy9qrVdbgE29uOshTB/Zvbs44EBaUCP69XhDfNRbzNr7Fb500kU Lz0LJsafAgGq7+NYByXsqxepIUEjTL5GPGD4/L+H3L7SNP6j2f9D1jme48SbakHpAQy1Woh5rIF QmrKljaKK+RQXhmDFoBrb3LFIfjIncKr1YWhfDmG0HBmfAMvQ5+KKgSPk5bU5rKrpoAXQIZiAVP UExZVOFa6deY4syNjd6BrRXGffcxEeP1e1mIE2SAzEORRT7PWMA+wm0rONKynmtaOzVsO34jj2q 0cj7zi87gOU+tzw== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 Currently ffa_partition_info structure holds the UUID in the format compatible with the firmware interface. However, most of the functions in the FF-A core driver deals directly with uuid_t type. Replace UUID buffer to standard UUID format in the ffa_partition_info structure. Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/bus.c | 4 +--- include/linux/arm_ffa.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm_ffa/bus.c index 52b1f09209a0e51e321cd23a69aa7e4c4daa8dd1..a90e2faa990219574ff20b8f573= dbb7ca76137d9 100644 --- a/drivers/firmware/arm_ffa/bus.c +++ b/drivers/firmware/arm_ffa/bus.c @@ -192,7 +192,6 @@ ffa_device_register(const struct ffa_partition_info *pa= rt_info, const struct ffa_ops *ops) { int id, ret; - uuid_t uuid; struct device *dev; struct ffa_device *ffa_dev; =20 @@ -218,8 +217,7 @@ ffa_device_register(const struct ffa_partition_info *pa= rt_info, ffa_dev->vm_id =3D part_info->id; ffa_dev->properties =3D part_info->properties; ffa_dev->ops =3D ops; - import_uuid(&uuid, (u8 *)part_info->uuid); - uuid_copy(&ffa_dev->uuid, &uuid); + uuid_copy(&ffa_dev->uuid, &part_info->uuid); =20 ret =3D device_register(&ffa_dev->dev); if (ret) { diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index 74169dd0f65948b05991732358855cdc31b54adb..abd0208f0f74c15ef4ee4c81de8= 1eb7800a0eb1d 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -238,7 +238,7 @@ struct ffa_partition_info { /* partition runs in the AArch64 execution state. */ #define FFA_PARTITION_AARCH64_EXEC BIT(8) u32 properties; - u32 uuid[4]; + uuid_t uuid; }; =20 static inline --=20 2.34.1 From nobody Sun Feb 8 03:26:55 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6CE9D1C460A for ; Tue, 24 Dec 2024 14:01:18 +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=1735048880; cv=none; b=dRnP6n2lGWtZr5fvykl4R96OinODp9ZPpxlQlGlfGEXgel2i4fdR2fBP4U+7RnVeypkL/f09LDgwOC57TDd6M5J5Awd8w3cWlRGzbuKwPAy4oil9v+niflAglal2QpbymtrNQGVdeQC5FqCe8TCf7yD0tTQb8G80WilwepUUqY8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048880; c=relaxed/simple; bh=llehAUqDTyE8tsnbqX0XKeEGbtFXiSKUAGLSD+1hoi8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To; b=YHnN+jAlK4ViXQXAVDzwK9FNdOACwcSHjX70Opw164IPd7/eawdFry7MGQjwh9TitFLZN0pNarfQr9jfW6kVVypf2JQKjvXKL+tmW6Ziz8vetagO/V4rj5nPVHQxtY+Ccih5ic+ydA4PWr2oFDsR7hrBCioGA/M4SMA51NiXqro= 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 A10B01FC7; Tue, 24 Dec 2024 06:01:40 -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 03A8C3F59E; Tue, 24 Dec 2024 06:01:11 -0800 (PST) From: Sudeep Holla Date: Tue, 24 Dec 2024 13:57:50 +0000 Subject: [PATCH 3/5] firmware: arm_ffa: Align sync_send_receive{,2} function prototypes 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-3-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=1948; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=llehAUqDTyE8tsnbqX0XKeEGbtFXiSKUAGLSD+1hoi8=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnar6lKJfdHam6FeVWG42YUMpXeCsFSzOJsUilN hH0jV9Mu2qJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ2q+pQAKCRAAQbq8MX7i mN82EADVvfvkYjVUKuiZ//EelRKjidbK7CzDOqavttrf0Ekezz4zeL6HxKSsNoyHDEghl3PU3/p c6QPtsp8pB0p9V8xQ++5xVLPdQx+N36ymHJbDuPa277xTgr34efa7KFbZQnRPg72xPBj2fCruvt rAGi0u+E6KRQ/7mFvNLcb6ZSs1O6mDP6dYo4fKtahXrR8wzqLz6bHPgQOCB9Hfw4quZQFgkg5on E35cdOTk5wCO0NR4ZIF2sr7VqREvYkajyXKbf3faEV0nyCJbOBZZ2u+KsvZMAAuQCsnHNXvtf3H w1WNjbiBnK8Q/TbZ91ceXE5P/2GulanKGN4SK6OY2Na9GPckTAax9TsTwLG/QZ/sTcwpw7/rYYr Fm84nspk5FMtW/ZZzhzlyUYtTePnAH8NS5wpIvsxok+KxXHhwud6POD6ZAi7sXHp/49JZJvMf2+ VAKxDFtHMTdOqnpJmJySFt17dXLm8N1xhBZlPrwga9BWMy+l1+kT643yLeS7l2jr5gfb2t8D9F0 3Cm+JEU+xPS4axMeY5B8nZt5i0N986t7PO8AwTP9Ni8XsCg0bELi6MWi4HHKlRbJmkS0W1yvTm5 +6/JWa2ABoVG+M8yUPp4GkETmMUV1B9GDRoJBQlWZr7lbqcLwEYHJSw88Oqjjabk4hytGDTddEK ScRstBTdD0ExdOQ== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 Currently ffa_sync_send_receive2() takes UUID as a separate parameter instead of using the one available in ffa_device structure. Change the prototype of ffa_sync_send_receive2() to align with the ffa_sync_send_receive() and use ffa_device->uuid. Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/driver.c | 4 ++-- include/linux/arm_ffa.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/d= river.c index 2c2ec3c35f15612168cdf0ef94022e00c08677b5..037e0d684994fd30971f40bf139= 367d1e45c1bf0 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -1018,14 +1018,14 @@ static int ffa_indirect_msg_send(struct ffa_device = *dev, void *buf, size_t sz) return ffa_msg_send2(drv_info->vm_id, dev->vm_id, buf, sz); } =20 -static int ffa_sync_send_receive2(struct ffa_device *dev, const uuid_t *uu= id, +static int ffa_sync_send_receive2(struct ffa_device *dev, struct ffa_send_direct_data2 *data) { if (!drv_info->msg_direct_req2_supp) return -EOPNOTSUPP; =20 return ffa_msg_send_direct_req2(drv_info->vm_id, dev->vm_id, - uuid, data); + &dev->uuid, data); } =20 static int ffa_memory_share(struct ffa_mem_ops_args *args) diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index abd0208f0f74c15ef4ee4c81de81eb7800a0eb1d..e8b8ae8b192ab11d5550c16fd33= fa9d192b07f67 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -439,7 +439,7 @@ struct ffa_msg_ops { int (*sync_send_receive)(struct ffa_device *dev, struct ffa_send_direct_data *data); int (*indirect_send)(struct ffa_device *dev, void *buf, size_t sz); - int (*sync_send_receive2)(struct ffa_device *dev, const uuid_t *uuid, + int (*sync_send_receive2)(struct ffa_device *dev, struct ffa_send_direct_data2 *data); }; =20 --=20 2.34.1 From nobody Sun Feb 8 03:26:55 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 From nobody Sun Feb 8 03:26:55 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6CF541C5491 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=mYPGSD7BdyjGgfbLz0FHggVq4vPWTUvgWGe8x+EZg/inUgH/6SP1OyJ/scOOaQdYr3b738O/Cuw0ytNNhjTi1l1G377BzgYWVgiH5AfSLM3YrXVzZ4H0vBDaW2x6mLDPh9OAGsSZaHhqGgtGN7+W1UlM93UNUT3iEiU1l8qYkUg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735048881; c=relaxed/simple; bh=8PoYp80YnxCA99g/OmQlLeeIzCDfYeP4snzLnAUmwtk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To; b=qdWbKbw0/55i41zET1eO7Mrj9hFrNnTrT0jKpUyh9P85/XuLSMblmFJYA308ibLkzyVCWfKcmrwdkPIKW5rK1rnMR894WDhmbPhHyCwFdhc3UtxCldsXrdOhtOyOMNhcFeCtO6tZ+ViWpCQrnTHTXSwDRx4/YSZIX6QAuj5Q0u4= 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 24EFC2008; Tue, 24 Dec 2024 06:01:42 -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 7B7BD3F59E; Tue, 24 Dec 2024 06:01:13 -0800 (PST) From: Sudeep Holla Date: Tue, 24 Dec 2024 13:57:52 +0000 Subject: [PATCH 5/5] firmware: arm_ffa: Fix big-endian support in __ffa_partition_info_regs_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-5-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=2970; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=8PoYp80YnxCA99g/OmQlLeeIzCDfYeP4snzLnAUmwtk=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnar6l3XRlKjtMg6uDxIl9RjBWqDRyRmdd59/2N VyB7K8D/euJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ2q+pQAKCRAAQbq8MX7i mPFgD/46xOZxqIMfUkH+doPiOY3d1l16m+uMBdkipigRAb+Bs5e/OtOOgIZRaOoSDCNAgafxbra RkMNC5yvHwcCAjbOoJBOOuR95ck23XsI04/3lyhmAS8k832ljSonVzCxnS7VS5pawBGEhF5Q5FV uerkw6AXZ33/ritIJYvTLw8uk/lYrfIGm9tiuPK+dkcnsZMGbqsoAP+9Tyff1Rfs+s2dK6nsDhl A0runS0ku2xgx/Wsrxp3a3//oWzDakf6kc/qg4jhl5z4A2gc6OE0v0edL2r8052wY7bpM3cUci4 8EQIcg7epD6OsxjwnHdp07IkEGvB6dVDQRFpXLqkRGpo9VrD3CGGQDKzpSFCfiVWsxRzJoD3G4+ 5Q0w9kyfJdZmn041DUSTOwBDqfKwWzL1XP3tx3mbQP8FzDHYjHaopmNesDu09nfEeMVA5uGXMCV uBWkMAD2uec9ebJ5J/ihCtSQJiRJ/OgqS2LKfAEy+eXs6wRRq7Sr8ShS9wRC32XWlc59HfspZmI GkdCv/doWRHFfKSO6YLANEvuMQ7jZtPUbS9zfJ2JqH9s42yzZTlhBrUsqehpd/PLcuoVHZlLZxB zNBUUeGSAtkkb5jB803AEmA5twMzBEPSyU/ioptpPUOEv04bjUzXhofvaXL1uEbX21+OGrwQQlf VuoaGPZTUFvMHNg== 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_regs_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 if the FFA_PARTITION_INFO_REGS_GET is supported. Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/driver.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/d= river.c index bc6ffd25ad2e2fea0fe3610cf896718dbed8f0ad..87e106c728b89f3ce7c11219cf7= cad9cc166dda2 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -307,14 +307,24 @@ __ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uu= id2, u32 uuid3, #define CURRENT_INDEX(x) ((u16)(FIELD_GET(CURRENT_INDEX_MASK, (x)))) #define UUID_INFO_TAG(x) ((u16)(FIELD_GET(UUID_INFO_TAG_MASK, (x)))) #define PARTITION_INFO_SZ(x) ((u16)(FIELD_GET(PARTITION_INFO_SZ_MASK, (x))= )) +#define PART_INFO_ID_MASK GENMASK(15, 0) +#define PART_INFO_EXEC_CXT_MASK GENMASK(31, 16) +#define PART_INFO_PROPS_MASK GENMASK(63, 32) +#define PART_INFO_ID(x) ((u16)(FIELD_GET(PART_INFO_ID_MASK, (x)))) +#define PART_INFO_EXEC_CXT(x) ((u16)(FIELD_GET(PART_INFO_EXEC_CXT_MASK, (x= )))) +#define PART_INFO_PROPERTIES(x) ((u32)(FIELD_GET(PART_INFO_PROPS_MASK, (x)= ))) static int __ffa_partition_info_get_regs(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3, struct ffa_partition_info *buffer, int num_parts) { u16 buf_sz, start_idx, cur_idx, count =3D 0, prev_idx =3D 0, tag =3D 0; + struct ffa_partition_info *buf =3D buffer; ffa_value_t partition_info; =20 do { + __le64 *regs; + int idx; + start_idx =3D prev_idx ? prev_idx + 1 : 0; =20 invoke_ffa_fn((ffa_value_t){ @@ -338,8 +348,25 @@ __ffa_partition_info_get_regs(u32 uuid0, u32 uuid1, u3= 2 uuid2, u32 uuid3, if (buf_sz > sizeof(*buffer)) buf_sz =3D sizeof(*buffer); =20 - memcpy(buffer + prev_idx * buf_sz, &partition_info.a3, - (cur_idx - start_idx + 1) * buf_sz); + regs =3D (void *)&partition_info.a3; + for (idx =3D 0; idx < cur_idx - start_idx + 1; idx++, buf++) { + union { + uuid_t uuid; + u64 regs[2]; + } uuid_regs =3D { + .regs =3D { + le64_to_cpu(*(regs + 1)), + le64_to_cpu(*(regs + 2)), + } + }; + u64 val =3D *(u64 *)regs; + + buf->id =3D PART_INFO_ID(val); + buf->exec_ctxt =3D PART_INFO_EXEC_CXT(val); + buf->properties =3D PART_INFO_PROPERTIES(val); + uuid_copy(&buf->uuid, &uuid_regs.uuid); + regs +=3D 3; + } prev_idx =3D cur_idx; =20 } while (cur_idx < (count - 1)); --=20 2.34.1