| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 1 week
|
|
|
|
|
|
| |
see what the guest's %rip is.
Reviewed by: grehan
|
|
|
|
| |
libvmmapi is actually needed to be linked to libutil, not bhyve nor bhyveload
|
|
|
|
|
|
| |
interesting to see what the guest's %rip and instruction bytes are.
Reviewed by: grehan
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are a number of assumptions about legacy interrupts always
being available in virtio so don't allow back-ends to make the
decision to support them.
This fixes the issue seen with virtio-rnd on OpenBSD. MSI-x vectors
were not being used, and the virtio-rnd backend wasn't allocating a
legacy interrupt resulting in a bhyve assert and guest exit.
Reported by: Julian Hsiao, madoka at nyanisore dot net
Reviewed by: neel
MFC after: 1 week
|
|
|
|
|
|
| |
Reported by: Coverity
CID: 1288938
MFC after: 3 days
|
|
|
|
|
|
| |
FreeBSD guest driver does not use that legacy flag, but Linux seems does.
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
32 entries are not enough for the worst case of misaligned 128KB request,
that made FreeBSD to chunk large quests in odd pieces.
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
Processing threads call callbacks before freeing requests. As result,
new requests may arrive before old ones are freed.
MFC after: 2 weeks
|
|
|
|
|
|
| |
This makes same s/n reported for both virtio and AHCI drivers.
MFC after: 2 weeks
|
|
|
|
|
| |
Reported by: vangyzen
MFC after: 2 weeks
|
|
|
|
|
|
|
|
| |
I've missed that network driver sometimes returns taken request back to
available queue without processing. Add new helper function for that case.
Reported by: flo
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
It is still not good that they may intersect on different hosts, but that
is better then intersecting on the same host.
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I/O interface.
Asynchronous operation, based on r280026 change, allows to not block virtual
CPU during I/O processing, that on slow/busy storage can take seconds.
Use of recently improved block I/O interface allows to process multiple
requests same time, that improves random I/O performance on wide storages.
Benchmarks of virtual disk, backed by ZVOL on RAID10 pool of 4 HDDs, show
~3.5 times random read performance improvements, while no degradation on
linear I/O. Guest CPU usage during test dropped from 100% to almost zero.
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
Original virtqueue design allows queued and out-of-order processing, but
helpers added in r253440 suppose only direct blocking in-order one.
It could be fine for network, etc., but it is a huge limitation for storage
devices.
|
|
|
|
|
| |
Submitted by: neel
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
|
| |
On parallel random I/O this allows better utilize wide storage pools.
To not confuse prefetcher on linear I/O, consecutive requests are executed
sequentially, following the same logic as was earlier implemented in CTL.
Benchmarks of virtual AHCI disk, backed by ZVOL on RAID10 pool of 4 HDDs,
show ~3.5 times random read performance improvements, while no degradation
on linear I/O.
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
The code is not really tested yet due to lack of initiator support.
Requested by: imp
MFC after: 2 weeks
|
|
|
|
|
|
| |
While this implementation is still not perfect, previous was just broken.
MFC after: 2 weeks
|
|
|
|
|
|
| |
At this point we have nothing to report through that register.
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
|
|
| |
AHCI API hides all PIO specifics, so this functionality is almost free.
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
|
|
|
|
| |
It works only for virtual disks backed by ZVOLs and raw devices supporting
BIO_DELETE. Virtual disks backed by files won't report this capability.
MFC after: 2 weeks
Relnotes: yes
|
|
|
|
|
| |
Reported by: grehan
MFC after: 2 weeks
|
|
|
|
|
| |
Reported by: grehan
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
|
|
|
| |
Passing through physical block size/offset from underlying storage allows
guest to manage proper data and I/O alignment to improve performance.
MFC after: 2 weeks
|
|
|
|
|
|
|
|
| |
OpenBSD guests test bit 0 of this MSR to detect whether the workaround for
erratum 721 has been applied.
Reported by: Jason Tubnor (jason@tubnor.net)
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
| |
The default remains localtime for compatibility with the original device model
in bhyve(8). This is required for OpenBSD guests which assume that the RTC
keeps UTC time.
Reviewed by: grehan
Pointed out by: Jason Tubnor (jason@tubnor.net)
MFC after: 2 weeks
|
|
|
|
|
|
|
|
| |
for example if the backing file doesn't exist,
avoiding a null deref.
Reviewed by: neel
MFC after: 1 week.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new RTC emulation supports all interrupt modes: periodic, update ended
and alarm. It is also capable of maintaining the date/time and NVRAM contents
across virtual machine reset. Also, the date/time fields can now be modified
by the guest.
Since bhyve now emulates both the PIT and the RTC there is no need for
"Legacy Replacement Routing" in the HPET so get rid of it.
The RTC device state can be inspected via bhyvectl as follows:
bhyvectl --vm=vm --get-rtc-time
bhyvectl --vm=vm --set-rtc-time=<unix_time_secs>
bhyvectl --vm=vm --rtc-nvram-offset=<offset> --get-rtc-nvram
bhyvectl --vm=vm --rtc-nvram-offset=<offset> --set-rtc-nvram=<value>
Reviewed by: tychon
Discussed with: grehan
Differential Revision: https://reviews.freebsd.org/D1385
MFC after: 2 weeks
|
|
|
|
| |
Reduce overlinking
|
|
|
|
|
|
|
| |
Differential Revision: https://reviews.freebsd.org/D1158
Reviewed by: wblock@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
|
|
|
|
|
|
| |
a completing one increase the total by 1 but don't advertise it.
Reviewed by: grehan
|
|
|
|
|
|
|
| |
interrupt, via SIGCONT, to force the read or write system call to
return prematurely.
Reviewed by: grehan
|
|
|
|
|
|
| |
PxCI, PxSACT, PxCMD.CCS and PxCMD.CR should be 0.
Reviewed by: grehan
|
| |
|
|
|
|
|
|
|
|
|
| |
This reduces variability during timer calibration by keeping the emulation
"close" to the guest. Additionally having all timer emulations in the kernel
will ease the transition to a per-VM clock source (as opposed to using the
host's uptime keep track of time).
Discussed with: grehan
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bhyve doesn't emulate the MSRs needed to support this feature at this time.
Don't expose any model-specific RAS and performance monitoring features in
cpuid leaf 80000007H.
Emulate a few more MSRs for AMD: TSEG base address, TSEG address mask and
BIOS signature and P-state related MSRs.
This eliminates all the unimplemented MSRs accessed by Linux/x86_64 kernels
2.6.32, 3.10.0 and 3.17.0.
|
|
|
|
|
|
|
|
| |
emulating a large number of MSRs.
Ignore writes to a couple more AMD-specific MSRs and return 0 on read.
This further reduces the unimplemented MSRs accessed by a Linux guest on boot.
|