Add debug key to disable SBA tracking commands in single address space
DebuggerDisableSingleAddressSbaTracking defaults to false Signed-off-by: Yates, Brandon <brandon.yates@intel.com>
This commit is contained in:
parent
fd1417532d
commit
e55cd5961b
|
@ -76,6 +76,7 @@ DECLARE_DEBUG_VARIABLE(bool, UpdateCrossThreadDataSize, false, "Turn on cross th
|
|||
DECLARE_DEBUG_VARIABLE(bool, UseNewQueryTopoIoctl, true, "Use DRM_I915_QUERY_COMPUTE_SLICES")
|
||||
DECLARE_DEBUG_VARIABLE(bool, DisableGpuHangDetection, false, "Disable GPU hang detection")
|
||||
DECLARE_DEBUG_VARIABLE(bool, DisableForceToStateless, false, "If platform requires force to stateless for buffers, then this flag can disable this requirement")
|
||||
DECLARE_DEBUG_VARIABLE(bool, DebuggerDisableSingleAddressSbaTracking, false, "Disable SBA Tracking command programming in single address space mode")
|
||||
DECLARE_DEBUG_VARIABLE(std::string, ForceDeviceId, std::string("unk"), "DeviceId selected for testing")
|
||||
DECLARE_DEBUG_VARIABLE(std::string, FilterDeviceId, std::string("unk"), "Device id filter, adapter matching device id will be opened. Ignored when unk.")
|
||||
DECLARE_DEBUG_VARIABLE(std::string, FilterBdfPath, std::string("unk"), "Linux-only, BDF path filter, only matching paths will be opened. Ignored when unk.")
|
||||
|
|
|
@ -9,12 +9,16 @@ namespace NEO {
|
|||
template <typename GfxFamily>
|
||||
size_t DebuggerL0Hw<GfxFamily>::getSbaTrackingCommandsSize(size_t trackedAddressCount) {
|
||||
if (singleAddressSpaceSbaTracking) {
|
||||
constexpr uint32_t aluCmdSize = sizeof(typename GfxFamily::MI_MATH) + sizeof(typename GfxFamily::MI_MATH_ALU_INST_INLINE) * NUM_ALU_INST_FOR_READ_MODIFY_WRITE;
|
||||
return 2 * (sizeof(typename GfxFamily::MI_ARB_CHECK) + sizeof(typename GfxFamily::MI_BATCH_BUFFER_START)) +
|
||||
trackedAddressCount * (sizeof(typename GfxFamily::MI_LOAD_REGISTER_IMM) + aluCmdSize + 2 * sizeof(typename GfxFamily::MI_STORE_REGISTER_MEM) +
|
||||
3 * sizeof(typename GfxFamily::MI_STORE_DATA_IMM) +
|
||||
sizeof(typename GfxFamily::MI_ARB_CHECK) +
|
||||
sizeof(typename GfxFamily::MI_BATCH_BUFFER_START));
|
||||
if (NEO::DebugManager.flags.DebuggerDisableSingleAddressSbaTracking.get()) {
|
||||
return 0;
|
||||
} else {
|
||||
constexpr uint32_t aluCmdSize = sizeof(typename GfxFamily::MI_MATH) + sizeof(typename GfxFamily::MI_MATH_ALU_INST_INLINE) * NUM_ALU_INST_FOR_READ_MODIFY_WRITE;
|
||||
return 2 * (sizeof(typename GfxFamily::MI_ARB_CHECK) + sizeof(typename GfxFamily::MI_BATCH_BUFFER_START)) +
|
||||
trackedAddressCount * (sizeof(typename GfxFamily::MI_LOAD_REGISTER_IMM) + aluCmdSize + 2 * sizeof(typename GfxFamily::MI_STORE_REGISTER_MEM) +
|
||||
3 * sizeof(typename GfxFamily::MI_STORE_DATA_IMM) +
|
||||
sizeof(typename GfxFamily::MI_ARB_CHECK) +
|
||||
sizeof(typename GfxFamily::MI_BATCH_BUFFER_START));
|
||||
}
|
||||
}
|
||||
return trackedAddressCount * NEO::EncodeStoreMemory<GfxFamily>::getStoreDataImmSize();
|
||||
}
|
||||
|
@ -33,6 +37,10 @@ void DebuggerL0Hw<GfxFamily>::programSbaTrackingCommandsSingleAddressSpace(NEO::
|
|||
|
||||
UNRECOVERABLE_IF(!singleAddressSpaceSbaTracking);
|
||||
|
||||
if (NEO::DebugManager.flags.DebuggerDisableSingleAddressSbaTracking.get()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<std::pair<size_t, uint64_t>> fieldOffsetAndValue;
|
||||
|
||||
if (sba.GeneralStateBaseAddress) {
|
||||
|
|
|
@ -436,4 +436,5 @@ EnablePrivateBO = 0
|
|||
ExperimentalEnableDeviceAllocationCache = 0
|
||||
OverrideL1CachePolicyInSurfaceStateAndStateless = -1
|
||||
EnableBcsSwControlWa = -1
|
||||
ExperimentalEnableL0DebuggerForOpenCL = 0
|
||||
ExperimentalEnableL0DebuggerForOpenCL = 0
|
||||
DebuggerDisableSingleAddressSbaTracking = 0
|
|
@ -91,6 +91,20 @@ HWTEST2_F(SingleAddressSpaceFixture, WhenProgrammingSbaTrackingCommandsForSingle
|
|||
EXPECT_THROW(debugger->getSbaTrackingCommandsSize(6), std::exception);
|
||||
}
|
||||
|
||||
HWTEST2_F(SingleAddressSpaceFixture, GivenDebuggerDisableSingleAddressSbaTrackingThenNoCommandsProgrammed, IsAtLeastGen12lp) {
|
||||
NEO::DebugManager.flags.DebuggerDisableSingleAddressSbaTracking.set(true);
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(pDevice);
|
||||
|
||||
NEO::LinearStream cmdStream;
|
||||
NEO::Debugger::SbaAddresses sbaAddresses = {};
|
||||
|
||||
size_t sizeExpected = 0;
|
||||
EXPECT_EQ(sizeExpected, cmdStream.getUsed());
|
||||
debugger->programSbaTrackingCommandsSingleAddressSpace(cmdStream, sbaAddresses);
|
||||
EXPECT_EQ(sizeExpected, cmdStream.getUsed());
|
||||
EXPECT_EQ(sizeExpected, debugger->getSbaTrackingCommandsSize(6));
|
||||
}
|
||||
|
||||
HWTEST2_F(SingleAddressSpaceFixture, GivenNonZeroSbaAddressesWhenProgrammingSbaTrackingCommandsForSingleAddressSpaceThenCorrectSequenceOfCommandsAreAddedToStream, IsAtLeastGen12lp) {
|
||||
auto debugger = std::make_unique<MockDebuggerL0Hw<FamilyType>>(pDevice);
|
||||
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
|
||||
|
|
Loading…
Reference in New Issue