summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c
index 03a860ae75b1..5305078f730e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c
@@ -39,12 +39,22 @@ nvkm_vram_map(struct nvkm_memory *memory, u64 offset, struct nvkm_vmm *vmm,
struct nvkm_vma *vma, void *argv, u32 argc)
{
struct nvkm_vram *vram = nvkm_vram(memory);
- struct nvkm_mem mem = {
- .mem = vram->mn,
+ struct nvkm_vmm_map map = {
.memory = &vram->memory,
+ .offset = offset,
+ .mem = vram->mn,
};
- nvkm_vm_map_at(vma, offset, &mem);
- return 0;
+
+ if (vma->vm) {
+ struct nvkm_mem mem = {
+ .mem = vram->mn,
+ .memory = &vram->memory,
+ };
+ nvkm_vm_map_at(vma, offset, &mem);
+ return 0;
+ }
+
+ return nvkm_vmm_map(vmm, vma, argv, argc, &map);
}
static u64