mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 12:16:49 +07:00
drm/ttm: Remove unncessary retval from ttm_bo_vm_fault()
The dual ret/retval was more complex than need be. Now we drop the retval variable and assign the appropriate VM codes to ret instead. Signed-off-by: Tom St Denis <tom.stdenis@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
449f797a94
commit
de8dfb8e34
@ -118,7 +118,6 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
unsigned long address = vmf->address;
|
unsigned long address = vmf->address;
|
||||||
int retval = VM_FAULT_NOPAGE;
|
|
||||||
struct ttm_mem_type_manager *man =
|
struct ttm_mem_type_manager *man =
|
||||||
&bdev->man[bo->mem.mem_type];
|
&bdev->man[bo->mem.mem_type];
|
||||||
struct vm_area_struct cvma;
|
struct vm_area_struct cvma;
|
||||||
@ -158,7 +157,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
* (if at all) by redirecting mmap to the exporter.
|
* (if at all) by redirecting mmap to the exporter.
|
||||||
*/
|
*/
|
||||||
if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) {
|
if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) {
|
||||||
retval = VM_FAULT_SIGBUS;
|
ret = VM_FAULT_SIGBUS;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,10 +168,10 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
break;
|
break;
|
||||||
case -EBUSY:
|
case -EBUSY:
|
||||||
case -ERESTARTSYS:
|
case -ERESTARTSYS:
|
||||||
retval = VM_FAULT_NOPAGE;
|
ret = VM_FAULT_NOPAGE;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
default:
|
default:
|
||||||
retval = VM_FAULT_SIGBUS;
|
ret = VM_FAULT_SIGBUS;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -183,12 +182,10 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
*/
|
*/
|
||||||
ret = ttm_bo_vm_fault_idle(bo, vmf);
|
ret = ttm_bo_vm_fault_idle(bo, vmf);
|
||||||
if (unlikely(ret != 0)) {
|
if (unlikely(ret != 0)) {
|
||||||
retval = ret;
|
if (ret == VM_FAULT_RETRY &&
|
||||||
|
|
||||||
if (retval == VM_FAULT_RETRY &&
|
|
||||||
!(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) {
|
!(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) {
|
||||||
/* The BO has already been unreserved. */
|
/* The BO has already been unreserved. */
|
||||||
return retval;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
@ -196,12 +193,12 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
|
|
||||||
ret = ttm_mem_io_lock(man, true);
|
ret = ttm_mem_io_lock(man, true);
|
||||||
if (unlikely(ret != 0)) {
|
if (unlikely(ret != 0)) {
|
||||||
retval = VM_FAULT_NOPAGE;
|
ret = VM_FAULT_NOPAGE;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
ret = ttm_mem_io_reserve_vm(bo);
|
ret = ttm_mem_io_reserve_vm(bo);
|
||||||
if (unlikely(ret != 0)) {
|
if (unlikely(ret != 0)) {
|
||||||
retval = VM_FAULT_SIGBUS;
|
ret = VM_FAULT_SIGBUS;
|
||||||
goto out_io_unlock;
|
goto out_io_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +208,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
drm_vma_node_start(&bo->vma_node);
|
drm_vma_node_start(&bo->vma_node);
|
||||||
|
|
||||||
if (unlikely(page_offset >= bo->num_pages)) {
|
if (unlikely(page_offset >= bo->num_pages)) {
|
||||||
retval = VM_FAULT_SIGBUS;
|
ret = VM_FAULT_SIGBUS;
|
||||||
goto out_io_unlock;
|
goto out_io_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +235,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
|
|
||||||
/* Allocate all page at once, most common usage */
|
/* Allocate all page at once, most common usage */
|
||||||
if (ttm->bdev->driver->ttm_tt_populate(ttm, &ctx)) {
|
if (ttm->bdev->driver->ttm_tt_populate(ttm, &ctx)) {
|
||||||
retval = VM_FAULT_OOM;
|
ret = VM_FAULT_OOM;
|
||||||
goto out_io_unlock;
|
goto out_io_unlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -255,7 +252,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
} else {
|
} else {
|
||||||
page = ttm->pages[page_offset];
|
page = ttm->pages[page_offset];
|
||||||
if (unlikely(!page && i == 0)) {
|
if (unlikely(!page && i == 0)) {
|
||||||
retval = VM_FAULT_OOM;
|
ret = VM_FAULT_OOM;
|
||||||
goto out_io_unlock;
|
goto out_io_unlock;
|
||||||
} else if (unlikely(!page)) {
|
} else if (unlikely(!page)) {
|
||||||
break;
|
break;
|
||||||
@ -280,7 +277,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
if (unlikely((ret == -EBUSY) || (ret != 0 && i > 0)))
|
if (unlikely((ret == -EBUSY) || (ret != 0 && i > 0)))
|
||||||
break;
|
break;
|
||||||
else if (unlikely(ret != 0)) {
|
else if (unlikely(ret != 0)) {
|
||||||
retval =
|
ret =
|
||||||
(ret == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS;
|
(ret == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS;
|
||||||
goto out_io_unlock;
|
goto out_io_unlock;
|
||||||
}
|
}
|
||||||
@ -289,11 +286,12 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||||||
if (unlikely(++page_offset >= page_last))
|
if (unlikely(++page_offset >= page_last))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
ret = VM_FAULT_NOPAGE;
|
||||||
out_io_unlock:
|
out_io_unlock:
|
||||||
ttm_mem_io_unlock(man);
|
ttm_mem_io_unlock(man);
|
||||||
out_unlock:
|
out_unlock:
|
||||||
ttm_bo_unreserve(bo);
|
ttm_bo_unreserve(bo);
|
||||||
return retval;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ttm_bo_vm_open(struct vm_area_struct *vma)
|
static void ttm_bo_vm_open(struct vm_area_struct *vma)
|
||||||
|
Loading…
Reference in New Issue
Block a user