[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 06/24] xen/domain: introduce hardware emulation flags
On 04.01.2025 02:58, Denis Mukhin via B4 Relay wrote: > @@ -8,7 +9,9 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, > { > switch(d_config->c_info.type) { > case LIBXL_DOMAIN_TYPE_HVM: > - config->arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI); > + config->arch.emulation_flags = XEN_X86_EMU_ALL; > + config->arch.emulation_flags &= ~XEN_X86_EMU_VPCI; > + > if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq)) > config->arch.emulation_flags &= ~XEN_X86_EMU_USE_PIRQ; > break; You're merely writing the same thing differently here, aren't you? Why is this needed? > @@ -159,9 +160,7 @@ static PyObject *pyxc_domain_create(XcObject *self, > > #if defined (__i386) || defined(__x86_64__) > if ( config.flags & XEN_DOMCTL_CDF_hvm ) > - config.arch.emulation_flags = XEN_X86_EMU_ALL & > - ~(XEN_X86_EMU_VPCI | > - XEN_X86_EMU_USE_PIRQ); > + config.arch.emulation_flags = XEN_X86_EMU_BASELINE; While less direct here, same question as above. > --- a/tools/tests/paging-mempool/test-paging-mempool.c > +++ b/tools/tests/paging-mempool/test-paging-mempool.c > @@ -9,6 +9,7 @@ > #include <xenforeignmemory.h> > #include <xengnttab.h> > #include <xen-tools/common-macros.h> > +#include <xen/virtdev.h> > > static unsigned int nr_failures; > #define fail(fmt, ...) \ > --- a/tools/tests/resource/test-resource.c > +++ b/tools/tests/resource/test-resource.c > @@ -8,6 +8,7 @@ > #include <xenforeignmemory.h> > #include <xengnttab.h> > #include <xen-tools/common-macros.h> > +#include <xen/virtdev.h> > > static unsigned int nr_failures; > #define fail(fmt, ...) \ > --- a/tools/tests/tsx/test-tsx.c > +++ b/tools/tests/tsx/test-tsx.c > @@ -29,6 +29,7 @@ > #include <xenctrl.h> > #include <xenguest.h> > #include <xen-tools/common-macros.h> > +#include <xen/virtdev.h> > > #include "xg_private.h" > Throughout these in particular - it's not really nice to require the extra #include everywhere now. > --- a/xen/arch/x86/domain.c > +++ b/xen/arch/x86/domain.c > @@ -753,9 +753,7 @@ static bool emulation_flags_ok(const struct domain *d, > uint32_t emflags) > emflags != (X86_EMU_VPCI | X86_EMU_LAPIC | X86_EMU_IOAPIC) ) > return false; > if ( !is_hardware_domain(d) && > - /* HVM PIRQ feature is user-selectable. */ > - (emflags & ~X86_EMU_USE_PIRQ) != > - (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) && > + xen_emflags_allowable(emflags) != XEN_X86_EMU_BASELINE && What is or is not allowable doesn't depend on just the flags. Either the name needs to be more specific, or the domain needs passing in. > @@ -456,7 +457,7 @@ struct arch_domain > /* Don't unconditionally inject #GP for unhandled MSRs. */ > bool msr_relaxed; > > - /* Emulated devices enabled bitmap. */ > + /* Hardware emulation flags. */ > uint32_t emulation_flags; > } __cacheline_aligned; The original comment isn't good enough because of what? > --- a/xen/include/Makefile > +++ b/xen/include/Makefile > @@ -15,6 +15,7 @@ headers-y := \ > compat/sched.h \ > compat/vcpu.h \ > compat/version.h \ > + compat/virtdev.h \ > compat/xen.h \ > compat/xlat.h This shouldn't be needed, as ... > --- /dev/null > +++ b/xen/include/public/virtdev.h > @@ -0,0 +1,61 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +#ifndef XEN__PUBLIC_VIRTDEV_H > +#define XEN__PUBLIC_VIRTDEV_H ... this should in no case be generally exposed: You moved the flags from a tools-only section of arch-x86/xen.h, and hence they should remain tools-only. > +/* > + * Domain hardware emulation flags. > + */ > +enum { > + VIRTDEV_LAPIC = 1U << 0, > + VIRTDEV_HPET = 1U << 1, > + VIRTDEV_PM = 1U << 2, > + VIRTDEV_RTC = 1U << 3, > + VIRTDEV_IOAPIC = 1U << 4, > + VIRTDEV_PIC = 1U << 5, > + VIRTDEV_VGA = 1U << 6, > + VIRTDEV_IOMMU = 1U << 7, > + VIRTDEV_PIT = 1U << 8, > + VIRTDEV_PIRQ = 1U << 9, > + VIRTDEV_PCI = 1U << 10, > +}; > + > +#if defined(__i386__) || defined(__x86_64__) Why does this conditional live only here? Almost the entire enum above is x86-specific, too. Bottom line: I remain yet to be convinced of the need for the new header. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |