diff --git a/core/mem_region.c b/core/mem_region.c
index 57d20955cd86..cdb6b96e18ce 100644
--- a/core/mem_region.c
+++ b/core/mem_region.c
@@ -291,23 +291,23 @@ void mem_dump_allocs(void)
 	struct alloc_hdr *hdr;
 
 	/* Second pass: populate property data */
-	printf("Memory regions:\n");
+	prlog(PR_INFO, "Memory regions:\n");
 	list_for_each(&regions, region, list) {
 		if (!(region->type == REGION_SKIBOOT_HEAP ||
 		      region->type == REGION_MEMORY))
 			continue;
-		printf("  0x%012llx..%012llx : %s\n",
+		prlog(PR_INFO, "  0x%012llx..%012llx : %s\n",
 		       (long long)region->start,
 		       (long long)(region->start + region->len - 1),
 		       region->name);
 		if (region->free_list.n.next == NULL) {
-			printf("    no allocs\n");
+			prlog(PR_INFO, "    no allocs\n");
 			continue;
 		}
 		for (hdr = region_start(region); hdr; hdr = next_hdr(region, hdr)) {
 			if (hdr->free)
 				continue;
-			printf("    0x%.8lx %s\n", hdr->num_longs * sizeof(long),
+			prlog(PR_INFO, "    0x%.8lx %s\n", hdr->num_longs * sizeof(long),
 			       hdr_location(hdr));
 		}
 	}
@@ -322,7 +322,7 @@ int64_t mem_dump_free(void)
 
 	total_free = 0;
 
-	printf("Free space in HEAP memory regions:\n");
+	prlog(PR_INFO, "Free space in HEAP memory regions:\n");
 	list_for_each(&regions, region, list) {
 		if (!(region->type == REGION_SKIBOOT_HEAP ||
 		      region->type == REGION_MEMORY))
@@ -338,12 +338,12 @@ int64_t mem_dump_free(void)
 
 			region_free+= hdr->num_longs * sizeof(long);
 		}
-		printf("Region %s free: %"PRIx64"\n",
+		prlog(PR_INFO, "Region %s free: %"PRIx64"\n",
 		       region->name, region_free);
 		total_free += region_free;
 	}
 
-	printf("Total free: %"PRIu64"\n", total_free);
+	prlog(PR_INFO, "Total free: %"PRIu64"\n", total_free);
 
 	return total_free;
 }
@@ -1106,7 +1106,7 @@ void mem_region_release_unused(void)
 	lock(&mem_region_lock);
 	assert(!mem_regions_finalised);
 
-	printf("Releasing unused memory:\n");
+	prlog(PR_INFO, "Releasing unused memory:\n");
 	list_for_each(&regions, r, list) {
 		uint64_t used_len;
 
@@ -1117,7 +1117,7 @@ void mem_region_release_unused(void)
 
 		used_len = allocated_length(r);
 
-		printf("    %s: %llu/%llu used\n",
+		prlog(PR_INFO, "    %s: %llu/%llu used\n",
 		       r->name, (long long)used_len, (long long)r->len);
 
 		/* We keep the skiboot heap. */
@@ -1221,7 +1221,7 @@ void mem_region_add_dt_reserved(void)
 	name = names = malloc(names_len);
 	range = ranges = malloc(ranges_len);
 
-	printf("Reserved regions:\n");
+	prlog(PR_INFO, "Reserved regions:\n");
 	/* Second pass: populate property data */
 	list_for_each(&regions, region, list) {
 		if (!region_is_reservable(region))
@@ -1230,7 +1230,7 @@ void mem_region_add_dt_reserved(void)
 		memcpy(name, region->name, len);
 		name += len;
 
-		printf("  0x%012llx..%012llx : %s\n",
+		prlog(PR_INFO, "  0x%012llx..%012llx : %s\n",
 		       (long long)region->start,
 		       (long long)(region->start + region->len - 1),
 		       region->name);
diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c
index e8b7ed66242e..3568eb6ceb10 100644
--- a/hdata/test/hdata_to_dt.c
+++ b/hdata/test/hdata_to_dt.c
@@ -67,6 +67,7 @@ unsigned long tb_hz = 512000000;
 #define __CPU_H
 struct cpu_thread {
 	uint32_t			pir;
+	uint32_t			chip_id;
 };
 
 struct cpu_thread __boot_cpu, *boot_cpu = &__boot_cpu;
@@ -94,6 +95,11 @@ struct dt_node *add_ics_node(void)
 
 static bool spira_check_ptr(const void *ptr, const char *file, unsigned int line);
 
+/* should probably check this */
+#define BITS_PER_LONG 64
+/* not used, just needs to exist */
+#define cpu_max_pir 0x7
+
 #include "../cpu-common.c"
 #include "../fsp.c"
 #include "../hdif.c"
@@ -113,6 +119,7 @@ static bool spira_check_ptr(const void *ptr, const char *file, unsigned int line
 #include "../../test/dt_common.c"
 #include "../../core/fdt.c"
 #include "../../hw/phys-map.c"
+#include "../../core/mem_region.c"
 
 #include <err.h>
 
@@ -335,6 +342,9 @@ int main(int argc, char *argv[])
 		exit(EXIT_FAILURE);
 	}
 
+	mem_region_init();
+	mem_region_release_unused();
+
 	if (!blobs)
 		squash_blobs(dt_root);
 
diff --git a/hdata/test/stubs.c b/hdata/test/stubs.c
index 0777730f418c..169d3f0eece9 100644
--- a/hdata/test/stubs.c
+++ b/hdata/test/stubs.c
@@ -23,8 +23,6 @@
 
 #include "../../ccan/list/list.c"
 
-unsigned long top_of_ram = 16ULL * 1024 * 1024 * 1024;
-
 void _prlog(int log_level __attribute__((unused)), const char* fmt, ...) __attribute__((format (printf, 2, 3)));
 
 #ifndef pr_fmt
@@ -102,9 +100,17 @@ STUB(fsp_adjust_lid_side);
 STUB(backtrace);
 
 /* Add HW specific stubs here */
-static void noop_function(void) {}
-#define NOOP_STUB(fnname) \
-	void fnname(void) __attribute__((weak, alias ("noop_function")))
-
+static bool true_stub(void) { return true; }
+static bool false_stub(void) { return false; }
+
+#define TRUE_STUB(fnname) \
+	void fnname(void) __attribute__((weak, alias ("true_stub")))
+#define FALSE_STUB(fnname) \
+	void fnname(void) __attribute__((weak, alias ("false_stub")))
+#define NOOP_STUB FALSE_STUB
+
+TRUE_STUB(lock_held_by_me);
+NOOP_STUB(lock);
+NOOP_STUB(unlock);
 NOOP_STUB(early_uart_init);
-NOOP_STUB(mem_reserve_hw);
+NOOP_STUB(add_chip_dev_associativity);
