[PATCH v4 00/17] firmware: arm_ffa: Add FF-A v1.1 support(notification + new memory descriptor format)

From: Sudeep Holla
Date: Thu Oct 05 2023 - 11:19:51 EST


The series adds initial support for the notifications and memory transaction
descriptor changes added in FF-A v1.1 specification.

The notification mechanism enables a requester/sender endpoint to notify
a service provider/receiver endpoint about an event with non-blocking
semantics.

A notification is akin to the doorbell between two endpoints in a
communication protocol that is based upon the doorbell/mailbox mechanism.

The framework is responsible for the delivery of the notification from the
sender to the receiver without blocking the sender. The receiver endpoint
relies on the OS scheduler for allocation of CPU cycles to handle a
notification.

OS is referred as the receiver’s scheduler in the context of notifications.
The framework is responsible for informing the receiver’s scheduler that
the receiver must be run since it has a pending notification.

The series also includes support for the new format of memory transaction
descriptors.

Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx>
---
Changes in v4:
- Dropped the check for FFA_FN64_SUCCESS in ffa_mem_first_frag()
- Handle the absence of support for notifications in the firmware
- Fix couple of issues in the cleanup paths if the notification setup fails
- Handle both FFA_{FN64,}_SUCCESS in FFA_NOTIFICATION_INFO_GET
- Changed to use ffa version instead of boolean to switch between old and
new memory descriptor formats in ffa_mem_desc_offset()
- Link to v3: https://lore.kernel.org/r/20230929-ffa_v1-1_notif-v3-0-c8e4f15190c8@xxxxxxx

Changes in v3:
- Fixed ffa_mem_desc_offset() to not use possibly unpopulated structure members
- Fixed the parameter of handle_notif_callbacks(), must be notification type
instead of the partition ID.
- Fetch only secure partitions and SPM framework bitmaps until we add support
to this driver run in other than NS physical instance.
- Swapped back PACK_TARGET_INFO() arguments which I swapped in v2 with some
confusion during the review.
- Link to v2: https://lore.kernel.org/r/20230919-ffa_v1-1_notif-v2-0-6f3a3ca3923c@xxxxxxx

Changes in v2:
- Added a fix for MEMORY LEND operation
- Upgraded the driver version
- Added support for the new format of memory transaction descriptors
- Remove unnecessary partition ID information in the notification
callbacks
- Fixed setting up drv_info->sched_recv_irq before enabling the SGIs
- Added missing resetting of bitmap_created in notifications_cleanup()
- Added some comments about GICv3 and SGI assumption
- Removed partition ID from the notification hash table entries as
they are redundant/incorrect. Added the notification type instead
(SP/VM/Framework)
- Link to v1: https://lore.kernel.org/all/20230803-ffa_v1-1_notif-v1-0-6613ff2b1f81@xxxxxxx/

---
Sudeep Holla (17):
firmware: arm_ffa: Update the FF-A command list with v1.1 additions
firmware: arm_ffa: Implement notification bitmap create and destroy interfaces
firmware: arm_ffa: Implement the notification bind and unbind interface
firmware: arm_ffa: Implement the FFA_RUN interface
firmware: arm_ffa: Implement the FFA_NOTIFICATION_SET interface
firmware: arm_ffa: Implement the FFA_NOTIFICATION_GET interface
firmware: arm_ffa: Implement the NOTIFICATION_INFO_GET interface
firmware: arm_ffa: Initial support for scheduler receiver interrupt
firmware: arm_ffa: Add schedule receiver callback mechanism
firmware: arm_ffa: Add interfaces to request notification callbacks
firmware: arm_ffa: Add interface to send a notification to a given partition
firmware: arm_ffa: Add notification handling mechanism
firmware: arm_ffa: Simplify the computation of transmit and fragment length
KVM: arm64: FFA: Remove access of endpoint memory access descriptor array
firmware: arm_ffa: Switch to using ffa_mem_desc_offset() accessor
firmware: arm_ffa: Update memory descriptor to support v1.1 format
firmware: arm_ffa: Upgrade the driver version to v1.1

arch/arm64/kvm/hyp/nvhe/ffa.c | 10 +-
drivers/firmware/arm_ffa/driver.c | 758 +++++++++++++++++++++++++++++++++++++-
include/linux/arm_ffa.h | 78 +++-
3 files changed, 822 insertions(+), 24 deletions(-)
---
base-commit: d82dd2a5be45b20129d7f4a3f6df1681e0537a16
change-id: 20230803-ffa_v1-1_notif-e11bc9459962

Best regards,
--
Regards,
Sudeep