From f4b60f90f7e95cf979a8d8679c90344f5cd9c0b5 Mon Sep 17 00:00:00 2001 From: Damian Tomczak Date: Tue, 11 Feb 2025 20:50:09 +0000 Subject: [PATCH] test: when hostStorageDuplicated sempahores still wait for device address Related-to: NEO-12737 Signed-off-by: Damian Tomczak --- .../cmdlist/test_in_order_cmdlist_1.cpp | 24 +++++++++-- .../cmdlist/test_in_order_cmdlist_2.cpp | 40 +++++++++++++++++-- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp index b6938122a5..9c91ec9eec 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp @@ -3954,9 +3954,10 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenProgrammingComputeCopyThenDon context->freeMem(alloc); } -HWTEST2_F(InOrderCmdListTests, givenAlocFlushRequiredhenProgrammingComputeCopyThenSingalFromSdi, IsAtLeastXeHpCore) { +HWTEST2_F(InOrderCmdListTests, givenAllocFlushRequiredWhenProgrammingComputeCopyThenSignalFromSdi, IsAtLeastXeHpCore) { using WalkerVariant = typename FamilyType::WalkerVariant; using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM; + using MI_ATOMIC = typename FamilyType::MI_ATOMIC; auto immCmdList = createImmCmdList(); auto cmdStream = immCmdList->getCmdContainer().getCommandStream(); @@ -3985,13 +3986,28 @@ HWTEST2_F(InOrderCmdListTests, givenAlocFlushRequiredhenProgrammingComputeCopyTh }, walkerVariant); - auto sdiItor = find(walkerItor, cmdList.end()); + auto inOrderExecInfo = immCmdList->inOrderExecInfo; + auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress(); + auto miAtomicItor = find(walkerItor, cmdList.end()); + if (device->getProductHelper().isDcFlushAllowed() && inOrderExecInfo->isHostStorageDuplicated()) { + EXPECT_NE(cmdList.end(), miAtomicItor); + auto miAtomicCmd = genCmdCast(*miAtomicItor); + EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress()); + } else { + EXPECT_EQ(cmdList.end(), miAtomicItor); + } + + auto sdiItor = find(walkerItor, cmdList.end()); if (dcFlushRequired) { EXPECT_NE(cmdList.end(), sdiItor); - auto sdiCmd = genCmdCast(*sdiItor); + auto inOrderExecInfo = immCmdList->inOrderExecInfo; + if (inOrderExecInfo->isHostStorageDuplicated()) { + gpuAddress = reinterpret_cast(inOrderExecInfo->getBaseHostAddress()); + } - EXPECT_EQ(immCmdList->inOrderExecInfo->getBaseDeviceAddress(), sdiCmd->getAddress()); + auto sdiCmd = genCmdCast(*sdiItor); + EXPECT_EQ(gpuAddress, sdiCmd->getAddress()); } else { EXPECT_EQ(cmdList.end(), sdiItor); } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_2.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_2.cpp index d30162f013..b81ba64ad4 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_2.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_2.cpp @@ -3351,7 +3351,7 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_ auto inOrderExecInfo = immCmdList.inOrderExecInfo; - auto counterGpuAddress = inOrderExecInfo->isHostStorageDuplicated() ? reinterpret_cast(inOrderExecInfo->getBaseHostAddress()) : inOrderExecInfo->getBaseDeviceAddress(); + auto counterGpuAddress = inOrderExecInfo->getBaseDeviceAddress(); GenCmdList cmdList; ASSERT_TRUE(FamilyType::Parse::parseCommandBuffer(cmdList, ptrOffset(cmdStream.getCpuBase(), streamOffset), (cmdStream.getUsed() - streamOffset))); @@ -3441,6 +3441,10 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_ auto implicitCounterSdi = genCmdCast(*(++itor)); ASSERT_NE(nullptr, implicitCounterSdi); + if (inOrderExecInfo->isHostStorageDuplicated()) { + counterGpuAddress = reinterpret_cast(inOrderExecInfo->getBaseHostAddress()); + } + EXPECT_EQ(counterGpuAddress, implicitCounterSdi->getAddress()); EXPECT_EQ(submissionId + 1, implicitCounterSdi->getDataDword0()); @@ -3453,6 +3457,7 @@ void BcsSplitInOrderCmdListTests::verifySplitCmds(LinearStream &cmdStream, size_ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyThenHandleInOrderSignaling, IsAtLeastXeHpcCore) { using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM; using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; + using MI_ATOMIC = typename FamilyType::MI_ATOMIC; auto immCmdList = createBcsSplitImmCmdList(); @@ -3475,6 +3480,18 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyTh auto semaphoreItor = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), semaphoreItor); + auto inOrderExecInfo = immCmdList->inOrderExecInfo; + auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress(); + + auto miAtomicItor = find(semaphoreItor, cmdList.end()); + if (inOrderExecInfo->isHostStorageDuplicated()) { + EXPECT_NE(cmdList.end(), miAtomicItor); + auto miAtomicCmd = genCmdCast(*miAtomicItor); + EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress()); + } else { + EXPECT_EQ(cmdList.end(), miAtomicItor); + } + auto sdiItor = find(semaphoreItor, cmdList.end()); ASSERT_NE(cmdList.end(), sdiItor); @@ -3482,7 +3499,9 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyTh ASSERT_NE(nullptr, sdiCmd); - auto gpuAddress = immCmdList->inOrderExecInfo->getBaseDeviceAddress(); + if (inOrderExecInfo->isHostStorageDuplicated()) { + gpuAddress = reinterpret_cast(inOrderExecInfo->getBaseHostAddress()); + } EXPECT_EQ(gpuAddress, sdiCmd->getAddress()); EXPECT_EQ(immCmdList->isQwordInOrderCounter(), sdiCmd->getStoreQword()); @@ -3568,6 +3587,7 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenAppendingMemoryCo HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRegionThenHandleInOrderSignaling, IsAtLeastXeHpcCore) { using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM; using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT; + using MI_ATOMIC = typename FamilyType::MI_ATOMIC; auto immCmdList = createBcsSplitImmCmdList(); @@ -3592,6 +3612,18 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRe auto semaphoreItor = find(cmdList.begin(), cmdList.end()); ASSERT_NE(cmdList.end(), semaphoreItor); + auto inOrderExecInfo = immCmdList->inOrderExecInfo; + auto gpuAddress = inOrderExecInfo->getBaseDeviceAddress(); + + auto miAtomicItor = find(semaphoreItor, cmdList.end()); + if (inOrderExecInfo->isHostStorageDuplicated()) { + EXPECT_NE(cmdList.end(), miAtomicItor); + auto miAtomicCmd = genCmdCast(*miAtomicItor); + EXPECT_EQ(gpuAddress, miAtomicCmd->getMemoryAddress()); + } else { + EXPECT_EQ(cmdList.end(), miAtomicItor); + } + auto sdiItor = find(semaphoreItor, cmdList.end()); ASSERT_NE(cmdList.end(), sdiItor); @@ -3599,7 +3631,9 @@ HWTEST2_F(BcsSplitInOrderCmdListTests, givenBcsSplitEnabledWhenDispatchingCopyRe ASSERT_NE(nullptr, sdiCmd); - auto gpuAddress = immCmdList->inOrderExecInfo->getBaseDeviceAddress(); + if (inOrderExecInfo->isHostStorageDuplicated()) { + gpuAddress = reinterpret_cast(inOrderExecInfo->getBaseHostAddress()); + } EXPECT_EQ(gpuAddress, sdiCmd->getAddress()); EXPECT_EQ(immCmdList->isQwordInOrderCounter(), sdiCmd->getStoreQword());