diff options
| author | dyoung <dyoung@NetBSD.org> | 2008-05-31 22:37:00 +0000 |
|---|---|---|
| committer | dyoung <dyoung@NetBSD.org> | 2008-05-31 22:37:00 +0000 |
| commit | 5d02482d8b259a42290951e6cf6a2ca1fbc85dc6 (patch) | |
| tree | cd4fd5aed9f18bfd40df9371e1b920721b68d447 /sys | |
| parent | c35a9dfad123d83e1e6c685a9777284a8bb47f49 (diff) | |
Use printf_tolog() instead of aprint_error_dev() to report PCI
exceptions and write-protection violations.
While I'm here, add a comment to describe the interrupt configuration.
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/arch/i386/pci/elan520.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/sys/arch/i386/pci/elan520.c b/sys/arch/i386/pci/elan520.c index e9292692e13..0921dcadcb5 100644 --- a/sys/arch/i386/pci/elan520.c +++ b/sys/arch/i386/pci/elan520.c @@ -1,4 +1,4 @@ -/* $NetBSD: elan520.c,v 1.34 2008/05/30 19:03:10 ad Exp $ */ +/* $NetBSD: elan520.c,v 1.35 2008/05/31 22:37:00 dyoung Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -40,7 +40,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: elan520.c,v 1.34 2008/05/30 19:03:10 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: elan520.c,v 1.35 2008/05/31 22:37:00 dyoung Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: elan520.c,v 1.34 2008/05/30 19:03:10 ad Exp $"); #include <sys/gpio.h> #include <sys/mutex.h> #include <sys/wdog.h> +#include <sys/reboot.h> #include <uvm/uvm_extern.h> @@ -413,8 +414,8 @@ elanpar_intr(void *arg) wpvstr = "unknown"; break; } - aprint_error_dev(sc->sc_par, - "%s violated write-protect window %u\n", wpvstr, win); + printf_tolog("%s: %s violated write-protect window %u\n", + device_xname(sc->sc_par), wpvstr, win); elansc_print_par(sc->sc_par, win, par); return 0; } @@ -472,8 +473,9 @@ elanpex_intr(void *arg) tgtirq = bus_space_read_2(sc->sc_memt, sc->sc_memh, MMCR_HBTGTIRQSTA); if ((pciarbsta & MMCR_PCIARBSTA_GNT_TO_STA) != 0) { - aprint_error_dev(sc->sc_pex, - "grant time-out, GNT%" __PRIuBITS "# asserted\n", + printf_tolog( + "%s: grant time-out, GNT%" __PRIuBITS "# asserted\n", + device_xname(sc->sc_pex), __SHIFTOUT(pciarbsta, MMCR_PCIARBSTA_GNT_TO_ID)); bus_space_write_1(sc->sc_memt, sc->sc_memh, MMCR_PCIARBSTA, MMCR_PCIARBSTA_GNT_TO_STA); @@ -485,9 +487,9 @@ elanpex_intr(void *arg) for (i = 0; i < __arraycount(mmsg); i++) { if ((mstirq & mmsg[i].bit) == 0) continue; - aprint_error_dev(sc->sc_pex, - "%s %08" PRIx32 " master %s\n", - cmd[mstcmd].string, mstaddr, mmsg[i].msg); + printf_tolog("%s: %s %08" PRIx32 " master %s\n", + device_xname(sc->sc_pex), cmd[mstcmd].string, mstaddr, + mmsg[i].msg); mstack |= mmsg[i].bit; if (!cmd[mstcmd].nonfatal) @@ -499,8 +501,8 @@ elanpex_intr(void *arg) for (i = 0; i < __arraycount(tmsg); i++) { if ((tgtirq & tmsg[i].bit) == 0) continue; - aprint_error_dev(sc->sc_pex, "%1x target %s\n", tgtid, - tmsg[i].msg); + printf_tolog("%s: %1x target %s\n", device_xname(sc->sc_pex), + tgtid, tmsg[i].msg); tgtack |= tmsg[i].bit; } @@ -531,6 +533,9 @@ elansc_print_par(device_t dev, int i, uint32_t par) uint32_t addr, sz, unit; const char *tgtstr; + if ((boothowto & AB_DEBUG) == 0) + return; + switch (par & MMCR_PAR_TARGET) { default: case MMCR_PAR_TARGET_OFF: @@ -572,9 +577,9 @@ elansc_print_par(device_t dev, int i, uint32_t par) addr = __SHIFTOUT(par, MMCR_PAR_4KB_ST_ADR); } - aprint_debug_dev(dev, - "PAR[%d] %08" PRIx32 " tgt %s attr %1" __PRIxBITS - " start %08" PRIx32 " size %" PRIu32 "\n", + printf_tolog( + "%s: PAR[%d] %08" PRIx32 " tgt %s attr %1" __PRIxBITS + " start %08" PRIx32 " size %" PRIu32 "\n", device_xname(dev), i, par, tgtstr, __SHIFTOUT(par, MMCR_PAR_ATTR), addr * unit, (sz + 1) * unit); } @@ -996,6 +1001,9 @@ elanpex_intr_establish(device_t self, struct elansc_softc *sc) if (elansc_pcinmi) { sc->sc_eih = nmi_establish(elanpex_intr, sc); + /* Activate NMI instead of maskable interrupts for + * all PCI exceptions: + */ mstirq |= MMCR_HBMSTIRQCTL_M_RTRTO_IRQ_SEL; mstirq |= MMCR_HBMSTIRQCTL_M_TABRT_IRQ_SEL; mstirq |= MMCR_HBMSTIRQCTL_M_MABRT_IRQ_SEL; |
