mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-31 16:57:10 +00:00
Remove uncessary cache and TLB maintenance ops.
- These were needed on armv4/5 (VIVT cache), not needed on armv6. - The wbinv_all call can't be used on SMP systems; cache operations by set/way are not broadcast to other cores. - The TLB maintenance operations needed for pmap_growkernel() happen in pmap_grow_l2_bucket(), so there's no need to flush all TLB entries at the end. - There may not be any need for the TLB flush at the beginning of pmap_release(), but it's left in for now pending more investigation. Pointed out by: Svatopluk Kraus <onwahe@gmail.com> Discussed with: cognet@
This commit is contained in:
parent
273351d497
commit
49f85c3edb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=264702
@ -1988,8 +1988,6 @@ pmap_release(pmap_t pmap)
|
||||
{
|
||||
struct pcb *pcb;
|
||||
|
||||
cpu_idcache_wbinv_all();
|
||||
cpu_l2cache_wbinv_all();
|
||||
cpu_tlb_flushID();
|
||||
cpu_cpwait();
|
||||
if (vector_page < KERNBASE) {
|
||||
@ -2175,14 +2173,6 @@ pmap_growkernel(vm_offset_t addr)
|
||||
for (; pmap_curmaxkvaddr < addr; pmap_curmaxkvaddr += L1_S_SIZE)
|
||||
pmap_grow_l2_bucket(kpmap, pmap_curmaxkvaddr);
|
||||
|
||||
/*
|
||||
* flush out the cache, expensive but growkernel will happen so
|
||||
* rarely
|
||||
*/
|
||||
cpu_dcache_wbinv_all();
|
||||
cpu_l2cache_wbinv_all();
|
||||
cpu_tlb_flushD();
|
||||
cpu_cpwait();
|
||||
kernel_vm_end = pmap_curmaxkvaddr;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user