lkml.org 
[lkml]   [1996]   [Jun]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: 2.2.0 wishlist
    Date
    Stephen Tweedie said:

    > > * Allocate ftape DMA buffers (96KB!) on first open (free on last
    > > close) instead of during driver initialization; needs fixing
    > > the memory allocation code first so that it doesn't cause so
    > > much fragmentation (and failing to allocate large contiguous
    > > areas even though there are still lots of free pages)
    >
    > Impossible. DMA *needs* contiguous memory, and how you allocate
    > memory is largely irrelevant --- you simply don't have control over
    > how the application will access that memory, so you can't control
    > which order pages get freed int. Any method which can guarantee large
    > contiguous requests is going waste as much memory as the DMA buffers
    > would be occupying themselves.

    DMA is a pretty special case, and not that common, as open/insmod is not time
    critical, get free pages just needs to swap pages until the dma buffer is
    available. I once hacked get_free_pages to do this (currently it returns NULL
    if called with the ATOMIC flag, or if there is enough ram free, but not
    suitable for DMA (i.e. fragmented or above the DMA_LIMIT). I simply changed
    the if to only return NULL for the atomic case. This is far from optimal, as
    it would free a single dmable page each loop, with no intelligence with regard
    to contiguous, but it allowed ftape to always get its 96K buffer within a few
    seconds, and the needlessly swaped out pages soon return...


    --
    Jon. <jon@gte.esi.us.es, http://www.esi.us.es/~jon>


    \
     
     \ /
      Last update: 2005-03-22 13:37    [from the cache]
    ©2003-2011 Jasper Spaans