On Thu, 2025-09-25 at 10:40 -0600, Jerry Hoemann wrote:
> Server System ID
> 
> Signed-off-by: Jerry Hoemann <[email protected]>
> ---
>  dmioem.c | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/dmioem.c b/dmioem.c
> index cffa49d..4fa616b 100644
> --- a/dmioem.c
> +++ b/dmioem.c
> @@ -1061,6 +1061,39 @@ static int dmi_decode_hp(const struct dmi_header *h)
>                       pr_attr("Virtual Serial Port", "%s", feat & (1 << 4) ? 
> "Enabled" : "Disabled");
>                       break;
>  
> +             case 195:
> +                     /*
> +                      * Vendor Specific: Server System ID
> +                      *
> +                      * ProLiant-specific functionality will be described by 
> a new SMBIOS
> +                      * structure.

I think this comment can go.

> +                      *
> +                      * Offset |  Name      | Width | Description
> +                      * -------------------------------------

Line could be a bit longer to improve readability.

> +                      *  0x00  | Type       | BYTE  | 0xC3, Server System ID
> +                      *  0x01  | Length     | BYTE  | Length of structure
> +                      *  0x02  | Handle     | WORD  | Unique handle
> +                      *  0x04  | System ID  | STRING| Server System ID
> +                      *  0x05  | Platform ID| BYTE  | Low byte of Platform 
> ID from XREG in CPLD
> +                      *  0x06  | Platform ID| BYTE  | High byte of Platform 
> ID from XREG in CPLD
> +                      *  0x07  | GUID       |16 BYTE| RESERVED: Depreicated 
> Gen 11 and later.

Spelling: deprecated.

I have a couple of Gen10+ tables in my collection where the GUID field
is present, so we could decode it if you want. Maybe we can use
dmi_system_uuid() if the format is the same.

> +                      *
> +                      *  This structure exists to define a unique system ID 
> that replaces the
> +                      *  old system EISA ID. It is to be used in systems 
> where the system
> +                      *  EISA ID port is not present.
> +                      *
> +                      *  It also exposes the Platform ID from the CPLD 
> Xregister. This value is
> +                      *  used by iLO to identify the platform and will be 
> used for identification
> +                      *  and matching of certain flash deliverables.

These last two paragraphs have one too many leading spaces.

> +                      */
> +
> +                     pr_handle_name("%s ProLiant Server System ID", company);
> +                     if (h->length < 0x07) break;

I have older gen tables in my collection where length is 5. I know this
is not the main target of your work, but the common field (Server
System ID) seems compatible so maybe we can still decode it for free.

> +                     pr_attr("APIC ID", "%u", data[0x06]);

Looks like a copy-and-paste from type 197 which you forgot to clean.

> +                     pr_attr("Server System ID", "%s", dmi_string(h, 
> data[0x04]));
> +                     pr_attr("Platform ID", "%d:%d", data[0x05], data[0x06]);

It's surprising that the low byte is display first, but I can't say
from the output if the order is as expected or not.

> +                     break;
> +
>               case 197:
>                       /*
>                        * Vendor Specific: HPE Processor Specific Information

Thanks,
-- 
Jean Delvare
SUSE L3 Support

Reply via email to