[PATCH] drm/i915/gvt: adjust for fixed vGPU types

Zhenyu Wang zhenyuw at linux.intel.com
Tue Feb 21 03:15:23 UTC 2017


Previous vGPU type create tried to determine vGPU types based on
some pre-defined resource sizes which might not be optimal. As
we'd like to fix vGPU types for _1, _2, _4 and _8 now, we can generate
maxium resource size for each fixed type based on physical resource.

Cc: Kevin Tian <kevin.tian at intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
---
 drivers/gpu/drm/i915/gvt/vgpu.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/vgpu.c b/drivers/gpu/drm/i915/gvt/vgpu.c
index dcfcce1dc00e..dfa8a99acdfe 100644
--- a/drivers/gpu/drm/i915/gvt/vgpu.c
+++ b/drivers/gpu/drm/i915/gvt/vgpu.c
@@ -75,7 +75,7 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 {
 	unsigned int num_types;
 	unsigned int i, low_avail, high_avail;
-	unsigned int min_low;
+	unsigned int types[] = {1, 2, 4, 8};
 
 	/* vGPU type name is defined as GVTg_Vx_y which contains
 	 * physical GPU generation type and 'y' means maximum vGPU
@@ -92,22 +92,18 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 	 */
 	low_avail = gvt_aperture_sz(gvt) - HOST_LOW_GM_SIZE;
 	high_avail = gvt_hidden_sz(gvt) - HOST_HIGH_GM_SIZE;
-	num_types = 4;
+	num_types = sizeof(types) / sizeof(unsigned int);
 
 	gvt->types = kzalloc(num_types * sizeof(struct intel_vgpu_type),
 			     GFP_KERNEL);
 	if (!gvt->types)
 		return -ENOMEM;
 
-	min_low = MB_TO_BYTES(32);
 	for (i = 0; i < num_types; ++i) {
-		if (low_avail / min_low == 0)
-			break;
-		gvt->types[i].low_gm_size = min_low;
-		gvt->types[i].high_gm_size = max((min_low<<3), MB_TO_BYTES(384U));
+		gvt->types[i].low_gm_size = low_avail / types[i];
+		gvt->types[i].high_gm_size = high_avail / types[i];
 		gvt->types[i].fence = 4;
-		gvt->types[i].max_instance = min(low_avail / min_low,
-						 high_avail / gvt->types[i].high_gm_size);
+		gvt->types[i].max_instance = types[i];
 		gvt->types[i].avail_instance = gvt->types[i].max_instance;
 
 		if (IS_GEN8(gvt->dev_priv))
@@ -117,7 +113,6 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 			sprintf(gvt->types[i].name, "GVTg_V5_%u",
 						gvt->types[i].max_instance);
 
-		min_low <<= 1;
 		gvt_dbg_core("type[%d]: %s max %u avail %u low %u high %u fence %u\n",
 			     i, gvt->types[i].name, gvt->types[i].max_instance,
 			     gvt->types[i].avail_instance,
-- 
2.11.0



More information about the intel-gvt-dev mailing list