Commit 58df195c authored by Maxim Uvarov's avatar Maxim Uvarov Committed by Jens Wiklander
Browse files

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: default avatarMaxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: default avatarSumit Garg <sumit.garg@linaro.org>
Reviewed-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Tested-by: default avatarSumit Garg <sumit.garg@linaro.org>
Signed-off-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
parent 3d77e6a8
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
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.
+1 −0
Original line number Diff line number Diff line
@@ -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
+6 −3
Original line number Diff line number Diff line
@@ -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;
	}