x86: Stop freeing the trampoline page
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 27 Oct 2016 00:07:42 +0000 (20:07 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 29 Nov 2016 16:27:40 +0000 (11:27 -0500)
The arena allocator won't let us free something it never allocated.  The
pages[] based allocator didn't care, since we massaged the refcnts the
right way during page_alloc_init().

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/smp_boot.c

index 41d15a1..2418310 100644 (file)
@@ -184,10 +184,12 @@ void smp_boot(void)
 
        /* cleans up the trampoline page, and any other low boot mem mappings */
        x86_cleanup_bootmem();
-       /* trampoline_pg had a refcount of 2 earlier, so we need to dec once more to free it
-        * but only if all cores are in (or we reset / reinit those that failed) */
+       /* trampoline_pg had a refcount of 2 earlier, so we need to dec once more to
+        * free it but only if all cores are in (or we reset / reinit those that
+        * failed) */
        if (x86_num_cores_booted == num_cores) {
-               page_decref(pa2page(trampoline_pg));
+               /* TODO: if we ever alloc the trampoline_pg or something, we can free it
+                * here. */
        } else {
                warn("ACPI/MP found %d cores, smp_boot initialized %d, using %d\n",
                     num_cores, x86_num_cores_booted, x86_num_cores_booted);