git: 294a50a29324 - main - sysutils/dmidecode: Decode HPE OEM Record 224
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 27 Aug 2022 10:31:18 UTC
The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=294a50a293243a7af63ed1de71ba3068b24e2580 commit 294a50a293243a7af63ed1de71ba3068b24e2580 Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org> AuthorDate: 2022-08-27 10:23:43 +0000 Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org> CommitDate: 2022-08-27 10:23:43 +0000 sysutils/dmidecode: Decode HPE OEM Record 224 - Bump PORTREVISION for package change Requested by: Ivan Grynov <rmrf@x123.net> Obtained from: https://git.savannah.gnu.org/cgit/dmidecode.git/commit/?id=a1a2258ffbe450e8561ee833787da9321fa734b0 --- sysutils/dmidecode/Makefile | 1 + sysutils/dmidecode/files/patch-dmioem.c | 138 ++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/sysutils/dmidecode/Makefile b/sysutils/dmidecode/Makefile index bfb5f6e183a3..b834f8df4116 100644 --- a/sysutils/dmidecode/Makefile +++ b/sysutils/dmidecode/Makefile @@ -1,5 +1,6 @@ PORTNAME= dmidecode PORTVERSION= 3.4 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= SAVANNAH diff --git a/sysutils/dmidecode/files/patch-dmioem.c b/sysutils/dmidecode/files/patch-dmioem.c new file mode 100644 index 000000000000..21d4ec2e5b5c --- /dev/null +++ b/sysutils/dmidecode/files/patch-dmioem.c @@ -0,0 +1,138 @@ +Obtained from: https://git.savannah.gnu.org/cgit/dmidecode.git/commit/?id=a1a2258ffbe450e8561ee833787da9321fa734b0 + +--- dmioem.c.orig 2022-06-27 15:06:32 UTC ++++ dmioem.c +@@ -299,6 +299,96 @@ static void dmi_hp_203_devloc(const char *fname, unsig + pr_attr(fname, "%s", str); + } + ++static int dmi_hp_224_status(u8 code) ++{ ++ static const char * const present[] = { ++ "Not Present", /* 0x00 */ ++ "Present/Enabled", ++ "Present/Disabled", ++ "Reserved" /* 0x03 */ ++ }; ++ ++ pr_attr("Status", "%s", present[code & 0x03]); ++ if ((code & 0x03) == 0x00) ++ return 0; ++ pr_attr("Option ROM Measuring", "%s", (code & (1 << 2)) ? "Yes" : "No"); ++ pr_attr("Hidden", "%s", (code & (1 << 3)) ? "Yes" : "No"); ++ return 1; ++} ++ ++static void dmi_hp_224_ex_status(u8 status, u8 code) ++{ ++ const char *str = "Reserved"; ++ static const char * const disable_reason[] = { ++ "Not Specified", /* 0x00 */ ++ "User Disabled", ++ "Error Condition", ++ "Reserved" /* 0x03 */ ++ }; ++ static const char * const error_condition[] = { ++ "Not Specified", /* 0x00 */ ++ "Self-Test", /* 0x01 */ ++ }; ++ if ((status & 0x03) == 0x02) ++ pr_attr("Disable Reason", "%s", disable_reason[code & 0x03]); ++ if ((code & 0x03) == 0x02) { ++ u8 error = (code >> 2) & 0x0f; ++ if (error < ARRAY_SIZE(error_condition)) ++ str = error_condition[error]; ++ pr_attr("Error Condition", "%s", str); ++ } ++} ++ ++static void dmi_hp_224_module_type(u8 code) ++{ ++ const char *str = "Reserved"; ++ static const char * const type[] = { ++ "Not Specified", /* 0x00 */ ++ "TPM 1.2", ++ "TPM 2.0", ++ "Intel PTT fTPM" /* 0x03 */ ++ }; ++ if ((code & 0x0f) < ARRAY_SIZE(type)) ++ str = type[code & 0x0f]; ++ pr_attr("Type", "%s", str); ++ pr_attr("Standard Algorithm Supported", "%s", (code & (1 << 4)) ? "Yes" : "No"); ++ pr_attr("Chinese Algorithm Supported", "%s", (code & (1 << 5)) ? "Yes" : "No"); ++} ++ ++static void dmi_hp_224_module_attr(u8 code) ++{ ++ static const char * const phys_attr[] = { ++ "Not Specified", /* 0x00 */ ++ "Pluggable and Optional", ++ "Pluggable but Standard", ++ "Soldered Down on System Board" /* 0x03 */ ++ }; ++ static const char * const fips_attr[] = { ++ "Not Specified", /* 0x00 */ ++ "Not FIPS Certified", ++ "FIPS Certified", ++ "Reserved" /* 0x03 */ ++ }; ++ pr_attr("Trusted Module Attributes", "%s", phys_attr[code & 0x3]); ++ pr_attr("FIPS Certification", "%s", fips_attr[((code >> 2) & 0x03)]); ++} ++ ++static void dmi_hp_224_chipid(u16 code) ++{ ++ const char *str = "Reserved"; ++ static const char * const chipid[] = { ++ "None", /* 0x00 */ ++ "STMicroGen10 TPM", ++ "Intel firmware TPM (PTT)", ++ "Nationz TPM", ++ "STMicroGen10 Plus TPM", ++ "STMicroGen11 TPM", /* 0x05 */ ++ }; ++ if ((code & 0xff) < ARRAY_SIZE(chipid)) ++ str = chipid[code & 0xff]; ++ pr_attr("Chip Identifier", "%s", str); ++} ++ + static void dmi_hp_238_loc(const char *fname, unsigned int code) + { + const char *str = "Reserved"; +@@ -597,6 +687,36 @@ static int dmi_decode_hp(const struct dmi_header *h) + pr_attr("Misc. Features", "0x%08x", feat); + pr_subattr("iCRU", "%s", feat & 0x0001 ? "Yes" : "No"); + pr_subattr("UEFI", "%s", feat & 0x1400 ? "Yes" : "No"); ++ break; ++ ++ case 224: ++ /* ++ * Vendor Specific: Trusted Module (TPM or TCM) Status ++ * ++ * Offset | Name | Width | Description ++ * ------------------------------------- ++ * 0x00 | Type | BYTE | 0xE0, Trusted Module (TPM or TCM) Status ++ * 0x01 | Length | BYTE | Length of structure ++ * 0x02 | Handle | WORD | Unique handle ++ * 0x04 | Status | BYTE | Status Flag Byte ++ * 0x05 | Ex Stat| BYTE | TPM Extended Status ++ * 0x06 | Type | BYTE | Trusted Module Type ++ * 0x07 | Attrib | BYTE | Trusted Module Attributes ++ * 0x08 | Handle | WORD | Handle to map to Type 216 ++ * 0x0A | Chip ID| WORD | Chip Identifier Values ++ */ ++ pr_handle_name("%s Trusted Module (TPM or TCM) Status", company); ++ if (h->length < 0x05) break; ++ if (!dmi_hp_224_status(data[0x04])) ++ break; ++ if (h->length < 0x0a) break; ++ dmi_hp_224_ex_status(data[0x04], data[0x05]); ++ dmi_hp_224_module_type(data[0x06]); ++ dmi_hp_224_module_attr(data[0x07]); ++ if (!(opt.flags & FLAG_QUIET)) ++ pr_attr("Associated Handle", "0x%04X", WORD(data + 0x8)); ++ if (h->length < 0x0c) break; ++ dmi_hp_224_chipid(WORD(data + 0x0a)); + break; + + case 233: