From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [RFCv4 10/14] drm: convert crtc to properties/state Date: Wed, 11 Dec 2013 13:48:45 -0800 Message-ID: <20131211214845.GD14520@intel.com> References: <1385390858-4412-1-git-send-email-robdclark@gmail.com> <1385390858-4412-11-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 1255FFA2F9 for ; Wed, 11 Dec 2013 13:48:47 -0800 (PST) Content-Disposition: inline In-Reply-To: <1385390858-4412-11-git-send-email-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: Rob Clark Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org 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