Lines Matching refs:abi16
40 if (!cli->abi16) { in nouveau_abi16_get()
41 struct nouveau_abi16 *abi16; in nouveau_abi16_get() local
42 cli->abi16 = abi16 = kzalloc(sizeof(*abi16), GFP_KERNEL); in nouveau_abi16_get()
43 if (cli->abi16) { in nouveau_abi16_get()
48 INIT_LIST_HEAD(&abi16->channels); in nouveau_abi16_get()
57 &abi16->device) == 0) in nouveau_abi16_get()
58 return cli->abi16; in nouveau_abi16_get()
60 kfree(cli->abi16); in nouveau_abi16_get()
61 cli->abi16 = NULL; in nouveau_abi16_get()
66 return cli->abi16; in nouveau_abi16_get()
70 nouveau_abi16_put(struct nouveau_abi16 *abi16, int ret) in nouveau_abi16_put() argument
72 struct nouveau_cli *cli = (void *)nvif_client(&abi16->device.base); in nouveau_abi16_put()
109 nouveau_abi16_chan_fini(struct nouveau_abi16 *abi16, in nouveau_abi16_chan_fini() argument
135 abi16->handles &= ~(1ULL << (chan->chan->object->handle & 0xffff)); in nouveau_abi16_chan_fini()
144 nouveau_abi16_fini(struct nouveau_abi16 *abi16) in nouveau_abi16_fini() argument
146 struct nouveau_cli *cli = (void *)nvif_client(&abi16->device.base); in nouveau_abi16_fini()
150 list_for_each_entry_safe(chan, temp, &abi16->channels, head) { in nouveau_abi16_fini()
151 nouveau_abi16_chan_fini(abi16, chan); in nouveau_abi16_fini()
155 nvif_device_fini(&abi16->device); in nouveau_abi16_fini()
157 kfree(cli->abi16); in nouveau_abi16_fini()
158 cli->abi16 = NULL; in nouveau_abi16_fini()
240 struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); in nouveau_abi16_ioctl_channel_alloc() local
245 if (unlikely(!abi16)) in nouveau_abi16_ioctl_channel_alloc()
249 return nouveau_abi16_put(abi16, -ENODEV); in nouveau_abi16_ioctl_channel_alloc()
251 device = &abi16->device; in nouveau_abi16_ioctl_channel_alloc()
267 return nouveau_abi16_put(abi16, -EINVAL); in nouveau_abi16_ioctl_channel_alloc()
270 init->channel = __ffs64(~abi16->handles); in nouveau_abi16_ioctl_channel_alloc()
271 if (~abi16->handles == 0) in nouveau_abi16_ioctl_channel_alloc()
272 return nouveau_abi16_put(abi16, -ENOSPC); in nouveau_abi16_ioctl_channel_alloc()
276 return nouveau_abi16_put(abi16, -ENOMEM); in nouveau_abi16_ioctl_channel_alloc()
279 list_add(&chan->head, &abi16->channels); in nouveau_abi16_ioctl_channel_alloc()
280 abi16->handles |= (1ULL << init->channel); in nouveau_abi16_ioctl_channel_alloc()
330 nouveau_abi16_chan_fini(abi16, chan); in nouveau_abi16_ioctl_channel_alloc()
331 return nouveau_abi16_put(abi16, ret); in nouveau_abi16_ioctl_channel_alloc()
335 nouveau_abi16_chan(struct nouveau_abi16 *abi16, int channel) in nouveau_abi16_chan() argument
339 list_for_each_entry(chan, &abi16->channels, head) { in nouveau_abi16_chan()
351 struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); in nouveau_abi16_ioctl_channel_free() local
354 if (unlikely(!abi16)) in nouveau_abi16_ioctl_channel_free()
357 chan = nouveau_abi16_chan(abi16, req->channel); in nouveau_abi16_ioctl_channel_free()
359 return nouveau_abi16_put(abi16, -ENOENT); in nouveau_abi16_ioctl_channel_free()
360 nouveau_abi16_chan_fini(abi16, chan); in nouveau_abi16_ioctl_channel_free()
361 return nouveau_abi16_put(abi16, 0); in nouveau_abi16_ioctl_channel_free()
382 struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); in nouveau_abi16_ioctl_grobj_alloc() local
387 if (unlikely(!abi16)) in nouveau_abi16_ioctl_grobj_alloc()
391 return nouveau_abi16_put(abi16, -EINVAL); in nouveau_abi16_ioctl_grobj_alloc()
392 client = nvif_client(nvif_object(&abi16->device)); in nouveau_abi16_ioctl_grobj_alloc()
398 return nouveau_abi16_put(abi16, 0); in nouveau_abi16_ioctl_grobj_alloc()
402 return nouveau_abi16_put(abi16, ret); in nouveau_abi16_ioctl_grobj_alloc()
425 struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); in nouveau_abi16_ioctl_notifierobj_alloc() local
428 struct nvif_device *device = &abi16->device; in nouveau_abi16_ioctl_notifierobj_alloc()
432 if (unlikely(!abi16)) in nouveau_abi16_ioctl_notifierobj_alloc()
437 return nouveau_abi16_put(abi16, -EINVAL); in nouveau_abi16_ioctl_notifierobj_alloc()
438 client = nvif_client(nvif_object(&abi16->device)); in nouveau_abi16_ioctl_notifierobj_alloc()
440 chan = nouveau_abi16_chan(abi16, info->channel); in nouveau_abi16_ioctl_notifierobj_alloc()
442 return nouveau_abi16_put(abi16, -ENOENT); in nouveau_abi16_ioctl_notifierobj_alloc()
446 return nouveau_abi16_put(abi16, -ENOMEM); in nouveau_abi16_ioctl_notifierobj_alloc()
487 return nouveau_abi16_put(abi16, ret); in nouveau_abi16_ioctl_notifierobj_alloc()
506 struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); in nouveau_abi16_ioctl_gpuobj_free() local
512 if (unlikely(!abi16)) in nouveau_abi16_ioctl_gpuobj_free()
515 chan = nouveau_abi16_chan(abi16, fini->channel); in nouveau_abi16_ioctl_gpuobj_free()
517 return nouveau_abi16_put(abi16, -ENOENT); in nouveau_abi16_ioctl_gpuobj_free()
518 client = nvif_client(nvif_object(&abi16->device)); in nouveau_abi16_ioctl_gpuobj_free()
525 return nouveau_abi16_put(abi16, ret); in nouveau_abi16_ioctl_gpuobj_free()
536 return nouveau_abi16_put(abi16, 0); in nouveau_abi16_ioctl_gpuobj_free()