linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "David P. Reed" <dpreed@reed.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Juergen Beisert <juergen127@kreuzholzen.de>,
	linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Ingo Molnar <mingo@elte.hu>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Rene Herman <rene.herman@keyaccess.nl>,
	Islam Amer <pharon@gmail.com>, Pavel Machek <pavel@ucw.cz>,
	Ingo Molnar <mingo@redhat.com>, Andi Kleen <andi@firstfloor.org>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH] x86: provide a DMI based port 0x80 I/O delay override
Date: Sun, 30 Dec 2007 20:03:57 -0500	[thread overview]
Message-ID: <47783FFD.3070302@reed.com> (raw)
In-Reply-To: <47780480.7060701@zytor.com>



H. Peter Anvin wrote:
> Now, I think there is a specific reason to believe that EGA/VGA (but 
> perhaps not CGA/MDA) didn't need these kinds of hacks: the video cards 
> of the day was touched, directly, by an interminable number of DOS 
> applications.  CGA/MDA generally *were not*, due to the unsynchronized 
> memory of the original versions (writing could cause snow), so most 
> applications tended to fall back to using the BIOS access methods for 
> CGA and MDA.
>
A little history... not that it really matters, but some might be 
interested in a 55-year-old hacker's sentimental recollections...As 
someone who actually wrote drivers for CGA and MDA on the original IBM 
PC, I can tell you that back to back I/O *port* writes and reads were 
perfectly fine.  The "snow" problem had nothing to do with I/O ports.  
It had to do with the memory on the CGA adapter card not being dual 
ported, and in high-res (80x25) character mode (only!) a CPU read or 
write access caused a read of the adapter memory by the 
character-generator to fail, causing one character-position of the 
current scanline being output to get all random bits, which was then put 
through the character-generator and generated whatever the character 
generator did with 8 random bits of character or attributes as an index 
into the character generator's font table.

In particular, the solution in both the BIOS and in Visicalc, 1-2-3, and 
other products that did NOT use the BIOS or DOS for I/O to the CGA or 
MDA because they were Dog Slow, was to detect the CGA, and do a *very* 
tight loop doing "inb" instructions from one of the CGA status 
registers, looking for a 0-1 transition on the horizontal retrace flag.  
It would then do a write to display memory with all interrupts locked 
out, because that was all it could do during the horizontal retrace, 
given the speed of the processor.  One of the hacks I did in those days 
(I wrote the CGA driver for Visicalc Advanced Version and several other 
Software Arts programs, some of which were sold to Lotus when they 
bought our assets, and hired me, in 1985) was to measure the "horizontal 
retrace time" and the "vertical blanking interval" when the program 
started, and compile screen-writing code that squeezed as many writes as 
possible into both horizontal retraces and vertical retraces.   That was 
actually a "selling point" for spreadsheets - the reviewers actually 
measured whether you could use the down-arrow key in auto-repeat mode 
and keep the screen scrolling at the relevant rate!  That was hard on an 
8088 or 80286 processor, with a CGA card.

It was great when EGA and VGA came out, but we still had to support the 
CGA long after.  Which is why I fully understand the need not to break 
old machines.  We had to run on every machine that was claimed to be "PC 
compatible" - many of which were hardly so compatible  (the PS/2 model 
50 had a completely erroneous serial chip that claimed to emulate the 
original 8250, but had an immense pile of bugs, for example, that IBM 
begged ISVs to call a software problem and fix so they didn't get sued).

The IBM PC bus (predecessor of the current ISA bus, which came from the 
PC-AT's 16-bit bus), did just fine electrically - any I/O port-specific 
timing problems had to do with the timing of the chips attached to the 
bus.  For example, if a bus write to a port was routed into a particular 
chip, the timing of that chip's subsequent processing might be such that 
it was not ready to respond to another read or write.)  That's not a 
"signalling" problem - it has nothing to do with capacitance on the bus, 
e.g., but a functional speed problem in the chip (if on the motherboard) 
or the adapter card.

Rant off.  This has nothing, of course, to do with present issues.

  reply	other threads:[~2007-12-31  1:04 UTC|newest]

