optee: use uuid for sysfs driver entry
authorMaxim Uvarov <maxim.uvarov@linaro.org>
Thu, 18 Jun 2020 13:52:49 +0000 (16:52 +0300)
committerJens Wiklander <jens.wiklander@linaro.org>
Fri, 10 Jul 2020 07:41:48 +0000 (09:41 +0200)
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>
Documentation/ABI/testing/sysfs-bus-optee-devices [new file with mode: 0644]
MAINTAINERS
drivers/tee/optee/device.c

diff --git a/Documentation/ABI/testing/sysfs-bus-optee-devices b/Documentation/ABI/testing/sysfs-bus-optee-devices
new file mode 100644 (file)
index 0000000..0f58701
--- /dev/null
@@ -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.
index 50659d7..6bcd325 100644 (file)
@@ -12528,6 +12528,7 @@ OP-TEE DRIVER
 M:     Jens Wiklander <jens.wiklander@linaro.org>
 L:     tee-dev@lists.linaro.org
 S:     Maintained
+F:     Documentation/ABI/testing/sysfs-bus-optee-devices
 F:     drivers/tee/optee/
 
 OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
index e3a1485..e91b7db 100644 (file)
@@ -65,7 +65,7 @@ static int get_devices(struct tee_context *ctx, u32 session,
        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;
        int rc;
@@ -75,7 +75,10 @@ static int optee_register_device(const uuid_t *device_uuid, u32 device_id)
                return -ENOMEM;
 
        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);
 
        rc = device_register(&optee_device->dev);
@@ -144,7 +147,7 @@ int optee_enumerate_devices(void)
        num_devices = shm_size / sizeof(uuid_t);
 
        for (idx = 0; idx < num_devices; idx++) {
-               rc = optee_register_device(&device_uuid[idx], idx);
+               rc = optee_register_device(&device_uuid[idx]);
                if (rc)
                        goto out_shm;
        }