VirtualBox

Changeset 71265 in vbox for trunk


Ignore:
Timestamp:
Mar 8, 2018 5:31:35 AM (7 years ago)
Author:
vboxsync
Message:

VMM/GIMHv: Added some newer Hyper-V paravirt. CPUID feature bits.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/GIMHvInternal.h

    r69111 r71265  
    2929 */
    3030/** Virtual processor runtime MSR available. */
    31 #define GIM_HV_BASE_FEAT_VP_RUNTIME_MSR           RT_BIT(0)
     31#define GIM_HV_BASE_FEAT_VP_RUNTIME_MSR                     RT_BIT(0)
    3232/** Partition reference counter MSR available. */
    33 #define GIM_HV_BASE_FEAT_PART_TIME_REF_COUNT_MSR  RT_BIT(1)
     33#define GIM_HV_BASE_FEAT_PART_TIME_REF_COUNT_MSR            RT_BIT(1)
    3434/** Basic Synthetic Interrupt Controller MSRs available. */
    35 #define GIM_HV_BASE_FEAT_BASIC_SYNIC_MSRS         RT_BIT(2)
     35#define GIM_HV_BASE_FEAT_BASIC_SYNIC_MSRS                   RT_BIT(2)
    3636/** Synthetic Timer MSRs available. */
    37 #define GIM_HV_BASE_FEAT_STIMER_MSRS              RT_BIT(3)
     37#define GIM_HV_BASE_FEAT_STIMER_MSRS                        RT_BIT(3)
    3838/** APIC access MSRs (EOI, ICR, TPR) available. */
    39 #define GIM_HV_BASE_FEAT_APIC_ACCESS_MSRS         RT_BIT(4)
     39#define GIM_HV_BASE_FEAT_APIC_ACCESS_MSRS                   RT_BIT(4)
    4040/** Hypercall MSRs available. */
    41 #define GIM_HV_BASE_FEAT_HYPERCALL_MSRS           RT_BIT(5)
     41#define GIM_HV_BASE_FEAT_HYPERCALL_MSRS                     RT_BIT(5)
    4242/** Access to VCPU index MSR available. */
    43 #define GIM_HV_BASE_FEAT_VP_ID_MSR                RT_BIT(6)
     43#define GIM_HV_BASE_FEAT_VP_ID_MSR                          RT_BIT(6)
    4444/** Virtual system reset MSR available. */
    45 #define GIM_HV_BASE_FEAT_VIRT_SYS_RESET_MSR       RT_BIT(7)
     45#define GIM_HV_BASE_FEAT_VIRT_SYS_RESET_MSR                 RT_BIT(7)
    4646/** Statistic pages MSRs available. */
    47 #define GIM_HV_BASE_FEAT_STAT_PAGES_MSR           RT_BIT(8)
     47#define GIM_HV_BASE_FEAT_STAT_PAGES_MSR                     RT_BIT(8)
    4848/** Paritition reference TSC MSR available. */
    49 #define GIM_HV_BASE_FEAT_PART_REF_TSC_MSR         RT_BIT(9)
     49#define GIM_HV_BASE_FEAT_PART_REF_TSC_MSR                   RT_BIT(9)
    5050/** Virtual guest idle state MSR available. */
    51 #define GIM_HV_BASE_FEAT_GUEST_IDLE_STATE_MSR     RT_BIT(10)
     51#define GIM_HV_BASE_FEAT_GUEST_IDLE_STATE_MSR               RT_BIT(10)
    5252/** Timer frequency MSRs (TSC and APIC) available. */
    53 #define GIM_HV_BASE_FEAT_TIMER_FREQ_MSRS          RT_BIT(11)
     53#define GIM_HV_BASE_FEAT_TIMER_FREQ_MSRS                    RT_BIT(11)
    5454/** Debug MSRs available. */
    55 #define GIM_HV_BASE_FEAT_DEBUG_MSRS               RT_BIT(12)
     55#define GIM_HV_BASE_FEAT_DEBUG_MSRS                         RT_BIT(12)
    5656/** @}  */
    5757
     
    6161 */
    6262/** Create partitions. */
    63 #define GIM_HV_PART_FLAGS_CREATE_PART             RT_BIT(0)
     63#define GIM_HV_PART_FLAGS_CREATE_PART                       RT_BIT(0)
    6464/** Access partition Id. */
    65 #define GIM_HV_PART_FLAGS_ACCESS_PART_ID          RT_BIT(1)
     65#define GIM_HV_PART_FLAGS_ACCESS_PART_ID                    RT_BIT(1)
    6666/** Access memory pool. */
    67 #define GIM_HV_PART_FLAGS_ACCESS_MEMORY_POOL      RT_BIT(2)
     67#define GIM_HV_PART_FLAGS_ACCESS_MEMORY_POOL                RT_BIT(2)
    6868/** Adjust message buffers. */
    69 #define GIM_HV_PART_FLAGS_ADJUST_MSG_BUFFERS      RT_BIT(3)
     69#define GIM_HV_PART_FLAGS_ADJUST_MSG_BUFFERS                RT_BIT(3)
    7070/** Post messages. */
    71 #define GIM_HV_PART_FLAGS_POST_MSGS               RT_BIT(4)
     71#define GIM_HV_PART_FLAGS_POST_MSGS                         RT_BIT(4)
    7272/** Signal events. */
    73 #define GIM_HV_PART_FLAGS_SIGNAL_EVENTS           RT_BIT(5)
     73#define GIM_HV_PART_FLAGS_SIGNAL_EVENTS                     RT_BIT(5)
    7474/** Create port. */
    75 #define GIM_HV_PART_FLAGS_CREATE_PORT             RT_BIT(6)
     75#define GIM_HV_PART_FLAGS_CREATE_PORT                       RT_BIT(6)
    7676/** Connect port. */
    77 #define GIM_HV_PART_FLAGS_CONNECT_PORT            RT_BIT(7)
     77#define GIM_HV_PART_FLAGS_CONNECT_PORT                      RT_BIT(7)
    7878/** Access statistics. */
    79 #define GIM_HV_PART_FLAGS_ACCESS_STATS            RT_BIT(8)
     79#define GIM_HV_PART_FLAGS_ACCESS_STATS                      RT_BIT(8)
    8080/** Debugging.*/
    81 #define GIM_HV_PART_FLAGS_DEBUGGING               RT_BIT(11)
     81#define GIM_HV_PART_FLAGS_DEBUGGING                         RT_BIT(11)
    8282/** CPU management. */
    83 #define GIM_HV_PART_FLAGS_CPU_MGMT                RT_BIT(12)
     83#define GIM_HV_PART_FLAGS_CPU_MGMT                          RT_BIT(12)
    8484/** CPU profiler. */
    85 #define GIM_HV_PART_FLAGS_CPU_PROFILER            RT_BIT(13)
     85#define GIM_HV_PART_FLAGS_CPU_PROFILER                      RT_BIT(13)
    8686/** Enable expanded stack walking. */
    87 #define GIM_HV_PART_FLAGS_EXPANDED_STACK_WALK     RT_BIT(14)
     87#define GIM_HV_PART_FLAGS_EXPANDED_STACK_WALK               RT_BIT(14)
     88/** Access VSM. */
     89#define GIM_HV_PART_FLAGS_ACCESS_VSM                        RT_BIT(16)
     90/** Access VP registers. */
     91#define GIM_HV_PART_FLAGS_ACCESS_VP_REGS                    RT_BIT(17)
     92/** Enable extended hypercalls. */
     93#define GIM_HV_PART_FLAGS_EXTENDED_HYPERCALLS               RT_BIT(20)
     94/** Start virtual processor. */
     95#define GIM_HV_PART_FLAGS_START_VP                          RT_BIT(21)
    8896/** @}  */
    8997
     
    92100 */
    93101/** Maximum CPU power state C0. */
    94 #define GIM_HV_PM_MAX_CPU_POWER_STATE_C0          RT_BIT(0)
     102#define GIM_HV_PM_MAX_CPU_POWER_STATE_C0                    RT_BIT(0)
    95103/** Maximum CPU power state C1. */
    96 #define GIM_HV_PM_MAX_CPU_POWER_STATE_C1          RT_BIT(1)
     104#define GIM_HV_PM_MAX_CPU_POWER_STATE_C1                    RT_BIT(1)
    97105/** Maximum CPU power state C2. */
    98 #define GIM_HV_PM_MAX_CPU_POWER_STATE_C2          RT_BIT(2)
     106#define GIM_HV_PM_MAX_CPU_POWER_STATE_C2                    RT_BIT(2)
    99107/** Maximum CPU power state C3. */
    100 #define GIM_HV_PM_MAX_CPU_POWER_STATE_C3          RT_BIT(3)
     108#define GIM_HV_PM_MAX_CPU_POWER_STATE_C3                    RT_BIT(3)
    101109/** HPET is required to enter C3 power state. */
    102 #define GIM_HV_PM_HPET_REQD_FOR_C3                RT_BIT(4)
     110#define GIM_HV_PM_HPET_REQD_FOR_C3                          RT_BIT(4)
    103111/** @}  */
    104112
     
    108116 */
    109117/** MWAIT instruction available. */
    110 #define GIM_HV_MISC_FEAT_MWAIT                    RT_BIT(0)
     118#define GIM_HV_MISC_FEAT_MWAIT                              RT_BIT(0)
    111119/** Guest debugging support available. */
    112 #define GIM_HV_MISC_FEAT_GUEST_DEBUGGING          RT_BIT(1)
     120#define GIM_HV_MISC_FEAT_GUEST_DEBUGGING                    RT_BIT(1)
    113121/** Performance monitor support is available. */
    114 #define GIM_HV_MISC_FEAT_PERF_MON                 RT_BIT(2)
     122#define GIM_HV_MISC_FEAT_PERF_MON                           RT_BIT(2)
    115123/** Support for physical CPU dynamic partitioning events. */
    116 #define GIM_HV_MISC_FEAT_PCPU_DYN_PART_EVENT      RT_BIT(3)
     124#define GIM_HV_MISC_FEAT_PCPU_DYN_PART_EVENT                RT_BIT(3)
    117125/** Support for passing hypercall input parameter block via XMM registers. */
    118 #define GIM_HV_MISC_FEAT_XMM_HYPERCALL_INPUT      RT_BIT(4)
     126#define GIM_HV_MISC_FEAT_XMM_HYPERCALL_INPUT                RT_BIT(4)
    119127/** Support for virtual guest idle state. */
    120 #define GIM_HV_MISC_FEAT_GUEST_IDLE_STATE         RT_BIT(5)
     128#define GIM_HV_MISC_FEAT_GUEST_IDLE_STATE                   RT_BIT(5)
    121129/** Support for hypervisor sleep state. */
    122 #define GIM_HV_MISC_FEAT_HYPERVISOR_SLEEP_STATE   RT_BIT(6)
     130#define GIM_HV_MISC_FEAT_HYPERVISOR_SLEEP_STATE             RT_BIT(6)
    123131/** Support for querying NUMA distances. */
    124 #define GIM_HV_MISC_FEAT_QUERY_NUMA_DISTANCE      RT_BIT(7)
     132#define GIM_HV_MISC_FEAT_QUERY_NUMA_DISTANCE                RT_BIT(7)
    125133/** Support for determining timer frequencies. */
    126 #define GIM_HV_MISC_FEAT_TIMER_FREQ               RT_BIT(8)
     134#define GIM_HV_MISC_FEAT_TIMER_FREQ                         RT_BIT(8)
    127135/** Support for injecting synthetic machine checks. */
    128 #define GIM_HV_MISC_FEAT_INJECT_SYNMC_XCPT        RT_BIT(9)
     136#define GIM_HV_MISC_FEAT_INJECT_SYNMC_XCPT                  RT_BIT(9)
    129137/** Support for guest crash MSRs. */
    130 #define GIM_HV_MISC_FEAT_GUEST_CRASH_MSRS         RT_BIT(10)
     138#define GIM_HV_MISC_FEAT_GUEST_CRASH_MSRS                   RT_BIT(10)
    131139/** Support for debug MSRs. */
    132 #define GIM_HV_MISC_FEAT_DEBUG_MSRS               RT_BIT(11)
     140#define GIM_HV_MISC_FEAT_DEBUG_MSRS                         RT_BIT(11)
    133141/** Npiep1 Available */ /** @todo What the heck is this? */
    134 #define GIM_HV_MISC_FEAT_NPIEP1                   RT_BIT(12)
     142#define GIM_HV_MISC_FEAT_NPIEP1                             RT_BIT(12)
    135143/** Disable hypervisor available. */
    136 #define GIM_HV_MISC_FEAT_DISABLE_HYPERVISOR       RT_BIT(13)
     144#define GIM_HV_MISC_FEAT_DISABLE_HYPERVISOR                 RT_BIT(13)
     145/** Extended GVA ranges for FlushVirtualAddressList available. */
     146#define GIM_HV_MISC_FEAT_EXT_GVA_RANGE_FOR_FLUSH_VA_LIST    RT_BIT(14)
     147/** Support for returning hypercall output via XMM registers. */
     148#define GIM_HV_MISC_FEAT_HYPERCALL_OUTPUT_XMM               RT_BIT(15)
     149/** Synthetic interrupt source polling mode available. */
     150#define GIM_HV_MISC_FEAT_SINT_POLLING_MODE                  RT_BIT(17)
     151/** Hypercall MSR lock available. */
     152#define GIM_HV_MISC_FEAT_HYPERCALL_MSR_LOCK                 RT_BIT(18)
     153/** Use direct synthetic MSRs. */
     154#define GIM_HV_MISC_FEAT_USE_DIRECT_SYNTH_MSRS              RT_BIT(19)
    137155/** @}  */
    138156
     
    142160 */
    143161/** Use hypercall for address space switches rather than MOV CR3. */
    144 #define GIM_HV_HINT_HYPERCALL_FOR_PROCESS_SWITCH  RT_BIT(0)
     162#define GIM_HV_HINT_HYPERCALL_FOR_PROCESS_SWITCH            RT_BIT(0)
    145163/** Use hypercall for local TLB flushes rather than INVLPG/MOV CR3. */
    146 #define GIM_HV_HINT_HYPERCALL_FOR_TLB_FLUSH       RT_BIT(1)
     164#define GIM_HV_HINT_HYPERCALL_FOR_TLB_FLUSH                 RT_BIT(1)
    147165/** Use hypercall for inter-CPU TLB flushes rather than IPIs. */
    148 #define GIM_HV_HINT_HYPERCALL_FOR_TLB_SHOOTDOWN   RT_BIT(2)
     166#define GIM_HV_HINT_HYPERCALL_FOR_TLB_SHOOTDOWN             RT_BIT(2)
    149167/** Use MSRs for APIC access (EOI, ICR, TPR) rather than MMIO. */
    150 #define GIM_HV_HINT_MSR_FOR_APIC_ACCESS           RT_BIT(3)
     168#define GIM_HV_HINT_MSR_FOR_APIC_ACCESS                     RT_BIT(3)
    151169/** Use hypervisor provided MSR for a system reset. */
    152 #define GIM_HV_HINT_MSR_FOR_SYS_RESET             RT_BIT(4)
     170#define GIM_HV_HINT_MSR_FOR_SYS_RESET                       RT_BIT(4)
    153171/** Relax timer-related checks (watchdogs/deadman timeouts) that rely on
    154172 *  timely deliver of external interrupts. */
    155 #define GIM_HV_HINT_RELAX_TIME_CHECKS             RT_BIT(5)
    156 /** Use DMA remapping. */
    157 #define GIM_HV_HINT_DMA_REMAPPING                 RT_BIT(6)
    158 /** Use interrupt remapping. */
    159 #define GIM_HV_HINT_INTERRUPT_REMAPPING           RT_BIT(7)
    160 /** Use X2APIC MSRs rather than MMIO. */
    161 #define GIM_HV_HINT_X2APIC_MSRS                   RT_BIT(8)
    162 /** Deprecate Auto EOI (end of interrupt). */
    163 #define GIM_HV_HINT_DEPRECATE_AUTO_EOI            RT_BIT(9)
     173#define GIM_HV_HINT_RELAX_TIME_CHECKS                       RT_BIT(5)
     174/** Recommend using DMA remapping. */
     175#define GIM_HV_HINT_DMA_REMAPPING                           RT_BIT(6)
     176/** Recommend using interrupt remapping. */
     177#define GIM_HV_HINT_INTERRUPT_REMAPPING                     RT_BIT(7)
     178/** Recommend using X2APIC MSRs rather than MMIO. */
     179#define GIM_HV_HINT_X2APIC_MSRS                             RT_BIT(8)
     180/** Recommend deprecating Auto EOI (end of interrupt). */
     181#define GIM_HV_HINT_DEPRECATE_AUTO_EOI                      RT_BIT(9)
     182/** Recommend using SyntheticClusterIpi hypercall. */
     183#define GIM_HV_HINT_SYNTH_CLUSTER_IPI_HYPERCALL             RT_BIT(10)
     184/** Recommend using newer ExProcessMasks interface. */
     185#define GIM_HV_HINT_EX_PROC_MASKS_INTERFACE                 RT_BIT(11)
     186/** Indicate that Hyper-V is nested within a Hyper-V partition. */
     187#define GIM_HV_HINT_NESTED_HYPERV                           RT_BIT(12)
     188/** Recommend using INT for MBEC system calls. */
     189#define GIM_HV_HINT_INT_FOR_MBEC_SYSCALLS                   RT_BIT(13)
     190/** Recommend using enlightened VMCS interfacea and nested enlightenments. */
     191#define GIM_HV_HINT_NESTED_ENLIGHTENED_VMCS_INTERFACE       RT_BIT(14)
    164192/** @}  */
    165193
     
    170198 */
    171199/** APIC overlay is used. */
    172 #define GIM_HV_HOST_FEAT_AVIC                     RT_BIT(0)
     200#define GIM_HV_HOST_FEAT_AVIC                               RT_BIT(0)
    173201/** MSR bitmaps is used. */
    174 #define GIM_HV_HOST_FEAT_MSR_BITMAP               RT_BIT(1)
     202#define GIM_HV_HOST_FEAT_MSR_BITMAP                         RT_BIT(1)
    175203/** Architectural performance counter supported. */
    176 #define GIM_HV_HOST_FEAT_PERF_COUNTER             RT_BIT(2)
     204#define GIM_HV_HOST_FEAT_PERF_COUNTER                       RT_BIT(2)
    177205/** Nested paging is used. */
    178 #define GIM_HV_HOST_FEAT_NESTED_PAGING            RT_BIT(3)
     206#define GIM_HV_HOST_FEAT_NESTED_PAGING                      RT_BIT(3)
    179207/** DMA remapping is used. */
    180 #define GIM_HV_HOST_FEAT_DMA_REMAPPING            RT_BIT(4)
     208#define GIM_HV_HOST_FEAT_DMA_REMAPPING                      RT_BIT(4)
    181209/** Interrupt remapping is used. */
    182 #define GIM_HV_HOST_FEAT_INTERRUPT_REMAPPING      RT_BIT(5)
     210#define GIM_HV_HOST_FEAT_INTERRUPT_REMAPPING                RT_BIT(5)
    183211/** Memory patrol scrubber is present. */
    184 #define GIM_HV_HOST_FEAT_MEM_PATROL_SCRUBBER      RT_BIT(6)
     212#define GIM_HV_HOST_FEAT_MEM_PATROL_SCRUBBER                RT_BIT(6)
     213/** DMA protection is in use. */
     214#define GIM_HV_HOST_FEAT_DMA_PROT_IN_USE                    RT_BIT(7)
     215/** HPET is requested. */
     216#define GIM_HV_HOST_FEAT_HPET_REQUESTED                     RT_BIT(8)
     217/** Synthetic timers are volatile. */
     218#define GIM_HV_HOST_FEAT_STIMER_VOLATILE                    RT_BIT(9)
    185219/** @}  */
    186220
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette