@@ -531,7 +531,7 @@ hsa_status_t Runtime::CopyMemory(void* dst, const void* src, size_t size) {
531531 const auto & locked_copy = [&](void *& ptr, core::Agent* locking_agent) {
532532 void * tmp;
533533 hsa_agent_t agent = locking_agent->public_handle ();
534- hsa_status_t err = system_region->Lock (1 , &agent, ptr, 0 , size, &tmp);
534+ hsa_status_t err = system_region->Lock (1 , &agent, ptr, size, &tmp);
535535 if (err != HSA_STATUS_SUCCESS) throw AMD::hsa_exception (err, " Lock failed in hsa_memory_copy." );
536536 gpuPtr = ptr;
537537 ptr = tmp;
@@ -965,8 +965,7 @@ hsa_status_t Runtime::VMemoryPtrInfo(const void* ptr, hsa_amd_pointer_info_t* in
965965
966966 for (auto agentPermsIt = mappedHandleIt->second .allowed_agents .begin ();
967967 agentPermsIt != mappedHandleIt->second .allowed_agents .end (); agentPermsIt++) {
968- if ((*agentPermsIt).second .permissions != HSA_ACCESS_PERMISSION_NONE)
969- allowed_agents.push_back ((*agentPermsIt).second .targetAgent ->public_handle ());
968+ allowed_agents.push_back ((*agentPermsIt).second .targetAgent ->public_handle ());
970969 }
971970
972971 AMD::callback_t <decltype (alloc)> Alloc (alloc);
@@ -3460,7 +3459,7 @@ hsa_status_t Runtime::VMemoryHandleMap(void* va, size_t size, size_t in_offset,
34603459
34613460 mapped_handle_map_.emplace (
34623461 std::piecewise_construct, std::forward_as_tuple (va),
3463- std::forward_as_tuple (&memoryHandleIt->second , addressHandle, va, offset, size, drm_fd,
3462+ std::forward_as_tuple (&memoryHandleIt->second , addressHandle, offset, size, drm_fd,
34643463 reinterpret_cast <void *>(drm_cpu_addr), HSA_ACCESS_PERMISSION_NONE,
34653464 shareable_handle));
34663465
@@ -3597,49 +3596,16 @@ hsa_status_t Runtime::MappedHandleAllowedAgent::EnableAccess(hsa_access_permissi
35973596hsa_status_t Runtime::MappedHandleAllowedAgent::RemoveAccess () {
35983597 if (targetAgent->device_type () == core::Agent::DeviceType::kAmdCpuDevice ) {
35993598 #if defined(__linux__)
3600- if (permissions != HSA_ACCESS_PERMISSION_NONE) {
3601- if (munmap (va, size) != 0 ) return HSA_STATUS_ERROR;
3602-
3603- /* We need to keep the CPU mapping. So change it to PROT_NONE */
3604- void * mapped_ptr = mmap (va, mappedHandle->size , PROT_NONE, MAP_SHARED | MAP_FIXED,
3605- mappedHandle->drm_fd ,
3606- reinterpret_cast <uint64_t >(mappedHandle->drm_cpu_addr ));
3607- if (mapped_ptr != va)
3608- return HSA_STATUS_ERROR;
3609-
3610- permissions = HSA_ACCESS_PERMISSION_NONE;
3611- }
3599+ if (munmap (va, size) != 0 )
3600+ return HSA_STATUS_ERROR;
36123601 #else
36133602 assert (!" Unimplemented!" );
36143603 #endif
3604+ return HSA_STATUS_SUCCESS;
36153605 } else {
36163606 return targetAgent->driver ().Unmap (
36173607 shareable_handle, va, mappedHandle->offset , mappedHandle->size );
36183608 }
3619- return HSA_STATUS_SUCCESS;
3620- }
3621-
3622- Runtime::MappedHandle::MappedHandle (MemoryHandle *mem_handle, AddressHandle *address_handle,
3623- void * va, uint64_t offset, size_t size, int drm_fd, void *drm_cpu_addr,
3624- hsa_access_permission_t perm, ShareableHandle shareable_handle)
3625- : mem_handle (mem_handle), address_handle (address_handle), offset (offset),
3626- size (size), drm_fd (drm_fd), drm_cpu_addr (drm_cpu_addr),
3627- shareable_handle (shareable_handle)
3628- {
3629- /* Create a CPU mapping with PROT_NONE */
3630- auto cpu_agent = static_cast <AMD::GpuAgent*>(agentOwner ())->GetNearestCpuAgent ();
3631- auto agentPermsIt = allowed_agents.emplace (std::piecewise_construct,
3632- std::forward_as_tuple (cpu_agent),
3633- std::forward_as_tuple (this , cpu_agent, va,
3634- size, HSA_ACCESS_PERMISSION_NONE))
3635- .first ;
3636-
3637- auto ret = agentPermsIt->second .EnableAccess (HSA_ACCESS_PERMISSION_NONE);
3638- if (ret != HSA_STATUS_SUCCESS)
3639- throw AMD::hsa_exception (ret, " Failed to create default CPU mapping" );
3640- }
3641-
3642- Runtime::MappedHandle::~MappedHandle () {
36433609}
36443610
36453611// Note: VMemorySetAccessPerHandle should be called with &memory_lock_ held
0 commit comments