SWDEV-446399 - Fixed segfault in hipMemSetAccess
Change-Id: Ia1200d9bee03e8abade211287505f081e635ceec
[ROCm/clr commit: 1f6d416684]
This commit is contained in:
@@ -283,7 +283,7 @@ hipError_t hipMemSetAccess(void* ptr, size_t size, const hipMemAccessDesc* desc,
|
||||
}
|
||||
|
||||
for (size_t desc_idx = 0; desc_idx < count; ++desc_idx) {
|
||||
|
||||
|
||||
if (desc[desc_idx].location.id >= g_devices.size()) {
|
||||
HIP_RETURN(hipErrorInvalidValue)
|
||||
}
|
||||
@@ -295,7 +295,7 @@ hipError_t hipMemSetAccess(void* ptr, size_t size, const hipMemAccessDesc* desc,
|
||||
auto& dev = g_devices[desc[desc_idx].location.id];
|
||||
amd::Device::VmmAccess access_flags = static_cast<amd::Device::VmmAccess>(desc[desc_idx].flags);
|
||||
|
||||
if (!dev->devices()[0]->SetMemAccess(ptr, size, access_flags, count)) {
|
||||
if (!dev->devices()[0]->SetMemAccess(ptr, size, access_flags)) {
|
||||
HIP_RETURN(hipErrorInvalidValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1813,8 +1813,7 @@ class Device : public RuntimeObject {
|
||||
* @param access_flags Access permissions
|
||||
* @param count Number of access permissions
|
||||
*/
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags,
|
||||
size_t count) = 0;
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) = 0;
|
||||
|
||||
/**
|
||||
* Get Access permisions for a virtual memory object.
|
||||
|
||||
@@ -147,7 +147,7 @@ class NullDevice : public amd::Device {
|
||||
virtual void* virtualAlloc(void* addr, size_t size, size_t alignment) { return nullptr; };
|
||||
virtual void virtualFree(void* addr) { };
|
||||
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags, size_t count) {
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -549,7 +549,7 @@ class Device : public NullDevice {
|
||||
virtual void* virtualAlloc(void* addr, size_t size, size_t alignment);
|
||||
virtual void virtualFree(void* addr);
|
||||
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags, size_t count) {
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2442,13 +2442,13 @@ void Device::virtualFree(void* addr) {
|
||||
}
|
||||
}
|
||||
|
||||
bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags, size_t count) {
|
||||
bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) {
|
||||
hsa_status_t hsa_status = HSA_STATUS_SUCCESS;
|
||||
hsa_amd_memory_access_desc_t desc;
|
||||
desc.permissions = static_cast<hsa_access_permission_t>(access_flags);
|
||||
desc.agent_handle = getBackendDevice();
|
||||
|
||||
if ((hsa_status = hsa_amd_vmem_set_access(va_addr, va_size, &desc, count))
|
||||
if ((hsa_status = hsa_amd_vmem_set_access(va_addr, va_size, &desc, 1))
|
||||
!= HSA_STATUS_SUCCESS) {
|
||||
LogPrintfError("Failed hsa_amd_vmem_set_access. Failed with status:%d \n", hsa_status);
|
||||
return false;
|
||||
|
||||
@@ -231,7 +231,7 @@ class NullDevice : public amd::Device {
|
||||
return;
|
||||
}
|
||||
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags, size_t count)
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags)
|
||||
override {
|
||||
ShouldNotReachHere();
|
||||
return false;
|
||||
@@ -468,7 +468,7 @@ class Device : public NullDevice {
|
||||
virtual void* virtualAlloc(void* req_addr, size_t size, size_t alignment);
|
||||
virtual void virtualFree(void* addr);
|
||||
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags, size_t count);
|
||||
virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags);
|
||||
virtual bool GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr);
|
||||
|
||||
virtual bool SetClockMode(const cl_set_device_clock_mode_input_amd setClockModeInput,
|
||||
|
||||
Reference in New Issue
Block a user