From: Nuno Das Neves <[email protected]> Sent: Tuesday, December
30, 2025 3:04 PM
>
> 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?
I don’t see a need for a separate patch. Maybe just put a short note
about the change in the commit message for this patch, so that it is
recorded as intentional and not a random typo. Long lists like these
have been known to get fat-fingered from time-to-time. :-)
>
> >> +#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