Re: [PATCH v3 2/6] ARM/sysctl: Expose the supported guest GIC modes in physinfo
"Orzel, Michal" <[email protected]>
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <[email protected]> |
On 16-Jul-26 16:11, Julian Vetter wrote: > From: Andrew Cooper <[email protected]> > > Signed-off-by: Andrew Cooper <[email protected]> > --- > Changes in v3: > - No changes > --- > xen/arch/arm/sysctl.c | 26 ++++++++++++++++++++++++++ > xen/include/public/sysctl.h | 2 ++ > 2 files changed, 28 insertions(+) > > diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c > index 32cab4feff..3b0edf4cec 100644 > --- a/xen/arch/arm/sysctl.c > +++ b/xen/arch/arm/sysctl.c > @@ -12,7 +12,10 @@ > #include <xen/dt-overlay.h> > #include <xen/errno.h> > #include <xen/hypercall.h> > + > #include <asm/arm64/sve.h> > +#include <asm/gic.h> > + > #include <public/sysctl.h> > > void arch_do_physinfo(struct xen_sysctl_physinfo *pi) > @@ -21,6 +24,29 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi) > > pi->arch_capabilities |= MASK_INSR(sve_encode_vl(get_sys_vl_len()), > XEN_SYSCTL_PHYSCAP_ARM_SVE_MASK); > + > + /* > + * The GIC version(s) we're happy creating guests with. Right now for > + * simplicity it is tied to the active hardware version, but this will > + * cease to be the case if/when the compatbility modes are enabled. s/compatbility/compatibility/ GICv3 may support GICv2 and we support libxl guest requesting GICv2 on a GICv3 host. Why are we not exposing this information here? > + */ > + switch ( gic_hw_version() ) > + { > + case GIC_V2: > + pi->arch_capabilities |= XEN_SYSCTL_PHYSCAP_ARM_GIC_V2; > + break; > + > + case GIC_V3: > + pi->arch_capabilities |= XEN_SYSCTL_PHYSCAP_ARM_GIC_V3; > + break; > + > + case GIC_INVALID: > + /* > + * Running a control domain without having the GIC sorted yet? > + * Something's broken, but there's nothing we can do about it here. > + */ Add ASSERT_UNREACHABLE here. > + break; > + } > } > > long arch_do_sysctl(struct xen_sysctl *sysctl, > diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h > index c7cd9b4eb0..d20ebf3644 100644 > --- a/xen/include/public/sysctl.h > +++ b/xen/include/public/sysctl.h > @@ -106,6 +106,8 @@ struct xen_sysctl_tbuf_op { > > #if defined(__arm__) || defined(__aarch64__) > #define XEN_SYSCTL_PHYSCAP_ARM_SVE_MASK (0x1FU) > +#define XEN_SYSCTL_PHYSCAP_ARM_GIC_V2 (1U << 5) > +#define XEN_SYSCTL_PHYSCAP_ARM_GIC_V3 (1U << 6) > #endif > > struct xen_sysctl_physinfo { ~Michal