freebsd-dev/usr.sbin/bhyve
Neel Natu d087a39935 Simplify instruction restart logic in bhyve.
Keep track of the next instruction to be executed by the vcpu as 'nextrip'.
As a result the VM_RUN ioctl no longer takes the %rip where a vcpu should
start execution.

Also, instruction restart happens implicitly via 'vm_inject_exception()' or
explicitly via 'vm_restart_instruction()'. The APIs behave identically in
both kernel and userspace contexts. The main beneficiary is the instruction
emulation code that executes in both contexts.

bhyve(8) VM exit handlers now treat 'vmexit->rip' and 'vmexit->inst_length'
as readonly:
- Restarting an instruction is now done by calling 'vm_restart_instruction()'
  as opposed to setting 'vmexit->inst_length' to 0 (e.g. emulate_inout())
- Resuming vcpu at an arbitrary %rip is now done by setting VM_REG_GUEST_RIP
  as opposed to changing 'vmexit->rip' (e.g. vmexit_task_switch())

Differential Revision:	https://reviews.freebsd.org/D1526
Reviewed by:		grehan
MFC after:		2 weeks
2015-01-18 03:08:30 +00:00
..
acpi.c iasl(8) expects integer fields in data tables to be specified as hexadecimal 2014-10-09 19:02:32 +00:00
acpi.h Implement a PCI interrupt router to route PCI legacy INTx interrupts to 2014-05-15 14:16:55 +00:00
ahci.h Import Zhixiang Yu's GSoC'13 AHCI emulation: 2013-10-04 18:31:38 +00:00
atkbdc.c Simplify the meaning of return values from the inout handlers. After this 2014-07-25 20:18:35 +00:00
bhyve.8 Fix improper .Fx macro usage. 2014-11-19 18:19:21 +00:00
bhyverun.c Simplify instruction restart logic in bhyve. 2015-01-18 03:08:30 +00:00
bhyverun.h Simplify instruction restart logic in bhyve. 2015-01-18 03:08:30 +00:00
block_if.c To allow a request to be submitted from within the callback routine of 2014-11-09 21:08:52 +00:00
block_if.h Add a call to synthesize a C/H/S value for block emulations 2014-07-15 00:25:54 +00:00
consport.c Handle single-byte reads from the bvmcons port (0x220) by returning 2014-04-08 21:02:03 +00:00
dbgport.c Mark the I/O ports used by the bhyve console and debug devices as system 2014-02-07 20:53:41 +00:00
dbgport.h Change the behavior of bhyve such that the gdb listening port is opt-in 2013-10-08 16:36:17 +00:00
inout.c Simplify instruction restart logic in bhyve. 2015-01-18 03:08:30 +00:00
inout.h Simplify the meaning of return values from the inout handlers. After this 2014-07-25 20:18:35 +00:00
ioapic.c Enhance the support for PCI legacy INTx interrupts and enable them in 2014-01-29 14:56:48 +00:00
ioapic.h Enhance the support for PCI legacy INTx interrupts and enable them in 2014-01-29 14:56:48 +00:00
Makefile Convert usr.sbin to LIBADD 2014-11-25 16:57:27 +00:00
mem.c Support PCI extended config space in bhyve. 2014-08-08 03:49:01 +00:00
mem.h Support PCI extended config space in bhyve. 2014-08-08 03:49:01 +00:00
mevent_test.c Add simplistic periodic timer support to mevent using kqueue's 2013-09-19 04:48:26 +00:00
mevent.c Re-adding an event to a kqueue modifies the parameters of the original event. 2014-05-05 16:30:03 +00:00
mevent.h Extend the ACPI power management support to wire a virtual power button up 2013-12-28 04:01:05 +00:00
mptbl.c Implement a PCI interrupt router to route PCI legacy INTx interrupts to 2014-05-15 14:16:55 +00:00
mptbl.h Make the virtual ioapic available unconditionally in a bhyve virtual machine. 2013-10-31 05:44:45 +00:00
pci_ahci.c If the start bit, PxCMD.ST, is cleared and nothing is in-flight then 2014-11-03 12:55:31 +00:00
pci_emul.c Support PCI extended config space in bhyve. 2014-08-08 03:49:01 +00:00
pci_emul.h Support PCI extended config space in bhyve. 2014-08-08 03:49:01 +00:00
pci_hostbridge.c Changes required for OpenBSD/amd64: 2013-10-17 22:01:17 +00:00
pci_irq.c Minor cleanup: 2014-08-13 00:14:26 +00:00
pci_irq.h Implement a PCI interrupt router to route PCI legacy INTx interrupts to 2014-05-15 14:16:55 +00:00
pci_lpc.c Activate vcpus from bhyve(8) using the ioctl VM_ACTIVATE_CPU instead of doing 2014-05-31 23:37:34 +00:00
pci_lpc.h Implement a PCI interrupt router to route PCI legacy INTx interrupts to 2014-05-15 14:16:55 +00:00
pci_passthru.c Use calloc() in favor of malloc + memset. 2014-04-22 18:55:21 +00:00
pci_uart.c Enhance the support for PCI legacy INTx interrupts and enable them in 2014-01-29 14:56:48 +00:00
pci_virtio_block.c Implement the FLUSH operation in the virtio-block emulation. 2014-10-07 17:08:53 +00:00
pci_virtio_net.c Allow vtnet operation without merged rx buffers. 2014-09-09 22:35:02 +00:00
pci_virtio_rnd.c Add a callback to be notified about negotiated features. 2014-09-09 04:11:54 +00:00
pm.c Simplify the meaning of return values from the inout handlers. After this 2014-07-25 20:18:35 +00:00
post.c Rework the DSDT generation code a bit to generate more accurate info about 2014-01-02 21:26:59 +00:00
rtc.c Replace bhyve's minimal RTC emulation with a fully featured one in vmm.ko. 2014-12-30 22:19:34 +00:00
rtc.h Implement RTC CMOS nvram. Init some fields that are used 2013-07-11 03:54:35 +00:00
smbiostbl.c Correct display of bhyve SMBIOS UUIDs with dmidecode by bumping the version. 2014-09-23 01:17:22 +00:00
smbiostbl.h Add SMBIOS support. 2014-03-04 17:12:06 +00:00
spinup_ap.c Use 'cpuset_t' to represent the vcpus active in a virtual machine. 2014-03-20 18:15:37 +00:00
spinup_ap.h
task_switch.c Simplify instruction restart logic in bhyve. 2015-01-18 03:08:30 +00:00
uart_emul.c Disable the 'uart_drain()' callback when the emulated receive FIFO is full. 2014-05-05 23:54:13 +00:00
uart_emul.h Add support for PCI-to-ISA LPC bridge emulation. If the LPC bus is attached 2013-10-29 00:18:11 +00:00
virtio.c Add a callback to be notified about negotiated features. 2014-09-09 04:11:54 +00:00
virtio.h Add a callback to be notified about negotiated features. 2014-09-09 04:11:54 +00:00
xmsr.c Don't advertise the "OS visible workarounds" feature in cpuid.80000001H:ECX. 2014-10-19 21:38:58 +00:00
xmsr.h Restructure the MSR handling so it is entirely handled by processor-specific 2014-09-20 02:35:21 +00:00