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

개요

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

ddi_fm_dma_err_get(9f)

ddi_fm_acc_err_get(9F)         Kernel Functions         ddi_fm_acc_err_get(9F)



NAME
       ddi_fm_acc_err_get,  ddi_fm_dma_err_get  -  get the error status for an
       access or DMA handle

SYNOPSIS
       #include <sys/ndifma.h>

       void ddi_fm_acc_err_get(ddi_acc_handle_t acc_handle,
            ddi_fm_error_t *error_status, int version);


       void ddi_fm_dma_err_get(ddi_dma_handle_t dma_handle,
            ddi_fm_error_t *error_status, int version);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       acc_handle      Data access handle obtained from  a  previous  call  to
                       ddi_regs_map_setup(9F),  ddi_dma_mem_alloc(9F), or to a
                       similar function.


       dma_handle      DMA  handle  obtained   from   a   previous   call   to
                       ddi_dma_mem_alloc(9F) or one of its derivatives.


       error_status    Pointer to where the error status for the access or DMA
                       handle should be returned.


       version         Version number of  ddi_fm_error_t.  The  driver  should
                       always set this to DDI_FME_VERSION.


DESCRIPTION
       The  ddi_fm_dma_err_get() and ddi_fm_acc_err_get() functions return the
       error status for a DMA or access handle, respectively. If a  fault  has
       occurred  that  affects the resource mapped by the supplied handle, the
       supplied error_status structure is updated to reflect error information
       captured  during  error handling by a bus or other device driver in the
       I/O data path. When no error has occurred,  error_status.fme_status  is
       set to DDI_FM_OK.


       If  an  error  is  indicated  for an access handle, the driver might no
       longer be able to access the mapped  registers  or  memory  using  pro‐
       grammed  I/O  through the handle. Typically, this might occur after the
       device has failed to respond to an I/O access, such as in the case of a
       bus error or a timeout. The effect of programmed I/O access made at the
       time of a fault is undefined. Read access via ddi_get8(9F),  for  exam‐
       ple,  can  return  random  values,  while write access via ddi_put8(9F)
       might or might not have an effect. It is possible,  however,  that  the
       error  might  be  transient.  In  that  case, the driver can attempt to
       recover by calling  ddi_fm_acc_err_clear(),  resetting  the  device  to
       return it to a known state, then retrying any potentially failed trans‐
       actions.


       If an error is indicated for a DMA handle, it implies that an error has
       been  detected  that  has  or  will affect DMA transactions between the
       device and the memory currently bound to the handle, or to  the  memory
       most recently bound if the handle is currently unbound. Possible causes
       include the failure of a component in the DMA data path or  an  attempt
       by the device to make an invalid DMA access. The contents of any memory
       currently or previously bound to the handle should be considered  inde‐
       terminate.  The driver might be able to continue by freeing memory that
       is bound to the handle back to the  system,  resetting  the  device  to
       return it to a known state, then retrying any potentially failed trans‐
       actions.


       If the driver is unable to  recover,  the  operating  state  should  be
       changed  by  a  call to ddi_fm_service_impact() that specifies DDI_SER‐
       VICE_LOST for the impacted device instance. If the recovery  and  retry
       succeed,  a  call  should  still be made to ddi_fm_service_impact() but
       DDI_SERVICE_UNAFFECTED should be specified.

CONTEXT
       The ddi_fm_acc_err_get()  and  ddi_fm_dma_err_get()  functions  can  be
       called from user, kernel, or high-level interrupt context.

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),     ddi_dma_mem_alloc(9F),     ddi_fm_acc_err_clear(9F),
       ddi_fm_service_impact(9F),          ddi_get8(9F),         ddi_put8(9F),
       ddi_regs_map_setup(9F), ddi_fm_error(9S),


       Writing Device Drivers in Oracle Solaris 11.4



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