[RFCv4 10/14] drm: convert crtc to properties/state
Matt Roper
matthew.d.roper at intel.com
Wed Dec 11 13:48:45 PST 2013
On Mon, Nov 25, 2013 at 09:47:34AM -0500, Rob Clark wrote:
...
> +static struct drm_crtc_state *
> +drm_atomic_helper_get_crtc_state(struct drm_crtc *crtc, void *state)
> +{
> + struct drm_atomic_helper_state *a = state;
> + struct drm_crtc_state *cstate;
> + int ret;
> +
> + ret = drm_modeset_lock(&crtc->mutex, state);
> + if (ret)
> + return ERR_PTR(ret);
> +
> + cstate = a->cstates[crtc->id];
The id field of struct drm_crtc never seems to be initialized in the
current DRM codebase, so this will always wind up looking up cstates[0];
we probably want to initialize crtc->id in drm_crtc_init() at the same
place we increment dev->mode_config.num_crtc.
...
> +static int check_connectors(struct drm_crtc *crtc, void *state, bool fix,
> + uint32_t *connector_ids, uint32_t num_connector_ids)
> +{
> + struct drm_mode_config *config = &crtc->dev->mode_config;
> + struct drm_crtc *ocrtc; /* other connector */
> +
> + list_for_each_entry(ocrtc, &config->crtc_list, head) {
> + struct drm_crtc_state *ostate; /* other state */
> + unsigned i;
> +
> + if (ocrtc == crtc)
> + continue;
> +
> + ostate = drm_atomic_get_crtc_state(crtc, state);
I think you meant to use ocrtc here rather than crtc, right?
I think you might also want to move patch 11 up above 9 & 10, otherwise
you'll run into the lastclose deadlock while bisecting through this
patchset.
Matt
--
Matt Roper
Intel Corporation
More information about the dri-devel
mailing list