On 27 January 2012 00:33, Rusty Russell <rusty at rustcorp.com.au> wrote: > Peter Maydell wrote: >> Anyway, if we would otherwise die horribly later on we should >> catch these cases, but it would be good to have at least a comment >> saying that these are implementation limitations rather than >> architectural ones. > > Good point. ?If we add an "supported" bit to each irq, we could do weird > things, but presumably ->num_irq would still correspond to > ITLinesNumber. > > I don't want to put too much of an essay in there. ?How's this: > > ? ? ? ?/* ITLinesNumber is represented as (N - 32) / 1. ?See > ? ? ? ? ?gic_dist_readb. */ > ? ? ? ?if (s->num_irq < 32 || (s->num_irq % 32)) { > ? ? ? ? ? ? ? ?hw_error("%u interrupt lines unsupported: not divisible by 32\n", > ? ? ? ? ? ? ? ? ? ? ? ? num_irq); I think that's a notch too terse for my taste. How about: /* ITLinesNumber is represented as (N - 32) / 1 (see * gic_dist_readb) so this is an implementation imposed * restriction, not an architectural one: */ thanks -- PMM