cvs commit: src/sys/amd64/amd64 intr_machdep.c src/sys/arm/arm intr.c src/sys/i386/i386 intr_machdep.c src/sys/ia64/ia64 interrupt.c src/sys/kern kern_cpuset.c kern_intr.c src/sys/powerpc/powerpc intr_machdep.c src/sys/sparc64/sparc64 ...

Marcel Moolenaar xcllnt at mac.com
Fri Apr 11 16:35:52 UTC 2008


On Apr 11, 2008, at 2:51 AM, Jeff Roberson wrote:
>
> On Thu, 10 Apr 2008, Marcel Moolenaar wrote:
>
>>
>> On Apr 10, 2008, at 10:01 PM, Jeff Roberson wrote:
>>> On Thu, 10 Apr 2008, Marcel Moolenaar wrote:
>>>> On Apr 10, 2008, at 8:26 PM, Jeff Roberson wrote:
>>>>> jeff        2008-04-11 03:26:41 UTC
>>>>> FreeBSD src repository
>>>>> Modified files:
>>>>> sys/amd64/amd64      intr_machdep.c
>>>>> sys/arm/arm          intr.c
>>>>> sys/i386/i386        intr_machdep.c
>>>>> sys/ia64/ia64        interrupt.c
>>>>> sys/kern             kern_cpuset.c kern_intr.c
>>>>> sys/powerpc/powerpc  intr_machdep.c
>>>>> sys/sparc64/sparc64  intr_machdep.c
>>>>> sys/sun4v/sun4v      intr_machdep.c
>>>>> sys/sys              cpuset.h interrupt.h
>>>>> Log:
>>>>> - Add the interrupt vector number to intr_event_create so MI  
>>>>> code can
>>>>> lookup hard interrupt events by number.  Ignore the irq# for  
>>>>> soft intrs.
>>>> JFYI: vectors are not the same as hard interrupt numbers.
>>>> On ia64 they imply priority, which means that vector
>>>> numbers should be selected for their priority and not
>>>> have a 1-to-1 mapping with IRQ number.
>>>> On powerpc they mean absolutely nothing other than being
>>>> an index into an array.
>>>> It's better to use IRQs and not vectors to lookup int.
>>>> events by number.
>>> I think I mixed my terminology in the commit.  I meant for all  
>>> architectures to pass in the number that would appear in vmstat - 
>>> i.  Can you verify that this is what I did for powerpc and ia64?
>>
>> powerpc correctly uses irq.
>> ia64 incorrectly uses vector.
>>
>> Would you mind changing ia64 to use irq as well?
>
> Index: ia64/ia64/interrupt.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/ia64/ia64/interrupt.c,v
> retrieving revision 1.66
> diff -r1.66 interrupt.c
> 343c343
> <                   0, vector, ia64_intr_mask, ia64_intr_unmask,  
> ia64_intr_eoi,
> ---
>>                  0, irq, ia64_intr_mask, ia64_intr_unmask,
> ia64_intr_eoi,
>
> Does that look right?

Yup. It does. Everything matches that way:

<dmesg>
   ohci0: <NEC uPD 9210 USB controller> mem 0x80023000-0x80023fff irq  
16 at device 1.0 on pci0
</dmesg>

<devinfo -rv>
   ohci0 pnpinfo vendor=0x1033 device=0x0035 subvendor=0x1033  
subdevice=0x0035 class=0x0c0310 at slot=1 function=0
       Interrupt request lines:
           16
</devinfo -rv>

<vmstat -ia>
     #015                            0          0
     ohci0                           0          0
     ohci1                           0          0
     ehci0                           0          0
     #019                            0          0
</stat -ia>

Looking up interrupt events for ohci0 would then also use 16
and not 48 (i.e. the vector number).

FYI,

-- 
Marcel Moolenaar
xcllnt at mac.com




More information about the cvs-src mailing list