Subject: Re: Contiguous Physical Memory Allocation
To: Robert Black <r.black@ic.ac.uk>
From: Chris G Demetriou <Chris_G_Demetriou@ux2.sp.cs.cmu.edu>
List: tech-kern
Date: 06/26/1996 19:43:13
> I am wondering how
> many people would find a generalised contiguous physical memory allocator
> useful given that large allocations would probably fail due to wired pages.
> 
> Any comments? What functionality do people want?

I actually find the notion of a generalized contiguous physical memory
allocator (provided by the VM system) to be somewhat objectionable,
because it's quite likely that it will be badly misused by driver
writers...


e.g. for ISA motherboard DMA, you need contiguous memory regions (in
the low 16M of RAM), and other systems, e.g. FreeBSD (as i understand
it; i've not looked at the code) have implemented that via hooks into
the VM system called by the drivers.

That's bogus, and painful, because there exist machines (e.g. the
alpha) which use _only_ virtual-mapped DMA windows from the ISA bus
into main memory, and which place _no_ real memory in that range, etc.


Anyway, the notion of "this may be misused, therefore it should not be
implemented" isn't good for crafting strong arguments.  8-)  I can see
that some ports, e.g. the i386 port, might want to have a (proper)
bus-specific contiguous memory allocation function call a MI vm
function.  However, it's not at all clear to me that this doesn't (for
the ARM, at least) belong in the pmap module, as machine-dependent code.


cgd