• Mikael Pettersson's avatar
    sata_promise: fix irq clearing buglets · a13db78e
    Mikael Pettersson authored
    This patch fixes two bugs in sata_promise's irq status clearing paths:
    1. When clearing the irq status for a specific port, the driver
       read the global SEQMASK register. This is wrong because that
       clears the irq status for _all_ ports.
    2. pdc_thaw() incorrectly added the PDC_INT_SEQMASK host register
       offset to a per-port ata engine base address. This resulted in
       it reading the unrelated PDC_PKT_SUBMIT register, which did not
       have the desired irq status clearing effect.
    
    In both cases the fix is to read from the port's Command/Status
    register. This also matches what Promise's own driver does.
    Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    a13db78e
sata_promise.c 29.6 KB