Fix a serious problem that manifested during swap, and a few other times. pmap_remove() would be called with a huge range and we'd stride across it in only 2MB chunks.  This would manifest as massive cpu time and a largely unresponsive system during hard swap.  Instead, check the higher page directories which means we can run pmap_remove() in just a few hundred loop iterations instead of millions since we can process address space in chunks of 512GB and 1GB as well as 2MB.
Fix a serious problem that manifested during swap, and a few other times.
pmap_remove() would be called with a huge range and we'd stride across
it in only 2MB chunks.  This would manifest as massive cpu time and a
largely unresponsive system during hard swap.  Instead, check the higher
page directories which means we can run pmap_remove() in just a few
hundred loop iterations instead of millions since we can process
address space in chunks of 512GB and 1GB as well as 2MB.

Eternal thanks to:  tmm

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase