mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +00:00
drm/nouveau: have ttm's fault handler called directly
There's no good reason for us to have our own anymore, this is left over from an early port to these TTM interfaces. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
a908b96c22
commit
1959ca80e1
@ -28,45 +28,17 @@
|
|||||||
|
|
||||||
#include "nouveau_drv.h"
|
#include "nouveau_drv.h"
|
||||||
|
|
||||||
static struct vm_operations_struct nouveau_ttm_vm_ops;
|
|
||||||
static const struct vm_operations_struct *ttm_vm_ops;
|
|
||||||
|
|
||||||
static int
|
|
||||||
nouveau_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
|
||||||
{
|
|
||||||
struct ttm_buffer_object *bo = vma->vm_private_data;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (unlikely(bo == NULL))
|
|
||||||
return VM_FAULT_NOPAGE;
|
|
||||||
|
|
||||||
ret = ttm_vm_ops->fault(vma, vmf);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma)
|
nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
struct drm_file *file_priv = filp->private_data;
|
struct drm_file *file_priv = filp->private_data;
|
||||||
struct drm_nouveau_private *dev_priv =
|
struct drm_nouveau_private *dev_priv =
|
||||||
file_priv->minor->dev->dev_private;
|
file_priv->minor->dev->dev_private;
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET))
|
if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET))
|
||||||
return drm_mmap(filp, vma);
|
return drm_mmap(filp, vma);
|
||||||
|
|
||||||
ret = ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev);
|
return ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev);
|
||||||
if (unlikely(ret != 0))
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (unlikely(ttm_vm_ops == NULL)) {
|
|
||||||
ttm_vm_ops = vma->vm_ops;
|
|
||||||
nouveau_ttm_vm_ops = *ttm_vm_ops;
|
|
||||||
nouveau_ttm_vm_ops.fault = &nouveau_ttm_fault;
|
|
||||||
}
|
|
||||||
|
|
||||||
vma->vm_ops = &nouveau_ttm_vm_ops;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user