On Thu, Feb 23, 2017 at 5:55 PM, liuxinliang <z.liuxinliang@xxxxxxxxxxxxx> wrote: > Hi John, > > On 2017/2/23 8:56, John Stultz wrote: >> >> In some cases I've been seeing a race where two framebuffers >> would be initialized, as kirin_fbdev_output_poll_changed() >> might get called quickly in succession, resulting in the fb >> initialization happening twice. This could cause the system > > > I might understand this race. This because two places call > drm_helper_hpd_irq_event might cause the race: > One place is here > static int kirin_drm_kms_init(struct drm_device *dev) > { > ... > /* force detection after connectors init */ > (void)drm_helper_hpd_irq_event(dev); > ... > } > > another is the adv7533 interrupt thread handler > static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) > { > ... > if (process_hpd && irq0 & ADV7511_INT0_HPD && adv7511->bridge.encoder) > drm_helper_hpd_irq_event(adv7511->connector.dev); > ... > } > > right? > > I don't get a better way to fix this yet , I like to put fb_lock into > kirin_drm_private. Ok. I've moved the mutex to the kirin_drm_private structure. Anything else you'd like to see before I resend? thanks -john _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel