On Mon 2023-06-26 10:12:54, Sebastian Andrzej Siewior wrote: > On 2023-06-24 15:54:12 [+0900], Tetsuo Handa wrote: > > Why not to do the same on the end side? > > > > static inline void do_write_seqcount_end(seqcount_t *s) > > { > > - seqcount_release(&s->dep_map, _RET_IP_); > > do_raw_write_seqcount_end(s); > > + seqcount_release(&s->dep_map, _RET_IP_); > > } > > I don't have a compelling argument for doing it. It is probably better > to release the lock from lockdep's point of view and then really release > it (so it can't be acquired before it is released). If this is true then we should not change the ordering on the _begin side either. I mean that we should call the lockdep code only after the lock is taken. Anyway, both sides should be symmetric. That said, lockdep is about chains of locks and not about timing. We must not call lockdep annotation when the lock is still available for a nested context. So the ordering is probably important only when the lock might be taken from both normal and interrupt context. Anyway, please do not do this change only because of printk(). IMHO, the current ordering is more logical and the printk() problem should be solved another way. Best Regards, Petr