intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Fix plane allocation/free functions
@ 2018-11-13  9:28 Maarten Lankhorst
  2018-11-13 11:26 ` ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Maarten Lankhorst @ 2018-11-13  9:28 UTC (permalink / raw)
  To: intel-gfx

Use intel_plane_destroy_state in intel_plane_free to free the state.
Also fix intel_plane_alloc() to use __drm_atomic_helper_plane_reset(),
to get sane defaults from the atomic core.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Fixes: b20815255693 ("drm/i915: Add plane alpha blending support, v2.")
---
 drivers/gpu/drm/i915/intel_atomic_plane.c | 40 ++++++++++++-----------
 drivers/gpu/drm/i915/intel_drv.h          |  5 ++-
 drivers/gpu/drm/i915/intel_sprite.c       | 29 ----------------
 3 files changed, 23 insertions(+), 51 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
index 7d3685075201..905f8ef3ba4f 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -36,29 +36,31 @@
 #include <drm/drm_plane_helper.h>
 #include "intel_drv.h"
 
-/**
- * intel_create_plane_state - create plane state object
- * @plane: drm plane
- *
- * Allocates a fresh plane state for the given plane and sets some of
- * the state values to sensible initial values.
- *
- * Returns: A newly allocated plane state, or NULL on failure
- */
-struct intel_plane_state *
-intel_create_plane_state(struct drm_plane *plane)
+struct intel_plane *intel_plane_alloc(void)
 {
-	struct intel_plane_state *state;
+	struct intel_plane_state *plane_state;
+	struct intel_plane *plane;
 
-	state = kzalloc(sizeof(*state), GFP_KERNEL);
-	if (!state)
-		return NULL;
+	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
+	if (!plane)
+		return ERR_PTR(-ENOMEM);
 
-	state->base.plane = plane;
-	state->base.rotation = DRM_MODE_ROTATE_0;
-	state->scaler_id = -1;
+	plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL);
+	if (!plane_state) {
+		kfree(plane);
+		return ERR_PTR(-ENOMEM);
+	}
 
-	return state;
+	__drm_atomic_helper_plane_reset(&plane->base, &plane_state->base);
+	plane_state->scaler_id = -1;
+
+	return plane;
+}
+
+void intel_plane_free(struct intel_plane *plane)
+{
+	intel_plane_destroy_state(&plane->base, plane->base.state);
+	kfree(plane);
 }
 
 /**
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 10a5df66e4eb..2a897e174ed5 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -2219,8 +2219,6 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
 int intel_plane_check_stride(const struct intel_plane_state *plane_state);
 int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state);
 int chv_plane_check_rotation(const struct intel_plane_state *plane_state);
-struct intel_plane *intel_plane_alloc(void);
-void intel_plane_free(struct intel_plane *plane);
 struct intel_plane *
 skl_universal_plane_create(struct drm_i915_private *dev_priv,
 			   enum pipe pipe, enum plane_id plane_id);
@@ -2282,7 +2280,8 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
 			       struct intel_crtc_state *crtc_state);
 
 /* intel_atomic_plane.c */
-struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);
+struct intel_plane *intel_plane_alloc(void);
+void intel_plane_free(struct intel_plane *plane);
 struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
 void intel_plane_destroy_state(struct drm_plane *plane,
 			       struct drm_plane_state *state);
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index facf7ca8f14f..7db6d060efe7 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -1982,35 +1982,6 @@ static bool skl_plane_has_ccs(struct drm_i915_private *dev_priv,
 		 plane_id == PLANE_SPRITE0);
 }
 
-struct intel_plane *intel_plane_alloc(void)
-{
-	struct intel_plane_state *plane_state;
-	struct intel_plane *plane;
-
-	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
-	if (!plane)
-		return ERR_PTR(-ENOMEM);
-
-	plane_state = intel_create_plane_state(&plane->base);
-	if (!plane_state) {
-		kfree(plane);
-		return ERR_PTR(-ENOMEM);
-	}
-
-	plane->base.state = &plane_state->base;
-
-	return plane;
-}
-
-void intel_plane_free(struct intel_plane *plane)
-{
-	struct intel_plane_state *plane_state =
-		to_intel_plane_state(plane->base.state);
-
-	kfree(plane_state);
-	kfree(plane);
-}
-
 struct intel_plane *
 skl_universal_plane_create(struct drm_i915_private *dev_priv,
 			   enum pipe pipe, enum plane_id plane_id)
-- 
2.19.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* ✓ Fi.CI.BAT: success for drm/i915: Fix plane allocation/free functions
  2018-11-13  9:28 [PATCH] drm/i915: Fix plane allocation/free functions Maarten Lankhorst
@ 2018-11-13 11:26 ` Patchwork
  2018-11-13 13:29 ` ✓ Fi.CI.IGT: " Patchwork
  2018-11-13 14:02 ` [PATCH] " Ville Syrjälä
  2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-11-13 11:26 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Fix plane allocation/free functions
