[tesla-dev] turnstiles block issue

Li, Aubrey aubrey.li at intel.com
Fri Jul 11 06:09:33 PDT 2008


In idle thread, to support C3, ACPI spec recommends to use several
ACPI registers like BM_STS, etc. In solaris, we have ACPICA to read
and write these registers.

AcpiGetRegister (
    UINT32                  RegisterId,
    UINT32                  *ReturnValue,
    UINT32                  Flags)

AcpiSetRegister (
    UINT32                  RegisterId,
    UINT32                  Value,
    UINT32                  Flags)

The problem is, osl use mutex to lock these operation in case of the
multiprocessor race. That means it's possible CPU1 will hit turnstiles
block if the same time it requires the ACPI register access as CPU0.
That will cause a ASSERT failure. (t != CPU->cpu_idle_thread);
I think the interface in acpica need to be fixed. Or I have to implement
another interface function in c-state driver?
Before do that, I'll try to see if there is any better suggestions.

Thanks,
-Aubrey




More information about the tesla-dev mailing list