git: a1759dca9674 - main - arm64: Fix off-by-one in its_init_cpu_lpi
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 28 Mar 2025 17:58:28 UTC
The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=a1759dca96748648a6da5f9ebd14e46836eed45e commit a1759dca96748648a6da5f9ebd14e46836eed45e Author: Colin Percival <cperciva@FreeBSD.org> AuthorDate: 2025-03-27 20:23:32 +0000 Commit: Colin Percival <cperciva@FreeBSD.org> CommitDate: 2025-03-28 17:58:19 +0000 arm64: Fix off-by-one in its_init_cpu_lpi The low bits of GICR_PROPBASER are defined as The number of bits of LPI INTID supported, minus one, by the LPI Configuration table starting at Physical_Address. but flsl(1 << n) returns n + 1; use ilog2_long instead. PR: 285677 Reported by: Julien Grall Reviewed by: andrew Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49542 --- sys/arm64/arm64/gicv3_its.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c index 77d1936d8c95..546a225abf09 100644 --- a/sys/arm64/arm64/gicv3_its.c +++ b/sys/arm64/arm64/gicv3_its.c @@ -801,7 +801,7 @@ its_init_cpu_lpi(device_t dev, struct gicv3_its_softc *sc) /* Make sure changes are observable my the GIC */ dsb(sy); - size = (flsl(LPI_CONFTAB_SIZE | GIC_FIRST_LPI) - 1); + size = ilog2_long(LPI_CONFTAB_SIZE | GIC_FIRST_LPI) - 1; xbaser = vtophys(sc->sc_conf_base) | (GICR_PROPBASER_SHARE_IS << GICR_PROPBASER_SHARE_SHIFT) |