[PATCH v3 2/6] ARM/sysctl: Expose the supported guest GIC modes in physinfo
Julian Vetter <[email protected]>
| Newsgroups | org.xenproject.lists.xen-devel |
|---|---|
| Message-ID | <1784211104.8631fc262581453bbf619ec5b2062170.19f6b44e427000edb5@vates.tech> |
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. + */ + 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. + */ + 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 { -- 2.53.0 -- Julian Vetter | Vates Hypervisor & Kernel Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech