[Intel-gfx] [PATCH 1/5] drm/atomic: Refactor drm_atomic_state_realloc_connectors()
Daniel Vetter
daniel at ffwll.ch
Fri Jun 30 13:15:34 UTC 2017
On Thu, Jun 29, 2017 at 04:49:44PM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Pull the code to reallocate the state->connectors[] array into a
> helper function. We'll have another use for this later.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/drm_atomic.c | 43 +++++++++++++++++++++++++++++--------------
> include/drm/drm_atomic.h | 5 +++++
> 2 files changed, 34 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index 095e87278a88..a9f02b214fc6 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -1043,6 +1043,32 @@ drm_atomic_get_private_obj_state(struct drm_atomic_state *state, void *obj,
> }
> EXPORT_SYMBOL(drm_atomic_get_private_obj_state);
>
> +int drm_atomic_state_realloc_connectors(struct drm_device *dev,
> + struct drm_atomic_state *state,
> + int index)
Needs some pretty kerneldoc, best with some explanation why/when drivers
might want to use this (i.e. when they're constructing their own state for
special reasons like hw state read-out or recovery after a hw reset or
whatever). Commit message should explain that too, but better to stuff it
into the kerneldoc. With that addressed:
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> +{
> + struct drm_mode_config *config = &dev->mode_config;
> + struct __drm_connnectors_state *c;
> + int alloc = max(index + 1, config->num_connector);
> +
> + if (index < state->num_connector)
> + return 0;
> +
> + c = krealloc(state->connectors,
> + alloc * sizeof(*state->connectors), GFP_KERNEL);
> + if (!c)
> + return -ENOMEM;
> +
> + state->connectors = c;
> + memset(&state->connectors[state->num_connector], 0,
> + sizeof(*state->connectors) * (alloc - state->num_connector));
> +
> + state->num_connector = alloc;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(drm_atomic_state_realloc_connectors);
> +
> /**
> * drm_atomic_get_connector_state - get connector state
> * @state: global atomic state object
> @@ -1074,20 +1100,9 @@ drm_atomic_get_connector_state(struct drm_atomic_state *state,
>
> index = drm_connector_index(connector);
>
> - if (index >= state->num_connector) {
> - struct __drm_connnectors_state *c;
> - int alloc = max(index + 1, config->num_connector);
> -
> - c = krealloc(state->connectors, alloc * sizeof(*state->connectors), GFP_KERNEL);
> - if (!c)
> - return ERR_PTR(-ENOMEM);
> -
> - state->connectors = c;
> - memset(&state->connectors[state->num_connector], 0,
> - sizeof(*state->connectors) * (alloc - state->num_connector));
> -
> - state->num_connector = alloc;
> - }
> + ret = drm_atomic_state_realloc_connectors(connector->dev, state, index);
> + if (ret)
> + return ERR_PTR(ret);
>
> if (state->connectors[index].state)
> return state->connectors[index].state;
> diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
> index 0196f264a418..5596ad58bcdc 100644
> --- a/include/drm/drm_atomic.h
> +++ b/include/drm/drm_atomic.h
> @@ -324,6 +324,11 @@ drm_atomic_get_private_obj_state(struct drm_atomic_state *state,
> void *obj,
> const struct drm_private_state_funcs *funcs);
>
> +int __must_check
> +drm_atomic_state_realloc_connectors(struct drm_device *dev,
> + struct drm_atomic_state *state,
> + int index);
> +
> /**
> * drm_atomic_get_existing_crtc_state - get crtc state, if it exists
> * @state: global atomic state object
> --
> 2.13.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list