Currently we have zes_uuid_t as part of zes_device_ext_properties_t, however, with zesInit approach, Sysman is disengaged from Core and is free to enumerate devices independently of Core. Therefore there could be discrepancies in device hierarchy model exposed by Core vs Sysman.
Sysman is also free to enumerate "handles" for each Sysman module independently. i.e, if there are handles to be exposed for root device and subdevices, then Sysman could expose multiple handles and set onSubdevice and subdeviceId members in the respective property structures (example: zes_freq_properties_t)
Now, if there is discrepancy between Core device hierarchy and Sysman then only way for user to correlate the handles is via device/sub-device uuid.
So we need a new mechanism to expose such info to user. Some thoughts:
Add new extension struct per Sysman module that is attached to pNext of those modules just to expose uuid info
Add new API entrypoint. something like zesDeviceGetUuid(ze_device_handle_t hDevice, bool onSubdevice, uint32_t subDeviceId, ze_uuid_t uuid); . uuid is out arg, while all other are input
new API possibly to Get sub-device handles via Sysman
Currently we have zes_uuid_t as part of zes_device_ext_properties_t, however, with
zesInit
approach, Sysman is disengaged from Core and is free to enumerate devices independently of Core. Therefore there could be discrepancies in device hierarchy model exposed by Core vs Sysman.Sysman is also free to enumerate "handles" for each Sysman module independently. i.e, if there are handles to be exposed for root device and subdevices, then Sysman could expose multiple handles and set
onSubdevice
andsubdeviceId
members in the respective property structures (example: zes_freq_properties_t)Now, if there is discrepancy between Core device hierarchy and Sysman then only way for user to correlate the handles is via device/sub-device uuid.
So we need a new mechanism to expose such info to user. Some thoughts:
zesDeviceGetUuid(ze_device_handle_t hDevice, bool onSubdevice, uint32_t subDeviceId, ze_uuid_t uuid);
. uuid is out arg, while all other are input