diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_memory_region.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_memory_region.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_memory_region.c b/drivers/gpu/drm/i915/intel_memory_region.c index 52d998e5c21a..59bd603e6deb 100644 --- a/drivers/gpu/drm/i915/intel_memory_region.c +++ b/drivers/gpu/drm/i915/intel_memory_region.c @@ -171,6 +171,17 @@ intel_memory_region_by_type(struct drm_i915_private *i915, return NULL; } +bool intel_memory_type_is_local(enum intel_memory_type mem_type) +{ + switch (mem_type) { + case INTEL_MEMORY_LOCAL: + case INTEL_MEMORY_STOLEN_LOCAL: + return true; + default: + return false; + } +} + /** * intel_memory_region_reserve - Reserve a memory range * @mem: The region for which we want to reserve a range. @@ -216,7 +227,7 @@ static int intel_memory_region_memtest(struct intel_memory_region *mem, return err; } -static const char *region_type_str(u16 type) +const char *intel_memory_type_str(enum intel_memory_type type) { switch (type) { case INTEL_MEMORY_SYSTEM: @@ -260,7 +271,7 @@ intel_memory_region_create(struct drm_i915_private *i915, mem->instance = instance; snprintf(mem->uabi_name, sizeof(mem->uabi_name), "%s%u", - region_type_str(type), instance); + intel_memory_type_str(type), instance); mutex_init(&mem->objects.lock); INIT_LIST_HEAD(&mem->objects.list); @@ -332,7 +343,7 @@ int intel_memory_regions_hw_probe(struct drm_i915_private *i915) struct intel_memory_region *mem = ERR_PTR(-ENODEV); u16 type, instance; - if (!HAS_REGION(i915, BIT(i))) + if (!HAS_REGION(i915, i)) continue; type = intel_region_map[i].class; @@ -368,8 +379,10 @@ int intel_memory_regions_hw_probe(struct drm_i915_private *i915) goto out_cleanup; } - mem->id = i; - i915->mm.regions[i] = mem; + if (mem) { /* Skip on non-fatal errors */ + mem->id = i; + i915->mm.regions[i] = mem; + } } for (i = 0; i < ARRAY_SIZE(i915->mm.regions); i++) { |