Hello Sumit,
On Mon, Dec 15, 2025 at 04:54:11PM +0900, Sumit Garg wrote:
On Thu, Dec 11, 2025 at 06:14:54PM +0100, Uwe Kleine-König wrote:
Hello,
the objective of this series is to make tee driver stop using callbacks in struct device_driver. These were superseded by bus methods in 2006 (commit 594c8281f905 ("[PATCH] Add bus_type probe, remove, shutdown methods.")) but nobody cared to convert all subsystems accordingly.
Here the tee drivers are converted. The first commit is somewhat unrelated, but simplifies the conversion (and the drivers). It introduces driver registration helpers that care about setting the bus and owner. (The latter is missing in all drivers, so by using these helpers the drivers become more correct.)
The patches #4 - #17 depend on the first two, so if they should be applied to their respective subsystem trees these must contain the first two patches first.
Thanks Uwe for your efforts to clean up the boilerplate code for TEE bus drivers.
Thanks for your feedback. I will prepare a v2 and address your comments (whitespace issues and wrong callback in the shutdown method).
Note that after patch #2 is applied, unconverted drivers provoke a warning in driver_register(), so it would be good for the user experience if the whole series goes in during a single merge window.
+1
I suggest the whole series goes via the Jens tree since there shouldn't be any chances for conflict here.
So I guess an immutable branch containing the frist three patches that can be merged into the other subsystem trees would be sensible.
After all patches are applied, tee_bus_type can be made private to drivers/tee as it's not used in other places any more.
Feel free to make the tee_bus_type private as the last patch in the series such that any followup driver follows this clean approach.
There is a bit more to do for that than I'm willing to invest. With my patch series applied `tee_bus_type` is still used in drivers/tee/optee/device.c and drivers/tee/tee_core.c. Maybe it's sensible to merge these two files into a single one.
The things I wonder about additionally are:
- if CONFIG_OPTEE=n and CONFIG_TEE=y|m the tee bus is only used for drivers but not devices.
- optee_register_device() calls device_create_file() on &optee_device->dev after device_register(&optee_device->dev). (Attention half-knowledge!) I think device_create_file() should not be called on an already registered device (or you have to send a uevent afterwards). This should probably use type attribute groups. (Or the need_supplicant attribute should be dropped as it isn't very useful. This would maybe be considered an ABI change however.)
- Why does optee_probe() in drivers/tee/optee/smc_abi.c unregister all optee devices in its error path (optee_unregister_devices())?
Best regards Uwe