From 24b7348137cfd098d750243ed4be58800f91d767 Mon Sep 17 00:00:00 2001 From: pghafari Date: Mon, 23 Jan 2023 18:06:18 -0500 Subject: [PATCH] SWDEV-377571 - adding scopelock for hipDeviceReset Change-Id: I3dd95a40d6abff721a4774f26e99d1162bafdfa1 [ROCm/clr commit: 03f62b90ef1cba7847370ec93d4dcd261d5797b1] --- projects/clr/hipamd/src/hip_device.cpp | 15 +++++++++------ projects/clr/hipamd/src/hip_internal.hpp | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/projects/clr/hipamd/src/hip_device.cpp b/projects/clr/hipamd/src/hip_device.cpp index fedd62e56d..a3d059ac89 100644 --- a/projects/clr/hipamd/src/hip_device.cpp +++ b/projects/clr/hipamd/src/hip_device.cpp @@ -107,13 +107,16 @@ void Device::RemoveStreamFromPools(Stream* stream) { // ================================================================================================ void Device::Reset() { - auto it = mem_pools_.begin(); - while (it != mem_pools_.end()) { - auto current = it++; - (*current)->ReleaseAllMemory(); - delete *current; + { + amd::ScopedLock lock(lock_); + auto it = mem_pools_.begin(); + while (it != mem_pools_.end()) { + auto current = it++; + (*current)->ReleaseAllMemory(); + delete *current; + } + mem_pools_.clear(); } - mem_pools_.clear(); flags_ = hipDeviceScheduleSpin; hip::Stream::destroyAllStreams(deviceId_); amd::MemObjMap::Purge(devices()[0]); diff --git a/projects/clr/hipamd/src/hip_internal.hpp b/projects/clr/hipamd/src/hip_internal.hpp index 31ec410d5c..2c3f7fb919 100644 --- a/projects/clr/hipamd/src/hip_internal.hpp +++ b/projects/clr/hipamd/src/hip_internal.hpp @@ -382,7 +382,7 @@ namespace hip { /// HIP Device class class Device { - amd::Monitor lock_{"Device lock"}; + amd::Monitor lock_{"Device lock", true}; /// ROCclr context amd::Context* context_; /// Device's ID