VirtualBox

Changeset 72540 in vbox for trunk/include/iprt/nt


Ignore:
Timestamp:
Jun 13, 2018 12:01:06 PM (6 years ago)
Author:
vboxsync
Message:

iprt/nt/hyperv.h: Probed registers and partition properties on build 17134. bugref:9044

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/nt/hyperv.h

    r72412 r72540  
    327327
    328328
     329/** Hyper-V partition property value. */
     330typedef uint64_t HV_PARTITION_PROPERTY;
     331/** Pointer to a partition property value. */
     332typedef HV_PARTITION_PROPERTY *PHV_PARTITION_PROPERTY;
     333/**
     334 * Hyper-V partition property code.
     335 * This is documented in TLFS, except version 5.x.
     336 */
     337typedef enum
     338{
     339    HvPartitionPropertyPrivilegeFlags = 0x00010000,
     340
     341    HvPartitionPropertyCpuReserve = 0x00020001,
     342    HvPartitionPropertyCpuCap,
     343    HvPartitionPropertyCpuWeight,
     344    HvPartitionPropertyUnknown20004,                /**< On exo partition (build 17134), initial value zero. */
     345
     346    HvPartitionPropertyEmulatedTimerPeriod = 0x00030000, /**< @note Fails on exo partition (build 17134). */
     347    HvPartitionPropertyEmulatedTimerControl,        /**< @note Fails on exo partition (build 17134). */
     348    HvPartitionPropertyPmTimerAssist,               /**< @note Fails on exo partition (build 17134). */
     349
     350    HvPartitionPropertyDebugChannelId = 0x00040000, /**< @note Hangs system on exo partition hangs (build 17134). */
     351
     352    HvPartitionPropertyVirtualTlbPageCount = 0x00050000,
     353    HvPartitionPropertyUnknown50001,                /**< On exo partition (build 17134), initial value zero. */
     354    HvPartitionPropertyUnknown50002,                /**< On exo partition (build 17134), initial value zero. */
     355    HvPartitionPropertyUnknown50003,                /**< On exo partition (build 17134), initial value zero. */
     356    HvPartitionPropertyUnknown50004,                /**< On exo partition (build 17134), initial value zero. */
     357    HvPartitionPropertyUnknown50005,                /**< On exo partition (build 17134), initial value one. */
     358    HvPartitionPropertyUnknown50006,                /**< On exo partition (build 17134), initial value zero. */
     359
     360    HvPartitionPropertyProcessorVendor = 0x00060000,
     361    HvPartitionPropertyProcessorFeatures,           /**< On exo/17134/threadripper: 0x6cb26f39fbf */
     362    HvPartitionPropertyProcessorXsaveFeatures,
     363    HvPartitionPropertyProcessorCLFlushSize,        /**< On exo/17134/threadripper: 8 */
     364    HvPartitionPropertyUnknown60004,                /**< On exo partition (build 17134), initial value zero. */
     365    HvPartitionPropertyUnknown60005,                /**< On exo partition (build 17134), initial value 0x603. */
     366    HvPartitionPropertyUnknown60006,                /**< On exo partition (build 17134), initial value 0x2c. */
     367
     368    HvPartitionPropertyGuestOsId = 0x00070000,      /**< @since v4 */
     369
     370    HvPartitionPropertyUnknown800000 = 0x00080000   /**< On exo partition (build 17134), initial value zero. */
     371} HV_PARTITION_PROPERTY_CODE;
     372AssertCompileSize(HV_PARTITION_PROPERTY_CODE, 4);
     373/** Pointer to a partition property code. */
     374typedef HV_PARTITION_PROPERTY_CODE *PHV_PARTITION_PROPERTY_CODE;
     375
     376
     377/** Input for HvCallGetPartitionProperty. */
     378typedef struct
     379{
     380    HV_PARTITION_ID             PartitionId;
     381    HV_PARTITION_PROPERTY_CODE  PropertyCode;
     382    uint32_t                    uPadding;
     383} HV_INPUT_GET_PARTITION_PROPERTY;
     384AssertCompileSize(HV_INPUT_GET_PARTITION_PROPERTY, 16);
     385/** Pointer to input for HvCallGetPartitionProperty. */
     386typedef HV_INPUT_GET_PARTITION_PROPERTY *PHV_INPUT_GET_PARTITION_PROPERTY;
     387
     388/** Output for HvCallGetPartitionProperty. */
     389typedef struct
     390{
     391    HV_PARTITION_PROPERTY       PropertyValue;
     392} HV_OUTPUT_GET_PARTITION_PROPERTY;
     393/** Pointer to output for HvCallGetPartitionProperty. */
     394typedef HV_OUTPUT_GET_PARTITION_PROPERTY *PHV_OUTPUT_GET_PARTITION_PROPERTY;
     395
     396
     397/** Input for HvCallSetPartitionProperty. */
     398typedef struct
     399{
     400    HV_PARTITION_ID             PartitionId;
     401    HV_PARTITION_PROPERTY_CODE  PropertyCode;
     402    uint32_t                    uPadding;
     403    HV_PARTITION_PROPERTY       PropertyValue;
     404} HV_INPUT_SET_PARTITION_PROPERTY;
     405AssertCompileSize(HV_INPUT_SET_PARTITION_PROPERTY, 24);
     406/** Pointer to input for HvCallSetPartitionProperty. */
     407typedef HV_INPUT_SET_PARTITION_PROPERTY *PHV_INPUT_SET_PARTITION_PROPERTY;
     408
     409
    329410/** Hyper-V NUMA node ID.
    330411 * On systems without NUMA, i.e. a single node, it uses 0 as identifier.  */
     
    549630    HvRegisterExplicitSuspend = 0x00000000,
    550631    HvRegisterInterceptSuspend,
    551 
    552     HvRegisterHypervisorVersion = 0x00000100,           /**< @since v5 */
    553 
    554     HvRegisterPrivilegesAndFeaturesInfo = 0x00000200,   /**< @since v5 */
    555     HvRegisterFeaturesInfo,                             /**< @since v5 */
    556     HvRegisterImplementationLimitsInfo,                 /**< @since v5 */
    557     HvRegisterHardwareFeaturesInfo,                     /**< @since v5 */
    558 
    559     HvRegisterGuestCrashP0 = 0x00000210,                /**< @since v5 */
    560     HvRegisterGuestCrashP1,                             /**< @since v5 */
    561     HvRegisterGuestCrashP2,                             /**< @since v5 */
    562     HvRegisterGuestCrashP3,                             /**< @since v5 */
    563     HvRegisterGuestCrashP4,                             /**< @since v5 */
    564     HvRegisterGuestCrashCtl,                            /**< @since v5 */
    565 
    566     HvRegisterPowerStateConfigC1 = 0x00000220,          /**< @since v5 */
    567     HvRegisterPowerStateTriggerC1,                      /**< @since v5 */
    568     HvRegisterPowerStateConfigC2,                       /**< @since v5 */
    569     HvRegisterPowerStateTriggerC2,                      /**< @since v5 */
    570     HvRegisterPowerStateConfigC3,                       /**< @since v5 */
    571     HvRegisterPowerStateTriggerC3,                      /**< @since v5 */
    572 
    573     HvRegisterSystemReset = 0x00000230,                 /**< @since v5 */
    574 
    575     HvRegisterProcessorClockFrequency = 0x00000240,     /**< @since v5 */
    576     HvRegisterInterruptClockFrequency,                  /**< @since v5 */
    577 
    578     HvRegisterGuestIdle = 0x00000250,                   /**< @since v5 */
    579 
    580     HvRegisterDebugDeviceOptions = 0x00000260,          /**< @since v5 */
     632    HvRegisterUnknown02,                                /**< Reads as 0 initially on exo part. */
     633    HvRegisterUnknown03,                                /**< Reads as 0 initially on exo part. */
     634
     635    HvRegisterHypervisorVersion = 0x00000100,           /**< @since v5 @note Not readable on exo part. */
     636
     637    HvRegisterPrivilegesAndFeaturesInfo = 0x00000200,   /**< @since v5 @note Not readable on exo part. */
     638    HvRegisterFeaturesInfo,                             /**< @since v5 @note Not readable on exo part. */
     639    HvRegisterImplementationLimitsInfo,                 /**< @since v5 @note Not readable on exo part. */
     640    HvRegisterHardwareFeaturesInfo,                     /**< @since v5 @note Not readable on exo part. */
     641
     642    HvRegisterGuestCrashP0 = 0x00000210,                /**< @since v5 @note Not readable on exo part. */
     643    HvRegisterGuestCrashP1,                             /**< @since v5 @note Not readable on exo part. */
     644    HvRegisterGuestCrashP2,                             /**< @since v5 @note Not readable on exo part. */
     645    HvRegisterGuestCrashP3,                             /**< @since v5 @note Not readable on exo part. */
     646    HvRegisterGuestCrashP4,                             /**< @since v5 @note Not readable on exo part. */
     647    HvRegisterGuestCrashCtl,                            /**< @since v5 @note Not readable on exo part. */
     648
     649    HvRegisterPowerStateConfigC1 = 0x00000220,          /**< @since v5 @note Not readable on exo part. */
     650    HvRegisterPowerStateTriggerC1,                      /**< @since v5 @note Not readable on exo part. */
     651    HvRegisterPowerStateConfigC2,                       /**< @since v5 @note Not readable on exo part. */
     652    HvRegisterPowerStateTriggerC2,                      /**< @since v5 @note Not readable on exo part. */
     653    HvRegisterPowerStateConfigC3,                       /**< @since v5 @note Not readable on exo part. */
     654    HvRegisterPowerStateTriggerC3,                      /**< @since v5 @note Not readable on exo part. */
     655
     656    HvRegisterSystemReset = 0x00000230,                 /**< @since v5 @note Not readable on exo part. */
     657
     658    HvRegisterProcessorClockFrequency = 0x00000240,     /**< @since v5 @note Not readable on exo part. */
     659    HvRegisterInterruptClockFrequency,                  /**< @since v5 @note Not readable on exo part. */
     660
     661    HvRegisterGuestIdle = 0x00000250,                   /**< @since v5 @note Not readable on exo part. */
     662
     663    HvRegisterDebugDeviceOptions = 0x00000260,          /**< @since v5 @note Not readable on exo part. */
    581664
    582665    HvRegisterPendingInterruption = 0x00010002,
     
    676759    HvX64RegisterInitialApicId,
    677760
    678     HvX64RegisterMtrrCap,
     761    HvX64RegisterMtrrCap,                           /**< Not readable in exo partitions? */
    679762    HvX64RegisterMtrrDefType,
    680763
     
    687770    HvX64RegisterMtrrPhysBase6,
    688771    HvX64RegisterMtrrPhysBase7,
    689     HvX64RegisterMtrrPhysBase8,                     /**< @since v4 */
    690     HvX64RegisterMtrrPhysBase9,                     /**< @since v4 */
    691     HvX64RegisterMtrrPhysBaseA,                     /**< @since v4 */
    692     HvX64RegisterMtrrPhysBaseB,                     /**< @since v4 */
    693     HvX64RegisterMtrrPhysBaseC,                     /**< @since v4 */
    694     HvX64RegisterMtrrPhysBaseD,                     /**< @since v4 */
    695     HvX64RegisterMtrrPhysBaseE,                     /**< @since v4 */
    696     HvX64RegisterMtrrPhysBaseF,                     /**< @since v4 */
     772    HvX64RegisterMtrrPhysBase8,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     773    HvX64RegisterMtrrPhysBase9,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     774    HvX64RegisterMtrrPhysBaseA,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     775    HvX64RegisterMtrrPhysBaseB,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     776    HvX64RegisterMtrrPhysBaseC,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     777    HvX64RegisterMtrrPhysBaseD,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     778    HvX64RegisterMtrrPhysBaseE,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     779    HvX64RegisterMtrrPhysBaseF,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
    697780
    698781    HvX64RegisterMtrrPhysMask0 = 0x00080040,
     
    704787    HvX64RegisterMtrrPhysMask6,
    705788    HvX64RegisterMtrrPhysMask7,
    706     HvX64RegisterMtrrPhysMask8,                     /**< @since v4 */
    707     HvX64RegisterMtrrPhysMask9,                     /**< @since v4 */
    708     HvX64RegisterMtrrPhysMaskA,                     /**< @since v4 */
    709     HvX64RegisterMtrrPhysMaskB,                     /**< @since v4 */
    710     HvX64RegisterMtrrPhysMaskC,                     /**< @since v4 */
    711     HvX64RegisterMtrrPhysMaskD,                     /**< @since v4 */
    712     HvX64RegisterMtrrPhysMaskE,                     /**< @since v4 */
    713     HvX64RegisterMtrrPhysMaskF,                     /**< @since v4 */
     789    HvX64RegisterMtrrPhysMask8,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     790    HvX64RegisterMtrrPhysMask9,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     791    HvX64RegisterMtrrPhysMaskA,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     792    HvX64RegisterMtrrPhysMaskB,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     793    HvX64RegisterMtrrPhysMaskC,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     794    HvX64RegisterMtrrPhysMaskD,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     795    HvX64RegisterMtrrPhysMaskE,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
     796    HvX64RegisterMtrrPhysMaskF,                     /**< @since v4 @note Appears not to be readable on exo partition (Threadripper). */
    714797
    715798    HvX64RegisterMtrrFix64k00000 = 0x00080070,
     
    726809    HvX64RegisterTscAux,                            /**< @since v5c? late 2017? */
    727810
    728     HvX64RegisterIa32MiscEnable = 0x000800a0,       /**< @since v5 */
    729     HvX64RegisterIa32FeatureControl,                /**< @since v5 */
    730 
    731     HvX64RegisterVpRuntime = 0x00090000,
     811    HvX64RegisterUnknown8007d = 0x0008007d,         /**< Readable on exo partition (17134), initial value is zero. */
     812
     813    HvX64RegisterIa32MiscEnable = 0x000800a0,       /**< @since v5 @note Appears not to be readable on exo partition (Threadripper). */
     814    HvX64RegisterIa32FeatureControl,                /**< @since v5 @note Appears not to be readable on exo partition (Threadripper). */
     815
     816    HvX64RegisterVpRuntime = 0x00090000,            /**< @note 17134/exo/threadripper: 0x5081a0 */
    732817    HvX64RegisterHypercall,
    733818    HvRegisterGuestOsId,
     
    735820    HvRegisterTimeRefCount,
    736821
    737     HvRegisterCpuManagementVersion = 0x00090007,    /**< @since v5 */
    738 
    739     HvX64RegisterEoi = 0x00090010,
    740     HvX64RegisterIcr,
    741     HvX64RegisterTpr,
     822    HvRegisterCpuManagementVersion = 0x00090007,    /**< @since v5 @note Appears not to be readable on exo partition. */
     823
     824    HvX64RegisterEoi = 0x00090010,                  /**< @note Appears not to be readable on exo partition. */
     825    HvX64RegisterIcr,                               /**< @note Appears not to be readable on exo partition. */
     826    HvX64RegisterTpr,                               /**< @note Appears not to be readable on exo partition. */
    742827    HvRegisterVpAssistPage,
     828    HvRegisterUnknown90014,                         /**< Readable on exo partition (17134), initial value 0x2f52c. */
    743829
    744830    HvRegisterStatsPartitionRetail = 0x00090020,
     
    779865    HvRegisterStimer3Count,
    780866
    781     HvX64RegisterYmm0Low = 0x000c0000,
     867    HvRegisterUnknown0b0100 = 0x000b0100,           /**< Readable on exo partition (17134), initial value is zero. */
     868    HvRegisterUnknown0b0101,                        /**< Readable on exo partition (17134), initial value is zero. */
     869
     870    HvX64RegisterYmm0Low = 0x000c0000,              /**< @note Not readable on exo partition.  Need something enabled? */
    782871    HvX64RegisterYmm1Low,
    783872    HvX64RegisterYmm2Low,
     
    812901    HvX64RegisterYmm15High,
    813902
    814     HvRegisterVsmVpVtlControl = 0x000d0000,
     903    HvRegisterVsmVpVtlControl = 0x000d0000,         /**< @note Not readable on exo partition. */
    815904
    816905    HvRegisterVsmCodePageOffsets = 0x000d0002,
    817906    HvRegisterVsmVpStatus,
    818907    HvRegisterVsmPartitionStatus,
    819     HvRegisterVsmVina,
     908    HvRegisterVsmVina,                              /**< @note Not readable on exo partition. */
    820909    HvRegisterVsmCapabilities,
    821     HvRegisterVsmPartitionConfig,
     910    HvRegisterVsmPartitionConfig,                   /**< @note Not readable on exo partition. */
    822911
    823912    HvRegisterVsmVpSecureConfigVtl0 = 0x000d0010,   /**< @since v5 */
     
    835924    HvRegisterVsmVpSecureConfigVtl12,               /**< @since v5 */
    836925    HvRegisterVsmVpSecureConfigVtl13,               /**< @since v5 */
    837     HvRegisterVsmVpSecureConfigVtl14                /**< @since v5 */
    838 
     926    HvRegisterVsmVpSecureConfigVtl14,               /**< @since v5 */
     927
     928    HvRegisterUnknown0e0000 = 0x000e0000,           /**< Readable on exo partition (17134), initial value zero. */
     929    HvRegisterUnknown0e0001,                        /**< Readable on exo partition (17134), initial value zero. */
     930    HvRegisterUnknown0e0002,                        /**< Readable on exo partition (17134), initial value zero. */
     931    HvRegisterUnknown0e0003                         /**< Readable on exo partition (17134), initial value zero. */
    839932} HV_REGISTER_NAME;
    840933AssertCompile(HvRegisterInterceptSuspend == 0x00000001);
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