Re: [linux-kernel] Re: [PATCH] x86: provide a DMI based port 0x80I/O delay override.

From: David Newall
Date: Wed Jan 16 2008 - 14:15:31 EST


Alan Cox wrote:
> On Thu, 17 Jan 2008 01:06:24 +1030
> David Newall <davidn@xxxxxxxxxxxxxxx> wrote:
>
>
>> This use of port 80 (or insert some other random number) is a croc of
>> hackery of the most inexperienced kind.
>>
>
> Wrong. It's a careful designed solution used by all sorts of code for
> over 15 years.
>
It's not careful: it's a croc. It's an ugly hack, an abuse of process,
and totally unnecessary. Read my comment about delays (next).

> The task to be performed is to delay for some period
>
> Wrong, it is for some number of bus clocks which is why I/O cycles are
> used
>
Wrong. It's a delay. It's a delay measured in I/O cycles, but still a
delay. Doing I/O to get a delay, even if the delay is intended to be
measured in I/O cycles, is hackery of the most inexperienced sort. It's
the sort of thing junior programmers get boxed in the ear for. There's
no satisfactory reason to do it that way.

If the hardware required an intermediate junk I/O, that would be a
reason to do one, but it doesn't, does it? It requires a delay. It's
written thus in all of the application notes.

>> that an OUT is used because you don't know how long the delay should be
>> on any specific machine. What rubbish.
>>
>
> Wrong again.
>
Wrong again. Of course one knows how long the delay should be. The bus
speed is known. The specifications of the hardware is known. Do the
math you (the programmer writing the driver, not Alan) lazy sluggard,
and use a delay. It baffles commonsense to say you don't know how long
it should be.

>> I won't even mention the many instances of these delays where no delay
>> is what properly is needed. Performance? Who cares about performance?
>>
>
> Correctness, who needs correctness ?
Well, frankly, the development process could stand a little more of it.


The sooner we stop denying that this is a hack, the sooner we can fix it.
--
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/