static void nouveau_cli_destroy(struct nouveau_cli *cli) { nvkm_vm_ref(NULL, &nvxx_client(&cli->base)->vm, NULL); nvif_client_fini(&cli->base); usif_client_fini(cli); }
atomic_inc(&vm->engref[NVDEV_SUBDEV_BAR]); /* * Bootstrap page table lookup. */ if (bar_nr == 3) { ret = nvkm_gpuobj_new(nv_object(priv), NULL, (bar_len >> 12) * 8, 0x1000, NVOBJ_FLAG_ZERO_ALLOC, &vm->pgt[0].obj[0]); vm->pgt[0].refcount[0] = 1; if (ret) return ret; } ret = nvkm_vm_ref(vm, &bar_vm->vm, bar_vm->pgd); nvkm_vm_ref(NULL, &vm, NULL); if (ret) return ret; nv_wo32(bar_vm->mem, 0x0200, lower_32_bits(bar_vm->pgd->addr)); nv_wo32(bar_vm->mem, 0x0204, upper_32_bits(bar_vm->pgd->addr)); nv_wo32(bar_vm->mem, 0x0208, lower_32_bits(bar_len - 1)); nv_wo32(bar_vm->mem, 0x020c, upper_32_bits(bar_len - 1)); return 0; } int gf100_bar_ctor(struct nvkm_object *parent, struct nvkm_object *engine, struct nvkm_oclass *oclass, void *data, u32 size, struct nvkm_object **pobject)