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) |