Module Name: src Committed By: thorpej Date: Sun Aug 16 20:04:36 UTC 2020
Modified Files: src/sys/arch/alpha/alpha: pmap.c Log Message: - Undo part of rev 1.264; go back to not acquiring the pmap lock in pmap_activate(). As of rev 1.211, the pmap::pm_lev1map field is stable across the life of the pmap, and so the conditino that the change in 1.264 was intended to avoid would not have happened anyway. - Explicitly use __cacheline_aligned / COHERENCY_UNIT rather than 64 in a couple of places. - Update comments around the lev1map lifecycle, and add some assertions to enforce the assumptions being described. - Remove some dubious DEBUG tests that are not MP-safe. - Chage some long-form #ifdef DIAGNOSTIC checks / panics to KASSERTs. - Remove the PMAP_ACTIVATE() macro because it's no longer used anywhere except for pmap_activate(). Just open-code the equivalent there. - In pmap_activate(), only perform the SWPCTX if either the PTBR or the ASN are different than what the PCB already has. Also assert that preemption is disabled and that the specified lwp is curlwp. - In pmap_deactivate(), add similar assertions, and add a comment explaining why a SWPCTX to get off of the deactivated lev1map is not necessaray. - Refactor some duplicated code in pmap_growkernel() into a new pmap_kptpage_alloc() function. - In pmap_growkernel(), assert that any user pmap published on the all-pmaps list does not reference the kernel_lev1map. - In pmap_asn_alloc(), get out early if we're called with the kernel pmap, since all kernel mappings are ASM. Remove bogus assertions around the value of pmap::pm_lev1map and the current ASN, and simply assert that pmap::pm_lev1map is never kernel_lev1map. Also assert that preemption is disabled, since we're manipulating per-cpu data structures. - Convert the "too much uptime" panic to a simple KASSERT, and update the comment to reflect that we're only subject to the longer 75 billion year ASN generation overflow (because CPUs that don't implement ASNs never go through this code path). To generate a diff of this commit: cvs rdiff -u -r1.266 -r1.267 src/sys/arch/alpha/alpha/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.