From 0ee531003399616354de1a4f6e266a97b1e68b44 Mon Sep 17 00:00:00 2001 From: Zbigniew Zdanowicz Date: Thu, 8 Dec 2022 21:12:16 +0000 Subject: [PATCH] Fix issue with signal all event packets 2/n This fix reposition signal commands before possible staling commands like post sync pipe control or multi tile barrier Related-To: NEO-7490 Signed-off-by: Zbigniew Zdanowicz --- level_zero/core/source/cmdlist/cmdlist_hw.inl | 8 ++++---- .../sources/cmdlist/test_cmdlist_xehp_and_later.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 9d569031b0..ea467b3612 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -429,6 +429,10 @@ ze_result_t CommandListCoreFamily::appendEventReset(ze_event_hand baseAddr += event->getSinglePacketSize(); } + if ((this->signalAllEventPackets) && (packetsToReset < event->getMaxPacketsCount())) { + setRemainingEventPackets(event, Event::STATE_CLEARED); + } + if (appendPipeControlWithPostSync) { NEO::PipeControlArgs args; args.dcFlushEnable = getDcFlushRequired(!!event->signalScope); @@ -446,10 +450,6 @@ ze_result_t CommandListCoreFamily::appendEventReset(ze_event_hand } } - if ((this->signalAllEventPackets) && (packetsToReset < event->getMaxPacketsCount())) { - setRemainingEventPackets(event, Event::STATE_CLEARED); - } - if (NEO::DebugManager.flags.EnableSWTags.get()) { neoDevice->getRootDeviceEnvironment().tagsManager->insertTag( *commandContainer.getCommandStream(), diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp index db91e4739d..ef26b70a60 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp @@ -1096,7 +1096,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture { gpuAddress += event->getContextEndOffset(); } - for (uint32_t i = usePacketSignalStoreDataImm + extraCleanupStoreDataImm; i < itorStoreDataImm.size(); i++) { + for (uint32_t i = usePacketSignalStoreDataImm; i < itorStoreDataImm.size() - extraCleanupStoreDataImm; i++) { auto cmd = genCmdCast(*itorStoreDataImm[i]); EXPECT_EQ(gpuAddress, cmd->getAddress()); EXPECT_FALSE(cmd->getStoreQword());