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

2  * Copyright(c) 2011-2016 Intel Corporation. All rights reserved.
41 struct drm_i915_private *i915 = vgpu->gvt->gt->i915; in populate_pvinfo_page()
47 vgpu_vreg_t(vgpu, vgtif_reg(vgt_id)) = vgpu->id; in populate_pvinfo_page()
67 gvt_dbg_core("Populate PVINFO PAGE for vGPU %d\n", vgpu->id); in populate_pvinfo_page()
74 drm_WARN_ON(&i915->drm, sizeof(struct vgt_if) != VGT_PVINFO_SIZE); in populate_pvinfo_page()
78 * vGPU type name is defined as GVTg_Vx_y which contains the physical GPU
83 * vGPU on same physical GPU depending on available resource. Each vGPU
99 * intel_gvt_init_vgpu_types - initialize vGPU type list
107 unsigned int low_avail = gvt_aperture_sz(gvt) - HOST_LOW_GM_SIZE; in intel_gvt_init_vgpu_types()
108 unsigned int high_avail = gvt_hidden_sz(gvt) - HOST_HIGH_GM_SIZE; in intel_gvt_init_vgpu_types()
112 gvt->types = kcalloc(num_types, sizeof(struct intel_vgpu_type), in intel_gvt_init_vgpu_types()
114 if (!gvt->types) in intel_gvt_init_vgpu_types()
115 return -ENOMEM; in intel_gvt_init_vgpu_types()
117 gvt->mdev_types = kcalloc(num_types, sizeof(*gvt->mdev_types), in intel_gvt_init_vgpu_types()
119 if (!gvt->mdev_types) in intel_gvt_init_vgpu_types()
125 if (low_avail / conf->low_mm == 0) in intel_gvt_init_vgpu_types()
127 if (conf->weight < 1 || conf->weight > VGPU_MAX_WEIGHT) in intel_gvt_init_vgpu_types()
130 sprintf(gvt->types[i].name, "GVTg_V%u_%s", in intel_gvt_init_vgpu_types()
131 GRAPHICS_VER(gvt->gt->i915) == 8 ? 4 : 5, conf->name); in intel_gvt_init_vgpu_types()
132 gvt->types[i].conf = conf; in intel_gvt_init_vgpu_types()
135 i, gvt->types[i].name, in intel_gvt_init_vgpu_types()
136 min(low_avail / conf->low_mm, in intel_gvt_init_vgpu_types()
137 high_avail / conf->high_mm), in intel_gvt_init_vgpu_types()
138 conf->low_mm, conf->high_mm, conf->fence, in intel_gvt_init_vgpu_types()
139 conf->weight, vgpu_edid_str(conf->edid)); in intel_gvt_init_vgpu_types()
141 gvt->mdev_types[i] = &gvt->types[i].type; in intel_gvt_init_vgpu_types()
142 gvt->mdev_types[i]->sysfs_name = gvt->types[i].name; in intel_gvt_init_vgpu_types()
145 gvt->num_types = i; in intel_gvt_init_vgpu_types()
149 kfree(gvt->mdev_types); in intel_gvt_init_vgpu_types()
151 kfree(gvt->types); in intel_gvt_init_vgpu_types()
152 return -EINVAL; in intel_gvt_init_vgpu_types()
157 kfree(gvt->mdev_types); in intel_gvt_clean_vgpu_types()
158 kfree(gvt->types); in intel_gvt_clean_vgpu_types()
162 * intel_gvt_activate_vgpu - activate a virtual GPU
163 * @vgpu: virtual GPU
165 * This function is called when user wants to activate a virtual GPU.
170 set_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_activate_vgpu()
174 * intel_gvt_deactivate_vgpu - deactivate a virtual GPU
175 * @vgpu: virtual GPU
177 * This function is called when user wants to deactivate a virtual GPU.
178 * The virtual GPU will be stopped.
183 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
185 clear_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_deactivate_vgpu()
187 if (atomic_read(&vgpu->submission.running_workload_num)) { in intel_gvt_deactivate_vgpu()
188 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
190 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
195 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_deactivate_vgpu()
199 * intel_gvt_release_vgpu - release a virtual GPU
200 * @vgpu: virtual GPU
202 * This function is called when user wants to release a virtual GPU.
203 * The virtual GPU will be stopped and all runtime information will be
211 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_release_vgpu()
212 vgpu->d3_entered = false; in intel_gvt_release_vgpu()
215 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_release_vgpu()
219 * intel_gvt_destroy_vgpu - destroy a virtual GPU
220 * @vgpu: virtual GPU
222 * This function is called when user wants to destroy a virtual GPU.
227 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_destroy_vgpu()
228 struct drm_i915_private *i915 = gvt->gt->i915; in intel_gvt_destroy_vgpu()
230 drm_WARN(&i915->drm, test_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status), in intel_gvt_destroy_vgpu()
237 mutex_lock(&gvt->lock); in intel_gvt_destroy_vgpu()
238 idr_remove(&gvt->vgpu_idr, vgpu->id); in intel_gvt_destroy_vgpu()
239 mutex_unlock(&gvt->lock); in intel_gvt_destroy_vgpu()
241 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_destroy_vgpu()
253 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_destroy_vgpu()
259 * intel_gvt_create_idle_vgpu - create an idle virtual GPU
262 * This function is called when user wants to create an idle virtual GPU.
275 return ERR_PTR(-ENOMEM); in intel_gvt_create_idle_vgpu()
277 vgpu->id = IDLE_VGPU_IDR; in intel_gvt_create_idle_vgpu()
278 vgpu->gvt = gvt; in intel_gvt_create_idle_vgpu()
279 mutex_init(&vgpu->vgpu_lock); in intel_gvt_create_idle_vgpu()
282 INIT_LIST_HEAD(&vgpu->submission.workload_q_head[i]); in intel_gvt_create_idle_vgpu()
288 clear_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status); in intel_gvt_create_idle_vgpu()
297 * intel_gvt_destroy_idle_vgpu - destroy an idle virtual GPU
298 * @vgpu: virtual GPU
300 * This function is called when user wants to destroy an idle virtual GPU.
305 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_destroy_idle_vgpu()
307 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_destroy_idle_vgpu()
315 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_create_vgpu()
316 struct drm_i915_private *dev_priv = gvt->gt->i915; in intel_gvt_create_vgpu()
320 BYTES_TO_MB(conf->low_mm), BYTES_TO_MB(conf->high_mm), in intel_gvt_create_vgpu()
321 conf->fence); in intel_gvt_create_vgpu()
323 mutex_lock(&gvt->lock); in intel_gvt_create_vgpu()
324 ret = idr_alloc(&gvt->vgpu_idr, vgpu, IDLE_VGPU_IDR + 1, GVT_MAX_VGPU, in intel_gvt_create_vgpu()
329 vgpu->id = ret; in intel_gvt_create_vgpu()
330 vgpu->sched_ctl.weight = conf->weight; in intel_gvt_create_vgpu()
331 mutex_init(&vgpu->vgpu_lock); in intel_gvt_create_vgpu()
332 mutex_init(&vgpu->dmabuf_lock); in intel_gvt_create_vgpu()
333 INIT_LIST_HEAD(&vgpu->dmabuf_obj_list_head); in intel_gvt_create_vgpu()
334 INIT_RADIX_TREE(&vgpu->page_track_tree, GFP_KERNEL); in intel_gvt_create_vgpu()
335 idr_init_base(&vgpu->object_idr, 1); in intel_gvt_create_vgpu()
337 vgpu->d3_entered = false; in intel_gvt_create_vgpu()
357 ret = intel_vgpu_init_display(vgpu, conf->edid); in intel_gvt_create_vgpu()
383 mutex_unlock(&gvt->lock); in intel_gvt_create_vgpu()
401 idr_remove(&gvt->vgpu_idr, vgpu->id); in intel_gvt_create_vgpu()
403 mutex_unlock(&gvt->lock); in intel_gvt_create_vgpu()
408 * intel_gvt_reset_vgpu_locked - reset a virtual GPU by DMLR or GT reset
409 * @vgpu: virtual GPU
413 * This function is called when user wants to reset a virtual GPU through
422 * Full GT Reset and Per-Engine GT Reset are soft reset flow for GPU engines
423 * (Render, Blitter, Video, Video Enhancement). It is defined by GPU Spec.
426 * virtual GDRST register to reset specific virtual GPU engine or all
433 * GPU engines. For FLR, engine_mask is ignored.
438 struct intel_gvt *gvt = vgpu->gvt; in intel_gvt_reset_vgpu_locked()
439 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_reset_vgpu_locked()
442 gvt_dbg_core("------------------------------------------\n"); in intel_gvt_reset_vgpu_locked()
444 vgpu->id, dmlr, engine_mask); in intel_gvt_reset_vgpu_locked()
446 vgpu->resetting_eng = resetting_eng; in intel_gvt_reset_vgpu_locked()
453 if (scheduler->current_vgpu == NULL) { in intel_gvt_reset_vgpu_locked()
454 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu_locked()
456 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu_locked()
460 /* full GPU reset or device model level reset */ in intel_gvt_reset_vgpu_locked()
467 if(!vgpu->d3_entered) { in intel_gvt_reset_vgpu_locked()
482 vgpu->failsafe = false; in intel_gvt_reset_vgpu_locked()
487 if(vgpu->d3_entered) in intel_gvt_reset_vgpu_locked()
488 vgpu->d3_entered = false; in intel_gvt_reset_vgpu_locked()
490 vgpu->pv_notified = false; in intel_gvt_reset_vgpu_locked()
494 vgpu->resetting_eng = 0; in intel_gvt_reset_vgpu_locked()
495 gvt_dbg_core("reset vgpu%d done\n", vgpu->id); in intel_gvt_reset_vgpu_locked()
496 gvt_dbg_core("------------------------------------------\n"); in intel_gvt_reset_vgpu_locked()
500 * intel_gvt_reset_vgpu - reset a virtual GPU (Function Level)
501 * @vgpu: virtual GPU
503 * This function is called when user wants to reset a virtual GPU.
508 mutex_lock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu()
510 mutex_unlock(&vgpu->vgpu_lock); in intel_gvt_reset_vgpu()