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