Lines Matching refs:vgpu
44 static int vgpu_pin_dma_address(struct intel_vgpu *vgpu,
50 if (intel_gvt_hypervisor_dma_pin_guest_page(vgpu, dma_addr))
56 static void vgpu_unpin_dma_address(struct intel_vgpu *vgpu,
59 intel_gvt_hypervisor_dma_unmap_guest_page(vgpu, dma_addr);
66 struct intel_vgpu *vgpu;
78 vgpu = fb_info->obj->vgpu;
79 if (WARN_ON(!vgpu))
97 if (vgpu_pin_dma_address(vgpu, PAGE_SIZE, dma_addr)) {
116 vgpu_unpin_dma_address(vgpu, dma_addr);
134 struct intel_vgpu *vgpu = obj->vgpu;
138 vgpu_unpin_dma_address(vgpu,
150 struct intel_vgpu *vgpu = obj->vgpu;
154 if (vgpu && vgpu->active && !list_empty(&vgpu->dmabuf_obj_list_head)) {
155 list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
159 intel_gvt_hypervisor_put_vfio_device(vgpu);
160 idr_remove(&vgpu->object_idr,
191 struct intel_vgpu *vgpu = obj->vgpu;
193 if (vgpu) {
194 mutex_lock(&vgpu->dmabuf_lock);
197 mutex_unlock(&vgpu->dmabuf_lock);
199 /* vgpu is NULL, as it has been removed already */
269 struct intel_vgpu *vgpu,
280 ret = intel_vgpu_decode_primary_plane(vgpu, &p);
310 ret = intel_vgpu_decode_cursor_plane(vgpu, &c);
346 if (!intel_gvt_ggtt_validate_range(vgpu, info->start, info->size)) {
355 pick_dmabuf_by_info(struct intel_vgpu *vgpu,
363 list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
387 pick_dmabuf_by_num(struct intel_vgpu *vgpu, u32 id)
393 list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
423 int intel_vgpu_query_plane(struct intel_vgpu *vgpu, void *args)
425 struct drm_device *dev = &vgpu->gvt->dev_priv->drm;
438 ret = vgpu_get_plane_info(dev, vgpu, &fb_info,
443 mutex_lock(&vgpu->dmabuf_lock);
445 dmabuf_obj = pick_dmabuf_by_info(vgpu, &fb_info);
459 gvt_dbg_dpy("vgpu%d: re-use dmabuf_obj ref %d, id %d\n",
460 vgpu->id, kref_read(&dmabuf_obj->kref),
462 mutex_unlock(&vgpu->dmabuf_lock);
466 mutex_unlock(&vgpu->dmabuf_lock);
479 gvt_vgpu_err("allocate intel vgpu fb info failed\n");
487 dmabuf_obj->vgpu = vgpu;
490 ret = idr_alloc(&vgpu->object_idr, dmabuf_obj, 1, 0, GFP_NOWAIT);
501 mutex_lock(&vgpu->dmabuf_lock);
502 if (intel_gvt_hypervisor_get_vfio_device(vgpu)) {
504 mutex_unlock(&vgpu->dmabuf_lock);
507 mutex_unlock(&vgpu->dmabuf_lock);
512 mutex_lock(&vgpu->dmabuf_lock);
513 list_add_tail(&dmabuf_obj->list, &vgpu->dmabuf_obj_list_head);
514 mutex_unlock(&vgpu->dmabuf_lock);
516 gvt_dbg_dpy("vgpu%d: %s new dmabuf_obj ref %d, id %d\n", vgpu->id,
531 int intel_vgpu_get_dmabuf(struct intel_vgpu *vgpu, unsigned int dmabuf_id)
533 struct drm_device *dev = &vgpu->gvt->dev_priv->drm;
540 mutex_lock(&vgpu->dmabuf_lock);
542 dmabuf_obj = pick_dmabuf_by_num(vgpu, dmabuf_id);
579 mutex_unlock(&vgpu->dmabuf_lock);
581 gvt_dbg_dpy("vgpu%d: dmabuf:%d, dmabuf ref %d, fd:%d\n"
583 vgpu->id, dmabuf_obj->dmabuf_id,
598 mutex_unlock(&vgpu->dmabuf_lock);
602 void intel_vgpu_dmabuf_cleanup(struct intel_vgpu *vgpu)
607 mutex_lock(&vgpu->dmabuf_lock);
608 list_for_each_safe(pos, n, &vgpu->dmabuf_obj_list_head) {
611 dmabuf_obj->vgpu = NULL;
613 idr_remove(&vgpu->object_idr, dmabuf_obj->dmabuf_id);
614 intel_gvt_hypervisor_put_vfio_device(vgpu);
624 mutex_unlock(&vgpu->dmabuf_lock);