Turn down the debug prints, add a couple extra
authorRonald G. Minnich <rminnich@gmail.com>
Thu, 16 Apr 2015 23:35:28 +0000 (16:35 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 18 Jun 2015 19:17:14 +0000 (15:17 -0400)
Things are working well enough that we don't need all this
gabby behavior. Turn it down.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Git-fu'd-by: brho

kern/arch/x86/vmm/intel/vmx.c
kern/drivers/dev/cons.c
kern/src/mm.c

index 4352efd..d1071a9 100644 (file)
@@ -1263,7 +1263,7 @@ static int vmx_run_vcpu(struct vmx_vcpu *vcpu)
 
        vcpu->regs.tf_rip = vmcs_readl(GUEST_RIP);
        vcpu->regs.tf_rsp = vmcs_readl(GUEST_RSP);
-       printk("RETURN. ip %016lx sp %016lx cr2 %016lx\n",
+       printd("RETURN. ip %016lx sp %016lx cr2 %016lx\n",
               vcpu->regs.tf_rip, vcpu->regs.tf_rsp, vcpu->cr2);
        /* FIXME: do we need to set up other flags? */
        vcpu->regs.tf_rflags = (vmcs_readl(GUEST_RFLAGS) & 0xFF) |
@@ -1316,7 +1316,7 @@ static int vmx_handle_ept_violation(struct vmx_vcpu *vcpu)
        ret = handle_page_fault(current, gpa, prot);
 
        if (ret) {
-               printk("EPT page fault failure GPA: %p, GVA: %p\n", gpa, gva);
+               printk("EPT page fault failure %d, GPA: %p, GVA: %p\n", ret, gpa, gva);
                vmx_dump_cpu(vcpu);
        }
 
@@ -1365,7 +1365,7 @@ int vmx_launch(uint64_t rip, uint64_t rsp, uint64_t cr3)
        int i = 0;
        int errors = 0;
 
-       printk("RUNNING: %s: rip %p rsp %p cr3 %p \n",
+       printd("RUNNING: %s: rip %p rsp %p cr3 %p \n",
               __func__, rip, rsp, cr3);
        /* TODO: dirty hack til we have VMM contexts */
        vcpu = current->vmm.guest_pcores[0];
@@ -1398,7 +1398,7 @@ int vmx_launch(uint64_t rip, uint64_t rsp, uint64_t cr3)
 
                if (ret == EXIT_REASON_VMCALL) {
                        vcpu->shutdown = SHUTDOWN_UNHANDLED_EXIT_REASON;
-                       printk("system call! WTF\n");
+                       printd("system call! WTF\n");
                } else if (ret == EXIT_REASON_CPUID)
                        vmx_handle_cpuid(vcpu);
                else if (ret == EXIT_REASON_EPT_VIOLATION) {
@@ -1408,7 +1408,7 @@ int vmx_launch(uint64_t rip, uint64_t rsp, uint64_t cr3)
                        if (vmx_handle_nmi_exception(vcpu))
                                vcpu->shutdown = SHUTDOWN_NMI_EXCEPTION;
                } else if (ret == EXIT_REASON_EXTERNAL_INTERRUPT) {
-                       printk("External interrupt\n");
+                       printd("External interrupt\n");
                        vcpu->shutdown = SHUTDOWN_UNHANDLED_EXIT_REASON;
                } else {
                        printk("unhandled exit: reason 0x%x, exit qualification 0x%x\n",
@@ -1425,7 +1425,7 @@ int vmx_launch(uint64_t rip, uint64_t rsp, uint64_t cr3)
                        break;
        }
 
-       printk("RETURN. ip %016lx sp %016lx\n",
+       printd("RETURN. ip %016lx sp %016lx\n",
                vcpu->regs.tf_rip, vcpu->regs.tf_rsp);
 
        /*
index a6aea1d..1f4ba4a 100644 (file)
@@ -1010,7 +1010,7 @@ static long conswrite(struct chan *c, void *va, long n, int64_t offset)
                        //if (!iseve()) error(Eperm);
                        cb = parsecmd(a, n);
                        if (cb->nf > 1) 
-                       printk("cons sysctl cmd %s\n", cb->f[0]);
+                       printd("cons sysctl cmd %s\n", cb->f[0]);
                        if (waserror()) {
                                kfree(cb);
                                nexterror();
@@ -1039,7 +1039,7 @@ static long conswrite(struct chan *c, void *va, long n, int64_t offset)
                                        rsp =  strtoul(cb->f[2], NULL, 0);
                                        cr3 =  strtoul(cb->f[3], NULL, 0);
                                        ret = vm_run(rip, rsp, cr3);
-                                       printk("vm_run returns %d\n", ret);
+                                       printd("vm_run returns %d\n", ret);
                                        n = ret;
                                        break;
                        }
index 9270970..78f30f7 100644 (file)
@@ -734,7 +734,7 @@ int __do_mprotect(struct proc *p, uintptr_t addr, size_t len, int prot)
                 * prot.  The others will fault on access, and we'll change the PTE
                 * then.  In the off chance we have a mapped but not present PTE, we
                 * might as well change it too, since we're already here. */
-               for (uintptr_t va = vmr->vm_base; va < vmr->vm_end; va += PGSIZE) { 
+               for (uintptr_t va = vmr->vm_base; va < vmr->vm_end; va += PGSIZE) {
                        pte = pgdir_walk(p->env_pgdir, (void*)va, 0);
                        if (pte_walk_okay(pte) && pte_is_mapped(pte)) {
                                pte_replace_perm(pte, pte_prot);
@@ -910,7 +910,7 @@ static int __hpf_load_page(struct proc *p, struct page_map *pm,
        return 0;
 }
 
-/* Returns 0 on success, or an appropriate -error code. 
+/* Returns 0 on success, or an appropriate -error code.
  *
  * Notes: if your TLB caches negative results, you'll need to flush the
  * appropriate tlb entry.  Also, you could have a weird race where a present PTE
@@ -927,14 +927,17 @@ int handle_page_fault(struct proc *p, uintptr_t va, int prot)
        bool first = TRUE;
        va = ROUNDDOWN(va,PGSIZE);
 
-       if (prot != PROT_READ && prot != PROT_WRITE && prot != PROT_EXEC)
-               panic("bad prot!");
+       if (prot != PROT_READ && prot != PROT_WRITE && prot != PROT_EXEC) {
+               panic("Bad prot: va %p, prot 0x%x: not one of %x, %x, or %x\n",
+                     va, prot, PROT_READ, PROT_WRITE, PROT_EXEC);
+       }
 refault:
        /* read access to the VMRs TODO: RCU */
        spin_lock(&p->vmr_lock);
        /* Check the vmr's protection */
        vmr = find_vmr(p, va);
        if (!vmr) {                                                     /* not mapped at all */
+               printd("fault: %p not mapped\n", va);
                ret = -EFAULT;
                goto out;
        }
@@ -1005,6 +1008,9 @@ refault:
        int pte_prot = (vmr->vm_prot & PROT_WRITE) ? PTE_USER_RW :
                       (vmr->vm_prot & (PROT_READ|PROT_EXEC)) ? PTE_USER_RO : 0;
        ret = map_page_at_addr(p, a_page, va, pte_prot);
+       if (ret) {
+               printd("map_page_at for %p fails with %d\n", va, ret);
+       }
        /* fall through, even for errors */
 out_put_pg:
        /* the VMR's existence in the PM (via the mmap) allows us to have PTE point