This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug runtime/20820] another "soft lockup" BUG on RHEL7 ppc64


https://sourceware.org/bugzilla/show_bug.cgi?id=20820

--- Comment #15 from David Smith <dsmith at redhat dot com> ---
(In reply to Josh Stone from comment #14)
> Comment on attachment 9682 [details]
> proposed __stp_init_time() patch
> 
> > -    write_seqlock(&time->lock);
> > +    write_seqlock_irqsave(&time->lock, flags2);
> >      time->base_ns = ns;
> >      time->base_cycles = cycles;
> > -    write_sequnlock(&time->lock);
> > +    write_sequnlock_irqrestore(&time->lock, flags2);
> >  
> >      local_irq_restore(flags);
> 
> Why do you need to save irq if it's already in a local_irq_save section?

Good question. Everywhere I can find in the kernel that uses *_irqsave() on 2
different locking items in the same function, that code uses *_irqsave() on
both locking items. Several months back I looked at the source of
write_seqlock() vs. write_seqlock_irqsave(), and if I remember correctly the
waiting method was different between the two. So, we're not using the 2nd
write_seqlock_irqsave() call to disable interrupts again, but to wait in the
most appropriate way once interrupts are disabled.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]