Messages in this thread | | | Date | Wed, 29 Jul 1998 14:21:25 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [patch] IDE problems on SMP, fixed? (fwd) |
| |
On Wed, 29 Jul 1998, Gadi Oxman wrote: > > > > could any IDE-expert (Gadi, Mark?) verify why this small fix makes a > > difference on this SMP board? That sti() has been in ide_do_request() for > > ages. > > Between the two places we only have a couple of non-functional if()'s > and assignments to static variables on the stack.
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
| |