On Thu, 2025-09-25 at 10:40 -0600, Jerry Hoemann wrote:
> Processor TControl Information
> 
> Signed-off-by: Jerry Hoemann <[email protected]>
> ---
>  dmioem.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
> 
> diff --git a/dmioem.c b/dmioem.c
> index 4fa616b..051fd09 100644
> --- a/dmioem.c
> +++ b/dmioem.c
> @@ -1428,6 +1428,54 @@ static int dmi_decode_hp(const struct dmi_header *h)
>                       }
>                       break;
>  
> +             case 211:
> +                     /*
> +                      * Vendor Specific: HPE ProLiant Processor TControl 
> Information
> +                      *
> +                      * Provides information about the Tcontrol value for 
> each installed
> +                      * processor.  This information is utilized to optimize 
> the thermal fan
> +                      * control systems on the system. For some systems, 
> this can be handled
> +                      * totally by the System ROM (systems with 7463 fan 
> controllers). For
> +                      * systems that utilize TAFI, the Health Driver handles 
> fan control.
> +                      * The Health Driver must know the value for Tcontrol 
> for all processors
> +                      * to be able to customize the fan control for the 
> installed processors.
> +                      *
> +                      * Tcontrol is a value programmed into each processor 
> by Intel that
> +                      * indicates the processors thermal properties.  The 
> value is based on
> +                      * how "leaky" the particular processor's transistors 
> are.  A more "leaky"
> +                      * processor will get hotter for a given power input 
> and thus will have a
> +                      * higher Tcontrol value. Intel officially suggests 
> keeping a processor
> +                      * below the Tcontrol value for reliability reasons. HP 
> is using Tcontrol
> +                      * as the point at which we begin spinning up the fans.
> +                      *
> +                      * Software must check the corresponding Record Type 4 
> to determine if the
> +                      * processor is installed. If the processor is not 
> installed, the
> +                      * corresponding Record Type 211 should not be 
> utilized. Record Type 197
> +                      * must be used to correlate Type 211 Record to the 
> processor's APIC ID.
> +                      * This must be done to know which TAFI controller must 
> be programmed with
> +                      * a particular Tcontrol value. Type 197 Record has an 
> identifier which
> +                      * relates it to a Type 4 Record, so it is possible to 
> correlate a
> +                      * Type 211 Record with a Type 197 Record.
> +                      *
> +                      * Offset |  Name  | Width | Description
> +                      * -------------------------------------
> +                      *  0x00  |  Type  | BYTE  | 0xD3, TConrol Info
> +                      *  0x01  | Length | BYTE  | Length of structure
> +                      *  0x02  | Handle | WORD  | Unique handle
> +                      *  0x04  | Handle | WORD  | Handle of Cooresponding 
> Type 4 Proc Record

Spelling: corresponding.

I'd also suggest writing "processor" instead of "proc" for clarity.

> +                      *  0x06  |Tcontrol| BYTE  | Processor Tcontrol Value. 
> 00 -> Value N/A.
> +                      */
> +
> +                     pr_handle_name("%s ProLiant TControl Information", 
> company);
> +                     if (h->length < 0x07) break;
> +                     if (!(opt.flags & FLAG_QUIET))
> +                             pr_attr("Associated Handle", "0x%04X", 
> WORD(data + 0x8));

0x8 may be (will be) beyond the end of the record. I think you meant
0x04.

> +                     if (data[0x06])
> +                             pr_attr("TControl Value", "%d", data[0x06]);
> +                     else
> +                             pr_attr("TControl Value", "%s", "N/A");
> +                     break;
> +
>               case 212:
>                       /*
>                        * Vendor Specific: HPE 64-bit CRU Information

Looks simple enough, but surprisingly some samples in my collection
have unexpectedly low Tcontrol values (8, 10, 18).

-- 
Jean Delvare
SUSE L3 Support

Reply via email to