diff --git a/tpm-fix-stall-on-boot.patch b/tpm-fix-stall-on-boot.patch new file mode 100644 index 000000000..adba40a6e --- /dev/null +++ b/tpm-fix-stall-on-boot.patch @@ -0,0 +1,24 @@ +Fix TPM timeouts on boot (#530393) + +--- a/drivers/char/tpm/tpm.c ++++ a/drivers/char/tpm/tpm.c +@@ -354,12 +354,14 @@ unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip, + tpm_protected_ordinal_duration[ordinal & + TPM_PROTECTED_ORDINAL_MASK]; + +- if (duration_idx != TPM_UNDEFINED) ++ if (duration_idx != TPM_UNDEFINED) { + duration = chip->vendor.duration[duration_idx]; +- if (duration <= 0) ++ /* if duration is 0, it's because chip->vendor.duration wasn't */ ++ /* filled yet, so we set the lowest timeout just to give enough */ ++ /* time to tpm_get_timeouts() succeed */ ++ return (duration <= 0 ? HZ : duration); ++ } else + return 2 * 60 * HZ; +- else +- return duration; + } + EXPORT_SYMBOL_GPL(tpm_calc_ordinal_duration); + +