Re: [PATCH] drm/crc-debugfs: User irqsafe spinlock in drm_crtc_add_crc_entry

2019-06-06 Thread Daniel Vetter
On Thu, Jun 06, 2019 at 10:27:23AM +0200, Benjamin Gaignard wrote:
> Le jeu. 6 juin 2019 à 10:12, Ville Syrjälä
>  a écrit :
> >
> > On Wed, Jun 05, 2019 at 09:45:56PM +0200, Daniel Vetter wrote:
> > > We can be called from any context, we need to be prepared.
> > >
> > > Noticed this while hacking on vkms, which calls this function from a
> > > normal worker. Which really upsets lockdep.
> > >
> > > Cc: Rodrigo Siqueira 
> > > Cc: Tomeu Vizoso 
> > > Cc: Emil Velikov 
> > > Cc: Benjamin Gaignard 
> > > Signed-off-by: Daniel Vetter 
> >
> > Reviewed-by: Ville Syrjälä 
> 
> Reviewed-by: Benjamin Gaignard 

Thanks for taking a look, patch pushed to drm-misc-next.
-Daniel

> 
> >
> > > ---
> > >  drivers/gpu/drm/drm_debugfs_crc.c | 5 +++--
> > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/drm_debugfs_crc.c 
> > > b/drivers/gpu/drm/drm_debugfs_crc.c
> > > index 585169f0dcc5..7f35b5ba1924 100644
> > > --- a/drivers/gpu/drm/drm_debugfs_crc.c
> > > +++ b/drivers/gpu/drm/drm_debugfs_crc.c
> > > @@ -396,8 +396,9 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, 
> > > bool has_frame,
> > >   struct drm_crtc_crc *crc = >crc;
> > >   struct drm_crtc_crc_entry *entry;
> > >   int head, tail;
> > > + unsigned long flags;
> > >
> > > - spin_lock(>lock);
> > > + spin_lock_irqsave(>lock, flags);
> > >
> > >   /* Caller may not have noticed yet that userspace has stopped 
> > > reading */
> > >   if (!crc->entries) {
> > > @@ -428,7 +429,7 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, 
> > > bool has_frame,
> > >   head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1);
> > >   crc->head = head;
> > >
> > > - spin_unlock(>lock);
> > > + spin_unlock_irqrestore(>lock, flags);
> > >
> > >   wake_up_interruptible(>wq);
> > >
> > > --
> > > 2.20.1
> > >
> > > ___
> > > dri-devel mailing list
> > > dri-devel@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> >
> > --
> > Ville Syrjälä
> > Intel
> > ___
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH] drm/crc-debugfs: User irqsafe spinlock in drm_crtc_add_crc_entry

2019-06-06 Thread Benjamin Gaignard
Le jeu. 6 juin 2019 à 10:12, Ville Syrjälä
 a écrit :
>
> On Wed, Jun 05, 2019 at 09:45:56PM +0200, Daniel Vetter wrote:
> > We can be called from any context, we need to be prepared.
> >
> > Noticed this while hacking on vkms, which calls this function from a
> > normal worker. Which really upsets lockdep.
> >
> > Cc: Rodrigo Siqueira 
> > Cc: Tomeu Vizoso 
> > Cc: Emil Velikov 
> > Cc: Benjamin Gaignard 
> > Signed-off-by: Daniel Vetter 
>
> Reviewed-by: Ville Syrjälä 

Reviewed-by: Benjamin Gaignard 

>
> > ---
> >  drivers/gpu/drm/drm_debugfs_crc.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_debugfs_crc.c 
> > b/drivers/gpu/drm/drm_debugfs_crc.c
> > index 585169f0dcc5..7f35b5ba1924 100644
> > --- a/drivers/gpu/drm/drm_debugfs_crc.c
> > +++ b/drivers/gpu/drm/drm_debugfs_crc.c
> > @@ -396,8 +396,9 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
> > has_frame,
> >   struct drm_crtc_crc *crc = >crc;
> >   struct drm_crtc_crc_entry *entry;
> >   int head, tail;
> > + unsigned long flags;
> >
> > - spin_lock(>lock);
> > + spin_lock_irqsave(>lock, flags);
> >
> >   /* Caller may not have noticed yet that userspace has stopped reading 
> > */
> >   if (!crc->entries) {
> > @@ -428,7 +429,7 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
> > has_frame,
> >   head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1);
> >   crc->head = head;
> >
> > - spin_unlock(>lock);
> > + spin_unlock_irqrestore(>lock, flags);
> >
> >   wake_up_interruptible(>wq);
> >
> > --
> > 2.20.1
> >
> > ___
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Ville Syrjälä
> Intel
> ___
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH] drm/crc-debugfs: User irqsafe spinlock in drm_crtc_add_crc_entry

2019-06-06 Thread Ville Syrjälä
On Wed, Jun 05, 2019 at 09:45:56PM +0200, Daniel Vetter wrote:
> We can be called from any context, we need to be prepared.
> 
> Noticed this while hacking on vkms, which calls this function from a
> normal worker. Which really upsets lockdep.
> 
> Cc: Rodrigo Siqueira 
> Cc: Tomeu Vizoso 
> Cc: Emil Velikov 
> Cc: Benjamin Gaignard 
> Signed-off-by: Daniel Vetter 

Reviewed-by: Ville Syrjälä 

> ---
>  drivers/gpu/drm/drm_debugfs_crc.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_debugfs_crc.c 
> b/drivers/gpu/drm/drm_debugfs_crc.c
> index 585169f0dcc5..7f35b5ba1924 100644
> --- a/drivers/gpu/drm/drm_debugfs_crc.c
> +++ b/drivers/gpu/drm/drm_debugfs_crc.c
> @@ -396,8 +396,9 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
> has_frame,
>   struct drm_crtc_crc *crc = >crc;
>   struct drm_crtc_crc_entry *entry;
>   int head, tail;
> + unsigned long flags;
>  
> - spin_lock(>lock);
> + spin_lock_irqsave(>lock, flags);
>  
>   /* Caller may not have noticed yet that userspace has stopped reading */
>   if (!crc->entries) {
> @@ -428,7 +429,7 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool 
> has_frame,
>   head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1);
>   crc->head = head;
>  
> - spin_unlock(>lock);
> + spin_unlock_irqrestore(>lock, flags);
>  
>   wake_up_interruptible(>wq);
>  
> -- 
> 2.20.1
> 
> ___
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel