From 4af3dec930d4476e3209f07321537a7661b2e11b Mon Sep 17 00:00:00 2001 From: Sarbojit Sarkar Date: Mon, 1 Aug 2022 12:03:44 +0000 Subject: [PATCH] SWDEV-344210 - Fixed page fault when mempool accessed from remote device Change-Id: I759296a3177560719759f7dd8766e07664285689 [ROCm/clr commit: db35b25d3f373ab8b4f507c30da259a219b5dad8] --- projects/clr/hipamd/src/hip_mempool_impl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/clr/hipamd/src/hip_mempool_impl.cpp b/projects/clr/hipamd/src/hip_mempool_impl.cpp index 852ce95823..6d23a986a8 100644 --- a/projects/clr/hipamd/src/hip_mempool_impl.cpp +++ b/projects/clr/hipamd/src/hip_mempool_impl.cpp @@ -135,7 +135,7 @@ void Heap::SetAccess(hip::Device* device, bool enable) { if (mem != nullptr) { if (!mem->getAllowedPeerAccess() && enable) { // Enable p2p access for the specified device - peer_device->deviceAllowAccess(reinterpret_cast(mem->virtualAddress())); + peer_device->allowPeerAccess(mem); mem->setAllowedPeerAccess(true); } else if (mem->getAllowedPeerAccess() && !enable) { mem->setAllowedPeerAccess(false); @@ -180,6 +180,7 @@ void* MemoryPool::AllocateMemory(size_t size, hip::Stream* stream) { auto vdi_device = it.first->asContext()->devices()[0]; device::Memory* mem = memory->getDeviceMemory(*vdi_device); if ((mem != nullptr) && (it.second != hipMemAccessFlagsProtNone)) { + vdi_device->allowPeerAccess(mem); mem->setAllowedPeerAccess(true); } }