Lines Matching refs:i915

30 int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,  in i915_gem_stolen_insert_node_in_range()  argument
36 if (!drm_mm_initialized(&i915->mm.stolen)) in i915_gem_stolen_insert_node_in_range()
40 if (INTEL_GEN(i915) >= 8 && start < 4096) in i915_gem_stolen_insert_node_in_range()
43 mutex_lock(&i915->mm.stolen_lock); in i915_gem_stolen_insert_node_in_range()
44 ret = drm_mm_insert_node_in_range(&i915->mm.stolen, node, in i915_gem_stolen_insert_node_in_range()
47 mutex_unlock(&i915->mm.stolen_lock); in i915_gem_stolen_insert_node_in_range()
52 int i915_gem_stolen_insert_node(struct drm_i915_private *i915, in i915_gem_stolen_insert_node() argument
56 return i915_gem_stolen_insert_node_in_range(i915, node, in i915_gem_stolen_insert_node()
62 void i915_gem_stolen_remove_node(struct drm_i915_private *i915, in i915_gem_stolen_remove_node() argument
65 mutex_lock(&i915->mm.stolen_lock); in i915_gem_stolen_remove_node()
67 mutex_unlock(&i915->mm.stolen_lock); in i915_gem_stolen_remove_node()
70 static int i915_adjust_stolen(struct drm_i915_private *i915, in i915_adjust_stolen() argument
73 struct i915_ggtt *ggtt = &i915->ggtt; in i915_adjust_stolen()
86 if (INTEL_GEN(i915) <= 4 && in i915_adjust_stolen()
87 !IS_G33(i915) && !IS_PINEVIEW(i915) && !IS_G4X(i915)) { in i915_adjust_stolen()
93 if (IS_GEN(i915, 4)) in i915_adjust_stolen()
116 drm_dbg(&i915->drm, in i915_adjust_stolen()
119 drm_dbg(&i915->drm, "Stolen memory adjusted to %pR\n", in i915_adjust_stolen()
130 r = devm_request_mem_region(i915->drm.dev, dsm->start, in i915_adjust_stolen()
143 r = devm_request_mem_region(i915->drm.dev, dsm->start + 1, in i915_adjust_stolen()
150 if (!r && !IS_GEN(i915, 3)) { in i915_adjust_stolen()
151 drm_err(&i915->drm, in i915_adjust_stolen()
162 static void i915_gem_cleanup_stolen(struct drm_i915_private *i915) in i915_gem_cleanup_stolen() argument
164 if (!drm_mm_initialized(&i915->mm.stolen)) in i915_gem_cleanup_stolen()
167 drm_mm_takedown(&i915->mm.stolen); in i915_gem_cleanup_stolen()
170 static void g4x_get_stolen_reserved(struct drm_i915_private *i915, in g4x_get_stolen_reserved() argument
176 IS_GM45(i915) ? in g4x_get_stolen_reserved()
179 resource_size_t stolen_top = i915->dsm.end + 1; in g4x_get_stolen_reserved()
181 drm_dbg(&i915->drm, "%s_STOLEN_RESERVED = %08x\n", in g4x_get_stolen_reserved()
182 IS_GM45(i915) ? "CTG" : "ELK", reg_val); in g4x_get_stolen_reserved()
191 drm_WARN(&i915->drm, IS_GEN(i915, 5), in g4x_get_stolen_reserved()
199 drm_WARN_ON(&i915->drm, in g4x_get_stolen_reserved()
205 static void gen6_get_stolen_reserved(struct drm_i915_private *i915, in gen6_get_stolen_reserved() argument
212 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = %08x\n", reg_val); in gen6_get_stolen_reserved()
238 static void vlv_get_stolen_reserved(struct drm_i915_private *i915, in vlv_get_stolen_reserved() argument
244 resource_size_t stolen_top = i915->dsm.end + 1; in vlv_get_stolen_reserved()
246 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = %08x\n", reg_val); in vlv_get_stolen_reserved()
267 static void gen7_get_stolen_reserved(struct drm_i915_private *i915, in gen7_get_stolen_reserved() argument
274 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = %08x\n", reg_val); in gen7_get_stolen_reserved()
294 static void chv_get_stolen_reserved(struct drm_i915_private *i915, in chv_get_stolen_reserved() argument
301 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = %08x\n", reg_val); in chv_get_stolen_reserved()
327 static void bdw_get_stolen_reserved(struct drm_i915_private *i915, in bdw_get_stolen_reserved() argument
333 resource_size_t stolen_top = i915->dsm.end + 1; in bdw_get_stolen_reserved()
335 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = %08x\n", reg_val); in bdw_get_stolen_reserved()
347 static void icl_get_stolen_reserved(struct drm_i915_private *i915, in icl_get_stolen_reserved() argument
354 drm_dbg(&i915->drm, "GEN6_STOLEN_RESERVED = 0x%016llx\n", reg_val); in icl_get_stolen_reserved()
377 static int i915_gem_init_stolen(struct drm_i915_private *i915) in i915_gem_init_stolen() argument
379 struct intel_uncore *uncore = &i915->uncore; in i915_gem_init_stolen()
383 mutex_init(&i915->mm.stolen_lock); in i915_gem_init_stolen()
385 if (intel_vgpu_active(i915)) { in i915_gem_init_stolen()
386 drm_notice(&i915->drm, in i915_gem_init_stolen()
392 if (intel_vtd_active() && INTEL_GEN(i915) < 8) { in i915_gem_init_stolen()
393 drm_notice(&i915->drm, in i915_gem_init_stolen()
402 i915->dsm = intel_graphics_stolen_res; in i915_gem_init_stolen()
404 if (i915_adjust_stolen(i915, &i915->dsm)) in i915_gem_init_stolen()
407 GEM_BUG_ON(i915->dsm.start == 0); in i915_gem_init_stolen()
408 GEM_BUG_ON(i915->dsm.end <= i915->dsm.start); in i915_gem_init_stolen()
410 stolen_top = i915->dsm.end + 1; in i915_gem_init_stolen()
414 switch (INTEL_GEN(i915)) { in i915_gem_init_stolen()
419 if (!IS_G4X(i915)) in i915_gem_init_stolen()
423 g4x_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
427 gen6_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
431 if (IS_VALLEYVIEW(i915)) in i915_gem_init_stolen()
432 vlv_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
435 gen7_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
441 if (IS_LP(i915)) in i915_gem_init_stolen()
442 chv_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
445 bdw_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
449 MISSING_CASE(INTEL_GEN(i915)); in i915_gem_init_stolen()
453 icl_get_stolen_reserved(i915, uncore, in i915_gem_init_stolen()
465 drm_err(&i915->drm, in i915_gem_init_stolen()
472 i915->dsm_reserved = in i915_gem_init_stolen()
475 if (!resource_contains(&i915->dsm, &i915->dsm_reserved)) { in i915_gem_init_stolen()
476 drm_err(&i915->drm, in i915_gem_init_stolen()
478 &i915->dsm_reserved, &i915->dsm); in i915_gem_init_stolen()
486 drm_dbg(&i915->drm, in i915_gem_init_stolen()
488 (u64)resource_size(&i915->dsm) >> 10, in i915_gem_init_stolen()
489 ((u64)resource_size(&i915->dsm) - reserved_total) >> 10); in i915_gem_init_stolen()
491 i915->stolen_usable_size = in i915_gem_init_stolen()
492 resource_size(&i915->dsm) - reserved_total; in i915_gem_init_stolen()
495 drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size); in i915_gem_init_stolen()
504 struct drm_i915_private *i915 = to_i915(dev); in i915_pages_create_for_stolen() local
508 GEM_BUG_ON(range_overflows(offset, size, resource_size(&i915->dsm))); in i915_pages_create_for_stolen()
528 sg_dma_address(sg) = (dma_addr_t)i915->dsm.start + offset; in i915_pages_create_for_stolen()
559 struct drm_i915_private *i915 = to_i915(obj->base.dev); in i915_gem_object_release_stolen() local
566 i915_gem_stolen_remove_node(i915, stolen); in i915_gem_object_release_stolen()
590 drm_gem_private_object_init(&mem->i915->drm, &obj->base, stolen->size); in __i915_gem_object_create_stolen()
595 cache_level = HAS_LLC(mem->i915) ? I915_CACHE_LLC : I915_CACHE_NONE; in __i915_gem_object_create_stolen()
617 struct drm_i915_private *i915 = mem->i915; in _i915_gem_object_create_stolen() local
622 if (!drm_mm_initialized(&i915->mm.stolen)) in _i915_gem_object_create_stolen()
632 ret = i915_gem_stolen_insert_node(i915, stolen, size, 4096); in _i915_gem_object_create_stolen()
645 i915_gem_stolen_remove_node(i915, stolen); in _i915_gem_object_create_stolen()
652 i915_gem_object_create_stolen(struct drm_i915_private *i915, in i915_gem_object_create_stolen() argument
655 return i915_gem_object_create_region(i915->mm.regions[INTEL_REGION_STOLEN], in i915_gem_object_create_stolen()
667 return i915_gem_init_stolen(mem->i915); in init_stolen()
672 i915_gem_cleanup_stolen(mem->i915); in release_stolen()
681 struct intel_memory_region *i915_gem_stolen_setup(struct drm_i915_private *i915) in i915_gem_stolen_setup() argument
683 return intel_memory_region_create(i915, in i915_gem_stolen_setup()
691 i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private *i915, in i915_gem_object_create_stolen_for_preallocated() argument
695 struct intel_memory_region *mem = i915->mm.regions[INTEL_REGION_STOLEN]; in i915_gem_object_create_stolen_for_preallocated()
700 if (!drm_mm_initialized(&i915->mm.stolen)) in i915_gem_object_create_stolen_for_preallocated()
703 drm_dbg(&i915->drm, in i915_gem_object_create_stolen_for_preallocated()
719 mutex_lock(&i915->mm.stolen_lock); in i915_gem_object_create_stolen_for_preallocated()
720 ret = drm_mm_reserve_node(&i915->mm.stolen, stolen); in i915_gem_object_create_stolen_for_preallocated()
721 mutex_unlock(&i915->mm.stolen_lock); in i915_gem_object_create_stolen_for_preallocated()
735 i915_gem_stolen_remove_node(i915, stolen); in i915_gem_object_create_stolen_for_preallocated()