diff mbox series

[v2,19/22] drm/i915: don't allocate the ring in stolen if we lack aperture

Message ID 20191003192444.10113-20-matthew.auld@intel.com (mailing list archive)
State New, archived
Headers show
Series LMEM basics | expand

Commit Message

Matthew Auld Oct. 3, 2019, 7:24 p.m. UTC
Since we have no way access it from the CPU. For such cases just
fallback to internal objects.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Tang, CQ Oct. 3, 2019, 7:37 p.m. UTC | #1
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Matthew Auld
> Sent: Thursday, October 3, 2019 12:25 PM
> To: intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH v2 19/22] drm/i915: don't allocate the ring in
> stolen if we lack aperture
> 
> Since we have no way access it from the CPU. For such cases just fallback to
> internal objects.
> 
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> index e220c09c6f32..c48f1d20af5f 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> @@ -1273,7 +1273,9 @@ static struct i915_vma *create_ring_vma(struct
> i915_ggtt *ggtt, int size)
>  	struct drm_i915_gem_object *obj;
>  	struct i915_vma *vma;
> 
> -	obj = i915_gem_object_create_stolen(i915, size);
> +	obj = ERR_PTR(-ENODEV);
> +	if (HAS_MAPPABLE_APERTURE(i915))
> +		obj = i915_gem_object_create_stolen(i915, size);

Don't we already support local stolen memory region?  In this case, if it has aperture, it is bios stolen system memory, if no aperture, it is local stolen memory, the same call to i915_gem_object_create_stolen() will work in both cases.

--CQ


>  	if (IS_ERR(obj))
>  		obj = i915_gem_object_create_internal(i915, size);
>  	if (IS_ERR(obj))
> --
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Chris Wilson Oct. 3, 2019, 7:55 p.m. UTC | #2
Quoting Matthew Auld (2019-10-03 20:24:41)
> Since we have no way access it from the CPU. For such cases just
> fallback to internal objects.
> 
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_ringbuffer.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> index e220c09c6f32..c48f1d20af5f 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
> @@ -1273,7 +1273,9 @@ static struct i915_vma *create_ring_vma(struct i915_ggtt *ggtt, int size)
                                                                ^
There's a ggtt right there --------------------------------------

>         struct drm_i915_gem_object *obj;
>         struct i915_vma *vma;
>  
> -       obj = i915_gem_object_create_stolen(i915, size);
> +       obj = ERR_PTR(-ENODEV);
> +       if (HAS_MAPPABLE_APERTURE(i915))
> +               obj = i915_gem_object_create_stolen(i915, size);
>         if (IS_ERR(obj))
>                 obj = i915_gem_object_create_internal(i915, size);
>         if (IS_ERR(obj))
> -- 
> 2.20.1
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
index e220c09c6f32..c48f1d20af5f 100644
--- a/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/gt/intel_ringbuffer.c
@@ -1273,7 +1273,9 @@  static struct i915_vma *create_ring_vma(struct i915_ggtt *ggtt, int size)
 	struct drm_i915_gem_object *obj;
 	struct i915_vma *vma;
 
-	obj = i915_gem_object_create_stolen(i915, size);
+	obj = ERR_PTR(-ENODEV);
+	if (HAS_MAPPABLE_APERTURE(i915))
+		obj = i915_gem_object_create_stolen(i915, size);
 	if (IS_ERR(obj))
 		obj = i915_gem_object_create_internal(i915, size);
 	if (IS_ERR(obj))