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

From: Ingo Molnar
Date: Sun Dec 30 2007 - 12:07:06 EST



* Rene Herman <rene.herman@xxxxxxxxxxxx> wrote:

>>> Hardly. Duron 1300 on AMD756:
>>
>> but that does not matter at all: that's not '90s era hardware that we
>> are (slightly) worried about wrt. IO delays in misc_32.c. (i.e. on
>> _real_ ISA systems)
>
> Real ISA systems will also generally respond faster to it than the
> unused port (this thing actually has an ISA bus but not VGA on it
> ofcourse) which means that "a perfect delay register" it is not. But
> yes, I have an actual Am386DX-40 with ISA VGA up and running which
> also doesn't care either way, about the ones in misc_32.c or anywhere
> else for that matter.

yeah - and that's typical of most _p() use: most of them are totally
bogus, but the global existence of the delay was used as a "it _might_
break system" boogey-man against replacing it.

so _IF_ we do any delay in x86 platform drivers, we at most do a delay
on the order of the round-trip latency to the same piece of hardware we
are handling. That isolates the quirk to the same hardware category,
instead of creating these cross-dependencies and assumed dependencies on
fixed, absolute timings. (and most hardware timing bugs are not absolute
but depend on some bus speed/frequency, thus round-trip latency of that
hardware is a good approximation of that. The round-trip to the same
hardware also correctly adds any assumed PCI posting dependencies.)

So the current plan is to go with an io_delay=udelay default in v2.6.25,
to give this a migration window, and io_delay=none in v2.6.26 [and a
complete removal of arch/x86/kernel/io_delay.c], once the _p() uses are
fixed up. This is gradual enough to notice any regressions we care about
and also makes it nicely bisectable and gradual.

Ingo
--
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/