490 lines · 15.8 KB · C
RawDownload
// SPDX-License-Identifier: GPL-2.0-only/* * Copyright (c) 2026, Microsoft Corporation. * * Data for printing stats page counters via debugfs. * * Authors: Microsoft Linux virtualization team */ /* * For simplicity, this file is included directly in mshv_debugfs.c. * If these are ever needed elsewhere they should be compiled separately. * Ensure this file is not used twice by accident. */#ifndef MSHV_DEBUGFS_C#error "This file should only be included in mshv_debugfs.c"#endif /* HV_HYPERVISOR_COUNTER */static char *hv_hypervisor_counters[] = {	[1] = "HvLogicalProcessors",	[2] = "HvPartitions",	[3] = "HvTotalPages",	[4] = "HvVirtualProcessors",	[5] = "HvMonitoredNotifications",	[6] = "HvModernStandbyEntries",	[7] = "HvPlatformIdleTransitions",	[8] = "HvHypervisorStartupCost", 	[10] = "HvIOSpacePages",	[11] = "HvNonEssentialPagesForDump",	[12] = "HvSubsumedPages",}; /* HV_CPU_COUNTER */static char *hv_lp_counters[] = {	[1] = "LpGlobalTime",	[2] = "LpTotalRunTime",	[3] = "LpHypervisorRunTime",	[4] = "LpHardwareInterrupts",	[5] = "LpContextSwitches",	[6] = "LpInterProcessorInterrupts",	[7] = "LpSchedulerInterrupts",	[8] = "LpTimerInterrupts",	[9] = "LpInterProcessorInterruptsSent",	[10] = "LpProcessorHalts",	[11] = "LpMonitorTransitionCost",	[12] = "LpContextSwitchTime",	[13] = "LpC1TransitionsCount",	[14] = "LpC1RunTime",	[15] = "LpC2TransitionsCount",	[16] = "LpC2RunTime",	[17] = "LpC3TransitionsCount",	[18] = "LpC3RunTime",	[19] = "LpRootVpIndex",	[20] = "LpIdleSequenceNumber",	[21] = "LpGlobalTscCount",	[22] = "LpActiveTscCount",	[23] = "LpIdleAccumulation",	[24] = "LpReferenceCycleCount0",	[25] = "LpActualCycleCount0",	[26] = "LpReferenceCycleCount1",	[27] = "LpActualCycleCount1",	[28] = "LpProximityDomainId",	[29] = "LpPostedInterruptNotifications",	[30] = "LpBranchPredictorFlushes",#if IS_ENABLED(CONFIG_X86_64)	[31] = "LpL1DataCacheFlushes",	[32] = "LpImmediateL1DataCacheFlushes",	[33] = "LpMbFlushes",	[34] = "LpCounterRefreshSequenceNumber",	[35] = "LpCounterRefreshReferenceTime",	[36] = "LpIdleAccumulationSnapshot",	[37] = "LpActiveTscCountSnapshot",	[38] = "LpHwpRequestContextSwitches",	[39] = "LpPlaceholder1",	[40] = "LpPlaceholder2",	[41] = "LpPlaceholder3",	[42] = "LpPlaceholder4",	[43] = "LpPlaceholder5",	[44] = "LpPlaceholder6",	[45] = "LpPlaceholder7",	[46] = "LpPlaceholder8",	[47] = "LpPlaceholder9",	[48] = "LpSchLocalRunListSize",	[49] = "LpReserveGroupId",	[50] = "LpRunningPriority",	[51] = "LpPerfmonInterruptCount",#elif IS_ENABLED(CONFIG_ARM64)	[31] = "LpCounterRefreshSequenceNumber",	[32] = "LpCounterRefreshReferenceTime",	[33] = "LpIdleAccumulationSnapshot",	[34] = "LpActiveTscCountSnapshot",	[35] = "LpHwpRequestContextSwitches",	[36] = "LpPlaceholder2",	[37] = "LpPlaceholder3",	[38] = "LpPlaceholder4",	[39] = "LpPlaceholder5",	[40] = "LpPlaceholder6",	[41] = "LpPlaceholder7",	[42] = "LpPlaceholder8",	[43] = "LpPlaceholder9",	[44] = "LpSchLocalRunListSize",	[45] = "LpReserveGroupId",	[46] = "LpRunningPriority",#endif}; /* HV_PROCESS_COUNTER */static char *hv_partition_counters[] = {	[1] = "PtVirtualProcessors", 	[3] = "PtTlbSize",	[4] = "PtAddressSpaces",	[5] = "PtDepositedPages",	[6] = "PtGpaPages",	[7] = "PtGpaSpaceModifications",	[8] = "PtVirtualTlbFlushEntires",	[9] = "PtRecommendedTlbSize",	[10] = "PtGpaPages4K",	[11] = "PtGpaPages2M",	[12] = "PtGpaPages1G",	[13] = "PtGpaPages512G",	[14] = "PtDevicePages4K",	[15] = "PtDevicePages2M",	[16] = "PtDevicePages1G",	[17] = "PtDevicePages512G",	[18] = "PtAttachedDevices",	[19] = "PtDeviceInterruptMappings",	[20] = "PtIoTlbFlushes",	[21] = "PtIoTlbFlushCost",	[22] = "PtDeviceInterruptErrors",	[23] = "PtDeviceDmaErrors",	[24] = "PtDeviceInterruptThrottleEvents",	[25] = "PtSkippedTimerTicks",	[26] = "PtPartitionId",#if IS_ENABLED(CONFIG_X86_64)	[27] = "PtNestedTlbSize",	[28] = "PtRecommendedNestedTlbSize",	[29] = "PtNestedTlbFreeListSize",	[30] = "PtNestedTlbTrimmedPages",	[31] = "PtPagesShattered",	[32] = "PtPagesRecombined",	[33] = "PtHwpRequestValue",	[34] = "PtAutoSuspendEnableTime",	[35] = "PtAutoSuspendTriggerTime",	[36] = "PtAutoSuspendDisableTime",	[37] = "PtPlaceholder1",	[38] = "PtPlaceholder2",	[39] = "PtPlaceholder3",	[40] = "PtPlaceholder4",	[41] = "PtPlaceholder5",	[42] = "PtPlaceholder6",	[43] = "PtPlaceholder7",	[44] = "PtPlaceholder8",	[45] = "PtHypervisorStateTransferGeneration",	[46] = "PtNumberofActiveChildPartitions",#elif IS_ENABLED(CONFIG_ARM64)	[27] = "PtHwpRequestValue",	[28] = "PtAutoSuspendEnableTime",	[29] = "PtAutoSuspendTriggerTime",	[30] = "PtAutoSuspendDisableTime",	[31] = "PtPlaceholder1",	[32] = "PtPlaceholder2",	[33] = "PtPlaceholder3",	[34] = "PtPlaceholder4",	[35] = "PtPlaceholder5",	[36] = "PtPlaceholder6",	[37] = "PtPlaceholder7",	[38] = "PtPlaceholder8",	[39] = "PtHypervisorStateTransferGeneration",	[40] = "PtNumberofActiveChildPartitions",#endif}; /* HV_THREAD_COUNTER */static char *hv_vp_counters[] = {	[1] = "VpTotalRunTime",	[2] = "VpHypervisorRunTime",	[3] = "VpRemoteNodeRunTime",	[4] = "VpNormalizedRunTime",	[5] = "VpIdealCpu", 	[7] = "VpHypercallsCount",	[8] = "VpHypercallsTime",#if IS_ENABLED(CONFIG_X86_64)	[9] = "VpPageInvalidationsCount",	[10] = "VpPageInvalidationsTime",	[11] = "VpControlRegisterAccessesCount",	[12] = "VpControlRegisterAccessesTime",	[13] = "VpIoInstructionsCount",	[14] = "VpIoInstructionsTime",	[15] = "VpHltInstructionsCount",	[16] = "VpHltInstructionsTime",	[17] = "VpMwaitInstructionsCount",	[18] = "VpMwaitInstructionsTime",	[19] = "VpCpuidInstructionsCount",	[20] = "VpCpuidInstructionsTime",	[21] = "VpMsrAccessesCount",	[22] = "VpMsrAccessesTime",	[23] = "VpOtherInterceptsCount",	[24] = "VpOtherInterceptsTime",	[25] = "VpExternalInterruptsCount",	[26] = "VpExternalInterruptsTime",	[27] = "VpPendingInterruptsCount",	[28] = "VpPendingInterruptsTime",	[29] = "VpEmulatedInstructionsCount",	[30] = "VpEmulatedInstructionsTime",	[31] = "VpDebugRegisterAccessesCount",	[32] = "VpDebugRegisterAccessesTime",	[33] = "VpPageFaultInterceptsCount",	[34] = "VpPageFaultInterceptsTime",	[35] = "VpGuestPageTableMaps",	[36] = "VpLargePageTlbFills",	[37] = "VpSmallPageTlbFills",	[38] = "VpReflectedGuestPageFaults",	[39] = "VpApicMmioAccesses",	[40] = "VpIoInterceptMessages",	[41] = "VpMemoryInterceptMessages",	[42] = "VpApicEoiAccesses",	[43] = "VpOtherMessages",	[44] = "VpPageTableAllocations",	[45] = "VpLogicalProcessorMigrations",	[46] = "VpAddressSpaceEvictions",	[47] = "VpAddressSpaceSwitches",	[48] = "VpAddressDomainFlushes",	[49] = "VpAddressSpaceFlushes",	[50] = "VpGlobalGvaRangeFlushes",	[51] = "VpLocalGvaRangeFlushes",	[52] = "VpPageTableEvictions",	[53] = "VpPageTableReclamations",	[54] = "VpPageTableResets",	[55] = "VpPageTableValidations",	[56] = "VpApicTprAccesses",	[57] = "VpPageTableWriteIntercepts",	[58] = "VpSyntheticInterrupts",	[59] = "VpVirtualInterrupts",	[60] = "VpApicIpisSent",	[61] = "VpApicSelfIpisSent",	[62] = "VpGpaSpaceHypercalls",	[63] = "VpLogicalProcessorHypercalls",	[64] = "VpLongSpinWaitHypercalls",	[65] = "VpOtherHypercalls",	[66] = "VpSyntheticInterruptHypercalls",	[67] = "VpVirtualInterruptHypercalls",	[68] = "VpVirtualMmuHypercalls",	[69] = "VpVirtualProcessorHypercalls",	[70] = "VpHardwareInterrupts",	[71] = "VpNestedPageFaultInterceptsCount",	[72] = "VpNestedPageFaultInterceptsTime",	[73] = "VpPageScans",	[74] = "VpLogicalProcessorDispatches",	[75] = "VpWaitingForCpuTime",	[76] = "VpExtendedHypercalls",	[77] = "VpExtendedHypercallInterceptMessages",	[78] = "VpMbecNestedPageTableSwitches",	[79] = "VpOtherReflectedGuestExceptions",	[80] = "VpGlobalIoTlbFlushes",	[81] = "VpGlobalIoTlbFlushCost",	[82] = "VpLocalIoTlbFlushes",	[83] = "VpLocalIoTlbFlushCost",	[84] = "VpHypercallsForwardedCount",	[85] = "VpHypercallsForwardingTime",	[86] = "VpPageInvalidationsForwardedCount",	[87] = "VpPageInvalidationsForwardingTime",	[88] = "VpControlRegisterAccessesForwardedCount",	[89] = "VpControlRegisterAccessesForwardingTime",	[90] = "VpIoInstructionsForwardedCount",	[91] = "VpIoInstructionsForwardingTime",	[92] = "VpHltInstructionsForwardedCount",	[93] = "VpHltInstructionsForwardingTime",	[94] = "VpMwaitInstructionsForwardedCount",	[95] = "VpMwaitInstructionsForwardingTime",	[96] = "VpCpuidInstructionsForwardedCount",	[97] = "VpCpuidInstructionsForwardingTime",	[98] = "VpMsrAccessesForwardedCount",	[99] = "VpMsrAccessesForwardingTime",	[100] = "VpOtherInterceptsForwardedCount",	[101] = "VpOtherInterceptsForwardingTime",	[102] = "VpExternalInterruptsForwardedCount",	[103] = "VpExternalInterruptsForwardingTime",	[104] = "VpPendingInterruptsForwardedCount",	[105] = "VpPendingInterruptsForwardingTime",	[106] = "VpEmulatedInstructionsForwardedCount",	[107] = "VpEmulatedInstructionsForwardingTime",	[108] = "VpDebugRegisterAccessesForwardedCount",	[109] = "VpDebugRegisterAccessesForwardingTime",	[110] = "VpPageFaultInterceptsForwardedCount",	[111] = "VpPageFaultInterceptsForwardingTime",	[112] = "VpVmclearEmulationCount",	[113] = "VpVmclearEmulationTime",	[114] = "VpVmptrldEmulationCount",	[115] = "VpVmptrldEmulationTime",	[116] = "VpVmptrstEmulationCount",	[117] = "VpVmptrstEmulationTime",	[118] = "VpVmreadEmulationCount",	[119] = "VpVmreadEmulationTime",	[120] = "VpVmwriteEmulationCount",	[121] = "VpVmwriteEmulationTime",	[122] = "VpVmxoffEmulationCount",	[123] = "VpVmxoffEmulationTime",	[124] = "VpVmxonEmulationCount",	[125] = "VpVmxonEmulationTime",	[126] = "VpNestedVMEntriesCount",	[127] = "VpNestedVMEntriesTime",	[128] = "VpNestedSLATSoftPageFaultsCount",	[129] = "VpNestedSLATSoftPageFaultsTime",	[130] = "VpNestedSLATHardPageFaultsCount",	[131] = "VpNestedSLATHardPageFaultsTime",	[132] = "VpInvEptAllContextEmulationCount",	[133] = "VpInvEptAllContextEmulationTime",	[134] = "VpInvEptSingleContextEmulationCount",	[135] = "VpInvEptSingleContextEmulationTime",	[136] = "VpInvVpidAllContextEmulationCount",	[137] = "VpInvVpidAllContextEmulationTime",	[138] = "VpInvVpidSingleContextEmulationCount",	[139] = "VpInvVpidSingleContextEmulationTime",	[140] = "VpInvVpidSingleAddressEmulationCount",	[141] = "VpInvVpidSingleAddressEmulationTime",	[142] = "VpNestedTlbPageTableReclamations",	[143] = "VpNestedTlbPageTableEvictions",	[144] = "VpFlushGuestPhysicalAddressSpaceHypercalls",	[145] = "VpFlushGuestPhysicalAddressListHypercalls",	[146] = "VpPostedInterruptNotifications",	[147] = "VpPostedInterruptScans",	[148] = "VpTotalCoreRunTime",	[149] = "VpMaximumRunTime",	[150] = "VpHwpRequestContextSwitches",	[151] = "VpWaitingForCpuTimeBucket0",	[152] = "VpWaitingForCpuTimeBucket1",	[153] = "VpWaitingForCpuTimeBucket2",	[154] = "VpWaitingForCpuTimeBucket3",	[155] = "VpWaitingForCpuTimeBucket4",	[156] = "VpWaitingForCpuTimeBucket5",	[157] = "VpWaitingForCpuTimeBucket6",	[158] = "VpVmloadEmulationCount",	[159] = "VpVmloadEmulationTime",	[160] = "VpVmsaveEmulationCount",	[161] = "VpVmsaveEmulationTime",	[162] = "VpGifInstructionEmulationCount",	[163] = "VpGifInstructionEmulationTime",	[164] = "VpEmulatedErrataSvmInstructions",	[165] = "VpPlaceholder1",	[166] = "VpPlaceholder2",	[167] = "VpPlaceholder3",	[168] = "VpPlaceholder4",	[169] = "VpPlaceholder5",	[170] = "VpPlaceholder6",	[171] = "VpPlaceholder7",	[172] = "VpPlaceholder8",	[173] = "VpContentionTime",	[174] = "VpWakeUpTime",	[175] = "VpSchedulingPriority",	[176] = "VpRdpmcInstructionsCount",	[177] = "VpRdpmcInstructionsTime",	[178] = "VpPerfmonPmuMsrAccessesCount",	[179] = "VpPerfmonLbrMsrAccessesCount",	[180] = "VpPerfmonIptMsrAccessesCount",	[181] = "VpPerfmonInterruptCount",	[182] = "VpVtl1DispatchCount",	[183] = "VpVtl2DispatchCount",	[184] = "VpVtl2DispatchBucket0",	[185] = "VpVtl2DispatchBucket1",	[186] = "VpVtl2DispatchBucket2",	[187] = "VpVtl2DispatchBucket3",	[188] = "VpVtl2DispatchBucket4",	[189] = "VpVtl2DispatchBucket5",	[190] = "VpVtl2DispatchBucket6",	[191] = "VpVtl1RunTime",	[192] = "VpVtl2RunTime",	[193] = "VpIommuHypercalls",	[194] = "VpCpuGroupHypercalls",	[195] = "VpVsmHypercalls",	[196] = "VpEventLogHypercalls",	[197] = "VpDeviceDomainHypercalls",	[198] = "VpDepositHypercalls",	[199] = "VpSvmHypercalls",	[200] = "VpBusLockAcquisitionCount",	[201] = "VpLoadAvg",	[202] = "VpRootDispatchThreadBlocked",	[203] = "VpIdleCpuTime",	[204] = "VpWaitingForCpuTimeBucket7",	[205] = "VpWaitingForCpuTimeBucket8",	[206] = "VpWaitingForCpuTimeBucket9",	[207] = "VpWaitingForCpuTimeBucket10",	[208] = "VpWaitingForCpuTimeBucket11",	[209] = "VpWaitingForCpuTimeBucket12",	[210] = "VpHierarchicalSuspendTime",	[211] = "VpExpressSchedulingAttempts",	[212] = "VpExpressSchedulingCount",#elif IS_ENABLED(CONFIG_ARM64)	[9] = "VpSysRegAccessesCount",	[10] = "VpSysRegAccessesTime",	[11] = "VpSmcInstructionsCount",	[12] = "VpSmcInstructionsTime",	[13] = "VpOtherInterceptsCount",	[14] = "VpOtherInterceptsTime",	[15] = "VpExternalInterruptsCount",	[16] = "VpExternalInterruptsTime",	[17] = "VpPendingInterruptsCount",	[18] = "VpPendingInterruptsTime",	[19] = "VpGuestPageTableMaps",	[20] = "VpLargePageTlbFills",	[21] = "VpSmallPageTlbFills",	[22] = "VpReflectedGuestPageFaults",	[23] = "VpMemoryInterceptMessages",	[24] = "VpOtherMessages",	[25] = "VpLogicalProcessorMigrations",	[26] = "VpAddressDomainFlushes",	[27] = "VpAddressSpaceFlushes",	[28] = "VpSyntheticInterrupts",	[29] = "VpVirtualInterrupts",	[30] = "VpApicSelfIpisSent",	[31] = "VpGpaSpaceHypercalls",	[32] = "VpLogicalProcessorHypercalls",	[33] = "VpLongSpinWaitHypercalls",	[34] = "VpOtherHypercalls",	[35] = "VpSyntheticInterruptHypercalls",	[36] = "VpVirtualInterruptHypercalls",	[37] = "VpVirtualMmuHypercalls",	[38] = "VpVirtualProcessorHypercalls",	[39] = "VpHardwareInterrupts",	[40] = "VpNestedPageFaultInterceptsCount",	[41] = "VpNestedPageFaultInterceptsTime",	[42] = "VpLogicalProcessorDispatches",	[43] = "VpWaitingForCpuTime",	[44] = "VpExtendedHypercalls",	[45] = "VpExtendedHypercallInterceptMessages",	[46] = "VpMbecNestedPageTableSwitches",	[47] = "VpOtherReflectedGuestExceptions",	[48] = "VpGlobalIoTlbFlushes",	[49] = "VpGlobalIoTlbFlushCost",	[50] = "VpLocalIoTlbFlushes",	[51] = "VpLocalIoTlbFlushCost",	[52] = "VpFlushGuestPhysicalAddressSpaceHypercalls",	[53] = "VpFlushGuestPhysicalAddressListHypercalls",	[54] = "VpPostedInterruptNotifications",	[55] = "VpPostedInterruptScans",	[56] = "VpTotalCoreRunTime",	[57] = "VpMaximumRunTime",	[58] = "VpWaitingForCpuTimeBucket0",	[59] = "VpWaitingForCpuTimeBucket1",	[60] = "VpWaitingForCpuTimeBucket2",	[61] = "VpWaitingForCpuTimeBucket3",	[62] = "VpWaitingForCpuTimeBucket4",	[63] = "VpWaitingForCpuTimeBucket5",	[64] = "VpWaitingForCpuTimeBucket6",	[65] = "VpHwpRequestContextSwitches",	[66] = "VpPlaceholder2",	[67] = "VpPlaceholder3",	[68] = "VpPlaceholder4",	[69] = "VpPlaceholder5",	[70] = "VpPlaceholder6",	[71] = "VpPlaceholder7",	[72] = "VpPlaceholder8",	[73] = "VpContentionTime",	[74] = "VpWakeUpTime",	[75] = "VpSchedulingPriority",	[76] = "VpVtl1DispatchCount",	[77] = "VpVtl2DispatchCount",	[78] = "VpVtl2DispatchBucket0",	[79] = "VpVtl2DispatchBucket1",	[80] = "VpVtl2DispatchBucket2",	[81] = "VpVtl2DispatchBucket3",	[82] = "VpVtl2DispatchBucket4",	[83] = "VpVtl2DispatchBucket5",	[84] = "VpVtl2DispatchBucket6",	[85] = "VpVtl1RunTime",	[86] = "VpVtl2RunTime",	[87] = "VpIommuHypercalls",	[88] = "VpCpuGroupHypercalls",	[89] = "VpVsmHypercalls",	[90] = "VpEventLogHypercalls",	[91] = "VpDeviceDomainHypercalls",	[92] = "VpDepositHypercalls",	[93] = "VpSvmHypercalls",	[94] = "VpLoadAvg",	[95] = "VpRootDispatchThreadBlocked",	[96] = "VpIdleCpuTime",	[97] = "VpWaitingForCpuTimeBucket7",	[98] = "VpWaitingForCpuTimeBucket8",	[99] = "VpWaitingForCpuTimeBucket9",	[100] = "VpWaitingForCpuTimeBucket10",	[101] = "VpWaitingForCpuTimeBucket11",	[102] = "VpWaitingForCpuTimeBucket12",	[103] = "VpHierarchicalSuspendTime",	[104] = "VpExpressSchedulingAttempts",	[105] = "VpExpressSchedulingCount",#endif};