Skip to content

Commit 902cce5

Browse files
Add new functionality to load SIP from file
Related-To: NEO-5718 Signed-off-by: Zbigniew Zdanowicz <[email protected]>
1 parent f83b51e commit 902cce5

File tree

53 files changed

+533
-210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+533
-210
lines changed

level_zero/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ if(BUILD_WITH_L0)
234234
${COMPUTE_RUNTIME_DIR}/opencl/source/dll/create_tbx_sockets.cpp
235235
${COMPUTE_RUNTIME_DIR}/opencl/source/dll/get_devices.cpp
236236
${COMPUTE_RUNTIME_DIR}/opencl/source/dll/source_level_debugger_dll.cpp
237-
${COMPUTE_RUNTIME_DIR}/shared/source/helpers/built_ins_helper.cpp
237+
${COMPUTE_RUNTIME_DIR}/shared/source/built_ins/sip_init.cpp
238238
${COMPUTE_RUNTIME_DIR}/shared/source/aub/aub_stream_interface.cpp
239239
)
240240

level_zero/cmake/l0_tests.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ add_library(compute_runtime_mockable_extra
6666
EXCLUDE_FROM_ALL
6767
${CMAKE_CURRENT_LIST_DIR}/l0_tests.cmake
6868
${NEO_SHARED_TEST_DIRECTORY}/unit_test/utilities/cpuintrinsics.cpp
69-
${NEO_SHARED_TEST_DIRECTORY}/common/helpers/built_ins_helper.cpp
69+
${NEO_SHARED_TEST_DIRECTORY}/common/helpers/sip_init.cpp
7070
${NEO_SHARED_TEST_DIRECTORY}/common/helpers/test_files.cpp
7171
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/mock_compiler_interface_spirv.cpp
7272
${NEO_SHARED_TEST_DIRECTORY}/common/mocks/mock_compiler_interface_spirv.h

level_zero/core/source/cmdqueue/cmdqueue_hw.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ ze_result_t CommandQueueHw<gfxCoreFamily>::executeCommandLists(
286286
}
287287

288288
if (sipKernelUsed) {
289-
auto sipIsa = NEO::SipKernel::getSipKernelAllocation(*neoDevice);
289+
auto sipIsa = NEO::SipKernel::getSipKernel(*neoDevice).getSipAllocation();
290290
residencyContainer.push_back(sipIsa);
291291
}
292292

level_zero/core/source/device/device_imp.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "shared/source/execution_environment/execution_environment.h"
1515
#include "shared/source/execution_environment/root_device_environment.h"
1616
#include "shared/source/gmm_helper/gmm_helper.h"
17-
#include "shared/source/helpers/built_ins_helper.h"
1817
#include "shared/source/helpers/constants.h"
1918
#include "shared/source/helpers/engine_node_helper.h"
2019
#include "shared/source/helpers/hw_helper.h"
@@ -646,10 +645,10 @@ Device *Device::create(DriverHandle *driverHandle, NEO::Device *neoDevice, uint3
646645
if (neoDevice->getCompilerInterface()) {
647646
auto hwInfo = neoDevice->getHardwareInfo();
648647
if (neoDevice->getPreemptionMode() == NEO::PreemptionMode::MidThread || neoDevice->getDebugger()) {
649-
auto sipType = NEO::SipKernel::getSipKernelType(hwInfo.platform.eRenderCoreFamily, neoDevice->getDebugger());
650-
NEO::initSipKernel(sipType, *neoDevice);
648+
bool ret = NEO::SipKernel::initSipKernel(NEO::SipKernel::getSipKernelType(*neoDevice), *neoDevice);
649+
UNRECOVERABLE_IF(!ret);
651650

652-
auto stateSaveAreaHeader = NEO::SipKernel::getSipStateSaveAreaHeader(*neoDevice);
651+
auto &stateSaveAreaHeader = NEO::SipKernel::getSipKernel(*neoDevice).getStateSaveAreaHeader();
653652
if (debugSurface && stateSaveAreaHeader.size() > 0) {
654653
auto &hwHelper = NEO::HwHelper::get(hwInfo.platform.eRenderCoreFamily);
655654
NEO::MemoryTransferHelper::transferMemoryToAllocation(hwHelper.isBlitCopyRequiredForLocalMemory(hwInfo, *debugSurface),

level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue_enqueuecommandlist.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ HWTEST_F(CommandQueueExecuteCommandLists, givenMidThreadPreemptionWhenCommandsAr
306306
if (preemptionMode == NEO::PreemptionMode::MidThread) {
307307
EXPECT_NE(cmdList.end(), itorSip);
308308

309-
auto sipAllocation = SipKernel::getSipKernelAllocation(*neoDevice);
309+
auto sipAllocation = SipKernel::getSipKernel(*neoDevice).getSipAllocation();
310310
STATE_SIP *stateSipCmd = reinterpret_cast<STATE_SIP *>(*itorSip);
311311
EXPECT_EQ(sipAllocation->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer());
312312
} else {
@@ -361,7 +361,7 @@ HWTEST2_F(CommandQueueExecuteCommandLists, givenMidThreadPreemptionWhenCommandsA
361361
if (preemptionMode == NEO::PreemptionMode::MidThread) {
362362
EXPECT_NE(cmdList.end(), itorSip);
363363

364-
auto sipAllocation = SipKernel::getSipKernelAllocation(*neoDevice);
364+
auto sipAllocation = SipKernel::getSipKernel(*neoDevice).getSipAllocation();
365365
STATE_SIP *stateSipCmd = reinterpret_cast<STATE_SIP *>(*itorSip);
366366
EXPECT_EQ(sipAllocation->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer());
367367
} else {

level_zero/core/test/unit_tests/sources/debugger/test_l0_debugger.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,21 @@ TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingL0DebuggerThenValidDebuggerInst
3939
}
4040

4141
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingSipAllocationThenValidSipTypeIsReturned) {
42-
auto systemRoutine = SipKernel::getSipKernelAllocation(*neoDevice);
42+
neoDevice->setDebuggerActive(true);
43+
auto systemRoutine = SipKernel::getSipKernel(*neoDevice).getSipAllocation();
4344
ASSERT_NE(nullptr, systemRoutine);
4445

45-
auto sipType = SipKernel::getSipKernelType(neoDevice->getHardwareInfo().platform.eRenderCoreFamily, true);
46+
auto sipType = SipKernel::getSipKernelType(*neoDevice);
4647
auto expectedSipAllocation = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getSipAllocation();
4748

4849
EXPECT_EQ(expectedSipAllocation, systemRoutine);
4950
}
5051

5152
TEST_F(L0DebuggerTest, givenL0DebuggerWhenGettingStateSaveAreaHeaderThenValidSipTypeIsReturned) {
52-
auto stateSaveAreaHeader = SipKernel::getSipStateSaveAreaHeader(*neoDevice);
53+
auto &stateSaveAreaHeader = SipKernel::getSipKernel(*neoDevice).getStateSaveAreaHeader();
5354

54-
auto sipType = SipKernel::getSipKernelType(neoDevice->getHardwareInfo().platform.eRenderCoreFamily, true);
55-
auto expectedStateSaveAreaHeader = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getStateSaveAreaHeader();
55+
auto sipType = SipKernel::getSipKernelType(*neoDevice);
56+
auto &expectedStateSaveAreaHeader = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getStateSaveAreaHeader();
5657

5758
EXPECT_EQ(expectedStateSaveAreaHeader, stateSaveAreaHeader);
5859
}
@@ -75,10 +76,10 @@ TEST(Debugger, givenL0DebuggerOFFWhenGettingStateSaveAreaHeaderThenValidSipTypeI
7576

7677
driverHandle->initialize(std::move(devices));
7778

78-
auto stateSaveAreaHeader = SipKernel::getSipStateSaveAreaHeader(*neoDevice);
79+
auto &stateSaveAreaHeader = SipKernel::getSipKernel(*neoDevice).getStateSaveAreaHeader();
7980

80-
auto sipType = SipKernel::getSipKernelType(neoDevice->getHardwareInfo().platform.eRenderCoreFamily, false);
81-
auto expectedStateSaveAreaHeader = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getStateSaveAreaHeader();
81+
auto sipType = SipKernel::getSipKernelType(*neoDevice);
82+
auto &expectedStateSaveAreaHeader = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getStateSaveAreaHeader();
8283

8384
EXPECT_EQ(expectedStateSaveAreaHeader, stateSaveAreaHeader);
8485
}
@@ -181,7 +182,7 @@ HWTEST_F(L0DebuggerTest, givenDebuggingEnabledWhenCommandListIsExecutedThenValid
181182

182183
STATE_SIP *stateSip = genCmdCast<STATE_SIP *>(*stateSipCmds[0]);
183184

184-
auto systemRoutine = SipKernel::getSipKernelAllocation(*neoDevice);
185+
auto systemRoutine = SipKernel::getSipKernel(*neoDevice).getSipAllocation();
185186
ASSERT_NE(nullptr, systemRoutine);
186187
EXPECT_EQ(systemRoutine->getGpuAddress(), stateSip->getSystemInstructionPointer());
187188
}
@@ -512,7 +513,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenDebuggingEnabledWhenInternalCmdQIsUs
512513
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
513514

514515
auto sbaBuffer = device->getL0Debugger()->getSbaTrackingBuffer(neoDevice->getDefaultEngine().commandStreamReceiver->getOsContext().getContextId());
515-
auto sipIsa = NEO::SipKernel::getSipKernelAllocation(*neoDevice);
516+
auto sipIsa = NEO::SipKernel::getSipKernel(*neoDevice).getSipAllocation();
516517
auto debugSurface = device->getDebugSurface();
517518
bool sbaFound = false;
518519
bool sipFound = false;

level_zero/core/test/unit_tests/sources/debugger/test_source_level_debugger.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ HWTEST2_F(SLDebuggerInternalUsageTest, givenDebuggingEnabledWhenInternalCmdQIsUs
219219
EXPECT_EQ(0u, stateSip.size());
220220
}
221221

222-
auto sipIsa = NEO::SipKernel::getSipKernelAllocation(*device);
222+
auto sipIsa = NEO::SipKernel::getSipKernel(*device).getSipAllocation();
223223
auto debugSurface = deviceL0->getDebugSurface();
224224
bool sipFound = false;
225225
bool debugSurfaceFound = false;

level_zero/core/test/unit_tests/sources/device/test_device.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "shared/source/os_interface/os_time.h"
1212
#include "shared/test/common/helpers/debug_manager_state_restore.h"
1313
#include "shared/test/common/mocks/mock_device.h"
14+
#include "shared/test/common/mocks/mock_sip.h"
1415
#include "shared/test/common/mocks/ult_device_factory.h"
1516

1617
#include "opencl/source/os_interface/os_inc_base.h"
@@ -31,13 +32,6 @@
3132

3233
using ::testing::Return;
3334

34-
namespace NEO {
35-
namespace MockSipData {
36-
extern SipKernelType calledType;
37-
extern bool called;
38-
} // namespace MockSipData
39-
} // namespace NEO
40-
4135
namespace L0 {
4236
namespace ult {
4337

@@ -66,6 +60,7 @@ TEST(L0DeviceTest, givenMidThreadPreemptionWhenCreatingDeviceThenSipKernelIsInit
6660
ze_result_t returnValue = ZE_RESULT_SUCCESS;
6761
VariableBackup<bool> mockSipCalled(&NEO::MockSipData::called, false);
6862
VariableBackup<NEO::SipKernelType> mockSipCalledType(&NEO::MockSipData::calledType, NEO::SipKernelType::COUNT);
63+
VariableBackup<bool> backupSipInitType(&MockSipData::useMockSip, true);
6964

7065
std::unique_ptr<DriverHandleImp> driverHandle(new DriverHandleImp);
7166
auto hwInfo = *NEO::defaultHwInfo;
@@ -103,14 +98,16 @@ TEST(L0DeviceTest, givenDebuggerEnabledButIGCNotReturnsSSAHThenSSAHIsNotCopied)
10398
driverHandle->enableProgramDebugging = true;
10499

105100
driverHandle->initialize(std::move(devices));
106-
auto stateSaveAreaHeader = NEO::SipKernel::getSipStateSaveAreaHeader(*neoDevice);
101+
auto sipType = SipKernel::getSipKernelType(*neoDevice);
102+
auto &stateSaveAreaHeader = neoDevice->getBuiltIns()->getSipKernel(sipType, *neoDevice).getStateSaveAreaHeader();
107103
EXPECT_EQ(static_cast<size_t>(0), stateSaveAreaHeader.size());
108104
}
109105

110106
TEST(L0DeviceTest, givenDisabledPreemptionWhenCreatingDeviceThenSipKernelIsNotInitialized) {
111107
ze_result_t returnValue = ZE_RESULT_SUCCESS;
112108
VariableBackup<bool> mockSipCalled(&NEO::MockSipData::called, false);
113109
VariableBackup<NEO::SipKernelType> mockSipCalledType(&NEO::MockSipData::calledType, NEO::SipKernelType::COUNT);
110+
VariableBackup<bool> backupSipInitType(&MockSipData::useMockSip, true);
114111

115112
std::unique_ptr<DriverHandleImp> driverHandle(new DriverHandleImp);
116113
auto hwInfo = *NEO::defaultHwInfo;

opencl/source/built_ins/builtins_dispatch_builder.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include "shared/source/built_ins/sip.h"
1212
#include "shared/source/compiler_interface/compiler_interface.h"
1313
#include "shared/source/helpers/basic_math.h"
14-
#include "shared/source/helpers/built_ins_helper.h"
1514
#include "shared/source/helpers/debug_helpers.h"
1615

1716
#include "opencl/source/built_ins/aux_translation_builtin.h"

opencl/source/dll/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ set(RUNTIME_SRCS_DLL_BASE
1818
${CMAKE_CURRENT_SOURCE_DIR}/debug_manager.cpp
1919
${CMAKE_CURRENT_SOURCE_DIR}/source_level_debugger_dll.cpp
2020
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/get_devices.cpp
21+
${NEO_SHARED_DIRECTORY}/built_ins/sip_init.cpp
2122
${NEO_SHARED_DIRECTORY}/dll/options_dll.cpp
2223
${NEO_SHARED_DIRECTORY}/gmm_helper/resource_info.cpp
2324
${NEO_SHARED_DIRECTORY}/gmm_helper/page_table_mngr.cpp
2425
${NEO_SHARED_DIRECTORY}/helpers/abort.cpp
2526
${NEO_SHARED_DIRECTORY}/helpers/allow_deferred_deleter.cpp
26-
${NEO_SHARED_DIRECTORY}/helpers/built_ins_helper.cpp
2727
${NEO_SHARED_DIRECTORY}/helpers/debug_helpers.cpp
2828
${NEO_SHARED_DIRECTORY}/utilities/cpuintrinsics.cpp
2929
${NEO_SHARED_DIRECTORY}/utilities/debug_settings_reader_creator.cpp

0 commit comments

Comments
 (0)