drivers/hv/mshv_root.h | 24 +++-- drivers/hv/mshv_root_hv_call.c | 185 +++++++++++++++++++++++++++++++-- drivers/hv/mshv_root_main.c | 127 ++++++++++++---------- include/hyperv/hvgdk_mini.h | 2 + include/hyperv/hvhdk.h | 40 +++++++ include/hyperv/hvhdk_mini.h | 33 ++++++ 6 files changed, 337 insertions(+), 74 deletions(-)
There are some differences in how L1VH partitions must map stats and vp state pages, some of which are due to differences across hypervisor versions. Detect and handle these cases. Patch 1: Fix for the logic of when to map the vp stats page for the root scheduler. Patch 2-3: Add HVCALL_GET_PARTITION_PROPERTY_EX and use it to query "vmm capabilities" on module init. Patches 4-5: Check a feature bit in vmm capabilities, to take a new code path for mapping stats and vp state pages. In this case, the stats and vp state pages must be allocated by Linux, and a new hypercall HVCALL_MAP_VP_STATS_PAGE2 must be used to map the stats page. --- v4: - Fixed some __packed attributes on unions [Stanislav] - Cleaned up mshv_init_vmm_caps() [Stanislav] - Cleaned up loop in hv_call_map_stats_page2() [Stanislav] v3: https://lore.kernel.org/linux-hyperv/1758066262-15477-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t - Fix bug in patch 4, in mshv_partition_ioctl_create_vp() cleanup path [kernel test robot] - Make hv_unmap_vp_state_page() use struct page to match hv_map_vp_state_page() - Remove SELF == PARENT check which doesn't belong in patch 5 [Easwar] v2: https://lore.kernel.org/linux-hyperv/1757546089-2002-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t - Remove patch falling back to SELF page if PARENT mapping fails [Easwar] (To be included in a future series) - Fix formatting of function definitions [Easwar] - Fix some wording in commit messages [Praveen] - Proceed with driver init even if getting vmm capabilities fails [Anirudh] v1: https://lore.kernel.org/linux-hyperv/1756428230-3599-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t --- Jinank Jain (2): mshv: Allocate vp state page for HVCALL_MAP_VP_STATE_PAGE on L1VH mshv: Introduce new hypercall to map stats page for L1VH partitions Nuno Das Neves (1): mshv: Only map vp->vp_stats_pages if on root scheduler Purna Pavan Chandra Aekkaladevi (2): mshv: Add the HVCALL_GET_PARTITION_PROPERTY_EX hypercall mshv: Get the vmm capabilities offered by the hypervisor drivers/hv/mshv_root.h | 24 +++-- drivers/hv/mshv_root_hv_call.c | 185 +++++++++++++++++++++++++++++++-- drivers/hv/mshv_root_main.c | 127 ++++++++++++---------- include/hyperv/hvgdk_mini.h | 2 + include/hyperv/hvhdk.h | 40 +++++++ include/hyperv/hvhdk_mini.h | 33 ++++++ 6 files changed, 337 insertions(+), 74 deletions(-) -- 2.34.1
On Fri, Sep 26, 2025 at 09:23:10AM -0700, Nuno Das Neves wrote: > There are some differences in how L1VH partitions must map stats and vp > state pages, some of which are due to differences across hypervisor > versions. Detect and handle these cases. > I'm not sure that support for older and actully broken versions on hypervisor need to be usptreamed, as these versions will go away sooner or later and this support will become dead weight. I think we should upstrem only the changes needed for the new versiong of hypervisors instead and carry legacy support out of tree until it becomes obsoleted. Thanks, Stanislav > Patch 1: > Fix for the logic of when to map the vp stats page for the root scheduler. > > Patch 2-3: > Add HVCALL_GET_PARTITION_PROPERTY_EX and use it to query "vmm capabilities" on > module init. > > Patches 4-5: > Check a feature bit in vmm capabilities, to take a new code path for mapping > stats and vp state pages. In this case, the stats and vp state pages must be > allocated by Linux, and a new hypercall HVCALL_MAP_VP_STATS_PAGE2 must be used > to map the stats page. > > --- > v4: > - Fixed some __packed attributes on unions [Stanislav] > - Cleaned up mshv_init_vmm_caps() [Stanislav] > - Cleaned up loop in hv_call_map_stats_page2() [Stanislav] > > v3: > https://lore.kernel.org/linux-hyperv/1758066262-15477-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t > - Fix bug in patch 4, in mshv_partition_ioctl_create_vp() cleanup path > [kernel test robot] > - Make hv_unmap_vp_state_page() use struct page to match hv_map_vp_state_page() > - Remove SELF == PARENT check which doesn't belong in patch 5 [Easwar] > > v2: > https://lore.kernel.org/linux-hyperv/1757546089-2002-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t > - Remove patch falling back to SELF page if PARENT mapping fails [Easwar] > (To be included in a future series) > - Fix formatting of function definitions [Easwar] > - Fix some wording in commit messages [Praveen] > - Proceed with driver init even if getting vmm capabilities fails [Anirudh] > > v1: > https://lore.kernel.org/linux-hyperv/1756428230-3599-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t > > --- > Jinank Jain (2): > mshv: Allocate vp state page for HVCALL_MAP_VP_STATE_PAGE on L1VH > mshv: Introduce new hypercall to map stats page for L1VH partitions > > Nuno Das Neves (1): > mshv: Only map vp->vp_stats_pages if on root scheduler > > Purna Pavan Chandra Aekkaladevi (2): > mshv: Add the HVCALL_GET_PARTITION_PROPERTY_EX hypercall > mshv: Get the vmm capabilities offered by the hypervisor > > drivers/hv/mshv_root.h | 24 +++-- > drivers/hv/mshv_root_hv_call.c | 185 +++++++++++++++++++++++++++++++-- > drivers/hv/mshv_root_main.c | 127 ++++++++++++---------- > include/hyperv/hvgdk_mini.h | 2 + > include/hyperv/hvhdk.h | 40 +++++++ > include/hyperv/hvhdk_mini.h | 33 ++++++ > 6 files changed, 337 insertions(+), 74 deletions(-) > > -- > 2.34.1
On 9/26/2025 4:12 PM, Stanislav Kinsburskii wrote: > On Fri, Sep 26, 2025 at 09:23:10AM -0700, Nuno Das Neves wrote: >> There are some differences in how L1VH partitions must map stats and vp >> state pages, some of which are due to differences across hypervisor >> versions. Detect and handle these cases. >> > > I'm not sure that support for older and actully broken versions on > hypervisor need to be usptreamed, as these versions will go away sooner > or later and this support will become dead weight. > As far as I know, these changes are relevant for shipped versions of the hypervisor - they are not 'broken' except in some very specific cases (live migration on L1VH, I think?) The hypervisor team added a feature bit for these changes so that both old and new versions of these APIs can be supported. > I think we should upstrem only the changes needed for the new versiong > of hypervisors instead and carry legacy support out of tree until it > becomes obsoleted. > Which version do you suggest to be the cutoff? I'd prefer to support as many versions of the hypervisor as we can, as long as they are at all relevant. We can remove the support later. Removing prematurely just creates friction. Inevitably some users will find themselves running on an older hypervisor and then it just fails with a cryptic error. This includes myself, since I test L1VH on Azure which typically has older hypervisor versions. Nuno > Thanks, > Stanislav > > >> Patch 1: >> Fix for the logic of when to map the vp stats page for the root scheduler. >> >> Patch 2-3: >> Add HVCALL_GET_PARTITION_PROPERTY_EX and use it to query "vmm capabilities" on >> module init. >> >> Patches 4-5: >> Check a feature bit in vmm capabilities, to take a new code path for mapping >> stats and vp state pages. In this case, the stats and vp state pages must be >> allocated by Linux, and a new hypercall HVCALL_MAP_VP_STATS_PAGE2 must be used >> to map the stats page. >> >> --- >> v4: >> - Fixed some __packed attributes on unions [Stanislav] >> - Cleaned up mshv_init_vmm_caps() [Stanislav] >> - Cleaned up loop in hv_call_map_stats_page2() [Stanislav] >> >> v3: >> https://lore.kernel.org/linux-hyperv/1758066262-15477-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t >> - Fix bug in patch 4, in mshv_partition_ioctl_create_vp() cleanup path >> [kernel test robot] >> - Make hv_unmap_vp_state_page() use struct page to match hv_map_vp_state_page() >> - Remove SELF == PARENT check which doesn't belong in patch 5 [Easwar] >> >> v2: >> https://lore.kernel.org/linux-hyperv/1757546089-2002-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t >> - Remove patch falling back to SELF page if PARENT mapping fails [Easwar] >> (To be included in a future series) >> - Fix formatting of function definitions [Easwar] >> - Fix some wording in commit messages [Praveen] >> - Proceed with driver init even if getting vmm capabilities fails [Anirudh] >> >> v1: >> https://lore.kernel.org/linux-hyperv/1756428230-3599-1-git-send-email-nunodasneves@linux.microsoft.com/T/#t >> >> --- >> Jinank Jain (2): >> mshv: Allocate vp state page for HVCALL_MAP_VP_STATE_PAGE on L1VH >> mshv: Introduce new hypercall to map stats page for L1VH partitions >> >> Nuno Das Neves (1): >> mshv: Only map vp->vp_stats_pages if on root scheduler >> >> Purna Pavan Chandra Aekkaladevi (2): >> mshv: Add the HVCALL_GET_PARTITION_PROPERTY_EX hypercall >> mshv: Get the vmm capabilities offered by the hypervisor >> >> drivers/hv/mshv_root.h | 24 +++-- >> drivers/hv/mshv_root_hv_call.c | 185 +++++++++++++++++++++++++++++++-- >> drivers/hv/mshv_root_main.c | 127 ++++++++++++---------- >> include/hyperv/hvgdk_mini.h | 2 + >> include/hyperv/hvhdk.h | 40 +++++++ >> include/hyperv/hvhdk_mini.h | 33 ++++++ >> 6 files changed, 337 insertions(+), 74 deletions(-) >> >> -- >> 2.34.1
On Mon, Sep 29, 2025 at 11:19:51AM -0700, Nuno Das Neves wrote: > On 9/26/2025 4:12 PM, Stanislav Kinsburskii wrote: > > On Fri, Sep 26, 2025 at 09:23:10AM -0700, Nuno Das Neves wrote: > >> There are some differences in how L1VH partitions must map stats and vp > >> state pages, some of which are due to differences across hypervisor > >> versions. Detect and handle these cases. > >> > > > > I'm not sure that support for older and actully broken versions on > > hypervisor need to be usptreamed, as these versions will go away sooner > > or later and this support will become dead weight. > > > As far as I know, these changes are relevant for shipped versions of the > hypervisor - they are not 'broken' except in some very specific cases > (live migration on L1VH, I think?) > Right, they are not broken, just have more limitations. > The hypervisor team added a feature bit for these changes so that both old > and new versions of these APIs can be supported. > > > I think we should upstrem only the changes needed for the new versiong > > of hypervisors instead and carry legacy support out of tree until it > > becomes obsoleted. > > > Which version do you suggest to be the cutoff? > > I'd prefer to support as many versions of the hypervisor as we can, as > long as they are at all relevant. We can remove the support later. > Removing prematurely just creates friction. Inevitably some users will > find themselves running on an older hypervisor and then it just fails > with a cryptic error. This includes myself, since I test L1VH on Azure > which typically has older hypervisor versions. This. It takes a long time to saturate the fleet with a new hypervisor. Realistically I am looking at 2+ years before we can drop the compatibility code, if ever. Another reason to upstream the compatibility code is because partners will want to pick up our code, so hiding this code from them makes both our and their life harder. Wei > > Nuno
© 2016 - 2025 Red Hat, Inc.