diff options
author | Sudeep Holla <sudeep.holla@arm.com> | 2023-10-05 16:28:23 +0200 |
---|---|---|
committer | Sudeep Holla <sudeep.holla@arm.com> | 2023-10-06 16:32:41 +0200 |
commit | 2d698e8b4fd22374dac0a2d5150ab24d57a222ab (patch) | |
tree | 7a7f1e0b09e72741b111bbe79861118d2fc7c793 /drivers/firmware/arm_ffa/driver.c | |
parent | firmware: arm_ffa: Assign the missing IDR allocation ID to the FFA device (diff) | |
download | linux-2d698e8b4fd22374dac0a2d5150ab24d57a222ab.tar.xz linux-2d698e8b4fd22374dac0a2d5150ab24d57a222ab.zip |
firmware: arm_ffa: Allow the FF-A drivers to use 32bit mode of messaging
An FF-A ABI could support both the SMC32 and SMC64 conventions.
A callee that runs in the AArch64 execution state and implements such
an ABI must implement both SMC32 and SMC64 conventions of the ABI.
So the FF-A drivers will need the option to choose the mode irrespective
of FF-A version and the partition execution mode flag in the partition
information.
Let us remove the check on the FF-A version for allowing the selection
of 32bit mode of messaging. The driver will continue to set the 32-bit
mode if the partition execution mode flag specified that the partition
supports only 32-bit execution.
Fixes: 106b11b1ccd5 ("firmware: arm_ffa: Set up 32bit execution mode flag using partiion property")
Link: https://lore.kernel.org/r/20231005142823.278121-1-sudeep.holla@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'drivers/firmware/arm_ffa/driver.c')
-rw-r--r-- | drivers/firmware/arm_ffa/driver.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index 121f4fc903cd..7cd6b1564e80 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -587,17 +587,9 @@ static int ffa_partition_info_get(const char *uuid_str, return 0; } -static void _ffa_mode_32bit_set(struct ffa_device *dev) -{ - dev->mode_32bit = true; -} - static void ffa_mode_32bit_set(struct ffa_device *dev) { - if (drv_info->version > FFA_VERSION_1_0) - return; - - _ffa_mode_32bit_set(dev); + dev->mode_32bit = true; } static int ffa_sync_send_receive(struct ffa_device *dev, @@ -706,7 +698,7 @@ static void ffa_setup_partitions(void) if (drv_info->version > FFA_VERSION_1_0 && !(tpbuf->properties & FFA_PARTITION_AARCH64_EXEC)) - _ffa_mode_32bit_set(ffa_dev); + ffa_mode_32bit_set(ffa_dev); } kfree(pbuf); } |