summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-06-04 09:24:07 +0200
committerThierry Reding <treding@nvidia.com>2014-06-04 12:12:32 +0200
commit01de722e4387b7d227c8063e39504dddebec884b (patch)
tree52915d7fea54276852217653fe151ff7d86186c2
parentab4cd3f00f143f77bf02dd5514e39b1b880bd61c (diff)
drm/nouveau: Fix mapping of big pages
This patch courtesy of Alexandre Courbot (via IRC). An improved version of this has been submitted upstream for review. Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/vm/base.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
index 7dd680ff2f6..82eb0384e60 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
@@ -152,13 +152,17 @@ nouveau_vm_map_sg(struct nouveau_vma *vma, u64 delta, u64 length,
end = (pte + num);
if (unlikely(end >= max))
end = max;
- len = end - pte;
+
+ if (!big)
+ len = end - pte;
+ else
+ len = 1;
vmm->map_sg(vma, pgt, mem, pte, len, list);
num -= len;
pte += len;
- list += len;
+ list += len << bits;
if (unlikely(end >= max)) {
pde++;
pte = 0;