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

Reply via email to