On Wed, 2015-04-29 at 17:22 +0100, Julien Grall wrote: > Hi Ian, > > On 20/04/15 13:16, Ian Campbell wrote: > > +static int map_interrupt_to_domain(const struct dt_device_node *dev, > > + const struct dt_raw_irq *dt_raw_irq, > > + void *data) > > +{ > > [..] > > > + res = route_irq_to_guest(d, dt_irq.irq, dt_irq.irq, dt_node_name(dev)); > > + if ( res < 0 ) > > + { > > + printk(XENLOG_ERR "Unable to map IRQ%"PRId32" to dom%d\n", > > + dt_irq.irq, d->domain_id); > > + return res; > > + } > > You forgot to give the IRQ permission to the domain.
IOW I should call irq_permit_access, between irq_set_spi_type and route_irq_to_guest I think? Should I be calling vgic_reserve_virq here as well? Other similar looking code does. It seems that handle_device() calls vgic_reserve_virq twice with the same arguments (once conditionally, the other not). Is that a rebase-o? Seems to have happened in cb818a58f6f785bb41a35bc1d1e52c66ffbe1e8b. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel