* Improve log buffer code; use "loglevel" to decide which messages
  to log on the console, too (like in Linux); get rid of "logstart"
diff --git a/post/post.c b/post/post.c
index f87636c..eab3f11 100644
--- a/post/post.c
+++ b/post/post.c
@@ -38,6 +38,7 @@
 
 void post_bootmode_init (void)
 {
+	DECLARE_GLOBAL_DATA_PTR;
 	int bootmode = post_bootmode_get (0);
 
 	if (bootmode == 0) {
@@ -49,6 +50,8 @@
 	}
 
 	post_word_store (BOOTMODE_MAGIC | bootmode);
+	/* Reset activity record */
+	gd->post_log_word = 0;
 }
 
 int post_bootmode_get (unsigned int *last_test)
@@ -74,6 +77,36 @@
 	post_word_store (0);
 }
 
+/* POST tests run before relocation only mark status bits .... */
+static void post_log_mark_start ( unsigned long testid )
+{
+	DECLARE_GLOBAL_DATA_PTR;
+	gd->post_log_word |= (testid)<<16;
+}
+
+static void post_log_mark_succ ( unsigned long testid )
+{
+	DECLARE_GLOBAL_DATA_PTR;
+	gd->post_log_word |= testid;
+}
+
+/* ... and the messages are output once we are relocated */
+void post_output_backlog ( void )
+{
+	DECLARE_GLOBAL_DATA_PTR;
+	int j;
+
+	for (j = 0; j < post_list_size; j++) {
+		if (gd->post_log_word & (post_list[j].testid<<16)) {
+			post_log ("POST %s ", post_list[j].cmd);
+			if (gd->post_log_word & post_list[j].testid)
+				post_log ("PASSED\n");
+			else
+				post_log ("FAILED\n");
+		}
+	}
+}
+
 static void post_bootmode_test_on (unsigned int last_test)
 {
 	unsigned long word = post_word_load ();
@@ -160,13 +193,21 @@
 				post_bootmode_test_on (i);
 			}
 
+			if (test_flags & POST_PREREL)
+				post_log_mark_start ( test->testid );
+			else
 			post_log ("POST %s ", test->cmd);
 		}
 
+		if (test_flags & POST_PREREL) {
+			if ((*test->test) (flags) == 0)
+				post_log_mark_succ ( test->testid );
+		} else {
 		if ((*test->test) (flags) != 0)
 			post_log ("FAILED\n");
 		else
 			post_log ("PASSED\n");
+		}
 
 		if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) {
 			post_bootmode_test_off ();
@@ -282,6 +323,7 @@
 	va_end (args);
 
 #ifdef CONFIG_LOGBUFFER
+	/* Send to the logbuffer */
 	logbuff_log (printbuffer);
 #else
 	/* Send to the stdout file */