summaryrefslogtreecommitdiffstats
path: root/lib/libvmmapi/vmmapi.c
Commit message (Collapse)AuthorAgeFilesLines
* Simplify the assignment of memory to virtual machines by requiring a singleneel2013-03-181-9/+81
| | | | | | | | | | | | | | | | | | command line option "-m <memsize in MB>" to specify the memory size. Prior to this change the user needed to explicitly specify the amount of memory allocated below 4G (-m <lowmem>) and the amount above 4G (-M <highmem>). The "-M" option is no longer supported by 'bhyveload' and 'bhyve'. The start of the PCI hole is fixed at 3GB and cannot be directly changed using command line options. However it is still possible to change this in special circumstances via the 'vm_set_lowmem_limit()' API provided by libvmmapi. Submitted by: Dinakar Medavaram (initial version) Reviewed by: grehan Obtained from: NetApp
* Implement guest vcpu pinning using 'pthread_setaffinity_np(3)'.neel2013-02-111-28/+0
| | | | | | | | | | | | | | Prior to this change pinning was implemented via an ioctl (VM_SET_PINNING) that called 'sched_bind()' on behalf of the user thread. The ULE implementation of 'sched_bind()' bumps up 'td_pinned' which in turn runs afoul of the assertion '(td_pinned == 0)' in userret(). Using the cpuset affinity to implement pinning of the vcpu threads works with both 4BSD and ULE schedulers and has the happy side-effect of getting rid of a bunch of code in vmm.ko. Discussed with: grehan
* Remove mptable generation code from libvmmapi and move it to bhyve.grehan2012-10-261-13/+0
| | | | | | | | | | | | Firmware tables require too much knowledge of system configuration, and it's difficult to pass that information in general terms to a library. The upcoming ACPI work exposed this - it will also livein bhyve. Also, remove code specific to NetApp from the mptable name, and remove the -n option from bhyve. Reviewed by: neel Obtained from: NetApp
* Add an api to map a vm capability type into a string to be used for displayneel2012-10-121-11/+24
| | | | purposes.
* The ioctl VM_GET_MEMORY_SEG is no longer able to return the host physicalneel2012-10-041-2/+1
| | | | | | | | address associated with the guest memory segment. This is because there is no longer a 1:1 mapping between GPA and HPA. As a result 'vmmctl' can only display the guest physical address and the length of the lowmem and highmem segments.
* Change vm_malloc() to map pages in the guest physical address space in 4KBneel2012-10-041-2/+2
| | | | | | | | | chunks. This breaks the assumption that the entire memory segment is contiguously allocated in the host physical address space. This also paves the way to satisfy the 4KB page allocations by requesting free pages from the VM subsystem as opposed to hard-partitioning host memory at boot time.
* Add ioctls to control the X2APIC capability exposed by the virtual machine toneel2012-09-251-0/+29
| | | | | | | the guest. At the moment this simply sets the state in the 'vcpu' instance but there is no code that acts upon these settings.
* Add sysctls to display the total and free amount of hard-wired mem for VMsgrehan2012-08-261-0/+24
| | | | | | | | # sysctl hw.vmm hw.vmm.mem_free: 2145386496 hw.vmm.mem_total: 2145386496 Submitted by: Takeshi HASEGAWA hasegaw at gmail com
* Allow the 'bhyve' process to control whether or not the virtual machine sees anneel2012-08-041-2/+3
| | | | | | ioapic. Obtained from: NetApp
* API to map an apic id to the vcpu.neel2012-08-041-0/+10
| | | | | At the moment this is a simple mapping because the numerical values are identical.
* There is no need to explicitly specify the CR4_VMXE bit when writing to guestneel2012-08-041-5/+1
| | | | | | | | | | CR4. This bit is specific to the Intel VTX and removing it makes the library more portable to AMD/SVM. In the Intel VTX implementation, the hypervisor will ensure that this bit is always set. See vmx_fix_cr4() for details. Suggested by: grehan
* MSI-x interrupt support for PCI pass-thru devices.grehan2012-04-281-0/+19
| | | | | | | | | | Includes instruction emulation for memory r/w access. This opens the door for io-apic, local apic, hpet timer, and legacy device emulation. Submitted by: ryan dot berryhill at sandvine dot com Reviewed by: grehan Obtained from: Sandvine
* First cut to port bhyve, vmmctl, and libvmmapi to HEAD.jhb2011-05-151-2/+0
|
* Import of bhyve hypervisor and utilities, part 1.grehan2011-05-131-0/+647
vmm.ko - kernel module for VT-x, VT-d and hypervisor control bhyve - user-space sequencer and i/o emulation vmmctl - dump of hypervisor register state libvmm - front-end to vmm.ko chardev interface bhyve was designed and implemented by Neel Natu. Thanks to the following folk from NetApp who helped to make this available: Joe CaraDonna Peter Snyder Jeff Heller Sandeep Mann Steve Miller Brian Pawlowski
OpenPOWER on IntegriCloud