From 77bab8596f95a94357eda28fcba85cfd4f6756fa Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Tue, 16 Oct 2018 18:34:26 -0400 Subject: [PATCH] kfdtest: Improve the SignalEvent test Create an extra event so that the event id to test is non zero. That way we can be sure the context id received in kernel ISR is non zero, which is different from the default value 0 when context id is not set at all. Change-Id: I7e261d1bbb783d5afd15558c7ac00493b1218cef Signed-off-by: Yong Zhao --- tests/kfdtest/src/KFDEventTest.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/kfdtest/src/KFDEventTest.cpp b/tests/kfdtest/src/KFDEventTest.cpp index 3888899dde..16e53613fc 100644 --- a/tests/kfdtest/src/KFDEventTest.cpp +++ b/tests/kfdtest/src/KFDEventTest.cpp @@ -86,21 +86,32 @@ TEST_F(KFDEventTest, CreateMaxEvents) { TEST_F(KFDEventTest, SignalEvent) { TEST_START(TESTPROFILE_RUNALL); - ASSERT_SUCCESS(CreateQueueTypeEvent(false, false, m_NodeInfo.HsaDefaultGPUNode(), &m_pHsaEvent)); - ASSERT_NE(0, m_pHsaEvent->EventData.HWData2); - PM4Queue queue; + HsaEvent *tmp_event; + int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; + ASSERT_SUCCESS(CreateQueueTypeEvent(false, false, defaultGPUNode, &tmp_event)); + + /* Intentionally let event id for m_pHsaEvent be non zero */ + ASSERT_SUCCESS(CreateQueueTypeEvent(false, false, defaultGPUNode, &m_pHsaEvent)); + ASSERT_NE(0, m_pHsaEvent->EventData.HWData2); + ASSERT_SUCCESS(queue.Create(defaultGPUNode)); - queue.PlaceAndSubmitPacket(PM4ReleaseMemoryPacket(false, m_pHsaEvent->EventData.HWData2, m_pHsaEvent->EventId)); + /* From gfx9 onward, m_pHsaEvent->EventId will also be passed to int_ctxid in + * the Release Mem packet, which is used as context id in ISR. + */ + queue.PlaceAndSubmitPacket(PM4ReleaseMemoryPacket(false, + m_pHsaEvent->EventData.HWData2, m_pHsaEvent->EventId)); queue.Wait4PacketConsumption(); EXPECT_SUCCESS(hsaKmtWaitOnEvent(m_pHsaEvent, g_TestTimeOut)); + EXPECT_SUCCESS(hsaKmtDestroyEvent(tmp_event)); + EXPECT_SUCCESS(queue.Destroy()); TEST_END;