Skip to content

Commit 396fcbb

Browse files
Move FabricPort implementation to L0 Spec version 1.0.
Change-Id: I7b123c2813beab1175965eb8272c96cdb7f7be27 Signed-off-by: Bill Jordan <[email protected]>
1 parent bf7b00d commit 396fcbb

File tree

16 files changed

+520
-50
lines changed

16 files changed

+520
-50
lines changed

level_zero/api/tools/zet_sysman.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ zesDeviceEnumFabricPorts(
813813
zes_device_handle_t hDevice,
814814
uint32_t *pCount,
815815
zes_fabric_port_handle_t *phPort) {
816-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
816+
return L0::SysmanDevice::fromHandle(hDevice)->fabricPortGet(pCount, phPort);
817817
}
818818

819819
__zedllexport ze_result_t __zecall
@@ -828,7 +828,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
828828
zesFabricPortGetProperties(
829829
zes_fabric_port_handle_t hPort,
830830
zes_fabric_port_properties_t *pProperties) {
831-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
831+
return L0::FabricPort::fromHandle(hPort)->fabricPortGetProperties(pProperties);
832832
}
833833

834834
__zedllexport ze_result_t __zecall
@@ -842,7 +842,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
842842
zesFabricPortGetLinkType(
843843
zes_fabric_port_handle_t hPort,
844844
zes_fabric_link_type_t *pLinkType) {
845-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
845+
return L0::FabricPort::fromHandle(hPort)->fabricPortGetLinkType(pLinkType);
846846
}
847847

848848
__zedllexport ze_result_t __zecall
@@ -857,7 +857,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
857857
zesFabricPortGetConfig(
858858
zes_fabric_port_handle_t hPort,
859859
zes_fabric_port_config_t *pConfig) {
860-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
860+
return L0::FabricPort::fromHandle(hPort)->fabricPortGetConfig(pConfig);
861861
}
862862

863863
__zedllexport ze_result_t __zecall
@@ -871,7 +871,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
871871
zesFabricPortSetConfig(
872872
zes_fabric_port_handle_t hPort,
873873
const zes_fabric_port_config_t *pConfig) {
874-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
874+
return L0::FabricPort::fromHandle(hPort)->fabricPortSetConfig(pConfig);
875875
}
876876

877877
__zedllexport ze_result_t __zecall
@@ -885,7 +885,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
885885
zesFabricPortGetState(
886886
zes_fabric_port_handle_t hPort,
887887
zes_fabric_port_state_t *pState) {
888-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
888+
return L0::FabricPort::fromHandle(hPort)->fabricPortGetState(pState);
889889
}
890890

891891
__zedllexport ze_result_t __zecall
@@ -899,7 +899,7 @@ ZE_APIEXPORT ze_result_t ZE_APICALL
899899
zesFabricPortGetThroughput(
900900
zes_fabric_port_handle_t hPort,
901901
zes_fabric_port_throughput_t *pThroughput) {
902-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
902+
return L0::FabricPort::fromHandle(hPort)->fabricPortGetThroughput(pThroughput);
903903
}
904904

905905
__zedllexport ze_result_t __zecall

level_zero/tools/source/sysman/fabric_port/fabric_port.cpp

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,23 @@
1313

