mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-29 17:13:29 +08:00
feature(sysman): Use common KMD interface in Standby module
Related-To: NEO-8755 Signed-off-by: shubham kumar <shubham.kumar@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
c3ac7b78bd
commit
e470104d42
@@ -101,8 +101,8 @@ void LinuxStandbyImp::init() {
|
||||
|
||||
LinuxStandbyImp::LinuxStandbyImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId) : isSubdevice(onSubdevice), subdeviceId(subdeviceId) {
|
||||
LinuxSysmanImp *pLinuxSysmanImp = static_cast<LinuxSysmanImp *>(pOsSysman);
|
||||
pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess();
|
||||
pSysmanKmdInterface = pLinuxSysmanImp->getSysmanKmdInterface();
|
||||
pSysfsAccess = pSysmanKmdInterface->getSysFsAccess();
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,13 +10,14 @@
|
||||
|
||||
#include "level_zero/sysman/source/api/standby/sysman_os_standby.h"
|
||||
#include "level_zero/sysman/source/api/standby/sysman_standby_imp.h"
|
||||
#include "level_zero/sysman/source/shared/linux/sysman_fs_access.h"
|
||||
#include "level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h"
|
||||
#include "level_zero/sysman/source/shared/linux/zes_os_sysman_imp.h"
|
||||
|
||||
namespace L0 {
|
||||
namespace Sysman {
|
||||
|
||||
class SysmanKmdInterface;
|
||||
class SysFsAccessInterface;
|
||||
|
||||
class LinuxStandbyImp : public OsStandby, NEO::NonCopyableOrMovableClass {
|
||||
public:
|
||||
@@ -32,7 +33,7 @@ class LinuxStandbyImp : public OsStandby, NEO::NonCopyableOrMovableClass {
|
||||
|
||||
protected:
|
||||
SysmanKmdInterface *pSysmanKmdInterface = nullptr;
|
||||
SysfsAccess *pSysfsAccess = nullptr;
|
||||
SysFsAccessInterface *pSysfsAccess = nullptr;
|
||||
|
||||
private:
|
||||
std::string standbyModeFile;
|
||||
|
||||
@@ -19,7 +19,7 @@ const std::string standbyModeFile("gt/gt0/rc6_enable");
|
||||
const std::string standbyModeFile1("gt/gt1/rc6_enable");
|
||||
const std::string standbyModeFileLegacy("power/rc6_enable");
|
||||
|
||||
struct MockStandbySysfsAccess : public L0::Sysman::SysfsAccess {
|
||||
struct MockStandbySysfsAccessInterface : public L0::Sysman::SysFsAccessInterface {
|
||||
ze_result_t mockError = ZE_RESULT_SUCCESS;
|
||||
int mockStandbyMode = -1;
|
||||
bool isStandbyModeFileAvailable = true;
|
||||
@@ -88,8 +88,8 @@ struct MockStandbySysfsAccess : public L0::Sysman::SysfsAccess {
|
||||
mockError = error;
|
||||
}
|
||||
|
||||
MockStandbySysfsAccess() = default;
|
||||
~MockStandbySysfsAccess() override = default;
|
||||
MockStandbySysfsAccessInterface() = default;
|
||||
~MockStandbySysfsAccessInterface() override = default;
|
||||
|
||||
private:
|
||||
bool isFileAccessible(const std::string file) {
|
||||
@@ -107,6 +107,13 @@ class PublicLinuxStandbyImp : public L0::Sysman::LinuxStandbyImp {
|
||||
using L0::Sysman::LinuxStandbyImp::pSysmanKmdInterface;
|
||||
};
|
||||
|
||||
class PublicSysmanKmdInterfaceI915 : public L0::Sysman::SysmanKmdInterfaceI915 {
|
||||
public:
|
||||
PublicSysmanKmdInterfaceI915(const PRODUCT_FAMILY productFamily) : L0::Sysman::SysmanKmdInterfaceI915(productFamily) {}
|
||||
~PublicSysmanKmdInterfaceI915() override = default;
|
||||
using L0::Sysman::SysmanKmdInterface::pSysfsAccess;
|
||||
};
|
||||
|
||||
} // namespace ult
|
||||
} // namespace Sysman
|
||||
} // namespace L0
|
||||
|
||||
@@ -18,27 +18,39 @@ constexpr int standbyModeNever = 0;
|
||||
constexpr int standbyModeInvalid = 0xff;
|
||||
constexpr uint32_t mockHandleCount = 1u;
|
||||
uint32_t mockSubDeviceHandleCount = 0u;
|
||||
|
||||
class ZesStandbyFixture : public SysmanDeviceFixture {
|
||||
protected:
|
||||
L0::Sysman::SysmanDevice *device = nullptr;
|
||||
std::unique_ptr<MockStandbySysfsAccess> ptestSysfsAccess;
|
||||
uint32_t subDeviceCount;
|
||||
ze_bool_t onSubdevice;
|
||||
uint32_t subdeviceId = 0;
|
||||
};
|
||||
|
||||
class ZesStandbyFixtureI915 : public ZesStandbyFixture {
|
||||
protected:
|
||||
zes_standby_handle_t hSysmanStandby = {};
|
||||
L0::Sysman::SysfsAccess *pOriginalSysfsAccess = nullptr;
|
||||
PublicSysmanKmdInterfaceI915 *pSysmanKmdInterface = nullptr;
|
||||
MockStandbySysfsAccessInterface *pSysfsAccess = nullptr;
|
||||
|
||||
void SetUp() override {
|
||||
SysmanDeviceFixture::SetUp();
|
||||
device = pSysmanDevice;
|
||||
ptestSysfsAccess = std::make_unique<MockStandbySysfsAccess>();
|
||||
pOriginalSysfsAccess = pLinuxSysmanImp->pSysfsAccess;
|
||||
pLinuxSysmanImp->pSysfsAccess = ptestSysfsAccess.get();
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
}
|
||||
void TearDown() override {
|
||||
pLinuxSysmanImp->pSysfsAccess = pOriginalSysfsAccess;
|
||||
SysmanDeviceFixture::TearDown();
|
||||
}
|
||||
|
||||
void mockKMDInterfaceSetup() {
|
||||
pSysmanKmdInterface = new PublicSysmanKmdInterfaceI915(pLinuxSysmanImp->getProductFamily());
|
||||
pSysfsAccess = new MockStandbySysfsAccessInterface();
|
||||
pSysmanKmdInterface->pSysfsAccess.reset(pSysfsAccess);
|
||||
pLinuxSysmanImp->pSysmanKmdInterface.reset(pSysmanKmdInterface);
|
||||
}
|
||||
|
||||
std::vector<zes_standby_handle_t> getStandbyHandles(uint32_t count) {
|
||||
std::vector<zes_standby_handle_t> handles(count, nullptr);
|
||||
EXPECT_EQ(zesDeviceEnumStandbyDomains(device, &count, handles.data()), ZE_RESULT_SUCCESS);
|
||||
@@ -46,40 +58,38 @@ class ZesStandbyFixture : public SysmanDeviceFixture {
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenKmdInterfaceWhenGettingFilenamesForStandbyForI915VersionAndBaseDirectoryExistsThenProperPathsAreReturned) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenKmdInterfaceWhenGettingFilenamesForStandbyForI915VersionAndBaseDirectoryExistsThenProperPathsAreReturned) {
|
||||
auto pSysmanKmdInterface = std::make_unique<SysmanKmdInterfaceI915>(pLinuxSysmanImp->getProductFamily());
|
||||
bool baseDirectoryExists = true;
|
||||
EXPECT_STREQ("gt/gt0/rc6_enable", pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameStandbyModeControl, 0, baseDirectoryExists).c_str());
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenKmdInterfaceWhenGettingFilenamesForStandbyForI915VersionAndBaseDirectoryDoesntExistThenProperPathsAreReturned) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenKmdInterfaceWhenGettingFilenamesForStandbyForI915VersionAndBaseDirectoryDoesntExistThenProperPathsAreReturned) {
|
||||
auto pSysmanKmdInterface = std::make_unique<SysmanKmdInterfaceI915>(pLinuxSysmanImp->getProductFamily());
|
||||
bool baseDirectoryExists = false;
|
||||
EXPECT_STREQ("power/rc6_enable", pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameStandbyModeControl, 0, baseDirectoryExists).c_str());
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenKmdInterfaceWhenGettingFilenamesForStandbyForXeVersionThenUnsupportedFeatureIsReturned) {
|
||||
auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
uint32_t subdeviceId = 0;
|
||||
std::unique_ptr<PublicLinuxStandbyImp> pLinuxStandbyImp = std::make_unique<PublicLinuxStandbyImp>(pOsSysman, onSubdevice, subdeviceId);
|
||||
auto pSysmanKmdInterface = std::make_unique<SysmanKmdInterfaceXe>(pLinuxSysmanImp->getProductFamily());
|
||||
pLinuxStandbyImp->pSysmanKmdInterface = pSysmanKmdInterface.get();
|
||||
EXPECT_FALSE(pLinuxStandbyImp->pSysmanKmdInterface->isStandbyModeControlAvailable());
|
||||
TEST_F(ZesStandbyFixtureI915, GivenStandbyModeFilesNotAvailableWhenCallingEnumerateThenSuccessResultAndZeroCountIsReturned) {
|
||||
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pLinuxStandbyImp->getMode(mode));
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pLinuxStandbyImp->setMode(mode));
|
||||
}
|
||||
VariableBackup<decltype(NEO::SysCalls::sysCallsStat)> mockStat(&NEO::SysCalls::sysCallsStat, [](const std::string &filePath, struct stat *statbuf) -> int {
|
||||
statbuf->st_mode = ~S_IRUSR;
|
||||
return 0;
|
||||
});
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenStandbyModeFilesNotAvailableWhenCallingEnumerateThenSuccessResultAndZeroCountIsReturned) {
|
||||
uint32_t count = 0;
|
||||
ptestSysfsAccess->isStandbyModeFileAvailable = false;
|
||||
ze_result_t result = zesDeviceEnumStandbyDomains(device, &count, nullptr);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||
EXPECT_EQ(count, 0u);
|
||||
}
|
||||
TEST_F(ZesStandbyFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNonZeroCountIsReturnedAndVerifyzesStandbyGetCallSucceeds) {
|
||||
|
||||
TEST_F(ZesStandbyFixtureI915, GivenComponentCountZeroWhenCallingzesStandbyGetThenNonZeroCountIsReturnedAndVerifyzesStandbyGetCallSucceeds) {
|
||||
|
||||
VariableBackup<decltype(NEO::SysCalls::sysCallsStat)> mockStat(&NEO::SysCalls::sysCallsStat, [](const std::string &filePath, struct stat *statbuf) -> int {
|
||||
statbuf->st_mode = S_IRUSR;
|
||||
return 0;
|
||||
});
|
||||
|
||||
std::vector<zes_standby_handle_t> standbyHandle = {};
|
||||
uint32_t count = 0;
|
||||
|
||||
@@ -102,10 +112,6 @@ TEST_F(ZesStandbyFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNon
|
||||
EXPECT_NE(nullptr, standbyHandle.data());
|
||||
EXPECT_EQ(count, mockHandleCount);
|
||||
|
||||
auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
uint32_t subdeviceId = 0;
|
||||
|
||||
std::unique_ptr<L0::Sysman::StandbyImp> ptestStandbyImp = std::make_unique<L0::Sysman::StandbyImp>(pSysmanDeviceImp->pStandbyHandleContext->pOsSysman, onSubdevice, subdeviceId);
|
||||
count = 0;
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.push_back(std::move(ptestStandbyImp));
|
||||
@@ -126,7 +132,9 @@ TEST_F(ZesStandbyFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNon
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.pop_back();
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetPropertiesThenVerifyzesStandbyGetPropertiesCallSucceeds) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetPropertiesThenVerifyzesStandbyGetPropertiesCallSucceeds) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_properties_t properties = {};
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
@@ -139,8 +147,12 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetPropert
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallSucceedsForDefaultMode) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallSucceedsForDefaultMode) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
@@ -150,9 +162,12 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThe
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallSucceedsForNeverMode) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallSucceedsForNeverMode) {
|
||||
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
mockKMDInterfaceSetup();
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
@@ -162,21 +177,25 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThe
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenInvalidStandbyFileWhenReadisCalledThenExpectFailure) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenInvalidStandbyFileWhenReadisCalledThenExpectFailure) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
ptestSysfsAccess->setValReturnError(ZE_RESULT_ERROR_NOT_AVAILABLE);
|
||||
pSysfsAccess->setValReturnError(ZE_RESULT_ERROR_NOT_AVAILABLE);
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
EXPECT_NE(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallFailsForInvalidMode) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThenVerifyzesStandbyGetModeCallFailsForInvalidMode) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
@@ -185,12 +204,15 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeThe
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeOnUnavailableFileThenVerifyzesStandbyGetModeCallFailsForUnsupportedFeature) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetModeOnUnavailableFileThenVerifyzesStandbyGetModeCallFailsForUnsupportedFeature) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
ptestSysfsAccess->isStandbyModeFileAvailable = false;
|
||||
pSysfsAccess->isStandbyModeFileAvailable = false;
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
@@ -198,12 +220,14 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeOnU
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeWithInsufficientPermissionsThenVerifyzesStandbyGetModeCallFailsForInsufficientPermissions) {
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbyGetModeWithInsufficientPermissionsThenVerifyzesStandbyGetModeCallFailsForInsufficientPermissions) {
|
||||
|
||||
ptestSysfsAccess->mockStandbyFileMode &= ~S_IRUSR;
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeInvalid);
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
pSysfsAccess->mockStandbyFileMode &= ~S_IRUSR;
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
@@ -211,9 +235,11 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetModeWit
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeThenwithUnwritableFileVerifySysmanzesySetModeCallFailedWithInsufficientPermissions) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeThenwithUnwritableFileVerifySysmanzesySetModeCallFailedWithInsufficientPermissions) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
ptestSysfsAccess->mockStandbyFileMode &= ~S_IWUSR;
|
||||
pSysfsAccess->mockStandbyFileMode &= ~S_IWUSR;
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
@@ -221,38 +247,27 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeThe
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeOnUnavailableFileThenVerifyzesStandbySetModeCallFailsForUnsupportedFeature) {
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeOnUnavailableFileThenVerifyzesStandbySetModeCallFailsForUnsupportedFeature) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
pSysfsAccess->isStandbyModeFileAvailable = false;
|
||||
|
||||
ptestSysfsAccess->isStandbyModeFileAvailable = false;
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_NEVER));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeNeverThenVerifySysmanzesySetModeCallSucceeds) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeNeverThenVerifySysmanzesSetModeCallSucceeds) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
zes_standby_promo_mode_t mode;
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_DEFAULT, mode);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_NEVER));
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_NEVER, mode);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDefaultThenVerifySysmanzesySetModeCallSucceeds) {
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
zes_standby_promo_mode_t mode;
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_NEVER, mode);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_DEFAULT));
|
||||
@@ -261,20 +276,40 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDef
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenOnSubdeviceNotSetWhenValidatingosStandbyGetPropertiesThenSuccessIsReturned) {
|
||||
auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeDefaultThenVerifySysmanzesSetModeCallSucceeds) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
zes_standby_promo_mode_t mode;
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_NEVER, mode);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_DEFAULT));
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_DEFAULT, mode);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixtureI915, GivenOnSubdeviceNotSetWhenValidatingosStandbyGetPropertiesThenSuccessIsReturned) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
zes_standby_properties_t properties = {};
|
||||
ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
uint32_t subdeviceId = 0;
|
||||
auto pSysfsAccess = std::make_unique<MockStandbySysfsAccessInterface>();
|
||||
std::unique_ptr<PublicLinuxStandbyImp> pLinuxStandbyImp = std::make_unique<PublicLinuxStandbyImp>(pOsSysman, onSubdevice, subdeviceId);
|
||||
pLinuxStandbyImp->pSysfsAccess = pSysfsAccess.get();
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, pLinuxStandbyImp->osStandbyGetProperties(properties));
|
||||
EXPECT_EQ(properties.subdeviceId, subdeviceId);
|
||||
EXPECT_EQ(properties.onSubdevice, onSubdevice);
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDefaultWithLegacyPathThenVerifySysmanzesySetModeCallSucceeds) {
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeDefaultWithLegacyPathThenVerifySysmanzesSetModeCallSucceeds) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
ptestSysfsAccess->directoryExistsResult = false;
|
||||
pSysfsAccess->directoryExistsResult = false;
|
||||
pSysmanDeviceImp->pStandbyHandleContext->init(pLinuxSysmanImp->getSubDeviceCount());
|
||||
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
@@ -282,7 +317,7 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDef
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
zes_standby_promo_mode_t mode;
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeNever);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_NEVER, mode);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_DEFAULT));
|
||||
@@ -291,17 +326,18 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDef
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeNeverWithLegacyPathThenVerifySysmanzesySetModeCallSucceeds) {
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
ptestSysfsAccess->directoryExistsResult = false;
|
||||
pSysmanDeviceImp->pStandbyHandleContext->init(pLinuxSysmanImp->getSubDeviceCount());
|
||||
TEST_F(ZesStandbyFixtureI915, GivenValidStandbyHandleWhenCallingzesStandbySetModeNeverWithLegacyPathThenVerifySysmanzesSetModeCallSucceeds) {
|
||||
|
||||
mockKMDInterfaceSetup();
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
pSysfsAccess->directoryExistsResult = false;
|
||||
pSysmanDeviceImp->pStandbyHandleContext->init(pLinuxSysmanImp->getSubDeviceCount());
|
||||
auto handles = getStandbyHandles(mockHandleCount);
|
||||
|
||||
for (auto hSysmanStandby : handles) {
|
||||
ASSERT_NE(nullptr, hSysmanStandby);
|
||||
zes_standby_promo_mode_t mode;
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
pSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbyGetMode(hSysmanStandby, &mode));
|
||||
EXPECT_EQ(ZES_STANDBY_PROMO_MODE_DEFAULT, mode);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zesStandbySetMode(hSysmanStandby, ZES_STANDBY_PROMO_MODE_NEVER));
|
||||
@@ -310,36 +346,66 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeNev
|
||||
}
|
||||
}
|
||||
|
||||
class ZesStandbyMultiDeviceFixture : public SysmanMultiDeviceFixture {
|
||||
class ZesStandbyFixtureXe : public ZesStandbyFixture {
|
||||
protected:
|
||||
zes_standby_handle_t hSysmanStandby = {};
|
||||
|
||||
std::unique_ptr<MockStandbySysfsAccess> ptestSysfsAccess;
|
||||
L0::Sysman::SysfsAccess *pOriginalSysfsAccess = nullptr;
|
||||
void SetUp() override {
|
||||
SysmanDeviceFixture::SetUp();
|
||||
device = pSysmanDevice;
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
}
|
||||
void TearDown() override {
|
||||
SysmanDeviceFixture::TearDown();
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ZesStandbyFixtureXe, GivenKmdInterfaceWhenGettingFilenamesForStandbyThenUnsupportedFeatureIsReturned) {
|
||||
|
||||
std::unique_ptr<PublicLinuxStandbyImp> pLinuxStandbyImp = std::make_unique<PublicLinuxStandbyImp>(pOsSysman, onSubdevice, subdeviceId);
|
||||
auto pSysmanKmdInterface = std::make_unique<SysmanKmdInterfaceXe>(pLinuxSysmanImp->getProductFamily());
|
||||
pLinuxStandbyImp->pSysmanKmdInterface = pSysmanKmdInterface.get();
|
||||
EXPECT_FALSE(pLinuxStandbyImp->pSysmanKmdInterface->isStandbyModeControlAvailable());
|
||||
|
||||
zes_standby_promo_mode_t mode = {};
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pLinuxStandbyImp->getMode(mode));
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pLinuxStandbyImp->setMode(mode));
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyFixtureXe, GivenKmdInterfaceWhenQueryingSupportForStandbyForXeVersionThenProperStausIsReturned) {
|
||||
auto pSysmanKmdInterface = std::make_unique<SysmanKmdInterfaceXe>(pLinuxSysmanImp->getProductFamily());
|
||||
EXPECT_EQ(false, pSysmanKmdInterface->isStandbyModeControlAvailable());
|
||||
}
|
||||
|
||||
class ZesStandbyMultiDeviceFixture : public SysmanMultiDeviceFixture {
|
||||
|
||||
protected:
|
||||
L0::Sysman::SysmanDevice *device = nullptr;
|
||||
uint32_t subDeviceCount;
|
||||
ze_bool_t onSubdevice;
|
||||
uint32_t subdeviceId = 0;
|
||||
void SetUp() override {
|
||||
SysmanMultiDeviceFixture::SetUp();
|
||||
device = pSysmanDevice;
|
||||
mockSubDeviceHandleCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
ptestSysfsAccess = std::make_unique<MockStandbySysfsAccess>();
|
||||
pOriginalSysfsAccess = pLinuxSysmanImp->pSysfsAccess;
|
||||
pLinuxSysmanImp->pSysfsAccess = ptestSysfsAccess.get();
|
||||
ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault);
|
||||
pSysmanDeviceImp->pStandbyHandleContext->handleList.clear();
|
||||
subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
}
|
||||
void TearDown() override {
|
||||
pLinuxSysmanImp->pSysfsAccess = pOriginalSysfsAccess;
|
||||
SysmanMultiDeviceFixture::TearDown();
|
||||
}
|
||||
|
||||
std::vector<zes_standby_handle_t> getStandbyHandles(uint32_t count) {
|
||||
std::vector<zes_standby_handle_t> handles(count, nullptr);
|
||||
EXPECT_EQ(zesDeviceEnumStandbyDomains(device, &count, handles.data()), ZE_RESULT_SUCCESS);
|
||||
return handles;
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ZesStandbyMultiDeviceFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNonZeroCountIsReturnedAndVerifyzesStandbyGetCallSucceeds) {
|
||||
|
||||
VariableBackup<decltype(NEO::SysCalls::sysCallsStat)> mockStat(&NEO::SysCalls::sysCallsStat, [](const std::string &filePath, struct stat *statbuf) -> int {
|
||||
statbuf->st_mode = S_IRUSR;
|
||||
return 0;
|
||||
});
|
||||
|
||||
std::vector<zes_standby_handle_t> standbyHandle = {};
|
||||
uint32_t count = 0;
|
||||
|
||||
@@ -364,11 +430,12 @@ TEST_F(ZesStandbyMultiDeviceFixture, GivenComponentCountZeroWhenCallingzesStandb
|
||||
}
|
||||
|
||||
TEST_F(ZesStandbyMultiDeviceFixture, GivenOnSubdeviceNotSetWhenValidatingosStandbyGetPropertiesThenSuccessIsReturned) {
|
||||
auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount();
|
||||
zes_standby_properties_t properties = {};
|
||||
ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true;
|
||||
uint32_t subdeviceId = 0;
|
||||
|
||||
auto pSysfsAccess = std::make_unique<MockStandbySysfsAccessInterface>();
|
||||
std::unique_ptr<PublicLinuxStandbyImp> pLinuxStandbyImp = std::make_unique<PublicLinuxStandbyImp>(pOsSysman, onSubdevice, subdeviceId);
|
||||
pLinuxStandbyImp->pSysfsAccess = pSysfsAccess.get();
|
||||
|
||||
zes_standby_properties_t properties = {};
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, pLinuxStandbyImp->osStandbyGetProperties(properties));
|
||||
EXPECT_EQ(properties.subdeviceId, subdeviceId);
|
||||
EXPECT_EQ(properties.onSubdevice, onSubdevice);
|
||||
|
||||
Reference in New Issue
Block a user