|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH] x86/hvm: make ACPI PM timer support optional
On Wed, Sep 18, 2024 at 04:35:21PM +0300, Sergiy Kibrik wrote:
> 18.09.24 12:41, Roger Pau Monné:
> > On Wed, Sep 18, 2024 at 12:29:39PM +0300, Sergiy Kibrik wrote:
> > > 16.09.24 22:57, Stefano Stabellini:
> > > > On Mon, 16 Sep 2024, Roger Pau Monné wrote:
> > > > > On Mon, Sep 16, 2024 at 09:37:57AM +0300, Sergiy Kibrik wrote:
> > > > > > Introduce config option X86_PMTIMER so that pmtimer driver can be
> > > > > > disabled on
> > > > > > systems that don't need it.
> > > > >
> > > > > Same comment as in the VGA patch, you need to handle the user passing
> > > > > X86_EMU_PM. It's not OK to just ignore the flag if the hypervisor is
> > > > > built without ACPI PM timer support.
> > > >
> > > > I also think that the flag should not be ignored. I think that Xen
> > > > should return error if a user is passing a domain feature not supported
> > > > by a particular version of the Xen build. I don't think that libxl needs
> > > > to be changed as part of this patch necessarily.
> > >
> > > It looks like toolstack always leaves X86_EMU_PM bit enabled, so that part
> > > may also require changes.
> >
> > I think you will be unable to create HVM guests, but that's kind of
> > expected if ACPI PM emulation is removed from the hypervisor (it won't
> > be an HVM guest anymore if it doesn't have ACPI PM).
> >
> > PVH guest don't set X86_EMU_PM so you should be able to create those
> > fine.
> >
>
> would the check like this be enough?:
>
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -758,6 +758,9 @@ static bool emulation_flags_ok(const struct domain *d,
> uint32_t emflags)
> (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) &&
> emflags != X86_EMU_LAPIC )
> return false;
> + if ( !is_hardware_domain(d) &&
I don't think you need to gate this to the hardware domain? IOW: if
it's build time disabled, it's not available for the hardware domain
either.
Seeing as there are several options you want to disable at build time, it
might be best to keep a mask, something like:
const uint32_t disabled_mask =
(!IS_ENABLED(CONFIG_X86_PMTIMER) ? X86_EMU_PM : 0) |
(!IS_ENABLED(CONFIG_X86_STDVGA) ? X86_EMU_VGA : 0);
And then:
if ( emflags & disabled_mask )
return false;
You also want to adjust the has_foo() macros to short-circuit them:
#define has_vpm(d) (IS_ENABLED(CONFIG_X86_PMTIMER) &&
!!((d)->arch.emulation_flags & X86_EMU_PM))
Also all those Kconfig options likely want to be inside of a separate
Kconfig section, rather than mixed with the rest of generic x86 arch
options. It would nice to have all the options grouped inside of a
"Emulated device support" sub section or similar.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |