{
        struct gf100_fb *fb = gf100_fb(base);
        struct nvkm_device *device = fb->base.subdev.device;
-       int ret, size = 0x1000;
+       int ret, size = 1 << (fb->base.page ? fb->base.page : 17);
 
        size = nvkm_longopt(device->cfgopt, "MmuDebugBufferSize", size);
-       size = min(size, 0x1000);
+       size = max(size, 0x1000);
 
        ret = nvkm_memory_new(device, NVKM_MEM_TARGET_INST, size, 0x1000,
                              true, &fb->base.mmu_rd);
 
        nvkm_wr32(device, 0x100cc8, nvkm_memory_addr(fb->base.mmu_wr) >> 8);
        nvkm_wr32(device, 0x100ccc, nvkm_memory_addr(fb->base.mmu_rd) >> 8);
        nvkm_mask(device, 0x100cc4, 0x00060000,
-                 max(nvkm_memory_size(fb->base.mmu_rd) >> 16, (u64)2) << 17);
+                 min(nvkm_memory_size(fb->base.mmu_rd) >> 16, (u64)2) << 17);
 }
 
 static const struct nvkm_fb_func