Re: [PATCH] x86: provide a DMI based port 0x80 I/O delay override.

From: Alan Cox
Date: Tue Jan 01 2008 - 12:41:45 EST


> there strong counter-arguments against doing the clean thing and adding
> an udelay(2) (or udelay(1)) to replace those _p() uses in ISA drivers?

#1 udelay has to be for the worst case bus clock (6MHz) while the device
may be at 10Mhz or even 12MHz ISA. So it slows it down stuff
unneccessarily- and stuff that really really is slow enough as is.

#2 Most of the ancient wind up relics with ISA bus don't have a tsc so
their udelay value is kind of iffy.

#3 Not changing it is the lowest risk for a lot of the old ISA code that
never occurs on newer boxes

If we have an isa_inb_p() as a specific statement of "I am doing an ISA
bus dependant delay on ancient crap hardware" then we can avoid the risk
of breakage. We wouldn't use it for non ISA, and certainly not for stuff
like chipset logic which requires a more thorough fix as it occurs on all
kinds of boxes.

> _will_ change a bit, no matter what we do. Alignments change, the
> compiler output will change (old compilers get deprecated so a new
> compiler might have to be picked), cache effects change - and this is
> inevitable. The important thing is to not eliminate the delays - but we
> sure dont have to keep them cycle accurate (we couldnt even if we wanted
> to). The only way to get the _exact same_ behavior is to not change the
> kernel at all.

ISA bus cycles are *slow*, the subtle processor cache and gcc triggered
timing changes are lost in the noise.

Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/