diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2010-01-04 00:52:20 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2010-01-10 23:41:15 -0500 |
| commit | 1959ca80e1f88b82c1cb7227f437910768ab0c94 (patch) | |
| tree | 1bc31d7c764f156dc3c92cb77c7aedcce16d9f62 | |
| parent | a908b96c22883f967e4ddf5aa5b35e3b4a0629a5 (diff) | |
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>
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_ttm.c | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c index 187eb84e4da5..c385d50f041b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c | |||
| @@ -28,45 +28,17 @@ | |||
| 28 | 28 | ||
| 29 | #include "nouveau_drv.h" | 29 | #include "nouveau_drv.h" |
| 30 | 30 | ||
| 31 | static struct vm_operations_struct nouveau_ttm_vm_ops; | ||
| 32 | static const struct vm_operations_struct *ttm_vm_ops; | ||
| 33 | |||
| 34 | static int | ||
| 35 | nouveau_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | ||
| 36 | { | ||
| 37 | struct ttm_buffer_object *bo = vma->vm_private_data; | ||
| 38 | int ret; | ||
| 39 | |||
| 40 | if (unlikely(bo == NULL)) | ||
| 41 | return VM_FAULT_NOPAGE; | ||
| 42 | |||
| 43 | ret = ttm_vm_ops->fault(vma, vmf); | ||
| 44 | return ret; | ||
| 45 | } | ||
| 46 | |||
| 47 | int | 31 | int |
| 48 | nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma) | 32 | nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma) |
| 49 | { | 33 | { |
| 50 | struct drm_file *file_priv = filp->private_data; | 34 | struct drm_file *file_priv = filp->private_data; |
| 51 | struct drm_nouveau_private *dev_priv = | 35 | struct drm_nouveau_private *dev_priv = |
| 52 | file_priv->minor->dev->dev_private; | 36 | file_priv->minor->dev->dev_private; |
| 53 | int ret; | ||
| 54 | 37 | ||
| 55 | if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) | 38 | if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) |
| 56 | return drm_mmap(filp, vma); | 39 | return drm_mmap(filp, vma); |
| 57 | 40 | ||
| 58 | ret = ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev); | 41 | return ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev); |
| 59 | if (unlikely(ret != 0)) | ||
| 60 | return ret; | ||
| 61 | |||
| 62 | if (unlikely(ttm_vm_ops == NULL)) { | ||
| 63 | ttm_vm_ops = vma->vm_ops; | ||
| 64 | nouveau_ttm_vm_ops = *ttm_vm_ops; | ||
| 65 | nouveau_ttm_vm_ops.fault = &nouveau_ttm_fault; | ||
| 66 | } | ||
| 67 | |||
| 68 | vma->vm_ops = &nouveau_ttm_vm_ops; | ||
| 69 | return 0; | ||
| 70 | } | 42 | } |
| 71 | 43 | ||
| 72 | static int | 44 | static int |
