[PATCH] Account RMI XLR interrupts

C. Jayachandran c.jayachandran at gmail.com
Tue Apr 20 14:23:25 UTC 2010


Please ignore the first part of the mail about array size, I seem to
have missed the definition in rmi files.

JC.

On Tue, Apr 20, 2010 at 7:48 PM, C. Jayachandran
<c.jayachandran at gmail.com> wrote:
> On Tue, Apr 20, 2010 at 5:06 PM, Rui Paulo <rpaulo at freebsd.org> wrote:
>> Hi,
>> The following patch accounts interrupts on the XLR and makes vmstat -i and systat work display useful data. I think the commented out atomic inc can go away, but I'm not sure.
>>
>> Here's an example:
>>
>> $ vmstat -i
>> interrupt                          total       rate
>> int16:                             56118        984
>> int17:                               214          3
>> Total                              56332        988
>>
>> int16 is the timer and int17 is the network interface (rge1).
>
> Are you sure that the mips_intr_events array has the size to hold all
> the XLR interrupts?  The XLR has a slightly different scheme (with
> COP0 EIRR EIMR registers) and can have upto 64 interrupts.
>
> A mechanism to unify the interrupt, and handling the XLR PIC may be a good idea.
>
> The network packets come on MSGRING interrupt - only link status etc
> will come on the GMAC interrupt.
>
> JC.
>
>
>> Index: intr_machdep.c
>> ===================================================================
>> --- intr_machdep.c      (revision 206791)
>> +++ intr_machdep.c      (working copy)
>> @@ -157,28 +157,17 @@
>>        for (i = sizeof(eirr) * 8 - 1; i >= 0; i--) {
>>                if ((eirr & (1ULL << i)) == 0)
>>                        continue;
>>                ie = mips_intr_events[i];
>>                /* atomic_add_long(mih->cntp, 1); */
>> +               /* Don't account special IRQs */
>> +               switch (i) {
>> +               case IRQ_IPI:
>> +               case IRQ_MSGRING:
>> +                       break;
>> +               default:
>> +                       mips_intrcnt_inc(mips_intr_counters[i]);
>> +               }
>>
>>                write_c0_eirr64(1ULL << i);
>>                pic_ack(i, 0);
>>
>> Regards,
>> --
>> Rui Paulo
>



-- 
C. Jayachandran    c.jayachandran at gmail.com


More information about the freebsd-mips mailing list