arch: regs: Make create_msr_entries more readable

By using simple macros.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Samuel Ortiz
2020-02-16 21:00:43 +01:00
committed by Rob Bradford
parent 7a50646c02
commit c3a3490331
+36 -61
View File
@@ -242,68 +242,43 @@ fn setup_page_tables(mem: &GuestMemoryMmap, sregs: &mut kvm_sregs) -> Result<()>
Ok(()) Ok(())
} }
macro_rules! kvm_msr {
($msr:expr) => {
kvm_msr_entry {
index: $msr,
data: 0x0,
..Default::default()
}
};
}
macro_rules! kvm_msr_data {
($msr:expr, $data:expr) => {
kvm_msr_entry {
index: $msr,
data: $data,
..Default::default()
}
};
}
fn create_msr_entries() -> Msrs { fn create_msr_entries() -> Msrs {
let mut entries = Vec::<kvm_msr_entry>::new(); Msrs::from_entries(&[
kvm_msr!(msr_index::MSR_IA32_SYSENTER_CS),
entries.push(kvm_msr_entry { kvm_msr!(msr_index::MSR_IA32_SYSENTER_ESP),
index: msr_index::MSR_IA32_SYSENTER_CS, kvm_msr!(msr_index::MSR_IA32_SYSENTER_EIP),
data: 0x0, kvm_msr!(msr_index::MSR_STAR),
..Default::default() kvm_msr!(msr_index::MSR_CSTAR),
}); kvm_msr!(msr_index::MSR_LSTAR),
entries.push(kvm_msr_entry { kvm_msr!(msr_index::MSR_KERNEL_GS_BASE),
index: msr_index::MSR_IA32_SYSENTER_ESP, kvm_msr!(msr_index::MSR_SYSCALL_MASK),
data: 0x0, kvm_msr!(msr_index::MSR_IA32_TSC),
..Default::default() kvm_msr_data!(
}); msr_index::MSR_IA32_MISC_ENABLE,
entries.push(kvm_msr_entry { msr_index::MSR_IA32_MISC_ENABLE_FAST_STRING as u64
index: msr_index::MSR_IA32_SYSENTER_EIP, ),
data: 0x0, kvm_msr_data!(msr_index::MSR_MTRRdefType, MTRR_ENABLE | MTRR_MEM_TYPE_WB),
..Default::default() ])
});
// x86_64 specific msrs, we only run on x86_64 not x86.
entries.push(kvm_msr_entry {
index: msr_index::MSR_STAR,
data: 0x0,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_CSTAR,
data: 0x0,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_KERNEL_GS_BASE,
data: 0x0,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_SYSCALL_MASK,
data: 0x0,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_LSTAR,
data: 0x0,
..Default::default()
});
// end of x86_64 specific code
entries.push(kvm_msr_entry {
index: msr_index::MSR_IA32_TSC,
data: 0x0,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_IA32_MISC_ENABLE,
data: msr_index::MSR_IA32_MISC_ENABLE_FAST_STRING as u64,
..Default::default()
});
entries.push(kvm_msr_entry {
index: msr_index::MSR_MTRRdefType,
data: MTRR_ENABLE | MTRR_MEM_TYPE_WB,
..Default::default()
});
Msrs::from_entries(&entries)
} }
#[cfg(test)] #[cfg(test)]