pci_ereport_post(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

pci_ereport_post(9f)

pci_ereport_setup(9F)          Kernel Functions          pci_ereport_setup(9F)



NAME
       pci_ereport_setup,  pci_ereport_teardown, pci_ereport_post - post error
       reports for the generic PCI errors logged in the PCI Configuration Sta‐
       tus register.

SYNOPSIS
       #include <sys/sunddi.h>

       void pci_ereport_setup(dev_info_t *dip);


       void pci_ereport_teardown(dev_info_t *dip);


       void pci_ereport_post(dev_info_t *dip, ddi_fm_error_t *dep,
            uint16_t *status);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       dip       Pointer to the dev_info structure of the devices


       dep       Pointer to DDI error status


       status    Pointer to status bit storage location


DESCRIPTION
       The  pci_ereport_setup()  function initializes support for error report
       generation and sets up the resources  for  subsequent  access  to  PCI,
       PCI/X  or  PCI Express Configuration space. The caller must have estab‐
       lished a fault management capability  level  of  at  least  DDI_FM_ERE‐
       PORT_CAPABLE with a previous call to ddi_fm_init() for dip.


       The  pci_ereport_teardown()  function  releases any resources allocated
       and set up by pci_ereport_setup() and associated with dip.


       The pci_ereport_post() function is called to scan for and post any PCI,
       PCI/X  or PCI Express Bus errors. On a PCI bus, for example, the errors
       detected include:

           o      Detected Parity Error


           o      Master Data Parity Error


           o      Target Abort


           o      Master Abort


           o      System Error


           o      Discard Timeout



       The pci_ereport_post() function must be called  only  from  a  driver's
       error  handler  callback function. See ddi_fm_handler_register(9F). The
       error_status argument to the error handler callback function should  be
       passed through as the dep argument to pci_ereport_post() as it may con‐
       tain bus specific information that might be  useful  for  handling  any
       errors that are discovered.


       The fme_flag in the error_status argument to the error handler callback
       function will contain one of the following:

       DDI_FM_ERR_UNEXPECTED()  Any errors discovered are unexpected.


       DDI_FM_ERR_EXPECTED()    Errors  discovered  were  the  result   of   a
                                DDI_ACC_CAUTIOUS operation.


       DDI_FM_ERR_POKE()        Errors   discovered   are   the  result  of  a
                                ddi_poke(9F) operation.


       DDI_FM_ERR_PEEK()        Errors  discovered  are  the   result   of   a
                                ddi_peek(9F) operation.



       Error  report  events are generated automatically if fme_flag is set to
       DDI_FM_ERR_UNEXPECTED and the corresponding error bits are set  in  the
       various  PCI,  PCI/X  or  PCI Express Bus error registers of the device
       associated with dip. The generated error report events  are  posted  to
       the Solaris Fault Manager, fmd(8), for diagnosis.


       If  the  status argument is non-null, pci_ereport_post() saves the con‐
       tents of the PCI Configuration Status Register to *status. If it is not
       possible  to read the PCI Configuration Status Register, -1 is returned
       in *status instead.


       On return from  the  call  to  pci_ereport_post(),  the  ddi_fm_error_t
       structure  pointed at by dep will have been updated, and the fme_status
       field contains one of the following values:

       DDI_FM_OK          No errors were  detected  which  might  affect  this
                          device instance.


       DDI_FM_FATAL       An  error  which  is  considered fatal to the opera‐
                          tional state of the system was detected.


       DDI_FM_NONFATAL    An error which is not considered fatal to the opera‐
                          tional   state  of  the  system  was  detected.  The
                          fme_acc_handle  or  fme_dma_handle  fields  in   the
                          returned  ddi_fm_error_t  structure  will  typically
                          reference  a  handle  that  belongs  to  the  device
                          instance that has been affected.


       DDI_FM_UNKNOWN     An  error  was  detected, but the call was unable to
                          determine the impact of the error on the operational
                          state of the system. This is treated the same way as
                          DDI_FM_FATAL unless some other  device  is  able  to
                          evaluate the fault to be DDI_FM_NONFATAL.


CONTEXT
       The  pci_ereport_setup()  and  pci_ereport_teardown() functions must be
       called from user or kernel context.


       The pci_ereport_post() function can be called in any context.

EXAMPLES
         int xxx_fmcap = DDI_FM_EREPORT_CAPABLE | DDI_FM_ERRCB_CAPABLE;

         xxx_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) {

               ddi_fm_init(dip, &xxx_fmcap, &xxx_ibc);
                   if (xxx_fmcap & DDI_FM_ERRCB_CAPABLE)
               ddi_fm_handler_register(dip, xxx_err_cb);
                   if (xxx_fmcap & DDI_FM_EREPORT_CAPABLE)
                       pci_ereport_setup(dip);

         }

         xxx_err_cb(dev_info_t *dip, ddi_fm_error_t *errp) {
         uint16_t status;

              pci_ereport_post(dip, errp, &status);
         return (errp->fme_status);
         }

         xxx_detach(dev_info_t *dip, ddi_attach_cmd_t cmd) {

              if (xxx_fmcap & DDI_FM_EREPORT_CAPABLE)
                  pci_ereport_teardown(dip);
              if (xxx_fmcap & DDI_FM_ERRCB_CAPABLE)
                  ddi_fm_handler_unregister(dip);
         ddi_fm_fini(dip);

         }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted


SEE ALSO
       attributes(7),  fmd(8),  ddi_fm_handler_register(9F),  ddi_fm_init(9F),
       ddi_peek(9F), ddi_poke(9F), ddi_fm_error(9S)



Oracle Solaris 11.4               27 Nov 2017            pci_ereport_setup(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3