mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Add asserts to timestamp ults
Add asserts to avoid OOB array accesses when no semaphores are used Related-To: NEO-7321 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
bb55d2259e
commit
408a2e3e92
@ -687,6 +687,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandStreamReceiverHwTestXeHPAndLater, givenBlock
|
||||
expectedQueueSemaphoresCount += 1;
|
||||
}
|
||||
EXPECT_EQ(expectedQueueSemaphoresCount, queueSemaphores.size());
|
||||
ASSERT_GT(queueSemaphores.size(), 0u);
|
||||
auto semaphoreCmd = genCmdCast<MI_SEMAPHORE_WAIT *>(*(queueSemaphores[0]));
|
||||
EXPECT_EQ(semaphoreCmd->getCompareOperation(), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
||||
EXPECT_EQ(1u, semaphoreCmd->getSemaphoreDataDword());
|
||||
@ -697,6 +698,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandStreamReceiverHwTestXeHPAndLater, givenBlock
|
||||
{
|
||||
auto csrSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCsr.cmdList.begin(), hwParserCsr.cmdList.end());
|
||||
EXPECT_EQ(1u, csrSemaphores.size());
|
||||
ASSERT_GT(csrSemaphores.size(), 0u);
|
||||
auto semaphoreCmd = genCmdCast<MI_SEMAPHORE_WAIT *>(*(csrSemaphores[0]));
|
||||
EXPECT_EQ(semaphoreCmd->getCompareOperation(), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
||||
EXPECT_EQ(1u, semaphoreCmd->getSemaphoreDataDword());
|
||||
|
@ -323,12 +323,14 @@ HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThe
|
||||
|
||||
// obtain first node for cmdQ and event1
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, &event1);
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto node1 = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
EXPECT_NE(nullptr, node1);
|
||||
EXPECT_EQ(node1, cmdQ->timestampPacketContainer->peekNodes().at(0));
|
||||
|
||||
// obtain new node for cmdQ and event2
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, &event2);
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto node2 = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
EXPECT_NE(nullptr, node2);
|
||||
EXPECT_EQ(node2, cmdQ->timestampPacketContainer->peekNodes().at(0));
|
||||
@ -554,7 +556,7 @@ HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThe
|
||||
|
||||
{
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
|
||||
ASSERT_GT(timestampPacketContainer->peekNodes().size(), 0u);
|
||||
latestNode = timestampPacketContainer->peekNodes()[0]->getGpuAddress();
|
||||
EXPECT_EQ(0u, deferredTimestampPackets->peekNodes().size());
|
||||
}
|
||||
@ -563,6 +565,7 @@ HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThe
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
|
||||
EXPECT_EQ(1u, deferredTimestampPackets->peekNodes().size());
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
EXPECT_EQ(latestNode, deferredTimestampPackets->peekNodes().at(0u)->getGpuAddress());
|
||||
latestNode = timestampPacketContainer->peekNodes()[0]->getGpuAddress();
|
||||
}
|
||||
@ -571,6 +574,7 @@ HWTEST_F(TimestampPacketTests, givenTimestampPacketWriteEnabledWhenEnqueueingThe
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
|
||||
EXPECT_EQ(2u, deferredTimestampPackets->peekNodes().size());
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 1u);
|
||||
EXPECT_EQ(latestNode, deferredTimestampPackets->peekNodes().at(1u)->getGpuAddress());
|
||||
latestNode = timestampPacketContainer->peekNodes()[0]->getGpuAddress();
|
||||
}
|
||||
@ -598,11 +602,14 @@ HWTEST_F(TimestampPacketTests, givenWaitlistWithTimestampPacketWhenEnqueueingThe
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 1, waitlist, nullptr);
|
||||
|
||||
EXPECT_EQ(1u, deferredTimestampPackets->peekNodes().size());
|
||||
|
||||
ASSERT_GT(timestamp.peekNodes().size(), 0u);
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
EXPECT_EQ(timestamp.peekNodes()[0]->getGpuAddress(), deferredTimestampPackets->peekNodes()[0]->getGpuAddress());
|
||||
|
||||
cmdQ->flush();
|
||||
EXPECT_EQ(1u, deferredTimestampPackets->peekNodes().size());
|
||||
ASSERT_GT(timestamp.peekNodes().size(), 0u);
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
EXPECT_EQ(timestamp.peekNodes()[0]->getGpuAddress(), deferredTimestampPackets->peekNodes()[0]->getGpuAddress());
|
||||
|
||||
cmdQ->finish();
|
||||
@ -644,6 +651,7 @@ HWTEST_F(TimestampPacketTests, givenTimestampWaitEnabledWhenEnqueueWithEventThen
|
||||
csr.downloadAllocationCalled = false;
|
||||
|
||||
typename FamilyType::TimestampPacketType timestampData[] = {2, 2, 2, 2};
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
for (uint32_t i = 0; i < deferredTimestampPackets->peekNodes()[0]->getPacketsUsed(); i++) {
|
||||
deferredTimestampPackets->peekNodes()[0]->assignDataToAllTimestamps(i, timestampData);
|
||||
}
|
||||
@ -653,6 +661,7 @@ HWTEST_F(TimestampPacketTests, givenTimestampWaitEnabledWhenEnqueueWithEventThen
|
||||
EXPECT_TRUE(csr.downloadAllocationCalled);
|
||||
csr.downloadAllocationCalled = false;
|
||||
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
for (uint32_t i = 0; i < deferredTimestampPackets->peekNodes()[0]->getPacketsUsed(); i++) {
|
||||
timestampPacketContainer->peekNodes()[0]->assignDataToAllTimestamps(i, timestampData);
|
||||
}
|
||||
@ -725,6 +734,7 @@ HWTEST_F(TimestampPacketTests, givenEnableTimestampWaitForQueuesWhenFinishThenWa
|
||||
EXPECT_EQ(1u, timestampPacketContainer->peekNodes().size());
|
||||
|
||||
typename FamilyType::TimestampPacketType timestampData[] = {2, 2, 2, 2};
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
for (uint32_t i = 0; i < deferredTimestampPackets->peekNodes()[0]->getPacketsUsed(); i++) {
|
||||
timestampPacketContainer->peekNodes()[0]->assignDataToAllTimestamps(i, timestampData);
|
||||
}
|
||||
@ -754,7 +764,8 @@ HWTEST_F(TimestampPacketTests, givenOOQAndEnableTimestampWaitForQueuesWhenFinish
|
||||
|
||||
EXPECT_EQ(1u, deferredTimestampPackets->peekNodes().size());
|
||||
EXPECT_EQ(1u, timestampPacketContainer->peekNodes().size());
|
||||
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
ASSERT_GT(timestampPacketContainer->peekNodes().size(), 0u);
|
||||
typename FamilyType::TimestampPacketType timestampData[] = {2, 2, 2, 2};
|
||||
for (uint32_t i = 0; i < deferredTimestampPackets->peekNodes()[0]->getPacketsUsed(); i++) {
|
||||
deferredTimestampPackets->peekNodes()[0]->assignDataToAllTimestamps(i, timestampData);
|
||||
@ -800,6 +811,8 @@ HWTEST_F(TimestampPacketTests, givenEnableTimestampWaitForQueuesWhenFinishThenCa
|
||||
VariableBackup<uint32_t> backupPauseOffset(&CpuIntrinsicsTests::pauseOffset);
|
||||
VariableBackup<std::function<void()>> backupSetupPauseAddress(&CpuIntrinsicsTests::setupPauseAddress);
|
||||
|
||||
ASSERT_GT(deferredTimestampPackets->peekNodes().size(), 0u);
|
||||
ASSERT_GT(timestampPacketContainer->peekNodes().size(), 0u);
|
||||
deferredTimestampPackets->peekNodes()[0]->setPacketsUsed(1u);
|
||||
timestampPacketContainer->peekNodes()[0]->setPacketsUsed(1u);
|
||||
|
||||
@ -1319,12 +1332,14 @@ HWTEST_F(TimestampPacketTests, givenAlreadyAssignedNodeWhenEnqueueingNonBlockedT
|
||||
auto cmdQ = std::make_unique<MockCommandQueueHw<FamilyType>>(context, device.get(), nullptr);
|
||||
TimestampPacketContainer previousNodes;
|
||||
cmdQ->obtainNewTimestampPacketNodes(1, previousNodes, false, cmdQ->getGpgpuCommandStreamReceiver());
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto firstNode = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
|
||||
csr.storeMakeResidentAllocations = true;
|
||||
csr.timestampPacketWriteEnabled = true;
|
||||
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto secondNode = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
|
||||
EXPECT_NE(firstNode->getBaseGraphicsAllocation(), secondNode->getBaseGraphicsAllocation());
|
||||
@ -1341,6 +1356,8 @@ HWTEST_F(TimestampPacketTests, givenAlreadyAssignedNodeWhenEnqueueingBlockedThen
|
||||
auto cmdQ = clUniquePtr(new MockCommandQueueHw<FamilyType>(context, device.get(), nullptr));
|
||||
TimestampPacketContainer previousNodes;
|
||||
cmdQ->obtainNewTimestampPacketNodes(1, previousNodes, false, cmdQ->getGpgpuCommandStreamReceiver());
|
||||
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto firstNode = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
|
||||
csr.storeMakeResidentAllocations = true;
|
||||
@ -1349,6 +1366,7 @@ HWTEST_F(TimestampPacketTests, givenAlreadyAssignedNodeWhenEnqueueingBlockedThen
|
||||
UserEvent userEvent;
|
||||
cl_event clEvent = &userEvent;
|
||||
cmdQ->enqueueKernel(kernel->mockKernel, 1, nullptr, gws, nullptr, 1, &clEvent, nullptr);
|
||||
ASSERT_GT(cmdQ->timestampPacketContainer->peekNodes().size(), 0u);
|
||||
auto secondNode = cmdQ->timestampPacketContainer->peekNodes().at(0);
|
||||
|
||||
EXPECT_NE(firstNode->getBaseGraphicsAllocation(), secondNode->getBaseGraphicsAllocation());
|
||||
@ -1367,6 +1385,7 @@ HWTEST_F(TimestampPacketTests, givenAlreadyAssignedNodeWhenEnqueueingThenKeepDep
|
||||
MockCommandQueueHw<FamilyType> cmdQ(context, device.get(), nullptr);
|
||||
TimestampPacketContainer previousNodes;
|
||||
cmdQ.obtainNewTimestampPacketNodes(2, previousNodes, false, cmdQ.getGpgpuCommandStreamReceiver());
|
||||
ASSERT_GT(cmdQ.timestampPacketContainer->peekNodes().size(), 1u);
|
||||
firstNode.add(cmdQ.timestampPacketContainer->peekNodes().at(0));
|
||||
firstNode.add(cmdQ.timestampPacketContainer->peekNodes().at(1));
|
||||
auto firstTag0 = firstNode.getNode(0);
|
||||
|
@ -545,10 +545,12 @@ HWTEST_F(TimestampPacketTests, givenBlockedEnqueueWithoutKernelWhenSubmittingThe
|
||||
expectedQueueSemaphoresCount += 1;
|
||||
}
|
||||
EXPECT_EQ(expectedQueueSemaphoresCount, queueSemaphores.size());
|
||||
ASSERT_GT(queueSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(queueSemaphores[0])), node0.getNode(0), 0);
|
||||
|
||||
auto csrSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCsr.cmdList.begin(), hwParserCsr.cmdList.end());
|
||||
EXPECT_EQ(1u, csrSemaphores.size());
|
||||
ASSERT_GT(csrSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(csrSemaphores[0])), node1.getNode(0), 0);
|
||||
|
||||
EXPECT_TRUE(mockCsr->passedDispatchFlags.blocking);
|
||||
@ -591,6 +593,7 @@ HWTEST_F(TimestampPacketTests, givenWaitlistAndOutputEventWhenEnqueueingMarkerWi
|
||||
|
||||
auto csrSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCsr.cmdList.begin(), hwParserCsr.cmdList.end());
|
||||
EXPECT_EQ(1u, csrSemaphores.size());
|
||||
ASSERT_GT(csrSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(csrSemaphores[0])), node2.getNode(0), 0);
|
||||
|
||||
auto queueSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCmdQ.cmdList.begin(), hwParserCmdQ.cmdList.end());
|
||||
@ -599,6 +602,7 @@ HWTEST_F(TimestampPacketTests, givenWaitlistAndOutputEventWhenEnqueueingMarkerWi
|
||||
expectedQueueSemaphoresCount += 1;
|
||||
}
|
||||
EXPECT_EQ(expectedQueueSemaphoresCount, queueSemaphores.size());
|
||||
ASSERT_GT(queueSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(queueSemaphores[0])), node1.getNode(0), 0);
|
||||
}
|
||||
|
||||
@ -634,6 +638,7 @@ HWTEST_F(TimestampPacketTests, givenWaitlistAndOutputEventWhenEnqueueingBarrierW
|
||||
|
||||
auto csrSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCsr.cmdList.begin(), hwParserCsr.cmdList.end());
|
||||
EXPECT_EQ(1u, csrSemaphores.size());
|
||||
ASSERT_GT(csrSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(csrSemaphores[0])), node2.getNode(0), 0);
|
||||
|
||||
auto queueSemaphores = findAll<MI_SEMAPHORE_WAIT *>(hwParserCmdQ.cmdList.begin(), hwParserCmdQ.cmdList.end());
|
||||
@ -642,5 +647,6 @@ HWTEST_F(TimestampPacketTests, givenWaitlistAndOutputEventWhenEnqueueingBarrierW
|
||||
expectedQueueSemaphoresCount += 1;
|
||||
}
|
||||
EXPECT_EQ(expectedQueueSemaphoresCount, queueSemaphores.size());
|
||||
ASSERT_GT(queueSemaphores.size(), 0u);
|
||||
verifySemaphore(genCmdCast<MI_SEMAPHORE_WAIT *>(*(queueSemaphores[0])), node1.getNode(0), 0);
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ struct TimestampPacketTests : public ::testing::Test {
|
||||
|
||||
template <typename MI_SEMAPHORE_WAIT>
|
||||
void verifySemaphore(MI_SEMAPHORE_WAIT *semaphoreCmd, TagNodeBase *timestampPacketNode, uint32_t packetId) {
|
||||
EXPECT_NE(nullptr, semaphoreCmd);
|
||||
ASSERT_NE(nullptr, semaphoreCmd);
|
||||
EXPECT_EQ(semaphoreCmd->getCompareOperation(), MI_SEMAPHORE_WAIT::COMPARE_OPERATION::COMPARE_OPERATION_SAD_NOT_EQUAL_SDD);
|
||||
EXPECT_EQ(1u, semaphoreCmd->getSemaphoreDataDword());
|
||||
|
||||
|
Reference in New Issue
Block a user