ACPI-CA update patch for review

Simon 'corecode' Schubert corecode at fs.ei.tum.de
Thu Nov 30 05:58:39 PST 2006


YONETANI Tomokazu wrote:
:- hand-rolled locking code in AcpiOs{Acquire,Release}Lock() functions:
:  ACPI-CA code has been rewritten in 20060623 to make these functions
:  to be used as spinlock functions, and called from many places where
:  they weren't before.  Since our implementation of these locking functions
:  used lockmgr lock, which cannot be called from cpu_idle(), this led to
:  a panic(mainly when my laptop wakes up from sleep state).  After struggling
:  with other locking primitives, I ended up with critical section and
:  special-cased the idlethread.  I believed this shouldn't make the situation
:  worse, as ACPI functions called from cpu_idle_hook code in acpi_cpu did
:  not using locking before.  But I'm open to a better implementation,
:  especially how to deal with locking when called from idlethread.
    You could probably use tokens here, but a critical section ought to
    work as well since ACPI functions are only called from cpu #0.
Does that apply to ioctl or sysctl support code, too?  Can you shed
some light on me to find how it's guaranteed?
First, why don't you use spinlocks then (note: I didn't read the code)?

To just use a critical section, you'd have to migrate the calling thread to cpu0, or have a acpi thread running on cpu0, and send a synchronous message to this thread, processing your request.

How are the guarantees the ACPI code gives?  Will it ever call a blocking function (kmalloc M_WAITOK, etc) while holding the lock?  Does it expect the lock to persist?  If yes, that's ugly and you'd have to use lockmgr locks and an own thread.

Why are the ACPI functions called from the idle thread, anyways?

cheers
 simon
--
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \
Attachment:
signature.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00004.pgp
Type: application/octet-stream
Size: 252 bytes
Desc: "Description: OpenPGP digital signature"
URL: <http://lists.dragonflybsd.org/pipermail/submit/attachments/20061130/db09a74d/attachment-0015.obj>


More information about the Submit mailing list