mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 14:32:23 +00:00
firmware: arm_ffa: Stash the partition properties for query purposes
The properies obtained from the partition information descriptor as part of initial partitions discovery is useful as it contain info if the partition - Runs in AArch64 or AArch32 execution state - Can send and/or receive direct requests - Can send and receive indirect message - Does support receipt of notifications. These can be used for querying before attempting to do any of the above operations. Link: https://lore.kernel.org/r/20240417090921.2866447-1-sudeep.holla@arm.com Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
0370fb127c
commit
3c258bf6bf
@ -1228,6 +1228,8 @@ static int ffa_setup_partitions(void)
|
||||
continue;
|
||||
}
|
||||
|
||||
ffa_dev->properties = tpbuf->properties;
|
||||
|
||||
if (drv_info->version > FFA_VERSION_1_0 &&
|
||||
!(tpbuf->properties & FFA_PARTITION_AARCH64_EXEC))
|
||||
ffa_mode_32bit_set(ffa_dev);
|
||||
|
@ -126,6 +126,7 @@
|
||||
/* FFA Bus/Device/Driver related */
|
||||
struct ffa_device {
|
||||
u32 id;
|
||||
u32 properties;
|
||||
int vm_id;
|
||||
bool mode_32bit;
|
||||
uuid_t uuid;
|
||||
@ -221,12 +222,29 @@ struct ffa_partition_info {
|
||||
#define FFA_PARTITION_DIRECT_SEND BIT(1)
|
||||
/* partition can send and receive indirect messages. */
|
||||
#define FFA_PARTITION_INDIRECT_MSG BIT(2)
|
||||
/* partition can receive notifications */
|
||||
#define FFA_PARTITION_NOTIFICATION_RECV BIT(3)
|
||||
/* partition runs in the AArch64 execution state. */
|
||||
#define FFA_PARTITION_AARCH64_EXEC BIT(8)
|
||||
u32 properties;
|
||||
u32 uuid[4];
|
||||
};
|
||||
|
||||
static inline
|
||||
bool ffa_partition_check_property(struct ffa_device *dev, u32 property)
|
||||
{
|
||||
return dev->properties & property;
|
||||
}
|
||||
|
||||
#define ffa_partition_supports_notify_recv(dev) \
|
||||
ffa_partition_check_property(dev, FFA_PARTITION_NOTIFICATION_RECV)
|
||||
|
||||
#define ffa_partition_supports_indirect_msg(dev) \
|
||||
ffa_partition_check_property(dev, FFA_PARTITION_INDIRECT_MSG)
|
||||
|
||||
#define ffa_partition_supports_direct_recv(dev) \
|
||||
ffa_partition_check_property(dev, FFA_PARTITION_DIRECT_RECV)
|
||||
|
||||
/* For use with FFA_MSG_SEND_DIRECT_{REQ,RESP} which pass data via registers */
|
||||
struct ffa_send_direct_data {
|
||||
unsigned long data0; /* w3/x3 */
|
||||
|
Loading…
Reference in New Issue
Block a user