From patchwork Wed Apr 19 09:54:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 13216581 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DEAD7C77B7E for ; Wed, 19 Apr 2023 09:55:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OOaUBnfM8NYkVjzxYJYSoqWh7fNQSmIdEv57A4KPm4g=; b=FAacAOoMkovlZk P05SNaRiuqRs94l+jhUHN+BY2LxNzOZcpUbOGVN7KqPrijGgOoXaGV9Db6KFQTIwYEs/h5nHpO83c Fjq6TzKQ16Qw0Njrv28wKwpaRXG1k8VhgQZ8gA80qQoOiYIVQTW44s6/8xt1mv0u8xcM7o+5emuTF o8EoMTGSgKbxnHjuMaxO8au0wWZXmrxWNUt+z4DgHa+8qXZgT33oWoUuVdERbbn0wSdRfexElllWF KRwdLJmvZWS/W9E/tSKoQ6qZ4ep2kseCOSw7dgGhASmx5/dte5xra4OpjTq1/fh9SrTOA0YMybH9x j38wZJrNGeV1vGpYU3cg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4WZ-004opw-2E; Wed, 19 Apr 2023 09:54:51 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4WP-004olG-0v for linux-arm-kernel@lists.infradead.org; Wed, 19 Apr 2023 09:54:44 +0000 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 2B046106F; Wed, 19 Apr 2023 02:55:22 -0700 (PDT) Received: from e103737-lin.cambridge.arm.com (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B70483F6C4; Wed, 19 Apr 2023 02:54:37 -0700 (PDT) From: Sudeep Holla Date: Wed, 19 Apr 2023 10:54:15 +0100 Subject: [PATCH 1/3] firmware: arm_ffa: Check if ffa_driver remove is present before executing MIME-Version: 1.0 Message-Id: <20230419-ffa_fixes_6-4-v1-1-1881ee6699f1@arm.com> References: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> In-Reply-To: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: Sudeep Holla , Lucian Paul-Trifu , Marc Bonnici , Jens Wiklander X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2280; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=qYbYM/pIaMZFKMylpLoSG/+dQuTtfE41funwQ886cMU=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBkP7pcQ9EMZQLiCPkINedKxNVYr/ccBgg+BipN6 dGfZJUGPSyJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZD+6XAAKCRAAQbq8MX7i mOyPD/9BCrAD+C7N2Bef24CehHvyfzonqzSaOAKtBH3FotQ//kWWhANMSupzS+wpjrb1VN1UE86 mvUWohB1UGR+e73MF+L1U4NILhB78eBCghArsjc9Sdw+jKOc10xhPVBDI/VoGmWrtbux1zr4EWw YgXHzCz/Hma6cnv8ZoAMjzNEchtEshOhF4a/4IjC/1UmifGJgzODtBxmxaFCnCLaYz+0sQatcxc oyUuhEV04Fl/qctxjOOmikI83PfCpIhSlfDnpi+nS5r4okHUUU3rxK2etmfxeEpA4g2lwtkUJ42 UiKtjXFVMwWhuIR44PtQPDp51QHVnqcuqs83FBCSLaoCLgVh/Ma/IIjITLZQGrgsw9EpJSaF/dN Yl8Y7ibkLORfTsQz6NWBEORwD4Ne11f10IF5mLvpwobcu1lJhig6plJuT09dxjtbxkes77fywVN BAFPJWUvP7uR/DxcFVUAkGyqWcHxfYLkc337put2pnihWxnM7nYM3ESbkbi+1CIfPpDgEGEXN2z yoAqjoeDBjaxDnKVH3GFdgK/FAvMHedvB+Zbszq99TPPYrtozQiasqLu2mPrcv2HnCT1X74X9Md pbyFDaxeGc5gnQfDLjQXmELAaMtSZmMZ6ceyiu88G1wqjy/tYwevcioJUnewDtzvKrzd/O7YJ/Z C4SIaQvwo+LNoMA== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_025441_427778_D97CC982 X-CRM114-Status: GOOD ( 11.85 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Currently ffa_drv->remove() is called unconditionally from ffa_device_remove(). Since the driver registration doesn't check for it and allows it to be registered without .remove callback, we need to check for the presence of it before executing it from ffa_device_remove() to above a NULL pointer dereference like the one below: | Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 | Mem abort info: | ESR = 0x0000000086000004 | EC = 0x21: IABT (current EL), IL = 32 bits | SET = 0, FnV = 0 | EA = 0, S1PTW = 0 | FSC = 0x04: level 0 translation fault | user pgtable: 4k pages, 48-bit VAs, pgdp=0000000881cc8000 | [0000000000000000] pgd=0000000000000000, p4d=0000000000000000 | Internal error: Oops: 0000000086000004 [#1] PREEMPT SMP | CPU: 3 PID: 130 Comm: rmmod Not tainted 6.3.0-rc7 #6 | Hardware name: FVP Base RevC (DT) | pstate: 63402809 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=-c) | pc : 0x0 | lr : ffa_device_remove+0x20/0x2c | Call trace: | 0x0 | device_release_driver_internal+0x16c/0x260 | driver_detach+0x90/0xd0 | bus_remove_driver+0xdc/0x11c | driver_unregister+0x30/0x54 | ffa_driver_unregister+0x14/0x20 | cleanup_module+0x18/0xeec | __arm64_sys_delete_module+0x234/0x378 | invoke_syscall+0x40/0x108 | el0_svc_common+0xb4/0xf0 | do_el0_svc+0x30/0xa4 | el0_svc+0x2c/0x7c | el0t_64_sync_handler+0x84/0xf0 | el0t_64_sync+0x190/0x194 Fixes: 244f5d597e1e ("firmware: arm_ffa: Add missing remove callback to ffa_bus_type") Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/bus.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm_ffa/bus.c index f29d77ecf72d..36bd5423c2f0 100644 --- a/drivers/firmware/arm_ffa/bus.c +++ b/drivers/firmware/arm_ffa/bus.c @@ -53,7 +53,8 @@ static void ffa_device_remove(struct device *dev) { struct ffa_driver *ffa_drv = to_ffa_driver(dev->driver); - ffa_drv->remove(to_ffa_dev(dev)); + if (ffa_drv->remove) + ffa_drv->remove(to_ffa_dev(dev)); } static int ffa_device_uevent(const struct device *dev, struct kobj_uevent_env *env) From patchwork Wed Apr 19 09:54:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 13216580 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EA54BC77B75 for ; Wed, 19 Apr 2023 09:55:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+ai4f3AoTEisK92AP5zmid4zUsGmm8s4F9VKqTKgjgs=; b=Gzq7sn1UoEpAg1 p+gGqHldPAG3QIlu6buW667OUgf0uAuDHR9bOcZP7/sLdHGbiDP+0uzv67XVb173S5294+FlRgu3Y E8xvjHnMwT1ueQSVVnlAkvqItvNMQMLPbLTpApjM41/E54QZIWsCXn6BPjERwSs+rDw3simVfZWIH mOvlyqIqg/I+HAzfvkifGIKCaFC9r8Xfj2nTflNQ0uIs5d1AIvK0gZiVBdsGKqFS6xjbBfGqygz1q qMHbkWATCs96249/0lxyalI6AnLinKCa6eSuh0XATWtRC66vX3UNYoHoW+94ZcJ5pPNAJ34nWXjwL flRJ87VaDOk7m2nqdGYg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4WT-004oo2-0t; Wed, 19 Apr 2023 09:54:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4WP-004olW-0v for linux-arm-kernel@lists.infradead.org; Wed, 19 Apr 2023 09:54:43 +0000 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 0B7C3143D; Wed, 19 Apr 2023 02:55:23 -0700 (PDT) Received: from e103737-lin.cambridge.arm.com (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 97EB03F6C4; Wed, 19 Apr 2023 02:54:38 -0700 (PDT) From: Sudeep Holla Date: Wed, 19 Apr 2023 10:54:16 +0100 Subject: [PATCH 2/3] firmware: arm_ffa: Fix usage of partition info get count flag MIME-Version: 1.0 Message-Id: <20230419-ffa_fixes_6-4-v1-2-1881ee6699f1@arm.com> References: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> In-Reply-To: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: Sudeep Holla , Lucian Paul-Trifu , Marc Bonnici , Jens Wiklander X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1612; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=BaJovvcDEbV5T8nCmponiQDcrQxcR/jv5bohyne1Yf4=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBkP7pcF3b2DXbPL9zqRVk6gyeWGcEGpvRXnKaQw 14Ty4zBgJ6JAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZD+6XAAKCRAAQbq8MX7i mGGEEACmYiJ25BKbrIr6NJoLsjlX/3mVViYtT1GtE8YTtqE16vMl4yAMuU53pNDzdjMRVhIM+/Z QJnM6iHaVT++60mGuLOZhJ6ZhL7w3peAAS0J66lIe+XGTFcgZ+l/A4SoSuKtM9inalo4GbFAYTt 5SVzaNqWlj2BEGv6z8vm1ZFwT8Skof2FUGn9jjgXUJD7GJfwbqp4WECYp2o21PXDo8H2hYaSYuA poFt3wkFa6e70UaofmQF9rrN9Qf5ehXrRtMAsnMmFS0wIBtge3RcQnPmBu6nc52D7tj6lO81zkz NM9yCboMGNwUfD0Ikgz++ILhD9TnxtTsYHbBhXMqcM6Qrrsbgwg9yEqKyarAZcaP4t3i+JXxur9 4C+bVzGTn270LlRvVE1YzFoguW06jgjNSCFQgo+p1vYmvK+sRYfszqYt3jtcRjHCYBTMKlnnWEE fuJ1foO1WJGQWrd/09VEWdTSGx72stxzpykZZ6HVP4OC4sABuIFmrr2O/dKen+uxfG7cgJv9KLb v2KBn/Atm1nM9iDWToYWUbd38RhhCSPOt6S+YQurG0J9O+uQSfk8dSOt48lFLhGQTej3CMDxI/D MLAJcc4kWKZsrRb3ZVi22CVJXNJKINdhzrzRc/IGFO15s9gvr897S2KvzwnQTDJ3nSmkbWDX2E5 hvyx+sI6qhb8W1A== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_025441_367710_ED65E91A X-CRM114-Status: GOOD ( 12.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Commit bb1be7498500 ("firmware: arm_ffa: Add v1.1 get_partition_info support") adds support to discovery the UUIDs of the partitions or just fetch the partition count using the PARTITION_INFO_GET_RETURN_COUNT_ONLY flag. However the commit doesn't handle the fact that the older version doesn't understand the flag and must be MBZ which results in firmware returning invalid parameter error. That results in the failure of the driver probe which is in correct. Limit the usage of the PARTITION_INFO_GET_RETURN_COUNT_ONLY flag for the versions above v1.0(i.e v1.1 and onwards) which fixes the issue. Fixes: bb1be7498500 ("firmware: arm_ffa: Add v1.1 get_partition_info support") Reported-by: Jens Wiklander Reported-by: Marc Bonnici Signed-off-by: Sudeep Holla Tested-by: Jens Wiklander Reviewed-by: Jens Wiklander --- drivers/firmware/arm_ffa/driver.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index fa85c64d3ded..4aced2e5b772 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -193,7 +193,8 @@ __ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3, int idx, count, flags = 0, sz, buf_sz; ffa_value_t partition_info; - if (!buffer || !num_partitions) /* Just get the count for now */ + if (drv_info->version > FFA_VERSION_1_0 && + (!buffer || !num_partitions)) /* Just get the count for now */ flags = PARTITION_INFO_GET_RETURN_COUNT_ONLY; mutex_lock(&drv_info->rx_lock); From patchwork Wed Apr 19 09:54:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 13216583 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C1FF9C77B73 for ; Wed, 19 Apr 2023 09:55:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9mHsXLpYfpSJtnJvl0ALINAyNyEnvDetA+0nlcFeoXg=; b=K3TBRMDRdl/j67 tv+970DabFysQn8q7YN4/wvBNFsS3sJrYYEJKiFX6ZyWm1+MverGaX6ra7rmaOPOn5mxgmYEHZuNZ CCmUtswu/2o+96k5bZsHKHQyVXd/Kny9cxSi1o8eklKLWLY5RluZIPlXe8/RmvxOHSqBQTwVtr5fY c5YuxD0kD80ophdR6Y8lJxIfpX2DxAOuhwH7iREJ43H4U9JX/B5MrbkB31aNa7I9OaF7XpVmoh/Cg ytndB2FVel1jyBHbATBUTHsKz2rul+Bc9a9xrIwrUxlib5LCbLK5ZVH5kREOSg4PCy6Zj+oPYJPqc JsSnczWGEHc6gjmbqlUg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4Wa-004oqO-2Y; Wed, 19 Apr 2023 09:54:52 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp4WQ-004ome-01 for linux-arm-kernel@lists.infradead.org; Wed, 19 Apr 2023 09:54:44 +0000 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 E02A51474; Wed, 19 Apr 2023 02:55:23 -0700 (PDT) Received: from e103737-lin.cambridge.arm.com (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 787B33F6C4; Wed, 19 Apr 2023 02:54:39 -0700 (PDT) From: Sudeep Holla Date: Wed, 19 Apr 2023 10:54:17 +0100 Subject: [PATCH 3/3] firmware: arm_ffa: Fix FFA device names for logical partitions MIME-Version: 1.0 Message-Id: <20230419-ffa_fixes_6-4-v1-3-1881ee6699f1@arm.com> References: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> In-Reply-To: <20230419-ffa_fixes_6-4-v1-0-1881ee6699f1@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: Sudeep Holla , Lucian Paul-Trifu , Marc Bonnici , Jens Wiklander X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3167; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=q+ZsHcEj3a9mgTBm8wOZNEEwEuY+kpvdYtGnfZi1SBs=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBkP7pcjnSaeiKuWhRlxVBKvP/EKbcpP4yUNfUV5 8yMnZC2SUOJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZD+6XAAKCRAAQbq8MX7i mHcgD/9/phHv0/fdbyKWKmbQlkGaYu2lcfEClnZGxw2ZJaMKUnSJuMkzSK/nMZW0CFpQl5n7ynQ XWuqM3DM56j29k7bjlvwF9T6BBzSOB27sGBIswLhcS4gZfOAY2Os27/k9vgADCE/xcgn38t+VXR 7Pj/n99Po5VXJvFspwJzIBjaTDfY4R/uMv4YkE7wdE1wPHHe8XafC93GXXykVH2aPYsxDnejSSn /K47e8VUlBqFzXKm/gDLU0sYmMFi7TiC+C3qzfOvdQJx7tWgQ9YvrOtQI3PWTkCqaGKTIj9Yi1x NnWHa98bAwoDmWiB0fkODnkXGwYtmrUniVZgve9UFhw3dYHavhXWfNCP9CmG+apWwL6dDFQ3s/i ojlsK+/LoLeOSQEZSc6k+lETnwzc81OKQugiFFDKgoOTlfepcQMTUjn5vJc3MmGMiGiwMsy3Mg+ SGtzZXs4wYAUFRqM+YRv0sL3om+h34xTdauBQf1eh9nHy2b6jMjRs4tFLdoQLtZR5RMFVNDWy2B Lmtyuj+WiJN9WfrBGqTY4+dose1b1+Nj5qRwyBHKNeIipgcIivxNRQ+uOt/0fxeof16UpGUCqJ1 LHxJl2VM8oSTgr8P7sz3C2mIP4PSNoLpEkdfJcIwDqSQ3jfsO81uW+mDx0L+i+C0lh4h2Bzbfyl HpNUbAnpAmJxL2g== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_025442_136785_5191A186 X-CRM114-Status: GOOD ( 17.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Each physical partition can provide multiple services each with UUID. Each such service can be presented as logical partition with a unique combination of VM ID and UUID. The number of distinct UUID in a system will be less than or equal to the number of logical partitions. However, currently it fails to register more than one logical partition or service within a physical partition as the device name contains only VM ID while both VM ID and UUID are maintained in the partition information. The kernel complains with the below message: | sysfs: cannot create duplicate filename '/devices/arm-ffa-8001' | CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.3.0-rc7 #8 | Hardware name: FVP Base RevC (DT) | Call trace: | dump_backtrace+0xf8/0x118 | show_stack+0x18/0x24 | dump_stack_lvl+0x50/0x68 | dump_stack+0x18/0x24 | sysfs_create_dir_ns+0xe0/0x13c | kobject_add_internal+0x220/0x3d4 | kobject_add+0x94/0x100 | device_add+0x144/0x5d8 | device_register+0x20/0x30 | ffa_device_register+0x88/0xd8 | ffa_setup_partitions+0x108/0x1b8 | ffa_init+0x2ec/0x3a4 | do_one_initcall+0xcc/0x240 | do_initcall_level+0x8c/0xac | do_initcalls+0x54/0x94 | do_basic_setup+0x1c/0x28 | kernel_init_freeable+0x100/0x16c | kernel_init+0x20/0x1a0 | ret_from_fork+0x10/0x20 | kobject_add_internal failed for arm-ffa-8001 with -EEXIST, don't try to | register things with the same name in the same directory. | arm_ffa arm-ffa: unable to register device arm-ffa-8001 err=-17 | ARM FF-A: ffa_setup_partitions: failed to register partition ID 0x8001 By virtue of being random enough to avoid collisions when generated in a distributed system, there is no way to compress UUID keys to the number of bits required to identify each. We can eliminate '-' in the name but it is not worth eliminating 4 bytes and add unnecessary logic for doing that. Also v1.0 doesn't provide the UUID of the partitions which makes it hard to use the same for the device name. So to keep it simple, let us just append the index to the list of the partitions obtained in response to FFA_PARTITION_INFO_GET to "arm-ffa" to make up a unique device name. Fixes: e781858488b9 ("firmware: arm_ffa: Add initial FFA bus support for device enumeration") Reported-by: Lucian Paul-Trifu Signed-off-by: Sudeep Holla --- drivers/firmware/arm_ffa/driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index 4aced2e5b772..39b912bbd7db 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -678,7 +678,7 @@ static void ffa_setup_partitions(void) * provides UUID here for each partition as part of the * discovery API and the same is passed. */ - ffa_dev = ffa_device_register(&uuid, tpbuf->id, &ffa_drv_ops); + ffa_dev = ffa_device_register(&uuid, idx, &ffa_drv_ops); if (!ffa_dev) { pr_err("%s: failed to register partition ID 0x%x\n", __func__, tpbuf->id);