Saravanan D
924baa9c0f
vmm: Forward device_id from NumaConfig to NumaNode
...
The device_id field was added to both NumaConfig and NumaNode as part
of the Generic Initiator support, but create_numa_nodes() change
was missed when the commits were reorganized.
As a result, node.device_id is never propogated from the config to
the runtime node and the ACPI SRAT Type 5 (Generic Initiator Affinity)
entries were never emitted.
Add the missing propogation so that create_srat_table() can resolve
the device and emit the correct affinity structure
Fixes : #7717
Signed-off-by: Saravanan D <saravanand@crusoe.ai>
2026-02-18 11:13:07 +00:00
Wei Liu
0a5e79afce
vmm: api: Expose the nested option in API description
...
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2026-02-17 23:39:44 +00:00
dependabot[bot]
08f338bcf6
build: Bump the non-rust-vmm group across 2 directories with 27 updates
...
Bumps the non-rust-vmm group with 14 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [bitflags](https://github.com/bitflags/bitflags ) | `2.10.0` | `2.11.0` |
| [clap](https://github.com/clap-rs/clap ) | `4.5.57` | `4.5.59` |
| [env_logger](https://github.com/rust-cli/env_logger ) | `0.11.8` | `0.11.9` |
| [libc](https://github.com/rust-lang/libc ) | `0.2.181` | `0.2.182` |
| [uuid](https://github.com/uuid-rs/uuid ) | `1.20.0` | `1.21.0` |
| [arc-swap](https://github.com/vorner/arc-swap ) | `1.8.1` | `1.8.2` |
| [futures](https://github.com/rust-lang/futures-rs ) | `0.3.31` | `0.3.32` |
| [async-executor](https://github.com/smol-rs/async-executor ) | `1.13.3` | `1.14.0` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.55` | `1.2.56` |
| [jiff](https://github.com/BurntSushi/jiff ) | `0.2.19` | `0.2.20` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.114` | `2.0.116` |
| [toml_parser](https://github.com/toml-rs/toml ) | `1.0.6+spec-1.1.0` | `1.0.9+spec-1.1.0` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident ) | `1.0.23` | `1.0.24` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.20` | `1.0.21` |
Bumps the non-rust-vmm group with 13 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [bitflags](https://github.com/bitflags/bitflags ) | `2.10.0` | `2.11.0` |
| [clap](https://github.com/clap-rs/clap ) | `4.5.57` | `4.5.59` |
| [libc](https://github.com/rust-lang/libc ) | `0.2.181` | `0.2.182` |
| [uuid](https://github.com/uuid-rs/uuid ) | `1.20.0` | `1.21.0` |
| [arc-swap](https://github.com/vorner/arc-swap ) | `1.8.1` | `1.8.2` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.55` | `1.2.56` |
| [futures-core](https://github.com/rust-lang/futures-rs ) | `0.3.31` | `0.3.32` |
| [futures-sink](https://github.com/rust-lang/futures-rs ) | `0.3.31` | `0.3.32` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.114` | `2.0.116` |
| [toml_parser](https://github.com/toml-rs/toml ) | `1.0.6+spec-1.1.0` | `1.0.9+spec-1.1.0` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident ) | `1.0.23` | `1.0.24` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.20` | `1.0.21` |
| [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer ) | `0.4.10` | `0.4.12` |
Updates `bitflags` from 2.10.0 to 2.11.0
- [Release notes](https://github.com/bitflags/bitflags/releases )
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitflags/bitflags/compare/2.10.0...2.11.0 )
Updates `clap` from 4.5.57 to 4.5.59
- [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/clap_complete-v4.5.57...clap_complete-v4.5.59 )
Updates `env_logger` from 0.11.8 to 0.11.9
- [Release notes](https://github.com/rust-cli/env_logger/releases )
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.8...v0.11.9 )
Updates `libc` from 0.2.181 to 0.2.182
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.182/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.181...0.2.182 )
Updates `uuid` from 1.20.0 to 1.21.0
- [Release notes](https://github.com/uuid-rs/uuid/releases )
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.20.0...v1.21.0 )
Updates `arc-swap` from 1.8.1 to 1.8.2
- [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/arc-swap/compare/v1.8.1...v1.8.2 )
Updates `futures` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `async-executor` from 1.13.3 to 1.14.0
- [Release notes](https://github.com/smol-rs/async-executor/releases )
- [Changelog](https://github.com/smol-rs/async-executor/blob/master/CHANGELOG.md )
- [Commits](https://github.com/smol-rs/async-executor/compare/v1.13.3...v1.14.0 )
Updates `cc` from 1.2.55 to 1.2.56
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.55...cc-v1.2.56 )
Updates `clap_builder` from 4.5.57 to 4.5.59
- [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/v4.5.57...v4.5.59 )
Updates `clap_lex` from 0.7.7 to 1.0.0
- [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/clap_lex-v0.7.7...clap_lex-v1.0.0 )
Updates `env_filter` from 0.1.4 to 1.0.0
- [Release notes](https://github.com/rust-cli/env_logger/releases )
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-cli/env_logger/compare/env_filter-v0.1.4...env_filter-v1.0.0 )
Updates `futures-channel` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-core` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-executor` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-io` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-macro` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-sink` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-task` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-util` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `jiff` from 0.2.19 to 0.2.20
- [Release notes](https://github.com/BurntSushi/jiff/releases )
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md )
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.19...jiff-static-0.2.20 )
Updates `jiff-static` from 0.2.19 to 0.2.20
- [Release notes](https://github.com/BurntSushi/jiff/releases )
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md )
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.19...jiff-static-0.2.20 )
Updates `syn` from 2.0.114 to 2.0.116
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.114...2.0.116 )
Updates `toml_parser` from 1.0.6+spec-1.1.0 to 1.0.9+spec-1.1.0
- [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.0.6...toml_parser-v1.0.9 )
Updates `unicode-ident` from 1.0.23 to 1.0.24
- [Release notes](https://github.com/dtolnay/unicode-ident/releases )
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.23...1.0.24 )
Updates `zmij` from 1.0.20 to 1.0.21
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.20...1.0.21 )
Updates `bitflags` from 2.10.0 to 2.11.0
- [Release notes](https://github.com/bitflags/bitflags/releases )
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitflags/bitflags/compare/2.10.0...2.11.0 )
Updates `clap` from 4.5.57 to 4.5.59
- [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/clap_complete-v4.5.57...clap_complete-v4.5.59 )
Updates `libc` from 0.2.181 to 0.2.182
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.182/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.181...0.2.182 )
Updates `uuid` from 1.20.0 to 1.21.0
- [Release notes](https://github.com/uuid-rs/uuid/releases )
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.20.0...v1.21.0 )
Updates `arc-swap` from 1.8.1 to 1.8.2
- [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/arc-swap/compare/v1.8.1...v1.8.2 )
Updates `cc` from 1.2.55 to 1.2.56
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.55...cc-v1.2.56 )
Updates `clap_builder` from 4.5.57 to 4.5.59
- [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/v4.5.57...v4.5.59 )
Updates `clap_lex` from 0.7.7 to 1.0.0
- [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/clap_lex-v0.7.7...clap_lex-v1.0.0 )
Updates `futures-core` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `futures-sink` from 0.3.31 to 0.3.32
- [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.31...0.3.32 )
Updates `syn` from 2.0.114 to 2.0.116
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.114...2.0.116 )
Updates `toml_parser` from 1.0.6+spec-1.1.0 to 1.0.9+spec-1.1.0
- [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.0.6...toml_parser-v1.0.9 )
Updates `unicode-ident` from 1.0.23 to 1.0.24
- [Release notes](https://github.com/dtolnay/unicode-ident/releases )
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.23...1.0.24 )
Updates `zmij` from 1.0.20 to 1.0.21
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.20...1.0.21 )
Updates `libfuzzer-sys` from 0.4.10 to 0.4.12
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-fuzz/libfuzzer/commits )
---
updated-dependencies:
- dependency-name: bitflags
dependency-version: 2.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: clap
dependency-version: 4.5.59
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: env_logger
dependency-version: 0.11.9
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: libc
dependency-version: 0.2.182
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: uuid
dependency-version: 1.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: arc-swap
dependency-version: 1.8.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures
dependency-version: 0.3.32
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: async-executor
dependency-version: 1.14.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.56
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_builder
dependency-version: 4.5.59
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 1.0.0
dependency-type: indirect
update-type: version-update:semver-major
dependency-group: non-rust-vmm
- dependency-name: env_filter
dependency-version: 1.0.0
dependency-type: indirect
update-type: version-update:semver-major
dependency-group: non-rust-vmm
- dependency-name: futures-channel
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-core
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-executor
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-io
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-macro
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-sink
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-task
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-util
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: jiff
dependency-version: 0.2.20
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: jiff-static
dependency-version: 0.2.20
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: syn
dependency-version: 2.0.116
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: toml_parser
dependency-version: 1.0.9+spec-1.1.0
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: unicode-ident
dependency-version: 1.0.24
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.21
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: bitflags
dependency-version: 2.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: clap
dependency-version: 4.5.59
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: libc
dependency-version: 0.2.182
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: uuid
dependency-version: 1.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: arc-swap
dependency-version: 1.8.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.56
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_builder
dependency-version: 4.5.59
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 1.0.0
dependency-type: indirect
update-type: version-update:semver-major
dependency-group: non-rust-vmm
- dependency-name: futures-core
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: futures-sink
dependency-version: 0.3.32
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: syn
dependency-version: 2.0.116
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: toml_parser
dependency-version: 1.0.9+spec-1.1.0
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: unicode-ident
dependency-version: 1.0.24
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.21
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: libfuzzer-sys
dependency-version: 0.4.12
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 01:03:53 +00:00
Leander Kohler
30c86d5999
vmm: fix --net fd helptext for list syntax
...
The --net help text documented fd as fd=<fd1,fd2...>, but
comma-separated FD lists in option values must be bracketed to avoid
top-level option splitting.
Update NetConfig::SYNTAX to use fd=<[fd1,fd2,...]>, matching parser
behavior and existing net parsing tests:
`cargo test -p vmm test_net_parsing`
On-behalf-of: SAP leander.kohler@sap.com
Signed-off-by: Leander Kohler <leander.kohler@cyberus-technology.de>
2026-02-13 20:58:30 +00:00
Anatol Belski
49a30cbbaf
block: raw: Implement disk preallocation for sparse=false
...
When sparse=false is configured, preallocate the entire raw disk file
at startup using fallocate(). This provides space reservation and
reduces fragmentation.
Only applies to raw disks. QCOW2/VHD/VHDX formats manage their own
allocation.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-02-13 18:44:30 +00:00
Anatol Belski
0a287793df
block: qcow: Thread sparse configuration to QCOW2 constructors
...
Add sparse parameter to QcowFile constructors and propagate it from
device_manager through QcowDiskSync. This makes the sparse configuration
available throughout the QCOW2 implementation for controlling allocation
and deallocation behavior.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-02-13 18:44:30 +00:00
Anatol Belski
7dfcbff309
vmm: config: Add sparse flag to control disk space allocation
...
Add sparse boolean configuration option to DiskConfig with a default
value of true to control disk space allocation behavior.
When sparse is true, the disk uses sparse allocation where deallocated
blocks are returned to the filesystem, and the DISCARD feature is
advertised to the guest.
When sparse is false, disk space is kept fully allocated and DISCARD
is not advertised.
WRITE_ZEROES is always advertised when the backend supports it,
regardless of the sparse setting.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-02-13 18:44:30 +00:00
Anatol Belski
d5dad48618
block: Add sparse capability detection
...
Add functions to probe whether a file or block device actually
supports PUNCH_HOLE and ZERO_RANGE operations at runtime. The
probe is performed at file open time by testing the operations
at EOF with a zero-length range, which is a safe no-op.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-02-13 18:44:30 +00:00
Muminul Islam
41b23229a5
vmm: refactor VM initialization into modular helper methods
...
Decompose the monolithic `new_from_memory_manager` function into
smaller, focused helper methods to improve code readability,
maintainability, and testability.
Changes:
- Extract `should_force_iommu()` to determine IOMMU requirements for
confidential computing (TDX/SEV-SNP)
- Extract `should_stop_on_boot()` to check debug pause configuration
- Extract `create_cpu_manager()` to encapsulate CPU manager creation
and CPUID population
- Extract `init_tdx_if_enabled()` for TDX-specific VM initialization
- Extract `create_device_manager()` to encapsulate device manager setup
- Extract `hypervisor_specific_init()` to orchestrate initialization
sequences for different hypervisors (KVM, MSHV, SEV-SNP)
- Extract `init_sev_snp()` for SEV-SNP confidential VM setup
- Extract `init_mshv()` for MSHV hypervisor initialization
- Extract `init_kvm()` for KVM hypervisor initialization
- Extract `create_fw_cfg_if_enabled()` for fw_cfg device creation
This refactoring replaces complex nested `cfg_if!` blocks with cleaner
conditional method calls, providing clear separation between hypervisor-
specific initialization paths while preserving existing functionality.
No functional changes intended.
Issue: https://github.com/cloud-hypervisor/cloud-hypervisor/issues/7598
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2026-02-13 10:18:50 +00:00
Philipp Schuster
03ef7d1991
vmm: remove lock for VmState
...
The lock doesn't make any sense. There is no shared ownership. All
accesses are already synchronized by accesses on a higher level.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2026-02-13 09:46:13 +00:00
Saravanan D
dc0c306dd9
vmm: Add ACPI Generic Initiator support
...
Support ACPI Generic Initiator Affinity to associate
PCI devices with NUMA proximity domains
Add GenericInitiatorAffinity struct
Add from_pci_bdf() to encode PCI Segment:Bus:Device.Function
Add from_acpi_device() for ACPI device handles (future use)
Generate SRAT Type 5 entries for nodes with device_id
Improve create_slit_table() to check distance symmetry when
forward distance is missing
Track device ID to BDF mappings in DeviceManager
Includes comprehensive unit tests
Signed-off-by: Saravanan D <saravanand@crusoe.ai>
2026-02-12 22:54:54 +00:00
Saravanan D
fa43548975
vmm: Add validation for Generic Initiator NUMA
...
Validate device_id in numa config is mutually
exclusive with cpus and memory_zones
Add NumaConfig::validate() and modify NumaConfig::parse()
Add ValidationError::InvalidNumaConfig for detailed error
messages
Include unit tests covering valid and invalid configs
Signed-off-by: Saravanan D <saravanand@crusoe.ai>
2026-02-12 22:54:54 +00:00
Saravanan D
6d4827b5ff
vmm: Add device_id field to NUMA configuration
...
Add an optional device_id string field to NumaConfig for identifying
PCI devices associated with a NUMA node. This is used by the Generic
Initiator support to map devices to their proximity domain.
Update OpenAPI spec (cloud-hypervisor.yaml) to include the
new device_id field in the NumaConfig schema.
The device_id is optional and parsed from the --numa parameter:
--numa "device_id=<device_id>,distances=[...],..."
The optional field is accepted but not used.
Signed-off-by: Saravanan D <saravanand@crusoe.ai>
2026-02-12 22:54:54 +00:00
Saravanan D
231bbe2d5d
vmm: Enforce guest_numa_id on NUMA nodes
...
The documentation says guest_numa_id is required to be unique and
therefore the parser() giving default value for non-existing
guest_numa_id with .unwrap_or(0) is dangerous.
Return a validation error if guest_numa_id is not provided instead
of silently defaulting to 0.
Signed-off-by: Saravanan D <saravanand@crusoe.ai>
2026-02-12 22:54:54 +00:00
Philipp Schuster
2882ccd00a
vmm: config validation: add more context to errors
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2026-02-11 10:04:14 +00:00
Damian Barabonkov
dde5f6ef38
vmm: Fix MMIO region removal during VFIO device hot-unplug
...
When a VFIO device with multiple MMIO regions is hot-unplugged, each
region must be individually matched and removed from the DeviceManager's
mmio_regions list. Compare per-region rather than building an aggregate
across all regions, which would never match any individual entry.
Also remove the now-unused HashSet import.
Signed-off-by: Damian Barabonkov <dbctl@pm.me>
2026-02-11 00:03:01 +00:00
Changyuan Lyu
c2add07476
vmm: device_manager: avoid deep cloning device configs
...
Replace `clone()` with `take()` when retrieving device configurations
from `DeviceManager.config`.
This avoids unnecessarily copying the device configuration lists (e.g.,
`disks`, `net`, `fs`) when they are being processed and subsequently
moved out of the configuration. This optimization improves performance
by reducing memory allocations and cloning overhead.
Signed-off-by: Changyuan Lyu <changyuanl@google.com>
2026-02-10 23:35:54 +00:00
Rob Bradford
509832298b
vmm: Add option to control backing files
...
Backing files (e.g. for QCOW2) interact badly with landlock since they
are not obvious from the initial VM configuration. Only enable their use
with an explicit option.
Signed-off-by: Rob Bradford <rbradford@meta.com>
2026-02-10 17:41:42 +00:00
Anatol Belski
a00189cf72
hypervisor: vmm: mshv: Enable SMT for guests with threads_per_core > 1
...
Set HV_PARTITION_CREATION_FLAG_SMT_ENABLED_GUEST when the guest
topology has more than one thread per core. This allows the
hypervisor to schedule guest VPs correctly on SMT-enabled hosts.
Without this flag, the hypervisor schedules guest VPs incorrectly,
causing SMT unusable.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-02-07 09:55:17 +00:00
Champ-Goblem
1e0eba60af
vmm: always try THP for VM RAM
...
The kernel allows madvise on shared memory if
/sys/kernel/mm/transparent_hugepage/shmem_enabled is set.
Always try and configure THP via madvise when
the user requests THP be enabled.
If this fails, only a warning log is emitted and THP won't be enabled.
Signed-off-by: Champ-Goblem <cameron@northflank.com>
2026-02-06 18:40:26 +00:00
Rowen-Ye
2c2f5d2431
vmm: open backing file read-only when not shared
...
When restoring from snapshot with shared=false, write access to the
backing file is not required. Opening it read-only allows restore to
succeed on read-only media and overlay lower layers while preserving
MAP_PRIVATE semantics.
Signed-off-by: Rowen-Ye <rowenye1@gmail.com>
2026-02-06 16:06:48 +00:00
Zhibin Li
28686bba46
vmm: fix rsdp_addr assertion for TDX
...
TDX builds its own ACPI tables in `create_acpi_tables_tdx` so it will
return None in the standard `create_acpi_tables` function and the
assertion for `rsdp_addr` will fail.
Signed-off-by: Zhibin Li <banlu.lzb@antgroup.com>
2026-01-29 16:23:22 +00:00
dependabot[bot]
79953fece0
build: Bump the non-rust-vmm group across 2 directories with 9 updates
...
Bumps the non-rust-vmm group with 8 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [signal-hook](https://github.com/vorner/signal-hook ) | `0.4.1` | `0.4.3` |
| [uuid](https://github.com/uuid-rs/uuid ) | `1.19.0` | `1.20.0` |
| [zerocopy](https://github.com/google/zerocopy ) | `0.8.33` | `0.8.34` |
| [gdbstub](https://github.com/daniel5151/gdbstub ) | `0.7.8` | `0.7.9` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.53` | `1.2.54` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.105` | `1.0.106` |
| [quote](https://github.com/dtolnay/quote ) | `1.0.43` | `1.0.44` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.15` | `1.0.17` |
Bumps the non-rust-vmm group with 8 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [signal-hook](https://github.com/vorner/signal-hook ) | `0.4.1` | `0.4.3` |
| [uuid](https://github.com/uuid-rs/uuid ) | `1.19.0` | `1.20.0` |
| [zerocopy](https://github.com/google/zerocopy ) | `0.8.33` | `0.8.34` |
| [gdbstub](https://github.com/daniel5151/gdbstub ) | `0.7.8` | `0.7.9` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.53` | `1.2.54` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.105` | `1.0.106` |
| [quote](https://github.com/dtolnay/quote ) | `1.0.43` | `1.0.44` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.15` | `1.0.17` |
Updates `signal-hook` from 0.4.1 to 0.4.3
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/signal-hook/compare/v0.4.1...v0.4.3 )
Updates `uuid` from 1.19.0 to 1.20.0
- [Release notes](https://github.com/uuid-rs/uuid/releases )
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0 )
Updates `zerocopy` from 0.8.33 to 0.8.34
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34 )
Updates `gdbstub` from 0.7.8 to 0.7.9
- [Release notes](https://github.com/daniel5151/gdbstub/releases )
- [Changelog](https://github.com/daniel5151/gdbstub/blob/master/CHANGELOG.md )
- [Commits](https://github.com/daniel5151/gdbstub/compare/0.7.8...0.7.9 )
Updates `cc` from 1.2.53 to 1.2.54
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.53...cc-v1.2.54 )
Updates `proc-macro2` from 1.0.105 to 1.0.106
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.105...1.0.106 )
Updates `quote` from 1.0.43 to 1.0.44
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.43...1.0.44 )
Updates `zerocopy-derive` from 0.8.33 to 0.8.34
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34 )
Updates `zmij` from 1.0.15 to 1.0.17
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.15...1.0.17 )
Updates `signal-hook` from 0.4.1 to 0.4.3
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/signal-hook/compare/v0.4.1...v0.4.3 )
Updates `uuid` from 1.19.0 to 1.20.0
- [Release notes](https://github.com/uuid-rs/uuid/releases )
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.19.0...v1.20.0 )
Updates `zerocopy` from 0.8.33 to 0.8.34
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34 )
Updates `gdbstub` from 0.7.8 to 0.7.9
- [Release notes](https://github.com/daniel5151/gdbstub/releases )
- [Changelog](https://github.com/daniel5151/gdbstub/blob/master/CHANGELOG.md )
- [Commits](https://github.com/daniel5151/gdbstub/compare/0.7.8...0.7.9 )
Updates `cc` from 1.2.53 to 1.2.54
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.53...cc-v1.2.54 )
Updates `proc-macro2` from 1.0.105 to 1.0.106
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.105...1.0.106 )
Updates `quote` from 1.0.43 to 1.0.44
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.43...1.0.44 )
Updates `zerocopy-derive` from 0.8.33 to 0.8.34
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.33...v0.8.34 )
Updates `zmij` from 1.0.15 to 1.0.17
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.15...1.0.17 )
---
updated-dependencies:
- dependency-name: signal-hook
dependency-version: 0.4.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: uuid
dependency-version: 1.20.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zerocopy
dependency-version: 0.8.34
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: gdbstub
dependency-version: 0.7.9
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.54
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: proc-macro2
dependency-version: 1.0.106
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: quote
dependency-version: 1.0.44
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zerocopy-derive
dependency-version: 0.8.34
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.17
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: signal-hook
dependency-version: 0.4.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: uuid
dependency-version: 1.20.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zerocopy
dependency-version: 0.8.34
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: gdbstub
dependency-version: 0.7.9
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.54
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: proc-macro2
dependency-version: 1.0.106
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: quote
dependency-version: 1.0.44
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zerocopy-derive
dependency-version: 0.8.34
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.17
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 01:54:35 +00:00
Muminul Islam
c9cd82b52b
vmm: fix CVM boot failure on MSHV
...
Recent changes related to arm64 support in MSHV exposed
inconsistencies in the VM initialization and CVM boot paths.
The VM creation flow currently diverges across multiple scenarios,
including regular MSHV, CVM, and arm64, with each path performing
guest initialization steps in a different order.
Certain platform-specific requirements further constrain the ordering
of operations, such as the timing of address space creation,
IGVM loading, interrupt controller setup, and payload loading. For
CVM case address-space creation must be done after IGVM loading, and
PSP measurement. For Regular and arm64 this memory initialization
must be done early. For MSHV, vm.init() and sev_snp.init() are called in
different order which is run time and build time conditionally checked.
Additionally, while the KVM initialization path differs slightly
from MSHV, it shares common logic that is currently split across
separate conditional and build-time code paths, contributing to
fragmentation of the overall flow.
This change restructures the VM creation and initialization sequence
to better align shared logic, enforce scenario-specific ordering
constraints, and ensure consistent and correct behavior across all
supported configurations. In doing so, it restores proper CVM boot
behavior and improves the maintainability of the initialization code.
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2026-01-21 19:40:17 +00:00
dependabot[bot]
cda1ec5fbc
build: Bump the non-rust-vmm group across 2 directories with 14 updates
...
Bumps the non-rust-vmm group with 8 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [igvm](https://github.com/microsoft/igvm ) | ``81dd0e4`` | ``9848d1f`` |
| [thiserror](https://github.com/dtolnay/thiserror ) | `2.0.17` | `2.0.18` |
| [zbus](https://github.com/z-galaxy/zbus ) | `5.13.1` | `5.13.2` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.52` | `1.2.53` |
| [rand_core](https://github.com/rust-random/rand_core ) | `0.9.4` | `0.9.5` |
| [rustc-demangle](https://github.com/rust-lang/rustc-demangle ) | `0.1.26` | `0.1.27` |
| [wasip2](https://github.com/bytecodealliance/wasi-rs ) | `1.0.1+wasi-0.2.4` | `1.0.2+wasi-0.2.9` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.13` | `1.0.15` |
Bumps the non-rust-vmm group with 5 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [thiserror](https://github.com/dtolnay/thiserror ) | `2.0.17` | `2.0.18` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.52` | `1.2.53` |
| [rand_core](https://github.com/rust-random/rand_core ) | `0.9.4` | `0.9.5` |
| [wasip2](https://github.com/bytecodealliance/wasi-rs ) | `1.0.1+wasi-0.2.4` | `1.0.2+wasi-0.2.9` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.13` | `1.0.15` |
Updates `igvm` from `81dd0e4` to `9848d1f`
- [Release notes](https://github.com/microsoft/igvm/releases )
- [Commits](81dd0e49cd...9848d1f2a8 )
Updates `igvm_defs` from `81dd0e4` to `9848d1f`
- [Release notes](https://github.com/microsoft/igvm/releases )
- [Commits](81dd0e49cd...9848d1f2a8 )
Updates `thiserror` from 2.0.17 to 2.0.18
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.17...2.0.18 )
Updates `zbus` from 5.13.1 to 5.13.2
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.13.1...zbus-5.13.2 )
Updates `cc` from 1.2.52 to 1.2.53
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.52...cc-v1.2.53 )
Updates `find-msvc-tools` from 0.1.7 to 0.1.8
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.7...find-msvc-tools-v0.1.8 )
Updates `rand_core` from 0.9.4 to 0.9.5
- [Changelog](https://github.com/rust-random/rand_core/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand_core/commits )
Updates `rustc-demangle` from 0.1.26 to 0.1.27
- [Release notes](https://github.com/rust-lang/rustc-demangle/releases )
- [Changelog](https://github.com/rust-lang/rustc-demangle/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/rustc-demangle/compare/rustc-demangle-v0.1.26...rustc-demangle-v0.1.27 )
Updates `wasip2` from 1.0.1+wasi-0.2.4 to 1.0.2+wasi-0.2.9
- [Commits](https://github.com/bytecodealliance/wasi-rs/compare/wasip2-1.0.1...wasip2-1.0.2 )
Updates `wit-bindgen` from 0.46.0 to 0.51.0
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases )
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.46.0...v0.51.0 )
Updates `zbus_macros` from 5.13.1 to 5.13.2
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus_macros-5.13.1...zbus_macros-5.13.2 )
Updates `zmij` from 1.0.13 to 1.0.15
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.13...1.0.15 )
Updates `zvariant` from 5.9.1 to 5.9.2
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant-5.9.1...zvariant-5.9.2 )
Updates `zvariant_derive` from 5.9.1 to 5.9.2
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant_derive-5.9.1...zvariant_derive-5.9.2 )
Updates `thiserror` from 2.0.17 to 2.0.18
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.17...2.0.18 )
Updates `cc` from 1.2.52 to 1.2.53
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.52...cc-v1.2.53 )
Updates `find-msvc-tools` from 0.1.7 to 0.1.8
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.7...find-msvc-tools-v0.1.8 )
Updates `rand_core` from 0.9.4 to 0.9.5
- [Changelog](https://github.com/rust-random/rand_core/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand_core/commits )
Updates `wasip2` from 1.0.1+wasi-0.2.4 to 1.0.2+wasi-0.2.9
- [Commits](https://github.com/bytecodealliance/wasi-rs/compare/wasip2-1.0.1...wasip2-1.0.2 )
Updates `wit-bindgen` from 0.46.0 to 0.51.0
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases )
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.46.0...v0.51.0 )
Updates `zmij` from 1.0.13 to 1.0.15
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.13...1.0.15 )
---
updated-dependencies:
- dependency-name: igvm
dependency-version: 9848d1f2a8a44931395a30debeae287b6d01505d
dependency-type: direct:production
dependency-group: non-rust-vmm
- dependency-name: igvm_defs
dependency-version: 9848d1f2a8a44931395a30debeae287b6d01505d
dependency-type: direct:production
dependency-group: non-rust-vmm
- dependency-name: thiserror
dependency-version: 2.0.18
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus
dependency-version: 5.13.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.53
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.8
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rustc-demangle
dependency-version: 0.1.27
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: wasip2
dependency-version: 1.0.2+wasi-0.2.9
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: wit-bindgen
dependency-version: 0.51.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zbus_macros
dependency-version: 5.13.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.15
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zvariant
dependency-version: 5.9.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zvariant_derive
dependency-version: 5.9.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: thiserror
dependency-version: 2.0.18
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.53
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.8
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: wasip2
dependency-version: 1.0.2+wasi-0.2.9
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: wit-bindgen
dependency-version: 0.51.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.15
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 01:29:32 +00:00
Bo Chen
ccf0b9ec7d
vmm: Refactor IORT table generation to use structured data types
...
The current implementation is based on IORT spec revisition E.b [1].
[1] https://developer.arm.com/documentation/den0049/eb/?lang=en
Fixes : #7587
Signed-off-by: Bo Chen <bchen@crusoe.ai>
2026-01-16 19:07:44 +00:00
dependabot[bot]
c19ee037a2
build: Bump the non-rust-vmm group across 2 directories with 14 updates
...
Bumps the non-rust-vmm group with 7 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [libc](https://github.com/rust-lang/libc ) | `0.2.179` | `0.2.180` |
| [flate2](https://github.com/rust-lang/flate2-rs ) | `1.1.5` | `1.1.8` |
| [zbus](https://github.com/z-galaxy/zbus ) | `5.12.0` | `5.13.1` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.51` | `1.2.52` |
| [clap_lex](https://github.com/clap-rs/clap ) | `0.7.6` | `0.7.7` |
| [rand_core](https://github.com/rust-random/rand ) | `0.9.3` | `0.9.4` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.12` | `1.0.13` |
Bumps the non-rust-vmm group with 7 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [libc](https://github.com/rust-lang/libc ) | `0.2.179` | `0.2.180` |
| [flate2](https://github.com/rust-lang/flate2-rs ) | `1.1.5` | `1.1.8` |
| [getrandom](https://github.com/rust-random/getrandom ) | `0.2.16` | `0.2.17` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.51` | `1.2.52` |
| [clap_lex](https://github.com/clap-rs/clap ) | `0.7.6` | `0.7.7` |
| [rand_core](https://github.com/rust-random/rand ) | `0.9.3` | `0.9.4` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.12` | `1.0.13` |
Updates `libc` from 0.2.179 to 0.2.180
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.180/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.179...0.2.180 )
Updates `flate2` from 1.1.5 to 1.1.8
- [Release notes](https://github.com/rust-lang/flate2-rs/releases )
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.5...1.1.8 )
Updates `zbus` from 5.12.0 to 5.13.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.12.0...zbus-5.13.1 )
Updates `cc` from 1.2.51 to 1.2.52
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.51...cc-v1.2.52 )
Updates `clap_lex` from 0.7.6 to 0.7.7
- [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/clap_lex-v0.7.6...clap_lex-v0.7.7 )
Updates `find-msvc-tools` from 0.1.6 to 0.1.7
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.6...find-msvc-tools-v0.1.7 )
Updates `rand_core` from 0.9.3 to 0.9.4
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Updates `zbus_macros` from 5.12.0 to 5.13.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.12.0...zbus_macros-5.13.1 )
Updates `zbus_names` from 4.2.0 to 4.3.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus_names-4.2.0...zbus_names-4.3.1 )
Updates `zmij` from 1.0.12 to 1.0.13
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.12...1.0.13 )
Updates `zvariant` from 5.8.0 to 5.9.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant-5.8.0...zvariant-5.9.1 )
Updates `zvariant_derive` from 5.8.0 to 5.9.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.8.0...zvariant_derive-5.9.1 )
Updates `zvariant_utils` from 3.2.1 to 3.3.0
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant-3.2.1...zvariant_utils-3.3.0 )
Updates `libc` from 0.2.179 to 0.2.180
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.180/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.179...0.2.180 )
Updates `flate2` from 1.1.5 to 1.1.8
- [Release notes](https://github.com/rust-lang/flate2-rs/releases )
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.5...1.1.8 )
Updates `getrandom` from 0.2.16 to 0.2.17
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.16...v0.2.17 )
Updates `cc` from 1.2.51 to 1.2.52
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.51...cc-v1.2.52 )
Updates `clap_lex` from 0.7.6 to 0.7.7
- [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/clap_lex-v0.7.6...clap_lex-v0.7.7 )
Updates `find-msvc-tools` from 0.1.6 to 0.1.7
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.6...find-msvc-tools-v0.1.7 )
Updates `rand_core` from 0.9.3 to 0.9.4
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Updates `zmij` from 1.0.12 to 1.0.13
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.12...1.0.13 )
---
updated-dependencies:
- dependency-name: libc
dependency-version: 0.2.180
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: flate2
dependency-version: 1.1.8
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus
dependency-version: 5.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.52
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 0.7.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus_macros
dependency-version: 5.13.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zbus_names
dependency-version: 4.3.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.13
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zvariant
dependency-version: 5.9.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zvariant_derive
dependency-version: 5.9.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zvariant_utils
dependency-version: 3.3.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: libc
dependency-version: 0.2.180
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: flate2
dependency-version: 1.1.8
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: getrandom
dependency-version: 0.2.17
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.52
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 0.7.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.13
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:09:15 +00:00
Bo Chen
11edb28069
vmm: acpi: Clarify device ID partitioning in IORT table
...
The IORT table's ID mapping uses a 256-ID offset per PCI segment to
ensure unique device IDs across all segments. This partitioning scheme
(output_base = 256 * segment_id) must match the device ID encoding used
in KVM MSI routing configuration [1].
This mapping assumes one bus per PCI segment, and supports up to 256 PCI
segments in the system.
[1] c9374d87ac
Signed-off-by: Bo Chen <bchen@crusoe.ai>
2026-01-12 17:18:52 +00:00
Bo Chen
01d711e893
vmm: acpi: Explicitly write ITS identifier in IORT table
...
The IORT specification (Revision E.b, Table 12) defines the ITS Group
Node structure with an ITS Identifiers array following the node header.
Although the IORT table is zero-initialized, this commit adds an
explicit write of the ITS identifier value (0) for clarity and spec
compliance.
This ITS identifier must match the `translation_id` field in the MADT
GIC ITS structure to ensure proper interrupt routing on ARM platforms.
Signed-off-by: Bo Chen <bchen@crusoe.ai>
2026-01-12 17:18:52 +00:00
Bo Chen
c87ca39219
vmm: acpi: Generate IORT table according to spec revision E.b
...
The current IORT table implementation is based on IORT Spec revision E.b
[1], as evidenced by:
* The PCI root complex node revision being set to `3`
* The code being updated in late 2021 [2] when revision E.b was the
latest version
This patch ensures the IORT table is properly generated according to
this specification revision, fixing three issues:
1. The IORT table revision should be `3` rather than `2` (see Table 2 in
the spec [1])
2. The GIC ITS group node revision should be `1` rather than `0`
(see Table 12 in the spec [1])
3. The "Memory access properties" and "ATS Attribute" fields of the PCI
root complex node was set incorrectly - specifically the MAF (Memory
Access Flags) including CPM and DACS bits (see Tables 14, 15, and 17
in the spec [1])
[1] https://developer.arm.com/documentation/den0049/eb/?lang=en
[2] https://github.com/cloud-hypervisor/cloud-hypervisor/pull/3356
Signed-off-by: Bo Chen <bchen@crusoe.ai>
2026-01-12 17:18:52 +00:00
Demi Marie Obenour
079d94ecae
seccomp: Add gettid() to all seccomp filters
...
It should always succeed and is apparently implicitly called by libc or
some dependency somewhere.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2026-01-10 19:18:04 +00:00
Anatol Belski
3657db7843
vmm: mshv: Set PROCESSORS_PER_SOCKET property for CPU topologies
...
On MSHV, exposing multithreaded CPU topologies requires setting the
PROCESSORS_PER_SOCKET partition property so that CPUID.0xB reports
correct logical processor counts and topology levels to the guest.
This property must be set after all vCPUs are configured, as the
hypervisor uses the complete vCPU layout to derive and report CPU
topology information.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2026-01-05 21:41:28 +00:00
Thomas Prescher
b15459106c
docs: update vm.resize-disk
...
On-behalf-of: SAP thomas.prescher@sap.com
Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de>
2025-12-17 13:54:52 +00:00
Thomas Prescher
5fb078305a
ch-remote: support live disk resizing
...
Support disk resizing via ch-remote and REST api.
On-behalf-of: SAP thomas.prescher@sap.com
Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de>
2025-12-17 13:54:52 +00:00
Thomas Prescher
37d71fa038
vmm: disk resize infrastructure
...
Add basic infrastructure so resize events are
propagated to the underlying disk implementation.
On-behalf-of: SAP thomas.prescher@sap.com
Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de>
2025-12-17 13:54:52 +00:00
Philipp Schuster
7288031c0e
misc: slightly improve feature list readability
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2025-12-14 17:05:49 +00:00
Philipp Schuster
82e8002fa0
misc: clippy: remove some overrides
...
Closes #4986 [0].
[0]: https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4986
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2025-12-14 17:05:49 +00:00
Pascal Scholz
a8d1411307
vmm: Write directly to member when creating new devices
...
Virtio PCI devices are created in a set of nested functions. In each
of this functions a vector is created to add created devices to, only
to be appended to the vector of the higher nesting level. Those nested
vectors are unnecessary as we can directly write to the member of
`DeviceManager`.
Signed-off-by: Pascal Scholz <pascal.scholz@cyberus-technology.de>
On-behalf-of: SAP pascal.scholz@sap.com
2025-12-14 17:04:23 +00:00
Oliver Anderson
bcc6ac68e9
seccomp: Add KVM_GET_XSAVE2 for amx state
...
Signed-off-by: Oliver Anderson <oliver.anderson@cyberus-technology.de>
Signed-off-by: Songqian Li <sionli@tencent.com>
2025-12-11 17:14:13 +00:00
Philipp Schuster
6bda6541be
vmm: cleanup &Mutex parameters
...
In [0] we refactored some Arc<Mutex<T>> parameters to &Mutex<T>> to
satisfy clippy's needless_pass_by_value lint. Nevertheless, this is also
not so idiomatic, so as a follow-up, we put the responsibility to lock
objects to the caller side (only where this is not strictly needed by
the callee).
While on it, I also tried to pass vm_config directly into
pre_create_console_devices() which would clean up some code, but then
we have interleaving mutable and immutable borrows of the Vmm, which
are denied by the borrow checker.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2025-12-10 11:06:29 +00:00
Oliver Anderson
8de24b5f08
vmm: Fix clippy lints
...
This PR fixes some clippy lints in the vmm crate.
Signed-off-by: Oliver Anderson <oliver.anderson@cyberus-technology.de>
On-behalf-of: SAP oliver.anderson@sap.com
2025-12-09 16:14:44 +00:00
Oliver Anderson
5ec1e66e22
vmm: Refactor amx tile state component enabling logic
...
We enable AMX tile state components via the hypervisor (as introduced
in the previous commit) instead of doing this inline in the body of
`CpuManager::new`.
Signed-off-by: Oliver Anderson <oliver.anderson@cyberus-technology.de>
On-behalf-of: SAP oliver.anderson@sap.com
2025-12-04 14:04:11 +00:00
Muminul Islam
658a7f9175
arch: vmm: disable nested virtualization if needed
...
User can now disable nested virtualization for Intel and AMD
if configured by the CLI.
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2025-12-03 09:56:58 +00:00
Muminul Islam
d8360ddc8e
hypervisor: vmm: passing nested argument from VMM to hypervisor
...
This patch connects the VMM and hypervisor to fully enable nested
support for MSHV.
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2025-12-03 09:56:58 +00:00
Muminul Islam
f10d0bb33d
vmm: add nested option to CPU config
...
Add an option in the CLI to enable nested support.
Adding an option --cpu nested=on|off to the CPU
argument to enable nested support for Microsoft
Hypervisor. By default it is enabled for both KVM
and MSHV.
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2025-12-03 09:56:58 +00:00
Muminul Islam
deaf660a52
vmm: simplify VM creation API
...
Create HypervisorVmConfig early and pass the
struct to VM creation API in the vmm crate. Getting
rid of multiple conditional parameter.
Signed-off-by: Muminul Islam <muislam@microsoft.com>
2025-12-03 09:56:58 +00:00
Rob Bradford
4abebc9e56
hypervisor: Don't create temporary vector for boot MSRs
...
The MSRs are constant at boot time so rather than creating a vector in
the boot_msr_entries() method instead reaturn a reference to static MSR
array data.
Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
2025-11-29 13:07:16 +00:00
Julian Stecklina
dbb148b216
vmm: refactor live migration receive into state machine
...
Previously, state that we accumulated during the migration process in
the receiver was kept in `mut Option` variables or HashMaps. The
problem is that it is unclear in the code when these variables can be
safely used. It's also difficult to add new state, such as the state
we need to handle the upcoming feature for performing the migration
using multiple connections.
To solve this, I've refactored the code to use the state machine
pattern. Each state carries the data it needs to. Any state that
didn't arrive yet (memory_files, memory_manager) cannot be accessed
until we are in the proper state.
Some benefits that fall out of this:
- We now respond to all requests, even invalid ones, at least with an
error message.
- Any error handling a request will result in an error message being
sent.
- There is only a single place where responses are sent and thus it's
very hard to mess this up in the code.
- The main protocol state machine fits on a screen.
I would argue that especially the error cases are now much more
consistent. There is still a lot to be done. There is still state
transfer via self.vm and similar. In an ideal world, this would also
be carried by the state machine. I also want to see better handling of
payloads, which are still handled all over the place, but this change
is already too big. :)
Co-authored-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP julian.stecklina@sap.com
On-behalf-of: SAP philipp.schuster@sap.com
Signed-off-by: Julian Stecklina <julian.stecklina@cyberus-technology.de>
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
2025-11-28 08:41:47 +00:00
Julian Stecklina
1861bc49e7
vmm: simplify receiving memory fds
...
... and nuke some Option<> while I was there. Given that HashMap has a
usable default and we end up passing an empty HashMap anyway, just get
rid of the Option.
On-behalf-of: SAP julian.stecklina@sap.com
Signed-off-by: Julian Stecklina <julian.stecklina@cyberus-technology.de>
2025-11-28 08:41:47 +00:00
Philipp Schuster
afcb2b285f
tpm: remove mixture of str and Path
...
`impl AsRef<Path>` is the most idiomatic way to consume paths
in Rust. I removed the mixture.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-27 17:11:14 +00:00