On Tue, Sep 16, 2025 at 04:44:18PM -0700, Nuno Das Neves wrote: > This mapping is only used for checking if the dispatch thread is > blocked. This is only relevant for the root scheduler, so check the > scheduler type to determine whether to map/unmap these pages, instead of > the current check, which is incorrect. > > Signed-off-by: Nuno Das Neves <[email protected]> > Reviewed-by: Anirudh Rayabharam <[email protected]> > Reviewed-by: Praveen K Paladugu <[email protected]> > Reviewed-by: Easwar Hariharan <[email protected]> > Reviewed-by: Tianyu Lan <[email protected]> > --- > drivers/hv/mshv_root_main.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c > index e3b2bd417c46..24df47726363 100644 > --- a/drivers/hv/mshv_root_main.c > +++ b/drivers/hv/mshv_root_main.c > @@ -934,7 +934,11 @@ mshv_partition_ioctl_create_vp(struct mshv_partition > *partition, > goto unmap_register_page; > } > > - if (hv_parent_partition()) { > + /* > + * This mapping of the stats page is for detecting if dispatch thread > + * is blocked - only relevant for root scheduler > + */ > + if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT) { > ret = mshv_vp_stats_map(partition->pt_id, args.vp_index, > stats_pages); > if (ret) > @@ -963,7 +967,7 @@ mshv_partition_ioctl_create_vp(struct mshv_partition > *partition, > if (mshv_partition_encrypted(partition) && is_ghcb_mapping_available()) > vp->vp_ghcb_page = page_to_virt(ghcb_page); > > - if (hv_parent_partition()) > + if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT) > memcpy(vp->vp_stats_pages, stats_pages, sizeof(stats_pages)); > > /* > @@ -986,7 +990,7 @@ mshv_partition_ioctl_create_vp(struct mshv_partition > *partition, > free_vp: > kfree(vp); > unmap_stats_pages: > - if (hv_parent_partition()) > + if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT) > mshv_vp_stats_unmap(partition->pt_id, args.vp_index); > unmap_ghcb_page: > if (mshv_partition_encrypted(partition) && is_ghcb_mapping_available()) > { > @@ -1740,7 +1744,7 @@ static void destroy_partition(struct mshv_partition > *partition) > if (!vp) > continue; > > - if (hv_parent_partition()) > + if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT) > mshv_vp_stats_unmap(partition->pt_id, > vp->vp_index); > > if (vp->vp_register_page) {
Acked-by: Stanislav Kinsburskii <[email protected]> > -- > 2.34.1 >
