DragonFly submit List (threaded) for 2007-01
DragonFly BSD
DragonFly submit List (threaded) for 2007-01
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: ACPI-CA update patch for review


From: "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>
Date: Tue, 09 Jan 2007 07:15:21 +0100

YONETANI Tomokazu wrote:
Was it a complete hang, or stuck for a few minutes?  Was that during early
in the boot, or sysctl from the command line (either in single- or multi-
user mode)?  Also, if you were able to drop into DDB, please send me the
backtrace, in particular a few function names below (I mean callers of)
AcpiOsWaitSemaphore().

It was stuck on bootup (the random thing: seedenable + dd). I did a ^C (after some time) and this was printed:


ACPI Exception (exutils-0382): AE_TIME, Could not aquire Global Lock [20061109]
acpi_acad0: On Line

there were two processes in acsem: acpi_task and sysctl (why sysctl has to aquire the acpi lock is out of my imagination). both seem to try to aquire the global lock. sysctl can happen to run (sleep) on CPU #0 or CPU #1.

trace of acpi_task (transcribed):
AcpiOsWaitSemaphore(c3bc12f0,1,ffff)
AcpiExSystemWaitSemaphore(c3bc12f0,ffff)
AcpiEvAcquireGlobalLock(ffff)
AcpiExAcquireGlobalLock(10)
AcpiExWriteDataToField
AcpiExStoreObjectToNode
AcpiExStore
AcpiExOpcode_1A_1T_1R
AcpiDsExecEndOp
AcpiPsParseLoop
AcpiPsParseAml
ApciPsExecuteMethod
AcpiNsEvaluate
AcpiEvaluateObject
acpi_GetInteger
acpi_acad_get_status
acpi_acad_init_acline
acpi_task_thread


trace of sysctl: AcpiOsWaitSemaphore(c3bc12d8,1,ffff) AcpiExSystemWaitMutex(c3bc12d8,ffff) AcpiEvAcquireGlobalLock(ffff) AcpiExAcquireGlobalLock(10) AcpiExWriteDataToField AcpiExStoreObjectToNode AcpiExStore AcpiExOpcode_1A_1T_1R AcpiDsExecEndOp AcpiPsParseLoop AcpiPsParseAml AcpiPsExecuteMethod AcpiNsEvaluate AcpiEvaluateObject acpi_GetInteger acpi_acad_get_acline acpi_acad_sysctl sysctl_root userland_sysctl sys___sysctl syscall2


on a (maybe) unrelated matter:


I saw your implementation of AcpiOsAcquireLock is not MP-safe (only uses critical sections) and always allows the idle thread to take the lock (even when it is already held before). Is this intended?

oh well, i see that AS_LOCK(as) == crit_enter(). Obviously, this doesn't work for SMP systems, no?

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
Description: OpenPGP digital signature



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]