Index: sys/arm64/arm64/gic_v3_its.c =================================================================== --- sys/arm64/arm64/gic_v3_its.c +++ sys/arm64/arm64/gic_v3_its.c @@ -353,6 +353,22 @@ return (ENXIO); } + /* QUIRK for Cavium ThunderX */ + if (CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, + CPU_IMPL_CAVIUM, CPU_PART_THUNDER, 0, 0)) { + /* + * QUIRK: Number of pages that can be set in + * Thunder's GITS_BASER cannot exceed 0xFD + */ + if ((nitspages - 1) > 0xFDUL) { + device_printf(sc->dev, + "QUIRK: attempting to configure 0x%lx" + " pages, reducing to 0xFD\n", + nitspages); + nitspages = 0xFDUL; + } + } + /* Clear fields under modification first */ gits_baser &= ~(GITS_BASER_VALID | GITS_BASER_CACHE_MASK | GITS_BASER_TYPE_MASK |