Lines Matching +full:gpu +full:- +full:id

2  * Copyright(c) 2011-2016 Intel Corporation. All rights reserved.
40 struct drm_i915_private *i915 = vgpu->gvt->gt->i915; in populate_pvinfo_page()
46 vgpu_vreg_t(vgpu, vgtif_reg(vgt_id)) = vgpu->id; in populate_pvinfo_page()
66 gvt_dbg_core("Populate PVINFO PAGE for vGPU %d\n", vgpu->id); in populate_pvinfo_page()
73 drm_WARN_ON(&i915->drm, sizeof(struct vgt_if) != VGT_PVINFO_SIZE); in populate_pvinfo_page()
77 * vGPU type name is defined as GVTg_Vx_y which contains the physical GPU
82 * vGPU on same physical GPU depending on available resource. Each vGPU
98 * intel_gvt_init_vgpu_types - initialize vGPU type list
106 unsigned int low_avail = gvt_aperture_sz(gvt) - HOST_LOW_GM_SIZE; in intel_gvt_init_vgpu_types()
107 unsigned int high_avail = gvt_hidden_sz(gvt) - HOST_HIGH_GM_SIZE; in intel_gvt_init_vgpu_types()
111 gvt->types = kcalloc(num_types, sizeof(struct intel_vgpu_type), in intel_gvt_init_vgpu_types()
113 if (!gvt->types) in intel_gvt_init_vgpu_types()
114 return -ENOMEM; in intel_gvt_init_vgpu_types()
116 gvt->mdev_types = kcalloc(num_types, sizeof(*gvt->mdev_types), in intel_gvt_init_vgpu_types()
118 if (!gvt->mdev_types) in intel_gvt_init_vgpu_types()
124 if (low_avail / conf->low_mm == 0) in intel_gvt_init_vgpu_types()
126 if (conf->weight < 1 || conf->weight > VGPU_MAX_WEIGHT) in intel_gvt_init_vgpu_types()
129 sprintf(gvt->types[i].name, "GVTg_V%u_%s", in intel_gvt_init_vgpu_types()
130 GRAPHICS_VER(gvt->gt->i915) == 8 ? 4 : 5, conf->name); in intel_gvt_init_vgpu_types()
131 gvt->types[i].conf = conf; in intel_gvt_init_vgpu_types()
134 i, gvt->types[i].name, in intel_gvt_init_vgpu_types()
135 min(low_avail / conf->low_mm, in intel_gvt_init_vgpu_types()
136 high_avail / conf->high_mm), in intel_gvt_init_vgpu_types()
137 conf->low_mm, conf->high_mm, conf->fence, in intel_gvt_init_vgpu_types()
138 conf->weight, vgpu_edid_str(conf->edid)); in intel_gvt_init_vgpu_types()
140 gvt->mdev_types[i] = &gvt->types[i].type; in intel_gvt_init_vgpu_types()
141 gvt->mdev_types[i]->sysfs_name = gvt->types[i].name; in intel_gvt_init_vgpu_types()
144 gvt->num_types = i; in intel_gvt_init_vgpu_types()
148 kfree(gvt->mdev_types); in intel_gvt_init_vgpu_types()
150 kfree(gvt->types); in intel_gvt_init_vgpu_types()
151 return -EINVAL; in intel_gvt_init_vgpu_types()
156 kfree(gvt->mdev_types); in intel_gvt_clean_vgpu_types()
157 kfree(gvt->types); in intel_gvt_clean_vgpu_types()
161 * intel_gvt_activate_vgpu - activate a virtual GPU
162 * @vgpu: virtual GPU
164 * This function is called when user wants to activate a virtual GPU.
169 set_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_activate_vgpu()
173 * intel_gvt_deactivate_vgpu - deactivate a virtual GPU
174 * @vgpu: virtual GPU
176 * This function is called when user wants to deactivate a virtual GPU.
177 * The virtual GPU will be stopped.
182 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
184 clear_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_deactivate_vgpu()
186 if (atomic_read(&vgpu->submission.running_workload_num)) { in intel_gvt_deactivate_vgpu()
187 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
189 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
194 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
198 * intel_gvt_release_vgpu - release a virtual GPU
199 * @vgpu: virtual GPU
201 * This function is called when user wants to release a virtual GPU.
202 * The virtual GPU will be stopped and all runtime information will be
210 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_release_vgpu()
211 vgpu->d3_entered = false; in intel_gvt_release_vgpu()
214 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_release_vgpu()
218 * intel_gvt_destroy_vgpu - destroy a virtual GPU
219 * @vgpu: virtual GPU
221 * This function is called when user wants to destroy a virtual GPU.
226 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_destroy_vgpu()
227 struct drm_i915_private *i915 = gvt->gt->i915; in intel_gvt_destroy_vgpu()
229 drm_WARN(&i915->drm, test_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status), in intel_gvt_destroy_vgpu()
236 mutex_lock(&gvt->lock); in intel_gvt_destroy_vgpu()
237 idr_remove(&gvt->vgpu_idr, vgpu->id); in intel_gvt_destroy_vgpu()
238 mutex_unlock(&gvt->lock); in intel_gvt_destroy_vgpu()
240 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_destroy_vgpu()
252 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_destroy_vgpu()
258 * intel_gvt_create_idle_vgpu - create an idle virtual GPU
261 * This function is called when user wants to create an idle virtual GPU.
274 return ERR_PTR(-ENOMEM); in intel_gvt_create_idle_vgpu()
276 vgpu->id = IDLE_VGPU_IDR; in intel_gvt_create_idle_vgpu()
277 vgpu->gvt = gvt; in intel_gvt_create_idle_vgpu()
278 mutex_init(&vgpu->vgpu_lock); in intel_gvt_create_idle_vgpu()
281 INIT_LIST_HEAD(&vgpu->submission.workload_q_head[i]); in intel_gvt_create_idle_vgpu()
287 clear_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_create_idle_vgpu()
296 * intel_gvt_destroy_idle_vgpu - destroy an idle virtual GPU
297 * @vgpu: virtual GPU
299 * This function is called when user wants to destroy an idle virtual GPU.
304 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_destroy_idle_vgpu()
306 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_destroy_idle_vgpu()
314 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_create_vgpu()
315 struct drm_i915_private *dev_priv = gvt->gt->i915; in intel_gvt_create_vgpu()
319 BYTES_TO_MB(conf->low_mm), BYTES_TO_MB(conf->high_mm), in intel_gvt_create_vgpu()
320 conf->fence); in intel_gvt_create_vgpu()
322 mutex_lock(&gvt->lock); in intel_gvt_create_vgpu()
323 ret = idr_alloc(&gvt->vgpu_idr, vgpu, IDLE_VGPU_IDR + 1, GVT_MAX_VGPU, in intel_gvt_create_vgpu()
328 vgpu->id = ret; in intel_gvt_create_vgpu()
329 vgpu->sched_ctl.weight = conf->weight; in intel_gvt_create_vgpu()
330 mutex_init(&vgpu->vgpu_lock); in intel_gvt_create_vgpu()
331 mutex_init(&vgpu->dmabuf_lock); in intel_gvt_create_vgpu()
332 INIT_LIST_HEAD(&vgpu->dmabuf_obj_list_head); in intel_gvt_create_vgpu()
333 INIT_RADIX_TREE(&vgpu->page_track_tree, GFP_KERNEL); in intel_gvt_create_vgpu()
334 idr_init_base(&vgpu->object_idr, 1); in intel_gvt_create_vgpu()
336 vgpu->d3_entered = false; in intel_gvt_create_vgpu()
356 ret = intel_vgpu_init_display(vgpu, conf->edid); in intel_gvt_create_vgpu()
382 mutex_unlock(&gvt->lock); in intel_gvt_create_vgpu()
400 idr_remove(&gvt->vgpu_idr, vgpu->id); in intel_gvt_create_vgpu()
402 mutex_unlock(&gvt->lock); in intel_gvt_create_vgpu()
407 * intel_gvt_reset_vgpu_locked - reset a virtual GPU by DMLR or GT reset
408 * @vgpu: virtual GPU
412 * This function is called when user wants to reset a virtual GPU through
421 * Full GT Reset and Per-Engine GT Reset are soft reset flow for GPU engines
422 * (Render, Blitter, Video, Video Enhancement). It is defined by GPU Spec.
425 * virtual GDRST register to reset specific virtual GPU engine or all
432 * GPU engines. For FLR, engine_mask is ignored.
437 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_reset_vgpu_locked()
438 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_reset_vgpu_locked()
441 gvt_dbg_core("------------------------------------------\n"); in intel_gvt_reset_vgpu_locked()
443 vgpu->id, dmlr, engine_mask); in intel_gvt_reset_vgpu_locked()
445 vgpu->resetting_eng = resetting_eng; in intel_gvt_reset_vgpu_locked()
452 if (scheduler->current_vgpu == NULL) { in intel_gvt_reset_vgpu_locked()
453 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu_locked()
455 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu_locked()
459 /* full GPU reset or device model level reset */ in intel_gvt_reset_vgpu_locked()
466 if(!vgpu->d3_entered) { in intel_gvt_reset_vgpu_locked()
481 vgpu->failsafe = false; in intel_gvt_reset_vgpu_locked()
486 if(vgpu->d3_entered) in intel_gvt_reset_vgpu_locked()
487 vgpu->d3_entered = false; in intel_gvt_reset_vgpu_locked()
489 vgpu->pv_notified = false; in intel_gvt_reset_vgpu_locked()
493 vgpu->resetting_eng = 0; in intel_gvt_reset_vgpu_locked()
494 gvt_dbg_core("reset vgpu%d done\n", vgpu->id); in intel_gvt_reset_vgpu_locked()
495 gvt_dbg_core("------------------------------------------\n"); in intel_gvt_reset_vgpu_locked()
499 * intel_gvt_reset_vgpu - reset a virtual GPU (Function Level)
500 * @vgpu: virtual GPU
502 * This function is called when user wants to reset a virtual GPU.
507 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu()
509 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu()