Source-Changes archive

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

CVS commit: src/sys/dev/acpi

Module Name:    src
Committed By:   jruoho
Date:           Tue Feb 22 09:34:13 UTC 2011

Modified Files:
        src/sys/dev/acpi: acpi_cpu_cstate.c

Log Message:
Only check if the register address in _CST is valid if the ACPI processor
object address is valid. Some systems define the Processor() as:

    Scope (_PR)
        Processor (C000, 0x00, 0x00000410, 0x06) {}
        Processor (C001, 0x01, 0x00000000, 0x00) {}
        Processor (C002, 0x02, 0x00000000, 0x00) {}
        Processor (C003, 0x03, 0x00000000, 0x00) {}

This may be typical to AMD systems that do not seem to use _CST, but instead
operate with HLT (and C1E for the C3-state). The same check is already done
in acpicpu_cstate_fadt(). Note that this violates the specification, given:

   "PBlockAddress provides the system I/O address for the processors
    register block.  Each processor can supply a different such address.
    PBlockLength is the length of the processor register block, in bytes and
    is either 0 (for no P_BLK) or 6.  With one exception, all processors are
    required to have the same PBlockLength.  The exception is that the boot
    processor can have a non-zero PBlockLength when all other processors
    have a zero PBlockLength.  It is valid for every processor to have a
    PBlockLength of 0. (ACPI 4.0, p. 626)"

However, if the above is not satisfied, we simply resort to HALT that should
be available on all supported x86 CPUs.

To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/dev/acpi/acpi_cpu_cstate.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index