Re: Linux 2.4.13-ac4

Vojtech Pavlik
2001-10-29T16:39:12Z

On Mon, Oct 29, 2001 at 10:56:35AM +0000, Alan Cox wrote:
> > bytes read from the 8254 get swapped. I've got some indirect evidence
> > that this also could happen with the original i8254.
>
> Im hoping not. That would imply we interrupted someone half way through
> reading the counter which means the locking is screwed up.

Some old DOS assembly sources say that this sometimes happens without
any interrupts at all - just that the chip is sometimes confused. It'd
be definitely worth printing the bad and good values when a problem is
detected, so that we know what's happening.

I've checked it, and yes, the locking is somewhat broken. The following
drivers can access the timer chip and don't grab the lock:

drivers/char/ftape/lowlevel/ftape-calibr.c
drivers/char/joystick/analog.c
drivers/char/joystick/gameport.c
drivers/ide/hd.c
drivers/ide/ide.c

The joystick ones are my fault, of course, and I'll fix that asap.

> > By the way, if we made the 8254 accesses (spinlock?) protected (which
> > should be done anyway, right now definitely more than one CPU can access
> > the registers at once), I think we could remove the outb(0, 0x43);,
> > saving some cycles.
>
> Some chipsets need the outb

I see.

--
Vojtech Pavlik
SuSE Labs