Rev 2342 | Rev 2351 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2342 | Rev 2344 | ||
---|---|---|---|
Line 362... | Line 362... | ||
362 | pc->obj = obj; |
362 | pc->obj = obj; |
363 | ring->private = pc; |
363 | ring->private = pc; |
364 | return 0; |
364 | return 0; |
Line 365... | Line 365... | ||
365 | 365 | ||
366 | err_unpin: |
366 | err_unpin: |
367 | // i915_gem_object_unpin(obj); |
367 | i915_gem_object_unpin(obj); |
368 | err_unref: |
368 | err_unref: |
369 | // drm_gem_object_unreference(&obj->base); |
369 | drm_gem_object_unreference(&obj->base); |
370 | err: |
370 | err: |
371 | kfree(pc); |
371 | kfree(pc); |
372 | return ret; |
372 | return ret; |
Line 381... | Line 381... | ||
381 | if (!ring->private) |
381 | if (!ring->private) |
382 | return; |
382 | return; |
Line 383... | Line 383... | ||
383 | 383 | ||
384 | obj = pc->obj; |
384 | obj = pc->obj; |
385 | // kunmap(obj->pages[0]); |
385 | // kunmap(obj->pages[0]); |
386 | // i915_gem_object_unpin(obj); |
386 | i915_gem_object_unpin(obj); |
Line 387... | Line 387... | ||
387 | // drm_gem_object_unreference(&obj->base); |
387 | drm_gem_object_unreference(&obj->base); |
388 | 388 | ||
389 | kfree(pc); |
389 | kfree(pc); |
Line 946... | Line 946... | ||
946 | obj = ring->status_page.obj; |
946 | obj = ring->status_page.obj; |
947 | if (obj == NULL) |
947 | if (obj == NULL) |
948 | return; |
948 | return; |
Line 949... | Line 949... | ||
949 | 949 | ||
950 | kunmap(obj->pages[0]); |
950 | kunmap(obj->pages[0]); |
951 | // i915_gem_object_unpin(obj); |
951 | i915_gem_object_unpin(obj); |
952 | // drm_gem_object_unreference(&obj->base); |
952 | drm_gem_object_unreference(&obj->base); |
Line 953... | Line 953... | ||
953 | ring->status_page.obj = NULL; |
953 | ring->status_page.obj = NULL; |
954 | 954 | ||
Line 990... | Line 990... | ||
990 | ring->name, ring->status_page.gfx_addr); |
990 | ring->name, ring->status_page.gfx_addr); |
Line 991... | Line 991... | ||
991 | 991 | ||
Line 992... | Line 992... | ||
992 | return 0; |
992 | return 0; |
993 | 993 | ||
994 | err_unpin: |
994 | err_unpin: |
995 | // i915_gem_object_unpin(obj); |
995 | i915_gem_object_unpin(obj); |
996 | err_unref: |
996 | err_unref: |
997 | // drm_gem_object_unreference(&obj->base); |
997 | drm_gem_object_unreference(&obj->base); |
998 | err: |
998 | err: |
Line 999... | Line 999... | ||
999 | return ret; |
999 | return ret; |
Line 1063... | Line 1063... | ||
1063 | ring->effective_size -= 128; |
1063 | ring->effective_size -= 128; |
Line 1064... | Line 1064... | ||
1064 | 1064 | ||
Line 1065... | Line 1065... | ||
1065 | return 0; |
1065 | return 0; |
1066 | - | ||
1067 | err_unmap: |
1066 | |
1068 | // drm_core_ioremapfree(&ring->map, dev); |
1067 | err_unmap: |
1069 | FreeKernelSpace(ring->virtual_start); |
1068 | FreeKernelSpace(ring->virtual_start); |
1070 | err_unpin: |
1069 | err_unpin: |
1071 | // i915_gem_object_unpin(obj); |
1070 | i915_gem_object_unpin(obj); |
1072 | err_unref: |
1071 | err_unref: |
1073 | // drm_gem_object_unreference(&obj->base); |
1072 | drm_gem_object_unreference(&obj->base); |
1074 | ring->obj = NULL; |
1073 | ring->obj = NULL; |
1075 | err_hws: |
1074 | err_hws: |
1076 | // cleanup_status_page(ring); |
1075 | // cleanup_status_page(ring); |
Line 1094... | Line 1093... | ||
1094 | 1093 | ||
Line 1095... | Line 1094... | ||
1095 | I915_WRITE_CTL(ring, 0); |
1094 | I915_WRITE_CTL(ring, 0); |
Line 1096... | Line 1095... | ||
1096 | 1095 | ||
1097 | // drm_core_ioremapfree(&ring->map, ring->dev); |
1096 | // drm_core_ioremapfree(&ring->map, ring->dev); |
1098 | 1097 | ||
Line 1099... | Line 1098... | ||
1099 | // i915_gem_object_unpin(ring->obj); |
1098 | i915_gem_object_unpin(ring->obj); |
1100 | // drm_gem_object_unreference(&ring->obj->base); |
1099 | drm_gem_object_unreference(&ring->obj->base); |
Line 1154... | Line 1153... | ||
1154 | LEAVE(); |
1153 | LEAVE(); |
1155 | return 0; |
1154 | return 0; |
1156 | }; |
1155 | }; |
1157 | } |
1156 | } |
Line 1158... | Line -... | ||
1158 | - | ||
- | 1157 | ||
1159 | // trace_i915_ring_wait_begin(ring); |
1158 | |
1160 | end = jiffies + 3 * HZ; |
1159 | end = jiffies + 3 * HZ; |
1161 | do { |
1160 | do { |
1162 | ring->head = I915_READ_HEAD(ring); |
1161 | ring->head = I915_READ_HEAD(ring); |
1163 | ring->space = ring_space(ring); |
1162 | ring->space = ring_space(ring); |
Line 1172... | Line 1171... | ||
1172 | { |
1171 | { |
1173 | LEAVE(); |
1172 | LEAVE(); |
1174 | return -EAGAIN; |
1173 | return -EAGAIN; |
1175 | }; |
1174 | }; |
1176 | } while (!time_after(jiffies, end)); |
1175 | } while (!time_after(jiffies, end)); |
1177 | // trace_i915_ring_wait_end(ring); |
- | |
1178 | LEAVE(); |
1176 | LEAVE(); |
Line 1179... | Line 1177... | ||
1179 | 1177 | ||
1180 | return -EBUSY; |
1178 | return -EBUSY; |
Line 1409... | Line 1407... | ||
1409 | if (obj == NULL) |
1407 | if (obj == NULL) |
1410 | return -ENOMEM; |
1408 | return -ENOMEM; |
Line 1411... | Line 1409... | ||
1411 | 1409 | ||
1412 | ret = i915_gem_object_pin(obj, 4096, true); |
1410 | ret = i915_gem_object_pin(obj, 4096, true); |
1413 | if (ret) { |
1411 | if (ret) { |
1414 | // drm_gem_object_unreference(&obj->base); |
1412 | drm_gem_object_unreference(&obj->base); |
1415 | return ret; |
1413 | return ret; |
Line 1416... | Line 1414... | ||
1416 | } |
1414 | } |
- | 1415 | ||
- | 1416 | ptr = MapIoMem(obj->pages[0], 4096, PG_SW); |
|
1417 | 1417 | obj->mapped = ptr; |
|
1418 | ptr = ioremap(obj->pages[0], 4096); |
1418 | |
1419 | *ptr++ = MI_BATCH_BUFFER_END; |
- | |
Line 1420... | Line 1419... | ||
1420 | *ptr++ = MI_NOOP; |
1419 | *ptr++ = MI_BATCH_BUFFER_END; |
1421 | // iounmap(obj->pages[0]); |
1420 | *ptr++ = MI_NOOP; |
1422 | 1421 | ||
1423 | ret = i915_gem_object_set_to_gtt_domain(obj, false); |
1422 | ret = i915_gem_object_set_to_gtt_domain(obj, false); |
- | 1423 | if (ret) { |
|
- | 1424 | i915_gem_object_unpin(obj); |
|
1424 | if (ret) { |
1425 | drm_gem_object_unreference(&obj->base); |
1425 | // i915_gem_object_unpin(obj); |
1426 | FreeKernelSpace(ptr); |
- | 1427 | obj->mapped = NULL; |
|
- | 1428 | return ret; |
|
Line 1426... | Line 1429... | ||
1426 | // drm_gem_object_unreference(&obj->base); |
1429 | } |
1427 | return ret; |
1430 | FreeKernelSpace(ptr); |
Line 1428... | Line 1431... | ||
1428 | } |
1431 | obj->mapped = NULL; |