Perform a full self test before one-time initialization.

Change-Id: I2f5232d5133c0725ec21f885a4632e980062be8f

BUG=chrome-os-partner: 1826
TEST=none

Review URL: http://codereview.chromium.org/6688004
diff --git a/firmware/lib/rollback_index.c b/firmware/lib/rollback_index.c
index 9469385..9442b77 100644
--- a/firmware/lib/rollback_index.c
+++ b/firmware/lib/rollback_index.c
@@ -103,6 +103,15 @@
 
   VBDEBUG(("TPM: One-time initialization\n"));
 
+  /* Do a full test.  This only happens the first time the device is turned on
+   * in the factory, so performance is not an issue.  This is almost certainly
+   * not necessary, but it gives us more confidence about some code paths below
+   * that are difficult to test---specifically the ones that set lifetime
+   * flags, and are only executed once per physical TPM. */
+  result = TlclSelfTestFull();
+  if (result != TPM_SUCCESS)
+    return result;
+
   result = TlclGetPermanentFlags(&pflags);
   if (result != TPM_SUCCESS)
     return result;