Ticketing spinlocks - How to get to the owner who locked the spinlock?

manty kuma mantykuma at gmail.com
Tue Jan 27 01:22:30 EST 2015


Dear Arun,

typedef struct raw_spinlock {
    arch_spinlock_t raw_lock;
#ifdef CONFIG_GENERIC_LOCKBREAK
    unsigned int break_lock;
#endif
#ifdef CONFIG_DEBUG_SPINLOCK
    unsigned int magic, owner_cpu;
    void *owner;
#endif
#ifdef CONFIG_DEBUG_LOCK_ALLOC
    struct lockdep_map dep_map;
#endif
} raw_spinlock_t;


Unfortunately, CONFIG_DEBUG_SPINLOCK is disabled on my sw. So i do not have
this information. :(

Any other way?

On Tue, Jan 27, 2015 at 3:12 PM, Arun KS <getarunks at gmail.com> wrote:

> Hello Manty,
>
> On Tue, Jan 27, 2015 at 11:27 AM, manty kuma <mantykuma at gmail.com> wrote:
> >
> > Hi All,
> >
> > Currently I am looking into an issue which is holding the printk
> lock(logbuf_lock)
> >
> > logbuf_lock = {
> >   raw_lock = {
> >     owner = 0,
> >     next = 4
> >   }
> > }
> >
> > I read about ticketing spinlocks to understand the above output. I
> understood that 4 cpu's are waiting for the lock while someone already has
> it.
> >
> > I would like to know who has it? Is there a way I can know which process
> is acquiring a given spinlock? Is the information not stored in it?
> >
> > I am using crash tool to analyse the dump
>
>
> crash> raw_spinlock_t
> typedef struct raw_spinlock {
>     arch_spinlock_t raw_lock;
>     unsigned int magic;
>     unsigned int owner_cpu;
>     void *owner;
> } raw_spinlock_t;
> SIZE: 16
>
> The owner field points to task holding the lock, if locked.
>
> Here is what i have in one of my dumps,
> crash> logbuf_lock
> logbuf_lock = $6 = {
>   raw_lock = {
>     {
>       slock = 464001960,
>       tickets = {
>         owner = 7080,
>         next = 7080
>       }
>     }
>   },
>   magic = 3735899821,
>   owner_cpu = 4294967295,
>   owner = 0xffffffff
> }
>
> since lock is not acquired, it shows 0xFFFFFFFF.
> Otherwise point to a task_struct *.
>
> thanks,
> Arun
>
> >
> >
> > Regards,
> > Manty
> >
> > _______________________________________________
> > Kernelnewbies mailing list
> > Kernelnewbies at kernelnewbies.org
> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150127/05865fb6/attachment.html 


More information about the Kernelnewbies mailing list