OpenSolaris

Printable Version Enter a New Search
Bug ID 6667515
Synopsis SpeedStep is not supported on platforms that incorrectly require _PDC bit 1 to be enabled
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:pm
Keywords
Responsible Engineer Mark Haywood
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_86
Fixed In snv_86
Release Fixed solaris_nevada(snv_86) , solaris_10u6(s10u6_02) (Bug ID:2160118)
Related Bugs 6749421
Submit Date 25-February-2008
Last Update Date 28-March-2008
Description
A user on OpenSolaris reported that SpeedStep was not working on his laptop and
was receiving the following error messages:

Feb  8 22:34:06 unknown cpudrv: [ID 805513 kern.info] NOTICE: cpu_acpi: _PSS package not found.
Feb  8 22:34:06 unknown cpudrv: [ID 978953 kern.warning] WARNING: cpu_acpi: error parsing _PSS for CPU instance 1

Inspecting his ACPI tables, I found the following ASL for \PR.CPU1:

     Scope (\_PR.CPU1)
     {
         Name (HI1, 0x00)
         Name (HC1, 0x00)
         Name (TLD1, 0x00)
         Method (_PDC, 1, NotSerialized)
         {
             CreateDWordField (Arg0, 0x08, CAP1)
             Store (CAP1, PDC1)
             If (LEqual (TLD1, 0x00))
             {
----->          If (LEqual (And (PDC1, 0x0A), 0x0A))
                 {
                     If (And (CFGD, 0x02))
                     {
                         OperationRegion (IST1, SystemMemory, DerefOf 
(Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
                             )))
                         Load (IST1, HI1)
                     }

                     Store (0x01, TLD1)
                 }
             }
         }
     }

In particular, note the line marked with the arrow above. It's 
checking to see if bits 1 & 3 are enabled in the PDC and will load 
cpu1ist if true. I believe this is the problem since Solaris does not 
enable bit 1. According to the Intel Processor Vendor-Specific ACPI 
enabling bit 1 indicates:

if set, OSPM supports the C1 "I/O then Halt" FFH sequence for 
multi-processor configurations.

Typically, I've seen PDC methods check to see if bits 0 & 3 (0x9) are 
enabled. These make a lot more sense given that they are P-state related 
bits:

bit 0: if set, OSPM is capable of direct access to Performance State MSRs.

bit 3: if set, OSPM is capable of independent C1, P state and T state 
support for each processor for multi-processor configurations.

I contacted folks at Intel and was told that this was a weel-known BIOS bug on some
platforms. Their suggestion was for Solaris to enable the bit as it was fairly hopeless
to expect this to be fixed by the BIOS writers. This was what they did for Linux.
Work Around
N/A
Comments
N/A