From c7942fd93f558e19fc7652fea4ef9fa3ed54eaf8 Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Tue, 29 Aug 2023 11:25:56 -0400 Subject: [PATCH] kfdtest: replace 0 initialized dbg structs with memset Use memset to avoid general 0 set padding issues and ASAN compile issues for debug tests. Signed-off-by: Jonathan Kim Change-Id: I0a5aca5b7b631083599573b47f1ae87d5d0d5d71 [ROCm/ROCR-Runtime commit: f9e20c8a9325c452dc7635d86a7e3bfa48c4eba6] --- .../tests/kfdtest/src/KFDDBGTest.cpp | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/projects/rocr-runtime/tests/kfdtest/src/KFDDBGTest.cpp b/projects/rocr-runtime/tests/kfdtest/src/KFDDBGTest.cpp index ced0f57b41..16b0775aed 100644 --- a/projects/rocr-runtime/tests/kfdtest/src/KFDDBGTest.cpp +++ b/projects/rocr-runtime/tests/kfdtest/src/KFDDBGTest.cpp @@ -108,7 +108,8 @@ TEST_F(KFDDBGTest, AttachToSpawnedProcess) { exit(0); } else { BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); uint64_t runtimeMask = KFD_EC_MASK(EC_PROCESS_RUNTIME); int childStatus; @@ -199,7 +200,8 @@ TEST_F(KFDDBGTest, AttachToRunningProcess) { exit(0); } else { BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); uint64_t runtimeMask = KFD_EC_MASK(EC_PROCESS_RUNTIME); int childStatus; @@ -271,7 +273,8 @@ TEST_F(KFDDBGTest, HitTrapEvent) { ASSERT_SUCCESS(hsaKmtRuntimeEnable(&rDebug, true)); BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); ASSERT_SUCCESS(debug->Attach(&r_info, sizeof(r_info), getpid(), 0)); ASSERT_EQ(r_info.runtime_state, DEBUG_RUNTIME_STATE_ENABLED); @@ -344,7 +347,8 @@ TEST_F(KFDDBGTest, HitTrapOnWaveStartEndEvent) { ASSERT_SUCCESS(hsaKmtRuntimeEnable(&rDebug, true)); BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); ASSERT_SUCCESS(debug->Attach(&r_info, sizeof(r_info), getpid(), 0)); ASSERT_EQ(r_info.runtime_state, DEBUG_RUNTIME_STATE_ENABLED); @@ -424,7 +428,8 @@ TEST_F(KFDDBGTest, SuspendQueues) { ASSERT_SUCCESS(hsaKmtRuntimeEnable(&rDebug, true)); BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); ASSERT_SUCCESS(debug->Attach(&r_info, sizeof(r_info), getpid(), 0)); ASSERT_EQ(r_info.runtime_state, DEBUG_RUNTIME_STATE_ENABLED); @@ -547,7 +552,8 @@ TEST_F(KFDDBGTest, HitMemoryViolation) { exit(0); } else { BaseDebug *debug = new BaseDebug(); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); uint64_t runtimeMask = KFD_EC_MASK(EC_PROCESS_RUNTIME); uint64_t memViolMask = KFD_EC_MASK(EC_DEVICE_MEMORY_VIOLATION); uint64_t subscribeMask = runtimeMask | memViolMask; @@ -579,7 +585,8 @@ TEST_F(KFDDBGTest, HitMemoryViolation) { const std::vector gpuNodes = m_NodeInfo.GetNodesWithGPU(); uint32_t snapshotSize = gpuNodes.size(); - struct kfd_dbg_device_info_entry deviceInfo[snapshotSize] = {0}; + struct kfd_dbg_device_info_entry deviceInfo[snapshotSize]; + memset(deviceInfo, 0, snapshotSize * sizeof(struct kfd_dbg_device_info_entry)); // Check device snapshot aligns with memory violation on target device. ASSERT_SUCCESS(debug->DeviceSnapshot(memViolMask, (uint64_t)(&deviceInfo[0]), @@ -640,14 +647,16 @@ TEST_F(KFDDBGTest, HitAddressWatch) { uint32_t rDebug; ASSERT_SUCCESS(hsaKmtRuntimeEnable(&rDebug, true)); - struct kfd_runtime_info r_info = {0}; + struct kfd_runtime_info r_info; + memset(&r_info, 0, sizeof(struct kfd_runtime_info)); BaseDebug *debug = new BaseDebug(); ASSERT_SUCCESS(debug->Attach(&r_info, sizeof(r_info), getpid(), 0)); ASSERT_EQ(r_info.runtime_state, DEBUG_RUNTIME_STATE_ENABLED); const std::vector gpuNodes = m_NodeInfo.GetNodesWithGPU(); uint32_t numDevices = gpuNodes.size(); - struct kfd_dbg_device_info_entry deviceInfo[numDevices] = {0}; + struct kfd_dbg_device_info_entry deviceInfo[numDevices]; + memset(deviceInfo, 0, numDevices * sizeof(struct kfd_dbg_device_info_entry)); ASSERT_SUCCESS(debug->DeviceSnapshot(0, (uint64_t)(&deviceInfo[0]), &numDevices)); ASSERT_EQ(numDevices, gpuNodes.size()); bool is_precise = nodeProps.Capability.ui32.PreciseMemoryOperationsSupported;