mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
0ec2ae376b7d8ff05927a505ad0e13b0bb1efea7
863 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
027b1a4c46 |
tests: enable MSHV fw_cfg coverage
Re-enable the fw_cfg integration tests for MSHV now that port string I/O is handled by the hypervisor backend. Signed-off-by: Wei Liu <liuwe@microsoft.com> Assisted-by: Copilot:GPT-5.5 |
||
|
|
b3149e87fd |
hypervisor: mshv: emulate string port I/O
Handle MSHV INS/OUTS port intercepts by translating the guest string operand through MshvEmulatorContext and copying data between guest memory and existing PIO callbacks. Support REP counts, zero-count REP, and direction-flag based RSI/RDI updates. Commit RIP plus RCX/RSI/RDI after the transfer completes. This removes the fw_cfg/debug-port skip. OVMF can now use the real string I/O path instead of relying on ignored ports. Signed-off-by: Wei Liu <liuwe@microsoft.com> Assisted-by: Copilot:GPT-5.5 |
||
|
|
cfc7775f80 |
hypervisor: mshv: add port I/O helpers
Decode MSHV port access size, direction, string, and REP state through small helpers instead of open-coded bitfield reads. Keep scalar I/O behavior unchanged and continue rejecting string I/O in this step. Put the x86_64 port I/O helpers in their own module so the string emulation path can grow without bloating the top-level MSHV code. Signed-off-by: Wei Liu <liuwe@microsoft.com> Assisted-by: Copilot:GPT-5.5 |
||
|
|
43138da0d7 |
hypervisor: x86: share string op helpers
Move common string instruction bookkeeping into the x86 instruction emulator so MOVS, STOS, and MSHV port string I/O use one implementation for REP counts, direction-flag handling, and index advancement. This keeps existing MOVS/STOS behavior unchanged while removing the need for MSHV to open-code the same string-operation details. Signed-off-by: Wei Liu <liuwe@microsoft.com> Assisted-by: Copilot:GPT-5.5 |
||
|
|
0cd68e8f3b |
hypervisor: mshv: refactor port I/O exits
Move scalar HVMSG_X64_IO_PORT_INTERCEPT handling into a helper so the string I/O implementation can build on the same dispatch path. Keep the existing fw_cfg/debug-port skip plus string/REP assertions in place. This is only code movement so later changes are easier to review. Signed-off-by: Wei Liu <liuwe@microsoft.com> Assisted-by: Copilot:GPT-5.5 |
||
|
|
4b671954a0 |
hypervisor: kvm: Support pre-XSAVE x86 CPUs
KVM will emulate XSAVE for us, so we need only to skip XCRS setting/retrieval if the respective CPU feature is not available. Signed-off-by: Nikolas Kyx <55556836+nyx191@users.noreply.github.com> |
||
|
|
56e891a405 |
hypervisor: kvm: preserve kvmclock realtime and fill if needed
If `KVM_GET_CLOCK` already filled out the `realtime` field, it sets the `KVM_CLOCK_REALTIME` flag, but if we instead preserve this flag, the kernel will automatically adjust the kvmclock clock when calling `KVM_SET_CLOCK` based on the elapsed wall-clock time between pause and resume. This just requires removing the `reset_flags()` function, which allows the `KVM_CLOCK_REALTIME` flag to persist in the serialized clock state. However, the kernel does not always fill the `realtime` field, depending on clock source; in this case, fill `realtime` during pause based on the system time. This is not as precise as the automatic `KVM_GET_CLOCK` version, since we query the time slightly after the vCPU was paused, but it allows the clock to be resumed mostly in sync instead of being wildly off. In this case, we also set the `KVM_CLOCK_REALTIME` flag in the saved `struct kvmclock` so `KVM_SET_CLOCK` will adjust the clock on resume. Basic test case: 1. Run a VM with a Linux guest. 2. Pause the guest via `vm.pause` API. 3. Wait several minutes. 4. Resume the guest via `vm.resume` API. 5. Verify the guest time (e.g. via `date` command) is valid. 6. Verify guest is still using `kvm-clock` timesource: cat /sys/devices/system/clocksource/clocksource0/current_clocksource Before applying the patch, the guest clock would be off by the delta time between pause and resume; after the patch, the clock is (more or less) in sync with the correct wall-clock time. Old snapshots will not have the `KVM_CLOCK_REALTIME` flag populated, so they will not be affected by the new behavior. Signed-off-by: Daniel Verkamp <drv@meta.com> |
||
|
|
179d56ca72 |
hypervisor: replace #[allow(dead_code)] with expect()
On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> |
||
|
|
b4c37def26 |
hypervisor: improve error chain
On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> |
||
|
|
5cb619ff7c |
hypervisor: Implement common traits for CpuVendor
Serialized CPU profiles will contain information about the CPU vendor. While there are other ways to encode this, such as going via CPUID, we find simply serializing the pre-existing enum the simplest. We also implement some other common traits such as `Debug` and `Eq` which make it more convenient to work with this type. Signed-off-by: Oliver Anderson <oliver.anderson@cyberus-technology.de> On-behalf-of: SAP oliver.anderson@sap.com |
||
|
|
673d4a441c |
hypervisor: Fix clippy: for_kv_map
Fix use of a paired map iterator when only the values are cared about. Signed-off-by: Rob Bradford <rbradford@meta.com> |
||
|
|
649ca23345 |
arch, hypervisor: Report KVM IMSIC interrupt IDs
The RISC-V AIA FDT node currently advertises a fixed riscv,num-ids value. That can diverge from the interrupt identity count configured by KVM, which matters for guests running with an emulated IMSIC. Record the NR_IDS value reported by KVM and expose that value through the generated device tree. Read back the KVM-selected AIA mode without forcing an emulation mode. Assisted-by: OpenAI-Codex:GPT-5 Signed-off-by: wangyf0611 <wangyufeng@iscas.ac.cn> |
||
|
|
9c2e2a67cc |
hypervisor: Enable sstateen0 for KVM vCPUs
KVM initializes RISC-V vCPUs with sstateen0 cleared. When AIA is exposed to the guest, Linux touches supervisor AIA CSRs while bringing up the IMSIC path, and those accesses fail if the stateen bits remain disabled. Program sstateen0 for newly created vCPUs so the guest can use the supervisor interrupt state needed by AIA. Assisted-by: OpenAI-Codex:GPT-5 Signed-off-by: wangyf0611 <wangyufeng@iscas.ac.cn> |
||
|
|
5c25d82f59 |
hypervisor, vmm: Fix aarch64 SVE register save/restore
When SVE is enabled, KVM replaces the FPSIMD V-registers with wider SVE Z-registers. Attempting to access the old FPSIMD offsets returns EINVAL. Fix by classifying each register from KVM_GET_REG_LIST as core, system, or extended. Extended registers (currently SVE only) are saved as generic `ExtendedReg` entries split into `pre_finalize_regs` (registers like SVE VLS that must be written before `vcpu_finalize`) and `extended_regs`. FPSIMD registers are only accessed when SVE is absent. Unrecognized register families error immediately so future extensions like SME fail clearly rather than silently losing state. The snapshot is deserialized before vCPU init to make pre-finalize register state available for the init -> VLS -> finalize ordering required by KVM. Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
177d8b80e2 |
hypervisor: Extract FPSIMD register access into helper methods
Move the inline FPSIMD register read/write code from `get_regs()` and
`set_regs()` into dedicated `get_fpsimd_regs()` and `set_fpsimd_regs()`
methods on `KvmVcpu`.
This helps keep the larger `{get,set}_regs()` easier to understand and
prepares them for a subsequent commit that needs to conditionally
skip FPSIMD access when SVE registers are used instead.
Signed-off-by: Ruben Hakobyan <hruben@meta.com>
|
||
|
|
18bbc71b59 |
hypervisor: fix typo
On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> xxx ci |
||
|
|
49259bb84f |
hypervisor: kvm: Punch holes in guest_memfd on shared transition
When an SEV-SNP guest transitions pages from private to shared via KVM_HC_MAP_GPA_RANGE, punch holes in the corresponding guest_memfd backing it. Without this the balloon driver's `set_memory_decrypted()` path transitions the page attributes but the physical memory stays pinned in guest_memfd, making virtio-balloon ineffective for memory overcommit with confidential VMs. Even without ballooning these pages are unused by the guest so consume resources. This mirrors the hole punching that the balloon device does for releasing pages. The memory_slots Arc is cloned into each KvmVcpu at creation so the punch can happen in the vcpu thread. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Rob Bradford <rbradford@meta.com> |
||
|
|
ebeef03192 |
hypervisor: kvm: Introduce KvmMemorySlot to track guest_memfd per slot
Replace the bare OwnedFd map (guest_memfds) with a KvmMemorySlot struct wrapped in an Arc so it can later be shared with KvmVcpu. This is a pure refactor with no functional change; KvmMemorySlot currently holds only the guest_memfd OwnedFd. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Rob Bradford <rbradford@meta.com> |
||
|
|
a67277b9cd |
hypervisor: kvm: improve logging for triple fault
When a triple fault happens [0], we now get at least a log message. This helps to better understand the root cause of sudden reboots. Broader context: We experience reboots caused by triple faults in edk2 (6 months old as well as recent). They happen so early in the boot that one doesn't really see them without looking at the VMM log. An automatic system reset plus reboot often hides these situations - now they are at least more visible in the log. PS: Printing the registers to get more debugging help doesn't help, as the guest already triple-faulted - the CPU state of the root cause doesn't exist anymore. [0] https://elixir.bootlin.com/linux/v6.18.6/source/arch/x86/kvm/x86.c#L11123 On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> |
||
|
|
9b0d4b20ea |
hypervisor: replace as <pointer> casts with safer alternatives
`as` casts can change mutability, which quickly leads to undefined behavior. Signed-off-by: Julian Schindel <mail@arctic-alpaca.de> |
||
|
|
c97d635d40 |
hypervisor, vmm: Build and pass SNP ID block to launch finish
Add KvmSevSnpIdBlock and KvmSevSnpIdAuth structs matching the AMD SEV-SNP Firmware ABI Spec (Rev 1.58), and build them from the IGVM SNP ID block directive during launch finish. This properly populates id_block_uaddr/id_auth_uaddr in KVM_SEV_SNP_LAUNCH_FINISH and derives auth_key_en from the assembled author key, matching QEMU's behavior. Thread the guest policy from sev_snp_init to launch_finish via an atomic on KvmVm so the ID block gets the correct policy value. Also track has_snp_id_block in IgvmLoadedInfo to enable the ID block based on whether the IGVM file actually contains one, rather than hardcoding it for KVM. Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
475c8d3efb |
hypervisor: mshv: Use VP register page for state access
Use the VP register page to read and write emulation-related special registers directly, avoiding expensive IOCTLs for registers that instruction emulation never touches. In cpu_state(), read only segments, cr0, and efer from the VP register page instead of calling get_sregs() which issues IOCTLs for tr, ldt, gdt, idt, cr2, apic_base, and pending_interruption. In update_cpu_state(), when segments change, write only the 6 segment registers to the VP register page and set the segment dirty bit, instead of calling set_sregs() which issues IOCTLs for tr, ldt, gdt, idt, cr0-cr4, cr8, efer, and apic_base. Both paths fall back to the IOCTL-based methods when the VP register page is not available. Signed-off-by: Muminul Islam <muislam@microsoft.com> |
||
|
|
389257964b |
hypervisor: mshv: Make the translation caching code idiomatic
Signed-off-by: Wei Liu <liuwe@microsoft.com> |
||
|
|
842d02fdd9 |
hypervisor: mshv: Validate GPA mapping with GvaGpaValid flag
The GvaGpaValid flag in the intercept message indicates whether the provided GPA corresponds to the decoded GVA. Without checking this flag, the emulator may incorrectly use a stale GPA mapping when the hypervisor invalidates it. Add a check for the GvaGpaValid flag before using the cached (GVA, GPA) mapping. If the flag is clear, use a sentinel value to force translate() to perform a proper hypercall-based translation instead of using an invalid cached mapping. Signed-off-by: Pedro Barbuda <pbarbuda@microsoft.com> Signed-off-by: Muminul Islam <muislam@microsoft.com> |
||
|
|
75e6e694a2 |
build(deps): bump the non-rust-vmm group across 2 directories with 22 updates
Bumps the non-rust-vmm group with 18 updates in the / directory: | Package | From | To | | --- | --- | --- | | [bitflags](https://github.com/bitflags/bitflags) | `2.11.0` | `2.11.1` | | [clap](https://github.com/clap-rs/clap) | `4.6.0` | `4.6.1` | | [libc](https://github.com/rust-lang/libc) | `0.2.184` | `0.2.185` | | [uuid](https://github.com/uuid-rs/uuid) | `1.23.0` | `1.23.1` | | [io-uring](https://github.com/tokio-rs/io-uring) | `0.7.11` | `0.7.12` | | [bitfield-struct](https://github.com/wrenger/bitfield-struct-rs) | `0.12.1` | `0.13.0` | | [rand](https://github.com/rust-random/rand) | `0.10.0` | `0.10.1` | | [async-signal](https://github.com/smol-rs/async-signal) | `0.2.13` | `0.2.14` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.59` | `1.2.60` | | [fastrand](https://github.com/smol-rs/fastrand) | `2.3.0` | `2.4.1` | | [js-sys](https://github.com/wasm-bindgen/wasm-bindgen) | `0.3.91` | `0.3.95` | | libredox | `0.1.15` | `0.1.16` | | [openssl-src](https://github.com/alexcrichton/openssl-src-rs) | `300.5.5+3.5.5` | `300.6.0+3.6.2` | | [openssl-sys](https://github.com/rust-openssl/rust-openssl) | `0.9.112` | `0.9.114` | | [pkg-config](https://github.com/rust-lang/pkg-config-rs) | `0.3.32` | `0.3.33` | | [portable-atomic-util](https://github.com/taiki-e/portable-atomic-util) | `0.2.6` | `0.2.7` | | [rand_core](https://github.com/rust-random/rand_core) | `0.10.0` | `0.10.1` | | [wasip2](https://github.com/bytecodealliance/wasi-rs) | `1.0.2+wasi-0.2.9` | `1.0.3+wasi-0.2.9` | Bumps the non-rust-vmm group with 11 updates in the /fuzz directory: | Package | From | To | | --- | --- | --- | | [bitflags](https://github.com/bitflags/bitflags) | `2.11.0` | `2.11.1` | | [clap](https://github.com/clap-rs/clap) | `4.6.0` | `4.6.1` | | [libc](https://github.com/rust-lang/libc) | `0.2.184` | `0.2.185` | | [uuid](https://github.com/uuid-rs/uuid) | `1.23.0` | `1.23.1` | | [rand](https://github.com/rust-random/rand) | `0.10.0` | `0.10.1` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.59` | `1.2.60` | | [fastrand](https://github.com/smol-rs/fastrand) | `2.3.0` | `2.4.1` | | [js-sys](https://github.com/wasm-bindgen/wasm-bindgen) | `0.3.91` | `0.3.95` | | [pkg-config](https://github.com/rust-lang/pkg-config-rs) | `0.3.32` | `0.3.33` | | [rand_core](https://github.com/rust-random/rand_core) | `0.10.0` | `0.10.1` | | [wasip2](https://github.com/bytecodealliance/wasi-rs) | `1.0.2+wasi-0.2.9` | `1.0.3+wasi-0.2.9` | Updates `bitflags` from 2.11.0 to 2.11.1 - [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.11.0...2.11.1) Updates `clap` from 4.6.0 to 4.6.1 - [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.6.0...clap_complete-v4.6.1) Updates `libc` from 0.2.184 to 0.2.185 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.185/CHANGELOG.md) - [Commits](https://github.com/rust-lang/libc/compare/0.2.184...0.2.185) Updates `uuid` from 1.23.0 to 1.23.1 - [Release notes](https://github.com/uuid-rs/uuid/releases) - [Commits](https://github.com/uuid-rs/uuid/compare/v1.23.0...v1.23.1) Updates `io-uring` from 0.7.11 to 0.7.12 - [Commits](https://github.com/tokio-rs/io-uring/compare/v0.7.11...v0.7.12) Updates `bitfield-struct` from 0.12.1 to 0.13.0 - [Release notes](https://github.com/wrenger/bitfield-struct-rs/releases) - [Commits](https://github.com/wrenger/bitfield-struct-rs/compare/0.12.1...0.13.0) Updates `rand` from 0.10.0 to 0.10.1 - [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/compare/0.10.0...0.10.1) Updates `async-signal` from 0.2.13 to 0.2.14 - [Release notes](https://github.com/smol-rs/async-signal/releases) - [Changelog](https://github.com/smol-rs/async-signal/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/async-signal/compare/v0.2.13...v0.2.14) Updates `cc` from 1.2.59 to 1.2.60 - [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.59...cc-v1.2.60) Updates `fastrand` from 2.3.0 to 2.4.1 - [Release notes](https://github.com/smol-rs/fastrand/releases) - [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/fastrand/compare/v2.3.0...v2.4.1) Updates `js-sys` from 0.3.91 to 0.3.95 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/commits) Updates `libredox` from 0.1.15 to 0.1.16 Updates `openssl-src` from 300.5.5+3.5.5 to 300.6.0+3.6.2 - [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases) - [Commits](https://github.com/alexcrichton/openssl-src-rs/commits) Updates `openssl-sys` from 0.9.112 to 0.9.114 - [Release notes](https://github.com/rust-openssl/rust-openssl/releases) - [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-sys-v0.9.112...openssl-sys-v0.9.114) Updates `pkg-config` from 0.3.32 to 0.3.33 - [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.32...0.3.33) Updates `portable-atomic-util` from 0.2.6 to 0.2.7 - [Release notes](https://github.com/taiki-e/portable-atomic-util/releases) - [Changelog](https://github.com/taiki-e/portable-atomic-util/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/portable-atomic-util/compare/v0.2.6...v0.2.7) Updates `rand_core` from 0.10.0 to 0.10.1 - [Release notes](https://github.com/rust-random/rand_core/releases) - [Changelog](https://github.com/rust-random/rand_core/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/rand_core/compare/v0.10.0...v0.10.1) Updates `wasip2` from 1.0.2+wasi-0.2.9 to 1.0.3+wasi-0.2.9 - [Commits](https://github.com/bytecodealliance/wasi-rs/compare/wasip2-1.0.2...wasip2-1.0.3) Updates `wasm-bindgen` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-macro` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-macro-support` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-shared` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `bitflags` from 2.11.0 to 2.11.1 - [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.11.0...2.11.1) Updates `clap` from 4.6.0 to 4.6.1 - [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.6.0...clap_complete-v4.6.1) Updates `libc` from 0.2.184 to 0.2.185 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.185/CHANGELOG.md) - [Commits](https://github.com/rust-lang/libc/compare/0.2.184...0.2.185) Updates `uuid` from 1.23.0 to 1.23.1 - [Release notes](https://github.com/uuid-rs/uuid/releases) - [Commits](https://github.com/uuid-rs/uuid/compare/v1.23.0...v1.23.1) Updates `rand` from 0.10.0 to 0.10.1 - [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/compare/0.10.0...0.10.1) Updates `cc` from 1.2.59 to 1.2.60 - [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.59...cc-v1.2.60) Updates `fastrand` from 2.3.0 to 2.4.1 - [Release notes](https://github.com/smol-rs/fastrand/releases) - [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/fastrand/compare/v2.3.0...v2.4.1) Updates `js-sys` from 0.3.91 to 0.3.95 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/commits) Updates `pkg-config` from 0.3.32 to 0.3.33 - [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.32...0.3.33) Updates `rand_core` from 0.10.0 to 0.10.1 - [Release notes](https://github.com/rust-random/rand_core/releases) - [Changelog](https://github.com/rust-random/rand_core/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/rand_core/compare/v0.10.0...v0.10.1) Updates `wasip2` from 1.0.2+wasi-0.2.9 to 1.0.3+wasi-0.2.9 - [Commits](https://github.com/bytecodealliance/wasi-rs/compare/wasip2-1.0.2...wasip2-1.0.3) Updates `wasm-bindgen` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-macro` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-macro-support` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) Updates `wasm-bindgen-shared` from 0.2.114 to 0.2.118 - [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases) - [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/wasm-bindgen/wasm-bindgen/compare/0.2.114...0.2.118) --- updated-dependencies: - dependency-name: bitflags dependency-version: 2.11.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: clap dependency-version: 4.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: libc dependency-version: 0.2.185 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: uuid dependency-version: 1.23.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: io-uring dependency-version: 0.7.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: bitfield-struct dependency-version: 0.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: rand dependency-version: 0.10.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: async-signal dependency-version: 0.2.14 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.60 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: fastrand dependency-version: 2.4.1 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: js-sys dependency-version: 0.3.95 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: libredox dependency-version: 0.1.16 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: openssl-src dependency-version: 300.6.0+3.6.2 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: openssl-sys dependency-version: 0.9.114 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: pkg-config dependency-version: 0.3.33 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: portable-atomic-util dependency-version: 0.2.7 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: rand_core dependency-version: 0.10.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasip2 dependency-version: 1.0.3+wasi-0.2.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-macro dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-macro-support dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-shared dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: bitflags dependency-version: 2.11.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: clap dependency-version: 4.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: libc dependency-version: 0.2.185 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: uuid dependency-version: 1.23.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: rand dependency-version: 0.10.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.60 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: fastrand dependency-version: 2.4.1 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: js-sys dependency-version: 0.3.95 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: pkg-config dependency-version: 0.3.33 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: rand_core dependency-version: 0.10.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasip2 dependency-version: 1.0.3+wasi-0.2.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-macro dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-macro-support dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: wasm-bindgen-shared dependency-version: 0.2.118 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
75ed2c9f90 |
vmm: add KVM SEV-SNP support to IGVM loader
Adapt the IGVM loader to work with both MSHV and KVM backends, which differ in page type constants, CPUID page layout, and VMSA handling. Abstract page types into a PageTypeConfig struct populated at runtime from the detected hypervisor, replacing hardcoded mshv_bindings constants. Apply the VMSA register state to each vCPU via setup_sev_snp_regs(), translating SevSelector attributes to KVM segment format using a bitfield decoder. KVM's SNP launch path sanitizes certain CPUID bits that could lead to an insecure guest. If the VMM sets these bits, KVM rejects the CPUID page import on the first attempt, requiring a retry with the firmware-corrected values. Pre-clear the known problematic bits before import to avoid the reject-and-retry cycle: - Leaf 0x1, ECX bit 24: TSC_DEADLINE (filtered by KVM) - Leaf 0x7, EBX bit 1: SGX (filtered by KVM) - Leaf 0x7, EDX: clear entirely (contains speculative features) - Leaf 0x80000008, EBX bit 25: filtered by KVM - Leaf 0x80000021, ECX: clear entirely This keeps the CPUID page stable across launch updates and avoids noisy error logs from the retry path. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Co-authored-by: Dylan Reid <dgreid@fb.com> Signed-off-by: Dylan Reid <dgreid@fb.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
b5ddcdc74a |
hypervisor: handle VcpuExit::MemoryFault for AP boot page conversions
During SNP boot all guest RAM is initially marked KVM_MEMORY_ATTRIBUTE_PRIVATE. Pages imported via SNP_LAUNCH_UPDATE are properly accepted by the guest, but generic RAM pages (e.g. the AP trampoline at GPA 0xD000) are not. When stage0 on the BSP starts secondary vCPUs via x2APIC, the APs try to execute from the trampoline page through the shared mapping while KVM still has it marked private, causing a KVM_EXIT_MEMORY_FAULT (flags=KVM_MEMORY_EXIT_FLAG_PRIVATE) that previously fell through to the catch-all error, killing the VM. Handle VcpuExit::MemoryFault by toggling the page's memory attribute between private and shared based on the exit flags, allowing the vCPU to retry the access. Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
4a0cfa02de |
hypervisor: Handle KVM_HC_MAP_GPA_RANGE hypercalls
SEV-SNP guests will issue this hypercall to signal a change in the page encryption status to the hypervisor. Handle VcpuExit::Hypercall in the KVM vCPU run loop: decode the GPA, page count, and private/shared attribute from the hypercall arguments, then call KVM_SET_MEMORY_ATTRIBUTES to update the page state. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
4b2538f522 |
hypervisor, vmm: Add support for KVM_SEV_SNP_LAUNCH_FINISH
Add the KVM_SEV_SNP_LAUNCH_FINISH ioctl, which finalizes the SNP launch sequence and transitions the VM into a runnable encrypted state. Additionally, add KVM_SEV_SNP_LAUNCH_FINISH to the seccomp allowlist. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
24db5e1efd |
hypervisor, vmm: Add support for KVM_SEV_SNP_LAUNCH_UPDATE
Implement the KVM_SEV_SNP_LAUNCH_UPDATE ioctl. Extend Vm::import_isolated_pages() with a uaddrs parameter carrying host virtual addresses, which KVM needs, unlike MSHV. Compute uaddrs from guest memory mappings in the IGVM loader. Add KVM_SEV_SNP_LAUNCH_UPDATE to the seccomp allowlist. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
2e004521e0 |
hypervisor, vmm: Add KVM SEV_{INIT2, SNP_LAUNCH_START} support
Introduce the SevFd abstraction that wraps /dev/sev and implements the KVM_SEV_INIT2 and KVM_SEV_SNP_LAUNCH_START ioctls for SEV-SNP VM initialization on KVM. Key changes: - Add sev.rs with KvmSevInit and KvmSevSnpLaunchStart ioctl structs matching the kernel layout (linux/arch/x86/include/uapi/asm/kvm.h) - Implement KVM_SEV_INIT2 and KVM_SEV_SNP_LAUNCH_START ioctls - Set KVM_MEMORY_ATTRIBUTE_PRIVATE on newly created memory regions when guest_memfd is supported - Widen SevSnpPageAccessProxy cfg gates from mshv-only to all sev_snp-enabled builds - Make sev_snp_init a required trait method (remove default impl) - Include KVM_SEV_SNP_LAUNCH_START in the seccomp allowlist - Parse VMSA SEV features from IGVM and include them in the KVM_SEV_INIT2 ioctl Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Co-authored-by: Rob Bradford <rbradford@meta.com> Signed-off-by: Rob Bradford <rbradford@meta.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
b545b2fc4e |
hypervisor, vmm: pass SNP guest policy to sev_snp_init
The SNP guest policy (AMD SEV-SNP ABI bits controlling SMT, migration, debug, etc.) was previously hardcoded inside the MSHV implementation. Widen Vm::sev_snp_init() to accept an SnpPolicy parameter so each hypervisor backend receives the policy at init time. Add get_default_sev_snp_guest_policy() in the VMM to construct the default policy. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
8ee0a07ab1 |
arch, hypervisor, vmm: skip vcpu setup when using igvm and kvm
When we use igvm + kvm, we setup the regs and sregs using the cpuid page. We still need to setup the fpu in configure_vcpu. Co-authored-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Alex Orozco <aorozco@google.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
cdbe43f423 |
hypervisor: kvm: Add GUEST_MEMFD and KVM_SET_USER_MEMORY_REGION2 support
Add support for guest_memfd (available in Linux kernel v6.8+), which enables private memory for confidential VMs. Key changes: - Introduce UserMemoryRegion abstraction with guest_memfd fields - Add From impls between kvm_userspace_memory_region2 and UserMemoryRegion - Convert all KVM memory region operations from kvm_userspace_memory_region to kvm_userspace_memory_region2, with automatic fallback to v1 when guest_memfd is not supported - Add set_user_memory_region() wrapper that dispatches to v1/v2 based on kvm_guest_memfd_supported capability - Create guest_memfd via KVM_CREATE_GUEST_MEMFD ioctl when supported - Extend KvmDirtyLogSlot to preserve region2 fields across dirty log start/stop cycles This is prerequisite infrastructure for KVM-based confidential computing that requires private guest memory backed by guest_memfd. Co-authored-by: Alex Orozco <aorozco@google.com> Signed-off-by: Keith Adler <kadler@cloudflare.com> Signed-off-by: Ruben Hakobyan <hruben@meta.com> |
||
|
|
de601c5eaa |
build(deps): bump the non-rust-vmm group across 2 directories with 10 updates
Bumps the non-rust-vmm group with 9 updates in the / directory: | Package | From | To | | --- | --- | --- | | [libc](https://github.com/rust-lang/libc) | `0.2.183` | `0.2.184` | | [signal-hook](https://github.com/vorner/signal-hook) | `0.4.3` | `0.4.4` | | [arc-swap](https://github.com/vorner/arc-swap) | `1.9.0` | `1.9.1` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.58` | `1.2.59` | | [indexmap](https://github.com/indexmap-rs/indexmap) | `2.13.0` | `2.13.1` | | [libz-sys](https://github.com/rust-lang/libz-sys) | `1.1.25` | `1.1.28` | | [semver](https://github.com/dtolnay/semver) | `1.0.27` | `1.0.28` | | [toml_datetime](https://github.com/toml-rs/toml) | `1.1.0+spec-1.1.0` | `1.1.1+spec-1.1.0` | | [toml_edit](https://github.com/toml-rs/toml) | `0.25.8+spec-1.1.0` | `0.25.10+spec-1.1.0` | Bumps the non-rust-vmm group with 8 updates in the /fuzz directory: | Package | From | To | | --- | --- | --- | | [libc](https://github.com/rust-lang/libc) | `0.2.183` | `0.2.184` | | [signal-hook](https://github.com/vorner/signal-hook) | `0.4.3` | `0.4.4` | | [arc-swap](https://github.com/vorner/arc-swap) | `1.9.0` | `1.9.1` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.58` | `1.2.59` | | [indexmap](https://github.com/indexmap-rs/indexmap) | `2.13.0` | `2.13.1` | | [semver](https://github.com/dtolnay/semver) | `1.0.27` | `1.0.28` | | [toml_datetime](https://github.com/toml-rs/toml) | `1.1.0+spec-1.1.0` | `1.1.1+spec-1.1.0` | | [toml_edit](https://github.com/toml-rs/toml) | `0.25.8+spec-1.1.0` | `0.25.10+spec-1.1.0` | Updates `libc` from 0.2.183 to 0.2.184 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.184/CHANGELOG.md) - [Commits](https://github.com/rust-lang/libc/compare/0.2.183...0.2.184) Updates `signal-hook` from 0.4.3 to 0.4.4 - [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/signal-hook/compare/v0.4.3...v0.4.4) Updates `arc-swap` from 1.9.0 to 1.9.1 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.9.0...v1.9.1) Updates `cc` from 1.2.58 to 1.2.59 - [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.58...cc-v1.2.59) Updates `indexmap` from 2.13.0 to 2.13.1 - [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.13.0...2.13.1) Updates `libz-sys` from 1.1.25 to 1.1.28 - [Release notes](https://github.com/rust-lang/libz-sys/releases) - [Commits](https://github.com/rust-lang/libz-sys/compare/1.1.25...1.1.28) Updates `semver` from 1.0.27 to 1.0.28 - [Release notes](https://github.com/dtolnay/semver/releases) - [Commits](https://github.com/dtolnay/semver/compare/1.0.27...1.0.28) Updates `toml_datetime` from 1.1.0+spec-1.1.0 to 1.1.1+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v1.1.0...toml_datetime-v1.1.1) Updates `toml_edit` from 0.25.8+spec-1.1.0 to 0.25.10+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/v0.25.8...v0.25.10) Updates `toml_parser` from 1.1.0+spec-1.1.0 to 1.1.2+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.1.0...toml_parser-v1.1.2) Updates `libc` from 0.2.183 to 0.2.184 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.184/CHANGELOG.md) - [Commits](https://github.com/rust-lang/libc/compare/0.2.183...0.2.184) Updates `signal-hook` from 0.4.3 to 0.4.4 - [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/signal-hook/compare/v0.4.3...v0.4.4) Updates `arc-swap` from 1.9.0 to 1.9.1 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.9.0...v1.9.1) Updates `cc` from 1.2.58 to 1.2.59 - [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.58...cc-v1.2.59) Updates `indexmap` from 2.13.0 to 2.13.1 - [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.13.0...2.13.1) Updates `semver` from 1.0.27 to 1.0.28 - [Release notes](https://github.com/dtolnay/semver/releases) - [Commits](https://github.com/dtolnay/semver/compare/1.0.27...1.0.28) Updates `toml_datetime` from 1.1.0+spec-1.1.0 to 1.1.1+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v1.1.0...toml_datetime-v1.1.1) Updates `toml_edit` from 0.25.8+spec-1.1.0 to 0.25.10+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/v0.25.8...v0.25.10) Updates `toml_parser` from 1.1.0+spec-1.1.0 to 1.1.2+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.1.0...toml_parser-v1.1.2) --- updated-dependencies: - dependency-name: libc dependency-version: 0.2.184 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: signal-hook dependency-version: 0.4.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.9.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.59 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: indexmap dependency-version: 2.13.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: libz-sys dependency-version: 1.1.28 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: semver dependency-version: 1.0.28 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_datetime dependency-version: 1.1.1+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_edit dependency-version: 0.25.10+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_parser dependency-version: 1.1.2+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: libc dependency-version: 0.2.184 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: signal-hook dependency-version: 0.4.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.9.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.59 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: indexmap dependency-version: 2.13.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: semver dependency-version: 1.0.28 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_datetime dependency-version: 1.1.1+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_edit dependency-version: 0.25.10+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_parser dependency-version: 1.1.2+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
f7f9895d57 |
hypervisor: kvm: preserve guest MTRR MSRs
KVM_GET_MSR_INDEX_LIST does not consistently include all guest-programmable MTRR MSRs. During save/restore while booting, the VMM initially sets only MSR_MTRRdefType, then guest firmware or other early boot code can program additional MTRR state before the snapshot is taken. If those MSRs are missing from the vCPU MSR buffer, snapshot omits part of the guest's MTRR configuration and restore resumes with an incomplete MTRR map. Add the guest-programmable MTRR MSRs to the KVM MSR index list used to build the vCPU MSR buffer so the existing snapshot/restore path preserves the guest's MTRR state. On-behalf-of: SAP leander.kohler@sap.com Signed-off-by: Leander Kohler <leander.kohler@cyberus-technology.de> |
||
|
|
7832401816 |
hypervisor: Add GHCB CPUID, MSR and TERM_REQ handlers
When booting an SEV-SNP guest VM using IGVM with -pvalidate_opt 1 (lazy
page acceptance), the guest kernel's #VC exception handler may issue
VMGEXIT with SVM_EXIT_CPUID (0x72) or SVM_EXIT_MSR (0x7c) exit codes
via the GHCB page protocol. The hypervisor had no handlers for these
exit codes, causing the guest's #VC handler to fail and trigger
sev_es_terminate(), which sends GHCB_MSR_TERM_REQ (0x100). The
hypervisor then panicked on the unhandled 0x100 operation.
Add the following handlers to the GHCB VMGEXIT processing:
- SVM_EXIT_CPUID (0x72): Read function/index/xcr0/xss from the GHCB
page and return CPUID results via get_cpuid_values().
- SVM_EXIT_MSR (0x7c): Handle MSR read (RDMSR) and write (WRMSR)
requests from the guest via the GHCB page protocol.
- GHCB_MSR_TERM_REQ (0x100): Decode reason_set and reason_val from the
GHCB MSR and return an error instead of panicking, allowing graceful
error propagation.
Testing:
Reproducer (on Azure DC16as_cc_v5, /dev/mshv):
cloud-hypervisor --cpus boot=1,nested=off --memory size=512M \
--disk path=osdisk.img path=cloudinit \
--net "tap=,mac=12:34:56:78:90:06,ip=192.168.6.1,mask=255.255.255.128" \
--serial null --console pty \
--api-socket /tmp/ch.sock \
--igvm /igvm_files/linux-ttyS0.bin \
--host-data <hash> --platform sev_snp=on -v
Before fix:
thread 'vcpu0' panicked at hypervisor/src/mshv/mod.rs:1207:30:
Unsupported VMGEXIT operation: 100
After fix: VM boots successfully to login prompt with no panics.
All virtio devices (console, rng, disks) activate normally.
No regression risk for non-SEV-SNP: all new code is within the
HVMSG_X64_SEV_VMGEXIT_INTERCEPT handler which is only reached for
SEV-SNP guests.
Signed-off-by: Souradeep Chakrabarti <schakrabarti@microsoft.com>
|
||
|
|
7e0f8f7163 |
build: Bump the non-rust-vmm group across 2 directories with 10 updates
Bumps the non-rust-vmm group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [env_logger](https://github.com/rust-cli/env_logger) | `0.11.9` | `0.11.10` | | [arc-swap](https://github.com/vorner/arc-swap) | `1.8.2` | `1.9.0` | | [env_filter](https://github.com/rust-cli/env_logger) | `1.0.0` | `1.0.1` | | [terminal_size](https://github.com/eminence/terminal-size) | `0.4.3` | `0.4.4` | | [toml_datetime](https://github.com/toml-rs/toml) | `1.0.1+spec-1.1.0` | `1.1.0+spec-1.1.0` | | [toml_edit](https://github.com/toml-rs/toml) | `0.25.5+spec-1.1.0` | `0.25.8+spec-1.1.0` | Bumps the non-rust-vmm group with 3 updates in the /fuzz directory: [arc-swap](https://github.com/vorner/arc-swap), [toml_datetime](https://github.com/toml-rs/toml) and [toml_edit](https://github.com/toml-rs/toml). Updates `env_logger` from 0.11.9 to 0.11.10 - [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.9...v0.11.10) Updates `arc-swap` from 1.8.2 to 1.9.0 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.8.2...v1.9.0) Updates `anstream` from 0.6.21 to 1.0.0 - [Commits](https://github.com/rust-cli/anstyle/compare/anstream-v0.6.21...anstream-v1.0.0) Updates `anstyle-parse` from 0.2.7 to 1.0.0 - [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-parse-v0.2.7...anstyle-parse-v1.0.0) Updates `env_filter` from 1.0.0 to 1.0.1 - [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-v1.0.0...env_filter-v1.0.1) Updates `terminal_size` from 0.4.3 to 0.4.4 - [Release notes](https://github.com/eminence/terminal-size/releases) - [Commits](https://github.com/eminence/terminal-size/compare/v0.4.3...v0.4.4) Updates `toml_datetime` from 1.0.1+spec-1.1.0 to 1.1.0+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v1.0.1...toml_datetime-v1.1.0) Updates `toml_edit` from 0.25.5+spec-1.1.0 to 0.25.8+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/v0.25.5...v0.25.8) Updates `toml_parser` from 1.0.10+spec-1.1.0 to 1.1.0+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.0.10...toml_parser-v1.1.0) Updates `windows-sys` from 0.60.2 to 0.61.2 - [Release notes](https://github.com/microsoft/windows-rs/releases) - [Commits](https://github.com/microsoft/windows-rs/commits) Updates `arc-swap` from 1.8.2 to 1.9.0 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.8.2...v1.9.0) Updates `toml_datetime` from 1.0.1+spec-1.1.0 to 1.1.0+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v1.0.1...toml_datetime-v1.1.0) Updates `toml_edit` from 0.25.5+spec-1.1.0 to 0.25.8+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/v0.25.5...v0.25.8) Updates `toml_parser` from 1.0.10+spec-1.1.0 to 1.1.0+spec-1.1.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.0.10...toml_parser-v1.1.0) --- updated-dependencies: - dependency-name: env_logger dependency-version: 0.11.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: anstream dependency-version: 1.0.0 dependency-type: indirect update-type: version-update:semver-major dependency-group: non-rust-vmm - dependency-name: anstyle-parse 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.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: terminal_size dependency-version: 0.4.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_datetime dependency-version: 1.1.0+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: toml_edit dependency-version: 0.25.8+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_parser dependency-version: 1.1.0+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: windows-sys dependency-version: 0.61.2 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.9.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: toml_datetime dependency-version: 1.1.0+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: toml_edit dependency-version: 0.25.8+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: toml_parser dependency-version: 1.1.0+spec-1.1.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
e05065f509 |
build: Bump rust-vmm dependencies
Bump to the released versions that are compatible wherever possible but for the vhost and vfio crates they are git hashes as no releases with compatible versions have yet been made. Signed-off-by: Rob Bradford <rbradford@meta.com> |
||
|
|
e265543e3c |
misc: make MSRV workspace-wide for cloud-hypervisor dependencies
Moves the MSRV requirement to the workspace and expands it to all cloud-hypervisor dependencies and dev-dependencies. This improves discoverability for new contributors working on crates other than the cloud-hypervisor itself and creates consistency regarding the MSRV of cloud-hypervisor dependencies. Functionally, this doesn't change anything for dependencies of the cloud-hypervisor crate as the MSRV requirement is already enforced by CI when building the cloud-hypervisor with the MSRV versioned compiler. On-behalf-of: SAP julian.schindel@sap.com Signed-off-by: Julian Schindel <julian.schindel@cyberus-technology.de> |
||
|
|
001adbe15a |
hypervisor: mshv: cleanup unneeded Arc
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> On-behalf-of: SAP philipp.schuster@sap.com |
||
|
|
a747e2b72a |
hypervisor: kvm: cleanup unneeded Arc
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> On-behalf-of: SAP philipp.schuster@sap.com |
||
|
|
a94fa554c3 |
hypervisor: kvm: Fix nightly rustfmt import ordering
Nightly rustfmt now prefers `self` re-exports inline rather
than a separate 'pub use {kvm_bindings, kvm_ioctls}' line.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
|
||
|
|
68f746fbea |
hypervisor: mshv: use the new default partition args function
The 0.6.7 version of the mshv crates introduced a new version of make_default_partition_create_arg inside `struct Mshv`. This version queries the available processor features on the host and gives the same feature set to the guests. Move Cloud Hypervisor to this new function. Signed-off-by: Anirudh Rayabharam <anrayabh@microsoft.com> |
||
|
|
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> |
||
|
|
ff4c8f7480 |
hypervisor: mshv: handle Special Debug Print VMG exit
Add handling for GHCB_INFO_SPECIAL_DBGPRINT VMG exit in the SEV-SNP guest exit handler. This exit occurs when the guest sends debug print requests through the GHCB interface. Without this handler, SEV-SNP guests fail to boot when debug output is triggered, such as when a debugger is attached to the guest image. The handler acknowledges the exit without printing to avoid performance degradation from frequent debug print requests. Signed-off-by: Muminul Islam <muislam@microsoft.com> |
||
|
|
caa362c31f |
hypervisor: mshv: stub implementation for save_data_tables()
Provide a stub implementation for save_data_tables() to unblock pause functionality. Without this, pausing a VM causes Cloud Hypervisor to panic due to the unimplemented!() macro. This unblocks the test_api_http_pause_resume testcase. We don't need to save any state just to pause and resume. Signed-off-by: Anirudh Rayabharam <anrayabh@microsoft.com> |
||
|
|
2c49f4f4f3 |
hypervisor: Add an unreachable arm to get/set_x86_64_reg
This is useful when neither kvm nor mshv is defined. Signed-off-by: Wei Liu <liuwe@microsoft.com> |
||
|
|
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> |
||
|
|
57fd672db6 |
build: Bump the non-rust-vmm group across 2 directories with 14 updates
Bumps the non-rust-vmm group with 10 updates in the / directory: | Package | From | To | | --- | --- | --- | | [clap](https://github.com/clap-rs/clap) | `4.5.54` | `4.5.56` | | [zerocopy](https://github.com/google/zerocopy) | `0.8.34` | `0.8.37` | | [arc-swap](https://github.com/vorner/arc-swap) | `1.8.0` | `1.8.1` | | [getrandom](https://github.com/rust-random/getrandom) | `0.3.4` | `0.4.0` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.54` | `1.2.55` | | [openssl-src](https://github.com/alexcrichton/openssl-src-rs) | `300.5.4+3.5.4` | `300.5.5+3.5.5` | | [portable-atomic](https://github.com/taiki-e/portable-atomic) | `1.13.0` | `1.13.1` | | [portable-atomic-util](https://github.com/taiki-e/portable-atomic) | `0.2.4` | `0.2.5` | | [slab](https://github.com/tokio-rs/slab) | `0.4.11` | `0.4.12` | | [zmij](https://github.com/dtolnay/zmij) | `1.0.17` | `1.0.19` | Bumps the non-rust-vmm group with 5 updates in the /fuzz directory: | Package | From | To | | --- | --- | --- | | [clap](https://github.com/clap-rs/clap) | `4.5.54` | `4.5.56` | | [zerocopy](https://github.com/google/zerocopy) | `0.8.34` | `0.8.37` | | [arc-swap](https://github.com/vorner/arc-swap) | `1.8.0` | `1.8.1` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.54` | `1.2.55` | | [zmij](https://github.com/dtolnay/zmij) | `1.0.17` | `1.0.19` | Updates `clap` from 4.5.54 to 4.5.56 - [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.54...clap_complete-v4.5.56) Updates `zerocopy` from 0.8.34 to 0.8.37 - [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.34...v0.8.37) Updates `arc-swap` from 1.8.0 to 1.8.1 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.8.0...v1.8.1) Updates `getrandom` from 0.3.4 to 0.4.0 - [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/getrandom/compare/v0.3.4...v0.4.0) Updates `cc` from 1.2.54 to 1.2.55 - [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.54...cc-v1.2.55) Updates `clap_builder` from 4.5.54 to 4.5.56 - [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.54...v4.5.56) Updates `find-msvc-tools` from 0.1.8 to 0.1.9 - [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.8...find-msvc-tools-v0.1.9) Updates `hashbrown` from 0.16.1 to 0.15.5 - [Release notes](https://github.com/rust-lang/hashbrown/releases) - [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/hashbrown/compare/v0.16.1...v0.15.5) Updates `openssl-src` from 300.5.4+3.5.4 to 300.5.5+3.5.5 - [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases) - [Commits](https://github.com/alexcrichton/openssl-src-rs/commits) Updates `portable-atomic` from 1.13.0 to 1.13.1 - [Release notes](https://github.com/taiki-e/portable-atomic/releases) - [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/portable-atomic/compare/v1.13.0...v1.13.1) Updates `portable-atomic-util` from 0.2.4 to 0.2.5 - [Release notes](https://github.com/taiki-e/portable-atomic/releases) - [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/portable-atomic/compare/portable-atomic-util-0.2.4...portable-atomic-util-0.2.5) Updates `slab` from 0.4.11 to 0.4.12 - [Release notes](https://github.com/tokio-rs/slab/releases) - [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/slab/compare/v0.4.11...v0.4.12) Updates `zerocopy-derive` from 0.8.34 to 0.8.37 - [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.34...v0.8.37) Updates `zmij` from 1.0.17 to 1.0.19 - [Release notes](https://github.com/dtolnay/zmij/releases) - [Commits](https://github.com/dtolnay/zmij/compare/1.0.17...1.0.19) Updates `clap` from 4.5.54 to 4.5.56 - [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.54...clap_complete-v4.5.56) Updates `zerocopy` from 0.8.34 to 0.8.37 - [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.34...v0.8.37) Updates `arc-swap` from 1.8.0 to 1.8.1 - [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md) - [Commits](https://github.com/vorner/arc-swap/compare/v1.8.0...v1.8.1) Updates `cc` from 1.2.54 to 1.2.55 - [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.54...cc-v1.2.55) Updates `clap_builder` from 4.5.54 to 4.5.56 - [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.54...v4.5.56) Updates `find-msvc-tools` from 0.1.8 to 0.1.9 - [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.8...find-msvc-tools-v0.1.9) Updates `zerocopy-derive` from 0.8.34 to 0.8.37 - [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.34...v0.8.37) Updates `zmij` from 1.0.17 to 1.0.19 - [Release notes](https://github.com/dtolnay/zmij/releases) - [Commits](https://github.com/dtolnay/zmij/compare/1.0.17...1.0.19) --- updated-dependencies: - dependency-name: clap dependency-version: 4.5.56 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zerocopy dependency-version: 0.8.37 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.8.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: getrandom dependency-version: 0.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.55 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: clap_builder dependency-version: 4.5.56 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: find-msvc-tools dependency-version: 0.1.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: hashbrown dependency-version: 0.15.5 dependency-type: indirect update-type: version-update:semver-minor dependency-group: non-rust-vmm - dependency-name: openssl-src dependency-version: 300.5.5+3.5.5 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: portable-atomic dependency-version: 1.13.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: portable-atomic-util dependency-version: 0.2.5 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: slab dependency-version: 0.4.12 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zerocopy-derive dependency-version: 0.8.37 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zmij dependency-version: 1.0.19 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: clap dependency-version: 4.5.56 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zerocopy dependency-version: 0.8.37 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: arc-swap dependency-version: 1.8.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: cc dependency-version: 1.2.55 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: clap_builder dependency-version: 4.5.56 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: find-msvc-tools dependency-version: 0.1.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zerocopy-derive dependency-version: 0.8.37 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm - dependency-name: zmij dependency-version: 1.0.19 dependency-type: indirect update-type: version-update:semver-patch dependency-group: non-rust-vmm ... Signed-off-by: dependabot[bot] <support@github.com> |