On 12/8/2025 7:13 AM, Michael Kelley wrote:
> From: Nuno Das Neves <[email protected]> Sent: Friday, 
> December 5, 2025 10:59 AM
>>
>> Add the definitions for hypervisor, logical processor, and partition
>> stats pages.
>>
>> Move the definition for the VP stats page to its rightful place in
>> hvhdk.h, and add the missing members.
>>
>> These enum members retain their CamelCase style, since they are imported
>> directly from the hypervisor code They will be stringified when printing
> 
> Missing a '.' (period) after "hypervisor code".
> 
Ack

>> the stats out, and retain more readability in this form.
>>
>> Signed-off-by: Nuno Das Neves <[email protected]>
>> ---
>>  drivers/hv/mshv_root_main.c |  17 --
>>  include/hyperv/hvhdk.h      | 437 ++++++++++++++++++++++++++++++++++++
>>  2 files changed, 437 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
>> index f59a4ab47685..19006b788e85 100644
>> --- a/drivers/hv/mshv_root_main.c
>> +++ b/drivers/hv/mshv_root_main.c
>> @@ -38,23 +38,6 @@ MODULE_AUTHOR("Microsoft");
>>  MODULE_LICENSE("GPL");
>>  MODULE_DESCRIPTION("Microsoft Hyper-V root partition VMM interface
>> /dev/mshv");
>>
>> -/* TODO move this to another file when debugfs code is added */
>> -enum hv_stats_vp_counters {                 /* HV_THREAD_COUNTER */
>> -#if defined(CONFIG_X86)
>> -    VpRootDispatchThreadBlocked                     = 202,
>> -#elif defined(CONFIG_ARM64)
>> -    VpRootDispatchThreadBlocked                     = 94,
>> -#endif
>> -    VpStatsMaxCounter
>> -};
>> -
>> -struct hv_stats_page {
>> -    union {
>> -            u64 vp_cntrs[VpStatsMaxCounter];                /* VP counters 
>> */
>> -            u8 data[HV_HYP_PAGE_SIZE];
>> -    };
>> -} __packed;
>> -
>>  struct mshv_root mshv_root;
>>
>>  enum hv_scheduler_type hv_scheduler_type;
>> diff --git a/include/hyperv/hvhdk.h b/include/hyperv/hvhdk.h
>> index 469186df7826..51abbcd0ec37 100644
>> --- a/include/hyperv/hvhdk.h
>> +++ b/include/hyperv/hvhdk.h
>> @@ -10,6 +10,443 @@
>>  #include "hvhdk_mini.h"
>>  #include "hvgdk.h"
>>
>> +enum hv_stats_hypervisor_counters {         /* HV_HYPERVISOR_COUNTER */
>> +    HvLogicalProcessors                     = 1,
>> +    HvPartitions                            = 2,
>> +    HvTotalPages                            = 3,
>> +    HvVirtualProcessors                     = 4,
>> +    HvMonitoredNotifications                = 5,
>> +    HvModernStandbyEntries                  = 6,
>> +    HvPlatformIdleTransitions               = 7,
>> +    HvHypervisorStartupCost                 = 8,
>> +    HvIOSpacePages                          = 10,
>> +    HvNonEssentialPagesForDump              = 11,
>> +    HvSubsumedPages                         = 12,
>> +    HvStatsMaxCounter
>> +};
>> +
>> +enum hv_stats_partition_counters {          /* HV_PROCESS_COUNTER */
>> +    PartitionVirtualProcessors              = 1,
>> +    PartitionTlbSize                        = 3,
>> +    PartitionAddressSpaces                  = 4,
>> +    PartitionDepositedPages                 = 5,
>> +    PartitionGpaPages                       = 6,
>> +    PartitionGpaSpaceModifications          = 7,
>> +    PartitionVirtualTlbFlushEntires         = 8,
>> +    PartitionRecommendedTlbSize             = 9,
>> +    PartitionGpaPages4K                     = 10,
>> +    PartitionGpaPages2M                     = 11,
>> +    PartitionGpaPages1G                     = 12,
>> +    PartitionGpaPages512G                   = 13,
>> +    PartitionDevicePages4K                  = 14,
>> +    PartitionDevicePages2M                  = 15,
>> +    PartitionDevicePages1G                  = 16,
>> +    PartitionDevicePages512G                = 17,
>> +    PartitionAttachedDevices                = 18,
>> +    PartitionDeviceInterruptMappings        = 19,
>> +    PartitionIoTlbFlushes                   = 20,
>> +    PartitionIoTlbFlushCost                 = 21,
>> +    PartitionDeviceInterruptErrors          = 22,
>> +    PartitionDeviceDmaErrors                = 23,
>> +    PartitionDeviceInterruptThrottleEvents  = 24,
>> +    PartitionSkippedTimerTicks              = 25,
>> +    PartitionPartitionId                    = 26,
>> +#if IS_ENABLED(CONFIG_X86_64)
>> +    PartitionNestedTlbSize                  = 27,
>> +    PartitionRecommendedNestedTlbSize       = 28,
>> +    PartitionNestedTlbFreeListSize          = 29,
>> +    PartitionNestedTlbTrimmedPages          = 30,
>> +    PartitionPagesShattered                 = 31,
>> +    PartitionPagesRecombined                = 32,
>> +    PartitionHwpRequestValue                = 33,
>> +#elif IS_ENABLED(CONFIG_ARM64)
>> +    PartitionHwpRequestValue                = 27,
>> +#endif
>> +    PartitionStatsMaxCounter
>> +};
>> +
>> +enum hv_stats_vp_counters {                 /* HV_THREAD_COUNTER */
>> +    VpTotalRunTime                                  = 1,
>> +    VpHypervisorRunTime                             = 2,
>> +    VpRemoteNodeRunTime                             = 3,
>> +    VpNormalizedRunTime                             = 4,
>> +    VpIdealCpu                                      = 5,
>> +    VpHypercallsCount                               = 7,
>> +    VpHypercallsTime                                = 8,
>> +#if IS_ENABLED(CONFIG_X86_64)
>> +    VpPageInvalidationsCount                        = 9,
>> +    VpPageInvalidationsTime                         = 10,
>> +    VpControlRegisterAccessesCount                  = 11,
>> +    VpControlRegisterAccessesTime                   = 12,
>> +    VpIoInstructionsCount                           = 13,
>> +    VpIoInstructionsTime                            = 14,
>> +    VpHltInstructionsCount                          = 15,
>> +    VpHltInstructionsTime                           = 16,
>> +    VpMwaitInstructionsCount                        = 17,
>> +    VpMwaitInstructionsTime                         = 18,
>> +    VpCpuidInstructionsCount                        = 19,
>> +    VpCpuidInstructionsTime                         = 20,
>> +    VpMsrAccessesCount                              = 21,
>> +    VpMsrAccessesTime                               = 22,
>> +    VpOtherInterceptsCount                          = 23,
>> +    VpOtherInterceptsTime                           = 24,
>> +    VpExternalInterruptsCount                       = 25,
>> +    VpExternalInterruptsTime                        = 26,
>> +    VpPendingInterruptsCount                        = 27,
>> +    VpPendingInterruptsTime                         = 28,
>> +    VpEmulatedInstructionsCount                     = 29,
>> +    VpEmulatedInstructionsTime                      = 30,
>> +    VpDebugRegisterAccessesCount                    = 31,
>> +    VpDebugRegisterAccessesTime                     = 32,
>> +    VpPageFaultInterceptsCount                      = 33,
>> +    VpPageFaultInterceptsTime                       = 34,
>> +    VpGuestPageTableMaps                            = 35,
>> +    VpLargePageTlbFills                             = 36,
>> +    VpSmallPageTlbFills                             = 37,
>> +    VpReflectedGuestPageFaults                      = 38,
>> +    VpApicMmioAccesses                              = 39,
>> +    VpIoInterceptMessages                           = 40,
>> +    VpMemoryInterceptMessages                       = 41,
>> +    VpApicEoiAccesses                               = 42,
>> +    VpOtherMessages                                 = 43,
>> +    VpPageTableAllocations                          = 44,
>> +    VpLogicalProcessorMigrations                    = 45,
>> +    VpAddressSpaceEvictions                         = 46,
>> +    VpAddressSpaceSwitches                          = 47,
>> +    VpAddressDomainFlushes                          = 48,
>> +    VpAddressSpaceFlushes                           = 49,
>> +    VpGlobalGvaRangeFlushes                         = 50,
>> +    VpLocalGvaRangeFlushes                          = 51,
>> +    VpPageTableEvictions                            = 52,
>> +    VpPageTableReclamations                         = 53,
>> +    VpPageTableResets                               = 54,
>> +    VpPageTableValidations                          = 55,
>> +    VpApicTprAccesses                               = 56,
>> +    VpPageTableWriteIntercepts                      = 57,
>> +    VpSyntheticInterrupts                           = 58,
>> +    VpVirtualInterrupts                             = 59,
>> +    VpApicIpisSent                                  = 60,
>> +    VpApicSelfIpisSent                              = 61,
>> +    VpGpaSpaceHypercalls                            = 62,
>> +    VpLogicalProcessorHypercalls                    = 63,
>> +    VpLongSpinWaitHypercalls                        = 64,
>> +    VpOtherHypercalls                               = 65,
>> +    VpSyntheticInterruptHypercalls                  = 66,
>> +    VpVirtualInterruptHypercalls                    = 67,
>> +    VpVirtualMmuHypercalls                          = 68,
>> +    VpVirtualProcessorHypercalls                    = 69,
>> +    VpHardwareInterrupts                            = 70,
>> +    VpNestedPageFaultInterceptsCount                = 71,
>> +    VpNestedPageFaultInterceptsTime                 = 72,
>> +    VpPageScans                                     = 73,
>> +    VpLogicalProcessorDispatches                    = 74,
>> +    VpWaitingForCpuTime                             = 75,
>> +    VpExtendedHypercalls                            = 76,
>> +    VpExtendedHypercallInterceptMessages            = 77,
>> +    VpMbecNestedPageTableSwitches                   = 78,
>> +    VpOtherReflectedGuestExceptions                 = 79,
>> +    VpGlobalIoTlbFlushes                            = 80,
>> +    VpGlobalIoTlbFlushCost                          = 81,
>> +    VpLocalIoTlbFlushes                             = 82,
>> +    VpLocalIoTlbFlushCost                           = 83,
>> +    VpHypercallsForwardedCount                      = 84,
>> +    VpHypercallsForwardingTime                      = 85,
>> +    VpPageInvalidationsForwardedCount               = 86,
>> +    VpPageInvalidationsForwardingTime               = 87,
>> +    VpControlRegisterAccessesForwardedCount         = 88,
>> +    VpControlRegisterAccessesForwardingTime         = 89,
>> +    VpIoInstructionsForwardedCount                  = 90,
>> +    VpIoInstructionsForwardingTime                  = 91,
>> +    VpHltInstructionsForwardedCount                 = 92,
>> +    VpHltInstructionsForwardingTime                 = 93,
>> +    VpMwaitInstructionsForwardedCount               = 94,
>> +    VpMwaitInstructionsForwardingTime               = 95,
>> +    VpCpuidInstructionsForwardedCount               = 96,
>> +    VpCpuidInstructionsForwardingTime               = 97,
>> +    VpMsrAccessesForwardedCount                     = 98,
>> +    VpMsrAccessesForwardingTime                     = 99,
>> +    VpOtherInterceptsForwardedCount                 = 100,
>> +    VpOtherInterceptsForwardingTime                 = 101,
>> +    VpExternalInterruptsForwardedCount              = 102,
>> +    VpExternalInterruptsForwardingTime              = 103,
>> +    VpPendingInterruptsForwardedCount               = 104,
>> +    VpPendingInterruptsForwardingTime               = 105,
>> +    VpEmulatedInstructionsForwardedCount            = 106,
>> +    VpEmulatedInstructionsForwardingTime            = 107,
>> +    VpDebugRegisterAccessesForwardedCount           = 108,
>> +    VpDebugRegisterAccessesForwardingTime           = 109,
>> +    VpPageFaultInterceptsForwardedCount             = 110,
>> +    VpPageFaultInterceptsForwardingTime             = 111,
>> +    VpVmclearEmulationCount                         = 112,
>> +    VpVmclearEmulationTime                          = 113,
>> +    VpVmptrldEmulationCount                         = 114,
>> +    VpVmptrldEmulationTime                          = 115,
>> +    VpVmptrstEmulationCount                         = 116,
>> +    VpVmptrstEmulationTime                          = 117,
>> +    VpVmreadEmulationCount                          = 118,
>> +    VpVmreadEmulationTime                           = 119,
>> +    VpVmwriteEmulationCount                         = 120,
>> +    VpVmwriteEmulationTime                          = 121,
>> +    VpVmxoffEmulationCount                          = 122,
>> +    VpVmxoffEmulationTime                           = 123,
>> +    VpVmxonEmulationCount                           = 124,
>> +    VpVmxonEmulationTime                            = 125,
>> +    VpNestedVMEntriesCount                          = 126,
>> +    VpNestedVMEntriesTime                           = 127,
>> +    VpNestedSLATSoftPageFaultsCount                 = 128,
>> +    VpNestedSLATSoftPageFaultsTime                  = 129,
>> +    VpNestedSLATHardPageFaultsCount                 = 130,
>> +    VpNestedSLATHardPageFaultsTime                  = 131,
>> +    VpInvEptAllContextEmulationCount                = 132,
>> +    VpInvEptAllContextEmulationTime                 = 133,
>> +    VpInvEptSingleContextEmulationCount             = 134,
>> +    VpInvEptSingleContextEmulationTime              = 135,
>> +    VpInvVpidAllContextEmulationCount               = 136,
>> +    VpInvVpidAllContextEmulationTime                = 137,
>> +    VpInvVpidSingleContextEmulationCount            = 138,
>> +    VpInvVpidSingleContextEmulationTime             = 139,
>> +    VpInvVpidSingleAddressEmulationCount            = 140,
>> +    VpInvVpidSingleAddressEmulationTime             = 141,
>> +    VpNestedTlbPageTableReclamations                = 142,
>> +    VpNestedTlbPageTableEvictions                   = 143,
>> +    VpFlushGuestPhysicalAddressSpaceHypercalls      = 144,
>> +    VpFlushGuestPhysicalAddressListHypercalls       = 145,
>> +    VpPostedInterruptNotifications                  = 146,
>> +    VpPostedInterruptScans                          = 147,
>> +    VpTotalCoreRunTime                              = 148,
>> +    VpMaximumRunTime                                = 149,
>> +    VpHwpRequestContextSwitches                     = 150,
>> +    VpWaitingForCpuTimeBucket0                      = 151,
>> +    VpWaitingForCpuTimeBucket1                      = 152,
>> +    VpWaitingForCpuTimeBucket2                      = 153,
>> +    VpWaitingForCpuTimeBucket3                      = 154,
>> +    VpWaitingForCpuTimeBucket4                      = 155,
>> +    VpWaitingForCpuTimeBucket5                      = 156,
>> +    VpWaitingForCpuTimeBucket6                      = 157,
>> +    VpVmloadEmulationCount                          = 158,
>> +    VpVmloadEmulationTime                           = 159,
>> +    VpVmsaveEmulationCount                          = 160,
>> +    VpVmsaveEmulationTime                           = 161,
>> +    VpGifInstructionEmulationCount                  = 162,
>> +    VpGifInstructionEmulationTime                   = 163,
>> +    VpEmulatedErrataSvmInstructions                 = 164,
>> +    VpPlaceholder1                                  = 165,
>> +    VpPlaceholder2                                  = 166,
>> +    VpPlaceholder3                                  = 167,
>> +    VpPlaceholder4                                  = 168,
>> +    VpPlaceholder5                                  = 169,
>> +    VpPlaceholder6                                  = 170,
>> +    VpPlaceholder7                                  = 171,
>> +    VpPlaceholder8                                  = 172,
>> +    VpPlaceholder9                                  = 173,
>> +    VpPlaceholder10                                 = 174,
>> +    VpSchedulingPriority                            = 175,
>> +    VpRdpmcInstructionsCount                        = 176,
>> +    VpRdpmcInstructionsTime                         = 177,
>> +    VpPerfmonPmuMsrAccessesCount                    = 178,
>> +    VpPerfmonLbrMsrAccessesCount                    = 179,
>> +    VpPerfmonIptMsrAccessesCount                    = 180,
>> +    VpPerfmonInterruptCount                         = 181,
>> +    VpVtl1DispatchCount                             = 182,
>> +    VpVtl2DispatchCount                             = 183,
>> +    VpVtl2DispatchBucket0                           = 184,
>> +    VpVtl2DispatchBucket1                           = 185,
>> +    VpVtl2DispatchBucket2                           = 186,
>> +    VpVtl2DispatchBucket3                           = 187,
>> +    VpVtl2DispatchBucket4                           = 188,
>> +    VpVtl2DispatchBucket5                           = 189,
>> +    VpVtl2DispatchBucket6                           = 190,
>> +    VpVtl1RunTime                                   = 191,
>> +    VpVtl2RunTime                                   = 192,
>> +    VpIommuHypercalls                               = 193,
>> +    VpCpuGroupHypercalls                            = 194,
>> +    VpVsmHypercalls                                 = 195,
>> +    VpEventLogHypercalls                            = 196,
>> +    VpDeviceDomainHypercalls                        = 197,
>> +    VpDepositHypercalls                             = 198,
>> +    VpSvmHypercalls                                 = 199,
>> +    VpBusLockAcquisitionCount                       = 200,
>> +    VpUnused                                        = 201,
>> +    VpRootDispatchThreadBlocked                     = 202,
>> +#elif IS_ENABLED(CONFIG_ARM64)
>> +    VpSysRegAccessesCount                           = 9,
>> +    VpSysRegAccessesTime                            = 10,
>> +    VpSmcInstructionsCount                          = 11,
>> +    VpSmcInstructionsTime                           = 12,
>> +    VpOtherInterceptsCount                          = 13,
>> +    VpOtherInterceptsTime                           = 14,
>> +    VpExternalInterruptsCount                       = 15,
>> +    VpExternalInterruptsTime                        = 16,
>> +    VpPendingInterruptsCount                        = 17,
>> +    VpPendingInterruptsTime                         = 18,
>> +    VpGuestPageTableMaps                            = 19,
>> +    VpLargePageTlbFills                             = 20,
>> +    VpSmallPageTlbFills                             = 21,
>> +    VpReflectedGuestPageFaults                      = 22,
>> +    VpMemoryInterceptMessages                       = 23,
>> +    VpOtherMessages                                 = 24,
>> +    VpLogicalProcessorMigrations                    = 25,
>> +    VpAddressDomainFlushes                          = 26,
>> +    VpAddressSpaceFlushes                           = 27,
>> +    VpSyntheticInterrupts                           = 28,
>> +    VpVirtualInterrupts                             = 29,
>> +    VpApicSelfIpisSent                              = 30,
>> +    VpGpaSpaceHypercalls                            = 31,
>> +    VpLogicalProcessorHypercalls                    = 32,
>> +    VpLongSpinWaitHypercalls                        = 33,
>> +    VpOtherHypercalls                               = 34,
>> +    VpSyntheticInterruptHypercalls                  = 35,
>> +    VpVirtualInterruptHypercalls                    = 36,
>> +    VpVirtualMmuHypercalls                          = 37,
>> +    VpVirtualProcessorHypercalls                    = 38,
>> +    VpHardwareInterrupts                            = 39,
>> +    VpNestedPageFaultInterceptsCount                = 40,
>> +    VpNestedPageFaultInterceptsTime                 = 41,
>> +    VpLogicalProcessorDispatches                    = 42,
>> +    VpWaitingForCpuTime                             = 43,
>> +    VpExtendedHypercalls                            = 44,
>> +    VpExtendedHypercallInterceptMessages            = 45,
>> +    VpMbecNestedPageTableSwitches                   = 46,
>> +    VpOtherReflectedGuestExceptions                 = 47,
>> +    VpGlobalIoTlbFlushes                            = 48,
>> +    VpGlobalIoTlbFlushCost                          = 49,
>> +    VpLocalIoTlbFlushes                             = 50,
>> +    VpLocalIoTlbFlushCost                           = 51,
>> +    VpFlushGuestPhysicalAddressSpaceHypercalls      = 52,
>> +    VpFlushGuestPhysicalAddressListHypercalls       = 53,
>> +    VpPostedInterruptNotifications                  = 54,
>> +    VpPostedInterruptScans                          = 55,
>> +    VpTotalCoreRunTime                              = 56,
>> +    VpMaximumRunTime                                = 57,
>> +    VpWaitingForCpuTimeBucket0                      = 58,
>> +    VpWaitingForCpuTimeBucket1                      = 59,
>> +    VpWaitingForCpuTimeBucket2                      = 60,
>> +    VpWaitingForCpuTimeBucket3                      = 61,
>> +    VpWaitingForCpuTimeBucket4                      = 62,
>> +    VpWaitingForCpuTimeBucket5                      = 63,
>> +    VpWaitingForCpuTimeBucket6                      = 64,
>> +    VpHwpRequestContextSwitches                     = 65,
>> +    VpPlaceholder2                                  = 66,
>> +    VpPlaceholder3                                  = 67,
>> +    VpPlaceholder4                                  = 68,
>> +    VpPlaceholder5                                  = 69,
>> +    VpPlaceholder6                                  = 70,
>> +    VpPlaceholder7                                  = 71,
>> +    VpPlaceholder8                                  = 72,
>> +    VpContentionTime                                = 73,
>> +    VpWakeUpTime                                    = 74,
>> +    VpSchedulingPriority                            = 75,
>> +    VpVtl1DispatchCount                             = 76,
>> +    VpVtl2DispatchCount                             = 77,
>> +    VpVtl2DispatchBucket0                           = 78,
>> +    VpVtl2DispatchBucket1                           = 79,
>> +    VpVtl2DispatchBucket2                           = 80,
>> +    VpVtl2DispatchBucket3                           = 81,
>> +    VpVtl2DispatchBucket4                           = 82,
>> +    VpVtl2DispatchBucket5                           = 83,
>> +    VpVtl2DispatchBucket6                           = 84,
>> +    VpVtl1RunTime                                   = 85,
>> +    VpVtl2RunTime                                   = 86,
>> +    VpIommuHypercalls                               = 87,
>> +    VpCpuGroupHypercalls                            = 88,
>> +    VpVsmHypercalls                                 = 89,
>> +    VpEventLogHypercalls                            = 90,
>> +    VpDeviceDomainHypercalls                        = 91,
>> +    VpDepositHypercalls                             = 92,
>> +    VpSvmHypercalls                                 = 93,
>> +    VpLoadAvg                                       = 94,
>> +    VpRootDispatchThreadBlocked                     = 95,
> 
> In current code, VpRootDispatchThreadBlocked on ARM64 is 94. Is that an
> error that is being corrected by this patch?
> 

Hmm, I didn't realize this changed - 95 is the correct value. However,
the mshv driver does not yet support on ARM64, so this fix doesn't
have any impact right now. Do you suggest a separate patch to fix it?

>> +#endif
>> +    VpStatsMaxCounter
>> +};
>> +
>> +enum hv_stats_lp_counters {                 /* HV_CPU_COUNTER */
>> +    LpGlobalTime                            = 1,
>> +    LpTotalRunTime                          = 2,
>> +    LpHypervisorRunTime                     = 3,
>> +    LpHardwareInterrupts                    = 4,
>> +    LpContextSwitches                       = 5,
>> +    LpInterProcessorInterrupts              = 6,
>> +    LpSchedulerInterrupts                   = 7,
>> +    LpTimerInterrupts                       = 8,
>> +    LpInterProcessorInterruptsSent          = 9,
>> +    LpProcessorHalts                        = 10,
>> +    LpMonitorTransitionCost                 = 11,
>> +    LpContextSwitchTime                     = 12,
>> +    LpC1TransitionsCount                    = 13,
>> +    LpC1RunTime                             = 14,
>> +    LpC2TransitionsCount                    = 15,
>> +    LpC2RunTime                             = 16,
>> +    LpC3TransitionsCount                    = 17,
>> +    LpC3RunTime                             = 18,
>> +    LpRootVpIndex                           = 19,
>> +    LpIdleSequenceNumber                    = 20,
>> +    LpGlobalTscCount                        = 21,
>> +    LpActiveTscCount                        = 22,
>> +    LpIdleAccumulation                      = 23,
>> +    LpReferenceCycleCount0                  = 24,
>> +    LpActualCycleCount0                     = 25,
>> +    LpReferenceCycleCount1                  = 26,
>> +    LpActualCycleCount1                     = 27,
>> +    LpProximityDomainId                     = 28,
>> +    LpPostedInterruptNotifications          = 29,
>> +    LpBranchPredictorFlushes                = 30,
>> +#if IS_ENABLED(CONFIG_X86_64)
>> +    LpL1DataCacheFlushes                    = 31,
>> +    LpImmediateL1DataCacheFlushes           = 32,
>> +    LpMbFlushes                             = 33,
>> +    LpCounterRefreshSequenceNumber          = 34,
>> +    LpCounterRefreshReferenceTime           = 35,
>> +    LpIdleAccumulationSnapshot              = 36,
>> +    LpActiveTscCountSnapshot                = 37,
>> +    LpHwpRequestContextSwitches             = 38,
>> +    LpPlaceholder1                          = 39,
>> +    LpPlaceholder2                          = 40,
>> +    LpPlaceholder3                          = 41,
>> +    LpPlaceholder4                          = 42,
>> +    LpPlaceholder5                          = 43,
>> +    LpPlaceholder6                          = 44,
>> +    LpPlaceholder7                          = 45,
>> +    LpPlaceholder8                          = 46,
>> +    LpPlaceholder9                          = 47,
>> +    LpPlaceholder10                         = 48,
>> +    LpReserveGroupId                        = 49,
>> +    LpRunningPriority                       = 50,
>> +    LpPerfmonInterruptCount                 = 51,
>> +#elif IS_ENABLED(CONFIG_ARM64)
>> +    LpCounterRefreshSequenceNumber          = 31,
>> +    LpCounterRefreshReferenceTime           = 32,
>> +    LpIdleAccumulationSnapshot              = 33,
>> +    LpActiveTscCountSnapshot                = 34,
>> +    LpHwpRequestContextSwitches             = 35,
>> +    LpPlaceholder2                          = 36,
>> +    LpPlaceholder3                          = 37,
>> +    LpPlaceholder4                          = 38,
>> +    LpPlaceholder5                          = 39,
>> +    LpPlaceholder6                          = 40,
>> +    LpPlaceholder7                          = 41,
>> +    LpPlaceholder8                          = 42,
>> +    LpPlaceholder9                          = 43,
>> +    LpSchLocalRunListSize                   = 44,
>> +    LpReserveGroupId                        = 45,
>> +    LpRunningPriority                       = 46,
>> +#endif
>> +    LpStatsMaxCounter
>> +};
>> +
>> +/*
>> + * Hypervisor statsitics page format
> 
> s/statsitics/statistics/
> 
Ack, thanks

>> + */
>> +struct hv_stats_page {
>> +    union {
>> +            u64 hv_cntrs[HvStatsMaxCounter];                /* Hypervisor 
>> counters
>> */
>> +            u64 pt_cntrs[PartitionStatsMaxCounter];         /* Partition
>> counters */
>> +            u64 vp_cntrs[VpStatsMaxCounter];                /* VP counters 
>> */
>> +            u64 lp_cntrs[LpStatsMaxCounter];                /* LP counters 
>> */
>> +            u8 data[HV_HYP_PAGE_SIZE];
>> +    };
>> +} __packed;
>> +
>>  /* Bits for dirty mask of hv_vp_register_page */
>>  #define HV_X64_REGISTER_CLASS_GENERAL       0
>>  #define HV_X64_REGISTER_CLASS_IP    1
>> --
>> 2.34.1


Reply via email to