Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 May 2006 22:54:24 -0700
From:      John-Mark Gurney <gurney_j@resnet.uoregon.edu>
To:        Warner Losh <imp@bsdimp.com>
Cc:        cvs-src@freebsd.org, scottl@samsco.org, src-committers@freebsd.org, cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/dev/syscons/apm apm_saver.c src/sys/i386/bios apm.c apm.h
Message-ID:  <20060526055424.GG49081@funkthat.com>
In-Reply-To: <20060525.220611.74708877.imp@bsdimp.com>
References:  <200605252306.k4PN6cCS081708@repoman.freebsd.org> <44766F75.9060100@samsco.org> <20060525.220611.74708877.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Warner Losh wrote this message on Thu, May 25, 2006 at 22:06 -0600:
> > In the past, I've been against mandating that callouts/timeouts/generic 
> > taskqueues should not be allowed to sleep.  However, after looking over
> > the history of this problem as well as others, it seems that it's just
> > too easy for driver authors to make bad assumptions and wind up with a
> > priority inversion/deadlock like this.  It would be relatively trivial
> > to mark these contexts as being non-sleepable and have the msleep code
> > enforce it, like is done with ithreads.  What do you think?  Anyways,
> > thanks for looking at this and fixing it.
> 
> At the very least, we should mandate that timeouts are a non-sleepable
> event.  Sleeping just doesn't work there.  taskqueues, I'm less sure
> of, since short sleeps there work, but do degrade performance.  I like
> this idea.

People worried about things like this should create their own thread
for their taskqueue..  It's quite easy (simple macro declaration), and
I did that for handling kq in kq...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060526055424.GG49081>