• Finn Thain's avatar
    ncr5380: Change instance->host_lock to hostdata->lock · 11d2f63b
    Finn Thain authored
    NCR5380.c presently uses the instance->host_lock spin lock. Convert this
    to a new spin lock that protects the NCR5380_hostdata struct.
    
    atari_NCR5380.c previously used local_irq_save/restore() rather than a
    spin lock. Convert this to hostdata->lock in irq mode. For SMP platforms,
    the interrupt handler now also acquires the spin lock.
    
    This brings all locking in the two core drivers into agreement.
    
    Adding this locking also means that a bunch of volatile qualifiers can be
    removed from the members of the NCR5380_hostdata struct. This is done in
    a subsequent patch.
    
    Proper locking will allow the abort handler to locate a command being
    aborted. This is presently impossible if the abort handler is invoked when
    the command has been moved from a queue to a pointer on the stack. (If
    eh_abort_handler can't determine whether a command has been completed
    or is still being processed then it can't decide whether to return
    success or failure.)
    
    The hostdata spin lock is now held when calling NCR5380_select() and
    NCR5380_information_transfer(). Where possible, the lock is dropped for
    polling and PIO transfers.
    
    Clean up the now-redundant SELECT_ENABLE_REG writes, that used to provide
    limited mutual exclusion between information_transfer() and reselect().
    
    Accessing hostdata->connected without data races means taking the lock;
    cleanup these accesses.
    
    The new spin lock falls away for m68k and other UP builds, so this should
    have little impact there. In the SMP case the new lock should be
    uncontested even when the SCSI bus is contested.
    Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Tested-by: default avatarOndrej Zary <linux@rainbow-software.org>
    Tested-by: default avatarMichael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    11d2f63b
atari_NCR5380.c 86.2 KB