From nobody Tue Dec 16 15:13:55 2025 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6472C3491F2; Fri, 5 Dec 2025 19:04:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764961475; cv=none; b=he8HyX0/bbCillWQ8vqASD5yEM18WvOVMtqf+1gDDF52zRodQGOlWJvClUyhCUeE3ZSwKCo7Mzq4fekwWDp5cvhuAy6Eto269fVSoF6JQbltR40yb1BXJIkPePcfd8QYHd1Y5eX7P+nTlAgEZxCOWSWoWLdZCvuvPa9FGz2Idoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764961475; c=relaxed/simple; bh=bM9PElcuEXWdGYkayhR6EZIGiGNZy0scIboXcaRA2Os=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=XQu3TVzmjXEmSk4ZQGovl56F8R88YeakcZlzJGQFoHKefrBq8Yv3gg/6Yc/pS0qPcWErTod07Hzl1VGSCOrwks6VvRZRorQdfT0k+mev5XABIrmHTwVD+gD9F+k8j14JHL7BMh+wE9O4ZybozWnKTZ8T2rFFLyqoaQyl53Gh8M8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=lRcFWhPm; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="lRcFWhPm" Received: by linux.microsoft.com (Postfix, from userid 1032) id CB76F2123275; Fri, 5 Dec 2025 10:58:44 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com CB76F2123275 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1764961124; bh=WYIwhizzfmF9qkkAuYpnBp5edUqACZ3Pw9ibhDwG1TE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lRcFWhPmo8YAVQpv3qpbU9ze8FHJWzVojQI/XzrxgSFtXFuc7JGrL7ExilaFGOb55 YRISsvdOc4yMzyo9FzOO6qOftUbKAvYa7sz7J5j2dvC0K0gCcsLIWhTIFjDDDQd302 ps8Km9sn56zfavGmKl/+fAmeRHDONL2TzgpGEznY= From: Nuno Das Neves To: linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org, skinsburskii@linux.microsoft.com Cc: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, mhklinux@outlook.com, prapal@linux.microsoft.com, mrathor@linux.microsoft.com, paekkaladevi@linux.microsoft.com, Nuno Das Neves Subject: [PATCH v2 2/3] mshv: Add definitions for stats pages Date: Fri, 5 Dec 2025 10:58:41 -0800 Message-Id: <1764961122-31679-3-git-send-email-nunodasneves@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1764961122-31679-1-git-send-email-nunodasneves@linux.microsoft.com> References: <1764961122-31679-1-git-send-email-nunodasneves@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 the stats out, and retain more readability in this form. Signed-off-by: Nuno Das Neves Acked-by: Stanislav Kinsburskii --- 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/ms= hv"); =20 -/* TODO move this to another file when debugfs code is added */ -enum hv_stats_vp_counters { /* HV_THREAD_COUNTER */ -#if defined(CONFIG_X86) - VpRootDispatchThreadBlocked =3D 202, -#elif defined(CONFIG_ARM64) - VpRootDispatchThreadBlocked =3D 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; =20 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" =20 +enum hv_stats_hypervisor_counters { /* HV_HYPERVISOR_COUNTER */ + HvLogicalProcessors =3D 1, + HvPartitions =3D 2, + HvTotalPages =3D 3, + HvVirtualProcessors =3D 4, + HvMonitoredNotifications =3D 5, + HvModernStandbyEntries =3D 6, + HvPlatformIdleTransitions =3D 7, + HvHypervisorStartupCost =3D 8, + HvIOSpacePages =3D 10, + HvNonEssentialPagesForDump =3D 11, + HvSubsumedPages =3D 12, + HvStatsMaxCounter +}; + +enum hv_stats_partition_counters { /* HV_PROCESS_COUNTER */ + PartitionVirtualProcessors =3D 1, + PartitionTlbSize =3D 3, + PartitionAddressSpaces =3D 4, + PartitionDepositedPages =3D 5, + PartitionGpaPages =3D 6, + PartitionGpaSpaceModifications =3D 7, + PartitionVirtualTlbFlushEntires =3D 8, + PartitionRecommendedTlbSize =3D 9, + PartitionGpaPages4K =3D 10, + PartitionGpaPages2M =3D 11, + PartitionGpaPages1G =3D 12, + PartitionGpaPages512G =3D 13, + PartitionDevicePages4K =3D 14, + PartitionDevicePages2M =3D 15, + PartitionDevicePages1G =3D 16, + PartitionDevicePages512G =3D 17, + PartitionAttachedDevices =3D 18, + PartitionDeviceInterruptMappings =3D 19, + PartitionIoTlbFlushes =3D 20, + PartitionIoTlbFlushCost =3D 21, + PartitionDeviceInterruptErrors =3D 22, + PartitionDeviceDmaErrors =3D 23, + PartitionDeviceInterruptThrottleEvents =3D 24, + PartitionSkippedTimerTicks =3D 25, + PartitionPartitionId =3D 26, +#if IS_ENABLED(CONFIG_X86_64) + PartitionNestedTlbSize =3D 27, + PartitionRecommendedNestedTlbSize =3D 28, + PartitionNestedTlbFreeListSize =3D 29, + PartitionNestedTlbTrimmedPages =3D 30, + PartitionPagesShattered =3D 31, + PartitionPagesRecombined =3D 32, + PartitionHwpRequestValue =3D 33, +#elif IS_ENABLED(CONFIG_ARM64) + PartitionHwpRequestValue =3D 27, +#endif + PartitionStatsMaxCounter +}; + +enum hv_stats_vp_counters { /* HV_THREAD_COUNTER */ + VpTotalRunTime =3D 1, + VpHypervisorRunTime =3D 2, + VpRemoteNodeRunTime =3D 3, + VpNormalizedRunTime =3D 4, + VpIdealCpu =3D 5, + VpHypercallsCount =3D 7, + VpHypercallsTime =3D 8, +#if IS_ENABLED(CONFIG_X86_64) + VpPageInvalidationsCount =3D 9, + VpPageInvalidationsTime =3D 10, + VpControlRegisterAccessesCount =3D 11, + VpControlRegisterAccessesTime =3D 12, + VpIoInstructionsCount =3D 13, + VpIoInstructionsTime =3D 14, + VpHltInstructionsCount =3D 15, + VpHltInstructionsTime =3D 16, + VpMwaitInstructionsCount =3D 17, + VpMwaitInstructionsTime =3D 18, + VpCpuidInstructionsCount =3D 19, + VpCpuidInstructionsTime =3D 20, + VpMsrAccessesCount =3D 21, + VpMsrAccessesTime =3D 22, + VpOtherInterceptsCount =3D 23, + VpOtherInterceptsTime =3D 24, + VpExternalInterruptsCount =3D 25, + VpExternalInterruptsTime =3D 26, + VpPendingInterruptsCount =3D 27, + VpPendingInterruptsTime =3D 28, + VpEmulatedInstructionsCount =3D 29, + VpEmulatedInstructionsTime =3D 30, + VpDebugRegisterAccessesCount =3D 31, + VpDebugRegisterAccessesTime =3D 32, + VpPageFaultInterceptsCount =3D 33, + VpPageFaultInterceptsTime =3D 34, + VpGuestPageTableMaps =3D 35, + VpLargePageTlbFills =3D 36, + VpSmallPageTlbFills =3D 37, + VpReflectedGuestPageFaults =3D 38, + VpApicMmioAccesses =3D 39, + VpIoInterceptMessages =3D 40, + VpMemoryInterceptMessages =3D 41, + VpApicEoiAccesses =3D 42, + VpOtherMessages =3D 43, + VpPageTableAllocations =3D 44, + VpLogicalProcessorMigrations =3D 45, + VpAddressSpaceEvictions =3D 46, + VpAddressSpaceSwitches =3D 47, + VpAddressDomainFlushes =3D 48, + VpAddressSpaceFlushes =3D 49, + VpGlobalGvaRangeFlushes =3D 50, + VpLocalGvaRangeFlushes =3D 51, + VpPageTableEvictions =3D 52, + VpPageTableReclamations =3D 53, + VpPageTableResets =3D 54, + VpPageTableValidations =3D 55, + VpApicTprAccesses =3D 56, + VpPageTableWriteIntercepts =3D 57, + VpSyntheticInterrupts =3D 58, + VpVirtualInterrupts =3D 59, + VpApicIpisSent =3D 60, + VpApicSelfIpisSent =3D 61, + VpGpaSpaceHypercalls =3D 62, + VpLogicalProcessorHypercalls =3D 63, + VpLongSpinWaitHypercalls =3D 64, + VpOtherHypercalls =3D 65, + VpSyntheticInterruptHypercalls =3D 66, + VpVirtualInterruptHypercalls =3D 67, + VpVirtualMmuHypercalls =3D 68, + VpVirtualProcessorHypercalls =3D 69, + VpHardwareInterrupts =3D 70, + VpNestedPageFaultInterceptsCount =3D 71, + VpNestedPageFaultInterceptsTime =3D 72, + VpPageScans =3D 73, + VpLogicalProcessorDispatches =3D 74, + VpWaitingForCpuTime =3D 75, + VpExtendedHypercalls =3D 76, + VpExtendedHypercallInterceptMessages =3D 77, + VpMbecNestedPageTableSwitches =3D 78, + VpOtherReflectedGuestExceptions =3D 79, + VpGlobalIoTlbFlushes =3D 80, + VpGlobalIoTlbFlushCost =3D 81, + VpLocalIoTlbFlushes =3D 82, + VpLocalIoTlbFlushCost =3D 83, + VpHypercallsForwardedCount =3D 84, + VpHypercallsForwardingTime =3D 85, + VpPageInvalidationsForwardedCount =3D 86, + VpPageInvalidationsForwardingTime =3D 87, + VpControlRegisterAccessesForwardedCount =3D 88, + VpControlRegisterAccessesForwardingTime =3D 89, + VpIoInstructionsForwardedCount =3D 90, + VpIoInstructionsForwardingTime =3D 91, + VpHltInstructionsForwardedCount =3D 92, + VpHltInstructionsForwardingTime =3D 93, + VpMwaitInstructionsForwardedCount =3D 94, + VpMwaitInstructionsForwardingTime =3D 95, + VpCpuidInstructionsForwardedCount =3D 96, + VpCpuidInstructionsForwardingTime =3D 97, + VpMsrAccessesForwardedCount =3D 98, + VpMsrAccessesForwardingTime =3D 99, + VpOtherInterceptsForwardedCount =3D 100, + VpOtherInterceptsForwardingTime =3D 101, + VpExternalInterruptsForwardedCount =3D 102, + VpExternalInterruptsForwardingTime =3D 103, + VpPendingInterruptsForwardedCount =3D 104, + VpPendingInterruptsForwardingTime =3D 105, + VpEmulatedInstructionsForwardedCount =3D 106, + VpEmulatedInstructionsForwardingTime =3D 107, + VpDebugRegisterAccessesForwardedCount =3D 108, + VpDebugRegisterAccessesForwardingTime =3D 109, + VpPageFaultInterceptsForwardedCount =3D 110, + VpPageFaultInterceptsForwardingTime =3D 111, + VpVmclearEmulationCount =3D 112, + VpVmclearEmulationTime =3D 113, + VpVmptrldEmulationCount =3D 114, + VpVmptrldEmulationTime =3D 115, + VpVmptrstEmulationCount =3D 116, + VpVmptrstEmulationTime =3D 117, + VpVmreadEmulationCount =3D 118, + VpVmreadEmulationTime =3D 119, + VpVmwriteEmulationCount =3D 120, + VpVmwriteEmulationTime =3D 121, + VpVmxoffEmulationCount =3D 122, + VpVmxoffEmulationTime =3D 123, + VpVmxonEmulationCount =3D 124, + VpVmxonEmulationTime =3D 125, + VpNestedVMEntriesCount =3D 126, + VpNestedVMEntriesTime =3D 127, + VpNestedSLATSoftPageFaultsCount =3D 128, + VpNestedSLATSoftPageFaultsTime =3D 129, + VpNestedSLATHardPageFaultsCount =3D 130, + VpNestedSLATHardPageFaultsTime =3D 131, + VpInvEptAllContextEmulationCount =3D 132, + VpInvEptAllContextEmulationTime =3D 133, + VpInvEptSingleContextEmulationCount =3D 134, + VpInvEptSingleContextEmulationTime =3D 135, + VpInvVpidAllContextEmulationCount =3D 136, + VpInvVpidAllContextEmulationTime =3D 137, + VpInvVpidSingleContextEmulationCount =3D 138, + VpInvVpidSingleContextEmulationTime =3D 139, + VpInvVpidSingleAddressEmulationCount =3D 140, + VpInvVpidSingleAddressEmulationTime =3D 141, + VpNestedTlbPageTableReclamations =3D 142, + VpNestedTlbPageTableEvictions =3D 143, + VpFlushGuestPhysicalAddressSpaceHypercalls =3D 144, + VpFlushGuestPhysicalAddressListHypercalls =3D 145, + VpPostedInterruptNotifications =3D 146, + VpPostedInterruptScans =3D 147, + VpTotalCoreRunTime =3D 148, + VpMaximumRunTime =3D 149, + VpHwpRequestContextSwitches =3D 150, + VpWaitingForCpuTimeBucket0 =3D 151, + VpWaitingForCpuTimeBucket1 =3D 152, + VpWaitingForCpuTimeBucket2 =3D 153, + VpWaitingForCpuTimeBucket3 =3D 154, + VpWaitingForCpuTimeBucket4 =3D 155, + VpWaitingForCpuTimeBucket5 =3D 156, + VpWaitingForCpuTimeBucket6 =3D 157, + VpVmloadEmulationCount =3D 158, + VpVmloadEmulationTime =3D 159, + VpVmsaveEmulationCount =3D 160, + VpVmsaveEmulationTime =3D 161, + VpGifInstructionEmulationCount =3D 162, + VpGifInstructionEmulationTime =3D 163, + VpEmulatedErrataSvmInstructions =3D 164, + VpPlaceholder1 =3D 165, + VpPlaceholder2 =3D 166, + VpPlaceholder3 =3D 167, + VpPlaceholder4 =3D 168, + VpPlaceholder5 =3D 169, + VpPlaceholder6 =3D 170, + VpPlaceholder7 =3D 171, + VpPlaceholder8 =3D 172, + VpPlaceholder9 =3D 173, + VpPlaceholder10 =3D 174, + VpSchedulingPriority =3D 175, + VpRdpmcInstructionsCount =3D 176, + VpRdpmcInstructionsTime =3D 177, + VpPerfmonPmuMsrAccessesCount =3D 178, + VpPerfmonLbrMsrAccessesCount =3D 179, + VpPerfmonIptMsrAccessesCount =3D 180, + VpPerfmonInterruptCount =3D 181, + VpVtl1DispatchCount =3D 182, + VpVtl2DispatchCount =3D 183, + VpVtl2DispatchBucket0 =3D 184, + VpVtl2DispatchBucket1 =3D 185, + VpVtl2DispatchBucket2 =3D 186, + VpVtl2DispatchBucket3 =3D 187, + VpVtl2DispatchBucket4 =3D 188, + VpVtl2DispatchBucket5 =3D 189, + VpVtl2DispatchBucket6 =3D 190, + VpVtl1RunTime =3D 191, + VpVtl2RunTime =3D 192, + VpIommuHypercalls =3D 193, + VpCpuGroupHypercalls =3D 194, + VpVsmHypercalls =3D 195, + VpEventLogHypercalls =3D 196, + VpDeviceDomainHypercalls =3D 197, + VpDepositHypercalls =3D 198, + VpSvmHypercalls =3D 199, + VpBusLockAcquisitionCount =3D 200, + VpUnused =3D 201, + VpRootDispatchThreadBlocked =3D 202, +#elif IS_ENABLED(CONFIG_ARM64) + VpSysRegAccessesCount =3D 9, + VpSysRegAccessesTime =3D 10, + VpSmcInstructionsCount =3D 11, + VpSmcInstructionsTime =3D 12, + VpOtherInterceptsCount =3D 13, + VpOtherInterceptsTime =3D 14, + VpExternalInterruptsCount =3D 15, + VpExternalInterruptsTime =3D 16, + VpPendingInterruptsCount =3D 17, + VpPendingInterruptsTime =3D 18, + VpGuestPageTableMaps =3D 19, + VpLargePageTlbFills =3D 20, + VpSmallPageTlbFills =3D 21, + VpReflectedGuestPageFaults =3D 22, + VpMemoryInterceptMessages =3D 23, + VpOtherMessages =3D 24, + VpLogicalProcessorMigrations =3D 25, + VpAddressDomainFlushes =3D 26, + VpAddressSpaceFlushes =3D 27, + VpSyntheticInterrupts =3D 28, + VpVirtualInterrupts =3D 29, + VpApicSelfIpisSent =3D 30, + VpGpaSpaceHypercalls =3D 31, + VpLogicalProcessorHypercalls =3D 32, + VpLongSpinWaitHypercalls =3D 33, + VpOtherHypercalls =3D 34, + VpSyntheticInterruptHypercalls =3D 35, + VpVirtualInterruptHypercalls =3D 36, + VpVirtualMmuHypercalls =3D 37, + VpVirtualProcessorHypercalls =3D 38, + VpHardwareInterrupts =3D 39, + VpNestedPageFaultInterceptsCount =3D 40, + VpNestedPageFaultInterceptsTime =3D 41, + VpLogicalProcessorDispatches =3D 42, + VpWaitingForCpuTime =3D 43, + VpExtendedHypercalls =3D 44, + VpExtendedHypercallInterceptMessages =3D 45, + VpMbecNestedPageTableSwitches =3D 46, + VpOtherReflectedGuestExceptions =3D 47, + VpGlobalIoTlbFlushes =3D 48, + VpGlobalIoTlbFlushCost =3D 49, + VpLocalIoTlbFlushes =3D 50, + VpLocalIoTlbFlushCost =3D 51, + VpFlushGuestPhysicalAddressSpaceHypercalls =3D 52, + VpFlushGuestPhysicalAddressListHypercalls =3D 53, + VpPostedInterruptNotifications =3D 54, + VpPostedInterruptScans =3D 55, + VpTotalCoreRunTime =3D 56, + VpMaximumRunTime =3D 57, + VpWaitingForCpuTimeBucket0 =3D 58, + VpWaitingForCpuTimeBucket1 =3D 59, + VpWaitingForCpuTimeBucket2 =3D 60, + VpWaitingForCpuTimeBucket3 =3D 61, + VpWaitingForCpuTimeBucket4 =3D 62, + VpWaitingForCpuTimeBucket5 =3D 63, + VpWaitingForCpuTimeBucket6 =3D 64, + VpHwpRequestContextSwitches =3D 65, + VpPlaceholder2 =3D 66, + VpPlaceholder3 =3D 67, + VpPlaceholder4 =3D 68, + VpPlaceholder5 =3D 69, + VpPlaceholder6 =3D 70, + VpPlaceholder7 =3D 71, + VpPlaceholder8 =3D 72, + VpContentionTime =3D 73, + VpWakeUpTime =3D 74, + VpSchedulingPriority =3D 75, + VpVtl1DispatchCount =3D 76, + VpVtl2DispatchCount =3D 77, + VpVtl2DispatchBucket0 =3D 78, + VpVtl2DispatchBucket1 =3D 79, + VpVtl2DispatchBucket2 =3D 80, + VpVtl2DispatchBucket3 =3D 81, + VpVtl2DispatchBucket4 =3D 82, + VpVtl2DispatchBucket5 =3D 83, + VpVtl2DispatchBucket6 =3D 84, + VpVtl1RunTime =3D 85, + VpVtl2RunTime =3D 86, + VpIommuHypercalls =3D 87, + VpCpuGroupHypercalls =3D 88, + VpVsmHypercalls =3D 89, + VpEventLogHypercalls =3D 90, + VpDeviceDomainHypercalls =3D 91, + VpDepositHypercalls =3D 92, + VpSvmHypercalls =3D 93, + VpLoadAvg =3D 94, + VpRootDispatchThreadBlocked =3D 95, +#endif + VpStatsMaxCounter +}; + +enum hv_stats_lp_counters { /* HV_CPU_COUNTER */ + LpGlobalTime =3D 1, + LpTotalRunTime =3D 2, + LpHypervisorRunTime =3D 3, + LpHardwareInterrupts =3D 4, + LpContextSwitches =3D 5, + LpInterProcessorInterrupts =3D 6, + LpSchedulerInterrupts =3D 7, + LpTimerInterrupts =3D 8, + LpInterProcessorInterruptsSent =3D 9, + LpProcessorHalts =3D 10, + LpMonitorTransitionCost =3D 11, + LpContextSwitchTime =3D 12, + LpC1TransitionsCount =3D 13, + LpC1RunTime =3D 14, + LpC2TransitionsCount =3D 15, + LpC2RunTime =3D 16, + LpC3TransitionsCount =3D 17, + LpC3RunTime =3D 18, + LpRootVpIndex =3D 19, + LpIdleSequenceNumber =3D 20, + LpGlobalTscCount =3D 21, + LpActiveTscCount =3D 22, + LpIdleAccumulation =3D 23, + LpReferenceCycleCount0 =3D 24, + LpActualCycleCount0 =3D 25, + LpReferenceCycleCount1 =3D 26, + LpActualCycleCount1 =3D 27, + LpProximityDomainId =3D 28, + LpPostedInterruptNotifications =3D 29, + LpBranchPredictorFlushes =3D 30, +#if IS_ENABLED(CONFIG_X86_64) + LpL1DataCacheFlushes =3D 31, + LpImmediateL1DataCacheFlushes =3D 32, + LpMbFlushes =3D 33, + LpCounterRefreshSequenceNumber =3D 34, + LpCounterRefreshReferenceTime =3D 35, + LpIdleAccumulationSnapshot =3D 36, + LpActiveTscCountSnapshot =3D 37, + LpHwpRequestContextSwitches =3D 38, + LpPlaceholder1 =3D 39, + LpPlaceholder2 =3D 40, + LpPlaceholder3 =3D 41, + LpPlaceholder4 =3D 42, + LpPlaceholder5 =3D 43, + LpPlaceholder6 =3D 44, + LpPlaceholder7 =3D 45, + LpPlaceholder8 =3D 46, + LpPlaceholder9 =3D 47, + LpPlaceholder10 =3D 48, + LpReserveGroupId =3D 49, + LpRunningPriority =3D 50, + LpPerfmonInterruptCount =3D 51, +#elif IS_ENABLED(CONFIG_ARM64) + LpCounterRefreshSequenceNumber =3D 31, + LpCounterRefreshReferenceTime =3D 32, + LpIdleAccumulationSnapshot =3D 33, + LpActiveTscCountSnapshot =3D 34, + LpHwpRequestContextSwitches =3D 35, + LpPlaceholder2 =3D 36, + LpPlaceholder3 =3D 37, + LpPlaceholder4 =3D 38, + LpPlaceholder5 =3D 39, + LpPlaceholder6 =3D 40, + LpPlaceholder7 =3D 41, + LpPlaceholder8 =3D 42, + LpPlaceholder9 =3D 43, + LpSchLocalRunListSize =3D 44, + LpReserveGroupId =3D 45, + LpRunningPriority =3D 46, +#endif + LpStatsMaxCounter +}; + +/* + * Hypervisor statsitics page format + */ +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 --=20 2.34.1