Hi,

Mark and I have modified the CPU driver to add basic T-state support
and we are providing a webrev (see bottom of this mail) for code review
feedback. The intent of the T-state support is simply to allow the CPU driver
to receive _TPC change notifications as a way of throttling the processor
speed. This is frequently done on some systems as a passive cooling mechanism.
As part of this effort we've restructured the CPU driver. The structure as
it exists in Nevada today, doesn't lend itself to supporting anything other
than P-states. Mark had already restructured the CPU driver in the cpupm-gate
repository (where Aubrey and Bill are working on C-state support) and we
reused much of that code.


1) T-State support

   ACPI T-States provide OSPM, the capability to successfully perform
   processor throttling. For more information about T-States, please
   refer to the section 8 of the ACPI specification document 3.0b
   available at http://www.acpi.info/spec.htm.

   The current T-state implementation just provides support for handling
   ACPI _TPC events(Throttling Present Capabilities). Unlike the P-state
   support, where the CPU driver and PM framework monitor CPU utilization
   and change P-states dynamically based on that utilization, the CPU driver
   will not do any such dynamic monitoring or state changing of T-States.

   When the CPU driver receives a ACPI _TPC event, it throttles the
   processor to the indicated level. Processor and BIOS need to support
   T-States for this feature to work. The required ACPI control objects
   are _PTC, _TSS, _TPC and _TSD. Details on these objects can be obtained
   by referencing the ACPI Specification.

   _TSS: Defines an array of supported throttling states for a processor.

   _TSD: Defines the processors which share a T-state dependency (i.e.,
         which processors need to run at the same T-state).

   _TPC: Defines the maximum allowable T-state the OSPM should request (i.e.,
         sets a governor on which T-states the OS should request).

   _PTC: Defines the mehtod by which the OSPM should request T-state changes
         of the processor (i.e., write to an MSR or use system I/O).

   These objects are analogous to the P-state related ACPI objects, _PCT,
   _PSS, _PSD and _PPC.
   

2) Restructuring of the CPU driver

   To incorporate the T-State support, the CPU driver had to be restructured.
   Instead of just plugging in T-State related code into the existing P-state
   biased CPU driver, we thought it would be better to do some minor
   restructuring of the CPU driver (specifically the x64 specific pieces) to
   give T-states (and later C-states) a more equal footing.

   All CPU driver related code under uts/i86pc/io has been moved to
   uts/i86pc/io/cpudrv just for grouping puprposes. Also new files vendor
   specific files have been created to allow for the different capabilities
   supported be each vendor.

3) Monitoring

   One area that we have not addressed is monitoring. We're not aware of
   T-state monitoring capabilities in other operating systems, but think
   it might be a reasonable thing to provide. We're wondering if PowerTOP
   might be modified to report on T-states? We'd appreciate any thoughts
   that the folks working on PowerTOP might have on that front.

The webrev for these changes can be found at:

 http://cr.opensolaris.org/~mhaywood/tstate/

Your comments will be greatly appreciated.

Thanks
Anup 



-- 
Anup Pemmaiah
Sun Microsystems


Reply via email to