On 14/12/16 02:27, Laurent Pinchart wrote: > Move the list of pending IRQ wait instances to the omap_drm_private > structure and the wait queue head to the IRQ wait structure. > > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com> > --- > drivers/gpu/drm/omapdrm/omap_drv.h | 3 ++- > drivers/gpu/drm/omapdrm/omap_irq.c | 42 > ++++++++++++++++++++------------------ > 2 files changed, 24 insertions(+), 21 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h > b/drivers/gpu/drm/omapdrm/omap_drv.h > index 8ef7e8963bd9..b20377efd01b 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.h > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h > @@ -88,7 +88,8 @@ struct omap_drm_private { > struct drm_property *zorder_prop; > > /* irq handling: */ > - struct list_head wait_list; /* list of omap_irq_wait */ > + spinlock_t wait_lock; /* protects the wait_list */ > + struct list_head wait_list; /* list of omap_irq_wait */ > uint32_t irq_mask; /* enabled irqs in addition to > wait_list */ > > /* atomic commit */ > diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c > b/drivers/gpu/drm/omapdrm/omap_irq.c > index f9510c13e1a2..7555b62f6c53 100644 > --- a/drivers/gpu/drm/omapdrm/omap_irq.c > +++ b/drivers/gpu/drm/omapdrm/omap_irq.c > @@ -19,22 +19,21 @@ > > #include "omap_drv.h" > > -static DEFINE_SPINLOCK(list_lock); > - > struct omap_irq_wait { > struct list_head node; > + wait_queue_head_t wq; > uint32_t irqmask; > int count; > };
The wait_queue_head_t + count combination looks suspiciously like completion. But as there's no wait_for_completion_count(), I guess the current implementation is better. Reviewed-by: Tomi Valkeinen <tomi.valkeinen at ti.com> Tomi -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: OpenPGP digital signature URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20161216/16a89e89/attachment-0001.sig>