Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Sep 1997 04:09:49 -0700
From:      Jason Thorpe <thorpej@nas.nasa.gov>
To:        Mike Smith <mike@smith.net.au>
Cc:        Luigi Rizzo <luigi@labinfo.iet.unipi.it>, freebsd-hackers@freebsd.org
Subject:   Re: PnP support 
Message-ID:  <199709111109.EAA19340@lestat.nas.nasa.gov>

next in thread | raw e-mail | index | archive | help
On Thu, 11 Sep 1997 20:02:36 +1000 
 Mike Smith <mike@smith.net.au> wrote:

 >  - the ISA startup code says "yup, this machine has an ISA bus", and 
 >    creates an extent called "isa_io" and another called "isa_mem"

...on the PC, it makes a bit more sense to just always manage the entire
addressable range of i/o ports and memory-like space, rather than creating
an ISA-specific map, etc.  Think about e.g. PCI VGA cards, and their ISA
compatibility range.

Also, if you have an all-encompassing map like this, allocation of
unused physical address space for e.g. memory-mapped EISA cards is
much easier.

You might want to take a look at NetBSD-current's i386 machdep.c - just
look for the extent_* calls.

 >  - the ESCD or ISA startup code would create an extent called "isa_irq"
 >    and another called "isa_drq" indicating the resources available
 >    to the ISA bus.

Erm ... an extent map is a bit overboard for this, I think - for drqs, a
simple bitmap will suffice, and for irqs, and array of "share types", indexed
by irq.

 > I don't think that making these extents "private" would be at all 
 > helpful.  Having them public, and referenced by name, will make it 
 > easier to access them.

Referenced by name can be problematic - On interesting machines, that
simply doesn't scale.  What you really want is to use opaque tags to
reference "bus space".  These tags are interpreted by machine-dependent
code (which implements an MI API), and translate into the right thing.

Last I heard, FreeBSD still wanted to run on the Alpha, and if that's the
case, you're going to _have_ to think about this.

For those wondering why it's problematic, you should take a look at
an AlphaServer 8400 sometime - it can have multiple primary PCI busses,
each with its own physical address space, and each of these primary
PCI busses can host an EISA/ISA bus.  NetBSD runs on this system, but
it wouldn't have been possible if we hadn't paid careful attention to
getting bus space accounting right.

 > I played a lot with the NetBSD extent allocator a while back.  Jason 
 > didn't entirely like what I was doing (and TBH some of my ideas were 
 > pretty warped), but I would be happy to start over and just add the 
 > important bits (extent names & owners, public extents).  I could 
 > probably have this ready in a few days.

If you could write up a concise description of what the changes are (the
last I got from you was a "well, this is basically what I did"), I'd
be happy to reconsider my position on some of those things.

For example, I don't think you ever mentioned the idea of a "public extent".
(And, really, what does that _mean_?)

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                            Home: +1 408 866 1912
NAS: M/S 258-6                                       Work: +1 415 604 0935
Moffett Field, CA 94035                             Pager: +1 415 428 6939



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709111109.EAA19340>