TenThumbs wrote:
> Mark Lord wrote:
> > Okay, the error reported must be from the second ide_multwrite() call,
> > after the "END IRQ" in Alan's scenario above. This could all make sense.
> >
> > If so, reinstating the disable/enable calls *for this fragment only*
> > should cure the problem 100%.
..
> I'm still seeing the problem in 2.2.14pre15 although it may have moved.
..
> Do you have a patch to try?
Yup. Attached.
Could you tell me more about your system?
Eg.. what IDE chipset is having the problem,
does it share interrupts with anything,
and is your kernel SMP, or UP?
-- Mark Lord Real-Time Remedies Inc. mlord@pobox.com --------------3EDE24D8364FED72F96A4E2C Content-Type: text/plain; charset=us-ascii; name="ide-2.2.14pre.fix" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ide-2.2.14pre.fix"--- linux-2.2.14pre13ac-ml/drivers/block/ide-disk.c.orig Mon Dec 13 22:44:35 1999 +++ linux/drivers/block/ide-disk.c Sat Dec 18 13:12:54 1999 @@ -416,6 +416,7 @@ * in ide_multwrite(), then we need to remove the handler/timer * before returning. Fortunately, this NEVER happens (right?). */ + disable_irq_nosync(HWIF(drive)->irq); hwgroup->wrq = *rq; /* scratchpad */ ide_set_handler (drive, &multwrite_intr, WAIT_CMD); if (ide_multwrite(drive, drive->mult_count)) { @@ -424,8 +425,10 @@ hwgroup->handler = NULL; del_timer(&hwgroup->timer); spin_unlock_irqrestore(&io_request_lock, flags); + enable_irq(HWIF(drive)->irq); return ide_stopped; } + enable_irq(HWIF(drive)->irq); } else { ide_set_handler (drive, &write_intr, WAIT_CMD); idedisk_output_data(drive, rq->buffer, SECTOR_WORDS);
--------------3EDE24D8364FED72F96A4E2C--
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/