From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Cc: linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
prapal@linux.microsoft.com, easwar.hariharan@linux.microsoft.com,
tiala@microsoft.com, anirudh@anirudhrb.com,
paekkaladevi@linux.microsoft.com, kys@microsoft.com,
haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com
Subject: Re: [PATCH v3 3/5] mshv: Get the vmm capabilities offered by the hypervisor
Date: Fri, 19 Sep 2025 15:37:03 -0700 [thread overview]
Message-ID: <8d6c6f95-7ccd-4471-a391-39a45f95af04@linux.microsoft.com> (raw)
In-Reply-To: <aMxUe7WLzMXJY16c@skinsburskii.localdomain>
On 9/18/2025 11:50 AM, Stanislav Kinsburskii wrote:
> On Tue, Sep 16, 2025 at 04:44:20PM -0700, Nuno Das Neves wrote:
>> From: Purna Pavan Chandra Aekkaladevi <paekkaladevi@linux.microsoft.com>
>>
>> Some hypervisor APIs are gated by feature bits in the
>> "vmm capabilities" partition property. Store the capabilities on
>> mshv_root module init, using HVCALL_GET_PARTITION_PROPERTY_EX.
>>
>> This is not supported on all hypervisors. In that case, just set the
>> capabilities to 0 and proceed as normal.
>>
>> Signed-off-by: Purna Pavan Chandra Aekkaladevi <paekkaladevi@linux.microsoft.com>
>> Signed-off-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
>> Reviewed-by: Praveen K Paladugu <prapal@linux.microsoft.com>
>> Reviewed-by: Easwar Hariharan <easwar.hariharan@linux.microsoft.com>
>> Reviewed-by: Tianyu Lan <tiala@microsoft.com>
>> ---
>> drivers/hv/mshv_root.h | 1 +
>> drivers/hv/mshv_root_main.c | 22 ++++++++++++++++++++++
>> 2 files changed, 23 insertions(+)
>>
>> diff --git a/drivers/hv/mshv_root.h b/drivers/hv/mshv_root.h
>> index 4aeb03bea6b6..0cb1e2589fe1 100644
>> --- a/drivers/hv/mshv_root.h
>> +++ b/drivers/hv/mshv_root.h
>> @@ -178,6 +178,7 @@ struct mshv_root {
>> struct hv_synic_pages __percpu *synic_pages;
>> spinlock_t pt_ht_lock;
>> DECLARE_HASHTABLE(pt_htable, MSHV_PARTITIONS_HASH_BITS);
>> + struct hv_partition_property_vmm_capabilities vmm_caps;
>> };
>>
>> /*
>> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
>> index 24df47726363..f7738cefbdf3 100644
>> --- a/drivers/hv/mshv_root_main.c
>> +++ b/drivers/hv/mshv_root_main.c
>> @@ -2201,6 +2201,26 @@ static int __init mshv_root_partition_init(struct device *dev)
>> return err;
>> }
>>
>> +static void mshv_init_vmm_caps(struct device *dev)
>> +{
>> + int ret;
>
> nit: this is void function so ret looks redundant.
>
True, it's not needed.
>> +
>> + memset(&mshv_root.vmm_caps, 0, sizeof(mshv_root.vmm_caps));
>
> Zeroying is redundant as mshv_root is a statci variable.
>
Good point.
>> + ret = hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
>> + HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
>> + 0, &mshv_root.vmm_caps,
>
> Also, we align "slow" hypercalls by PAGE_SIZE. Why is it fine to not do
> it here?
>
I guess you're referring to the output argument of the hypercall?
Check the previous patch to see how hv_call_get_partition_property_ex()
is implemented. It uses the per-cpu input/output args as normal, which
are HV_HYP_PAGE_SIZE in size, and page-aligned.
> Thanks,
> Stanislav
>
>> + sizeof(mshv_root.vmm_caps));
>> +
>> + /*
>> + * HVCALL_GET_PARTITION_PROPERTY_EX or HV_PARTITION_PROPERTY_VMM_CAPABILITIES
>> + * may not be supported. Leave them as 0 in that case.
>> + */
>> + if (ret)
>> + dev_warn(dev, "Unable to get VMM capabilities\n");
>> +
>> + dev_dbg(dev, "vmm_caps=0x%llx\n", mshv_root.vmm_caps.as_uint64[0]);
>> +}
>> +
>> static int __init mshv_parent_partition_init(void)
>> {
>> int ret;
>> @@ -2253,6 +2273,8 @@ static int __init mshv_parent_partition_init(void)
>> if (ret)
>> goto remove_cpu_state;
>>
>> + mshv_init_vmm_caps(dev);
>> +
>> ret = mshv_irqfd_wq_init();
>> if (ret)
>> goto exit_partition;
>> --
>> 2.34.1
>>
next prev parent reply other threads:[~2025-09-19 22:37 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-16 23:44 [PATCH v3 0/5] mshv: Fixes for stats and vp state page mappings Nuno Das Neves
2025-09-16 23:44 ` [PATCH v3 1/5] mshv: Only map vp->vp_stats_pages if on root scheduler Nuno Das Neves
2025-09-18 18:38 ` Stanislav Kinsburskii
2025-09-16 23:44 ` [PATCH v3 2/5] mshv: Add the HVCALL_GET_PARTITION_PROPERTY_EX hypercall Nuno Das Neves
2025-09-18 18:43 ` Stanislav Kinsburskii
2025-09-19 22:30 ` Nuno Das Neves
2025-09-16 23:44 ` [PATCH v3 3/5] mshv: Get the vmm capabilities offered by the hypervisor Nuno Das Neves
2025-09-18 18:50 ` Stanislav Kinsburskii
2025-09-19 22:37 ` Nuno Das Neves [this message]
2025-09-16 23:44 ` [PATCH v3 4/5] mshv: Allocate vp state page for HVCALL_MAP_VP_STATE_PAGE on L1VH Nuno Das Neves
2025-09-18 18:58 ` Stanislav Kinsburskii
2025-09-23 8:13 ` Anirudh Rayabharam
2025-09-16 23:44 ` [PATCH v3 5/5] mshv: Introduce new hypercall to map stats page for L1VH partitions Nuno Das Neves
2025-09-18 19:53 ` Stanislav Kinsburskii
2025-09-19 22:44 ` Nuno Das Neves
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8d6c6f95-7ccd-4471-a391-39a45f95af04@linux.microsoft.com \
--to=nunodasneves@linux.microsoft.com \
--cc=anirudh@anirudhrb.com \
--cc=decui@microsoft.com \
--cc=easwar.hariharan@linux.microsoft.com \
--cc=haiyangz@microsoft.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paekkaladevi@linux.microsoft.com \
--cc=prapal@linux.microsoft.com \
--cc=skinsburskii@linux.microsoft.com \
--cc=tiala@microsoft.com \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.