1414
namespace L0 {
1515

16+
FabricPortHandleContext::FabricPortHandleContext(OsSysman *pOsSysman) {
17+
pFabricDevice = new FabricDeviceImp(pOsSysman);
18+
UNRECOVERABLE_IF(nullptr == pFabricDevice);
19+
}
20+
1621
FabricPortHandleContext::~FabricPortHandleContext() {
17-
if (nullptr != pFabricDevice) {
18-
for (FabricPort *pFabricPort : handleList) {
19-
delete pFabricPort;
20-
}
21-
handleList.clear();
22-
delete pFabricDevice;
23-
pFabricDevice = nullptr;
22+
UNRECOVERABLE_IF(nullptr == pFabricDevice);
23+
for (FabricPort *pFabricPort : handleList) {
24+
delete pFabricPort;
2425
}
26+
handleList.clear();
27+
delete pFabricDevice;
28+
pFabricDevice = nullptr;
2529
}
2630

2731
ze_result_t FabricPortHandleContext::init() {
28-
pFabricDevice = new FabricDeviceImp(pOsSysman);
2932
UNRECOVERABLE_IF(nullptr == pFabricDevice);
30-
3133
uint32_t numPorts = pFabricDevice->getNumPorts();
3234

3335
for (uint32_t portNum = 0; portNum < numPorts; portNum++) {
@@ -38,18 +40,35 @@ ze_result_t FabricPortHandleContext::init() {
3840
return ZE_RESULT_SUCCESS;
3941
}
4042

43+
ze_result_t FabricPortHandleContext::fabricPortGet(uint32_t *pCount, zes_fabric_port_handle_t *phPort) {
44+
if (0 == *pCount || handleList.size() < *pCount) {
45+
*pCount = static_cast<uint32_t>(handleList.size());
46+
}
47+
if (nullptr != phPort) {
48+
uint32_t i = 0;
49+
for (FabricPort *pFabricPort : handleList) {
50+
if (i >= *pCount) {
51+
break;
52+
}
53+
phPort[i++] = pFabricPort->toZesHandle();
54+
}
55+
}
56+
return ZE_RESULT_SUCCESS;
57+
}
58+
4159
ze_result_t FabricPortHandleContext::fabricPortGet(uint32_t *pCount, zet_sysman_fabric_port_handle_t *phPort) {
42-
if (nullptr == phPort) {
60+
if (0 == *pCount || handleList.size() < *pCount) {
4361
*pCount = static_cast<uint32_t>(handleList.size());
44-
return ZE_RESULT_SUCCESS;
4562
}
46-
uint32_t i = 0;
47-
for (FabricPort *pFabricPort : handleList) {
48-
if (i >= *pCount)
49-
break;
50-
phPort[i++] = pFabricPort->toHandle();
63+
if (nullptr != phPort) {
64+
uint32_t i = 0;
65+
for (FabricPort *pFabricPort : handleList) {
66+
if (i >= *pCount) {
67+
break;
68+
}
69+
phPort[i++] = pFabricPort->toHandle();
70+
}
5171
}
52-
*pCount = i;
5372
return ZE_RESULT_SUCCESS;
5473
}
5574

level_zero/tools/source/sysman/fabric_port/fabric_port.h

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,20 @@
66
*/
77

88
#pragma once
9+
#include "shared/source/helpers/non_copyable_or_moveable.h"
10+
911
#include <level_zero/zet_api.h>
1012

13+
#include "third_party/level_zero/zes_api_ext.h"
14+
1115
#include <vector>
1216

13-
struct _zet_sysman_fabric_port_handle_t {};
17+
struct _zet_sysman_fabric_port_handle_t {
18+
virtual ~_zet_sysman_fabric_port_handle_t() = default;
19+
};
20+
struct _zes_fabric_port_handle_t {
21+
virtual ~_zes_fabric_port_handle_t() = default;
22+
};
1423

1524
namespace L0 {
1625

@@ -24,32 +33,45 @@ class FabricDevice {
2433
virtual uint32_t getNumPorts() = 0;
2534
};
2635

27-
class FabricPort : _zet_sysman_fabric_port_handle_t {
36+
class FabricPort : _zet_sysman_fabric_port_handle_t, _zes_fabric_port_handle_t {
2837
public:
2938
virtual ~FabricPort() = default;
39+
virtual ze_result_t fabricPortGetProperties(zes_fabric_port_properties_t *pProperties) = 0;
40+
virtual ze_result_t fabricPortGetLinkType(zes_fabric_link_type_t *pLinkType) = 0;
41+
virtual ze_result_t fabricPortGetConfig(zes_fabric_port_config_t *pConfig) = 0;
42+
virtual ze_result_t fabricPortSetConfig(const zes_fabric_port_config_t *pConfig) = 0;
43+
virtual ze_result_t fabricPortGetState(zes_fabric_port_state_t *pState) = 0;
44+
virtual ze_result_t fabricPortGetThroughput(zes_fabric_port_throughput_t *pThroughput) = 0;
45+
3046
virtual ze_result_t fabricPortGetProperties(zet_fabric_port_properties_t *pProperties) = 0;
3147
virtual ze_result_t fabricPortGetLinkType(ze_bool_t verbose, zet_fabric_link_type_t *pLinkType) = 0;
3248
virtual ze_result_t fabricPortGetConfig(zet_fabric_port_config_t *pConfig) = 0;
3349
virtual ze_result_t fabricPortSetConfig(const zet_fabric_port_config_t *pConfig) = 0;
3450
virtual ze_result_t fabricPortGetState(zet_fabric_port_state_t *pState) = 0;
3551
virtual ze_result_t fabricPortGetThroughput(zet_fabric_port_throughput_t *pThroughput) = 0;
3652

53+
inline zet_sysman_fabric_port_handle_t toHandle() { return this; }
54+
inline zes_fabric_port_handle_t toZesHandle() { return this; }
55+
3756
static FabricPort *fromHandle(zet_sysman_fabric_port_handle_t handle) {
3857
return static_cast<FabricPort *>(handle);
3958
}
40-
inline zet_sysman_fabric_port_handle_t toHandle() { return this; }
59+
60+
static FabricPort *fromHandle(zes_fabric_port_handle_t handle) {
61+
return static_cast<FabricPort *>(handle);
62+
}
4163
};
4264

43-
struct FabricPortHandleContext {
44-
FabricPortHandleContext(OsSysman *pOsSysman) : pOsSysman(pOsSysman){};
65+
struct FabricPortHandleContext : NEO::NonCopyableOrMovableClass {
66+
FabricPortHandleContext(OsSysman *pOsSysman);
4567
~FabricPortHandleContext();
4668

4769
ze_result_t init();
4870

71+
ze_result_t fabricPortGet(uint32_t *pCount, zes_fabric_port_handle_t *phPort);
4972
ze_result_t fabricPortGet(uint32_t *pCount, zet_sysman_fabric_port_handle_t *phPort);
5073

5174
FabricDevice *pFabricDevice = nullptr;
52-
OsSysman *pOsSysman = nullptr;
5375
std::vector<FabricPort *> handleList = {};
5476
};
5577

level_zero/tools/source/sysman/fabric_port/fabric_port_imp.cpp

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,45 @@ void fabricPortGetTimestamp(uint64_t &timestamp) {
3333
timestamp = std::chrono::duration_cast<std::chrono::microseconds>(ts.time_since_epoch()).count();
3434
}
3535

36+
ze_result_t FabricPortImp::fabricPortGetProperties(zes_fabric_port_properties_t *pProperties) {
37+
pOsFabricPort->getModel(pProperties->model);
38+
pProperties->onSubdevice = onSubdevice;
39+
pProperties->subdeviceId = subdeviceId;
40+
pOsFabricPort->getPortId(pProperties->portId);
41+
pOsFabricPort->getMaxRxSpeed(pProperties->maxRxSpeed);
42+
pOsFabricPort->getMaxTxSpeed(pProperties->maxTxSpeed);
43+
44+
return ZE_RESULT_SUCCESS;
45+
}
46+
47+
ze_result_t FabricPortImp::fabricPortGetLinkType(zes_fabric_link_type_t *pLinkType) {
48+
return pOsFabricPort->getLinkType(pLinkType);
49+
}
50+
51+
ze_result_t FabricPortImp::fabricPortGetConfig(zes_fabric_port_config_t *pConfig) {
52+
return pOsFabricPort->getConfig(pConfig);
53+
}
54+
55+
ze_result_t FabricPortImp::fabricPortSetConfig(const zes_fabric_port_config_t *pConfig) {
56+
return pOsFabricPort->setConfig(pConfig);
57+
}
58+
59+
ze_result_t FabricPortImp::fabricPortGetState(zes_fabric_port_state_t *pState) {
60+
return pOsFabricPort->getState(pState);
61+
}
62+
63+
ze_result_t FabricPortImp::fabricPortGetThroughput(zes_fabric_port_throughput_t *pThroughput) {
64+
fabricPortGetTimestamp(pThroughput->timestamp);
65+
return pOsFabricPort->getThroughput(pThroughput);
66+
}
67+
3668
ze_result_t FabricPortImp::fabricPortGetProperties(zet_fabric_port_properties_t *pProperties) {
37-
*pProperties = fabricPortProperties;
69+
pOsFabricPort->getModel(pProperties->model);
70+
pProperties->onSubdevice = onSubdevice;
71+
pProperties->subdeviceId = subdeviceId;
72+
pOsFabricPort->getPortUuid(pProperties->portUuid);
73+
pOsFabricPort->getMaxRxSpeed(pProperties->maxRxSpeed);
74+
pOsFabricPort->getMaxTxSpeed(pProperties->maxTxSpeed);
3875
return ZE_RESULT_SUCCESS;
3976
}
4077

@@ -56,17 +93,12 @@ ze_result_t FabricPortImp::fabricPortGetState(zet_fabric_port_state_t *pState) {
5693

5794
ze_result_t FabricPortImp::fabricPortGetThroughput(zet_fabric_port_throughput_t *pThroughput) {
5895
fabricPortGetTimestamp(pThroughput->timestamp);
59-
ze_result_t result = pOsFabricPort->getThroughput(pThroughput);
60-
return result;
96+
return pOsFabricPort->getThroughput(pThroughput);
6197
}
6298

6399
void FabricPortImp::init() {
64-
fabricPortProperties.onSubdevice = false;
65-
fabricPortProperties.subdeviceId = 0L;
66-
pOsFabricPort->getModel(fabricPortProperties.model);
67-
pOsFabricPort->getPortUuid(fabricPortProperties.portUuid);
68-
pOsFabricPort->getMaxRxSpeed(fabricPortProperties.maxRxSpeed);
69-
pOsFabricPort->getMaxTxSpeed(fabricPortProperties.maxTxSpeed);
100+
onSubdevice = false;
101+
subdeviceId = 0L;
70102
}
71103

72104
FabricPortImp::FabricPortImp(FabricDevice *pFabricDevice, uint32_t portNum) {

level_zero/tools/source/sysman/fabric_port/fabric_port_imp.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include "level_zero/tools/source/sysman/fabric_port/os_fabric_port.h"
1414
#include <level_zero/zet_api.h>
1515

16+
#include "third_party/level_zero/zes_api_ext.h"
17+
1618
namespace L0 {
1719

1820
class FabricDeviceImp : public FabricDevice, NEO::NonCopyableOrMovableClass {
@@ -29,6 +31,13 @@ class FabricDeviceImp : public FabricDevice, NEO::NonCopyableOrMovableClass {
2931

3032
class FabricPortImp : public FabricPort, NEO::NonCopyableOrMovableClass {
3133
public:
34+
ze_result_t fabricPortGetProperties(zes_fabric_port_properties_t *pProperties) override;
35+
ze_result_t fabricPortGetLinkType(zes_fabric_link_type_t *pLinkType) override;
36+
ze_result_t fabricPortGetConfig(zes_fabric_port_config_t *pConfig) override;
37+
ze_result_t fabricPortSetConfig(const zes_fabric_port_config_t *pConfig) override;
38+
ze_result_t fabricPortGetState(zes_fabric_port_state_t *pState) override;
39+
ze_result_t fabricPortGetThroughput(zes_fabric_port_throughput_t *pThroughput) override;
40+
3241
ze_result_t fabricPortGetProperties(zet_fabric_port_properties_t *pProperties) override;
3342
ze_result_t fabricPortGetLinkType(ze_bool_t verbose, zet_fabric_link_type_t *pLinkType) override;
3443
ze_result_t fabricPortGetConfig(zet_fabric_port_config_t *pConfig) override;
@@ -45,7 +54,8 @@ class FabricPortImp : public FabricPort, NEO::NonCopyableOrMovableClass {
4554
OsFabricPort *pOsFabricPort = nullptr;
4655

4756
private:
48-
zet_fabric_port_properties_t fabricPortProperties = {};
57+
bool onSubdevice = false;
58+
uint32_t subdeviceId = 0U;
4959
};
5060

5161
} // namespace L0

0 commit comments

Comments
 (0)