// 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
};
