Rob Bradford
c622278030
config, device_manager: Add support for disabling io_uring for testing
...
Add config parameter to --disk called "_disable_io_uring" (the
underscore prefix indicating it is not for public consumpion.) Use this
option to disable io_uring if it would otherwise be used.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-18 11:47:54 +01:00
Rob Bradford
d1d0421103
main: Remove --net-backend and --block-backend from cloud-hypervisor
...
Remove the parameters used for self spawning from the cloud-hypervisor
binary.
See: #1925
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-18 11:46:32 +01:00
Rob Bradford
fb70baece0
tests: Make integration test use vhost_user_{net,block} binaries
...
With the removal of vhost-user self-spawning support we should migrate
the tests to use the binaries so that we can remove the functionality
from the cloud-hypervisor binary itself.
See: #1925
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-18 11:46:32 +01:00
dependabot-preview[bot]
0159ab93e1
build(deps): bump unicode-normalization from 0.1.14 to 0.1.15
...
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization ) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/unicode-rs/unicode-normalization/releases )
- [Commits](https://github.com/unicode-rs/unicode-normalization/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-18 09:01:29 +00:00
dependabot-preview[bot]
609d704168
build(deps): bump smallvec from 1.4.2 to 1.5.0
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.4.2...v1.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-17 21:56:51 +00:00
Rob Bradford
3ac9b6c404
vmm: Implement live migration
...
Now the VM is paused/resumed by the migration process itself.
0. The guest configuration is sent to the destination
1. Dirty page log tracking is started by start_memory_dirty_log()
2. All guest memory is sent to the destination
3. Up to 5 attempts are made to send the dirty guest memory to the
destination...
4. ...before the VM is paused
5. One last set of dirty pages is sent to the destination
6. The guest is snapshotted and sent to the destination
7. When the migration is completed the destination unpauses the received
VM.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
b34703d29f
vmm: vm: Add dirty log related passthrough methods
...
This allows code running in the VMM to access the VM's MemoryManager's
functionality for managing the dirty log including resetting it but also
generating a table.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
cf6763dfdb
vmm: migration: Add missing response check
...
A read and check of the response was missing from when sending the
memory to the destination.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
11a69450ba
vm-migration, vmm: Send configuration in separate step
...
Prior to sending the memory the full state is not needed only the
configuration. This is sufficient to create the appropriate structures
in the guest and have the memory allocations ready for filling.
Update the protocol documentation to add a separate config step and move
the state to after the memory is transferred. As the VM is created in a
separate step to restoring it the requires a slightly different
constructor as well as saving the VM object for the subsequent commands.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
c62e409827
memory_manager: Generate a MemoryRangeTable for dirty ranges
...
In order to do this we must extend the MemoryManager API to add the
ability to specify the tracking of the dirty pages when creating the
userspace mappings and also keep track of the userspace mappings that
have been created for RAM regions.
Currently the dirty pages are collected into ranges based on a block
level of 64 pages. The algorithm could be tweaked to create smaller
ranges but for now if any page in the block of 64 is dirty the whole
block is added to the range.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
041724a7cf
hypervisor: Add ability to get dirty logged pages
...
Return a bitmap of pages that have been dirtied (written to) since it
was last called.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Rob Bradford
8baa244ec1
hypervisor: Add control for dirty page logging
...
When creating a userspace mapping provide a control for enabling the
logging of dirty pages.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-17 16:57:11 +00:00
Anatol Belski
b399287430
memory_manager: Make addressable space size 64k aligned
...
While the addressable space size reduction of 4k in necessary due to
the Linux bug, the 64k alignment of the addressable space size is
required by Windows. This patch satisfies both.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2020-11-16 16:39:11 +00:00
Rob Bradford
c0827e01b1
build: Update arc-swap dependency to 1.0.0
...
Also bump the vm-memory version to one that depends on arc-swap 1.0.0
too.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-16 14:10:09 +01:00
Rob Bradford
46e736973e
hypervisor: kvm: Correctly share VmmOps between Kvm{Vm,Vcpu}
...
Cloning the ArcSwapOption (like the ArcSwap) does not act like a
.clone() on an Arc, instead an entirely new ArcSwap is created with the
same contents. To correctly share the ArcSwap needs to be placed inside
an Arc.
See: https://github.com/vorner/arc-swap/commit/2433d5719be341dc520a8bb93d9d3ce7f141a80d#diff-6c6d94533c44c19bd1416ef17bad1a878e63dca6e98d59181228fbe8f967c62bR6
Due to this being wrongly used ::clone() was removed from
ArcSwap/ArcSwapOption in 1.0.0.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-16 14:10:09 +01:00
dependabot-preview[bot]
096d99664d
build(deps): bump ssh2 from 0.8.2 to 0.8.3
...
Bumps [ssh2](https://github.com/alexcrichton/ssh2-rs ) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/alexcrichton/ssh2-rs/releases )
- [Commits](https://github.com/alexcrichton/ssh2-rs/compare/0.8.2...0.8.3 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-15 16:01:54 +00:00
dependabot-preview[bot]
f7c42dc7d2
build(deps): bump vmm-sys-util from 0.6.1 to 0.7.0
...
Bumps [vmm-sys-util](https://github.com/rust-vmm/vmm-sys-util ) from 0.6.1 to 0.7.0.
- [Release notes](https://github.com/rust-vmm/vmm-sys-util/releases )
- [Changelog](https://github.com/rust-vmm/vmm-sys-util/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-vmm/vmm-sys-util/compare/v0.6.1...v0.7.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-13 15:55:05 +00:00
dependabot-preview[bot]
37f947d614
build(deps): bump unicode-normalization from 0.1.13 to 0.1.14
...
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization ) from 0.1.13 to 0.1.14.
- [Release notes](https://github.com/unicode-rs/unicode-normalization/releases )
- [Commits](https://github.com/unicode-rs/unicode-normalization/compare/v0.1.13...v0.1.14 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-12 16:18:48 +00:00
dependabot-preview[bot]
47d2421e39
build(deps): bump once_cell from 1.5.1 to 1.5.2
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/matklad/once_cell/releases )
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.5.1...v1.5.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-12 14:02:38 +00:00
dependabot-preview[bot]
04419065a3
build(deps): bump once_cell from 1.5.0 to 1.5.1
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/matklad/once_cell/releases )
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.5.0...v1.5.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-11 11:19:21 +00:00
Rob Bradford
ca60adda70
vmm: Add support for sending and receiving migration if VM is paused
...
This is tested by:
Source VMM:
target/debug/cloud-hypervisor --kernel ~/src/linux/vmlinux \
--pmem file=~/workloads/focal.raw --cpus boot=1 \
--memory size=2048M \
--cmdline"root=/dev/pmem0p1 console=ttyS0" --serial tty --console off \
--api-socket=/tmp/api1 -v
Destination VMM:
target/debug/cloud-hypervisor --api-socket=/tmp/api2 -v
And the following commands:
target/debug/ch-remote --api-socket=/tmp/api1 pause
target/debug/ch-remote --api-socket=/tmp/api2 receive-migration unix:/tmp/foo &
target/debug/ch-remote --api-socket=/tmp/api1 send-migration unix:/tmp/foo
target/debug/ch-remote --api-socket=/tmp/api2 resume
The VM is then responsive on the destination VMM.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-11 11:07:24 +01:00
Rob Bradford
dfe2dadb3e
vmm: memory_manager: Make the snapshot source directory an Option
...
This allows the code to be reused when creating the VM from a snapshot
when doing VM migration.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-11 11:07:24 +01:00
Rob Bradford
523029449e
bin: ch-remote: Add support for receive/send migration commands
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-11 11:07:24 +01:00
Rob Bradford
7ac764518c
vmm: api: Implement API support for migration
...
Add API entry points with stub implementation for sending and receiving
a VM from one VMM to another.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-11 11:07:24 +01:00
Rob Bradford
aa98589bb4
vm-migration: Add protocol documentation and data structures
...
Add the documentation and basic implementation for supporting migration.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-11 11:07:24 +01:00
dependabot-preview[bot]
ca5f1d6de8
build(deps): bump once_cell from 1.4.1 to 1.5.0
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/matklad/once_cell/releases )
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.4.1...v1.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-11 08:47:02 +00:00
Julio Montes
270631922d
vmm: openapi: remove omitempty json tag
...
Due to a known limitation in OpenAPITools/openapi-generator tool,
it's impossible to send go zero types, like false and 0 to
cloud-hypervisor because `omitempty` is added if a field is not
required.
Set cache_size, dax, num_queues and queue_size as required to remove
`omitempty` from the json tag.
fixes #1961
Signed-off-by: Julio Montes <julio.montes@intel.com >
2020-11-10 19:09:17 +01:00
Muminul Islam
465ef3f7ad
scripts: dev_cli: Export volumes for windows test as well
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-11-09 14:58:26 -08:00
dependabot-preview[bot]
50e0423304
build(deps): bump futures from 0.3.7 to 0.3.8
...
Bumps [futures](https://github.com/rust-lang/futures-rs ) from 0.3.7 to 0.3.8.
- [Release notes](https://github.com/rust-lang/futures-rs/releases )
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.7...0.3.8 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-09 21:50:00 +00:00
Anatol Belski
906a1eb18d
doc: Add notes to compile OVMF with legacy support
...
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2020-11-09 17:41:03 +01:00
Rob Bradford
7b77f1ef90
vmm: Remove self-spawning functionality for vhost-user-{net,block}
...
This also removes the need to lookup up the "exe" symlink for finding
the VMM executable path.
Fixes : #1925
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-09 00:16:15 +01:00
Rob Bradford
0005d11e32
vmm: config: Require a socket when using vhost-user
...
With self-spawning being removed both parameters are now required.
Fixes : #1925
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-09 00:16:15 +01:00
Rob Bradford
ec84abc5c7
tests: Remove self spawning integration tests
...
Fixes : #1925
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-11-09 00:16:15 +01:00
dependabot-preview[bot]
2ea0d8eb91
build(deps): bump cc from 1.0.61 to 1.0.62
...
Bumps [cc](https://github.com/alexcrichton/cc-rs ) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/alexcrichton/cc-rs/releases )
- [Commits](https://github.com/alexcrichton/cc-rs/compare/1.0.61...1.0.62 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-06 22:50:38 +00:00
dependabot-preview[bot]
6a25aaf6b9
build(deps): bump url from 2.1.1 to 2.2.0
...
Bumps [url](https://github.com/servo/rust-url ) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/servo/rust-url/releases )
- [Commits](https://github.com/servo/rust-url/compare/v2.1.1...v2.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-06 09:06:10 +00:00
dependabot-preview[bot]
1b6b45bf2f
build(deps): bump thiserror from 1.0.21 to 1.0.22
...
Bumps [thiserror](https://github.com/dtolnay/thiserror ) from 1.0.21 to 1.0.22.
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.21...1.0.22 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-04 16:24:46 +00:00
dependabot-preview[bot]
ecda97f759
build(deps): bump micro_http from 40309b7 to 59ab644
...
Bumps [micro_http](https://github.com/firecracker-microvm/micro-http ) from `40309b7` to `59ab644`.
- [Release notes](https://github.com/firecracker-microvm/micro-http/releases )
- [Commits](https://github.com/firecracker-microvm/micro-http/compare/40309b72ee084b0a26d60208f0872bd7c986de45...59ab64440a95f7b16253fef67b5201c2ec4adaf7 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-04 16:01:50 +00:00
Michael Zhao
5566992422
scripts: Fix the failure to fetch latest guest kernel code on AArch64
...
The integration script failed to obtain the new guest kernel commit when
the code folder had been existing on CI machine.
Signed-off-by: Michael Zhao <michael.zhao@arm.com >
2020-11-04 16:00:12 +00:00
dependabot-preview[bot]
cc637f12f6
build(deps): bump aho-corasick from 0.7.14 to 0.7.15
...
Bumps [aho-corasick](https://github.com/BurntSushi/aho-corasick ) from 0.7.14 to 0.7.15.
- [Release notes](https://github.com/BurntSushi/aho-corasick/releases )
- [Commits](https://github.com/BurntSushi/aho-corasick/compare/0.7.14...0.7.15 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-04 15:15:55 +00:00
dependabot-preview[bot]
592babaadd
build(deps): bump ppv-lite86 from 0.2.9 to 0.2.10
...
Bumps [ppv-lite86](https://github.com/cryptocorrosion/cryptocorrosion ) from 0.2.9 to 0.2.10.
- [Release notes](https://github.com/cryptocorrosion/cryptocorrosion/releases )
- [Commits](https://github.com/cryptocorrosion/cryptocorrosion/compare/ppv-lite86-0.2.9...ppv-lite86-0.2.10 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-03 08:31:08 +00:00
dependabot-preview[bot]
138a8156c8
build(deps): bump blake2b_simd from 0.5.10 to 0.5.11
...
Bumps [blake2b_simd](https://github.com/oconnor663/blake2_simd ) from 0.5.10 to 0.5.11.
- [Release notes](https://github.com/oconnor663/blake2_simd/releases )
- [Commits](https://github.com/oconnor663/blake2_simd/compare/0.5.10...0.5.11 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-03 08:30:59 +00:00
dependabot-preview[bot]
7a008e66a4
build(deps): bump anyhow from 1.0.33 to 1.0.34
...
Bumps [anyhow](https://github.com/dtolnay/anyhow ) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.33...1.0.34 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-03 08:30:50 +00:00
Michael Zhao
164d481683
tests: Enable watchdog test case on AArch64
...
Signed-off-by: Michael Zhao <michael.zhao@arm.com >
2020-11-02 08:19:07 +00:00
Michael Zhao
52f60188ca
resources: Enable watchdog in guest driver
...
Signed-off-by: Michael Zhao <michael.zhao@arm.com >
2020-11-02 08:19:07 +00:00
dependabot-preview[bot]
8cb29af712
build(deps): bump regex from 1.4.1 to 1.4.2
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.4.1...1.4.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-02 08:17:11 +00:00
dependabot-preview[bot]
60768a84c5
build(deps): bump signal-hook-registry from 1.2.1 to 1.2.2
...
Bumps [signal-hook-registry](https://github.com/vorner/signal-hook ) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/vorner/signal-hook/releases )
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/signal-hook/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-11-01 09:24:50 +00:00
dependabot-preview[bot]
3266eb7cce
build(deps): bump backtrace from 0.3.53 to 0.3.54
...
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs ) from 0.3.53 to 0.3.54.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases )
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.53...0.3.54 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-10-31 07:42:56 +00:00
Muminul Islam
c9a28312a9
rpm: Fix vhost_user_block binary name and use latest tag
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-10-31 07:42:39 +00:00
Michael Zhao
a278704ae0
tests: Enable reboot test case on AArch64
...
Signed-off-by: Michael Zhao <michael.zhao@arm.com >
2020-10-30 17:14:44 +00:00
Michael Zhao
093a581ee1
vmm: Implement VM rebooting on AArch64
...
The logic to handle AArch64 system event was: SHUTDOWN and RESET were
all treated as RESET.
Now we handle them differently:
- RESET event will trigger Vmm::vm_reboot(),
- SHUTDOWN event will trigger Vmm::vm_shutdown().
Signed-off-by: Michael Zhao <michael.zhao@arm.com >
2020-10-30 17:14:44 +00:00