[v4,1/2] drm/i915: lookup for mem_region of a mem_type
diff mbox series

Message ID 20191202065458.9477-1-ramalingam.c@intel.com
State New
Headers show
Series
  • [v4,1/2] drm/i915: lookup for mem_region of a mem_type
Related show

Commit Message

Ramalingam C Dec. 2, 2019, 6:54 a.m. UTC
Lookup function to retrieve the pointer to a memory region of
a mem_type.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
cc: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/intel_memory_region.c | 12 ++++++++++++
 drivers/gpu/drm/i915/intel_memory_region.h |  3 +++
 2 files changed, 15 insertions(+)

Comments

Matthew Auld Dec. 5, 2019, 11:40 a.m. UTC | #1
On Mon, 2 Dec 2019 at 06:55, Ramalingam C <ramalingam.c@intel.com> wrote:
>
> Lookup function to retrieve the pointer to a memory region of
> a mem_type.
>
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> cc: Matthew Auld <matthew.auld@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_memory_region.c | 12 ++++++++++++
>  drivers/gpu/drm/i915/intel_memory_region.h |  3 +++
>  2 files changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_memory_region.c b/drivers/gpu/drm/i915/intel_memory_region.c
> index baaeaecc64af..ae899df7a1c2 100644
> --- a/drivers/gpu/drm/i915/intel_memory_region.c
> +++ b/drivers/gpu/drm/i915/intel_memory_region.c
> @@ -16,6 +16,18 @@ const u32 intel_region_map[] = {
>         [INTEL_REGION_STOLEN] = REGION_MAP(INTEL_MEMORY_STOLEN, 0),
>  };
>
> +struct intel_memory_region *
> +intel_memory_region_lookup(struct drm_i915_private *i915,
> +                          enum intel_memory_type mem_type)
> +{
> +       enum intel_region_id id;
> +
> +       for (id = INTEL_REGION_SMEM; id < INTEL_REGION_UNKNOWN; id++)
> +               if (i915->mm.regions[id]->type == mem_type)

Is it not worth doing:

if (region && region->type == mem_type)

?

I guess we can always extend and improve upon this later.
Reviewed-by: Matthew Auld <matthew.auld@intel.com>

Patch
diff mbox series

diff --git a/drivers/gpu/drm/i915/intel_memory_region.c b/drivers/gpu/drm/i915/intel_memory_region.c
index baaeaecc64af..ae899df7a1c2 100644
--- a/drivers/gpu/drm/i915/intel_memory_region.c
+++ b/drivers/gpu/drm/i915/intel_memory_region.c
@@ -16,6 +16,18 @@  const u32 intel_region_map[] = {
 	[INTEL_REGION_STOLEN] = REGION_MAP(INTEL_MEMORY_STOLEN, 0),
 };
 
+struct intel_memory_region *
+intel_memory_region_lookup(struct drm_i915_private *i915,
+			   enum intel_memory_type mem_type)
+{
+	enum intel_region_id id;
+
+	for (id = INTEL_REGION_SMEM; id < INTEL_REGION_UNKNOWN; id++)
+		if (i915->mm.regions[id]->type == mem_type)
+			return i915->mm.regions[id];
+	return NULL;
+}
+
 static u64
 intel_memory_region_free_pages(struct intel_memory_region *mem,
 			       struct list_head *blocks)
diff --git a/drivers/gpu/drm/i915/intel_memory_region.h b/drivers/gpu/drm/i915/intel_memory_region.h
index 238722009677..d210936c4d72 100644
--- a/drivers/gpu/drm/i915/intel_memory_region.h
+++ b/drivers/gpu/drm/i915/intel_memory_region.h
@@ -125,5 +125,8 @@  void intel_memory_region_put(struct intel_memory_region *mem);
 
 int intel_memory_regions_hw_probe(struct drm_i915_private *i915);
 void intel_memory_regions_driver_release(struct drm_i915_private *i915);
+struct intel_memory_region *
+intel_memory_region_lookup(struct drm_i915_private *i915,
+			   enum intel_memory_type mem_type);
 
 #endif