Move L0HwHelper ownership to RootDeviceEnvironment 1/n

Related-To: NEO-6853
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>

Use RootDeviceEnvironment getHelper<L0CoreHelper> for
- setAdditionalGroupProperty
- createEvent
- isResumeWARequired
This commit is contained in:
Kamil Kopryk
2022-11-14 21:15:40 +00:00
committed by Compute-Runtime-Automation
parent 1bcceb1071
commit aaa4e90ad4
9 changed files with 62 additions and 45 deletions

View File

@@ -406,10 +406,9 @@ void DebugSessionImp::applyResumeWa(uint8_t *bitmask, size_t bitmaskSize) {
UNRECOVERABLE_IF(bitmaskSize % 8 != 0);
auto hwInfo = connectedDevice->getHwInfo();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &l0CoreHelper = connectedDevice->getNEODevice()->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
uint32_t *dwordBitmask = reinterpret_cast<uint32_t *>(bitmask);
for (uint32_t i = 0; i < bitmaskSize / sizeof(uint32_t) - 1; i = i + 2) {
@@ -426,9 +425,9 @@ bool DebugSessionImp::writeResumeCommand(const std::vector<EuThread::ThreadId> &
if (stateSaveAreaHeader->versionHeader.version.major < 2u) {
auto &hwInfo = connectedDevice->getHwInfo();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &l0CoreHelper = connectedDevice->getNEODevice()->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
constexpr uint32_t sipResumeValue = 0x40000000;
bool isBindlessSip = (debugArea.reserved1 == 1);

View File

@@ -60,13 +60,13 @@ TEST(DebugSessionTest, givenApplyResumeWaCalledThenWAIsApplied) {
Mock<L0::DeviceImp> deviceImp(neoDevice, neoDevice->getExecutionEnvironment());
auto sessionMock = std::make_unique<MockDebugSession>(config, &deviceImp);
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &l0CoreHelper = neoDevice->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
size_t bitmaskSize = 32;
auto bitmask = std::make_unique<uint8_t[]>(bitmaskSize);
bitmask.get()[0] = 1;
sessionMock->applyResumeWa(bitmask.get(), bitmaskSize);
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
EXPECT_EQ(1, bitmask.get()[4]);
} else {
EXPECT_EQ(0, bitmask.get()[4]);
@@ -918,11 +918,12 @@ TEST(DebugSessionTest, GivenBindlessSipVersion1AndResumeWARequiredWhenCallingRes
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
NEO::MockDevice *neoDevice(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
Mock<L0::DeviceImp> deviceImp(neoDevice, neoDevice->getExecutionEnvironment());
auto &l0CoreHelper = neoDevice->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
auto sessionMock = std::make_unique<MockDebugSession>(config, &deviceImp);
ASSERT_NE(nullptr, sessionMock);
sessionMock->readRegistersResult = ZE_RESULT_SUCCESS;
@@ -940,7 +941,7 @@ TEST(DebugSessionTest, GivenBindlessSipVersion1AndResumeWARequiredWhenCallingRes
auto result = sessionMock->resume(thread);
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
EXPECT_EQ(1u, sessionMock->readRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeResumeCommandCalled);
@@ -961,11 +962,12 @@ TEST(DebugSessionTest, GivenErrorFromReadRegisterWhenResumingThreadThenRegisterI
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
NEO::MockDevice *neoDevice(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
Mock<L0::DeviceImp> deviceImp(neoDevice, neoDevice->getExecutionEnvironment());
auto &l0CoreHelper = neoDevice->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
auto sessionMock = std::make_unique<MockDebugSession>(config, &deviceImp);
ASSERT_NE(nullptr, sessionMock);
sessionMock->readRegistersResult = ZE_RESULT_ERROR_UNKNOWN;
@@ -982,7 +984,7 @@ TEST(DebugSessionTest, GivenErrorFromReadRegisterWhenResumingThreadThenRegisterI
auto result = sessionMock->resume(thread);
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
EXPECT_EQ(1u, sessionMock->readRegistersCallCount);
EXPECT_EQ(0u, sessionMock->writeRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeResumeCommandCalled);
@@ -1006,11 +1008,12 @@ TEST(DebugSessionTest, GivenErrorFromWriteRegisterWhenResumingThreadThenRegister
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
NEO::MockDevice *neoDevice(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
Mock<L0::DeviceImp> deviceImp(neoDevice, neoDevice->getExecutionEnvironment());
auto &l0CoreHelper = neoDevice->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
auto sessionMock = std::make_unique<MockDebugSession>(config, &deviceImp);
ASSERT_NE(nullptr, sessionMock);
sessionMock->readRegistersResult = ZE_RESULT_SUCCESS;
@@ -1027,7 +1030,7 @@ TEST(DebugSessionTest, GivenErrorFromWriteRegisterWhenResumingThreadThenRegister
auto result = sessionMock->resume(thread);
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
EXPECT_EQ(1u, sessionMock->readRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeResumeCommandCalled);
@@ -1050,11 +1053,12 @@ TEST(DebugSessionTest, GivenNonBindlessSipVersion1AndResumeWARequiredWhenCalling
zet_debug_config_t config = {};
config.pid = 0x1234;
auto hwInfo = *NEO::defaultHwInfo.get();
auto &l0HwHelper = L0HwHelper::get(hwInfo.platform.eRenderCoreFamily);
NEO::MockDevice *neoDevice(NEO::MockDevice::createWithNewExecutionEnvironment<NEO::MockDevice>(&hwInfo, 0));
Mock<L0::DeviceImp> deviceImp(neoDevice, neoDevice->getExecutionEnvironment());
auto &l0CoreHelper = neoDevice->getRootDeviceEnvironment().getHelper<L0CoreHelper>();
auto sessionMock = std::make_unique<MockDebugSession>(config, &deviceImp);
ASSERT_NE(nullptr, sessionMock);
sessionMock->readRegistersResult = ZE_RESULT_SUCCESS;
@@ -1072,7 +1076,7 @@ TEST(DebugSessionTest, GivenNonBindlessSipVersion1AndResumeWARequiredWhenCalling
auto result = sessionMock->resume(thread);
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
if (l0HwHelper.isResumeWARequired()) {
if (l0CoreHelper.isResumeWARequired()) {
EXPECT_EQ(1u, sessionMock->readRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeRegistersCallCount);
EXPECT_EQ(1u, sessionMock->writeResumeCommandCalled);
@@ -2307,7 +2311,7 @@ TEST(DebugSessionTest, GivenStoppedThreadWhenUnderInvalidConditionsThenSlmWriteF
retVal = sessionMock->writeSLMMemory(threadId, &desc, writeSize, input);
EXPECT_EQ(ZE_RESULT_ERROR_NOT_AVAILABLE, retVal);
desc.address = 0x1000000f; //force a read
desc.address = 0x1000000f; // force a read
retVal = sessionMock->writeSLMMemory(threadId, &desc, writeSize, input);
EXPECT_EQ(ZE_RESULT_ERROR_NOT_AVAILABLE, retVal);
sessionMock->slmCmdRegisterAccessReadyCount = 2;