Sebastien Boeuf
54f39aa8cb
vmm: Validate vhost-user-block/net are not configured with iommu=on
...
Extend the validate() function for both DiskConfig and NetConfig so that
we return an error if a vhost-user-block or vhost-user-net device is
expected to be placed behind the virtual IOMMU. Since these devices
don't support this feature, we can't allow iommu to be set to true in
these cases.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-05 13:08:41 +02:00
Sebastien Boeuf
1108bd1967
pci: vfio: Implement support for sparse mmap
...
Reorganizing the code to leverage the same mechanics implemented for
vfio-user and aimed at supporting sparse memory mappings for a single
region.
Relying on the capabilities returned by the vfio-ioctls crate, we create
a list of sparse areas depending if we get SPARSE_MMAP or MSIX_MAPPABLE
capability, or a single sparse area in case we couldn't find any
capability.
The list of sparse areas is then used to create both the memory mappings
in the Cloud Hypervisor address space and the hypervisor user memory
regions.
This allowed for the simplification of the MmioRegion structure.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-05 09:28:46 +02:00
Rob Bradford
707cea2182
vmm, devices: Move logging of 0x80 timestamp to its own device
...
This is a cleaner approach to handling the I/O port write to 0x80.
Whilst doing this also use generate the timestamp at the start of the VM
creation. For consistency use the same timestamp for the ARM equivalent.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-05-04 23:02:53 +01:00
Rob Bradford
c47e3b8689
gdb: Do not use VmmOps for memory manipulation
...
We don't use the VmmOps trait directly for manipulating memory in the
core of the VMM as it's really designed for the MSHV crate to handle
instruction decoding. As I plan to make this trait MSHV specific to
allow reduced locking for MMIO and PIO handling when running on KVM this
use should be removed.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-05-04 11:33:02 -07:00
Bo Chen
5bd7a1f03c
pci: vfio_user: Simplify 'unmap_mmio_regions()'
...
Instead of always creating a single large mmap for the MMIO region of a
BAR, we create multiple mmaps for the BARs that need multiple kvm user
memory regions. In this way, we can simplify 'unmap_mmio_regions()' (by
reusing information kept from 'MmioRegion::user_memory_region').
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
c614dcb9f7
vfio_user: Embed retry of getting region caps into 'get_region_info'
...
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
7fe399598d
vmm: device_manager: Map MMIO regions to the guest correctly
...
To correctly map MMIO regions to the guest, we will need to wait for valid
MMIO region information which is generated from 'PciDevice::allocate_bars()'
(as a part of 'DeviceManager::add_pci_device()').
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
25a38b25c4
pci: vfio_user: Create user memory regions based on sparse areas
...
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
b9fb849b83
vfio_user: Parse region capability 'VFIO_REGION_INFO_CAP_SPARSE_MMAP'
...
Fixes : #4018
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
0c00da1dd8
vfio_user: Split the function for getting device regions
...
To prepare the support of region capabilities, this commit factorizes
the `VFIO_USER_DEVICE_GET_REGION_INFO` operation in its own function. In
this process, it also removes the need of the hard-coded arbitrary value
for `vfio_region_info.argsz` (the maximum size of the reply payload).
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
28fb2d3235
vfio_user: Import "std::mem::size_of" for shorter reference
...
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Bo Chen
bf39146caa
pci: vfio_user: Allow a BAR to have multiple user memory regions
...
Similar to what's being supported for vfio devices, vfio-user devices
may also have BARs that need multiple kvm user memory regions,
e.g. device regions with `VFIO_REGION_INFO_CAP_SPARSE_MMAP`.
Signed-off-by: Bo Chen <chen.bo@intel.com>
2022-05-04 13:53:47 +02:00
Rob Bradford
1dfe4eda5c
vmm: Prevent "internal" identifiers being used by user
...
For devices that cannot be named by the user use the "__" prefix to
identify them as internal devices. Check that any identifiers provided
in the config do not clash with those internal names. This prevents the
user from creating a disk such as "__serial" which would then cause a
failure in unpredictable manner.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-05-04 12:34:11 +02:00
dependabot[bot]
5530795898
build: bump serde_json from 1.0.80 to 1.0.81 in /fuzz
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.80...v1.0.81 )
---
updated-dependencies:
- dependency-name: serde_json
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 02:02:20 +00:00
dependabot[bot]
db06ef78ba
build: bump num-traits from 0.2.14 to 0.2.15 in /fuzz
...
Bumps [num-traits](https://github.com/rust-num/num-traits ) from 0.2.14 to 0.2.15.
- [Release notes](https://github.com/rust-num/num-traits/releases )
- [Changelog](https://github.com/rust-num/num-traits/blob/master/RELEASES.md )
- [Commits](https://github.com/rust-num/num-traits/compare/num-traits-0.2.14...num-traits-0.2.15 )
---
updated-dependencies:
- dependency-name: num-traits
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 00:58:14 +00:00
dependabot[bot]
95c6ee3e6a
build: bump serde_json from 1.0.80 to 1.0.81
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.80...v1.0.81 )
---
updated-dependencies:
- dependency-name: serde_json
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 00:37:09 +00:00
dependabot[bot]
d4168056be
build: bump num-traits from 0.2.14 to 0.2.15
...
Bumps [num-traits](https://github.com/rust-num/num-traits ) from 0.2.14 to 0.2.15.
- [Release notes](https://github.com/rust-num/num-traits/releases )
- [Changelog](https://github.com/rust-num/num-traits/blob/master/RELEASES.md )
- [Commits](https://github.com/rust-num/num-traits/compare/num-traits-0.2.14...num-traits-0.2.15 )
---
updated-dependencies:
- dependency-name: num-traits
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 23:52:08 +00:00
Rob Bradford
592a65f52e
qcow: Reject files with compressed blocks early
...
Fixes : #3727
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-05-03 18:34:38 +01:00
Sebastien Boeuf
6e101f479c
vmm: Ensure hotplugged device identifier is unique
...
Whenever a device (virtio, vfio, vfio-user or vdpa) is hotplugged, we
must verify the provided identifier is unique, otherwise we must return
an error.
Particularly, this will prevent issues with identifiers for serial,
console, IOAPIC, balloon, rng, watchdog, iommu and gpio since all of
these are hardcoded by the VMM.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-03 18:34:24 +01:00
Rob Bradford
6d4862245d
vmm: Generate event when device is removed
...
The new event contains the BDF and the device id:
{
"timestamp": {
"secs": 2,
"nanos": 731073396
},
"source": "vm",
"event": "device-removed",
"properties": {
"bdf": "0000:00:02.0",
"id": "test-disk"
}
}
Fixes : #4038
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-05-03 17:10:36 +02:00
dependabot[bot]
78abbfa604
build: bump semver from 1.0.7 to 1.0.9 in /fuzz
...
Bumps [semver](https://github.com/dtolnay/semver ) from 1.0.7 to 1.0.9.
- [Release notes](https://github.com/dtolnay/semver/releases )
- [Commits](https://github.com/dtolnay/semver/compare/1.0.7...1.0.9 )
---
updated-dependencies:
- dependency-name: semver
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 11:34:23 +00:00
dependabot[bot]
664c9e3eb3
build: bump clap from 3.1.14 to 3.1.15
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.14 to 3.1.15.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v3.1.14...v3.1.15 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 03:12:26 +00:00
dependabot[bot]
1f71c28656
build: bump openssl-sys from 0.9.72 to 0.9.73
...
Bumps [openssl-sys](https://github.com/sfackler/rust-openssl ) from 0.9.72 to 0.9.73.
- [Release notes](https://github.com/sfackler/rust-openssl/releases )
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-sys-v0.9.72...openssl-sys-v0.9.73 )
---
updated-dependencies:
- dependency-name: openssl-sys
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 02:25:34 +00:00
dependabot[bot]
30e06eaaba
build: bump log from 0.4.16 to 0.4.17
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.16 to 0.4.17.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/commits/0.4.17 )
---
updated-dependencies:
- dependency-name: log
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 01:00:20 +00:00
dependabot[bot]
0ed196820e
build: bump unicode-xid from 0.2.2 to 0.2.3 in /fuzz
...
Bumps [unicode-xid](https://github.com/unicode-rs/unicode-xid ) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/unicode-rs/unicode-xid/releases )
- [Commits](https://github.com/unicode-rs/unicode-xid/commits )
---
updated-dependencies:
- dependency-name: unicode-xid
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 00:38:13 +00:00
dependabot[bot]
bde2370b18
build: bump log from 0.4.16 to 0.4.17 in /fuzz
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.16 to 0.4.17.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/commits/0.4.17 )
---
updated-dependencies:
- dependency-name: log
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 23:54:54 +00:00
dependabot[bot]
960a9e0ff7
build: bump libc from 0.2.124 to 0.2.125
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.124 to 0.2.125.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.124...0.2.125 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 18:15:25 +00:00
dependabot[bot]
3277c27e0d
build: bump serde_derive from 1.0.136 to 1.0.137
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.136 to 1.0.137.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137 )
---
updated-dependencies:
- dependency-name: serde_derive
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 17:27:47 +00:00
dependabot[bot]
dea10b5500
build: bump semver from 1.0.7 to 1.0.9
...
Bumps [semver](https://github.com/dtolnay/semver ) from 1.0.7 to 1.0.9.
- [Release notes](https://github.com/dtolnay/semver/releases )
- [Commits](https://github.com/dtolnay/semver/compare/1.0.7...1.0.9 )
---
updated-dependencies:
- dependency-name: semver
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 16:40:40 +00:00
dependabot[bot]
691d9b16db
build: bump serde from 1.0.136 to 1.0.137
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.136 to 1.0.137.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 15:52:41 +00:00
dependabot[bot]
400a351bb0
build: bump memchr from 2.4.1 to 2.5.0
...
Bumps [memchr](https://github.com/BurntSushi/memchr ) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/BurntSushi/memchr/releases )
- [Commits](https://github.com/BurntSushi/memchr/compare/2.4.1...2.5.0 )
---
updated-dependencies:
- dependency-name: memchr
dependency-type: indirect
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 15:05:34 +00:00
dependabot[bot]
fa9fb26952
build: bump unicode-xid from 0.2.2 to 0.2.3
...
Bumps [unicode-xid](https://github.com/unicode-rs/unicode-xid ) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/unicode-rs/unicode-xid/releases )
- [Commits](https://github.com/unicode-rs/unicode-xid/commits )
---
updated-dependencies:
- dependency-name: unicode-xid
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 14:20:11 +00:00
dependabot[bot]
938b0bfcec
build: bump serde_json from 1.0.79 to 1.0.80
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.79 to 1.0.80.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.79...v1.0.80 )
---
updated-dependencies:
- dependency-name: serde_json
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 13:13:26 +00:00
Sebastien Boeuf
a5a2e591c9
vmm: Remove FsConfig from VmConfig when unplugging fs device
...
All hotpluggable devices were properly removed from the VmConfig when a
remove-device command was issued, except for the "fs" type. Fix this
lack of support as it is causing the integration tests to fail with the
recent addition of verifying that identifiers are unique.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-02 13:26:15 +02:00
Sebastien Boeuf
677c8831af
vmm: Ensure uniqueness of generated identifiers
...
The device identifiers generated from the DeviceManager were not
guaranteed to be unique since they were not taking the list of
identifiers provided through the configuration.
By returning the list of unique identifiers from the configuration, and
by providing it to the DeviceManager, the generation of new identifiers
can rely both on the DeviceTree and the list of IDs from the
configuration.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-02 13:26:15 +02:00
Sebastien Boeuf
634c53ea50
vmm: config: Validate provided identifiers are unique
...
A valid configuration means we can only accept unique identifiers from
the user.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2022-05-02 13:26:15 +02:00
dependabot[bot]
657660e5c2
build: bump clap from 3.1.13 to 3.1.14
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.13 to 3.1.14.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v3.1.13...v3.1.14 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 10:44:46 +00:00
dependabot[bot]
b60e6f7cb1
build: bump thiserror from 1.0.30 to 1.0.31
...
Bumps [thiserror](https://github.com/dtolnay/thiserror ) from 1.0.30 to 1.0.31.
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.30...1.0.31 )
---
updated-dependencies:
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 09:53:42 +00:00
dependabot[bot]
4a7c858fdc
build: bump remain from 0.2.2 to 0.2.3
...
Bumps [remain](https://github.com/dtolnay/remain ) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/dtolnay/remain/releases )
- [Commits](https://github.com/dtolnay/remain/compare/0.2.2...0.2.3 )
---
updated-dependencies:
- dependency-name: remain
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 22:43:27 +00:00
dependabot[bot]
85a72efed7
build: bump clap from 3.1.12 to 3.1.13
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.12 to 3.1.13.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v3.1.12...v3.1.13 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 21:59:36 +00:00
dependabot[bot]
8afdcb98d4
build: bump syn from 1.0.91 to 1.0.92
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.91...1.0.92 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 21:12:59 +00:00
dependabot[bot]
6c36c60330
build: bump syn from 1.0.91 to 1.0.92 in /fuzz
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.91...1.0.92 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 00:40:22 +00:00
dependabot[bot]
6239b8ad7a
build: bump libc from 0.2.124 to 0.2.125 in /fuzz
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.124 to 0.2.125.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.124...0.2.125 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 23:51:25 +00:00
Rob Bradford
4fed2d4ed7
tests: Use different API sockets when restoring
...
This prevents a conflict since the old API socket will not have been
cleaned up (due to the use of SIGKILL.)
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 18:40:49 +01:00
LiHui
ec0c1b01c4
vmm: api: Do not delete the API socket on API server creation
...
The socket will safely deleted on shutdown and so it is not necessary to
delete the API socket when starting the HTTP server.
Fixes : #4026
Signed-off-by: LiHui <andrewli@kubesphere.io>
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 18:40:49 +01:00
Anatol Belski
f77ea5a2ce
doc: Initial add releases.md
...
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2022-04-29 11:19:45 +01:00
Rob Bradford
f17aa3755f
vmm: Add clarifying comment about Vm::entry_point()
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 11:03:38 +01:00
Rob Bradford
744a049007
vmm: Parallelise functionality with kernel loading
...
Move fuctionality earlier in the boot so as to run in parallel with the
loading of the kernel.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 11:03:38 +01:00
Rob Bradford
e70bd069b3
vmm: Load kernel asynchronously
...
Start loading the kernel as possible in the VM in a separate thread.
Whilst it is loading other work can be carried out such as initialising
the devices.
The biggest performance improvement is seen with a more complex set of
devices. If using e.g. four virtio-net devices then the time to start the
kernel improves by 20-30ms. With the simplest configuration the
improvement was of the order of 2-3ms.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 11:03:38 +01:00
Rob Bradford
bfeb3120f5
vmm: Refactor kernel loading to decouple from Vm struct
...
This will allow the kernel to be loaded from another thread.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2022-04-29 11:03:38 +01:00