SWDEV-446399 - Fixed segfault in hipMemSetAccess

Change-Id: Ia1200d9bee03e8abade211287505f081e635ceec


[ROCm/clr commit: 1f6d416684]
This commit is contained in:
Ioannis Assiouras
2024-02-17 00:48:16 +00:00
szülő a4f180aea9
commit 80ddb8e4eb
5 fájl változott, egészen pontosan 9 új sor hozzáadva és 10 régi sor törölve
+2 -2
Fájl megtekintése
@@ -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,