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

From: H. Peter Anvin
Date: Tue Jan 01 2008 - 16:47:04 EST


Rene Herman wrote:
On 01-01-08 22:15, H. Peter Anvin wrote:

I have mentioned this before... I think writing zero to port 0xf0 would be an acceptable pause interface (to the extent where we need an I/O port) except on 386 with 387 present; on those systems we can fall back to 0x80.

PII 400 / Intel 440 BX (PIIX4):

rene@6bap:~/port80$ su -c ./portime
out 0x80: 544 cycles
in 0x80: 254 cycles
in 0x61: 254 cycles
out 0xf0: 544 cycles

The Intel PIIX/PIIX3 datasheet specifically mentions that both reads and writes at 0xf0 "flow through to the ISA bus".

However, more complete, it says:

"Writing to this register causes the PIIX/PIIX3 to assert IGNNE#. The PIIX/PIIX3 also negates IRQ13 (internal to the PIIX). Note that IGNNE# is not asserted unless FERR# is active. Reads/writes flow through to the ISA bus".

We don't want the side-effects, do we?


Yes, we do. It's exactly this side effect which makes this safer than either 0x80 or 0xED -- it's a port that *guaranteed* can't be reclaimed for other purposes without breaking MS-DOS compatibility.

It's specifically a side effect *we don't care about*, except in the by-now-somewhat-exotic case of 386+387 (where we indeed can't use it once user code has touched the FPU -- but we can fall back to 0x80 on those, a very small number of systems.) 486+ doesn't use this interface under Linux, since Linux uses the proper exception path on those processors. If Compaq had wired up the proper signals on the first 386 PC motherboards, we wouldn't have cared about it on the 386 either.

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