summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.osdl.org>2004-01-04 02:34:20 -0800
committerLinus Torvalds <torvalds@home.osdl.org>2004-01-04 02:34:20 -0800
commitfa751d5c198cc0ff8efc7df04550fce45862b354 (patch)
tree6433ca2ffd07bf03080e4d4be0bfc931691daf22
parent0ef06869c48fb9ba88d08e6c27baf5d7eab4df93 (diff)
parent11f963511c5a94c5969fdbb5e6f4da2190592d6f (diff)
Merge bk://bk.arm.linux.org.uk/linux-2.6-serial
into home.osdl.org:/home/torvalds/v2.5/linux
-rw-r--r--arch/x86_64/lib/memset.S2
-rw-r--r--drivers/ide/ide-iops.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86_64/lib/memset.S b/arch/x86_64/lib/memset.S
index f0a7bca375c7..4b4c40638640 100644
--- a/arch/x86_64/lib/memset.S
+++ b/arch/x86_64/lib/memset.S
@@ -113,7 +113,7 @@ memset_c:
/* expand byte value */
movzbl %sil,%esi
movabs $0x0101010101010101,%rax
- mul %esi /* with rax, clobbers rdx */
+ mulq %rsi /* with rax, clobbers rdx */
rep
stosq
movl %r8d,%ecx
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 06d6292cf70f..a239bbaf5074 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -647,6 +647,15 @@ int ide_wait_stat (ide_startstop_t *startstop, ide_drive_t *drive, u8 good, u8 b
timeout += jiffies;
while ((stat = hwif->INB(IDE_STATUS_REG)) & BUSY_STAT) {
if (time_after(jiffies, timeout)) {
+ /*
+ * One last read after the timeout in case
+ * heavy interrupt load made us not make any
+ * progress during the timeout..
+ */
+ stat = hwif->INB(IDE_STATUS_REG);
+ if (!(stat & BUSY_STAT))
+ break;
+
local_irq_restore(flags);
*startstop = DRIVER(drive)->error(drive, "status timeout", stat);
return 1;