Lines Matching full:ring

17 	struct msm_fence_context *fctx = submit->ring->fctx;  in msm_job_run()
36 /* TODO move submit path over to using a per-ring lock.. */ in msm_job_run()
69 struct msm_ringbuffer *ring; in msm_ringbuffer_new() local
76 ring = kzalloc(sizeof(*ring), GFP_KERNEL); in msm_ringbuffer_new()
77 if (!ring) { in msm_ringbuffer_new()
82 ring->gpu = gpu; in msm_ringbuffer_new()
83 ring->id = id; in msm_ringbuffer_new()
85 ring->start = msm_gem_kernel_new(gpu->dev, MSM_GPU_RINGBUFFER_SZ, in msm_ringbuffer_new()
87 gpu->aspace, &ring->bo, &ring->iova); in msm_ringbuffer_new()
89 if (IS_ERR(ring->start)) { in msm_ringbuffer_new()
90 ret = PTR_ERR(ring->start); in msm_ringbuffer_new()
91 ring->start = NULL; in msm_ringbuffer_new()
95 msm_gem_object_set_name(ring->bo, "ring%d", id); in msm_ringbuffer_new()
96 args.name = to_msm_bo(ring->bo)->name, in msm_ringbuffer_new()
98 ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2); in msm_ringbuffer_new()
99 ring->next = ring->start; in msm_ringbuffer_new()
100 ring->cur = ring->start; in msm_ringbuffer_new()
102 ring->memptrs = memptrs; in msm_ringbuffer_new()
103 ring->memptrs_iova = memptrs_iova; in msm_ringbuffer_new()
105 ret = drm_sched_init(&ring->sched, &args); in msm_ringbuffer_new()
110 INIT_LIST_HEAD(&ring->submits); in msm_ringbuffer_new()
111 spin_lock_init(&ring->submit_lock); in msm_ringbuffer_new()
112 spin_lock_init(&ring->preempt_lock); in msm_ringbuffer_new()
114 snprintf(name, sizeof(name), "gpu-ring-%d", ring->id); in msm_ringbuffer_new()
116 ring->fctx = msm_fence_context_alloc(gpu->dev, &ring->memptrs->fence, name); in msm_ringbuffer_new()
118 return ring; in msm_ringbuffer_new()
121 msm_ringbuffer_destroy(ring); in msm_ringbuffer_new()
125 void msm_ringbuffer_destroy(struct msm_ringbuffer *ring) in msm_ringbuffer_destroy() argument
127 if (IS_ERR_OR_NULL(ring)) in msm_ringbuffer_destroy()
130 drm_sched_fini(&ring->sched); in msm_ringbuffer_destroy()
132 msm_fence_context_free(ring->fctx); in msm_ringbuffer_destroy()
134 msm_gem_kernel_put(ring->bo, ring->gpu->aspace); in msm_ringbuffer_destroy()
136 kfree(ring); in msm_ringbuffer_destroy()