On 14 April 2016 at 13:58, Inti Gonzalez-Herrera <inti.g...@gmail.com> wrote: > I have some problems using virtio-net-device. In particular, th system is > not receiving an interrupt when it transmits a package. However, I can see > how the buffer descriptors are moved to the used ring. I was thinking that > maybe the problem is related to the fact that I don't know what is the exact > IRQ number. > > In other words, let's say that I have a function enable_irq(int, handler) > that enables a given interrupt in the GIC. What is the number n that I > should used as parameter in this platform? > > Right now, I'm using the value (40 + k), where k is the index of the > specific transporter where the network device is attached (from 0 to 3). It > is not working. > I get that information from file hw/arm/vexpress.c, functions > vexpress_common_init and vexpress_modify_dtb (this one is not executed)
Problems with interrupt numbers are almost always related to confusion about whether the interrupt number starts with the 0 as the first external interrupt, or 0 as the first internal interrupt (where 0..31 are SGIs and PPIs, and the first external (SPI) interrupt is 32). The '40 + k' in the vexpress.c source code is an external interrupt number (in which numbering scheme the PL011 UARTs are interrupts 5 to 8, and the sp804 timer is interrupt 48, if that helps you cross-check against some other devices in your OS which do have working interrupts). thanks -- PMM