Lines Matching refs:cli
155 struct nouveau_cli *cli = container_of(w, typeof(*cli), work);
157 mutex_lock(&cli->lock);
158 list_for_each_entry_safe(work, wtmp, &cli->worker, head) {
164 mutex_unlock(&cli->lock);
171 schedule_work(&work->cli->work);
175 nouveau_cli_work_queue(struct nouveau_cli *cli, struct dma_fence *fence,
179 work->cli = cli;
180 mutex_lock(&cli->lock);
181 list_add_tail(&work->head, &cli->worker);
184 mutex_unlock(&cli->lock);
188 nouveau_cli_fini(struct nouveau_cli *cli)
195 flush_work(&cli->work);
196 WARN_ON(!list_empty(&cli->worker));
198 usif_client_fini(cli);
199 nouveau_vmm_fini(&cli->svm);
200 nouveau_vmm_fini(&cli->vmm);
201 nvif_mmu_fini(&cli->mmu);
202 nvif_device_fini(&cli->device);
203 mutex_lock(&cli->drm->master.lock);
204 nvif_client_fini(&cli->base);
205 mutex_unlock(&cli->drm->master.lock);
206 mutex_destroy(&cli->lock);
207 mutex_destroy(&cli->mutex);
212 struct nouveau_cli *cli)
240 snprintf(cli->name, sizeof(cli->name), "%s", sname);
241 cli->drm = drm;
242 mutex_init(&cli->mutex);
243 usif_client_init(cli);
245 INIT_WORK(&cli->work, nouveau_cli_work);
246 INIT_LIST_HEAD(&cli->worker);
247 mutex_init(&cli->lock);
249 if (cli == &drm->master) {
251 cli->name, device, &cli->base);
254 ret = nvif_client_init(&drm->master.base, cli->name, device,
255 &cli->base);
259 NV_PRINTK(err, cli, "Client allocation failed: %d\n", ret);
263 ret = nvif_device_init(&cli->base.object, 0, NV_DEVICE,
267 &cli->device);
269 NV_PRINTK(err, cli, "Device allocation failed: %d\n", ret);
273 ret = nvif_mclass(&cli->device.object, mmus);
275 NV_PRINTK(err, cli, "No supported MMU class\n");
279 ret = nvif_mmu_init(&cli->device.object, mmus[ret].oclass, &cli->mmu);
281 NV_PRINTK(err, cli, "MMU allocation failed: %d\n", ret);
285 ret = nvif_mclass(&cli->mmu.object, vmms);
287 NV_PRINTK(err, cli, "No supported VMM class\n");
291 ret = nouveau_vmm_init(cli, vmms[ret].oclass, &cli->vmm);
293 NV_PRINTK(err, cli, "VMM allocation failed: %d\n", ret);
297 ret = nvif_mclass(&cli->mmu.object, mems);
299 NV_PRINTK(err, cli, "No supported MEM class\n");
303 cli->mem = &mems[ret];
307 nouveau_cli_fini(cli);
1053 struct nouveau_cli *cli;
1071 if (!(cli = kzalloc(sizeof(*cli), GFP_KERNEL))) {
1076 ret = nouveau_cli_init(drm, name, cli);
1080 cli->base.super = false;
1082 fpriv->driver_priv = cli;
1085 list_add(&cli->head, &drm->clients);
1089 if (ret && cli) {
1090 nouveau_cli_fini(cli);
1091 kfree(cli);
1102 struct nouveau_cli *cli = nouveau_cli(fpriv);
1107 mutex_lock(&cli->mutex);
1108 if (cli->abi16)
1109 nouveau_abi16_fini(cli->abi16);
1110 mutex_unlock(&cli->mutex);
1113 list_del(&cli->head);
1116 nouveau_cli_fini(cli);
1117 kfree(cli);