Lines Matching refs:dev_priv
28 int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *dev_priv, in i915_gem_stolen_insert_node_in_range() argument
34 if (!drm_mm_initialized(&dev_priv->mm.stolen)) in i915_gem_stolen_insert_node_in_range()
38 if (INTEL_GEN(dev_priv) >= 8 && start < 4096) in i915_gem_stolen_insert_node_in_range()
41 mutex_lock(&dev_priv->mm.stolen_lock); in i915_gem_stolen_insert_node_in_range()
42 ret = drm_mm_insert_node_in_range(&dev_priv->mm.stolen, node, in i915_gem_stolen_insert_node_in_range()
45 mutex_unlock(&dev_priv->mm.stolen_lock); in i915_gem_stolen_insert_node_in_range()
50 int i915_gem_stolen_insert_node(struct drm_i915_private *dev_priv, in i915_gem_stolen_insert_node() argument
54 return i915_gem_stolen_insert_node_in_range(dev_priv, node, size, in i915_gem_stolen_insert_node()
58 void i915_gem_stolen_remove_node(struct drm_i915_private *dev_priv, in i915_gem_stolen_remove_node() argument
61 mutex_lock(&dev_priv->mm.stolen_lock); in i915_gem_stolen_remove_node()
63 mutex_unlock(&dev_priv->mm.stolen_lock); in i915_gem_stolen_remove_node()
66 static int i915_adjust_stolen(struct drm_i915_private *dev_priv, in i915_adjust_stolen() argument
69 struct i915_ggtt *ggtt = &dev_priv->ggtt; in i915_adjust_stolen()
81 if (INTEL_GEN(dev_priv) <= 4 && in i915_adjust_stolen()
82 !IS_G33(dev_priv) && !IS_PINEVIEW(dev_priv) && !IS_G4X(dev_priv)) { in i915_adjust_stolen()
88 if (IS_GEN(dev_priv, 4)) in i915_adjust_stolen()
122 r = devm_request_mem_region(dev_priv->drm.dev, dsm->start, in i915_adjust_stolen()
135 r = devm_request_mem_region(dev_priv->drm.dev, dsm->start + 1, in i915_adjust_stolen()
142 if (r == NULL && !IS_GEN(dev_priv, 3)) { in i915_adjust_stolen()
153 void i915_gem_cleanup_stolen(struct drm_i915_private *dev_priv) in i915_gem_cleanup_stolen() argument
155 if (!drm_mm_initialized(&dev_priv->mm.stolen)) in i915_gem_cleanup_stolen()
158 drm_mm_takedown(&dev_priv->mm.stolen); in i915_gem_cleanup_stolen()
161 static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv, in g4x_get_stolen_reserved() argument
165 u32 reg_val = I915_READ(IS_GM45(dev_priv) ? in g4x_get_stolen_reserved()
168 resource_size_t stolen_top = dev_priv->dsm.end + 1; in g4x_get_stolen_reserved()
171 IS_GM45(dev_priv) ? "CTG" : "ELK", reg_val); in g4x_get_stolen_reserved()
180 WARN(IS_GEN(dev_priv, 5), "ILK stolen reserved found? 0x%08x\n", in g4x_get_stolen_reserved()
192 static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv, in gen6_get_stolen_reserved() argument
224 static void vlv_get_stolen_reserved(struct drm_i915_private *dev_priv, in vlv_get_stolen_reserved() argument
229 resource_size_t stolen_top = dev_priv->dsm.end + 1; in vlv_get_stolen_reserved()
252 static void gen7_get_stolen_reserved(struct drm_i915_private *dev_priv, in gen7_get_stolen_reserved() argument
278 static void chv_get_stolen_reserved(struct drm_i915_private *dev_priv, in chv_get_stolen_reserved() argument
310 static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv, in bdw_get_stolen_reserved() argument
315 resource_size_t stolen_top = dev_priv->dsm.end + 1; in bdw_get_stolen_reserved()
358 int i915_gem_init_stolen(struct drm_i915_private *dev_priv) in i915_gem_init_stolen() argument
363 mutex_init(&dev_priv->mm.stolen_lock); in i915_gem_init_stolen()
365 if (intel_vgpu_active(dev_priv)) { in i915_gem_init_stolen()
366 dev_notice(dev_priv->drm.dev, in i915_gem_init_stolen()
372 if (intel_vtd_active() && INTEL_GEN(dev_priv) < 8) { in i915_gem_init_stolen()
373 dev_notice(dev_priv->drm.dev, in i915_gem_init_stolen()
382 dev_priv->dsm = intel_graphics_stolen_res; in i915_gem_init_stolen()
384 if (i915_adjust_stolen(dev_priv, &dev_priv->dsm)) in i915_gem_init_stolen()
387 GEM_BUG_ON(dev_priv->dsm.start == 0); in i915_gem_init_stolen()
388 GEM_BUG_ON(dev_priv->dsm.end <= dev_priv->dsm.start); in i915_gem_init_stolen()
390 stolen_top = dev_priv->dsm.end + 1; in i915_gem_init_stolen()
394 switch (INTEL_GEN(dev_priv)) { in i915_gem_init_stolen()
399 if (!IS_G4X(dev_priv)) in i915_gem_init_stolen()
403 g4x_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
407 gen6_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
411 if (IS_VALLEYVIEW(dev_priv)) in i915_gem_init_stolen()
412 vlv_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
415 gen7_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
421 if (IS_LP(dev_priv)) in i915_gem_init_stolen()
422 chv_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
425 bdw_get_stolen_reserved(dev_priv, in i915_gem_init_stolen()
430 icl_get_stolen_reserved(dev_priv, &reserved_base, in i915_gem_init_stolen()
447 dev_priv->dsm_reserved = in i915_gem_init_stolen()
450 if (!resource_contains(&dev_priv->dsm, &dev_priv->dsm_reserved)) { in i915_gem_init_stolen()
452 &dev_priv->dsm_reserved, &dev_priv->dsm); in i915_gem_init_stolen()
461 (u64)resource_size(&dev_priv->dsm) >> 10, in i915_gem_init_stolen()
462 ((u64)resource_size(&dev_priv->dsm) - reserved_total) >> 10); in i915_gem_init_stolen()
464 dev_priv->stolen_usable_size = in i915_gem_init_stolen()
465 resource_size(&dev_priv->dsm) - reserved_total; in i915_gem_init_stolen()
468 drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->stolen_usable_size); in i915_gem_init_stolen()
477 struct drm_i915_private *dev_priv = to_i915(dev); in i915_pages_create_for_stolen() local
481 GEM_BUG_ON(range_overflows(offset, size, resource_size(&dev_priv->dsm))); in i915_pages_create_for_stolen()
501 sg_dma_address(sg) = (dma_addr_t)dev_priv->dsm.start + offset; in i915_pages_create_for_stolen()
532 struct drm_i915_private *dev_priv = to_i915(obj->base.dev); in i915_gem_object_release_stolen() local
537 i915_gem_stolen_remove_node(dev_priv, stolen); in i915_gem_object_release_stolen()
548 _i915_gem_object_create_stolen(struct drm_i915_private *dev_priv, in _i915_gem_object_create_stolen() argument
558 drm_gem_private_object_init(&dev_priv->drm, &obj->base, stolen->size); in _i915_gem_object_create_stolen()
563 cache_level = HAS_LLC(dev_priv) ? I915_CACHE_LLC : I915_CACHE_NONE; in _i915_gem_object_create_stolen()
577 i915_gem_object_create_stolen(struct drm_i915_private *dev_priv, in i915_gem_object_create_stolen() argument
584 if (!drm_mm_initialized(&dev_priv->mm.stolen)) in i915_gem_object_create_stolen()
594 ret = i915_gem_stolen_insert_node(dev_priv, stolen, size, 4096); in i915_gem_object_create_stolen()
600 obj = _i915_gem_object_create_stolen(dev_priv, stolen); in i915_gem_object_create_stolen()
604 i915_gem_stolen_remove_node(dev_priv, stolen); in i915_gem_object_create_stolen()
610 i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private *dev_priv, in i915_gem_object_create_stolen_for_preallocated() argument
615 struct i915_ggtt *ggtt = &dev_priv->ggtt; in i915_gem_object_create_stolen_for_preallocated()
621 if (!drm_mm_initialized(&dev_priv->mm.stolen)) in i915_gem_object_create_stolen_for_preallocated()
624 lockdep_assert_held(&dev_priv->drm.struct_mutex); in i915_gem_object_create_stolen_for_preallocated()
641 mutex_lock(&dev_priv->mm.stolen_lock); in i915_gem_object_create_stolen_for_preallocated()
642 ret = drm_mm_reserve_node(&dev_priv->mm.stolen, stolen); in i915_gem_object_create_stolen_for_preallocated()
643 mutex_unlock(&dev_priv->mm.stolen_lock); in i915_gem_object_create_stolen_for_preallocated()
650 obj = _i915_gem_object_create_stolen(dev_priv, stolen); in i915_gem_object_create_stolen_for_preallocated()
653 i915_gem_stolen_remove_node(dev_priv, stolen); in i915_gem_object_create_stolen_for_preallocated()