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 */
diff --git a/post/tests.c b/post/tests.c
index bdc7e81..4ec307b 100644
--- a/post/tests.c
+++ b/post/tests.c
@@ -19,6 +19,10 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  * MA 02111-1307 USA
+ *
+ * Be sure to mark tests to be run before relocation as such with the
+ * CFG_POST_PREREL flag so that logging is done correctly if the
+ * logbuffer support is enabled.
  */
 
 #include <common.h>
@@ -47,7 +51,8 @@
         "cache",
         "This test verifies the CPU cache operation.",
         POST_RAM | POST_ALWAYS,
-        &cache_post_test
+        &cache_post_test,
+	CFG_POST_CACHE
     },
 #endif
 #if CONFIG_POST & CFG_POST_WATCHDOG
@@ -56,7 +61,8 @@
         "watchdog",
         "This test checks the watchdog timer.",
         POST_RAM | POST_POWERON | POST_POWERFAIL | POST_MANUAL | POST_REBOOT,
-        &watchdog_post_test
+        &watchdog_post_test,
+	CFG_POST_WATCHDOG
     },
 #endif
 #if CONFIG_POST & CFG_POST_I2C
@@ -65,7 +71,8 @@
         "i2c",
         "This test verifies the I2C operation.",
         POST_RAM | POST_ALWAYS,
-        &i2c_post_test
+        &i2c_post_test,
+	CFG_POST_I2C
     },
 #endif
 #if CONFIG_POST & CFG_POST_RTC
@@ -74,7 +81,8 @@
         "rtc",
         "This test verifies the RTC operation.",
         POST_RAM | POST_POWERFAIL | POST_MANUAL,
-        &rtc_post_test
+        &rtc_post_test,
+	CFG_POST_RTC
     },
 #endif
 #if CONFIG_POST & CFG_POST_MEMORY
@@ -82,8 +90,9 @@
         "Memory test",
         "memory",
         "This test checks RAM.",
-        POST_ROM | POST_POWERON | POST_POWERFAIL,
-        &memory_post_test
+        POST_ROM | POST_POWERON | POST_POWERFAIL | POST_PREREL,
+        &memory_post_test,
+	CFG_POST_MEMORY
     },
 #endif
 #if CONFIG_POST & CFG_POST_CPU
@@ -93,7 +102,8 @@
         "This test verifies the arithmetic logic unit of"
         " CPU.",
         POST_RAM | POST_ALWAYS,
-        &cpu_post_test
+        &cpu_post_test,
+	CFG_POST_CPU
     },
 #endif
 #if CONFIG_POST & CFG_POST_UART
@@ -102,7 +112,8 @@
         "uart",
         "This test verifies the UART operation.",
         POST_RAM | POST_POWERFAIL | POST_MANUAL,
-        &uart_post_test
+        &uart_post_test,
+	CFG_POST_UART
     },
 #endif
 #if CONFIG_POST & CFG_POST_ETHER
@@ -111,7 +122,8 @@
         "ethernet",
         "This test verifies the ETHERNET operation.",
         POST_RAM | POST_ALWAYS | POST_MANUAL,
-        &ether_post_test
+        &ether_post_test,
+	CFG_POST_ETHER
     },
 #endif
 #if CONFIG_POST & CFG_POST_SPI
@@ -120,7 +132,8 @@
         "spi",
         "This test verifies the SPI operation.",
         POST_RAM | POST_ALWAYS | POST_MANUAL,
-        &spi_post_test
+        &spi_post_test,
+	CFG_POST_SPI
     },
 #endif
 #if CONFIG_POST & CFG_POST_USB
@@ -129,7 +142,8 @@
         "usb",
         "This test verifies the USB operation.",
         POST_RAM | POST_ALWAYS | POST_MANUAL,
-        &usb_post_test
+        &usb_post_test,
+	CFG_POST_USB
     },
 #endif
 #if CONFIG_POST & CFG_POST_SPR
@@ -137,8 +151,9 @@
         "SPR test",
         "spr",
         "This test checks SPR contents.",
-        POST_ROM | POST_ALWAYS,
-        &spr_post_test
+        POST_ROM | POST_ALWAYS | POST_PREREL,
+        &spr_post_test,
+	CFG_POST_SPR
     },
 #endif
 };
