Verification of Bhyve's instruction emulation

Project title

Test harness for instruction emulation code using Intel XED(x86 encoder decoder) tool.

Project description & Approach to solving the problem

Bhyve is a type 2 hypervisor which supports guest virtual machines by coordinating calls for CPU, memory, disk, network and other resources through the physical host's operating system. It runs guest operating system inside a virtual machine (parameters like number of virtual CPUs, amount of guest memory and input output connectivity can be specified with command line parameter). Bhyve needs to perform instruction emulation which are not tested yet, some examples being :

and many more instructions. Since XED (x86 Encoder Decoder) provides a list of encoding/decoding options like :

where hex-string is a string of hex-code for that instruction which we want to decode. After decoding it needs to produce a data structure describing the opcode, operands and flags by passing such arguements in XED. The main purpose of this project is to provide tests for bhyve instructions. The tests are tiny guest operating system that generally execute few lines of code in C language and assembler (x86, IA-32 instructions set and intel 64 instructions set) test code in order to obtain its SUCCESS/FAILURE result. All the tests written for this project needs to be automated, so that anyone can verify it within a short span of time and I will try to maintain the accuracy and efficiency of the algorithm required for testing. I will make sure that at the end of this project my solution would be an optimal one. As we all know that FreeBSD supports multiple operating systems and contains a significant collection of server related software in the base system and the ports collection, and Bhyve which is a very new virtualisation system allows a user to run a number of guest operaring systems (FreeBSD, OpenBSD, Linux, Microsoft Windows) simultaneously.

Deliverables/Test Plan

Automate the testing process My test harness enables automation of tests and ensures execution of tests, by using a test library and generates a report. I will also design a test script to handle different test scenarios and test data. The typical objectives of my test harness would be :


Test Plan

The Code

SummerOfCode2019Projects/VerificationOfBhyveInstructionEmulation (last edited 2019-05-28T19:49:15+0000 by MaheshTudu)