Index: sys/arm64/arm64/gic_v3.c =================================================================== --- sys/arm64/arm64/gic_v3.c +++ sys/arm64/arm64/gic_v3.c @@ -594,9 +594,16 @@ if (data == NULL) return (ENOTSUP); - error = do_gic_v3_map_intr(dev, data, &irq, &pol, &trig); - if (error != 0) - return (error); + if (data->type == INTR_MAP_DATA_FDT) { + error = do_gic_v3_map_intr(dev, data, &irq, &pol, &trig); + if (error != 0) + return (error); + } else if (data->type == INTR_MAP_DATA_MSI) { + pol = INTR_POLARITY_HIGH; + trig = INTR_TRIGGER_EDGE; + irq = gi->gi_irq; + } else + return (ENOTSUP); if (gi->gi_irq != irq || pol == INTR_POLARITY_CONFORM || trig == INTR_TRIGGER_CONFORM)