All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: linux-kernel@vger.kernel.org, op-tee@lists.trustedfirmware.org
Cc: Sudeep Holla <sudeep.holla@arm.com>,
	Marc Bonnici <marc.bonnici@arm.com>,
	Achin Gupta <achin.gupta@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Valentin Laurent <valentin.laurent@trustonic.com>,
	Lukas Hanel <lukas.hanel@trustonic.com>,
	Coboy Chen <coboy.chen@mediatek.com>
Subject: [PATCH 5/9] firmware: arm_ffa: Use FFA_FEATURES to detect if native versions are supported
Date: Tue, 30 Aug 2022 11:06:56 +0100	[thread overview]
Message-ID: <20220830100700.344594-6-sudeep.holla@arm.com> (raw)
In-Reply-To: <20220830100700.344594-1-sudeep.holla@arm.com>

Currently, the ffa_dev->mode_32bit is use to detect if the native 64-bit
or 32-bit versions of FF-A ABI needs to be used. However for the FF-A
memory ABIs, it is not dependent on the ffa_device(i.e. the partition)
itself, but the partition manager(SPM).

So, the FFA_FEATURES can be use to detect if the native 64bit ABIs are
supported or not and appropriate calls can be made based on that.

Use FFA_FEATURES to detect if native versions of MEM_LEND or MEM_SHARE
are implemented and make of the same to use native memory ABIs later on.

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_ffa/driver.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index de94073f4109..5f02b670e964 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -163,6 +163,7 @@ struct ffa_drv_info {
 	struct mutex tx_lock; /* lock to protect Tx buffer */
 	void *rx_buffer;
 	void *tx_buffer;
+	bool mem_ops_native;
 };
 
 static struct ffa_drv_info *drv_info;
@@ -594,6 +595,13 @@ static int ffa_features(u32 func_feat_id, u32 input_props, u32 *if_props)
 	return 0;
 }
 
+static void ffa_set_up_mem_ops_native_flag(void)
+{
+	if (!ffa_features(FFA_FN_NATIVE(MEM_LEND), 0, NULL) ||
+	    !ffa_features(FFA_FN_NATIVE(MEM_SHARE), 0, NULL))
+		drv_info->mem_ops_native = true;
+}
+
 static u32 ffa_api_version_get(void)
 {
 	return drv_info->version;
@@ -635,10 +643,10 @@ static int ffa_sync_send_receive(struct ffa_device *dev,
 static int
 ffa_memory_share(struct ffa_device *dev, struct ffa_mem_ops_args *args)
 {
-	if (dev->mode_32bit)
-		return ffa_memory_ops(FFA_MEM_SHARE, args);
+	if (drv_info->mem_ops_native)
+		return ffa_memory_ops(FFA_FN_NATIVE(MEM_SHARE), args);
 
-	return ffa_memory_ops(FFA_FN_NATIVE(MEM_SHARE), args);
+	return ffa_memory_ops(FFA_MEM_SHARE, args);
 }
 
 static int
@@ -651,10 +659,10 @@ ffa_memory_lend(struct ffa_device *dev, struct ffa_mem_ops_args *args)
 	 * however on systems without a hypervisor the responsibility
 	 * falls to the calling kernel driver to prevent access.
 	 */
-	if (dev->mode_32bit)
-		return ffa_memory_ops(FFA_MEM_LEND, args);
+	if (drv_info->mem_ops_native)
+		return ffa_memory_ops(FFA_FN_NATIVE(MEM_LEND), args);
 
-	return ffa_memory_ops(FFA_FN_NATIVE(MEM_LEND), args);
+	return ffa_memory_ops(FFA_MEM_LEND, args);
 }
 
 static const struct ffa_dev_ops ffa_ops = {
@@ -765,6 +773,8 @@ static int __init ffa_init(void)
 
 	ffa_setup_partitions();
 
+	ffa_set_up_mem_ops_native_flag();
+
 	return 0;
 free_pages:
 	if (drv_info->tx_buffer)
-- 
2.37.2


  parent reply	other threads:[~2022-08-30 10:12 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-30 10:06 [PATCH 0/9] firmware: arm_ffa: Refactoring and initial/minor v1.1 update Sudeep Holla
2022-08-30 10:06 ` [PATCH 1/9] firmware: arm_ffa: Add pointer to the ffa_dev_ops in struct ffa_dev Sudeep Holla
2022-09-01  7:42   ` Jens Wiklander
2022-08-30 10:06 ` [PATCH 2/9] tee: optee: Use ffa_dev->ops directly Sudeep Holla
2022-08-31  7:38   ` Sumit Garg
2022-09-01  7:21   ` Jens Wiklander
2022-08-30 10:06 ` [PATCH 3/9] firmware: arm_ffa: Remove ffa_dev_ops_get() Sudeep Holla
2022-09-01  7:39   ` Jens Wiklander
2022-08-30 10:06 ` [PATCH 4/9] firmware: arm_ffa: Add support for querying FF-A features Sudeep Holla
2022-09-01  7:56   ` Jens Wiklander
2022-09-01  9:04     ` Sudeep Holla
2022-09-01 11:32       ` Jens Wiklander
2022-08-30 10:06 ` Sudeep Holla [this message]
2022-09-01  8:18   ` [PATCH 5/9] firmware: arm_ffa: Use FFA_FEATURES to detect if native versions are supported Jens Wiklander
2022-08-30 10:06 ` [PATCH 6/9] firmware: arm_ffa: Make memory apis ffa_device independent Sudeep Holla
2022-08-31 10:46   ` Sumit Garg
2022-08-31 12:26     ` Sudeep Holla
2022-08-30 10:06 ` [PATCH 7/9] firmware: arm_ffa: Add v1.1 get_partition_info support Sudeep Holla
2022-09-01  8:43   ` Jens Wiklander
2022-09-01  8:57     ` Sudeep Holla
2022-09-01  9:37       ` Jens Wiklander
2022-08-30 10:06 ` [PATCH 8/9] tee: optee: Drop ffa_ops in optee_ffa structure Sudeep Holla
2022-08-31 10:58   ` Sumit Garg
2022-08-31 11:26     ` Sudeep Holla
2022-08-31 11:29       ` Sumit Garg
2022-09-01  7:26         ` Jens Wiklander
2022-08-30 10:07 ` [PATCH 9/9] firmware: arm_ffa: Split up ffa_dev_ops into info, message and memory operations Sudeep Holla
2022-09-01  8:49   ` Jens Wiklander

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220830100700.344594-6-sudeep.holla@arm.com \
    --to=sudeep.holla@arm.com \
    --cc=achin.gupta@arm.com \
    --cc=coboy.chen@mediatek.com \
    --cc=jens.wiklander@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas.hanel@trustonic.com \
    --cc=marc.bonnici@arm.com \
    --cc=op-tee@lists.trustedfirmware.org \
    --cc=valentin.laurent@trustonic.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.