Subject: arm32 pmap changes
To: None <email@example.com>
From: Chris Gilbert <firstname.lastname@example.org>
Date: 06/22/2001 00:47:11
Just a long(originally it was going to be quick :) email to let people know
that I'm going to start submitting changes to pmap. I plan to do it in small
changes, mainly to make my life easier if I break something I can go back to
the last good version easily ;) Should also help people see what's changing
in bite sized chunks :) My plan is to build things up slowly, and
implement/add functions as needed/logical. Should also mean no breakage,
note that I plan to test changes on my cats and RPC. Also means that if
other things stop me getting doing work on the pmap, we'll have some gain in
Over the next few days I'm planning:
use a pool for the pmap structs, should improve performance (will benchmark
to confirm this)
clean up pmap struct, (has a couple of seemingly dead entries in it,
pm_unused1 and pm_dref, need to verify they really are dead (cats thinks
they're dead though)
implement pmap_map_ptes and unmap_ptes. This is based on Richard's version.
I plan to use if for pmap_remove initially. Expanding it into pmap_enter and
Use Richard's diff to improve vac_me_harder code.
Add a list of pmaps currently in use (prerequisite for doing work on growing
the kernel VM space using pmap_growkernel)
comments on how stuff works, it's taken a lot of reading for me to figure out
how things work (Design and implementation of 4.4 BSD book and white paper on
UVM being the main references)
The above should help performance of the pmap, possibly not by much, but I'll
keep working on it.
Areas I'm investigating are:
should we have a uvm_object inside the pmap struct, on i386 all
uvm_pagealloc's to do with a pmap use this uvm_object. Is it just a way of
book keeping those pages? Or is it needed to make get_ptp work well?
How to delay doing actions on the pmap, IE make use of pmap_update, however
I'm not sure if pmap_update is properly supported in the kernel as a whole
How to implement pmap_growkernel for arm32.
Any advice or hints on the above would be gratefully received :)