Lines Matching refs:context
35 static void tegra_drm_channel_context_close(struct tegra_drm_context *context) in tegra_drm_channel_context_close() argument
40 xa_for_each(&context->mappings, id, mapping) in tegra_drm_channel_context_close()
43 xa_destroy(&context->mappings); in tegra_drm_channel_context_close()
45 host1x_channel_put(context->channel); in tegra_drm_channel_context_close()
47 kfree(context); in tegra_drm_channel_context_close()
52 struct tegra_drm_context *context; in tegra_drm_uapi_close_file() local
56 xa_for_each(&file->contexts, id, context) in tegra_drm_uapi_close_file()
57 tegra_drm_channel_context_close(context); in tegra_drm_uapi_close_file()
83 struct tegra_drm_context *context; in tegra_drm_ioctl_channel_open() local
89 context = kzalloc(sizeof(*context), GFP_KERNEL); in tegra_drm_ioctl_channel_open()
90 if (!context) in tegra_drm_ioctl_channel_open()
100 context->channel = host1x_channel_get(client->shared_channel); in tegra_drm_ioctl_channel_open()
102 context->channel = host1x_channel_request(&client->base); in tegra_drm_ioctl_channel_open()
103 if (!context->channel) { in tegra_drm_ioctl_channel_open()
109 err = xa_alloc(&fpriv->contexts, &args->context, context, XA_LIMIT(1, U32_MAX), in tegra_drm_ioctl_channel_open()
114 context->client = client; in tegra_drm_ioctl_channel_open()
115 xa_init_flags(&context->mappings, XA_FLAGS_ALLOC1); in tegra_drm_ioctl_channel_open()
126 host1x_channel_put(context->channel); in tegra_drm_ioctl_channel_open()
128 kfree(context); in tegra_drm_ioctl_channel_open()
137 struct tegra_drm_context *context; in tegra_drm_ioctl_channel_close() local
141 context = xa_load(&fpriv->contexts, args->context); in tegra_drm_ioctl_channel_close()
142 if (!context) { in tegra_drm_ioctl_channel_close()
147 xa_erase(&fpriv->contexts, args->context); in tegra_drm_ioctl_channel_close()
151 tegra_drm_channel_context_close(context); in tegra_drm_ioctl_channel_close()
161 struct tegra_drm_context *context; in tegra_drm_ioctl_channel_map() local
169 context = xa_load(&fpriv->contexts, args->context); in tegra_drm_ioctl_channel_map()
170 if (!context) { in tegra_drm_ioctl_channel_map()
183 mapping->dev = context->client->base.dev; in tegra_drm_ioctl_channel_map()
190 if (context->client->base.group) { in tegra_drm_ioctl_channel_map()
227 err = xa_alloc(&context->mappings, &args->mapping, mapping, XA_LIMIT(1, U32_MAX), in tegra_drm_ioctl_channel_map()
256 struct tegra_drm_context *context; in tegra_drm_ioctl_channel_unmap() local
260 context = xa_load(&fpriv->contexts, args->context); in tegra_drm_ioctl_channel_unmap()
261 if (!context) { in tegra_drm_ioctl_channel_unmap()
266 mapping = xa_erase(&context->mappings, args->mapping); in tegra_drm_ioctl_channel_unmap()