• Justin T. Gibbs's avatar
    Aic79xx Driver Upate · 955cf944
    Justin T. Gibbs authored
     o Switch to handling bad SCSI status as a sequencer interrupt
       instead of having the kernel proccess these failures via
       the completion queue.  This is done because:
    
        - The old scheme required us to pause the sequencer and clear
          critical sections for each SCB.  It seems that these pause
          actions, if coincident with a sequencer FIFO interrupt, would
          result in a FIFO interrupt getting lost or directing to the
          wrong FIFO.  This caused hangs when the driver was stressed
          under high "queue full" loads.
        - The completion code assumed that it was always called with
          the sequencer running.  This may not be the case in timeout
          processing where completions occur manually via
          ahd_pause_and_flushwork().
        - With this scheme, the extra expense of clearing critical
          sections is avoided since the sequencer will only self pause
          once all pending selections have cleared and it is not in
          a critical section.
    955cf944
aic79xx_inline.h 27.7 KB