Fixup previous commit

Add back missing pthread_mutex_lock.

Handle all error cases in fmm_release.

Change-Id: I8efa561ddadfd769cede5bf86300215ba3fb3dd1
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Dieser Commit ist enthalten in:
Felix Kuehling
2018-06-25 14:23:16 -04:00
Ursprung 8ee5647814
Commit 4e766615d7
+10 -5
Datei anzeigen
@@ -1303,6 +1303,9 @@ static void __fmm_release(vm_object_t *object, manageable_aperture_t *aperture)
if (!object)
return;
pthread_mutex_lock(&aperture->fmm_mutex);
/* If memory is user memory and it's still GPU mapped, munmap
* would cause an eviction. If the restore happens quickly
* enough, restore would also fail with an error message. So
@@ -1329,7 +1332,7 @@ static void __fmm_release(vm_object_t *object, manageable_aperture_t *aperture)
HSAKMT_STATUS fmm_release(void *address)
{
uint32_t i;
vm_object_t *object;
vm_object_t *object = NULL;
manageable_aperture_t *aperture = NULL;
for (i = 0; i < gpu_mem_count; i++) {
@@ -1362,9 +1365,8 @@ HSAKMT_STATUS fmm_release(void *address)
pthread_mutex_lock(&aperture->fmm_mutex);
object = vm_find_object_by_address(aperture, address, 0);
pthread_mutex_unlock(&aperture->fmm_mutex);
if (!object)
return HSAKMT_STATUS_MEMORY_NOT_REGISTERED;
__fmm_release(object, aperture);
if (object)
__fmm_release(object, aperture);
if (i < gpu_mem_count)
fmm_print(gpu_mem[i].gpu_id);
} else {
@@ -1385,7 +1387,10 @@ HSAKMT_STATUS fmm_release(void *address)
if (size)
munmap(address, size);
}
return HSAKMT_STATUS_SUCCESS;
return object ?
HSAKMT_STATUS_SUCCESS :
HSAKMT_STATUS_MEMORY_NOT_REGISTERED;
}
static int fmm_set_memory_policy(uint32_t gpu_id, int default_policy, int alt_policy,