fix VMCB reserved fields
Some checks failed
Check / Build ISO (nightly-2025-04-27) (push) Failing after 1m19s
Some checks failed
Check / Build ISO (nightly-2025-04-27) (push) Failing after 1m19s
This commit is contained in:
@@ -90,11 +90,15 @@ pub struct RawVmcb {
|
|||||||
pub intercept_tlbsync: bool,
|
pub intercept_tlbsync: bool,
|
||||||
pub intercept_bus_lock: bool,
|
pub intercept_bus_lock: bool,
|
||||||
pub intercept_idle_hlt: bool,
|
pub intercept_idle_hlt: bool,
|
||||||
_reserved1: B25,
|
#[skip]
|
||||||
|
__: B25,
|
||||||
// 018h-03Bh
|
// 018h-03Bh
|
||||||
_reserved2: B128,
|
#[skip]
|
||||||
_reserved3: B128,
|
__: B128,
|
||||||
_reserved4: B32,
|
#[skip]
|
||||||
|
__: B128,
|
||||||
|
#[skip]
|
||||||
|
__: B32,
|
||||||
// 03Ch
|
// 03Ch
|
||||||
pub pause_filter_threshold: B16,
|
pub pause_filter_threshold: B16,
|
||||||
// 03Eh
|
// 03Eh
|
||||||
@@ -110,29 +114,35 @@ pub struct RawVmcb {
|
|||||||
pub tlb_control: TlbControl,
|
pub tlb_control: TlbControl,
|
||||||
pub allow_larger_rap: bool,
|
pub allow_larger_rap: bool,
|
||||||
pub clear_rap_on_vmrun: bool,
|
pub clear_rap_on_vmrun: bool,
|
||||||
_reserved5: B22,
|
#[skip]
|
||||||
|
__: B22,
|
||||||
// 060h
|
// 060h
|
||||||
pub v_tpr: B8,
|
pub v_tpr: B8,
|
||||||
pub v_irq: bool,
|
pub v_irq: bool,
|
||||||
pub vgif: bool,
|
pub vgif: bool,
|
||||||
pub v_nmi: bool,
|
pub v_nmi: bool,
|
||||||
pub v_nmi_mask: bool,
|
pub v_nmi_mask: bool,
|
||||||
_reserved6: B3,
|
#[skip]
|
||||||
|
__: B3,
|
||||||
pub v_intr_prio: B4,
|
pub v_intr_prio: B4,
|
||||||
pub v_ign_tpr: bool,
|
pub v_ign_tpr: bool,
|
||||||
_reserved7: B3,
|
#[skip]
|
||||||
|
__: B3,
|
||||||
pub v_intr_masking: bool,
|
pub v_intr_masking: bool,
|
||||||
pub amd_virtual_gif: bool,
|
pub amd_virtual_gif: bool,
|
||||||
pub v_nmi_enable: bool,
|
pub v_nmi_enable: bool,
|
||||||
_reserved8: B3,
|
#[skip]
|
||||||
|
__: B3,
|
||||||
pub x2avic_enable: bool,
|
pub x2avic_enable: bool,
|
||||||
pub avic_enable: bool,
|
pub avic_enable: bool,
|
||||||
pub v_intr_vector: B8,
|
pub v_intr_vector: B8,
|
||||||
_reserved9: B24,
|
#[skip]
|
||||||
|
__: B24,
|
||||||
// 068h
|
// 068h
|
||||||
pub interrupt_shadow: bool,
|
pub interrupt_shadow: bool,
|
||||||
pub guest_interrupt_mask: bool,
|
pub guest_interrupt_mask: bool,
|
||||||
_reserved10: B62,
|
#[skip]
|
||||||
|
__: B62,
|
||||||
// 070h
|
// 070h
|
||||||
pub exit_code: B64,
|
pub exit_code: B64,
|
||||||
// 078h
|
// 078h
|
||||||
@@ -150,10 +160,12 @@ pub struct RawVmcb {
|
|||||||
pub virtual_transparent_encryption: bool,
|
pub virtual_transparent_encryption: bool,
|
||||||
pub enable_read_only_guest_page_table: bool,
|
pub enable_read_only_guest_page_table: bool,
|
||||||
pub enable_invlpgb_and_tlbsync: bool,
|
pub enable_invlpgb_and_tlbsync: bool,
|
||||||
_reserved11: B56,
|
#[skip]
|
||||||
|
__: B56,
|
||||||
// 098h
|
// 098h
|
||||||
_reserved12: B12,
|
|
||||||
pub avic_apic_bar: B52,
|
pub avic_apic_bar: B52,
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
// 0A0h
|
// 0A0h
|
||||||
pub ghcb_gpa: B64,
|
pub ghcb_gpa: B64,
|
||||||
// 0A8h
|
// 0A8h
|
||||||
@@ -165,15 +177,54 @@ pub struct RawVmcb {
|
|||||||
pub vmload_vmsave_virtualization_enable: bool,
|
pub vmload_vmsave_virtualization_enable: bool,
|
||||||
pub ibs_virtualization_enable: bool,
|
pub ibs_virtualization_enable: bool,
|
||||||
pub pmc_virtualization_enable: bool,
|
pub pmc_virtualization_enable: bool,
|
||||||
_reserved13: B60,
|
#[skip]
|
||||||
|
__: B60,
|
||||||
// 0C0h
|
// 0C0h
|
||||||
pub vmcb_clean_bits: B32,
|
pub vmcb_clean_bits: B32,
|
||||||
_reserved14: B32,
|
#[skip]
|
||||||
|
__: B32,
|
||||||
// 0C8h
|
// 0C8h
|
||||||
pub next_rip: B64,
|
pub next_rip: B64,
|
||||||
// 0D0h
|
// 0D0h
|
||||||
pub fetched_bytes: B8,
|
pub fetched_bytes: B8,
|
||||||
pub gutest_instruction_bytes: B120,
|
pub gutest_instruction_bytes: B120,
|
||||||
|
// 0E0h
|
||||||
|
pub avic_apic_backing_page_pointer: B52,
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
// 0E8-0EFh Reserved
|
||||||
|
#[skip]
|
||||||
|
__: B64,
|
||||||
|
#[skip]
|
||||||
|
__: B64,
|
||||||
|
#[skip]
|
||||||
|
__: B64,
|
||||||
|
#[skip]
|
||||||
|
__: B64,
|
||||||
|
// 0F0h
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
pub avic_logical_table_pointer: B40,
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
// 0F8h
|
||||||
|
pub avic_physical_max_index: B12,
|
||||||
|
pub avic_physical_table_pointer: B40,
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
// 100h-107h Reserved
|
||||||
|
#[skip]
|
||||||
|
__: B64,
|
||||||
|
// 108h
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
pub vmsa_pointer: B40,
|
||||||
|
#[skip]
|
||||||
|
__: B12,
|
||||||
|
// 110h
|
||||||
|
pub vmgexit_rax: B64,
|
||||||
|
// 118h
|
||||||
|
pub vmgexit_cpl: B8,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Specifier, Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Specifier, Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ pub struct XCR0 {
|
|||||||
pub xtilecfg: bool,
|
pub xtilecfg: bool,
|
||||||
pub xtiledata: bool,
|
pub xtiledata: bool,
|
||||||
pub apx: bool,
|
pub apx: bool,
|
||||||
_reserved: B44,
|
#[skip]
|
||||||
|
__: B44,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_xcr(vcpu: &mut IntelVCpu, index: u32, xcr: u64) -> Result<(), &'static str> {
|
pub fn set_xcr(vcpu: &mut IntelVCpu, index: u32, xcr: u64) -> Result<(), &'static str> {
|
||||||
|
|||||||
@@ -9,14 +9,17 @@ use crate::vmm::x86_64::intel::vmcs;
|
|||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct PinBasedVmExecutionControls {
|
pub struct PinBasedVmExecutionControls {
|
||||||
pub external_interrupt_exiting: bool,
|
pub external_interrupt_exiting: bool,
|
||||||
_reserved1: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub interrupt_window_exiting: bool,
|
pub interrupt_window_exiting: bool,
|
||||||
pub nmi_exiting: bool,
|
pub nmi_exiting: bool,
|
||||||
_reserved2: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub virtual_nmi: bool,
|
pub virtual_nmi: bool,
|
||||||
pub activate_vmx_preemption_timer: bool,
|
pub activate_vmx_preemption_timer: bool,
|
||||||
pub process_posted_interrupts: bool,
|
pub process_posted_interrupts: bool,
|
||||||
_reserved3: B24,
|
#[skip]
|
||||||
|
__: B24,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PinBasedVmExecutionControls {
|
impl PinBasedVmExecutionControls {
|
||||||
@@ -36,21 +39,26 @@ impl PinBasedVmExecutionControls {
|
|||||||
#[repr(u32)]
|
#[repr(u32)]
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct PrimaryProcessorBasedVmExecutionControls {
|
pub struct PrimaryProcessorBasedVmExecutionControls {
|
||||||
_reserved1: B2,
|
#[skip]
|
||||||
|
__: B2,
|
||||||
pub interrupt_window: bool,
|
pub interrupt_window: bool,
|
||||||
pub tsc_offsetting: bool,
|
pub tsc_offsetting: bool,
|
||||||
_reserved2: B3,
|
#[skip]
|
||||||
|
__: B3,
|
||||||
pub hlt: bool,
|
pub hlt: bool,
|
||||||
_reserved3: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub invlpg: bool,
|
pub invlpg: bool,
|
||||||
pub mwait: bool,
|
pub mwait: bool,
|
||||||
pub rdpmc: bool,
|
pub rdpmc: bool,
|
||||||
pub rdtsc: bool,
|
pub rdtsc: bool,
|
||||||
_reserved4: B2,
|
#[skip]
|
||||||
|
__: B2,
|
||||||
pub cr3load: bool,
|
pub cr3load: bool,
|
||||||
pub cr3store: bool,
|
pub cr3store: bool,
|
||||||
pub activate_teritary_controls: bool,
|
pub activate_teritary_controls: bool,
|
||||||
_reserved5: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub cr8load: bool,
|
pub cr8load: bool,
|
||||||
pub cr8store: bool,
|
pub cr8store: bool,
|
||||||
pub use_tpr_shadow: bool,
|
pub use_tpr_shadow: bool,
|
||||||
@@ -58,7 +66,8 @@ pub struct PrimaryProcessorBasedVmExecutionControls {
|
|||||||
pub mov_dr: bool,
|
pub mov_dr: bool,
|
||||||
pub unconditional_io: bool,
|
pub unconditional_io: bool,
|
||||||
pub use_io_bitmap: bool,
|
pub use_io_bitmap: bool,
|
||||||
_reserved6: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub monitor_trap: bool,
|
pub monitor_trap: bool,
|
||||||
pub use_msr_bitmap: bool,
|
pub use_msr_bitmap: bool,
|
||||||
pub monitor: bool,
|
pub monitor: bool,
|
||||||
@@ -114,7 +123,8 @@ pub struct SecondaryProcessorBasedVmExecutionControls {
|
|||||||
pub enable_enclv: bool,
|
pub enable_enclv: bool,
|
||||||
pub vmm_buslock_detect: bool,
|
pub vmm_buslock_detect: bool,
|
||||||
pub instruction_timeout: bool,
|
pub instruction_timeout: bool,
|
||||||
_reserved: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SecondaryProcessorBasedVmExecutionControls {
|
impl SecondaryProcessorBasedVmExecutionControls {
|
||||||
@@ -134,13 +144,16 @@ impl SecondaryProcessorBasedVmExecutionControls {
|
|||||||
#[repr(u32)]
|
#[repr(u32)]
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct EntryControls {
|
pub struct EntryControls {
|
||||||
_reserved1: B2,
|
#[skip]
|
||||||
|
__: B2,
|
||||||
pub load_debug_controls: bool,
|
pub load_debug_controls: bool,
|
||||||
_reserved2: B6,
|
#[skip]
|
||||||
|
__: B6,
|
||||||
pub ia32e_mode_guest: bool,
|
pub ia32e_mode_guest: bool,
|
||||||
pub entry_smm: bool,
|
pub entry_smm: bool,
|
||||||
pub deactivate_dualmonitor: bool,
|
pub deactivate_dualmonitor: bool,
|
||||||
_reserved3: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub load_perf_global_ctrl: bool,
|
pub load_perf_global_ctrl: bool,
|
||||||
pub load_ia32_pat: bool,
|
pub load_ia32_pat: bool,
|
||||||
pub load_ia32_efer: bool,
|
pub load_ia32_efer: bool,
|
||||||
@@ -151,7 +164,8 @@ pub struct EntryControls {
|
|||||||
pub load_cet_state: bool,
|
pub load_cet_state: bool,
|
||||||
pub load_guest_lbr_ctl: bool,
|
pub load_guest_lbr_ctl: bool,
|
||||||
pub load_pkrs: bool,
|
pub load_pkrs: bool,
|
||||||
_reserved4: B9,
|
#[skip]
|
||||||
|
__: B9,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EntryControls {
|
impl EntryControls {
|
||||||
@@ -171,15 +185,20 @@ impl EntryControls {
|
|||||||
#[repr(u32)]
|
#[repr(u32)]
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct PrimaryExitControls {
|
pub struct PrimaryExitControls {
|
||||||
_reserved1: B2,
|
#[skip]
|
||||||
|
__: B2,
|
||||||
pub save_debug: bool,
|
pub save_debug: bool,
|
||||||
_reserved2: B6,
|
#[skip]
|
||||||
|
__: B6,
|
||||||
pub host_addr_space_size: bool,
|
pub host_addr_space_size: bool,
|
||||||
_reserved3: B3,
|
#[skip]
|
||||||
|
__: B3,
|
||||||
pub load_perf_global_ctrl: bool,
|
pub load_perf_global_ctrl: bool,
|
||||||
_reserved4: B1,
|
#[skip]
|
||||||
|
__: B1,
|
||||||
pub ack_interrupt_onexit: bool,
|
pub ack_interrupt_onexit: bool,
|
||||||
_reserved5: B2,
|
#[skip]
|
||||||
|
__: B2,
|
||||||
pub save_ia32_pat: bool,
|
pub save_ia32_pat: bool,
|
||||||
pub load_ia32_pat: bool,
|
pub load_ia32_pat: bool,
|
||||||
pub save_ia32_efer: bool,
|
pub save_ia32_efer: bool,
|
||||||
@@ -216,6 +235,7 @@ pub struct EntryIntrInfo {
|
|||||||
pub vector: B8,
|
pub vector: B8,
|
||||||
pub typ: B3,
|
pub typ: B3,
|
||||||
pub ec_available: bool,
|
pub ec_available: bool,
|
||||||
_reserved: B19,
|
#[skip]
|
||||||
|
__: B19,
|
||||||
pub valid: bool,
|
pub valid: bool,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,14 +26,16 @@ pub struct SegmentRights {
|
|||||||
pub desc_type: DescriptorType,
|
pub desc_type: DescriptorType,
|
||||||
pub dpl: B2,
|
pub dpl: B2,
|
||||||
pub present: bool,
|
pub present: bool,
|
||||||
_reserved: B4,
|
#[skip]
|
||||||
|
__: B4,
|
||||||
pub avl: bool,
|
pub avl: bool,
|
||||||
pub long: bool,
|
pub long: bool,
|
||||||
pub db: bool,
|
pub db: bool,
|
||||||
#[bits = 1]
|
#[bits = 1]
|
||||||
pub granularity: Granularity,
|
pub granularity: Granularity,
|
||||||
pub unusable: bool,
|
pub unusable: bool,
|
||||||
_reserved2: B15,
|
#[skip]
|
||||||
|
__: B15,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for SegmentRights {
|
impl Default for SegmentRights {
|
||||||
|
|||||||
Reference in New Issue
Block a user