[yeah, blast from the past. finally found some bandwidth to pick this up again...] On 13/02/17 10:40, Thomas Gleixner wrote: > On Tue, 17 Jan 2017, Marc Zyngier wrote: >> @@ -2266,6 +2294,8 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, >> struct irq_domain *parent_domain) >> { >> struct device_node *of_node; >> + struct its_node *its; >> + bool has_v4 = false; >> >> its_parent = parent_domain; >> of_node = to_of_node(handle); >> @@ -2283,5 +2313,11 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, >> its_alloc_lpi_tables(); >> its_lpi_init(rdists->id_bits); >> >> + list_for_each_entry(its, &its_nodes, entry) >> + has_v4 |= its->is_v4; > > Hmm, can you have mixed version its nodes? If not, you probably should have > some sanity check (not necessarily here). If yes, then how does that work? You definitely can have mixed versions. The trick is to not allow a GICv4 operation on an interrupt that is not routed through a GICv4 ITS. That's why the code is sprinkled with its->is_v4 tests in a number of command handlers... And yes, people have built this. Shrug... Thanks, M. -- Jazz is not dead. It just smells funny... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm