vmm: Rename root_mtx
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 Sep 2017 20:20:49 +0000 (16:20 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 Sep 2017 20:38:44 +0000 (16:38 -0400)
I'll need to use it for something else.  If it becomes a problem, we can
split the mutex up, or just not use it at all for the page tables (just map
it all).

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tests/dune/dune.c
tests/mmap_file_vmm.c
tests/vmm/vmrunkernel.c
user/vmm/include/vmm/vmm.h
user/vmm/pagetables.c

index 3d5d51d..b1deec1 100644 (file)
@@ -39,7 +39,7 @@ bool linuxemu(struct guest_thread *gth, struct vm_trapframe *tf);
 extern char **environ;
 
 static struct virtual_machine vm = {.halt_exit = true,
-                                    .root_mtx = UTH_MUTEX_INIT,
+                                    .mtx = UTH_MUTEX_INIT,
                                     .vmcall = linuxemu};
 
 static unsigned long long memsize = GiB;
index e66e625..d9daade 100644 (file)
@@ -22,7 +22,7 @@
 #include <vmm/vmm.h>
 #include <vmm/vthread.h>
 
-static struct virtual_machine vm = {.root_mtx = UTH_MUTEX_INIT};
+static struct virtual_machine vm = {.mtx = UTH_MUTEX_INIT};
 
 int safe_to_exit;
 void *addr;
index ef6ccba..874d61a 100644 (file)
@@ -39,7 +39,7 @@
 #include <sys/uio.h>
 #include <parlib/opts.h>
 
-struct virtual_machine local_vm = {.root_mtx = UTH_MUTEX_INIT},
+struct virtual_machine local_vm = {.mtx = UTH_MUTEX_INIT},
                             *vm = &local_vm;
 
 struct vmm_gpcore_init *gpcis;
index ff2c9e2..8c1840d 100644 (file)
@@ -46,6 +46,8 @@ enum {
 
 /* Structure to encapsulate all of the bookkeeping for a VM. */
 struct virtual_machine {
+       /* Big mutext for pagetables and __gths/ nr_gpcs */
+       uth_mutex_t                                     mtx;
        struct guest_thread                     **__gths;
        unsigned int                            nr_gpcs;
        /* up_gpcs should not need synchronization. only the BSP should be making
@@ -74,8 +76,6 @@ struct virtual_machine {
         * however. setup_paging now updates this to point to the initial set of
         * page tables for the guest. */
        void                                            *root;
-       /* lock to control access to root */
-       uth_mutex_t                                     root_mtx;
 
        /* Default value for whether guest threads halt on an exit. */
        bool                                            halt_exit;
index ac486ba..63a62e5 100644 (file)
@@ -52,7 +52,7 @@ void add_pte_entries(struct virtual_machine *vm, uintptr_t start, uintptr_t end)
        /* We check once if we can use 1Gb pages and die if we can't. */
        parlib_run_once(&once, check_jumbo_pages, NULL);
 
-       uth_mutex_lock(&vm->root_mtx);
+       uth_mutex_lock(&vm->mtx);
        p512 = vm->root;
        if (!p512)
                panic("vm->root page table pointer was not set!");
@@ -77,7 +77,7 @@ void add_pte_entries(struct virtual_machine *vm, uintptr_t start, uintptr_t end)
                        p1->pte[pml3] = cur_page | PTE_KERN_RW | PTE_PS;
                }
        }
-       uth_mutex_unlock(&vm->root_mtx);
+       uth_mutex_unlock(&vm->mtx);
 }
 
 /* This function sets up the default page tables for the guest. It parses