Note that it looks like Ingo by mistake removed the ide__sti completely:
> > --- linux/drivers/block/ide.c.orig Wed Jul 29 15:09:18 1998
> > +++ linux/drivers/block/ide.c Wed Jul 29 15:09:44 1998
> > @@ -961,7 +961,6 @@
> > unsigned int minor = MINOR(rq->rq_dev), unit = minor >> PARTN_BITS;
> > ide_hwif_t *hwif = HWIF(drive);
> >
> > - ide__sti(); /* local CPU only */
> > #ifdef DEBUG
> > printk("%s: start_request: current=0x%08lx\n", hwif->name, (unsigned long) rq);
> > #endif
> > @@ -988,6 +987,7 @@
> > block = 1; /* redirect MBR access to EZ-Drive partn table */
> > #endif /* FAKE_FDISK_FOR_EZDRIVE */
> > #if (DISK_RECOVERY_TIME > 0)
> > + ide__sti(); /* local CPU only */
> > while ((read_timer() - hwif->last_time) < DISK_RECOVERY_TIME);
> > #endif
and note how "DISK_RECOVERY_TIME" is usually defined to be zero unless
explicitly asked to be something else. So the place Ingo moved it to will
never even be compiled into the kernel, so the interrupt enable is never
done.
Ingo, if you can reproduce this consistantly, I'd suggest moving the sti
down to a place where it actually triggers, until you find the place where
it really fixes the problem..
Linus
-
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.altern.org/andrebalsa/doc/lkml-faq.html