Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 29519
b: refs/heads/master
c: d4c8532
h: refs/heads/master
i:
  29517: 273380e
  29515: d6c52d2
  29511: 40be92a
  29503: e9f89f2
v: v3
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Jun 12, 2006
1 parent ee8cb10 commit 3fe4e19
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aeb2ecd6096182cc080d37679080c0f088dcd4a4
refs/heads/master: d4c85325a817d3351e61c4be64b437116e8483b4
20 changes: 19 additions & 1 deletion trunk/drivers/scsi/sata_sil.c
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,25 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
u8 status;

if (unlikely(bmdma2 & SIL_DMA_SATA_IRQ)) {
ata_ehi_hotplugged(&ap->eh_info);
u32 serror;

/* SIEN doesn't mask SATA IRQs on some 3112s. Those
* controllers continue to assert IRQ as long as
* SError bits are pending. Clear SError immediately.
*/
serror = sil_scr_read(ap, SCR_ERROR);
sil_scr_write(ap, SCR_ERROR, serror);

/* Trigger hotplug and accumulate SError only if the
* port isn't already frozen. Otherwise, PHY events
* during hardreset makes controllers with broken SIEN
* repeat probing needlessly.
*/
if (!(ap->flags & ATA_FLAG_FROZEN)) {
ata_ehi_hotplugged(&ap->eh_info);
ap->eh_info.serror |= serror;
}

goto freeze;
}

Expand Down

0 comments on commit 3fe4e19

Please sign in to comment.