Muminul Islam
ef3fad8388
hypervisor: mshv: Implement CPU state for MshvVcpu
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
2b42f6c835
hypervisor: mhsv: Implement CPU run loop
...
Handle CPU exits, adding instruction emulations.
Keep CPU specific data inside vmm for later use.
Co-Developed-by: Nuno Das Neves <nudasnev@microsoft.com >
Signed-off-by: Nuno Das Neves <nudasnev@microsoft.com >
Co-Developed-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Praveen Paladugu <prapal@microsoft.com >
Co-Developed-by: Samuel Ortiz <sameo@linux.intel.com >
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
7acb5c6437
hypervisor, mshv: Define MshvEmulatorContext
...
This patch adds the definition and implementation
MshvEmulatorContext which is platform emulation for Hyper-V.
Co-Developed-by: Samuel Ortiz <sameo@linux.intel.com >
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
63f356b75b
hypervisor: mhsv: Define software emulated TLB
...
A software emulated TLB. This is mostly used by
the instruction emulator to cache gva to gpa
translations passed from the hypervisor.
Co-Developed-by: Nuno Das Neves <nudasnev@microsoft.com >
Signed-off-by: Nuno Das Neves <nudasnev@microsoft.com >
Co-Developed-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Praveen Paladugu <prapal@microsoft.com >
Co-Developed-by: Samuel Ortiz <sameo@linux.intel.com >
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
fd0ef6cfb5
hypervisor: mshv: Emulate IrqFd and IOEventFd for mshv module
...
We don't have IrqFd and IOEventFd support in the kernel for now.
So an emulation layer is needed. In the future, we will be adding this
support in the kernel.
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
286a23fbd4
hypervisor: mshv: Add vmmops to MshvVm struct
...
vmmops trait object is needed to get access some
of the upper level vmm functionalities i.e guest
memory access, IO read write etc.
Co-Developed-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
3a93487b82
hypervisor: mshv: Add Microsoft Hypervisor specific data to Mshv{Vm,Vcpu}
...
Adding hv_state (hyperv state) to Vm and Vcpu struct for mshv.
This state is needed to keep some kernel data(for now hypercall page)
in the vmm.
Co-Developed-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
23c46b162e
hypervisor, vmm: Implement the mshv module and add mshv support in vmm
...
Implement hypervisor, Vm, Vcpu crate at a minimal
functionalities. Also adds the mshv feature gate,
separates out the functionalities between kvm and
mshv inside the vmm crate.
Co-Developed-by: Nuno Das Neves <nudasnev@microsoft.com >
Signed-off-by: Nuno Das Neves <nudasnev@microsoft.com >
Co-Developed-by: Praveen Paladugu <prapal@microsoft.com >
Signed-off-by: Praveen Paladugu <prapal@microsoft.com >
Co-Developed-by: Samuel Ortiz <sameo@linux.intel.com >
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
f4af668d76
hypervisor, vmm: Implement MsiInterruptOps for mshv
...
Co-Developed-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
7fe5d276a3
hypervisor: mshv: Add x86_64 module
...
Add x86_64 specific definitions as we only plan
to support x86_64 for the moment.
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
e664fa386b
hypervisor: Modify toml file to add mshv-{bindings, ioctls) crates
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
9919dec1d9
hypervisor: Introduce mshv module in the hypervisor
...
This is the initial folder structure of the mshv module inside
the hypervisor crate. The aim of this module is to support Microsoft
Hyper-V as a supported Hypervisor.
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
Muminul Islam
9ce6c3b75c
hypervisor, vmm: Feature guard KVM specific code
...
There are some code base and function which are purely KVM specific for
now and we don't have those supports in mshv at the moment but we have plan
for the future. We are doing a feature guard with KVM. For example, KVM has
mp_state, cpu clock support, which we don't have for mshv. In order to build
those code we are making the code base for KVM specific compilation.
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-09 14:55:20 +01:00
dependabot-preview[bot]
47f59409db
build(deps): bump anyhow from 1.0.34 to 1.0.35
...
Bumps [anyhow](https://github.com/dtolnay/anyhow ) from 1.0.34 to 1.0.35.
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.34...1.0.35 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-08 09:01:03 +00:00
dependabot-preview[bot]
b51f112629
build(deps): bump libc from 0.2.80 to 0.2.81
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.80 to 0.2.81.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.80...0.2.81 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-08 08:13:51 +00:00
dependabot-preview[bot]
d158fa8de2
build(deps): bump linux-loader from 3cf96c5 to acf9c21
...
Bumps [linux-loader](https://github.com/rust-vmm/linux-loader ) from `3cf96c5` to `acf9c21`.
- [Release notes](https://github.com/rust-vmm/linux-loader/releases )
- [Commits](3cf96c53ed...acf9c21591 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-08 08:13:27 +00:00
dependabot-preview[bot]
c64de38140
build(deps): bump syn from 1.0.53 to 1.0.54
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.53 to 1.0.54.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.53...1.0.54 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-07 22:10:21 +00:00
Rob Bradford
9594ecec0d
build: Only pull in iced-x86 for x86_64 builds
...
Fixes : #2024
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-07 17:42:42 +00:00
Anatol Belski
6c0c47a530
docs/windows.md: Add explicit note on how to start WinDbg
...
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2020-12-07 16:56:00 +00:00
Wei Liu
6d38612f6c
hypervisor: x86: move RFLAGS bits to regs.rs
...
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Wei Liu
a44d96c9cc
hypervisor: emulator: switch to use vec in MockVMM
...
The customized hashmap macro can't be lifted to common MockVMM code.
MockVMM only needs a collection to iterate over to get initial register
states. A vector is just as good as a hashmap.
Switch to use a vector to store initial register states. This allows us
to drop the hashmap macro everywhere.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Wei Liu
93b7dcac12
hypervisor: emulator: emulate CMP
...
Unfortunately Rust stable does not yet have inline ASM support the flag
calculation will have to be implemented in software.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Wei Liu
dd3844a892
hypervisor: emulator: drop imm_op macro
...
It is not needed anymore.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Wei Liu
0c3ef986fa
hypervisor: emulator: rewrite MOV emulation with get/set_op
...
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Wei Liu
53c3b00fb0
hypervisor: emulator: introduce get/set_op
...
Provide two helpers to get and set operands. This reduces repetition.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-07 14:35:35 +01:00
Rob Bradford
03b824be0b
build: Disable fast failing for build actions
...
nightly / beta are not required actions but if they fail then all other
builds will be cancelled and so prevent the PR from being cleared as
buildable.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-07 12:36:38 +00:00
dependabot-preview[bot]
558975aa51
build(deps): bump serde_derive from 1.0.117 to 1.0.118
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.117 to 1.0.118.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.117...v1.0.118 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-07 09:22:13 +00:00
dependabot-preview[bot]
d78b9bd287
build(deps): bump smallvec from 1.5.0 to 1.5.1
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.5.0...v1.5.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-07 09:08:31 +00:00
dependabot-preview[bot]
365d39ca2c
build(deps): bump serde from 1.0.117 to 1.0.118
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.117 to 1.0.118.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.117...v1.0.118 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-07 08:36:52 +00:00
Muminul Islam
d79594aa3f
scripts: dev_cli: Remove unnecessary spaces
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-05 00:01:41 +01:00
Muminul Islam
27b5f8d7e3
scripts: Add an option to accept hypervisor argument
...
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2020-12-05 00:01:41 +01:00
Rob Bradford
2cc312b65c
build: Fix cargo fuzz build
...
Unfortunately it seems patch entries are ignored when obtaining
dependencies from another workspace.
Remove the problematic kvm-ioctls and kvm-bindings patch entries and use
the forked repository directly.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-04 11:38:44 +00:00
dependabot-preview[bot]
d416271457
build(deps): bump cc from 1.0.65 to 1.0.66
...
Bumps [cc](https://github.com/alexcrichton/cc-rs ) from 1.0.65 to 1.0.66.
- [Release notes](https://github.com/alexcrichton/cc-rs/releases )
- [Commits](https://github.com/alexcrichton/cc-rs/compare/1.0.65...1.0.66 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-04 10:51:49 +00:00
Rob Bradford
9e6a023f7f
vmm: Don't continue to lookup debug I/O port
...
When using an PIO write to 0x80 which is a special case handle that and
then return without going through the resolve.
This removes an extra warning that is reported.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-03 07:25:42 -08:00
Wei Liu
90ae4676c8
hypervisor: x86: emulator: drop unneeded curly brackets
...
There is no need to have a pair of curly brackets for structures without
any member.
No functional change.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-03 14:52:00 +01:00
dependabot-preview[bot]
89bc413add
build(deps): bump serde_json from 1.0.59 to 1.0.60
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.59...v1.0.60 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com >
2020-12-03 13:50:29 +00:00
Wei Liu
c352b59857
hypervisor: emulator: drop InstructionMap
...
It is not needed anymore.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-02 19:45:36 +01:00
Wei Liu
ab89b48143
hypervisor: emulator: use static mapping to dispatch emulation
...
The mapping between code and its handler is static. We can drop the
HashMap in favour of a static match expression.
This has two benefits:
1. No more memory allocation and deallocation for the HashMap.
2. Shorter look-up time.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-12-02 19:45:36 +01:00
Rob Bradford
ffaab46934
misc: Use a more relaxed memory model when possible
...
When a total ordering between multiple atomic variables is not required
then use Ordering::Acquire with atomic loads and Ordering::Release with
atomic stores.
This will improve performance as this does not require a memory fence
on x86_64 which Ordering::SeqCst will use.
Add a comment to the code in the vCPU handling code where it operates on
multiple atomics to explain why Ordering::SeqCst is required.
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-02 19:04:30 +01:00
Rob Bradford
280d4fb245
vmm: Include device tree in vm.info API
...
The DeviceNode cannot be fully represented as it embeds a Rust style
enum (i.e. with data) which is instead represented by a simple
associative array.
Fixes : #1167
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-01 16:44:25 +01:00
Samuel Ortiz
15f0451c34
hypervisor: emulator: Format instructions on error paths
...
Formatting instructions might be costly, so we only want to do that on
the emulation error paths.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
2020-12-01 11:13:54 +01:00
Samuel Ortiz
3fa6e17cc4
hypervisor: x86: Make imm_op available to all emulated instructions
...
By moving it to the instructions root module.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
2020-12-01 11:13:54 +01:00
Wei Liu
e2c81f9ed8
hypervisor: x86: Extend the imm_op() macro
...
To support every kind of immediate operands.
Signed-off-by: Wei Liu <liuwe@microsoft.com >
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
2020-12-01 11:13:54 +01:00
Rob Bradford
ead8453120
build: Remove vhost_user_fs
...
This has been superseded by virtiofsd-rs.
Fixes : #2013
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-01 11:13:21 +01:00
Rob Bradford
c4ebe83576
rpm: Update .spec file to not reference vhost_user_fs
...
Fixes : #2013
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-01 11:13:21 +01:00
Rob Bradford
1908f488c3
tests: Move tests from vhost_user_fs to virtiofsd-rs
...
Download and build virtiofsd-rs and then use that in the integration
test suite.
Fixes : #2013
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-01 11:13:21 +01:00
Rob Bradford
593a958fe5
pci, vmm: Include VFIO devices in device tree
...
Fixes : #1687
Signed-off-by: Rob Bradford <robert.bradford@intel.com >
2020-12-01 10:49:04 +01:00
Wei Liu
ba71390d6a
hypervisor: drop arc-swap dependency
...
It is no longer needed after 0fec32658 .
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2020-11-30 16:47:32 +00:00
Samuel Ortiz
f6892f2ede
hypervisor: emulator: Add a negative instruction fetch unit test
...
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
2020-11-30 13:09:19 +00:00
Samuel Ortiz
251434862f
hypervisor: emulator: Fix logic bug in MockVMM
...
emulate_first_insn() really means we want only the first instruction to
be emulated.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com >
2020-11-30 13:09:19 +00:00