On 2015å¹´12æ01æ¥ 16:18, Daniel Stone wrote:
> Hi Mark,
>
> On 1 December 2015 at 03:26, Mark Yao<mark.yao at rock-chips.com> wrote:
>> >+static void rockchip_atomic_wait_for_complete(struct drm_atomic_state
>> >*state)
>> >+{
>> >+ struct drm_crtc_state *crtc_state;
>> >+ struct drm_crtc *crtc;
>> >+ int i;
>> >+
>> >+ for_each_crtc_in_state(state, crtc, crtc_state, i) {
>> >+ if (!crtc->state->active)
>> >+ continue;
>> >+
>> >+ WARN_ON(drm_crtc_vblank_get(crtc));
>> >+ }
>> >+
>> >+ for_each_crtc_in_state(state, crtc, crtc_state, i) {
>> >+ if (!crtc->state->active)
>> >+ continue;
>> >+
>> >+ rockchip_crtc_wait_for_update(crtc);
>> >+ }
> I'd be much more comfortable if this passed in an explicit pointer to
> state, or an address to wait for, rather than have wait_for_complete
> dig out state with no locking. The latter is potentially racy for
> async operations.
>
Hi Daniel
"if this passed in an explicit pointer to state, or an address to
wait for", I don't understand, can you point how it work?
--
ï¼ark Yao