Date: Fri, 27 Nov 1998 09:36:11 -0800 (PST) From: dima@best.net (Dima Ruban) To: simokawa@sat.t.u-tokyo.ac.jp (Hidetoshi Shimokawa) Cc: freebsd-alpha@FreeBSD.ORG Subject: Re: vmstat -i Message-ID: <199811271736.JAA00541@burka.rdy.com> In-Reply-To: <19981127204517A.simokawa@sat.t.u-tokyo.ac.jp> from Hidetoshi Shimokawa at "Nov 27, 1998 8:45:17 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Well, the actuall question is - do we want to adopt netbsd's method of tracking interrupts (bogus) or we want to come up with something decent on our own. Hidetoshi Shimokawa writes: > Hi, > > Here is a patch to make vmstat -i work correctly. > It needs NetBSD's src/sys/arch/alpha/include/intrcnt.h > in addtion. I don't know whether INTRCNT_EB164_IRQ is > a good choice for cia. > > /\ Hidetoshi Shimokawa > \/ simokawa@sat.t.u-tokyo.ac.jp > PGP public key: finger -l simokawa@sat.t.u-tokyo.ac.jp > > Index: alpha/interrupt.c > =================================================================== > RCS file: /pub/FreeBSD-CVS/src/sys/alpha/alpha/interrupt.c,v > retrieving revision 1.7 > diff -c -r1.7 interrupt.c > *** interrupt.c 1998/11/18 23:51:40 1.7 > --- interrupt.c 1998/11/25 12:33:18 > *************** > *** 50,63 **** > #include <machine/bwx.h> > #include <machine/intr.h> > > - #if 0 > #ifdef EVCNT_COUNTERS > #include <sys/device.h> > struct evcnt clock_intr_evcnt; /* event counter for clock intrs. */ > #else > #include <machine/intrcnt.h> > #endif > - #endif > > volatile int mc_expected, mc_received; > > --- 50,61 ---- > *************** > *** 84,95 **** > > case ALPHA_INTR_CLOCK: /* clock interrupt */ > cnt.v_intr++; > - #if 0 > #ifdef EVCNT_COUNTERS > clock_intr_evcnt.ev_count++; > #else > intrcnt[INTRCNT_CLOCK]++; > - #endif > #endif > if (platform.clockintr) > (*platform.clockintr)(framep); > --- 82,91 ---- > Index: alpha/locore.s > =================================================================== > RCS file: /pub/FreeBSD-CVS/src/sys/alpha/alpha/locore.s,v > retrieving revision 1.5 > diff -c -r1.5 locore.s > *** locore.s 1998/11/15 00:50:59 1.5 > --- locore.s 1998/11/25 14:07:36 > *************** > *** 56,61 **** > --- 56,66 ---- > #include <sys/syscall.h> > #include <assym.s> > > + #ifndef EVCNT_COUNTERS > + #define _LOCORE > + #include <machine/intrcnt.h> > + #endif > + > /* > * PTmap is recursive pagemap at top of virtual address space. > * Within PTmap, the lev1 and lev0 page tables can be found. > *************** > *** 296,305 **** > /* XXX: make systat/vmstat happy */ > .data > EXPORT(intrnames) > ! ASCIZ "foobar" > EXPORT(eintrnames) > .align 3 > EXPORT(intrcnt) > ! .quad 0 > EXPORT(eintrcnt) > .text > --- 301,314 ---- > /* XXX: make systat/vmstat happy */ > .data > EXPORT(intrnames) > ! #ifndef EVCNT_COUNTERS > ! INTRNAMES_DEFINITION > ! #endif > EXPORT(eintrnames) > .align 3 > EXPORT(intrcnt) > ! #ifndef EVCNT_COUNTERS > ! INTRCNT_DEFINITION > ! #endif > EXPORT(eintrcnt) > .text > Index: isa/isa.c > =================================================================== > RCS file: /pub/FreeBSD-CVS/src/sys/alpha/isa/isa.c,v > retrieving revision 1.7 > diff -c -r1.7 isa.c > *** isa.c 1998/11/18 23:53:11 1.7 > --- isa.c 1998/11/27 08:50:04 > *************** > *** 37,42 **** > --- 37,43 ---- > #include <isa/isareg.h> > #include <isa/isavar.h> > #include <machine/intr.h> > + #include <machine/intrcnt.h> > #include <machine/resource.h> > > MALLOC_DEFINE(M_ISADEV, "isadev", "ISA device"); > *************** > *** 627,632 **** > --- 628,634 ---- > struct isa_intr *ii = arg; > int irq = ii->irq; > > + intrcnt[INTRCNT_ISA_IRQ + irq] ++; > ii->intr(ii->arg); > > if (ii->irq > 7) > Index: pci/cia.c > =================================================================== > RCS file: /pub/FreeBSD-CVS/src/sys/alpha/pci/cia.c,v > retrieving revision 1.11 > diff -c -r1.11 cia.c > *** cia.c 1998/11/15 18:25:16 1.11 > --- cia.c 1998/11/27 11:22:55 > *************** > *** 96,101 **** > --- 96,102 ---- > #include <sys/kernel.h> > #include <sys/module.h> > #include <sys/bus.h> > + #include <sys/malloc.h> > #include <sys/rman.h> > > #include <alpha/pci/ciareg.h> > *************** > *** 104,109 **** > --- 105,111 ---- > #include <machine/bwx.h> > #include <machine/swiz.h> > #include <machine/intr.h> > + #include <machine/intrcnt.h> > #include <machine/cpuconf.h> > #include <machine/rpb.h> > #include <machine/resource.h> > *************** > *** 820,841 **** > return 0; > } > > static int > cia_setup_intr(device_t dev, device_t child, > struct resource *irq, > driver_intr_t *intr, void *arg, void **cookiep) > { > ! struct alpha_intr *i; > int error; > > error = rman_activate_resource(irq); > if (error) > return error; > > error = alpha_setup_intr(0x900 + (irq->r_start << 4), > ! intr, arg, cookiep); > ! if (error) > return error; > > /* Enable PCI interrupt */ > platform.pci_intr_enable(irq->r_start); > --- 822,876 ---- > return 0; > } > > + struct pci_intr { > + #if 0 > + void *ih; > + #endif > + driver_intr_t *intr; > + void *arg; > + int irq; > + }; > + > + /* > + * Wrap PCI interrupt just for counting > + */ > + > + static void > + pci_handle_intr(void *arg) > + { > + struct pci_intr *pi = arg; > + int irq = pi->irq; > + > + intrcnt[INTRCNT_EB164_IRQ + irq] ++; > + pi->intr(pi->arg); > + } > + > + > static int > cia_setup_intr(device_t dev, device_t child, > struct resource *irq, > driver_intr_t *intr, void *arg, void **cookiep) > { > ! struct pci_intr *pi; > int error; > > error = rman_activate_resource(irq); > if (error) > return error; > > + pi = malloc(sizeof(struct pci_intr), M_DEVBUF, M_NOWAIT); > + if (!pi) > + return ENOMEM; > + pi->intr = intr; > + pi->arg = arg; > + pi->irq = irq->r_start; > + > error = alpha_setup_intr(0x900 + (irq->r_start << 4), > ! pci_handle_intr, pi, cookiep); > ! if (error) { > ! free(pi, M_DEVBUF); > return error; > + } > > /* Enable PCI interrupt */ > platform.pci_intr_enable(irq->r_start); > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-alpha" in the body of the message > -- dima To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811271736.JAA00541>