src/lib: Enable display of cbmem during romstage and postcar

Enable the display of cbmem during romstage and postcar.  Add a Kconfig
value to prevent coreboot images from increasing in size when this
feature is not in use.

TEST=Build and run on Galileo Gen2

Change-Id: Ib70ad517ebf7d37a7f46ba503b4432c7c04d7ded
Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com>
Reviewed-on: https://review.coreboot.org/15842
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
diff --git a/src/lib/imd_cbmem.c b/src/lib/imd_cbmem.c
index a078071..3e3e2b0 100644
--- a/src/lib/imd_cbmem.c
+++ b/src/lib/imd_cbmem.c
@@ -279,7 +279,8 @@
 	bootmem_add_range(base, size, LB_MEM_TABLE);
 }
 
-#if ENV_RAMSTAGE
+#if ENV_RAMSTAGE || (IS_ENABLED(CONFIG_EARLY_CBMEM_LIST) \
+	&& (ENV_POSTCAR || ENV_ROMSTAGE))
 /*
  * -fdata-sections doesn't work so well on read only strings. They all
  * get put in the same section even though those strings may never be
@@ -288,8 +289,11 @@
 void cbmem_list(void)
 {
 	static const struct imd_lookup lookup[] = { CBMEM_ID_TO_NAME_TABLE };
+	struct imd *imd;
+	struct imd imd_backing;
 
-	imd_print_entries(cbmem_get_imd(), lookup, ARRAY_SIZE(lookup));
+	imd = imd_init_backing_with_recover(&imd_backing);
+	imd_print_entries(imd, lookup, ARRAY_SIZE(lookup));
 }
 #endif