On Thu, Feb 12, 2026 at 01:32:22PM +0000, Anirudh Rayabharam wrote:
> On Wed, Feb 11, 2026 at 04:54:03PM +0100, Magnus Kulke wrote:
> > When using the extended request format we can instruct the hypervisor to
> > provision enough space for requested XSAVE features. This is required
> > for supporting QEMU models provided via the -cpu flag properly.
> > 
> > Signed-off-by: Magnus Kulke <[email protected]>
> > ---
> >  accel/mshv/mshv-all.c          |  35 +++++--
> >  include/hw/hyperv/hvgdk_mini.h |   2 +
> >  include/hw/hyperv/hvhdk.h      | 185 +++++++++++++++++++++++++++++++++
> >  3 files changed, 214 insertions(+), 8 deletions(-)
> > 
> > diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c
> > index bed0fa298e..8446f7128a 100644
> > --- a/accel/mshv/mshv-all.c
> > +++ b/accel/mshv/mshv-all.c
> > @@ -112,19 +112,38 @@ static int resume_vm(int vm_fd)
> >  
> >  static int create_partition(int mshv_fd, int *vm_fd)
> >  {
> > -    int ret;
> > -    struct mshv_create_partition args = {0};
> > +    int ret, i;
> > +    uint64_t pt_flags;
> > +    union hv_partition_processor_xsave_features disabled_xsave_features;
> > +    union hv_partition_processor_features disabled_processor_features;
> > +    struct mshv_create_partition_v2 args = {0};
> >  
> >      /* Initialize pt_flags with the desired features */
> > -    uint64_t pt_flags = (1ULL << MSHV_PT_BIT_LAPIC) |
> > -                        (1ULL << MSHV_PT_BIT_X2APIC) |
> > -                        (1ULL << MSHV_PT_BIT_GPA_SUPER_PAGES);
> > +    pt_flags = (1ULL << MSHV_PT_BIT_LAPIC) |
> > +               (1ULL << MSHV_PT_BIT_X2APIC) |
> > +               (1ULL << MSHV_PT_BIT_GPA_SUPER_PAGES) |
> > +               (1ULL << MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES);
> >  
> > -    /* Set default isolation type */
> > -    uint64_t pt_isolation = MSHV_PT_ISOLATION_NONE;
> > +    /* enable all */
> > +    disabled_xsave_features.as_uint64 = 0;
> >  
> > +    /* Enable all proc features by default */
> 
> Instead of enabling all features by default, we could query which
> features are supported by the hypervisor on this host and enable only
> those.
> 
> To query supported features get the HvPartitionPropertyProcessorFeatures
> property via HvCallGetPartitionProperty (with HV_PARTITION_ID_SELF).
> 
> I think this would be more robust. This is what Cloud Hypervisor (well,
> technically, the mshv crate) does.
> 

While I think querying the hypervisor is the correct action, are we
sure this gives all the supported features on the host?

Is there a case that the Linux root partition  has a reduced set of
properties?

Wei

Reply via email to