Index: usr.sbin/bhyve/bhyve.8 =================================================================== --- usr.sbin/bhyve/bhyve.8 +++ usr.sbin/bhyve/bhyve.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd Aug 23, 2018 +.Dd October 12, 2018 .Dt BHYVE 8 .Os .Sh NAME @@ -367,7 +367,11 @@ .Pp Framebuffer devices: .Bl -tag -width 10n -.It Oo rfb= Ns Oo Ar IP: Oc Ns Ar port Oc Ns Oo ,w= Ns Ar width Oc Ns Oo ,h= Ns Ar height Oc Ns Oo ,vga= Ns Ar vgaconf Oc Ns Oo Ns ,wait Oc Ns Oo ,password= Ns Ar password Oc +.It Xo +.Oo rfb= Ns Oo Ar IP\&: Oc Ns Ar port Oc Ns Oo ,w= Ns Ar width Oc Ns Oo ,h= Ns +.Ar height Oc Ns Oo ,vga= Ns Ar vgaconf Oc Ns Oo Ns ,wait Oc Ns Oo ,password= Ns +.Ar password Oc +.Xc .Bl -tag -width 8n .It Ar IP:port An @@ -397,8 +401,8 @@ .Pq 64KB at Ad 0xA0000 . The default .Dq io -option should be used for guests that attempt to issue BIOS -calls which result in I/O port queries, and fail to boot if I/O decode is disabled. +option should be used for guests that attempt to issue BIOS calls which result +in I/O port queries, and fail to boot if I/O decode is disabled. .Pp The .Dq on @@ -423,8 +427,8 @@ .It wait Instruct .Nm -to only boot upon the initiation of a VNC connection, simplifying the installation -of operating systems that require immediate keyboard input. +to only boot upon the initiation of a VNC connection, simplifying the +installation of operating systems that require immediate keyboard input. This can be removed for post-installation use. .It password This type of authentication is known to be cryptographically weak and is not @@ -496,8 +500,9 @@ registers such as floating-point and system registers cannot be queried. .Ss Memory Memory (including memory mapped I/O regions) can be read by the debugger, -but not written. Memory operations use virtual addresses that are resolved -to physical addresses via the current virtual CPU's active address translation. +but not written. +Memory operations use virtual addresses that are resolved to physical addresses +via the current virtual CPU's active address translation. .Ss Control The running guest can be interrupted by the debugger at any time .Pq for example, by pressing Ctrl-C in the debugger . @@ -594,6 +599,12 @@ .Xr ethers 5 , .Xr bhyvectl 8 , .Xr bhyveload 8 +.Pp +.Rs +.%A Intel +.%B 64 and IA-32 Architectures Software Developer’s Manual +.%V Volume 3 +.Re .Sh HISTORY .Nm first appeared in Index: usr.sbin/bhyve/bhyverun.c =================================================================== --- usr.sbin/bhyve/bhyverun.c +++ usr.sbin/bhyve/bhyverun.c @@ -89,6 +89,27 @@ #define MB (1024UL * 1024) #define GB (1024UL * MB) +static const char *exit_reason_desc[] = { + "Exception or non-maskable interrupt (NMI)", + "External interrupt", "Triple fault", "INIT signal", + "Start-up IPI (SIPI)", "I/O system-management interrupt (SMI)", + "Other SMI", "Interrupt window", "NMI window", "Task switch", + "CPUID", "GETSEC", "HLT", "INVD", "INVLPG", "RDPMC", "RDTSC", "RSM", + "VMCALL", "VMCLEAR", "VMLAUNCH", "VMPTRLD", "VMPTRST", "VMREAD", + "VMRESUME", "VMWRITE", "VMXOFF", "VMXON", "Control-register accesses", + "MOV DR", "I/O instruction", "RDMSR", "WRMSR", + "VM-entry failure due to invalid guest state", + "VM-entry failure due to MSR loading", + "Undefined", "MWAIT", "Monitor trap flag", "Undefined", "MONITOR", + "PAUSE", "VM-entry failure due to machine-check event", "Undefined", + "TPR below threshold", "APIC access", "Virtualized EOI", + "Access to GDTR or IDTR", "Access to LDTR or TR", + "EPT violation", "EPT misconfiguration", "INVEPT", "RDTSCP", + "VMX-preemption timer expired", "INVVPID", "WBINVD", "XSETBV", + "APIC write", "RDRAND", "INVPCID", "VMFUNC", "ENCLS", "RDSEED", + "Page-modification log full", "XSAVES", "XRSTORS" +}; + typedef int (*vmexit_handler_t)(struct vmctx *, struct vm_exit *, int *vcpu); extern int vmexit_task_switch(struct vmctx *, struct vm_exit *, int *vcpu); @@ -523,7 +544,9 @@ fprintf(stderr, "\trip\t\t0x%016lx\n", vmexit->rip); fprintf(stderr, "\tinst_length\t%d\n", vmexit->inst_length); fprintf(stderr, "\tstatus\t\t%d\n", vmexit->u.vmx.status); - fprintf(stderr, "\texit_reason\t%u\n", vmexit->u.vmx.exit_reason); + fprintf(stderr, "\texit_reason\t%u (%s)\n", vmexit->u.vmx.exit_reason, + vmexit->u.vmx.exit_reason < nitems(exit_reason_desc) ? + exit_reason_desc[vmexit->u.vmx.exit_reason] : "Unknown"); fprintf(stderr, "\tqualification\t0x%016lx\n", vmexit->u.vmx.exit_qualification); fprintf(stderr, "\tinst_type\t\t%d\n", vmexit->u.vmx.inst_type);