All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Sudeep Holla <sudeep.holla@arm.com>,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Marc Bonnici <marc.bonnici@arm.com>,
	Coboy Chen <coboy.chen@mediatek.com>,
	Lorenzo Pieralisi <lpieralisi@kernel.org>,
	Olivier Deprez <olivier.deprez@arm.com>
Cc: Joao Alves <joao.alves@arm.com>
Subject: [PATCH RFT v2 13/18] firmware: arm_ffa: Don't set the memory region attributes for MEM_LEND
Date: Tue, 19 Sep 2023 18:41:01 +0100	[thread overview]
Message-ID: <20230919-ffa_v1-1_notif-v2-13-6f3a3ca3923c@arm.com> (raw)
In-Reply-To: <20230919-ffa_v1-1_notif-v2-0-6f3a3ca3923c@arm.com>

As per the FF-A specification: section "Usage of other memory region
attributes", in a transaction to donate memory or lend memory to a single
borrower, if the receiver is a PE or Proxy endpoint, the owner must not
specify the attributes and the relayer will return INVALID_PARAMETERS
if the attributes are set.

Let us not set the memory region attributes for MEM_LEND.

Fixes: 82a8daaecfd9 ("firmware: arm_ffa: Add support for MEM_LEND")
Reported-by: Joao Alves <joao.alves@arm.com>
Reported-by: Olivier Deprez <olivier.deprez@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_ffa/driver.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index 8a5b5c274bb9..6312a7807d37 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -424,6 +424,19 @@ static u32 ffa_get_num_pages_sg(struct scatterlist *sg)
 	return num_pages;
 }
 
+static u8 ffa_memory_attributes_get(u32 func_id)
+{
+	/*
+	 * For the memory lend or donate operation, if the receiver is a PE or
+	 * a proxy endpoint, the owner/sender must not specify the attributes
+	 */
+	if (func_id == FFA_FN_NATIVE(MEM_LEND) ||
+	    func_id == FFA_MEM_LEND)
+		return 0;
+
+	return FFA_MEM_NORMAL | FFA_MEM_WRITE_BACK | FFA_MEM_INNER_SHAREABLE;
+}
+
 static int
 ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
 		       struct ffa_mem_ops_args *args)
@@ -440,8 +453,7 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
 	mem_region->tag = args->tag;
 	mem_region->flags = args->flags;
 	mem_region->sender_id = drv_info->vm_id;
-	mem_region->attributes = FFA_MEM_NORMAL | FFA_MEM_WRITE_BACK |
-				 FFA_MEM_INNER_SHAREABLE;
+	mem_region->attributes = ffa_memory_attributes_get(func_id);
 	ep_mem_access = &mem_region->ep_mem_access[0];
 
 	for (idx = 0; idx < args->nattrs; idx++, ep_mem_access++) {

-- 
2.42.0


WARNING: multiple messages have this Message-ID (diff)
From: Sudeep Holla <sudeep.holla@arm.com>
To: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	 Sudeep Holla <sudeep.holla@arm.com>,
	 Jens Wiklander <jens.wiklander@linaro.org>,
	 Marc Bonnici <marc.bonnici@arm.com>,
	Coboy Chen <coboy.chen@mediatek.com>,
	 Lorenzo Pieralisi <lpieralisi@kernel.org>,
	 Olivier Deprez <olivier.deprez@arm.com>
Cc: Joao Alves <joao.alves@arm.com>
Subject: [PATCH RFT v2 13/18] firmware: arm_ffa: Don't set the memory region attributes for MEM_LEND
Date: Tue, 19 Sep 2023 18:41:01 +0100	[thread overview]
Message-ID: <20230919-ffa_v1-1_notif-v2-13-6f3a3ca3923c@arm.com> (raw)
In-Reply-To: <20230919-ffa_v1-1_notif-v2-0-6f3a3ca3923c@arm.com>

As per the FF-A specification: section "Usage of other memory region
attributes", in a transaction to donate memory or lend memory to a single
borrower, if the receiver is a PE or Proxy endpoint, the owner must not
specify the attributes and the relayer will return INVALID_PARAMETERS
if the attributes are set.

Let us not set the memory region attributes for MEM_LEND.

Fixes: 82a8daaecfd9 ("firmware: arm_ffa: Add support for MEM_LEND")
Reported-by: Joao Alves <joao.alves@arm.com>
Reported-by: Olivier Deprez <olivier.deprez@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/firmware/arm_ffa/driver.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index 8a5b5c274bb9..6312a7807d37 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -424,6 +424,19 @@ static u32 ffa_get_num_pages_sg(struct scatterlist *sg)
 	return num_pages;
 }
 
