mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stefan Richter <stefanr@s5r6.in-berlin.de>
To: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	David Brownell <david-b@pacbell.net>,
	Richard Purdie <rpurdie@rpsys.net>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	netdev@vger.kernel.org,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org,
	video4linux-list@redhat.com, lm-sensors@lm-sensors.org
Subject: Re: use of preempt_count instead of in_atomic() at leds-gpio.c
Date: Fri, 21 Mar 2008 14:16:24 +0100	[thread overview]
Message-ID: <47E3B528.6010200@s5r6.in-berlin.de> (raw)
In-Reply-To: <20080321123708.GE5586@khazad-dum.debian.net>

Henrique de Moraes Holschuh wrote:
> On Fri, 21 Mar 2008, Stefan Richter wrote:
>> and eth1394 to deal with temporary lack of of tlabels.  Alas I just  
>> recently received a report that eth1394's workaround is unsuccessful on  
>> non-preemptible uniprocessor kernels.  
> 
> Which, I think, is exactly the config where in_atomic() can't be used to
> mean "in_scheduleable_context()" ?

That's coincidence.

The mentioned workaround fails this way:
   - tlabel consumer eth1394 (IPv4 over FireWire) grabs lots of tlabels
     in soft IRQ context.
   - tlabel recycler khpsbpkt (a kthread of ieee1394) sleeps even though
     it could start putting tlabels back into the pool.
   - eth1394 can't get tlabels anymore, stops the transmit queue,
     schedules a workqueue job.
   - eth1394's workqueue job (run by the events kthread) tries to acquire
     a tlabel.  It does so in non-atomic context and hence sleeps in
     hpsb_get_tlabel() until the tlabel pool is nonempty again.  It would
     then wake up the eth1394 transmit queue again.
   - Normally, khpsbpkt would have been woken up by now and would have
     released a lot of now unused tlabels back into the pool again.
     However, on UP preempt_none kernels, khpsbpkt continues to sleep.
     (The 1394 stack's lower level runing in IRQ context or perhaps
     tasklet context wakes up khpsbpkt.)
   - Since it doesn't get a tlabel, eth1394's workqueue jobs sleeps
     forever as well.

Result is that all other tasks of the shared workqueue can't be 
serviced, notably the keyboard is stuck, and that the eth1394 connection 
breaks down.  (I haven't started working on a fix, or opened a bugzilla 
ticket for it yet.  The reporter currently switched his kernel to 
PREEMPT which is not affected.)

IOW:
The failure in the workaround is *not* about the in_atomic() being the 
wrong question asked in hpsb_get_tlabel() --- no, ieee1394's in_atomic() 
abuse works just fine even on UP PREEMPT_NONE.  Instead, the failure is 
about kthreads not being scheduled in the way that I thought they would.
-- 
Stefan Richter
-=====-==--- --== =-=-=
http://arcgraph.de/sr/

  reply	other threads:[~2008-03-21 13:18 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-16 18:43 Henrique de Moraes Holschuh
2008-03-16 19:46 ` David Brownell
2008-03-18  7:14   ` Andrew Morton
2008-03-18 19:06     ` David Brownell
2008-03-18 20:07       ` Andrew Morton
2008-03-20 22:56     ` Henrique de Moraes Holschuh
2008-03-20 23:47       ` Andrew Morton
2008-03-21  0:36         ` Henrique de Moraes Holschuh
2008-03-21  1:08           ` Andrew Morton
2008-03-21  1:31             ` Alan Stern
2008-03-21  1:36               ` Michael Buesch
2008-03-21  2:27                 ` Andrew Morton
2008-03-21  3:07                   ` Alan Stern
2008-03-21  3:17                     ` Andrew Morton
2008-03-21  9:53                       ` Jean Delvare
2008-03-21 17:37                         ` Andrew Morton
2008-03-21 18:05                           ` Alan Stern
2008-03-24 19:34                             ` Jonathan Corbet
2008-03-24 19:42                               ` Andrew Morton
2008-03-24 19:53                                 ` Jonathan Corbet
2008-03-25  8:52                                   ` Junio C Hamano
2008-03-25 10:39                                     ` Jean Delvare
2008-03-25 13:44                                     ` Jonathan Corbet
2008-03-25 23:20                                       ` David Brownell
2008-03-26 14:28                                         ` Alan Stern
2008-03-26 16:17                                           ` Henrique de Moraes Holschuh
2008-03-26 16:46                                             ` Richard Purdie
2008-03-27 18:51                                             ` David Brownell
2008-03-21 15:11                       ` Tetsuo Handa
2008-03-21 16:54                         ` Stefan Richter
2008-03-21 17:02                           ` Stefan Richter
2008-03-23  5:53                             ` Tetsuo Handa
2008-03-21 13:47                   ` Heiko Carstens
2008-03-21 16:54                     ` Greg KH
2008-03-21 19:59                       ` Andrew Morton
2008-03-21 20:16                         ` Michael Buesch
2008-03-21 20:20                           ` Michael Buesch
2008-03-21  9:21             ` Stefan Richter
2008-03-21  9:27               ` Stefan Richter
2008-03-21 12:37               ` Henrique de Moraes Holschuh
2008-03-21 13:16                 ` Stefan Richter [this message]
2008-03-22 11:29                   ` Stefan Richter
2008-03-21 17:04             ` David Brownell
2008-03-21  0:56         ` Richard Purdie
2008-03-21  2:10           ` Henrique de Moraes Holschuh

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=47E3B528.6010200@s5r6.in-berlin.de \
    --to=stefanr@s5r6.in-berlin.de \
    --cc=akpm@linux-foundation.org \
    --cc=david-b@pacbell.net \
    --cc=geert@linux-m68k.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hmh@hmh.eng.br \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=rpurdie@rpsys.net \
    --cc=schwidefsky@de.ibm.com \
    --cc=video4linux-list@redhat.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®