[Skiboot] [PATCH 5/5] fast-reset: free fdt on fast reset, count fast reboots

Stewart Smith stewart at linux.vnet.ibm.com
Fri Oct 14 17:01:33 AEDT 2016


A bit of a hack to free the flattened device tree on fast reset.
This means we don't leak ~500kb memory every fast reset.

We also count the number of fast resets we've done (if enabled),
which means that for stress testing, we have a hope of finding out
how many we managed to do before we hit a problem.

Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
---
 core/fast-reboot.c | 6 +++++-
 core/init.c        | 3 ++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/core/fast-reboot.c b/core/fast-reboot.c
index cf8b3d481021..37744b8903f1 100644
--- a/core/fast-reboot.c
+++ b/core/fast-reboot.c
@@ -278,9 +278,12 @@ static bool fast_reset_p8(void)
 	return true;
 }
 
+extern void *fdt;
+
 void fast_reboot(void)
 {
 	bool success;
+	static int fast_reboot_count = 0;
 
 	if (proc_gen != proc_gen_p8) {
 		prlog(PR_DEBUG,
@@ -293,7 +296,8 @@ void fast_reboot(void)
 		return;
 	}
 
-	prlog(PR_INFO, "RESET: Initiating fast reboot...\n");
+	prlog(PR_NOTICE, "RESET: Initiating fast reboot %d...\n", ++fast_reboot_count);
+	free(fdt);
 
 	/* XXX We need a way to ensure that no other CPU is in skiboot
 	 * holding locks (via the OPAL APIs) and if they are, we need
diff --git a/core/init.c b/core/init.c
index bc14da7e789f..790db147aa09 100644
--- a/core/init.c
+++ b/core/init.c
@@ -453,12 +453,13 @@ static void load_initramfs(void)
 
 int64_t mem_dump_free(void);
 
+void *fdt;
+
 void __noreturn load_and_boot_kernel(bool is_reboot)
 {
 	const struct dt_property *memprop;
 	const char *cmdline;
 	uint64_t mem_top;
-	void *fdt;
 
 	memprop = dt_find_property(dt_root, DT_PRIVATE "maxmem");
 	if (memprop)
-- 
2.1.4



More information about the Skiboot mailing list