Lines Matching refs:dev_priv

193 static int vmw_resource_context_res_add(struct vmw_private *dev_priv,  in vmw_resource_context_res_add()  argument
202 mutex_lock(&dev_priv->binding_mutex); in vmw_resource_context_res_add()
216 mutex_unlock(&dev_priv->binding_mutex); in vmw_resource_context_res_add()
284 static int vmw_cmd_invalid(struct vmw_private *dev_priv, in vmw_cmd_invalid() argument
291 static int vmw_cmd_ok(struct vmw_private *dev_priv, in vmw_cmd_ok() argument
436 static int vmw_cmd_res_reloc_add(struct vmw_private *dev_priv, in vmw_cmd_res_reloc_add() argument
457 if (res_type == vmw_res_context && dev_priv->has_mob && in vmw_cmd_res_reloc_add()
467 ret = vmw_resource_context_res_add(dev_priv, sw_context, res); in vmw_cmd_res_reloc_add()
501 vmw_cmd_res_check(struct vmw_private *dev_priv, in vmw_cmd_res_check() argument
541 ret = vmw_user_resource_lookup_handle(dev_priv, in vmw_cmd_res_check()
557 ret = vmw_cmd_res_reloc_add(dev_priv, sw_context, res_type, id_loc, in vmw_cmd_res_check()
613 static int vmw_cmd_cid_check(struct vmw_private *dev_priv, in vmw_cmd_cid_check() argument
623 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_cid_check()
627 static int vmw_cmd_set_render_target_check(struct vmw_private *dev_priv, in vmw_cmd_set_render_target_check() argument
641 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_render_target_check()
647 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_set_render_target_check()
653 if (dev_priv->has_mob) { in vmw_cmd_set_render_target_check()
666 static int vmw_cmd_surface_copy_check(struct vmw_private *dev_priv, in vmw_cmd_surface_copy_check() argument
677 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
682 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
687 static int vmw_cmd_stretch_blt_check(struct vmw_private *dev_priv, in vmw_cmd_stretch_blt_check() argument
698 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
703 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
708 static int vmw_cmd_blt_surf_screen_check(struct vmw_private *dev_priv, in vmw_cmd_blt_surf_screen_check() argument
719 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_blt_surf_screen_check()
724 static int vmw_cmd_present_check(struct vmw_private *dev_priv, in vmw_cmd_present_check() argument
736 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_present_check()
754 static int vmw_query_bo_switch_prepare(struct vmw_private *dev_priv, in vmw_query_bo_switch_prepare() argument
776 dev_priv->has_mob, NULL); in vmw_query_bo_switch_prepare()
783 dev_priv->dummy_query_bo, in vmw_query_bo_switch_prepare()
784 dev_priv->has_mob, NULL); in vmw_query_bo_switch_prepare()
811 static void vmw_query_bo_switch_commit(struct vmw_private *dev_priv, in vmw_query_bo_switch_commit() argument
828 ret = vmw_fifo_emit_dummy_query(dev_priv, ctx->id); in vmw_query_bo_switch_commit()
834 if (dev_priv->pinned_bo != sw_context->cur_query_bo) { in vmw_query_bo_switch_commit()
835 if (dev_priv->pinned_bo) { in vmw_query_bo_switch_commit()
836 vmw_bo_pin(dev_priv->pinned_bo, false); in vmw_query_bo_switch_commit()
837 ttm_bo_unref(&dev_priv->pinned_bo); in vmw_query_bo_switch_commit()
849 vmw_bo_pin(dev_priv->dummy_query_bo, true); in vmw_query_bo_switch_commit()
850 dev_priv->dummy_query_bo_pinned = true; in vmw_query_bo_switch_commit()
853 dev_priv->query_cid = sw_context->last_query_ctx->id; in vmw_query_bo_switch_commit()
854 dev_priv->query_cid_valid = true; in vmw_query_bo_switch_commit()
855 dev_priv->pinned_bo = in vmw_query_bo_switch_commit()
879 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv, in vmw_translate_mob_ptr() argument
942 static int vmw_translate_guest_ptr(struct vmw_private *dev_priv, in vmw_translate_guest_ptr() argument
992 static int vmw_cmd_begin_gb_query(struct vmw_private *dev_priv, in vmw_cmd_begin_gb_query() argument
1004 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_gb_query()
1016 static int vmw_cmd_begin_query(struct vmw_private *dev_priv, in vmw_cmd_begin_query() argument
1028 if (unlikely(dev_priv->has_mob)) { in vmw_cmd_begin_query()
1042 return vmw_cmd_begin_gb_query(dev_priv, sw_context, header); in vmw_cmd_begin_query()
1045 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_query()
1057 static int vmw_cmd_end_gb_query(struct vmw_private *dev_priv, in vmw_cmd_end_gb_query() argument
1069 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_gb_query()
1073 ret = vmw_translate_mob_ptr(dev_priv, sw_context, in vmw_cmd_end_gb_query()
1079 ret = vmw_query_bo_switch_prepare(dev_priv, &vmw_bo->base, sw_context); in vmw_cmd_end_gb_query()
1092 static int vmw_cmd_end_query(struct vmw_private *dev_priv, in vmw_cmd_end_query() argument
1104 if (dev_priv->has_mob) { in vmw_cmd_end_query()
1120 return vmw_cmd_end_gb_query(dev_priv, sw_context, header); in vmw_cmd_end_query()
1123 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_query()
1127 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_end_query()
1133 ret = vmw_query_bo_switch_prepare(dev_priv, &vmw_bo->base, sw_context); in vmw_cmd_end_query()
1146 static int vmw_cmd_wait_gb_query(struct vmw_private *dev_priv, in vmw_cmd_wait_gb_query() argument
1158 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_gb_query()
1162 ret = vmw_translate_mob_ptr(dev_priv, sw_context, in vmw_cmd_wait_gb_query()
1179 static int vmw_cmd_wait_query(struct vmw_private *dev_priv, in vmw_cmd_wait_query() argument
1191 if (dev_priv->has_mob) { in vmw_cmd_wait_query()
1207 return vmw_cmd_wait_gb_query(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1210 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1214 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_wait_query()
1224 static int vmw_cmd_dma(struct vmw_private *dev_priv, in vmw_cmd_dma() argument
1248 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_dma()
1265 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dma()
1284 static int vmw_cmd_draw(struct vmw_private *dev_priv, in vmw_cmd_draw() argument
1299 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_draw()
1312 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1328 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1338 static int vmw_cmd_tex_state(struct vmw_private *dev_priv, in vmw_cmd_tex_state() argument
1358 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_tex_state()
1368 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_tex_state()
1374 if (dev_priv->has_mob) { in vmw_cmd_tex_state()
1389 static int vmw_cmd_check_define_gmrfb(struct vmw_private *dev_priv, in vmw_cmd_check_define_gmrfb() argument
1401 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_check_define_gmrfb()
1427 static int vmw_cmd_switch_backup(struct vmw_private *dev_priv, in vmw_cmd_switch_backup() argument
1440 ret = vmw_cmd_res_check(dev_priv, sw_context, res_type, in vmw_cmd_switch_backup()
1445 ret = vmw_translate_mob_ptr(dev_priv, sw_context, buf_id, &dma_buf); in vmw_cmd_switch_backup()
1467 static int vmw_cmd_bind_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_bind_gb_surface() argument
1478 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_bind_gb_surface()
1492 static int vmw_cmd_update_gb_image(struct vmw_private *dev_priv, in vmw_cmd_update_gb_image() argument
1503 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_image()
1516 static int vmw_cmd_update_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_update_gb_surface() argument
1527 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_surface()
1540 static int vmw_cmd_readback_gb_image(struct vmw_private *dev_priv, in vmw_cmd_readback_gb_image() argument
1551 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_image()
1564 static int vmw_cmd_readback_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_readback_gb_surface() argument
1575 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_surface()
1588 static int vmw_cmd_invalidate_gb_image(struct vmw_private *dev_priv, in vmw_cmd_invalidate_gb_image() argument
1599 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_image()
1612 static int vmw_cmd_invalidate_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_invalidate_gb_surface() argument
1623 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_surface()
1637 static int vmw_cmd_shader_define(struct vmw_private *dev_priv, in vmw_cmd_shader_define() argument
1652 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_define()
1658 if (unlikely(!dev_priv->has_mob)) in vmw_cmd_shader_define()
1662 ret = vmw_compat_shader_add(dev_priv, in vmw_cmd_shader_define()
1685 static int vmw_cmd_shader_destroy(struct vmw_private *dev_priv, in vmw_cmd_shader_destroy() argument
1699 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_destroy()
1705 if (unlikely(!dev_priv->has_mob)) in vmw_cmd_shader_destroy()
1730 static int vmw_cmd_set_shader(struct vmw_private *dev_priv, in vmw_cmd_set_shader() argument
1746 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader()
1752 if (!dev_priv->has_mob) in vmw_cmd_set_shader()
1762 ret = vmw_cmd_res_reloc_add(dev_priv, sw_context, in vmw_cmd_set_shader()
1773 ret = vmw_cmd_res_check(dev_priv, sw_context, in vmw_cmd_set_shader()
1796 static int vmw_cmd_set_shader_const(struct vmw_private *dev_priv, in vmw_cmd_set_shader_const() argument
1809 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader_const()
1815 if (dev_priv->has_mob) in vmw_cmd_set_shader_const()
1829 static int vmw_cmd_bind_gb_shader(struct vmw_private *dev_priv, in vmw_cmd_bind_gb_shader() argument
1841 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_shader, in vmw_cmd_bind_gb_shader()
1847 static int vmw_cmd_check_not_3d(struct vmw_private *dev_priv, in vmw_cmd_check_not_3d() argument
1885 return vmw_cmd_check_define_gmrfb(dev_priv, sw_context, buf); in vmw_cmd_check_not_3d()
2059 static int vmw_cmd_check(struct vmw_private *dev_priv, in vmw_cmd_check() argument
2068 bool gb = dev_priv->capabilities & SVGA_CAP_GBOBJECTS; in vmw_cmd_check()
2073 return vmw_cmd_check_not_3d(dev_priv, sw_context, buf, size); in vmw_cmd_check()
2099 ret = entry->func(dev_priv, sw_context, header); in vmw_cmd_check()
2122 static int vmw_cmd_check_all(struct vmw_private *dev_priv, in vmw_cmd_check_all() argument
2134 ret = vmw_cmd_check(dev_priv, sw_context, buf, &size); in vmw_cmd_check_all()
2227 static int vmw_validate_single_buffer(struct vmw_private *dev_priv, in vmw_validate_single_buffer() argument
2238 if (bo == dev_priv->pinned_bo || in vmw_validate_single_buffer()
2239 (bo == dev_priv->dummy_query_bo && in vmw_validate_single_buffer()
2240 dev_priv->dummy_query_bo_pinned)) in vmw_validate_single_buffer()
2267 static int vmw_validate_buffers(struct vmw_private *dev_priv, in vmw_validate_buffers() argument
2274 ret = vmw_validate_single_buffer(dev_priv, entry->base.bo, in vmw_validate_buffers()
2323 struct vmw_private *dev_priv, in vmw_execbuf_fence_commands() argument
2334 ret = vmw_fifo_send_fence(dev_priv, &sequence); in vmw_execbuf_fence_commands()
2341 ret = vmw_user_fence_create(file_priv, dev_priv->fman, in vmw_execbuf_fence_commands()
2344 ret = vmw_fence_create(dev_priv->fman, sequence, p_fence); in vmw_execbuf_fence_commands()
2347 (void) vmw_fallback_wait(dev_priv, false, false, in vmw_execbuf_fence_commands()
2377 vmw_execbuf_copy_fence_user(struct vmw_private *dev_priv, in vmw_execbuf_copy_fence_user() argument
2397 vmw_update_seqno(dev_priv, &dev_priv->fifo); in vmw_execbuf_copy_fence_user()
2398 fence_rep.passed_seqno = dev_priv->last_read_seqno; in vmw_execbuf_copy_fence_user()
2425 struct vmw_private *dev_priv, in vmw_execbuf_process() argument
2433 struct vmw_sw_context *sw_context = &dev_priv->ctx; in vmw_execbuf_process()
2442 ret = mutex_lock_interruptible(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
2470 sw_context->cur_query_bo = dev_priv->pinned_bo; in vmw_execbuf_process()
2485 ret = vmw_cmd_check_all(dev_priv, sw_context, kernel_commands, in vmw_execbuf_process()
2499 ret = vmw_validate_buffers(dev_priv, sw_context); in vmw_execbuf_process()
2508 ret = vmw_wait_lag(dev_priv, &dev_priv->fifo.marker_queue, in vmw_execbuf_process()
2515 ret = mutex_lock_interruptible(&dev_priv->binding_mutex); in vmw_execbuf_process()
2521 if (dev_priv->has_mob) { in vmw_execbuf_process()
2527 cmd = vmw_fifo_reserve(dev_priv, command_size); in vmw_execbuf_process()
2540 vmw_fifo_commit(dev_priv, command_size); in vmw_execbuf_process()
2541 mutex_unlock(&dev_priv->binding_mutex); in vmw_execbuf_process()
2543 vmw_query_bo_switch_commit(dev_priv, sw_context); in vmw_execbuf_process()
2544 ret = vmw_execbuf_fence_commands(file_priv, dev_priv, in vmw_execbuf_process()
2561 if (unlikely(dev_priv->pinned_bo != NULL && in vmw_execbuf_process()
2562 !dev_priv->query_cid_valid)) in vmw_execbuf_process()
2563 __vmw_execbuf_release_pinned_bo(dev_priv, fence); in vmw_execbuf_process()
2566 vmw_execbuf_copy_fence_user(dev_priv, vmw_fpriv(file_priv), ret, in vmw_execbuf_process()
2579 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
2590 mutex_unlock(&dev_priv->binding_mutex); in vmw_execbuf_process()
2598 if (unlikely(dev_priv->pinned_bo != NULL && in vmw_execbuf_process()
2599 !dev_priv->query_cid_valid)) in vmw_execbuf_process()
2600 __vmw_execbuf_release_pinned_bo(dev_priv, NULL); in vmw_execbuf_process()
2606 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
2628 static void vmw_execbuf_unpin_panic(struct vmw_private *dev_priv) in vmw_execbuf_unpin_panic() argument
2632 (void) vmw_fallback_wait(dev_priv, false, true, 0, false, 10*HZ); in vmw_execbuf_unpin_panic()
2633 vmw_bo_pin(dev_priv->pinned_bo, false); in vmw_execbuf_unpin_panic()
2634 vmw_bo_pin(dev_priv->dummy_query_bo, false); in vmw_execbuf_unpin_panic()
2635 dev_priv->dummy_query_bo_pinned = false; in vmw_execbuf_unpin_panic()
2663 void __vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv, in __vmw_execbuf_release_pinned_bo() argument
2672 if (dev_priv->pinned_bo == NULL) in __vmw_execbuf_release_pinned_bo()
2677 pinned_val.bo = ttm_bo_reference(dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
2681 query_val.bo = ttm_bo_reference(dev_priv->dummy_query_bo); in __vmw_execbuf_release_pinned_bo()
2688 vmw_execbuf_unpin_panic(dev_priv); in __vmw_execbuf_release_pinned_bo()
2692 if (dev_priv->query_cid_valid) { in __vmw_execbuf_release_pinned_bo()
2694 ret = vmw_fifo_emit_dummy_query(dev_priv, dev_priv->query_cid); in __vmw_execbuf_release_pinned_bo()
2696 vmw_execbuf_unpin_panic(dev_priv); in __vmw_execbuf_release_pinned_bo()
2699 dev_priv->query_cid_valid = false; in __vmw_execbuf_release_pinned_bo()
2702 vmw_bo_pin(dev_priv->pinned_bo, false); in __vmw_execbuf_release_pinned_bo()
2703 vmw_bo_pin(dev_priv->dummy_query_bo, false); in __vmw_execbuf_release_pinned_bo()
2704 dev_priv->dummy_query_bo_pinned = false; in __vmw_execbuf_release_pinned_bo()
2707 (void) vmw_execbuf_fence_commands(NULL, dev_priv, &lfence, in __vmw_execbuf_release_pinned_bo()
2717 ttm_bo_unref(&dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
2727 ttm_bo_unref(&dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
2748 void vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv) in vmw_execbuf_release_pinned_bo() argument
2750 mutex_lock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_release_pinned_bo()
2751 if (dev_priv->query_cid_valid) in vmw_execbuf_release_pinned_bo()
2752 __vmw_execbuf_release_pinned_bo(dev_priv, NULL); in vmw_execbuf_release_pinned_bo()
2753 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_release_pinned_bo()
2760 struct vmw_private *dev_priv = vmw_priv(dev); in vmw_execbuf_ioctl() local
2778 ret = ttm_read_lock(&dev_priv->reservation_sem, true); in vmw_execbuf_ioctl()
2782 ret = vmw_execbuf_process(file_priv, dev_priv, in vmw_execbuf_ioctl()
2787 ttm_read_unlock(&dev_priv->reservation_sem); in vmw_execbuf_ioctl()
2791 vmw_kms_cursor_post_execbuf(dev_priv); in vmw_execbuf_ioctl()