1. 04 Mar, 2010 3 commits
    • Dan Williams's avatar
      ioat: cleanup ->timer_fn() and ->cleanup_fn() prototypes · aa4d72ae
      Dan Williams authored
      If the calling convention of ->timer_fn() and ->cleanup_fn() are unified
      across hardware versions we can drop parameters to ioat_init_channel() and
      unify ioat_is_dma_complete() implementations.
      
      Both ->timer_fn() and ->cleanup_fn() are modified to expect a struct
      dma_chan pointer.
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      aa4d72ae
    • Dan Williams's avatar
      ioat3: interrupt coalescing · b9cc9869
      Dan Williams authored
      The hardware automatically disables further interrupts after each event
      until rearmed.  This allows a delay to be injected between the occurence
      of the interrupt and the running of the cleanup routine.  The delay is
      scaled by the descriptor backlog and then written to the INTRDELAY
      register which specifies the number of microseconds to hold off
      interrupt delivery after an interrupt event occurs.  According to
      powertop this reduces the interrupt rate from ~5000 intr/s to ~150
      intr/s per without affecting throughput (simple dd to a raid6 array).
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      b9cc9869
    • Dan Williams's avatar
      ioat: close potential BUG_ON race in the descriptor cleanup path · aa75db00
      Dan Williams authored
      Since ioat_cleanup_preamble() and the update of the last completed
      descriptor are not synchronized there is a chance that two cleanup threads
      can see descriptors to clean.  If the first cleans up all pending
      descriptors then the second will trigger the BUG_ON.
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      aa75db00
  2. 03 Mar, 2010 34 commits
  3. 02 Mar, 2010 3 commits