diff options
Diffstat (limited to 'usr/src/uts/i86pc/os/ddi_impl.c')
-rw-r--r-- | usr/src/uts/i86pc/os/ddi_impl.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/usr/src/uts/i86pc/os/ddi_impl.c b/usr/src/uts/i86pc/os/ddi_impl.c index e001a30f78..9a6fbc4689 100644 --- a/usr/src/uts/i86pc/os/ddi_impl.c +++ b/usr/src/uts/i86pc/os/ddi_impl.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -2319,7 +2319,8 @@ peekpoke_mem(ddi_ctl_enum_t cmd, peekpoke_ctlops_t *in_args) * calling pci_ereport_post() on all puts and for any gets that return -1 */ static int -pci_peekpoke_check_fma(dev_info_t *dip, void *arg, ddi_ctl_enum_t ctlop) +pci_peekpoke_check_fma(dev_info_t *dip, void *arg, ddi_ctl_enum_t ctlop, + void (*scan)(dev_info_t *, ddi_fm_error_t *)) { int rval = DDI_SUCCESS; peekpoke_ctlops_t *in_args = (peekpoke_ctlops_t *)arg; @@ -2389,7 +2390,7 @@ pci_peekpoke_check_fma(dev_info_t *dip, void *arg, ddi_ctl_enum_t ctlop) */ de.fme_flag = DDI_FM_ERR_UNEXPECTED; } - pci_ereport_post(dip, &de, NULL); + (void) scan(dip, &de); if (hdlp->ah_acc.devacc_attr_access != DDI_DEFAULT_ACC && de.fme_status != DDI_FM_OK) { ndi_err_t *errp = (ndi_err_t *)hp->ahi_err; @@ -2453,7 +2454,8 @@ int pci_peekpoke_check(dev_info_t *dip, dev_info_t *rdip, ddi_ctl_enum_t ctlop, void *arg, void *result, int (*handler)(dev_info_t *, dev_info_t *, ddi_ctl_enum_t, void *, - void *), kmutex_t *err_mutexp, kmutex_t *peek_poke_mutexp) + void *), kmutex_t *err_mutexp, kmutex_t *peek_poke_mutexp, + void (*scan)(dev_info_t *, ddi_fm_error_t *)) { int rval; peekpoke_ctlops_t *in_args = (peekpoke_ctlops_t *)arg; @@ -2494,7 +2496,7 @@ pci_peekpoke_check(dev_info_t *dip, dev_info_t *rdip, rval = handler(dip, rdip, ctlop, arg, result); if (rval == DDI_SUCCESS) { mutex_enter(err_mutexp); - rval = pci_peekpoke_check_fma(dip, arg, ctlop); + rval = pci_peekpoke_check_fma(dip, arg, ctlop, scan); mutex_exit(err_mutexp); } mutex_exit(peek_poke_mutexp); |