• Mikael Pettersson's avatar
    sata_promise: fix hardreset lockdep error · 3100d49d
    Mikael Pettersson authored
    sata_promise's pdc_hard_reset_port() needs to serialize because it
    flips a port-specific bit in controller register that's shared by
    all ports. The code takes the ata host lock for this, but that's
    broken because an interrupt may arrive on our irq during the hard
    reset sequence, and that too will take the ata host lock. With
    lockdep enabled a big nasty warning is seen.
    
    Fixed by adding private state to the ata host structure, containing
    a second lock used only for serializing the hard reset sequences.
    This eliminated the lockdep warnings both on my test rig and on
    the original reporter's machine.
    Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
    Tested-by: default avatarAdko Branil <adkobranil@yahoo.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    3100d49d
sata_promise.c 34.1 KB