Partition info may return self partition as well (specially with newer versions of FFA spec), skip adding it twice.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- Rebased over: 9967e35eb1cbdb8d0c0bae3f54401d806700e6b6.1732255888.git.viresh.kumar@linaro.org
drivers/firmware/arm_ffa/driver.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index 34d9a54b6a77..b824c7c024fd 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -1424,6 +1424,9 @@ static int ffa_setup_partitions(void)
xa_init(&drv_info->partition_info); for (idx = 0, tpbuf = pbuf; idx < count; idx++, tpbuf++) { + if (drv_info->vm_id == tpbuf->id) + continue; + /* Note that if the UUID will be uuid_null, that will require * ffa_bus_notifier() to find the UUID of this partition id * with help of ffa_device_match_uuid(). FF-A v1.1 and above
A partition can implement multiple UUIDs and adding the same partition twice will fail. Don't try to add a partition again, if it is already added earlier.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- drivers/firmware/arm_ffa/driver.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c index b824c7c024fd..6de941821319 100644 --- a/drivers/firmware/arm_ffa/driver.c +++ b/drivers/firmware/arm_ffa/driver.c @@ -1389,6 +1389,10 @@ static int ffa_add_partition_info(int vm_id) struct ffa_dev_part_info *info; int ret;
+ /* Already added ? */ + if (xa_load(&drv_info->partition_info, vm_id)) + return 0; + info = kzalloc(sizeof(*info), GFP_KERNEL); if (!info) return -ENOMEM;