+static u8 ffa_memory_attributes_get(u32 func_id)
+{
+	/*
+	 * For the memory lend or donate operation, if the receiver is a PE or
+	 * a proxy endpoint, the owner/sender must not specify the attributes
+	 */
+	if (func_id == FFA_FN_NATIVE(MEM_LEND) ||
+	    func_id == FFA_MEM_LEND)
+		return 0;
+
+	return FFA_MEM_NORMAL | FFA_MEM_WRITE_BACK | FFA_MEM_INNER_SHAREABLE;
+}
+
 static int
 ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
 		       struct ffa_mem_ops_args *args)
@@ -440,8 +453,7 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
 	mem_region->tag = args->tag;
 	mem_region->flags = args->flags;
 	mem_region->sender_id = drv_info->vm_id;
-	mem_region->attributes = FFA_MEM_NORMAL | FFA_MEM_WRITE_BACK |
-				 FFA_MEM_INNER_SHAREABLE;
+	mem_region->attributes = ffa_memory_attributes_get(func_id);
 	ep_mem_access = &mem_region->ep_mem_access[0];
 
 	for (idx = 0; idx < args->nattrs; idx++, ep_mem_access++) {

-- 
2.42.0


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

  parent reply	other threads:[~2023-09-19 17:42 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-19 17:40 [PATCH RFT v2 00/18] firmware: arm_ffa: Add FF-A v1.1 support(notification + new memory descriptor format) Sudeep Holla
2023-09-19 17:40 ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 01/18] firmware: arm_ffa: Update the FF-A command list with v1.1 additions Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 02/18] firmware: arm_ffa: Implement notification bitmap create and destroy interfaces Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 03/18] firmware: arm_ffa: Implement the notification bind and unbind interface Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 04/18] firmware: arm_ffa: Implement the FFA_RUN interface Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 05/18] firmware: arm_ffa: Implement the FFA_NOTIFICATION_SET interface Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 06/18] firmware: arm_ffa: Implement the FFA_NOTIFICATION_GET interface Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 07/18] firmware: arm_ffa: Implement the NOTIFICATION_INFO_GET interface Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 08/18] firmware: arm_ffa: Initial support for scheduler receiver interrupt Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 09/18] firmware: arm_ffa: Add schedule receiver callback mechanism Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 10/18] firmware: arm_ffa: Add interfaces to request notification callbacks Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:40 ` [PATCH RFT v2 11/18] firmware: arm_ffa: Add interface to send a notification to a given partition Sudeep Holla
2023-09-19 17:40   ` Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 12/18] firmware: arm_ffa: Add notification handling mechanism Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla
2023-09-19 17:41 ` Sudeep Holla [this message]
2023-09-19 17:41   ` [PATCH RFT v2 13/18] firmware: arm_ffa: Don't set the memory region attributes for MEM_LEND Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 14/18] firmware: arm_ffa: Simplify the computation of transmit and fragment length Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 15/18] KVM: arm64: FFA: Remove access of endpoint memory access descriptor array Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 16/18] firmware: arm_ffa: Switch to using ffa_mem_desc_offset() accessor Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 17/18] firmware: arm_ffa: Update memory descriptor to support v1.1 format Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla
2023-09-19 17:41 ` [PATCH RFT v2 18/18] firmware: arm_ffa: Upgrade the driver version to v1.1 Sudeep Holla
2023-09-19 17:41   ` Sudeep Holla

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=20230919-ffa_v1-1_notif-v2-13-6f3a3ca3923c@arm.com \
    --to=sudeep.holla@arm.com \
    --cc=coboy.chen@mediatek.com \
    --cc=jens.wiklander@linaro.org \
    --cc=joao.alves@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lpieralisi@kernel.org \
    --cc=marc.bonnici@arm.com \
    --cc=olivier.deprez@arm.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.