Re: Strange IRQ number

From: Erik Trulsson <ertr1013_at_student.uu.se>
Date: Fri, 7 Dec 2007 20:26:42 +0100
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
Received on Fri Dec 07 2007 - 18:26:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:23 UTC