All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
	dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 19/22] drm/i915: Use drm_mode_copy()
Date: Wed, 16 Mar 2022 10:04:34 +0200	[thread overview]
Message-ID: <871qz2pbl9.fsf@intel.com> (raw)
In-Reply-To: <20220218100403.7028-20-ville.syrjala@linux.intel.com>

On Fri, 18 Feb 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> struct drm_display_mode embeds a list head, so overwriting
> the full struct with another one will corrupt the list
> (if the destination mode is on a list). Use drm_mode_copy()
> instead which explicitly preserves the list head of
> the destination mode.
>
> Even if we know the destination mode is not on any list
> using drm_mode_copy() seems decent as it sets a good
> example. Bad examples of not using it might eventually
> get copied into code where preserving the list head
> actually matters.
>
> Obviously one case not covered here is when the mode
> itself is embedded in a larger structure and the whole
> structure is copied. But if we are careful when copying
> into modes embedded in structures I think we can be a
> little more reassured that bogus list heads haven't been
> propagated in.
>
> @is_mode_copy@
> @@
> drm_mode_copy(...)
> {
> ...
> }
>
> @depends on !is_mode_copy@
> struct drm_display_mode *mode;
> expression E, S;
> @@
> (
> - *mode = E
> + drm_mode_copy(mode, &E)
> |
> - memcpy(mode, E, S)
> + drm_mode_copy(mode, E)
> )
>
> @depends on !is_mode_copy@
> struct drm_display_mode mode;
> expression E;
> @@
> (
> - mode = E
> + drm_mode_copy(&mode, &E)
> |
> - memcpy(&mode, E, S)
> + drm_mode_copy(&mode, E)
> )
>
> @@
> struct drm_display_mode *mode;
> @@
> - &*mode
> + mode
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 74c5a99ab276..661e36435793 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5506,8 +5506,10 @@ intel_crtc_copy_uapi_to_hw_state_modeset(struct intel_atomic_state *state,
>  
>  	crtc_state->hw.enable = crtc_state->uapi.enable;
>  	crtc_state->hw.active = crtc_state->uapi.active;
> -	crtc_state->hw.mode = crtc_state->uapi.mode;
> -	crtc_state->hw.adjusted_mode = crtc_state->uapi.adjusted_mode;
> +	drm_mode_copy(&crtc_state->hw.mode,
> +		      &crtc_state->uapi.mode);
> +	drm_mode_copy(&crtc_state->hw.adjusted_mode,
> +		      &crtc_state->uapi.adjusted_mode);
>  	crtc_state->hw.scaling_filter = crtc_state->uapi.scaling_filter;
>  
>  	intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
> @@ -5584,9 +5586,12 @@ copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
>  	memset(&slave_crtc_state->hw, 0, sizeof(slave_crtc_state->hw));
>  	slave_crtc_state->hw.enable = master_crtc_state->hw.enable;
>  	slave_crtc_state->hw.active = master_crtc_state->hw.active;
> -	slave_crtc_state->hw.mode = master_crtc_state->hw.mode;
> -	slave_crtc_state->hw.pipe_mode = master_crtc_state->hw.pipe_mode;
> -	slave_crtc_state->hw.adjusted_mode = master_crtc_state->hw.adjusted_mode;
> +	drm_mode_copy(&slave_crtc_state->hw.mode,
> +		      &master_crtc_state->hw.mode);
> +	drm_mode_copy(&slave_crtc_state->hw.pipe_mode,
> +		      &master_crtc_state->hw.pipe_mode);
> +	drm_mode_copy(&slave_crtc_state->hw.adjusted_mode,
> +		      &master_crtc_state->hw.adjusted_mode);
>  	slave_crtc_state->hw.scaling_filter = master_crtc_state->hw.scaling_filter;
>  
>  	copy_bigjoiner_crtc_state_nomodeset(state, slave_crtc);

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2022-03-16  8:04 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-18 10:03 [PATCH 00/22] drm: Review of mode copies Ville Syrjala
2022-02-18 10:03 ` Ville Syrjala
2022-02-18 10:03 ` Ville Syrjala
2022-02-18 10:03 ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03 ` Ville Syrjala
2022-02-18 10:03 ` Ville Syrjala
2022-02-18 10:03 ` [PATCH 01/22] drm: Add drm_mode_init() Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 11:22   ` Andrzej Hajda
2022-02-18 11:22     ` [Intel-gfx] " Andrzej Hajda
2022-02-18 11:56     ` Ville Syrjälä
2022-02-18 11:56       ` [Intel-gfx] " Ville Syrjälä
2022-02-18 12:23       ` Andrzej Hajda
2022-02-18 12:23         ` [Intel-gfx] " Andrzej Hajda
2022-02-18 16:34   ` Harry Wentland
2022-02-18 16:34     ` [Intel-gfx] " Harry Wentland
2022-02-18 10:03 ` [PATCH 02/22] drm/amdgpu: Remove pointless on stack mode copies Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 16:28   ` Harry Wentland
2022-02-18 16:28     ` [Intel-gfx] " Harry Wentland
2022-03-15 15:57     ` Alex Deucher
2022-03-15 15:57       ` Alex Deucher
2022-03-15 15:57       ` [Intel-gfx] " Alex Deucher
2022-02-18 10:03 ` [PATCH 03/22] drm/amdgpu: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 16:30   ` Harry Wentland
2022-02-18 16:30     ` [Intel-gfx] " Harry Wentland
2022-02-18 10:03 ` [PATCH 04/22] drm/amdgpu: Use drm_mode_copy() Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 16:32   ` Harry Wentland
2022-02-18 16:32     ` [Intel-gfx] " Harry Wentland
2022-03-15 18:50     ` Alex Deucher
2022-03-15 18:50       ` Alex Deucher
2022-03-15 18:50       ` [Intel-gfx] " Alex Deucher
2022-02-18 10:03 ` [PATCH 05/22] drm/radeon: " Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-03-15 18:49   ` Alex Deucher
2022-03-15 18:49     ` [Intel-gfx] " Alex Deucher
2022-02-18 10:03 ` [PATCH 06/22] drm/bridge: " Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 11:25   ` Andrzej Hajda
2022-02-18 11:25     ` [Intel-gfx] " Andrzej Hajda
2022-02-18 17:47   ` Laurent Pinchart
2022-02-18 17:47     ` [Intel-gfx] " Laurent Pinchart
2022-02-18 10:03 ` [PATCH 07/22] drm/gma500: " Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-03-16 13:16   ` Patrik Jakobsson
2022-03-16 13:16     ` [Intel-gfx] " Patrik Jakobsson
2022-02-18 10:03 ` [PATCH 08/22] drm/hisilicon: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03 ` [PATCH 09/22] drm/imx: Use drm_mode_duplicate() Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 11:42   ` Philipp Zabel
2022-02-18 11:42     ` [Intel-gfx] " Philipp Zabel
2022-02-18 10:03 ` [PATCH 10/22] drm/msm: Nuke weird on stack mode copy Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-03-23 10:19   ` Dmitry Baryshkov
2022-03-23 10:19     ` [Intel-gfx] " Dmitry Baryshkov
2022-03-23 10:19     ` Dmitry Baryshkov
2022-02-18 10:03 ` [PATCH 11/22] drm/msm: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-03-23 10:11   ` Dmitry Baryshkov
2022-03-23 10:11     ` [Intel-gfx] " Dmitry Baryshkov
2022-03-23 10:11     ` Dmitry Baryshkov
2022-03-23 20:04   ` Abhinav Kumar
2022-03-23 20:04     ` [Intel-gfx] " Abhinav Kumar
2022-03-23 20:04     ` Abhinav Kumar
2022-02-18 10:03 ` [PATCH 12/22] drm/msm: Use drm_mode_copy() Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-03-23 10:12   ` Dmitry Baryshkov
2022-03-23 10:12     ` [Intel-gfx] " Dmitry Baryshkov
2022-03-23 10:12     ` Dmitry Baryshkov
2022-03-23 20:09   ` Abhinav Kumar
2022-03-23 20:09     ` [Intel-gfx] " Abhinav Kumar
2022-03-23 20:09     ` Abhinav Kumar
2022-02-18 10:03 ` [PATCH 13/22] drm/mtk: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03 ` [PATCH 14/22] drm/rockchip: Use drm_mode_copy() Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03 ` [PATCH 15/22] drm/sti: " Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-02-18 10:03 ` [PATCH 16/22] drm/tilcdc: " Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-03-15  4:54   ` Tomi Valkeinen
2022-03-15  4:54     ` [Intel-gfx] " Tomi Valkeinen
2022-02-18 10:03 ` [Intel-gfx] [PATCH 17/22] drm/vc4: " Ville Syrjala
2022-02-18 10:03   ` Ville Syrjala
2022-02-21 10:13   ` (subset) [Intel-gfx] " Maxime Ripard
2022-02-21 10:13     ` [Intel-gfx] (subset) " Maxime Ripard
2022-02-18 10:03 ` [PATCH 18/22] drm/i915: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:03   ` [Intel-gfx] " Ville Syrjala
2022-03-16  8:00   ` Jani Nikula
2022-03-21 18:57     ` Ville Syrjälä
2022-03-21 18:57       ` [cocci] " Ville Syrjälä
2022-03-21 20:48       ` Julia Lawall
2022-03-21 20:48         ` Julia Lawall
2022-02-18 10:04 ` [PATCH 19/22] drm/i915: Use drm_mode_copy() Ville Syrjala
2022-02-18 10:04   ` [Intel-gfx] " Ville Syrjala
2022-03-16  8:04   ` Jani Nikula [this message]
2022-02-18 10:04 ` [PATCH 20/22] drm/panel: Use drm_mode_duplicate() Ville Syrjala
2022-02-18 10:04   ` [Intel-gfx] " Ville Syrjala
2022-02-18 11:51   ` Sam Ravnborg
2022-02-18 11:51     ` [Intel-gfx] " Sam Ravnborg
2022-02-18 10:04 ` [PATCH 21/22] drm: Use drm_mode_init() for on-stack modes Ville Syrjala
2022-02-18 10:04   ` [Intel-gfx] " Ville Syrjala
2022-03-22 11:10   ` Andrzej Hajda
2022-03-22 11:10     ` [Intel-gfx] " Andrzej Hajda
2022-02-18 10:04 ` [PATCH 22/22] drm: Use drm_mode_copy() Ville Syrjala
2022-02-18 10:04   ` [Intel-gfx] " Ville Syrjala
2022-03-22 11:19   ` Andrzej Hajda
2022-03-22 11:19     ` [Intel-gfx] " Andrzej Hajda
2022-02-18 13:43 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm: Review of mode copies Patchwork
2022-02-18 14:16 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-02-19  5:06 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-03-14 22:11 ` [PATCH 00/22] " Ville Syrjälä
2022-03-14 22:11   ` Ville Syrjälä
2022-03-14 22:11   ` Ville Syrjälä
2022-03-14 22:11   ` [Intel-gfx] " Ville Syrjälä
2022-03-14 22:11   ` Ville Syrjälä
2022-03-14 22:11   ` Ville Syrjälä
2022-03-15 18:52   ` Alex Deucher
2022-03-15 18:52     ` Alex Deucher
2022-03-15 18:52     ` Alex Deucher
2022-03-15 18:52     ` [Intel-gfx] " Alex Deucher
2022-03-15 18:52     ` Alex Deucher
2022-03-15 18:52     ` Alex Deucher
2022-03-21 22:37     ` Ville Syrjälä
2022-03-21 22:37       ` Ville Syrjälä
2022-03-21 22:37       ` Ville Syrjälä
2022-03-21 22:37       ` Ville Syrjälä
2022-03-21 22:37       ` Ville Syrjälä
2022-03-21 22:37       ` [Intel-gfx] " Ville Syrjälä
2022-03-23 10:39       ` Dmitry Baryshkov
2022-03-23 10:39         ` [Intel-gfx] " Dmitry Baryshkov
2022-03-23 10:39         ` Dmitry Baryshkov
2022-03-23 10:39         ` Dmitry Baryshkov
2022-03-23 10:39         ` Dmitry Baryshkov
2022-03-23 10:39         ` Dmitry Baryshkov
2022-03-23 15:10         ` Ville Syrjälä
2022-03-23 15:10           ` Ville Syrjälä
2022-03-23 15:10           ` Ville Syrjälä
2022-03-23 15:10           ` Ville Syrjälä
2022-03-23 15:10           ` [Intel-gfx] " Ville Syrjälä
2022-03-23 15:10           ` Ville Syrjälä
2022-03-23 20:50         ` Abhinav Kumar
2022-03-23 20:50           ` Abhinav Kumar
2022-03-23 20:50           ` [Intel-gfx] " Abhinav Kumar
2022-03-23 20:50           ` Abhinav Kumar
2022-03-23 20:50           ` Abhinav Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871qz2pbl9.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.