Received: from SOUTH-STATION-ANNEX.MIT.EDU by po7.MIT.EDU (5.61/4.7) id AA24411; Sat, 30 Sep 95 07:56:49 EDT
Received: from freefall.FreeBSD.ORG by MIT.EDU with SMTP
	id AA00103; Sat, 30 Sep 95 07:56:22 EDT
Received: from localhost (daemon@localhost)
          by freefall.freebsd.org (8.6.12/8.6.6) with SMTP id EAA28671
          ; Sat, 30 Sep 1995 04:53:56 -0700
Received: (from root@localhost)
          by freefall.freebsd.org (8.6.12/8.6.6) id EAA28540
          for hackers-outgoing; Sat, 30 Sep 1995 04:52:04 -0700
Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.34])
          by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id EAA28526
          for <hackers@freebsd.org>; Sat, 30 Sep 1995 04:51:55 -0700
Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.9/8.6.9) id VAA00595; Sat, 30 Sep 1995 21:48:49 +1000
Date: Sat, 30 Sep 1995 21:48:49 +1000
From: Bruce Evans <bde@zeta.org.au>
Message-Id: <199509301148.VAA00595@godzilla.zeta.org.au>
To: davidg@Root.COM, julian@ref.tfs.com
Subject: Re: correctness of isa.c
Cc: hackers@freebsd.org
Sender: owner-hackers@freebsd.org
Precedence: bulk

>The way that I envision this, the 1MB physical memory mapping that starts
>at KERNBASE should completely go away, and each driver should allocate it's
>own kernel VA using pmap_mapdev() and then use that to talk to the shared
>memory. This makes the scheme completely flexible and allows you to map cards
>that are in unusual physical memory areas (like the 15-16MB range). The only
>thing I haven't yet figured out is what to do with the console drivers; these
>need a kernel VA before the VM system is initialized, so you pretty much have
>to kludge up something, at least temporarily during the early startup.

Fake pmap_mapdev() early.  It should probably remap the address to somewhere
that can remain valid forever.  The final address could be attached in
cninit_finish() after VM is initialized, but the old address has to remain
valid until then for debugging.

Shouldn't pmap_mapdev() be declared in a machine-independent header and
used in future drivers in other systems?  It has no i386 dependencies
except for the type of a physical address.  How did old versions of BSD
handle mapping physical addresses for device drivers?  Why doesn't VM
distinguish between the types of physical and virtual addresses?

Bruce
