diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c --- a/sys/arm/arm/gic.c +++ b/sys/arm/arm/gic.c @@ -517,6 +517,9 @@ case GIC_IVAR_VGIC: *result = 0; return (0); + case GIC_IVAR_SUPPORT_LPIS: + *result = false; + return (0); } return (ENOENT); diff --git a/sys/arm/arm/gic_common.h b/sys/arm/arm/gic_common.h --- a/sys/arm/arm/gic_common.h +++ b/sys/arm/arm/gic_common.h @@ -38,6 +38,7 @@ #define GIC_IVAR_HW_REV 500 #define GIC_IVAR_BUS 501 #define GIC_IVAR_VGIC 502 +#define GIC_IVAR_SUPPORT_LPIS 503 /* GIC_IVAR_BUS values */ #define GIC_BUS_UNKNOWN 0 @@ -48,6 +49,7 @@ __BUS_ACCESSOR(gic, hw_rev, GIC, HW_REV, u_int); __BUS_ACCESSOR(gic, bus, GIC, BUS, u_int); __BUS_ACCESSOR(gic, vgic, GIC, VGIC, u_int); +__BUS_ACCESSOR(gic, support_lpis, GIC, SUPPORT_LPIS, bool); /* Software Generated Interrupts */ #define GIC_FIRST_SGI 0 /* Irqs 0-15 are SGIs/IPIs. */ diff --git a/sys/arm64/arm64/gic_v3.c b/sys/arm64/arm64/gic_v3.c --- a/sys/arm64/arm64/gic_v3.c +++ b/sys/arm64/arm64/gic_v3.c @@ -494,6 +494,7 @@ case GICV3_IVAR_REDIST: *result = (uintptr_t)&sc->gic_redists.pcpu[PCPU_GET(cpuid)]; return (0); + case GIC_IVAR_SUPPORT_LPIS: case GICV3_IVAR_SUPPORT_LPIS: *result = (gic_d_read(sc, 4, GICD_TYPER) & GICD_TYPER_LPIS) != 0;