Strange IRQ number

Erik Trulsson ertr1013 at student.uu.se
Fri Dec 7 11:26:47 PST 2007


On Fri, Dec 07, 2007 at 09:13:57PM +0200, Nikolay Pavlov wrote:
> I see some strange IRQ number for my em0 card on BETA4:
> root at cassini:~# vmstat -i                                                                                                                                                    
> interrupt                          total       rate
> irq1: atkbd0                           6          0
> irq6: fdc0                             1          0
> irq14: ata0                       184947         16
> irq15: ata1                       184946         16
> cpu0: timer                     22110598       1999
> irq256: em0                      6945039        628
> ^^^^^^^^^^^^^^^^
> cpu1: timer                     22110396       1999
> Total                           51535933       4661
> 
> On 6.2 it was shared with uhci. Now all uhci controllers gone from the 
> vmstat but not from the system:

'vmstat -i' only shows those interrupts that have generated at least one
interrupt.  Use 'vmstat -ia' to see all the interrupts (I suspect that you
will find the uhci* devices there.)

> 
> root at cassini:~# usbdevs                                                                                                                                                      
> addr 1: UHCI root hub, Intel
> addr 1: UHCI root hub, Intel
> addr 1: UHCI root hub, Intel
> addr 1: UHCI root hub, Intel
> addr 1: EHCI root hub, Intel
> 
> root at cassini:~# dmesg | grep em0                                                                                                                                             
> em0: <Intel(R) PRO/1000 Network Connection Version - 6.7.3> port 
> 0x4000-0x401f mem 0xd0100000-0xd011ffff irq 16 at device 0.0 on pci6
> em0: Using MSI interrupt

   ^^^^^^^^^^^^^^^^^^^^^^

This is the magic information.  On 7.x MSI/MSI-X interrupts are enabled by
default (which is not the case on 6.x).
MSI/MSI-X is a new interrupt delivery mechanism that can be used by all
PCI-E devices (although not all device drivers in FreeBSD take
advantage of this yet) and some PCI-X devices, that essentially assigns a
separate interrupt for each device - thus no need for sharing interrupts.


> em0: Ethernet address: 00:30:48:91:c0:90
> em0: [FILTER]
> 
> The entire system work ok.

As expected. What you see is simply the em0 NIC (apparently a PCI-E device)
using MSI instead of the old interrupt method.  
FreeBSD assigns such devices a "virtual" interrupt number starting at 256.


Short version:  It is not a bug, it is a feature. :-)


-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013 at student.uu.se


More information about the freebsd-current mailing list