Messages in this thread Patch in this message | | | Date | Sat, 18 Dec 1999 13:19:20 -0500 | From | Mark Lord <> | Subject | Re: More on the IDE multiwrite problem |
| |
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--- 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); | |