summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgonzo <gonzo@FreeBSD.org>2010-08-05 21:31:29 +0000
committergonzo <gonzo@FreeBSD.org>2010-08-05 21:31:29 +0000
commit75e94a3cbb5970210dd50b932cd2ce4212c8a7b5 (patch)
tree1e9cedcc5f8b441173b7fa1b4253633703e25f41
parentd71ba1ed02be1fbaf6c970351956dc9160a455f4 (diff)
downloadFreeBSD-src-75e94a3cbb5970210dd50b932cd2ce4212c8a7b5.zip
FreeBSD-src-75e94a3cbb5970210dd50b932cd2ce4212c8a7b5.tar.gz
- Add interrupts counter for PCI devices
-rw-r--r--sys/mips/atheros/ar71xx_pci.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/mips/atheros/ar71xx_pci.c b/sys/mips/atheros/ar71xx_pci.c
index d96f5a5..2e6a5fa 100644
--- a/sys/mips/atheros/ar71xx_pci.c
+++ b/sys/mips/atheros/ar71xx_pci.c
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
#include <machine/bus.h>
#include <machine/cpu.h>
+#include <machine/intr_machdep.h>
#include <machine/pmap.h>
#include <dev/pci/pcivar.h>
@@ -70,6 +71,7 @@ struct ar71xx_pci_softc {
struct rman sc_irq_rman;
struct intr_event *sc_eventstab[AR71XX_PCI_NIRQS];
+ mips_intrcnt_t sc_intr_counter[AR71XX_PCI_NIRQS];
struct resource *sc_irq;
void *sc_ih;
};
@@ -436,13 +438,20 @@ ar71xx_pci_setup_intr(device_t bus, device_t child, struct resource *ires,
if (event == NULL) {
error = intr_event_create(&event, (void *)irq, 0, irq,
ar71xx_pci_mask_irq, ar71xx_pci_unmask_irq, NULL, NULL,
- "ar71xx_pci intr%d:", irq);
+ "pci intr%d:", irq);
- sc->sc_eventstab[irq] = event;
+ if (error == 0) {
+ sc->sc_eventstab[irq] = event;
+ sc->sc_intr_counter[irq] =
+ mips_intrcnt_create(event->ie_name);
+ }
+ else
+ return error;
}
intr_event_add_handler(event, device_get_nameunit(child), filt,
handler, arg, intr_priority(flags), flags, cookiep);
+ mips_intrcnt_setname(sc->sc_intr_counter[irq], event->ie_fullname);
ar71xx_pci_unmask_irq((void*)irq);
@@ -497,6 +506,7 @@ ar71xx_pci_intr(void *arg)
/* TODO: frame instead of NULL? */
intr_event_handle(event, NULL);
+ mips_intrcnt_inc(sc->sc_intr_counter[irq]);
}
}
OpenPOWER on IntegriCloud