[SeaBIOS] [Qemu-devel] SeaBIOS booting time optimization

Stefan Berger stefanb at linux.ibm.com
Wed Nov 21 06:43:34 CET 2018


On 11/20/18 11:51 AM, Stefano Garzarella wrote:
> On Tue, Nov 20, 2018 at 5:13 PM Steve Douthit <stephend at silicom-usa.com> wrote:
>> On 11/20/18 10:55 AM, Kevin O'Connor wrote:
>>> On Mon, Nov 19, 2018 at 07:38:39PM +0100, Stefano Garzarella wrote:
>>>> just an update, I enabled the debug prints and I saw two timeouts fired
>>>> with a lot
>>>> of time lost (~780ms between "init timer" and "Scan for VGA ..."),
>>>> putting other prints I discovered that a lot of time is spent in the
>>>> tpm_setup(),
>>>> during the probe of the 2 TPM devices:
>>>>
>>>> 00.548869 init timer
>>>> 00.549677 ./src/post.c:157 platform_hardware_setup
>>>> 00.550182 ./src/hw/tpm_drivers.c:579 tpmhw_probe
>>>> 01.300833 WARNING - Timeout at wait_reg8:81!
>>>> 01.301388 ./src/hw/tpm_drivers.c:579 tpmhw_probe
>>>> 01.331843 WARNING - Timeout at wait_reg8:81!
>>>> 01.332316 ./src/post.c:160 platform_hardware_setup
>>>> 01.333358 Scan for VGA option rom
>>> FYI, this was raised a few months ago - see:
>>>
>>> https://mail.coreboot.org/pipermail/seabios/2018-March/012186.html
>>>
>>> IIRC, it should be possible to verify the TPM device is present before
>>> trying to wait for it.
>> We could skip probing entirely if there's no TCPA or TPM2 ACPI tables.
>> There'd need to be some option to force probing in the case of
>> missing/broken ACPI configurations.
> I've just tried the
> 0001-tpm-Check-for-TPM-related-ACPI-tables-before-attempt.patch
> (https://mail.coreboot.org/pipermail/seabios/2018-March/012188.html)
> and it solves my issue with the TPM.

I have tried it with the attached patch of that mail. We have to apply 
it, also for QEMU. It is this patch here:

From: Stephen Douthit <stephend at silicom-usa.com>
Date: Wed, 7 Mar 2018 13:17:36 -0500
Subject: [PATCH] tpm: Check for TPM related ACPI tables before attempting hw
  probe

Signed-off-by: Stephen Douthit <stephend at silicom-usa.com>
---
  src/tcgbios.c | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/tcgbios.c b/src/tcgbios.c
index 40b3028..24846d3 100644
--- a/src/tcgbios.c
+++ b/src/tcgbios.c
@@ -968,6 +968,13 @@ tpm_setup(void)
      if (!CONFIG_TCGBIOS)
          return;

+    int ret = tpm_tpm2_probe();
+    if (ret) {
+        ret = tpm_tcpa_probe();
+        if (ret)
+            return;
+    }
+
      TPM_version = tpmhw_probe();
      if (TPM_version == TPM_VERSION_NONE)
          return;
@@ -976,13 +983,6 @@ tpm_setup(void)
              "TCGBIOS: Detected a TPM %s.\n",
               (TPM_version == TPM_VERSION_1_2) ? "1.2" : "2");

-    int ret = tpm_tpm2_probe();
-    if (ret) {
-        ret = tpm_tcpa_probe();
-        if (ret)
-            return;
-    }
-
      TPM_working = 1;

      if (runningOnXen())
-- 
2.14.3




>
> Thanks,
> Stefano
>
>>> -Kevin
>>>
>




More information about the SeaBIOS mailing list