URL   : https://patchwork.freedesktop.org/series/52413/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_5129 -> Patchwork_10812 =

== Summary - WARNING ==

  Minor unknown changes coming with Patchwork_10812 need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_10812, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/52413/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_10812:

  === IGT changes ===

    ==== Warnings ====

    igt@drv_selftest@live_execlists:
      fi-icl-u2:          PASS -> SKIP +2

    
== Known issues ==

  Here are the changes found in Patchwork_10812 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@kms_frontbuffer_tracking@basic:
      fi-byt-clapper:     PASS -> FAIL (fdo#103167)

    igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence:
      fi-byt-clapper:     PASS -> FAIL (fdo#107362, fdo#103191) +1

    
    ==== Possible fixes ====

    igt@drv_module_reload@basic-reload:
      fi-blb-e6850:       INCOMPLETE (fdo#107718) -> PASS

    igt@gem_exec_suspend@basic-s4-devices:
      fi-bsw-kefka:       DMESG-WARN -> PASS

    igt@kms_flip@basic-flip-vs-modeset:
      fi-hsw-4770r:       DMESG-WARN (fdo#105602) -> PASS

    igt@kms_frontbuffer_tracking@basic:
      fi-hsw-peppy:       DMESG-WARN (fdo#102614) -> PASS

    igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
      fi-byt-clapper:     FAIL (fdo#107362, fdo#103191) -> PASS

    
    ==== Warnings ====

    igt@drv_selftest@live_contexts:
      fi-icl-u2:          DMESG-FAIL (fdo#108569) -> INCOMPLETE (fdo#108315)

    
  fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#107718 https://bugs.freedesktop.org/show_bug.cgi?id=107718
  fdo#108315 https://bugs.freedesktop.org/show_bug.cgi?id=108315
  fdo#108569 https://bugs.freedesktop.org/show_bug.cgi?id=108569


== Participating hosts (51 -> 47) ==

  Additional (1): fi-byt-j1900 
  Missing    (5): fi-kbl-soraka fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 


== Build changes ==

    * Linux: CI_DRM_5129 -> Patchwork_10812

  CI_DRM_5129: cbe30aefb2911ecac518064505b80cc7635ac6f8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4714: cab148ca3ec904a94d0cd43476cf7e1f8663f906 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_10812: 4bd65ff95ef0b27ad4b064c5fe432191b131042f @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

4bd65ff95ef0 drm/i915: Fix plane allocation/free functions

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10812/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* ✓ Fi.CI.IGT: success for drm/i915: Fix plane allocation/free functions
  2018-11-13  9:28 [PATCH] drm/i915: Fix plane allocation/free functions Maarten Lankhorst
  2018-11-13 11:26 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-11-13 13:29 ` Patchwork
  2018-11-13 14:02 ` [PATCH] " Ville Syrjälä
  2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-11-13 13:29 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Fix plane allocation/free functions
URL   : https://patchwork.freedesktop.org/series/52413/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_5129_full -> Patchwork_10812_full =

== Summary - SUCCESS ==

  No regressions found.

  

== Known issues ==

  Here are the changes found in Patchwork_10812_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_suspend@forcewake:
      shard-kbl:          PASS -> INCOMPLETE (fdo#103665)

    igt@gem_exec_schedule@pi-ringfull-bsd:
      shard-skl:          NOTRUN -> FAIL (fdo#103158)

    igt@gem_exec_schedule@pi-ringfull-render:
      shard-apl:          NOTRUN -> FAIL (fdo#103158)

    igt@kms_atomic_transition@1x-modeset-transitions-nonblocking:
      shard-skl:          NOTRUN -> FAIL (fdo#108470, fdo#108228)

    igt@kms_busy@extended-modeset-hang-newfb-render-b:
      shard-kbl:          PASS -> DMESG-WARN (fdo#107956)

    igt@kms_busy@extended-pageflip-hang-newfb-render-b:
      shard-apl:          NOTRUN -> DMESG-WARN (fdo#107956)

    igt@kms_cursor_crc@cursor-256x256-sliding:
      shard-apl:          PASS -> FAIL (fdo#103232)

    igt@kms_cursor_crc@cursor-256x256-suspend:
      shard-apl:          PASS -> FAIL (fdo#103191, fdo#103232)

    igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
      shard-skl:          NOTRUN -> FAIL (fdo#102670)

    igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-xtiled:
      shard-skl:          PASS -> FAIL (fdo#103184)

    igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu:
      shard-skl:          PASS -> FAIL (fdo#105682) +1

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt:
      shard-apl:          PASS -> FAIL (fdo#103167) +1

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
      shard-glk:          PASS -> FAIL (fdo#103167)

    igt@kms_frontbuffer_tracking@fbc-1p-rte:
      shard-kbl:          PASS -> DMESG-WARN (fdo#103558, fdo#105602) +1

    igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
      shard-skl:          NOTRUN -> FAIL (fdo#103167) +3

    igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen:
      shard-skl:          NOTRUN -> FAIL (fdo#105682)

    igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
      shard-skl:          PASS -> FAIL (fdo#103167)

    igt@kms_plane@pixel-format-pipe-c-planes:
      shard-skl:          NOTRUN -> DMESG-WARN (fdo#106885)

    igt@kms_plane@plane-panning-bottom-right-pipe-b-planes:
      shard-skl:          PASS -> FAIL (fdo#103166)

    igt@kms_plane_alpha_blend@pipe-a-alpha-transparant-fb:
      shard-apl:          NOTRUN -> FAIL (fdo#108145)

    igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
      shard-skl:          NOTRUN -> FAIL (fdo#108145)

    igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
      shard-skl:          PASS -> FAIL (fdo#108145, fdo#107815)

    igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
      shard-apl:          PASS -> FAIL (fdo#103166)

    igt@kms_plane_multiple@atomic-pipe-c-tiling-y:
      shard-glk:          PASS -> FAIL (fdo#103166)

    igt@kms_properties@connector-properties-legacy:
      shard-kbl:          PASS -> DMESG-WARN (fdo#103313, fdo#105345)

    igt@kms_rotation_crc@primary-rotation-90:
      shard-skl:          NOTRUN -> FAIL (fdo#103925, fdo#107815)

    igt@pm_rpm@dpms-non-lpsp:
      shard-skl:          SKIP -> INCOMPLETE (fdo#107807)

    
    ==== Possible fixes ====

    igt@kms_busy@extended-pageflip-hang-newfb-render-a:
      shard-glk:          DMESG-WARN (fdo#107956) -> PASS

    igt@kms_chv_cursor_fail@pipe-c-256x256-top-edge:
      shard-skl:          FAIL (fdo#104671) -> PASS

    igt@kms_color@pipe-c-ctm-blue-to-red:
      shard-skl:          FAIL (fdo#107201) -> PASS

    igt@kms_color@pipe-c-degamma:
      shard-apl:          FAIL (fdo#104782) -> PASS

    igt@kms_cursor_crc@cursor-64x64-random:
      shard-apl:          FAIL (fdo#103232) -> PASS

    igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
      shard-glk:          DMESG-WARN (fdo#105763, fdo#106538) -> PASS

    igt@kms_flip@flip-vs-modeset-vs-hang-interruptible:
      shard-apl:          INCOMPLETE (fdo#103927) -> PASS +1

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
      shard-apl:          FAIL (fdo#103167) -> PASS +1

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
      shard-glk:          FAIL (fdo#103167) -> PASS

    igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render:
      shard-glk:          DMESG-FAIL (fdo#106538) -> PASS

    igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
      shard-apl:          FAIL (fdo#103166) -> PASS

    igt@kms_setmode@basic:
      shard-apl:          FAIL (fdo#99912) -> PASS

    igt@pm_rpm@cursor-dpms:
      shard-skl:          INCOMPLETE (fdo#107807) -> PASS

    
    ==== Warnings ====

    igt@kms_vblank@pipe-a-query-busy:
      shard-snb:          DMESG-WARN (fdo#107469) -> INCOMPLETE (fdo#105411)

    
  fdo#102670 https://bugs.freedesktop.org/show_bug.cgi?id=102670
  fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
  fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103184 https://bugs.freedesktop.org/show_bug.cgi?id=103184
  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
  fdo#103313 https://bugs.freedesktop.org/show_bug.cgi?id=103313
  fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
  fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
  fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#104671 https://bugs.freedesktop.org/show_bug.cgi?id=104671
  fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782
  fdo#105345 https://bugs.freedesktop.org/show_bug.cgi?id=105345
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
  fdo#105682 https://bugs.freedesktop.org/show_bug.cgi?id=105682
  fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
  fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
  fdo#106885 https://bugs.freedesktop.org/show_bug.cgi?id=106885
  fdo#107201 https://bugs.freedesktop.org/show_bug.cgi?id=107201
  fdo#107469 https://bugs.freedesktop.org/show_bug.cgi?id=107469
  fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807
  fdo#107815 https://bugs.freedesktop.org/show_bug.cgi?id=107815
  fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
  fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
  fdo#108228 https://bugs.freedesktop.org/show_bug.cgi?id=108228
  fdo#108470 https://bugs.freedesktop.org/show_bug.cgi?id=108470
  fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912


== Participating hosts (6 -> 6) ==

  No changes in participating hosts


== Build changes ==

    * Linux: CI_DRM_5129 -> Patchwork_10812

  CI_DRM_5129: cbe30aefb2911ecac518064505b80cc7635ac6f8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4714: cab148ca3ec904a94d0cd43476cf7e1f8663f906 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_10812: 4bd65ff95ef0b27ad4b064c5fe432191b131042f @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10812/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/i915: Fix plane allocation/free functions
  2018-11-13  9:28 [PATCH] drm/i915: Fix plane allocation/free functions Maarten Lankhorst
  2018-11-13 11:26 ` ✓ Fi.CI.BAT: success for " Patchwork
  2018-11-13 13:29 ` ✓ Fi.CI.IGT: " Patchwork
@ 2018-11-13 14:02 ` Ville Syrjälä
  2018-11-15 11:23   ` Maarten Lankhorst
  2 siblings, 1 reply; 5+ messages in thread
From: Ville Syrjälä @ 2018-11-13 14:02 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Tue, Nov 13, 2018 at 10:28:04AM +0100, Maarten Lankhorst wrote:
> Use intel_plane_destroy_state in intel_plane_free to free the state.

Not entirely necessary since we have nothing in the state at that moment
that would required to be freed separately. But seems more future proof
anyway.

> Also fix intel_plane_alloc() to use __drm_atomic_helper_plane_reset(),
> to get sane defaults from the atomic core.

Could mention the constant alpha specifically here since I think it
was the only thing we didn't set ourselves.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Fixes: b20815255693 ("drm/i915: Add plane alpha blending support, v2.")
> ---
>  drivers/gpu/drm/i915/intel_atomic_plane.c | 40 ++++++++++++-----------
>  drivers/gpu/drm/i915/intel_drv.h          |  5 ++-
>  drivers/gpu/drm/i915/intel_sprite.c       | 29 ----------------
>  3 files changed, 23 insertions(+), 51 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
> index 7d3685075201..905f8ef3ba4f 100644
> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> @@ -36,29 +36,31 @@
>  #include <drm/drm_plane_helper.h>
>  #include "intel_drv.h"
>  
> -/**
> - * intel_create_plane_state - create plane state object
> - * @plane: drm plane
> - *
> - * Allocates a fresh plane state for the given plane and sets some of
> - * the state values to sensible initial values.
> - *
> - * Returns: A newly allocated plane state, or NULL on failure
> - */
> -struct intel_plane_state *
> -intel_create_plane_state(struct drm_plane *plane)
> +struct intel_plane *intel_plane_alloc(void)
>  {
> -	struct intel_plane_state *state;
> +	struct intel_plane_state *plane_state;
> +	struct intel_plane *plane;
>  
> -	state = kzalloc(sizeof(*state), GFP_KERNEL);
> -	if (!state)
> -		return NULL;
> +	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
> +	if (!plane)
> +		return ERR_PTR(-ENOMEM);
>  
> -	state->base.plane = plane;
> -	state->base.rotation = DRM_MODE_ROTATE_0;
> -	state->scaler_id = -1;
> +	plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL);
> +	if (!plane_state) {
> +		kfree(plane);
> +		return ERR_PTR(-ENOMEM);
> +	}
>  
> -	return state;
> +	__drm_atomic_helper_plane_reset(&plane->base, &plane_state->base);
> +	plane_state->scaler_id = -1;
> +
> +	return plane;
> +}
> +
> +void intel_plane_free(struct intel_plane *plane)
> +{
> +	intel_plane_destroy_state(&plane->base, plane->base.state);
> +	kfree(plane);
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 10a5df66e4eb..2a897e174ed5 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -2219,8 +2219,6 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
>  int intel_plane_check_stride(const struct intel_plane_state *plane_state);
>  int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state);
>  int chv_plane_check_rotation(const struct intel_plane_state *plane_state);
> -struct intel_plane *intel_plane_alloc(void);
> -void intel_plane_free(struct intel_plane *plane);
>  struct intel_plane *
>  skl_universal_plane_create(struct drm_i915_private *dev_priv,
>  			   enum pipe pipe, enum plane_id plane_id);
> @@ -2282,7 +2280,8 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
>  			       struct intel_crtc_state *crtc_state);
>  
>  /* intel_atomic_plane.c */
> -struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);
> +struct intel_plane *intel_plane_alloc(void);
> +void intel_plane_free(struct intel_plane *plane);
>  struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
>  void intel_plane_destroy_state(struct drm_plane *plane,
>  			       struct drm_plane_state *state);
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index facf7ca8f14f..7db6d060efe7 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -1982,35 +1982,6 @@ static bool skl_plane_has_ccs(struct drm_i915_private *dev_priv,
>  		 plane_id == PLANE_SPRITE0);
>  }
>  
> -struct intel_plane *intel_plane_alloc(void)
> -{
> -	struct intel_plane_state *plane_state;
> -	struct intel_plane *plane;
> -
> -	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
> -	if (!plane)
> -		return ERR_PTR(-ENOMEM);
> -
> -	plane_state = intel_create_plane_state(&plane->base);
> -	if (!plane_state) {
> -		kfree(plane);
> -		return ERR_PTR(-ENOMEM);
> -	}
> -
> -	plane->base.state = &plane_state->base;
> -
> -	return plane;
> -}
> -
> -void intel_plane_free(struct intel_plane *plane)
> -{
> -	struct intel_plane_state *plane_state =
> -		to_intel_plane_state(plane->base.state);
> -
> -	kfree(plane_state);
> -	kfree(plane);
> -}
> -
>  struct intel_plane *
>  skl_universal_plane_create(struct drm_i915_private *dev_priv,
>  			   enum pipe pipe, enum plane_id plane_id)
> -- 
> 2.19.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/i915: Fix plane allocation/free functions
  2018-11-13 14:02 ` [PATCH] " Ville Syrjälä
@ 2018-11-15 11:23   ` Maarten Lankhorst
  0 siblings, 0 replies; 5+ messages in thread
From: Maarten Lankhorst @ 2018-11-15 11:23 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

Op 13-11-18 om 15:02 schreef Ville Syrjälä:
> On Tue, Nov 13, 2018 at 10:28:04AM +0100, Maarten Lankhorst wrote:
>> Use intel_plane_destroy_state in intel_plane_free to free the state.
> Not entirely necessary since we have nothing in the state at that moment
> that would required to be freed separately. But seems more future proof
> anyway.
>
>> Also fix intel_plane_alloc() to use __drm_atomic_helper_plane_reset(),
>> to get sane defaults from the atomic core.
> Could mention the constant alpha specifically here since I think it
> was the only thing we didn't set ourselves.
>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Fixes: b20815255693 ("drm/i915: Add plane alpha blending support, v2.")
>> ---
>>  drivers/gpu/drm/i915/intel_atomic_plane.c | 40 ++++++++++++-----------
>>  drivers/gpu/drm/i915/intel_drv.h          |  5 ++-
>>  drivers/gpu/drm/i915/intel_sprite.c       | 29 ----------------
>>  3 files changed, 23 insertions(+), 51 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
>> index 7d3685075201..905f8ef3ba4f 100644
>> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
>> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
>> @@ -36,29 +36,31 @@
>>  #include <drm/drm_plane_helper.h>
>>  #include "intel_drv.h"
>>  
>> -/**
>> - * intel_create_plane_state - create plane state object
>> - * @plane: drm plane
>> - *
>> - * Allocates a fresh plane state for the given plane and sets some of
>> - * the state values to sensible initial values.
>> - *
>> - * Returns: A newly allocated plane state, or NULL on failure
>> - */
>> -struct intel_plane_state *
>> -intel_create_plane_state(struct drm_plane *plane)
>> +struct intel_plane *intel_plane_alloc(void)
>>  {
>> -	struct intel_plane_state *state;
>> +	struct intel_plane_state *plane_state;
>> +	struct intel_plane *plane;
>>  
>> -	state = kzalloc(sizeof(*state), GFP_KERNEL);
>> -	if (!state)
>> -		return NULL;
>> +	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
>> +	if (!plane)
>> +		return ERR_PTR(-ENOMEM);
>>  
>> -	state->base.plane = plane;
>> -	state->base.rotation = DRM_MODE_ROTATE_0;
>> -	state->scaler_id = -1;
>> +	plane_state = kzalloc(sizeof(*plane_state), GFP_KERNEL);
>> +	if (!plane_state) {
>> +		kfree(plane);
>> +		return ERR_PTR(-ENOMEM);
>> +	}
>>  
>> -	return state;
>> +	__drm_atomic_helper_plane_reset(&plane->base, &plane_state->base);
>> +	plane_state->scaler_id = -1;
>> +
>> +	return plane;
>> +}
>> +
>> +void intel_plane_free(struct intel_plane *plane)
>> +{
>> +	intel_plane_destroy_state(&plane->base, plane->base.state);
>> +	kfree(plane);
>>  }
>>  
>>  /**
>> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
>> index 10a5df66e4eb..2a897e174ed5 100644
>> --- a/drivers/gpu/drm/i915/intel_drv.h
>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>> @@ -2219,8 +2219,6 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
>>  int intel_plane_check_stride(const struct intel_plane_state *plane_state);
>>  int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state);
>>  int chv_plane_check_rotation(const struct intel_plane_state *plane_state);
>> -struct intel_plane *intel_plane_alloc(void);
>> -void intel_plane_free(struct intel_plane *plane);
>>  struct intel_plane *
>>  skl_universal_plane_create(struct drm_i915_private *dev_priv,
>>  			   enum pipe pipe, enum plane_id plane_id);
>> @@ -2282,7 +2280,8 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
>>  			       struct intel_crtc_state *crtc_state);
>>  
>>  /* intel_atomic_plane.c */
>> -struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);
>> +struct intel_plane *intel_plane_alloc(void);
>> +void intel_plane_free(struct intel_plane *plane);
>>  struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
>>  void intel_plane_destroy_state(struct drm_plane *plane,
>>  			       struct drm_plane_state *state);
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
>> index facf7ca8f14f..7db6d060efe7 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -1982,35 +1982,6 @@ static bool skl_plane_has_ccs(struct drm_i915_private *dev_priv,
>>  		 plane_id == PLANE_SPRITE0);
>>  }
>>  
>> -struct intel_plane *intel_plane_alloc(void)
>> -{
>> -	struct intel_plane_state *plane_state;
>> -	struct intel_plane *plane;
>> -
>> -	plane = kzalloc(sizeof(*plane), GFP_KERNEL);
>> -	if (!plane)
>> -		return ERR_PTR(-ENOMEM);
>> -
>> -	plane_state = intel_create_plane_state(&plane->base);
>> -	if (!plane_state) {
>> -		kfree(plane);
>> -		return ERR_PTR(-ENOMEM);
>> -	}
>> -
>> -	plane->base.state = &plane_state->base;
>> -
>> -	return plane;
>> -}
>> -
>> -void intel_plane_free(struct intel_plane *plane)
>> -{
>> -	struct intel_plane_state *plane_state =
>> -		to_intel_plane_state(plane->base.state);
>> -
>> -	kfree(plane_state);
>> -	kfree(plane);
>> -}
>> -
>>  struct intel_plane *
>>  skl_universal_plane_create(struct drm_i915_private *dev_priv,
>>  			   enum pipe pipe, enum plane_id plane_id)
>> -- 
>> 2.19.1

Thanks, pushed

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-11-15 11:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-13  9:28 [PATCH] drm/i915: Fix plane allocation/free functions Maarten Lankhorst
2018-11-13 11:26 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-11-13 13:29 ` ✓ Fi.CI.IGT: " Patchwork
2018-11-13 14:02 ` [PATCH] " Ville Syrjälä
2018-11-15 11:23   ` Maarten Lankhorst

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).