Changeset 72540 in vbox for trunk/include/iprt/nt
- Timestamp:
- Jun 13, 2018 12:01:06 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/nt/hyperv.h
r72412 r72540 327 327 328 328 329 /** Hyper-V partition property value. */ 330 typedef uint64_t HV_PARTITION_PROPERTY; 331 /** Pointer to a partition property value. */ 332 typedef HV_PARTITION_PROPERTY *PHV_PARTITION_PROPERTY; 333 /** 334 * Hyper-V partition property code. 335 * This is documented in TLFS, except version 5.x. 336 */ 337 typedef 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; 372 AssertCompileSize(HV_PARTITION_PROPERTY_CODE, 4); 373 /** Pointer to a partition property code. */ 374 typedef HV_PARTITION_PROPERTY_CODE *PHV_PARTITION_PROPERTY_CODE; 375 376 377 /** Input for HvCallGetPartitionProperty. */ 378 typedef struct 379 { 380 HV_PARTITION_ID PartitionId; 381 HV_PARTITION_PROPERTY_CODE PropertyCode; 382 uint32_t uPadding; 383 } HV_INPUT_GET_PARTITION_PROPERTY; 384 AssertCompileSize(HV_INPUT_GET_PARTITION_PROPERTY, 16); 385 /** Pointer to input for HvCallGetPartitionProperty. */ 386 typedef HV_INPUT_GET_PARTITION_PROPERTY *PHV_INPUT_GET_PARTITION_PROPERTY; 387 388 /** Output for HvCallGetPartitionProperty. */ 389 typedef struct 390 { 391 HV_PARTITION_PROPERTY PropertyValue; 392 } HV_OUTPUT_GET_PARTITION_PROPERTY; 393 /** Pointer to output for HvCallGetPartitionProperty. */ 394 typedef HV_OUTPUT_GET_PARTITION_PROPERTY *PHV_OUTPUT_GET_PARTITION_PROPERTY; 395 396 397 /** Input for HvCallSetPartitionProperty. */ 398 typedef 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; 405 AssertCompileSize(HV_INPUT_SET_PARTITION_PROPERTY, 24); 406 /** Pointer to input for HvCallSetPartitionProperty. */ 407 typedef HV_INPUT_SET_PARTITION_PROPERTY *PHV_INPUT_SET_PARTITION_PROPERTY; 408 409 329 410 /** Hyper-V NUMA node ID. 330 411 * On systems without NUMA, i.e. a single node, it uses 0 as identifier. */ … … 549 630 HvRegisterExplicitSuspend = 0x00000000, 550 631 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. */ 581 664 582 665 HvRegisterPendingInterruption = 0x00010002, … … 676 759 HvX64RegisterInitialApicId, 677 760 678 HvX64RegisterMtrrCap, 761 HvX64RegisterMtrrCap, /**< Not readable in exo partitions? */ 679 762 HvX64RegisterMtrrDefType, 680 763 … … 687 770 HvX64RegisterMtrrPhysBase6, 688 771 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). */ 697 780 698 781 HvX64RegisterMtrrPhysMask0 = 0x00080040, … … 704 787 HvX64RegisterMtrrPhysMask6, 705 788 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). */ 714 797 715 798 HvX64RegisterMtrrFix64k00000 = 0x00080070, … … 726 809 HvX64RegisterTscAux, /**< @since v5c? late 2017? */ 727 810 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 */ 732 817 HvX64RegisterHypercall, 733 818 HvRegisterGuestOsId, … … 735 820 HvRegisterTimeRefCount, 736 821 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. */ 742 827 HvRegisterVpAssistPage, 828 HvRegisterUnknown90014, /**< Readable on exo partition (17134), initial value 0x2f52c. */ 743 829 744 830 HvRegisterStatsPartitionRetail = 0x00090020, … … 779 865 HvRegisterStimer3Count, 780 866 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? */ 782 871 HvX64RegisterYmm1Low, 783 872 HvX64RegisterYmm2Low, … … 812 901 HvX64RegisterYmm15High, 813 902 814 HvRegisterVsmVpVtlControl = 0x000d0000, 903 HvRegisterVsmVpVtlControl = 0x000d0000, /**< @note Not readable on exo partition. */ 815 904 816 905 HvRegisterVsmCodePageOffsets = 0x000d0002, 817 906 HvRegisterVsmVpStatus, 818 907 HvRegisterVsmPartitionStatus, 819 HvRegisterVsmVina, 908 HvRegisterVsmVina, /**< @note Not readable on exo partition. */ 820 909 HvRegisterVsmCapabilities, 821 HvRegisterVsmPartitionConfig, 910 HvRegisterVsmPartitionConfig, /**< @note Not readable on exo partition. */ 822 911 823 912 HvRegisterVsmVpSecureConfigVtl0 = 0x000d0010, /**< @since v5 */ … … 835 924 HvRegisterVsmVpSecureConfigVtl12, /**< @since v5 */ 836 925 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. */ 839 932 } HV_REGISTER_NAME; 840 933 AssertCompile(HvRegisterInterceptSuspend == 0x00000001);
Note:
See TracChangeset
for help on using the changeset viewer.