Date: Tue, 20 Apr 2010 19:48:43 +0530 From: "C. Jayachandran" <c.jayachandran@gmail.com> To: Rui Paulo <rpaulo@freebsd.org> Cc: freebsd-mips@freebsd.org Subject: Re: [PATCH] Account RMI XLR interrupts Message-ID: <g2u98a59be81004200718md331d3b1g5bff1c764b58fc73@mail.gmail.com> In-Reply-To: <BAAA25BC-6094-4B5B-9C83-A330933EBA51@freebsd.org> References: <BAAA25BC-6094-4B5B-9C83-A330933EBA51@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Apr 20, 2010 at 5:06 PM, Rui Paulo <rpaulo@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?g2u98a59be81004200718md331d3b1g5bff1c764b58fc73>