Thread overview: 186+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-30  3:34 [PATCH] x86: provide a DMI based port 0x80 I/O delay override Rene Herman
2007-12-30  9:30 ` Linus Torvalds
2007-12-30 12:48   ` Andi Kleen
2007-12-30 13:05     ` Ingo Molnar
2007-12-30 16:08       ` Andi Kleen
2007-12-30 16:28         ` Ingo Molnar
2007-12-30 18:21           ` Andi Kleen
2007-12-30 13:03   ` Ingo Molnar
2007-12-30 14:14   ` Rene Herman
2007-12-30 14:47   ` Alan Cox
2007-12-30 15:28     ` Ingo Molnar
2007-12-30 15:38       ` Alan Cox
2007-12-30 16:01         ` Ingo Molnar
2007-12-30 16:48           ` Alan Cox
2007-12-30 17:08             ` Ingo Molnar
2007-12-30 18:14             ` Rene Herman
2007-12-30 18:39               ` Alan Cox
2007-12-30 19:33                 ` Rene Herman
2007-12-30 20:00                   ` Linus Torvalds
2007-12-30 20:09                     ` Rene Herman
2007-12-30 21:20                     ` David P. Reed
2007-12-30 21:36                       ` Alan Cox
2007-12-30 23:14                         ` David P. Reed
2007-12-31  0:23                           ` H. Peter Anvin
2007-12-31 11:59                             ` Alan Cox
2007-12-31 18:19                               ` H. Peter Anvin
2007-12-31 12:23               ` Alan Cox
2007-12-31 14:35                 ` Rene Herman
2007-12-31 15:56                   ` Alan Cox
2007-12-31 20:22                     ` Ondrej Zary
2007-12-31 21:25                       ` Alan Cox
2007-12-31 21:47                         ` H. Peter Anvin
2007-12-31 23:24                           ` Alan Cox
2007-12-31 23:41                             ` H. Peter Anvin
2008-01-02  3:01                     ` Rene Herman
2007-12-30 17:10         ` Juergen Beisert
2007-12-30 20:50           ` H. Peter Anvin
2007-12-31  1:03             ` David P. Reed [this message]
2007-12-31  1:40               ` H. Peter Anvin
2007-12-30 15:47       ` Rene Herman
2007-12-30 16:07         ` Ingo Molnar
2007-12-30 16:27           ` Rene Herman
2007-12-30 17:06             ` Ingo Molnar
2007-12-30 17:54               ` Rene Herman
2007-12-30 18:29               ` Alan Cox
2007-12-30 18:43                 ` Andi Kleen
2007-12-30 20:46                 ` Ingo Molnar
2007-12-30 21:07                   ` Rene Herman
2007-12-30 21:25                     ` Ingo Molnar
2007-12-30 21:29                   ` Alan Cox
2007-12-30 22:03                     ` Ingo Molnar
2007-12-31 13:11                   ` Pavel Machek
2008-01-01 16:48                     ` Ingo Molnar
2007-12-30 18:40         ` Linus Torvalds
2007-12-30 20:34           ` Ingo Molnar
2007-12-30 21:28             ` Alan Cox
2007-12-30 21:54               ` Ingo Molnar
2007-12-30 21:13           ` Alan Cox
2007-12-31 15:29             ` Christer Weinigel
2007-12-31 13:21           ` Pavel Machek
2007-12-31 12:29             ` Alan Cox
     [not found] <9BdU5-1YW-9@gated-at.bofh.it>
     [not found] ` <9BeZN-3Gf-5@gated-at.bofh.it>
     [not found]   ` <9BnTB-1As-31@gated-at.bofh.it>
     [not found]     ` <9BrX4-8go-1@gated-at.bofh.it>
     [not found]       ` <9BuBG-4eR-51@gated-at.bofh.it>
     [not found]         ` <9BvRd-6aL-71@gated-at.bofh.it>
     [not found]           ` <9GRQW-1DX-13@gated-at.bofh.it>
     [not found]             ` <9GSah-23W-1@gated-at.bofh.it>
     [not found]               ` <9GSDy-2GD-23@gated-at.bofh.it>
     [not found]                 ` <9GTpK-40d-15@gated-at.bofh.it>
     [not found]                   ` <9GUvy-5H2-11@gated-at.bofh.it>
     [not found]                     ` <9GVKU-7SS-25@gated-at.bofh.it>
2008-01-07 19:38                       ` Bodo Eggert
2008-01-07 19:46                         ` H. Peter Anvin
2008-01-07 22:02                           ` Bodo Eggert
2008-01-07 22:10                             ` H. Peter Anvin
2008-01-07 22:27                               ` Bodo Eggert
2008-01-07 22:59                                 ` Rene Herman
2008-01-07 23:24                                   ` H. Peter Anvin
2008-01-07 23:26                                     ` Rene Herman
2008-01-08  0:10                                       ` [linux-kernel] " David P. Reed
2008-01-09 21:01                                         ` Matthieu castet
2008-01-08 12:51                                       ` Bodo Eggert
2008-01-08 14:09                                         ` Rene Herman
2008-01-08 14:31                                         ` Alan Cox
2008-01-07 23:25                             ` Alan Cox
2008-01-08 13:17                               ` Bodo Eggert
2008-01-08 14:38                                 ` Alan Cox
2008-01-08  3:15                         ` Christer Weinigel
     [not found] <fa.PuxU73ceCfHAUeWLO4W21Zbrm7A@ifi.uio.no>
     [not found] ` <fa.ipKZdmvkNYmQ40C0cO+2u3eYohw@ifi.uio.no>
     [not found]   ` <fa.ppsa4qOLo1V8UlDNTucnaqIJmKA@ifi.uio.no>
     [not found]     ` <fa.3IG7z0AfHuLo9eQjn7Gkl/+/lnA@ifi.uio.no>
     [not found]       ` <fa.slc2tTnUBrTGO2aTi/C5UGHEEEM@ifi.uio.no>
     [not found]         ` <fa.8g+KfLLge6wS5cEnKhZJmdkIVAI@ifi.uio.no>
2007-12-30 18:22           ` Robert Hancock
     [not found]       ` <fa.XY5q1SY4QX+yjnE6p8T3kbTt/8I@ifi.uio.no>
     [not found]         ` <fa.KEBfnq5vGkAJSEhZSx7+yy+Hdbs@ifi.uio.no>
     [not found]           ` <fa.MLKgXLxgzIKzm4bQXjEOqg9oDwU@ifi.uio.no>
     [not found]             ` <fa.KbCnGLPlUEYe/Ibajd+hTY7A7Qw@ifi.uio.no>
