pmap is OK, add a new IPL_VM pmap_ctx_lock that is held while allocating
or freeing a context, and revert pmap_lock back to IPL_NONE.
i considered a per-cpu context lock, but that would require locking
each active CPUs lock in turn in pmap_remove_all() and pmap_destroy().
thanks to ad for explaining how these parts interact.
Note, config whines about things like:
files.acpi:30: attaching undefined device `apm'
I intentionally was a lazy boy and didn't include a ton of dirt to
keep the hot napalm and riot blasts in the config thread rolling ;)
tested by jruoho (thanks!)
rump into share/mk. This is to make it useful for all kernel
builders.
Note: we have waaay too many weird and wonderful ways of making
kernel code (monolithic kernel, modules, rump). There should be
only one way to build kernel code instead of a maze of twisty little
.mk files, all not quite alike. When that is fixed, this snippet can go
into the more generic .mk file.
KASSERT(!mutex_owned(&pmap_lock)) since that's no longer valid.
this fixes hangs on 4-core machines like the U80.
tested on U80, SB2500 and SB2000.
XXX: my initial attempts to replace pseg_lock with this new equivalent
XXX: lock hang in pmap_bootstrap it seems.. but this should be able
XXX: to go away now.
values on temp limits. The actual ranges for temp limits varies if the
chip is running in "extended temperature" mode, so we need to handle this
difference, too.
Verified on my home machine which runs in extended-temp mode and by
njoly@ on a machine which does runs in the older 2s-complement mode.
consistently across the code.
- Re-do note parsing code to read the section headers instead of the program
headers because the new binutils merge all the note sections in one program
header. This fixes all the pax note parsing which has been broken for all
binaries built with the new binutils.
- Add diagnostics to the note parsing code to detect malformed binaries.
- Allocate and free note scratch space only once, not once per note.
with simpler full width multiplications and shifts + adds. The main
operations are generally at least 50% faster when serialised and often
better for parallelism as well.
most don't. Deal with non-equivalent aliases by removing and flushing the
managed mappings, and flushing the unmanaged mappings.
When flushing caches/TLB flush the cache before purging the TLB just in
case the flush enters the mapping into the TLB.