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
Samuel Ortiz
1ac4c42a84
hypervisor: emulator: Add initial fetch support
...
When the x86 instruction decoder tells us about some missing bytes from
the instruction stream, we call into the platform fetch method and
emulate one last instruction.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
Samuel Ortiz
7dc92d1dac
hypervisor: emulator: Decoding loop restructuring
...
In preparation for the instruction fetching step, we modify the decoding
loop so that we can check what the last decoding error is.
We also switch to explictly using decode_out() which removes a 32 bytes
copy compared to decode().
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
Samuel Ortiz
7a4edecd29
hypervisor: x86: Add an address linearization method to CpuStateManager
...
From a CPU state and a segment, we can translate a logical (segmented)
address into a linear one.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
Samuel Ortiz
d419e30df1
hypervisor: x86: Add a SegmentRegistorOps trait
...
In order to validate emulated memory accesses, we need to be able to get
all the segments descriptor attributes.
This is done by abstracting the SegmentRegister attributes through a
trait that each hypervisor will have to implement.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
Samuel Ortiz
3faffcb087
hypervisor: emulator: Add a CPU mode getter to CpuStateManager
...
We need to be able to build the CPU mode from its state in order to
start implementing mode related checks in the x86 emulator.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
Samuel Ortiz
b3a1f5f1be
hypervisor: Start moving register definitions to the hypervisor crate
...
Most of arch/src/x86_64/regs.rs will eventually move unde
hypervisor/src/x86/regs.rs.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-30 13:09:19 +00:00
dependabot-preview[bot]
2bc5119730
build(deps): bump syn from 1.0.52 to 1.0.53
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.52 to 1.0.53.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.52...1.0.53 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-30 09:09:26 +00:00
dependabot-preview[bot]
5100bc94cc
build(deps): bump syn from 1.0.51 to 1.0.52
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.51 to 1.0.52.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.51...1.0.52 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-28 00:28:08 +00:00
dependabot-preview[bot]
6bf9fe487b
build(deps): bump pnet from 0.26.0 to 0.27.2
...
Bumps [pnet](https://github.com/libpnet/libpnet ) from 0.26.0 to 0.27.2.
- [Release notes](https://github.com/libpnet/libpnet/releases )
- [Commits](https://github.com/libpnet/libpnet/compare/v0.26.0...v0.27.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-27 23:56:02 +00:00
Rob Bradford
d1a23d9085
docs: Add instructions for using perf
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-27 19:19:14 +01:00
Rob Bradford
05f785fa88
build: Move timeouts to integration test blocks
...
If we rely on timeouts at the top level we can get builds being aborted
simply because they took too long to be scheduled rather than because
the actual integration tests took too long.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-27 19:18:39 +01:00
Samuel Ortiz
a3d957ba4d
hypervisor: emulator: Clean the MockVMM initialization path
...
Separate the standalone _init_and_run() function into 2 MockVMM methods:
new() and emulate_insn().
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-27 19:17:35 +01:00
Samuel Ortiz
5bd63efa45
hypervisor: emulator: Move MockVMM into a shared test module
...
The MockVMM platform will be used by other instructions emulation
implementations, but also by the emulator framework.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2020-11-27 19:17:35 +01:00
Wei Liu
66b001665f
hypervisor: x86: only calculate address when necessary in MOV emulation
...
Only calculate the address when the operand is memory.
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2020-11-26 16:12:23 +01:00
Wei Liu
c6aea5af5d
hypervisor: x86: drop an extraneous box indirection
...
There is no need to put a box into another box.
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2020-11-26 12:02:47 +00:00
Wei Liu
c8b655490e
hypervisor: x86: reference PlatformEmulator in Emulator
...
The observation here is PlatformEmulator can be seen as the context for
emulation to take place. It should be rather easy to construct a context
that satisfies the lifetime constraints for instruction emulation.
The thread doing the emulation will have full ownership over the
context, so this removes the need to wrap PlatformEmulator in Arc and
Mutex, as well as the need for the context to be either Clone or Copy.
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2020-11-26 12:14:40 +01:00
Rob Bradford
72741c557a
actions: Add "--all --tests" to clippy in quality action
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
b2608ca285
vmm: cpu: Fix clippy issues inside test
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
74fe032827
vm-device: bus: Fix clippy issues inside tests
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
40a2e3b462
vhost_user_block: Fix clippy issue
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
abc6672f21
qcow: Fix clippy issues inside tests
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
053c9e4d73
devices: serial: Fix clippy issues inside tests
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
9ea19852b5
arch: x86_64: Fix clippy issues inside tests
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
Rob Bradford
9871ff454b
arch_gen: mpspec: Fix clippy issues inside tests
...
Found by: cargo clippy --all-features --all --tests
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-26 09:32:46 +01:00
dependabot-preview[bot]
e817b4f36c
build(deps): bump crossbeam-utils from 0.8.0 to 0.8.1
...
Bumps [crossbeam-utils](https://github.com/crossbeam-rs/crossbeam ) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases )
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md )
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-utils-0.8.0...crossbeam-utils-0.8.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-26 08:32:02 +00:00
Rob Bradford
6f63cd00eb
vmm: device_manager: Remove ActivatedBackend struct
...
This was used for vhost-user self spawning but no longer has any users.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-11-25 20:47:43 +01:00
Wei Liu
a6ad85dc40
hypervisor: x86: handle more registers in emulator
...
List all GPRs documented in Intel's SDM.
Signed-off-by: Wei Liu <liuwe@microsoft.com>
2020-11-25 20:18:40 +01:00