linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND
@ 2021-10-15 16:57 Marc Bonnici
  2021-10-18  8:06 ` Jens Wiklander
  2021-10-22 17:20 ` Sudeep Holla
  0 siblings, 2 replies; 3+ messages in thread
From: Marc Bonnici @ 2021-10-15 16:57 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Achin Gupta, Jens Wiklander, Arunachalam Ganapathy, Marc Bonnici,
	Sudeep Holla, Coboy Chen, Lukas Hanel, Lionel Pacoud

As part of the FF-A spec, an endpoint is allowed to
transfer access of, or lend, a memory region to one
or more borrowers.

Extend the existing memory sharing implementation to
support FF-A MEM_LEND functionality and expose this
to other kernel drivers.

Note that upon a successful MEM_LEND request the caller
must ensure that the memory region specified is not accessed
until a successful MEM_RECALIM call has been made.
On systems with a hypervisor present this will been enforced,
however on systems without a hypervisor the responsibility
falls to the calling kernel driver to prevent access.

Signed-off-by: Marc Bonnici <marc.bonnici@arm.com>
---
 drivers/firmware/arm_ffa/driver.c | 17 +++++++++++++++++
 include/linux/arm_ffa.h           |  2 ++
 2 files changed, 19 insertions(+)

diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index 6e0c883ab708..12f4c87c4555 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -613,6 +613,22 @@ ffa_memory_share(struct ffa_device *dev, struct ffa_mem_ops_args *args)
 	return ffa_memory_ops(FFA_FN_NATIVE(MEM_SHARE), args);
 }
 
+static int
+ffa_memory_lend(struct ffa_device *dev, struct ffa_mem_ops_args *args)
+{
+	/* Note that upon a successful MEM_LEND request the caller
+	 * must ensure that the memory region specified is not accessed
+	 * until a successful MEM_RECALIM call has been made.
+	 * On systems with a hypervisor present this will been enforced,
+	 * 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);
+
+	return ffa_memory_ops(FFA_FN_NATIVE(MEM_LEND), args);
+}
+
 static const struct ffa_dev_ops ffa_ops = {
 	.api_version_get = ffa_api_version_get,
 	.partition_info_get = ffa_partition_info_get,
@@ -620,6 +636,7 @@ static const struct ffa_dev_ops ffa_ops = {
 	.sync_send_receive = ffa_sync_send_receive,
 	.memory_reclaim = ffa_memory_reclaim,
 	.memory_share = ffa_memory_share,
+	.memory_lend = ffa_memory_lend,
 };
 
 const struct ffa_dev_ops *ffa_dev_ops_get(struct ffa_device *dev)
diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h
index 505c679b6a9b..85651e41ded8 100644
--- a/include/linux/arm_ffa.h
+++ b/include/linux/arm_ffa.h
@@ -262,6 +262,8 @@ struct ffa_dev_ops {
 	int (*memory_reclaim)(u64 g_handle, u32 flags);
 	int (*memory_share)(struct ffa_device *dev,
 			    struct ffa_mem_ops_args *args);
+	int (*memory_lend)(struct ffa_device *dev,
+			   struct ffa_mem_ops_args *args);
 };
 
 #endif /* _LINUX_ARM_FFA_H */
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND
  2021-10-15 16:57 [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND Marc Bonnici
@ 2021-10-18  8:06 ` Jens Wiklander
  2021-10-22 17:20 ` Sudeep Holla
  1 sibling, 0 replies; 3+ messages in thread
From: Jens Wiklander @ 2021-10-18  8:06 UTC (permalink / raw)
  To: Marc Bonnici
  Cc: linux-arm-kernel, Achin Gupta, Arunachalam Ganapathy,
	Sudeep Holla, Coboy Chen, Lukas Hanel, Lionel Pacoud

On Fri, Oct 15, 2021 at 6:58 PM Marc Bonnici <marc.bonnici@arm.com> wrote:
>
> As part of the FF-A spec, an endpoint is allowed to
> transfer access of, or lend, a memory region to one
> or more borrowers.
>
> Extend the existing memory sharing implementation to
> support FF-A MEM_LEND functionality and expose this
> to other kernel drivers.
>
> Note that upon a successful MEM_LEND request the caller
> must ensure that the memory region specified is not accessed
> until a successful MEM_RECALIM call has been made.
> On systems with a hypervisor present this will been enforced,
> however on systems without a hypervisor the responsibility
> falls to the calling kernel driver to prevent access.
>
> Signed-off-by: Marc Bonnici <marc.bonnici@arm.com>
> ---
>  drivers/firmware/arm_ffa/driver.c | 17 +++++++++++++++++
>  include/linux/arm_ffa.h           |  2 ++
>  2 files changed, 19 insertions(+)

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND
  2021-10-15 16:57 [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND Marc Bonnici
  2021-10-18  8:06 ` Jens Wiklander
@ 2021-10-22 17:20 ` Sudeep Holla
  1 sibling, 0 replies; 3+ messages in thread
From: Sudeep Holla @ 2021-10-22 17:20 UTC (permalink / raw)
  To: linux-arm-kernel, Marc Bonnici
  Cc: Sudeep Holla, Lionel Pacoud, Sudeep Holla, Arunachalam Ganapathy,
	Coboy Chen, Jens Wiklander, Lukas Hanel, Achin Gupta

On Fri, 15 Oct 2021 17:57:42 +0100, Marc Bonnici wrote:
> As part of the FF-A spec, an endpoint is allowed to
> transfer access of, or lend, a memory region to one
> or more borrowers.
> 
> Extend the existing memory sharing implementation to
> support FF-A MEM_LEND functionality and expose this
> to other kernel drivers.
> 
> [...]


Applied to sudeep.holla/linux (for-next/ffa), thanks!




[1/1] firmware: arm_ffa: Add support for MEM_LEND
      https://git.kernel.org/sudeep.holla/c/82a8daaecf

--

Regards,
Sudeep


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-22 17:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-15 16:57 [PATCH v2] firmware: arm_ffa: Add support for MEM_LEND Marc Bonnici
2021-10-18  8:06 ` Jens Wiklander
2021-10-22 17:20 ` Sudeep Holla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).