|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 2/6] ARM/sysctl: Expose the supported guest GIC modes in physinfo
On 16-Jul-26 16:11, Julian Vetter wrote:
> From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> ---
> 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |