public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Brian Gerst <bgerst@didntduck.org>
To: Russell King <rmk@arm.linux.org.uk>
Cc: linux-kernel@vger.kernel.org, mj@suse.cz
Subject: Re: VGA PCI IO port reservations
Date: Fri, 17 Nov 2000 11:47:18 -0500	[thread overview]
Message-ID: <3A156116.65CDBBE9@didntduck.org> (raw)
In-Reply-To: <200011171620.eAHGKgg00324@flint.arm.linux.org.uk>

Russell King wrote:
> 
> Hi,
> 
> I've been looking at a number of VGA cards recently, and I've started
> wondering out the Linux resource management as far as allocation of
> IO ports.  I've come to the conclusion that it does not contain all
> information necessary to allow allocations to be made safely.
> 
> Thus far, VGA cards that I've looked at scatter extra registers through
> out the PCI IO memory region without appearing in the PCI BARs.  In fact,
> for some cards there wouldn't be enough BARs to list them all.
> 
> For example, S3 cards typically use:
> 
>  0x0102,  0x42e8,  0x46e8,  0x4ae8,  0x8180 - 0x8200,  0x82e8,  0x86e8,
>  0x8ae8,  0x8ee8,  0x92e8,  0x96e8,  0x9ae8,  0x9ee8,  0xa2e8,  0xa6e8,
>  0xaae8,  0xaee8,  0xb2e8,  0xb6e8,  0xbae8,  0xbee8,  0xe2e8,
>  0xff00 - 0xff44

This is an artifact from the ISA 10-bit IO bus.  Many ISA cards do not
decode all 16 address bits so you get aliases of the 0x100-0x3ff region
throughout IO space.  PCI cards should only use the first 256 ports of
any 1k block to avoid aliases unless they claim the base alias.  For
example, all the xxe8 addresses for the S3 are aliases of 0x02e8 to an
ISA card.  Video cards are an exception to the general rule because they
have to support all the legacy VGA crap.

> These aren't guaranteed to be exhaustive listings either.
> 
> Some of these cards require writes to these registers to "wake them up"
> so I think we can assume that these cards are listening for accesses to
> those ports.  If we allocate another device to use that region, we could
> well end up getting IO port clashes.
> 
> Surely we should be reserving these regions before we start to allocate
> resources to PCI cards?

The current code already tries to avoid the ISA alias areas:
/*
 * We need to avoid collisions with `mirrored' VGA ports
 * and other strange ISA hardware, so we always want the
 * addresses to be allocated in the 0x000-0x0ff region
 * modulo 0x400.
 *
 * Why? Because some silly external IO cards only decode
 * the low 10 bits of the IO address. The 0x00-0xff region
 * is reserved for motherboard devices that decode all 16
 * bits, so it's ok to allocate at, say, 0x2800-0x28ff,
 * but we want to try to avoid allocating at 0x2900-0x2bff
 * which might have be mirrored at 0x0100-0x03ff..
 */

--

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

  parent reply	other threads:[~2000-11-17 17:20 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-17 16:20 VGA PCI IO port reservations Russell King
2000-11-17 16:36 ` Jeff Garzik
2000-11-17 16:46   ` Russell King
2000-11-17 16:52     ` Jeff Garzik
2000-11-17 16:58       ` Russell King
2000-11-17 17:03         ` Jeff Garzik
2000-11-17 17:11           ` Russell King
2000-11-17 21:43     ` Matthew Kirkwood
2000-11-17 22:02       ` H. Peter Anvin
2000-11-18 17:41         ` About IOs, ISA, PCI, and life (WAS: VGA PCI IO port...) Benjamin Herrenschmidt
2000-11-17 17:13   ` VGA PCI IO port reservations Richard B. Johnson
2000-11-17 17:20     ` Russell King
2000-11-17 17:30       ` Alan Cox
2000-11-17 18:06       ` Richard B. Johnson
2000-11-17 19:52         ` Russell King
2000-11-17 19:59           ` Richard B. Johnson
2000-11-17 20:02             ` Russell King
2000-11-17 20:27               ` Richard B. Johnson
2000-11-18  1:20                 ` Olivier Galibert
2000-11-18  2:10                   ` H. Peter Anvin
2000-11-18 17:02                     ` Alan Cox
2000-11-27 22:10                       ` Kai Henningsen
2000-11-17 21:35             ` Marcus Sundberg
2000-11-17 20:13           ` H. Peter Anvin
2000-11-17 20:31             ` Richard B. Johnson
2000-11-17 16:47 ` Brian Gerst [this message]
2000-11-17 16:56   ` Russell King
2000-11-17 17:00     ` Jeff Garzik
2000-11-17 18:29     ` H. Peter Anvin
2000-11-17 18:27 ` H. Peter Anvin

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=3A156116.65CDBBE9@didntduck.org \
    --to=bgerst@didntduck.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mj@suse.cz \
    --cc=rmk@arm.linux.org.uk \
    /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