[Rust-VMM] Crate Addition Request: CPU model
yi.y.sun at linux.intel.com
Tue Mar 12 08:33:46 UTC 2019
On 19-03-11 14:39:42, Paolo Bonzini wrote:
> On 11/03/19 02:31, Yi Sun wrote:
> > ## Crate Name
> > 'cpu-model'
> > ## Short Description
> > A crate to provide a generic framework which has standard interfaces
> > and flexible mechanism to support customized CPU models.
> > ## Why is this crate relevant to the rust-vmm project?
> > Customized CPU model is necessary because of below reasons.
> > 1. Avoid CPU hardware vulnerabilities.
> > 2. Keep stable guest ABI.
> > 3. Hard requirement for live migration.
> What is in the definition of a CPU model? I would expect stuff like:
> 1) converting CPUID leaf (eax+ecx)/register/bit from and to a string
> 2) converting MSR bit from and to a string
> 3) dependencies between CPUID leaves and from CPUID leaves to MSRs
> 4) XSAVE area offsets
> 5) dependencies between CPUID leaves and XSAVE areas
> Anything else?
Above things are my first plan to handle model related resources.
The crate should be generic and hypervisor agnostic. It defines
a standard template and interfaces to make user easily configure
features/register/msr/etc. Furthermore, provide a parameter to make
user be able to add/remove feature when launching rust-vmm to
dynamically adjust features.
Because above things are part of CPU resources management, as the
second step, I want to extend it to handle CPU states, address space,
interrupts, etc. The goal is also generic and hypervisor agnostic.
At last, I'd like to implement cpu hotplug, live migration to extend
it be a comprehensive cpu management crate.
It is a big blueprint. I will try to start from the easy part first. :)
More information about the Rust-vmm