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>, Marc Bonnici <marc.bonnici@arm.com>, Jens Wiklander <jens.wiklander@linaro.org>, Coboy Chen <coboy.chen@mediatek.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, Olivier Deprez <olivier.deprez@arm.com> Subject: [PATCH v4 13/17] firmware: arm_ffa: Simplify the computation of transmit and fragment length Date: Thu, 05 Oct 2023 15:45:06 +0100 [thread overview] Message-ID: <20231005-ffa_v1-1_notif-v4-13-cddd3237809c@arm.com> (raw) In-Reply-To: <20231005-ffa_v1-1_notif-v4-0-cddd3237809c@arm.com> The computation of endpoint memory access descriptor's composite memory region descriptor offset is using COMPOSITE_CONSTITUENTS_OFFSET which is unnecessary complicated. Composite memory region descriptor always follow the endpoint memory access descriptor array and hence it is computed accordingly. COMPOSITE_CONSTITUENTS_OFFSET is useless and wrong for any input other than endpoint memory access descriptor count. Let us drop the usage of COMPOSITE_CONSTITUENTS_OFFSET to simplify the computation of total transmit and fragment length in the memory transactions. Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- drivers/firmware/arm_ffa/driver.c | 14 ++++++++------ include/linux/arm_ffa.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index 9dd5335001ee..45ad704734a2 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -442,23 +442,25 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize, { int rc = 0; bool first = true; + u32 composite_offset; phys_addr_t addr = 0; + struct ffa_mem_region *mem_region = buffer; struct ffa_composite_mem_region *composite; struct ffa_mem_region_addr_range *constituents; struct ffa_mem_region_attributes *ep_mem_access; - struct ffa_mem_region *mem_region = buffer; u32 idx, frag_len, length, buf_sz = 0, num_entries = sg_nents(args->sg); mem_region->tag = args->tag; mem_region->flags = args->flags; mem_region->sender_id = drv_info->vm_id; mem_region->attributes = ffa_memory_attributes_get(func_id); - ep_mem_access = &mem_region->ep_mem_access[0]; + ep_mem_access = buffer + COMPOSITE_OFFSET(0); + composite_offset = COMPOSITE_OFFSET(args->nattrs); for (idx = 0; idx < args->nattrs; idx++, ep_mem_access++) { ep_mem_access->receiver = args->attrs[idx].receiver; ep_mem_access->attrs = args->attrs[idx].attrs; - ep_mem_access->composite_off = COMPOSITE_OFFSET(args->nattrs); + ep_mem_access->composite_off = composite_offset; ep_mem_access->flag = 0; ep_mem_access->reserved = 0; } @@ -467,13 +469,13 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize, mem_region->reserved_1 = 0; mem_region->ep_count = args->nattrs; - composite = buffer + COMPOSITE_OFFSET(args->nattrs); + composite = buffer + composite_offset; composite->total_pg_cnt = ffa_get_num_pages_sg(args->sg); composite->addr_range_cnt = num_entries; composite->reserved = 0; - length = COMPOSITE_CONSTITUENTS_OFFSET(args->nattrs, num_entries); - frag_len = COMPOSITE_CONSTITUENTS_OFFSET(args->nattrs, 0); + length = composite_offset + CONSTITUENTS_OFFSET(num_entries); + frag_len = composite_offset + CONSTITUENTS_OFFSET(0); if (frag_len > max_fragsize) return -ENXIO; diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index f6df81f14b6d..748d0a83a4bc 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -356,8 +356,6 @@ struct ffa_mem_region { (offsetof(struct ffa_mem_region, ep_mem_access[x])) #define CONSTITUENTS_OFFSET(x) \ (offsetof(struct ffa_composite_mem_region, constituents[x])) -#define COMPOSITE_CONSTITUENTS_OFFSET(x, y) \ - (COMPOSITE_OFFSET(x) + CONSTITUENTS_OFFSET(y)) struct ffa_mem_ops_args { bool use_txbuf; -- 2.42.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
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>, Marc Bonnici <marc.bonnici@arm.com>, Jens Wiklander <jens.wiklander@linaro.org>, Coboy Chen <coboy.chen@mediatek.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, Olivier Deprez <olivier.deprez@arm.com> Subject: [PATCH v4 13/17] firmware: arm_ffa: Simplify the computation of transmit and fragment length Date: Thu, 05 Oct 2023 15:45:06 +0100 [thread overview] Message-ID: <20231005-ffa_v1-1_notif-v4-13-cddd3237809c@arm.com> (raw) In-Reply-To: <20231005-ffa_v1-1_notif-v4-0-cddd3237809c@arm.com> The computation of endpoint memory access descriptor's composite memory region descriptor offset is using COMPOSITE_CONSTITUENTS_OFFSET which is unnecessary complicated. Composite memory region descriptor always follow the endpoint memory access descriptor array and hence it is computed accordingly. COMPOSITE_CONSTITUENTS_OFFSET is useless and wrong for any input other than endpoint memory access descriptor count. Let us drop the usage of COMPOSITE_CONSTITUENTS_OFFSET to simplify the computation of total transmit and fragment length in the memory transactions. Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- drivers/firmware/arm_ffa/driver.c | 14 ++++++++------ include/linux/arm_ffa.h | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index 9dd5335001ee..45ad704734a2 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -442,23 +442,25 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize, { int rc = 0; bool first = true; + u32 composite_offset; phys_addr_t addr = 0; + struct ffa_mem_region *mem_region = buffer; struct ffa_composite_mem_region *composite; struct ffa_mem_region_addr_range *constituents; struct ffa_mem_region_attributes *ep_mem_access; - struct ffa_mem_region *mem_region = buffer; u32 idx, frag_len, length, buf_sz = 0, num_entries = sg_nents(args->sg); mem_region->tag = args->tag; mem_region->flags = args->flags; mem_region->sender_id = drv_info->vm_id; mem_region->attributes = ffa_memory_attributes_get(func_id); - ep_mem_access = &mem_region->ep_mem_access[0]; + ep_mem_access = buffer + COMPOSITE_OFFSET(0); + composite_offset = COMPOSITE_OFFSET(args->nattrs); for (idx = 0; idx < args->nattrs; idx++, ep_mem_access++) { ep_mem_access->receiver = args->attrs[idx].receiver; ep_mem_access->attrs = args->attrs[idx].attrs; - ep_mem_access->composite_off = COMPOSITE_OFFSET(args->nattrs); + ep_mem_access->composite_off = composite_offset; ep_mem_access->flag = 0; ep_mem_access->reserved = 0; } @@ -467,13 +469,13 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize, mem_region->reserved_1 = 0; mem_region->ep_count = args->nattrs; - composite = buffer + COMPOSITE_OFFSET(args->nattrs); + composite = buffer + composite_offset; composite->total_pg_cnt = ffa_get_num_pages_sg(args->sg); composite->addr_range_cnt = num_entries; composite->reserved = 0; - length = COMPOSITE_CONSTITUENTS_OFFSET(args->nattrs, num_entries); - frag_len = COMPOSITE_CONSTITUENTS_OFFSET(args->nattrs, 0); + length = composite_offset + CONSTITUENTS_OFFSET(num_entries); + frag_len = composite_offset + CONSTITUENTS_OFFSET(0); if (frag_len > max_fragsize) return -ENXIO; diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index f6df81f14b6d..748d0a83a4bc 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -356,8 +356,6 @@ struct ffa_mem_region { (offsetof(struct ffa_mem_region, ep_mem_access[x])) #define CONSTITUENTS_OFFSET(x) \ (offsetof(struct ffa_composite_mem_region, constituents[x])) -#define COMPOSITE_CONSTITUENTS_OFFSET(x, y) \ - (COMPOSITE_OFFSET(x) + CONSTITUENTS_OFFSET(y)) struct ffa_mem_ops_args { bool use_txbuf; -- 2.42.0
next prev parent reply other threads:[~2023-10-05 14:46 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-05 14:44 [PATCH v4 00/17] firmware: arm_ffa: Add FF-A v1.1 support(notification + new memory descriptor format) Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 01/17] firmware: arm_ffa: Update the FF-A command list with v1.1 additions Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 02/17] firmware: arm_ffa: Implement notification bitmap create and destroy interfaces Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 03/17] firmware: arm_ffa: Implement the notification bind and unbind interface Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 04/17] firmware: arm_ffa: Implement the FFA_RUN interface Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 05/17] firmware: arm_ffa: Implement the FFA_NOTIFICATION_SET interface Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:44 ` [PATCH v4 06/17] firmware: arm_ffa: Implement the FFA_NOTIFICATION_GET interface Sudeep Holla 2023-10-05 14:44 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 07/17] firmware: arm_ffa: Implement the NOTIFICATION_INFO_GET interface Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 08/17] firmware: arm_ffa: Initial support for scheduler receiver interrupt Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 09/17] firmware: arm_ffa: Add schedule receiver callback mechanism Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 10/17] firmware: arm_ffa: Add interfaces to request notification callbacks Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 11/17] firmware: arm_ffa: Add interface to send a notification to a given partition Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 12/17] firmware: arm_ffa: Add notification handling mechanism Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla [this message] 2023-10-05 14:45 ` [PATCH v4 13/17] firmware: arm_ffa: Simplify the computation of transmit and fragment length Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 14/17] KVM: arm64: FFA: Remove access of endpoint memory access descriptor array Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-06 15:25 ` Sudeep Holla 2023-10-06 15:25 ` Sudeep Holla 2023-10-06 18:25 ` Marc Zyngier 2023-10-06 18:25 ` Marc Zyngier 2023-10-05 14:45 ` [PATCH v4 15/17] firmware: arm_ffa: Switch to using ffa_mem_desc_offset() accessor Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 16/17] firmware: arm_ffa: Update memory descriptor to support v1.1 format Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-05 14:45 ` [PATCH v4 17/17] firmware: arm_ffa: Upgrade the driver version to v1.1 Sudeep Holla 2023-10-05 14:45 ` Sudeep Holla 2023-10-09 11:49 ` [PATCH v4 00/17] firmware: arm_ffa: Add FF-A v1.1 support(notification + new memory descriptor format) Sudeep Holla 2023-10-09 11:49 ` 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=20231005-ffa_v1-1_notif-v4-13-cddd3237809c@arm.com \ --to=sudeep.holla@arm.com \ --cc=coboy.chen@mediatek.com \ --cc=jens.wiklander@linaro.org \ --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: linkBe 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.