Rob Bradford
d4f7f42800
vmm: Add pci_segment option to DeviceConfig
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
ca955a47ff
vmm: Implement pci_segment options for hotpluggable virtio devices
...
For all the devices that support being hotplugged (disk, net, pmem, fs
and vsock) add "pci_segment" option and propagate that through to the
addition onto the PCI busses.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
88378d17a2
vmm: Take PCI segment ID into BAR size allocation
...
Move the decision on whether to use a 64-bit bar up to the DeviceManager
so that it can use both the device type (e.g. block) and the PCI segment
ID to decide what size bar should be used.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
cf1c2bf0e8
vmm: Use the same set of reserved PCI IRQ routes for all segments
...
Generate a set of 8 IRQs and round-robin distribute those over all the
slots for a bus. This same set of IRQs is then used for all PCI
segments.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
e3d6e222a1
vmm: Add the required number of PCI segments
...
The platform config may specify a number of PCI segments to use, if this
greater than 1 then we add supplemental PCI segments as well as the
default segment.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
f8d9c073f0
vmm: Add "--platform"
...
This currently contains only the number over PCI segments to create.
This is limited to 16 at the moment which should allow 496 user specified
PCI devices.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
e3c35a3579
vmm: Allow specifying the PCI segment ID when adding virtio PCI device
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
7a4606f800
vmm: Implement ACPI hotplug/unplug handling for PCI segments
...
For the bus scanning the GED AML code now calls into a PSCN method that
scans all buses. This approach was chosen since it handles the case
correctly where one GED interrupt is services for two hotplugs on
distinct segments.
The PCIU and PCID field values are now determined by the PSEG field that
is uses to select which segment those values should be used for.
Similarly _EJ0 will notify based on the value of _SEG.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
49f19e061b
vmm: Use device's segment when removing a device
...
The segment ID has been stored in the DeviceTree.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
d33d254921
vmm: Remove hardcoded zero PCI segment id
...
Replace the hardcoded zero PCI segment id when adding devices to the bus
and extend the DeviceTree to hold the PCI segment id.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
b8b0dab1ae
vmm: Add segment_id parameter to DeviceManager::add_pci_device
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
c118d7d7d3
vmm: Only fill in PIO and 32-bit MMIO space on zero segment
...
Since each segment must have disjoint address spaces only advertise
address space in the 32-bit range and the PIO address space on the
default (zero) segment.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
3059ba4305
vmm: Refactor PCI segment creation to support non-default segment
...
Split PciSegment::new_default_segment() into a separate
PciSegment::new() and those parts required only for the default segment
(PIO PCI config device.)
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
080ce9b068
vmm: Populate MCFG table with details of all PCI segments
...
The MCFG table holds the PCI MMIO config details for all the MMIO PCI
config devices.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
c886d71d29
vmm: Add MMIO & PIO config devices for all PCI segments
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
4f5c179b9b
vmm: Construct PCI DSDT data from all segments
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
fbb385834a
vmm: Use a vector to store multiple segments
...
For now this still contains just one segment but is expanding in
preparation for more segments.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
b4fc02857f
vmm: Advertise PCI MMIO config range for PCI bus
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
b55f009b8a
vmm: Calculate MMIO config address based on segment id
...
This means that each segment can have its own PCI MMIO config device
without overlapping.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
b59f1d90dd
vmm: Expose _SEG with segment ID for PCI bus
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
a7fba8105f
vmm: Customise PCI device name based on segment id
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
Rob Bradford
8b67298ad8
vmm: Move PCI bus DSDT data onto PciSegment
...
This commit moves the code that generates the DSDT data for the PCI bus
into PciSegment making no functional changes to the generated AML.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-02 16:55:42 +00:00
dependabot[bot]
21706b02b8
build: bump libc from 0.2.105 to 0.2.106
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.105 to 0.2.106.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.105...0.2.106 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 06:30:25 +00:00
dependabot[bot]
bbc300b2cd
build: bump openssl-sys from 0.9.68 to 0.9.70
...
Bumps [openssl-sys](https://github.com/sfackler/rust-openssl ) from 0.9.68 to 0.9.70.
- [Release notes](https://github.com/sfackler/rust-openssl/releases )
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-sys-v0.9.68...openssl-sys-v0.9.70 )
---
updated-dependencies:
- dependency-name: openssl-sys
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 06:16:55 +00:00
dependabot[bot]
1d095a929c
build: bump backtrace from 0.3.62 to 0.3.63
...
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs ) from 0.3.62 to 0.3.63.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases )
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.62...0.3.63 )
---
updated-dependencies:
- dependency-name: backtrace
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 06:07:52 +00:00
dependabot[bot]
5d14541924
build: bump libc from 0.2.105 to 0.2.106 in /fuzz
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.105 to 0.2.106.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.105...0.2.106 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 05:22:22 +00:00
dependabot[bot]
f17addd36f
build: bump vm-fdt from 88554cf
to d10837b
...
Bumps [vm-fdt](https://github.com/rust-vmm/vm-fdt ) from `88554cf` to `d10837b`.
- [Release notes](https://github.com/rust-vmm/vm-fdt/releases )
- [Commits](88554cfb0d...d10837b6e9
)
---
updated-dependencies:
- dependency-name: vm-fdt
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 05:22:17 +00:00
dependabot[bot]
b80df526e4
build: bump mshv-bindings from 424f51a
to 4ed2146
...
Bumps [mshv-bindings](https://github.com/rust-vmm/mshv ) from `424f51a` to `4ed2146`.
- [Release notes](https://github.com/rust-vmm/mshv/releases )
- [Commits](424f51a5fc...4ed2146b7c
)
---
updated-dependencies:
- dependency-name: mshv-bindings
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-02 05:22:03 +00:00
Rob Bradford
8c1176e33a
build: Update version of toolchain in container
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-11-01 12:51:19 -07:00
Sebastien Boeuf
ed5f25446a
pci: vfio: Support mapping BAR containing MSI-X
...
In order to get proper performance out of hardware that might be passed
through the VM with VFIO, we decide to try mapping any region marked as
mappable, ignoring the failure and moving on to the next region. When
the mapping succeeds, we establish a list of user memory regions so that
we enable only subparts of the global mapping through the hypervisor.
This allows MSI-X table and PBA to keep trapping accesses from the guest
so that the VMM can properly emulate MSI-X.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-10-28 06:10:12 -07:00
Wei Liu
23f63262e7
vmm: drop underscore from used variables
...
Variables that start with underscore are used to silence rustc.
Normally those variables are not used in code.
This patch drops the underscore from variables that are used. This is
less confusing to readers.
No functional change intended.
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2021-10-28 13:38:20 +01:00
Bo Chen
455b0d12e9
vmm: Remove VFIO user device from VmConfig
upon device unplug
...
It ensures we won't recreate the unplugged device on reboot.
Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-10-28 09:42:52 +01:00
dependabot[bot]
3c7323230a
build: bump syn from 1.0.80 to 1.0.81 in /fuzz
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.80...1.0.81 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 00:27:45 +00:00
dependabot[bot]
374e1a2eca
build: bump openssl-sys from 0.9.67 to 0.9.68
...
Bumps [openssl-sys](https://github.com/sfackler/rust-openssl ) from 0.9.67 to 0.9.68.
- [Release notes](https://github.com/sfackler/rust-openssl/releases )
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-sys-v0.9.67...openssl-sys-v0.9.68 )
---
updated-dependencies:
- dependency-name: openssl-sys
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 00:09:13 +00:00
dependabot[bot]
9d8315521c
build: bump syn from 1.0.80 to 1.0.81
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.80...1.0.81 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 23:40:10 +00:00
dependabot[bot]
bc1e0361c0
build: bump proc-macro2 from 1.0.30 to 1.0.32 in /fuzz
...
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2 ) from 1.0.30 to 1.0.32.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.30...1.0.32 )
---
updated-dependencies:
- dependency-name: proc-macro2
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 08:58:43 +00:00
dependabot[bot]
8d6076653d
build: bump proc-macro2 from 1.0.30 to 1.0.32
...
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2 ) from 1.0.30 to 1.0.32.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.30...1.0.32 )
---
updated-dependencies:
- dependency-name: proc-macro2
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 08:12:48 +00:00
dependabot[bot]
57f063513c
build: bump vm-fdt from bb53be4
to 88554cf
...
Bumps [vm-fdt](https://github.com/rust-vmm/vm-fdt ) from `bb53be4` to `88554cf`.
- [Release notes](https://github.com/rust-vmm/vm-fdt/releases )
- [Commits](bb53be431b...88554cfb0d
)
---
updated-dependencies:
- dependency-name: vm-fdt
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 08:12:37 +00:00
Rob Bradford
beb0c0707f
vmm: Move logging output for the debug (0x80) port to info!()
...
This makes it much easier to use since the info!() level produces far
fewer messages and thus has less overhead.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-10-26 16:48:09 +01:00
William Douglas
1c2ab3e771
workflow: Add vendored source release content
...
Create a source archive with vendored sources as part of the release
workflow. This is to enable building the release offline for distros.
Note: The use of realpath and CARGO_HOME are to work around a cargo
vendor bug: https://github.com/rust-lang/cargo/issues/8443 .
Signed-off-by: William Douglas <william.douglas@intel.com>
2021-10-26 16:17:38 +01:00
Bo Chen
aaf253a2d7
Dockerfile: Enforce to build SPDK with meson 0.59.2
...
This is to workaround a regression of building SPDK/DPDK with the latest
meson 0.60.0 [1][2].
[1] https://github.com/spdk/spdk/issues/2214
[2] https://bugs.dpdk.org/show_bug.cgi?id=836
Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-10-26 10:22:56 +01:00
Rob Bradford
bbc223b93f
build: Update version of toolchain in container
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-10-26 10:22:56 +01:00
dependabot[bot]
b5d5ffa969
build: bump libc from 0.2.104 to 0.2.105
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.104 to 0.2.105.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.104...0.2.105 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 01:32:06 +00:00
dependabot[bot]
93dce87cfe
build: bump pkg-config from 0.3.21 to 0.3.22
...
Bumps [pkg-config](https://github.com/rust-lang/pkg-config-rs ) from 0.3.21 to 0.3.22.
- [Release notes](https://github.com/rust-lang/pkg-config-rs/releases )
- [Changelog](https://github.com/rust-lang/pkg-config-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/pkg-config-rs/compare/0.3.21...0.3.22 )
---
updated-dependencies:
- dependency-name: pkg-config
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 00:53:28 +00:00
dependabot[bot]
3dda3669b9
build: bump libc from 0.2.104 to 0.2.105 in /fuzz
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.104 to 0.2.105.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.104...0.2.105 )
---
updated-dependencies:
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 00:36:56 +00:00
Willen Yang
4c9a88db87
docs: update arm64.md
...
fix the typo in "### Booting the guest VM" section.
Signed-off-by: Willen Yang <willenyang@gmail.com>
2021-10-25 10:26:58 +08:00
dependabot[bot]
5dcc8cdf39
build: bump object from 0.27.0 to 0.27.1
...
Bumps [object](https://github.com/gimli-rs/object ) from 0.27.0 to 0.27.1.
- [Release notes](https://github.com/gimli-rs/object/releases )
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md )
- [Commits](https://github.com/gimli-rs/object/compare/0.27.0...0.27.1 )
---
updated-dependencies:
- dependency-name: object
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 01:15:12 +00:00
dependabot[bot]
5963002cc5
build: bump pkg-config from 0.3.20 to 0.3.21
...
Bumps [pkg-config](https://github.com/rust-lang/pkg-config-rs ) from 0.3.20 to 0.3.21.
- [Release notes](https://github.com/rust-lang/pkg-config-rs/releases )
- [Changelog](https://github.com/rust-lang/pkg-config-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/pkg-config-rs/compare/0.3.20...0.3.21 )
---
updated-dependencies:
- dependency-name: pkg-config
dependency-type: indirect
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 01:14:57 +00:00
Sebastien Boeuf
f151a8602c
net_util: Fix error type
...
The type of error wasn't properly reflecting the issue.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-10-22 11:38:55 +02:00
Sebastien Boeuf
0249e8641a
Move Cloud Hypervisor to virtio-queue crate
...
Relying on the vm-virtio/virtio-queue crate from rust-vmm which has been
copied inside the Cloud Hypervisor tree, the entire codebase is moved to
the new definition of a Queue and other related structures.
The reason for this move is to follow the upstream until we get some
agreement for the patches that we need on top of that to make it
properly work with Cloud Hypervisor.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-10-22 11:38:55 +02:00