struct nvkm_vm;
 
 enum nvkm_memory_target {
-       NVKM_MEM_TARGET_INST,
-       NVKM_MEM_TARGET_VRAM,
-       NVKM_MEM_TARGET_HOST,
+       NVKM_MEM_TARGET_INST, /* instance memory */
+       NVKM_MEM_TARGET_VRAM, /* video memory */
+       NVKM_MEM_TARGET_HOST, /* coherent system memory */
+       NVKM_MEM_TARGET_NCOH, /* non-coherent system memory */
 };
 
 struct nvkm_memory {
 
        }
        nvkm_done(cur);
 
-       target = (nvkm_memory_target(cur) == NVKM_MEM_TARGET_HOST) ? 0x3 : 0x0;
+       switch (nvkm_memory_target(cur)) {
+       case NVKM_MEM_TARGET_VRAM: target = 0; break;
+       case NVKM_MEM_TARGET_NCOH: target = 3; break;
+       default:
+               mutex_unlock(&subdev->mutex);
+               WARN_ON(1);
+               return;
+       }
 
        nvkm_wr32(device, 0x002270, (nvkm_memory_addr(cur) >> 12) |
                                    (target << 28));
 
        }
        nvkm_done(mem);
 
-       if (nvkm_memory_target(mem) == NVKM_MEM_TARGET_VRAM)
-               target = 0;
-       else
-               target = 3;
+       switch (nvkm_memory_target(mem)) {
+       case NVKM_MEM_TARGET_VRAM: target = 0; break;
+       case NVKM_MEM_TARGET_NCOH: target = 3; break;
+       default:
+               WARN_ON(1);
+               return;
+       }
 
        nvkm_wr32(device, 0x002270, (nvkm_memory_addr(mem) >> 12) |
                                    (target << 28));
 
        nvkm_falcon_wr32(falcon, 0xe00 + 4 * FALCON_DMAIDX_PHYS_SYS_NCOH, 0x6);
 
        /* Set context */
-       if (nvkm_memory_target(ctx->memory) == NVKM_MEM_TARGET_VRAM)
-               inst_loc = 0x0; /* FB */
-       else
-               inst_loc = 0x3; /* Non-coherent sysmem */
+       switch (nvkm_memory_target(ctx->memory)) {
+       case NVKM_MEM_TARGET_VRAM: inst_loc = 0; break;
+       case NVKM_MEM_TARGET_NCOH: inst_loc = 3; break;
+       default:
+               WARN_ON(1);
+               return;
+       }
 
        /* Enable context */
        nvkm_falcon_mask(falcon, 0x048, 0x1, 0x1);
 
 static enum nvkm_memory_target
 gk20a_instobj_target(struct nvkm_memory *memory)
 {
-       return NVKM_MEM_TARGET_HOST;
+       return NVKM_MEM_TARGET_NCOH;
 }
 
 static u64