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

개요

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

pci_ereport_setup(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 er‐
       ror handler callback function. See ddi_fm_handler_register(9F). The er‐
       ror_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 er‐
       rors 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 as‐
       sociated 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 de‐
                          vice 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  re‐
                          turned  ddi_fm_error_t structure will typically ref‐
                          erence 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