2007-12-31 18:21               ` Robert Hancock
     [not found] <9FXbU-3M4-11@gated-at.bofh.it>
     [not found] ` <9G2Om-4hg-1@gated-at.bofh.it>
     [not found]   ` <9G7O3-3O2-7@gated-at.bofh.it>
     [not found]     ` <9G8qN-4TX-13@gated-at.bofh.it>
2007-12-30 17:50       ` Bodo Eggert
2007-12-30 18:10         ` Ingo Molnar
2007-12-30 20:56           ` H. Peter Anvin
2007-12-30 21:00             ` Ingo Molnar
2007-12-30 21:32               ` Bodo Eggert
2007-12-30 21:33               ` Alan Cox
2007-12-30 22:02                 ` Ingo Molnar
2007-12-30 21:44               ` H. Peter Anvin
2007-12-30 21:58                 ` Rene Herman
2007-12-30 20:53         ` H. Peter Anvin
2007-12-30 21:31           ` Alan Cox
2007-12-31 14:39             ` Bodo Eggert
2007-12-31 15:56               ` Alan Cox
     [not found] <469578CD.3080609@reed.com>
     [not found] ` <1184216528.12353.203.camel@chaos>
     [not found]   ` <1184218962.12353.209.camel@chaos>
     [not found]     ` <46964352.7040301@reed.com>
     [not found]       ` <1184253339.12353.223.camel@chaos>
     [not found]         ` <469697C6.50903@reed.com>
     [not found]           ` <1184274754.12353.254.camel@chaos>
2007-12-14  2:59             ` [PATCH] x86_64: fix problems due to use of "outb" to port 80 on some AMD64x2 laptops, etc David P. Reed
2007-12-14 13:15               ` Ingo Molnar
2007-12-14 18:02                 ` H. Peter Anvin
2007-12-14 21:06                   ` Pavel Machek
2007-12-14 22:13                     ` H. Peter Anvin
2007-12-14 23:29                       ` Alan Cox
2007-12-15  8:08                         ` Paul Rolland
2007-12-15  8:13                           ` Rene Herman
2007-12-15 20:27                             ` H. Peter Anvin
2007-12-15 23:26                               ` [PATCH] x86: " Rene Herman
2007-12-15 23:51                                 ` H. Peter Anvin
2007-12-16 13:15                                   ` [PATCH] x86: provide a DMI based port 0x80 I/O delay override Rene Herman
2007-12-16 15:22                                     ` Ingo Molnar
2007-12-17  1:43                                       ` Rene Herman
2007-12-17  2:05                                         ` H. Peter Anvin
2007-12-17  2:19                                           ` Rene Herman
2007-12-17  3:35                                             ` H. Peter Anvin
2007-12-17 13:02                                               ` Rene Herman
2007-12-17 17:14                                                 ` H. Peter Anvin
2007-12-17 19:43                                                   ` David P. Reed
2007-12-17 19:55                                                     ` H. Peter Anvin
2007-12-17 21:02                                                       ` David P. Reed
2007-12-17 21:17                                                         ` H. Peter Anvin
2007-12-17 21:25                                                     ` Alan Cox
2008-01-01 15:57                                                       ` David P. Reed
2008-01-01 21:16                                                         ` H. Peter Anvin
2008-01-01 15:59                                                       ` David P. Reed
2008-01-01 16:15                                                         ` Alan Cox
2008-01-01 16:43                                                           ` Ingo Molnar
2008-01-01 17:32                                                             ` Alan Cox
2008-01-01 18:45                                                               ` Ingo Molnar
2008-01-01 20:14                                                                 ` Christer Weinigel
2008-01-01 21:13                                                                   ` Alan Cox
2008-01-01 21:07                                                                 ` Alan Cox
2008-01-02 10:04                                                                   ` Ingo Molnar
2008-01-02 13:47                                                                     ` Alan Cox
2008-01-02 15:35                                                                       ` Rene Herman
2008-01-02 15:50                                                                         ` Rene Herman
2008-01-01 17:32                                                             ` Christer Weinigel
2008-01-01 18:46                                                               ` Ingo Molnar
2008-01-01 19:35                                                                 ` Christer Weinigel
2008-01-01 19:59                                                                   ` Rene Herman
2008-01-01 20:55                                                                     ` Christer Weinigel
2008-01-01 21:24                                                                       ` H. Peter Anvin
2008-01-01 21:01                                                                   ` Ingo Molnar
2008-01-01 21:26                                                                     ` Alan Cox
2008-01-01 21:42                                                                     ` Christer Weinigel
2008-01-01 21:42                                                                       ` Rene Herman
2008-01-01 21:50                                                                       ` H. Peter Anvin
2008-01-01 21:21                                                                   ` H. Peter Anvin
2008-01-01 23:05                                                                     ` Christer Weinigel
2008-01-01 23:12                                                                       ` Alan Cox
2008-01-02  0:23                                                                         ` Christer Weinigel
2008-01-02 10:00                                                                     ` Ingo Molnar
2008-01-01 17:32                                                           ` David P. Reed
2008-01-01 17:38                                                             ` Alan Cox
2008-01-01 21:15                                                           ` H. Peter Anvin
2008-01-01 21:35                                                             ` Rene Herman
2008-01-01 21:44                                                               ` H. Peter Anvin
2008-01-01 22:35                                                                 ` Rene Herman
2008-01-01 22:39                                                                   ` H. Peter Anvin
2008-01-01 23:11                                                                     ` Rene Herman
2008-01-02  0:25                                                                       ` Rene Herman
2008-01-02  0:55                                                                       ` Christer Weinigel
2008-01-02  1:00                                                                         ` Rene Herman
2008-01-02  2:27                                                                         ` H. Peter Anvin
2008-01-09 17:27                                                                 ` Maciej W. Rozycki
2008-01-09 18:18                                                                   ` H. Peter Anvin
2008-01-01 17:31                                                         ` Pavel Machek
2008-01-01 17:33                                                           ` David P. Reed
2007-12-17  4:09                                             ` H. Peter Anvin
2007-12-17 10:57                                         ` Ingo Molnar
2007-12-17 11:29                                           ` Ingo Molnar
2007-12-17 13:34                                             ` David P. Reed
2007-12-17 12:15                                           ` Rene Herman
2007-12-17 13:09                                             ` Ingo Molnar
2007-12-17 13:22                                               ` Rene Herman
2007-12-17 13:31                                                 ` Pavel Machek
2007-12-17 13:31                                                   ` Rene Herman
2007-12-17 13:32                                                 ` David P. Reed
2007-12-17 13:36                                                   ` Rene Herman
2007-12-17 14:39                                                   ` Ingo Molnar
2007-12-17 16:12                                                     ` Alan Cox
2007-12-17 16:48                                                       ` Ingo Molnar
2007-12-17 20:48                                                       ` Rene Herman
2007-12-17 20:57                                                         ` H. Peter Anvin
2007-12-17 21:33                                                           ` Rene Herman
2007-12-17 21:40                                                             ` H. Peter Anvin
2007-12-17 21:46                                                               ` Ingo Molnar
2007-12-17 21:50                                                               ` Rene Herman
2007-12-17 21:41                                                         ` Ingo Molnar
2007-12-17 21:47                                                           ` Rene Herman
2007-12-17 21:56                                                             ` Ingo Molnar
2007-12-17 22:01                                                               ` Rene Herman
2007-12-17 22:18                                                                 ` David P. Reed
2007-12-17 19:38                                                     ` David P. Reed
2007-12-17 19:55                                                       ` H. Peter Anvin
2007-12-17 21:28                                                       ` Ingo Molnar
2007-12-16 21:42                                     ` H. Peter Anvin
2007-12-17  1:48                                       ` Rene Herman
2007-12-17  1:53                                         ` H. Peter Anvin
2007-12-16 23:12                                     ` David P. Reed
2007-12-17  1:56                                       ` Rene Herman
2007-12-17  2:04                                         ` H. Peter Anvin
2007-12-17  2:15                                           ` Rene Herman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47783FFD.3070302@reed.com \
    --to=dpreed@reed.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=juergen127@kreuzholzen.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=pharon@gmail.com \
    --cc=rene.herman@keyaccess.nl \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).