[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<SN6PR02MB4157774303E3E31251C6804AD491A@SN6PR02MB4157.namprd02.prod.outlook.com>
Date: Wed, 28 Jan 2026 19:20:10 +0000
From: Michael Kelley <mhklinux@...look.com>
To: Nuno Das Neves <nunodasneves@...ux.microsoft.com>,
"linux-hyperv@...r.kernel.org" <linux-hyperv@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"skinsburskii@...ux.microsoft.com" <skinsburskii@...ux.microsoft.com>
CC: "kys@...rosoft.com" <kys@...rosoft.com>, "haiyangz@...rosoft.com"
<haiyangz@...rosoft.com>, "wei.liu@...nel.org" <wei.liu@...nel.org>,
"decui@...rosoft.com" <decui@...rosoft.com>, "longli@...rosoft.com"
<longli@...rosoft.com>, "prapal@...ux.microsoft.com"
<prapal@...ux.microsoft.com>, "mrathor@...ux.microsoft.com"
<mrathor@...ux.microsoft.com>, "paekkaladevi@...ux.microsoft.com"
<paekkaladevi@...ux.microsoft.com>
Subject: RE: [PATCH v6 0/7] mshv: Debugfs interface for mshv_root
From: Nuno Das Neves <nunodasneves@...ux.microsoft.com> Sent: Wednesday, January 28, 2026 10:12 AM
>
> Expose hypervisor, logical processor, partition, and virtual processor
> statistics via debugfs. These are provided by mapping 'stats' pages via
> hypercall.
>
> Patch #1: Update hv_call_map_stats_page() to return success when
> HV_STATS_AREA_PARENT is unavailable, which is the case on some
> hypervisor versions, where it can fall back to HV_STATS_AREA_SELF
> Patch #2: Use struct hv_stats_page pointers instead of void *
> Patch #3: Make mshv_vp_stats_map/unmap() more flexible to use with debugfs
> code
> Patch #4: Always map vp stats page regardless of scheduler, to reuse in
> debugfs
> Patch #5: Change to hv_stats_page definition and
> VpRootDispatchThreadBlocked
> Patch #6: Introduce the definitions needed for the various stats pages
> Patch #7: Add mshv_debugfs.c, and integrate it with the mshv_root driver to
> expose the partition and VP stats.
>
> ---
> Changes in v6:
> - Fix whitespace and other checkpatch issues [Michael]
>
> Changes in v5:
> - Rename hv_counters.c to mshv_debugfs_counters.c [Michael]
> - Clarify unusual inclusion of mshv_debugfs_counters.c with comment. After
> discussion it is still included directly to keep things simple. Including
> arrays with unspecified size via a header means sizeof() cannot be used on
> the array.
> - Error if mshv_debugfs_counters.c is included elsewhere than mshv_debugfs.c
> - Use array index as stats page index to save space [Stanislav]
> - Enforce HV_STATS_AREA_PARENT and SELF fit in NUM_STATS_AREAS with
> static_assert and clarify with comment [Michael]
> - Return to using lp count from hv stats page for mshv_lps_count [Michael]
> - Use nr_cpu_ids instead of num_possible_cpus() [Michael]
> - Set mshv_lps_stats[idx] and the array itself to NULL on unmap and cleanup
> [Michael]
> - Rename HvLogicalProcessors and VpRootDispatchThreadBlocked to Linux style
> - Translate Linux cpu index to vp index via hv_vp_index on partition destroy
> [Michael]
> - Minor formatting cleanups [Michael]
>
> Changes in v4:
> - Put the counters definitions in static arrays in hv_counters.c, instead of
> as enums in hvhdk.h [Michael]
> - Due to the above, add an additional patch (#5) to simplify hv_stats_page,
> and retain the enum definition at the top of mshv_root_main.c for use with
> VpRootDispatchThreadBlocked. That is the only remaining use of the counter
> enum.
> - Due to the above, use num_present_cpus() as the number of LPs to map stats
> pages for - this number shouldn't change at runtime because the hypervisor
> doesn't support hotplug for root partition.
>
> Changes in v3:
> - Add 3 small refactor/cleanup patches (patches 2,3,4) from Stanislav. These
> simplify some of the debugfs code, and fix issues with mapping VP stats on
> L1VH.
> - Fix cleanup of parent stats dentries on module removal (via squashing some
> internal patches into patch #6) [Praveen]
> - Remove unused goto label [Stanislav, kernel bot]
> - Use struct hv_stats_page * instead of void * in mshv_debugfs.c [Stanislav]
> - Remove some redundant variables [Stanislav]
> - Rename debugfs dentry fields for brevity [Stanislav]
> - Use ERR_CAST() for the dentry error pointer returned from
> lp_debugfs_stats_create() [Stanislav]
> - Fix leak of pages allocated for lp stats mappings by storing them in an array
> [Michael]
> - Add comments to clarify PARENT vs SELF usage and edge cases [Michael]
> - Add VpLoadAvg for x86 and print the stat [Michael]
> - Add NUM_STATS_AREAS for array sizing in mshv_debugfs.c [Michael]
>
> Changes in v2:
> - Remove unnecessary pr_debug_once() in patch 1 [Stanislav Kinsburskii]
> - CONFIG_X86 -> CONFIG_X86_64 in patch 2 [Stanislav Kinsburskii]
>
> ---
> Nuno Das Neves (3):
> mshv: Update hv_stats_page definitions
> mshv: Add data for printing stats page counters
> mshv: Add debugfs to view hypervisor statistics
>
> Purna Pavan Chandra Aekkaladevi (1):
> mshv: Ignore second stats page map result failure
>
> Stanislav Kinsburskii (3):
> mshv: Use typed hv_stats_page pointers
> mshv: Improve mshv_vp_stats_map/unmap(), add them to mshv_root.h
> mshv: Always map child vp stats pages regardless of scheduler type
>
> drivers/hv/Makefile | 1 +
> drivers/hv/mshv_debugfs.c | 726 +++++++++++++++++++++++++++++
> drivers/hv/mshv_debugfs_counters.c | 490 +++++++++++++++++++
> drivers/hv/mshv_root.h | 49 +-
> drivers/hv/mshv_root_hv_call.c | 64 ++-
> drivers/hv/mshv_root_main.c | 140 +++---
> include/hyperv/hvhdk.h | 7 +
> 7 files changed, 1412 insertions(+), 65 deletions(-)
> create mode 100644 drivers/hv/mshv_debugfs.c
> create mode 100644 drivers/hv/mshv_debugfs_counters.c
>
> --
> 2.34.1
Everything looks good to me.
For the entire series,
Reviewed-by: Michael Kelley <mhklinux@...look.com>
Powered by blists - more mailing lists