From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Christoph Hellwig <hch@infradead.org>,
lkml <linux-kernel@vger.kernel.org>,
David Miller <davem@davemloft.net>,
Ulrich Drepper <drepper@redhat.com>,
Andrew Morton <akpm@osdl.org>, netdev <netdev@vger.kernel.org>,
Zach Brown <zach.brown@oracle.com>,
tglx@linutronix.de
Subject: Re: [take12 3/3] kevent: Timer notifications.
Date: Mon, 21 Aug 2006 16:25:43 +0400 [thread overview]
Message-ID: <20060821122542.GA24519@2ka.mipt.ru> (raw)
In-Reply-To: <1156162429.23756.150.camel@laptopd505.fenrus.org>
On Mon, Aug 21, 2006 at 02:13:49PM +0200, Arjan van de Ven (arjan@infradead.org) wrote:
> > > Call me a cynic, but I'm always a bit sceptical about needing lockdep
> > > annotations like this... Can you explain why you need it in this case,
> > > including the proof that it's safe?
> >
> > Ok, again :)
> > Kevent uses meaning of storage of kevents without any special knowledge
> > what is is (inode, socket, file, timer - anything), so it's
> > initalization function among other things calls spin_lock_init().
> > Lockdep inserts static variable just before real spinlock
> > initialization, and since all locks are initialized in the same place,
> > all of them get the same static magic.
> > Later those locks are used in different context (for example inode
> > notificatins only in process context, but socket can be called from BH
> > context), since lockdep thinks they are the same, it screams.
> > Obviously the same inode can not be used for sockets and files, so I
> > added above lockdep initialization.
>
> ok... but since kevent doesn't know what is in it, wouldn't the locking
> rules need to be such that it can deal with the "worst case" event? Eg
> do you really have both no knowledge of what is inside, and specific
> locking implementations for the different types of content??? That
> sounds rather error prone.....
> (if you had consistent locking rules lockdep would be perfectly fine
> with that)
It is tricky - currently there is RCU protection for storage list
traversal from each origin, i.e. the that path takes a lock when
kevent is really ready (to put it into ready list) and to check kevent's
flags (actually event that could be replced by more strict callback's
return values).
No existing origins call kevent_storage_ready() from context where it
can be reentered (it guarantees from other side that locks will not be
reentered), so in theory that lockdep tricks are not needed right now
(they were added before I moved list traversal to RCU).
In the current code storage->lock is safe and correct from lockdep point
of view (since different origins are never crossed), so I have not
changed reinit.
> --
> if you want to mail me at work (you don't), use arjan (at) linux.intel.com
--
Evgeniy Polyakov
next prev parent reply other threads:[~2006-08-21 12:26 UTC|newest]
Thread overview: 143+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <12345678912345.GA1898@2ka.mipt.ru>
2006-08-17 7:43 ` [take11 0/3] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-08-17 7:43 ` [take11 1/3] kevent: Core files Evgeniy Polyakov
2006-08-17 7:43 ` [take11 2/3] kevent: poll/select() notifications Evgeniy Polyakov
2006-08-17 7:43 ` [take11 3/3] kevent: Timer notifications Evgeniy Polyakov
2006-08-21 10:19 ` [take12 0/3] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-08-21 10:19 ` [take12 1/3] kevent: Core files Evgeniy Polyakov
2006-08-21 10:19 ` [take12 2/3] kevent: poll/select() notifications Evgeniy Polyakov
2006-08-21 10:19 ` [take12 3/3] kevent: Timer notifications Evgeniy Polyakov
2006-08-21 11:12 ` Christoph Hellwig
2006-08-21 11:18 ` Evgeniy Polyakov
2006-08-21 11:27 ` Arjan van de Ven
2006-08-21 11:59 ` Evgeniy Polyakov
2006-08-21 12:13 ` Arjan van de Ven
2006-08-21 12:25 ` Evgeniy Polyakov [this message]
2006-08-21 14:25 ` Thomas Gleixner
2006-08-22 18:25 ` Evgeniy Polyakov
2006-08-21 12:09 ` Evgeniy Polyakov
2006-08-22 4:36 ` Andrew Morton
2006-08-22 5:48 ` Evgeniy Polyakov
2006-08-21 12:37 ` [take12 4/3] kevent: Comment cleanup Evgeniy Polyakov
2006-08-23 8:51 ` [take12 1/3] kevent: Core files Eric Dumazet
2006-08-23 9:18 ` Evgeniy Polyakov
2006-08-23 9:23 ` Eric Dumazet
2006-08-23 9:29 ` Evgeniy Polyakov
2006-08-22 7:00 ` [take12 0/3] kevent: Generic event handling mechanism Nicholas Miell
2006-08-22 7:24 ` Evgeniy Polyakov
2006-08-22 8:17 ` Nicholas Miell
2006-08-22 8:23 ` David Miller
2006-08-22 8:59 ` Nicholas Miell
2006-08-22 14:59 ` James Morris
2006-08-22 20:00 ` Nicholas Miell
2006-08-22 20:36 ` David Miller
2006-08-22 21:13 ` Nicholas Miell
2006-08-22 21:25 ` David Miller
2006-08-22 22:58 ` Nicholas Miell
2006-08-22 23:46 ` Ulrich Drepper
2006-08-23 1:51 ` Nicholas Miell
2006-08-23 6:54 ` Evgeniy Polyakov
2006-08-22 8:37 ` Evgeniy Polyakov
2006-08-22 9:29 ` Nicholas Miell
2006-08-22 10:03 ` Evgeniy Polyakov
2006-08-22 19:57 ` Nicholas Miell
2006-08-22 20:16 ` Evgeniy Polyakov
2006-08-22 21:13 ` Nicholas Miell
2006-08-22 21:37 ` Randy.Dunlap
2006-08-22 22:01 ` Andrew Morton
2006-08-22 22:17 ` David Miller
2006-08-22 23:35 ` Andrew Morton
2006-08-22 22:58 ` Nicholas Miell
2006-08-22 23:06 ` David Miller
2006-08-23 1:36 ` The Proposed Linux kevent API (was: Re: [take12 0/3] kevent: Generic event handling mechanism.) Nicholas Miell
2006-08-23 2:01 ` The Proposed Linux kevent API Howard Chu
2006-08-23 3:31 ` David Miller
2006-08-23 3:47 ` Nicholas Miell
2006-08-23 4:23 ` Nicholas Miell
2006-08-23 6:22 ` The Proposed Linux kevent API (was: Re: [take12 0/3] kevent: Generic event handling mechanism.) Evgeniy Polyakov
2006-08-23 8:01 ` Nicholas Miell
2006-08-23 18:24 ` The Proposed Linux kevent API Stephen Hemminger
2006-08-22 23:22 ` [take12 0/3] kevent: Generic event handling mechanism Randy.Dunlap
[not found] ` <b3f268590608220957g43a16d6bmde8a542f8ad8710b@mail.gmail.com>
2006-08-22 17:09 ` Jari Sundell
2006-08-22 18:01 ` Evgeniy Polyakov
2006-08-22 19:14 ` Jari Sundell
2006-08-22 19:47 ` Evgeniy Polyakov
2006-08-22 22:51 ` Jari Sundell
2006-08-22 23:11 ` Alexey Kuznetsov
2006-08-23 0:28 ` Jari Sundell
2006-08-23 0:32 ` David Miller
2006-08-23 0:43 ` Jari Sundell
2006-08-23 6:56 ` Evgeniy Polyakov
2006-08-23 7:07 ` Andrew Morton
2006-08-23 7:10 ` Evgeniy Polyakov
2006-08-23 9:58 ` Andi Kleen
2006-08-23 10:03 ` Evgeniy Polyakov
2006-08-23 7:35 ` David Miller
2006-08-23 8:18 ` Nicholas Miell
2006-08-23 7:43 ` Ian McDonald
2006-08-23 7:50 ` Evgeniy Polyakov
2006-08-23 16:09 ` Andrew Morton
2006-08-23 16:22 ` Evgeniy Polyakov
2006-08-23 8:22 ` Jari Sundell
2006-08-23 8:39 ` Evgeniy Polyakov
2006-08-23 9:49 ` Jari Sundell
2006-08-23 10:20 ` Evgeniy Polyakov
2006-08-23 10:34 ` Jari Sundell
2006-08-23 10:51 ` Evgeniy Polyakov
2006-08-23 12:55 ` Jari Sundell
2006-08-23 13:11 ` Evgeniy Polyakov
2006-08-22 11:54 ` [PATCH] kevent_user: remove non-chardev interface Christoph Hellwig
2006-08-22 12:17 ` Evgeniy Polyakov
2006-08-22 12:27 ` Christoph Hellwig
2006-08-22 12:39 ` Evgeniy Polyakov
2006-08-22 11:55 ` [PATCH] kevent_user: use struct kevent_mring for the page ring Christoph Hellwig
2006-08-22 12:20 ` Evgeniy Polyakov
2006-08-23 11:24 ` [take13 0/3] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-08-23 11:24 ` [take13 1/3] kevent: Core files Evgeniy Polyakov
2006-08-23 11:24 ` [take13 2/3] kevent: poll/select() notifications Evgeniy Polyakov
2006-08-23 11:24 ` [take13 3/3] kevent: Timer notifications Evgeniy Polyakov
2006-08-23 12:51 ` [take13 1/3] kevent: Core files Eric Dumazet
[not found] ` <20060823132753.GB29056@2ka.mipt.ru>
2006-08-23 13:44 ` Evgeniy Polyakov
2006-08-24 20:03 ` Christoph Hellwig
2006-08-25 5:48 ` Evgeniy Polyakov
2006-08-25 6:20 ` Andrew Morton
2006-08-25 6:32 ` Evgeniy Polyakov
2006-08-25 6:58 ` Andrew Morton
2006-08-25 7:20 ` Evgeniy Polyakov
2006-08-25 7:01 ` David Miller
2006-08-25 7:13 ` Andrew Morton
[not found] ` <Pine.LNX.4.63.0608231313370.8007@alpha.polcom.net>
[not found] ` <20060823122509.GA5744@2ka.mipt.ru>
[not found] ` <Pine.LNX.4.63.0608231437170.8007@alpha.polcom.net>
[not found] ` <20060823134227.GC29056@2ka.mipt.ru>
2006-08-23 18:56 ` [take13 0/3] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-08-23 19:42 ` Evgeniy Polyakov
2006-08-25 9:54 ` [take14 " Evgeniy Polyakov
2006-08-25 9:54 ` [take14 1/3] kevent: Core files Evgeniy Polyakov
2006-08-25 9:54 ` [take14 2/3] kevent: poll/select() notifications Evgeniy Polyakov
2006-08-25 9:54 ` [take14 3/3] kevent: Timer notifications Evgeniy Polyakov
2006-08-27 21:03 ` [take14 0/3] kevent: Generic event handling mechanism Ulrich Drepper
2006-08-28 1:57 ` David Miller
2006-08-28 2:11 ` Ulrich Drepper
2006-08-28 2:40 ` Nicholas Miell
2006-08-28 2:59 ` Nicholas Miell
2006-08-28 11:47 ` Jari Sundell
2006-08-31 7:58 ` Evgeniy Polyakov
2006-09-09 16:10 ` Ulrich Drepper
2006-09-11 5:42 ` Evgeniy Polyakov
2006-09-04 10:14 ` [take15 0/4] " Evgeniy Polyakov
2006-09-04 9:58 ` Evgeniy Polyakov
2006-09-04 10:14 ` [take15 1/4] kevent: Core files Evgeniy Polyakov
2006-09-04 10:14 ` [take15 2/4] kevent: poll/select() notifications Evgeniy Polyakov
2006-09-04 10:14 ` [take15 3/4] kevent: Socket notifications Evgeniy Polyakov
2006-09-04 10:14 ` [take15 4/4] kevent: Timer notifications Evgeniy Polyakov
2006-09-05 13:39 ` Arnd Bergmann
2006-09-06 6:42 ` Evgeniy Polyakov
2006-09-05 13:28 ` [take15 1/4] kevent: Core files Arnd Bergmann
2006-09-06 6:51 ` Evgeniy Polyakov
2006-09-04 10:24 ` [take15 0/4] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-09-06 11:55 ` [take16 " Evgeniy Polyakov
2006-09-06 11:55 ` [take16 1/4] kevent: Core files Evgeniy Polyakov
2006-09-06 11:55 ` [take16 2/4] kevent: poll/select() notifications Evgeniy Polyakov
2006-09-06 11:55 ` [take16 3/4] kevent: Socket notifications Evgeniy Polyakov
2006-09-06 11:55 ` [take16 4/4] kevent: Timer notifications Evgeniy Polyakov
2006-09-06 13:40 ` [take16 1/4] kevent: Core files Chase Venters
2006-09-06 13:54 ` Chase Venters
2006-09-06 14:03 ` Evgeniy Polyakov
2006-09-06 14:23 ` Chase Venters
2006-09-07 7:10 ` Evgeniy Polyakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060821122542.GA24519@2ka.mipt.ru \
--to=johnpol@2ka.mipt.ru \
--cc=akpm@osdl.org \
--cc=arjan@infradead.org \
--cc=davem@davemloft.net \
--cc=drepper@redhat.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=zach.brown@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®