... > + * The first argument is the TPM algorithm id and the second is the > + * hash used as both the suffix and the group name. Note: the group > + * name is a directory in the top level tpm class with the name > + * pcr-<hash>, so it must not clash with any other names already > + * in the sysfs directory. > + */ > +PCR_ATTR_BUILD(TPM_ALG_SHA1, sha1); > +PCR_ATTR_BUILD(TPM_ALG_SHA256, sha256); > +PCR_ATTR_BUILD(TPM_ALG_SHA384, sha384); > +PCR_ATTR_BUILD(TPM_ALG_SHA512, sha512); > +PCR_ATTR_BUILD(TPM_ALG_SM3_256, sm3); The latest PC Client Platform TPM Profile and TPM 2.0 Part 2 Structures specs also define codes for three SHA-3 hash algorithms: TPM_ALG_SHA3_256 TPM_ALG_SHA3_384 TPM_ALG_SHA3_512 ... > + > + /* add one group for each bank hash */ > + for (i = 0; i < chip->nr_allocated_banks; i++) { > + switch (chip->allocated_banks[i].alg_id) { > + case TPM_ALG_SHA1: > + chip->groups[chip->groups_cnt++] = &pcr_group_sha1; > + break; > + case TPM_ALG_SHA256: > + chip->groups[chip->groups_cnt++] = &pcr_group_sha256; > + break; > + case TPM_ALG_SHA384: > + chip->groups[chip->groups_cnt++] = &pcr_group_sha384; > + break; > + case TPM_ALG_SHA512: > + chip->groups[chip->groups_cnt++] = &pcr_group_sha512; > + break; > + case TPM_ALG_SM3_256: > + chip->groups[chip->groups_cnt++] = &pcr_group_sm3; > + break; > + default: > + /* > + * If this warning triggers, send a patch to > + * add both a PCR_ATTR_BUILD() macro above for > + * the missing algorithm as well as an > + * additional case in this switch statement. > + */ > + WARN(1, "TPM with unsupported bank algorthm > 0x%04x", > + chip->allocated_banks[i].alg_id); algorithm is missing the letter i. It might help to print the bank id (variable i) as well.