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