From 4a2b2e77f6f0e5e7fa277a17c0fc647d18a54799 Mon Sep 17 00:00:00 2001 From: German Andryeyev Date: Wed, 5 Aug 2020 10:21:42 -0400 Subject: [PATCH] Sync the current queue for P2P staging P2P staging uses device queues for transfer, hence the current queue must be in sync Change-Id: I8372a60590eed9dde62cb4c67ef4df5df82a8e8d [ROCm/clr commit: 0dc47d55d2e8b9aa00f9503706f82883fc8b19b5] --- projects/clr/rocclr/device/rocm/rocvirtual.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/clr/rocclr/device/rocm/rocvirtual.cpp b/projects/clr/rocclr/device/rocm/rocvirtual.cpp index 23a75f5e45..6df80a791b 100644 --- a/projects/clr/rocclr/device/rocm/rocvirtual.cpp +++ b/projects/clr/rocclr/device/rocm/rocvirtual.cpp @@ -1451,6 +1451,9 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { size, cmd.isEntireMemory()); } else { + // Sync the current queue, since P2P staging uses the device queues for transfer + releaseGpuMemoryFence(); + amd::ScopedLock lock(dev().P2PStageOps()); Memory* dstStgMem = static_cast( dev().P2PStage()->getDeviceMemory(*cmd.source().getContext().devices()[0]));