mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-26 18:43:33 -05:00
optee: use uuid for sysfs driver entry
With the evolving use-cases for TEE bus, now it's required to support multi-stage enumeration process. But using a simple index doesn't suffice this requirement and instead leads to duplicate sysfs entries. So instead switch to use more informative device UUID for sysfs entry like: /sys/bus/tee/devices/optee-ta-<uuid> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: Sumit Garg <sumit.garg@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
This commit is contained in:
parent
3d77e6a880
commit
58df195cd4
3 changed files with 15 additions and 3 deletions
8
Documentation/ABI/testing/sysfs-bus-optee-devices
Normal file
8
Documentation/ABI/testing/sysfs-bus-optee-devices
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
What: /sys/bus/tee/devices/optee-ta-<uuid>/
|
||||||
|
Date: May 2020
|
||||||
|
KernelVersion 5.8
|
||||||
|
Contact: op-tee@lists.trustedfirmware.org
|
||||||
|
Description:
|
||||||
|
OP-TEE bus provides reference to registered drivers under this directory. The <uuid>
|
||||||
|
matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers
|
||||||
|
are free to create needed API under optee-ta-<uuid> directory.
|
|
@ -12528,6 +12528,7 @@ OP-TEE DRIVER
|
||||||
M: Jens Wiklander <jens.wiklander@linaro.org>
|
M: Jens Wiklander <jens.wiklander@linaro.org>
|
||||||
L: tee-dev@lists.linaro.org
|
L: tee-dev@lists.linaro.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/ABI/testing/sysfs-bus-optee-devices
|
||||||
F: drivers/tee/optee/
|
F: drivers/tee/optee/
|
||||||
|
|
||||||
OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
|
OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
|
||||||
|
|
|
@ -65,7 +65,7 @@ static int get_devices(struct tee_context *ctx, u32 session,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int optee_register_device(const uuid_t *device_uuid, u32 device_id)
|
static int optee_register_device(const uuid_t *device_uuid)
|
||||||
{
|
{
|
||||||
struct tee_client_device *optee_device = NULL;
|
struct tee_client_device *optee_device = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -75,7 +75,10 @@ static int optee_register_device(const uuid_t *device_uuid, u32 device_id)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
optee_device->dev.bus = &tee_bus_type;
|
optee_device->dev.bus = &tee_bus_type;
|
||||||
dev_set_name(&optee_device->dev, "optee-clnt%u", device_id);
|
if (dev_set_name(&optee_device->dev, "optee-ta-%pUb", device_uuid)) {
|
||||||
|
kfree(optee_device);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
uuid_copy(&optee_device->id.uuid, device_uuid);
|
uuid_copy(&optee_device->id.uuid, device_uuid);
|
||||||
|
|
||||||
rc = device_register(&optee_device->dev);
|
rc = device_register(&optee_device->dev);
|
||||||
|
@ -144,7 +147,7 @@ int optee_enumerate_devices(void)
|
||||||
num_devices = shm_size / sizeof(uuid_t);
|
num_devices = shm_size / sizeof(uuid_t);
|
||||||
|
|
||||||
for (idx = 0; idx < num_devices; idx++) {
|
for (idx = 0; idx < num_devices; idx++) {
|
||||||
rc = optee_register_device(&device_uuid[idx], idx);
|
rc = optee_register_device(&device_uuid[idx]);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto out_shm;
|
goto out_shm;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue