diff options
author | Thierry Reding <treding@nvidia.com> | 2014-06-04 09:24:07 +0200 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2014-06-04 12:12:32 +0200 |
commit | 01de722e4387b7d227c8063e39504dddebec884b (patch) | |
tree | 52915d7fea54276852217653fe151ff7d86186c2 | |
parent | ab4cd3f00f143f77bf02dd5514e39b1b880bd61c (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.c | 8 |
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; |