ddi_dma_lim_x86(9s) 맨 페이지 - 윈디하나의 솔라나라

개요

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

ddi_dma_lim_x86(9s)

Kernel & Driver Data Structures                            ddi_dma_lim_x86(9S)



NAME
       ddi_dma_lim_x86 - x86 DMA limits structure

SYNOPSIS
       #include <sys/ddidmareq.h>

INTERFACE LEVEL
       Solaris x86 DDI specific (Solaris x86 DDI). This interface is obsolete.

DESCRIPTION
       A  ddi_dma_lim  structure  describes  in a generic fashion the possible
       limitations of a device or its DMA engine. This information is used  by
       the  system when it attempts to set up DMA resources for a device. When
       the system is requested to perform a DMA transfer to or from an object,
       the  request  is  broken  up, if necessary, into multiple sub-requests.
       Each  sub-request  conforms  to  the  limitations  expressed   in   the
       ddi_dma_lim structure.


       This   structure   should   be   filled   in  by  calling  the  routine
       ddi_dmae_getlim(9F). This routine sets the values of the structure mem‐
       bers  appropriately  based  on the characteristics of the DMA engine on
       the driver's parent bus. If the driver has additional  limitations,  it
       can  further  restrict  some  of the values in the structure members. A
       driver should not relax any restrictions imposed by ddi_dmae_getlim().

STRUCTURE MEMBERS
         uint_t  dlim_addr_lo;  /* low range of 32 bit
                                                 addressing capability */
         uint_t  dlim_addr_hi;  /* inclusive upper bound of
                                   addressing capability */
         uint_t  dlim_minxfer;  /* minimum effective dma transfer size */
         uint_t  dlim_version;  /* version number of structure */
         uint_t  dlim_adreg_max; /* inclusive upper bound of
                                     incrementing addr reg */
         uint_t  dlim_ctreg_max; /* maximum transfer count minus one */
         uint_t  dlim_granular; /* granularity (and min size) of
                                   transfer count */
         short  dlim_sgllen;    /* length of DMA scatter/gather list */
         uint_t  dlim_reqsize;  /* maximum transfer size in bytes of
                                   a single I/O */



       The dlim_addr_lo and dlim_addr_hi fields specify the address range that
       the  device's  DMA  engine can access. The dlim_addr_lo field describes
       the lower 32-bit boundary of the device's DMA engine. The  dlim_addr_hi
       member describes the inclusive, upper 32-bit boundary. The system allo‐
       cates DMA resources in a way  that  the  address  for  programming  the
       device's  DMA  engine  will  be within this range. For example, if your
       device  can  access  the  whole  32-bit  address  range,  you  can  use
       [0,0xFFFFFFFF]. See ddi_dma_cookie(9S) or ddi_dma_segtocookie(9F).


       The  dlim_minxfer  field  describes  the minimum effective DMA transfer
       size (in units of bytes), which must be a  power  of  two.  This  value
       specifies  the  minimum  effective  granularity  of  the DMA engine and
       describes the minimum amount of memory that can be touched by  the  DMA
       transfer.  As  a  resource  request  is  handled  by  the  system,  the
       dlim_minxfer value can be modified.  This  modification  is  contingent
       upon  the presence (and use) of I/Ocaches and DMA write buffers between
       the DMA engine and the object that DMA is being performed on. After DMA
       resources  have  been allocated, you can retrieve the resultant minimum
       transfer value using ddi_dma_devalign(9F).


       The dlim_version field specifies the version number of this  structure.
       Set this field to DMALIM_VER0.


       The  dlim_adreg_max  field  describes  an inclusive upper bound for the
       device's DMA engine address register. This bound handles a fairly  com‐
       mon  case  where  a  portion  of the address register is simply a latch
       rather than a full register. For example, the upper 16 bits of a 32-bit
       address  register  might  be  a latch. This splits the address register
       into a portion that acts as a true address register (lower 16 bits) for
       a  64-kilobyte  segment  and  a latch (upper 16 bits) to hold a segment
       number.  To  describe  these  limits,  you  specify   0xFFFF   in   the
       dlim_adreg_max structure member.


       The  dlim_ctreg_max field specifies the maximum transfer count that the
       DMA engine can handle in one segment or cookie. The limit is  expressed
       as  the  maximum  count  minus one. This transfer count limitation is a
       per-segment limitation. Because the limitation is used as a  bit  mask,
       it must be one less than a power of two.


       The  dlim_granular  field describes the granularity of the device's DMA
       transfer ability, in units of bytes. This value is used to specify, for
       example,  the  sector  size  of a mass storage device. DMA requests are
       broken into multiples of this value.  If  there  is  no  scatter/gather
       capability,  then  the  size of each DMA transfer will be a multiple of
       this value. If there is scatter/gather capability, then a  single  seg‐
       ment cannot be smaller than the minimum transfer value, but can be less
       than the granularity. However, the total transfer length of  the  scat‐
       ter/gather list is a multiple of the granularity value.


       The  dlim_sgllen  field  specifies the maximum number of entries in the
       scatter/gather list. This value is the number of  segments  or  cookies
       that  the  DMA  engine can consume in one I/O request to the device. If
       the DMA engine has no scatter/gather list, set this field to one.


       The dlim_reqsize field describes the maximum number of bytes  that  the
       DMA  engine can transmit or receive in one I/O command. This limitation
       is only  significant  if  it  is  less  than  (  dlim_ctreg_max  +1)  *
       dlim_sgllen.  If  the DMA engine has no particular limitation, set this
       field to 0xFFFFFFFF.

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 StabilityObsolete


SEE ALSO
       ddi_dma_addr_setup(9F),   ddi_dma_buf_setup(9F),  ddi_dma_devalign(9F),
       ddi_dma_segtocookie(9F),        ddi_dma_setup(9F),        ddi_dmae(9F),
       ddi_dma_cookie(9S), ddi_dma_lim_sparc(9S), ddi_dma_req(9S)



Oracle Solaris 11.4               12 Oct 2005              ddi_dma_lim_x86(9S)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3