tlb_flush_global() needs to call core_id_early()
authorKevin Klues <klueska@cs.berkeley.edu>
Tue, 4 Aug 2015 03:30:32 +0000 (20:30 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 15 Sep 2015 18:04:35 +0000 (14:04 -0400)
Previously it just called core_id(), but it is used inside vm_init()
early on in the boot process. As we begin to upgrade the way we discover
our topology, it is important to make sure we use the core_id_early() to
make sure we read 0 early on, and not some bogus value from our
topology data structure if it has not yet been properly initialized.

kern/arch/x86/pmap.c

index 903387c..8ca6fb4 100644 (file)
@@ -127,6 +127,6 @@ void tlb_flush_global(void)
        } else {
                lcr3(rcr3());
        }
-       if (per_cpu_info[core_id()].vmx_enabled)
+       if (per_cpu_info[core_id_early()].vmx_enabled)
                ept_inval_global();
 }