NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PR/55062 CVS commit: src/sys



The following reply was made to PR port-mips/55062; it has been noted by GNATS.

From: "Jason R Thorpe" <thorpej%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/55062 CVS commit: src/sys
Date: Wed, 11 Mar 2020 13:30:32 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Wed Mar 11 13:30:31 UTC 2020
 
 Modified Files:
 	src/sys/arch/mips/mips: pmap_machdep.c
 	src/sys/arch/powerpc/booke: booke_pmap.c
 	src/sys/arch/powerpc/include/booke: pmap.h
 	src/sys/arch/riscv/include: pmap.h
 	src/sys/arch/riscv/riscv: pmap_machdep.c riscv_machdep.c
 	src/sys/uvm/pmap: pmap.c pmap.h
 
 Log Message:
 With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency
 check from a (soft) interrupt handler.  But if a platform does not otherwise
 require the pmap_tlb_miss_lock, then where will be a brief window of
 inconsistency that, while harmless, will still fire an assertion in the
 consistency check.
 
 Fix this with the following changes:
 1- Refactor the pmap_tlb_miss_lock into MI code and rename it from
    pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}().
    MD code can still define the "md" hooks as necessary, and if so, will
    override the common implementation.
 2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap
    operations, namely initializing the pmap_tlb_miss_lock if it's needed.
    If MD code overrides the implementation, it's responsible for initializing
    its own lock.
 3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv
    pmap_bootstrap() routines.  (This required adding one for riscv.)
 4- Switch powerpc booke to the common pmap_tlb_miss_lock.
 5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise
    required.
 
 PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())
 
 
 To generate a diff of this commit:
 cvs rdiff -u -r1.26 -r1.27 src/sys/arch/mips/mips/pmap_machdep.c
 cvs rdiff -u -r1.26 -r1.27 src/sys/arch/powerpc/booke/booke_pmap.c
 cvs rdiff -u -r1.18 -r1.19 src/sys/arch/powerpc/include/booke/pmap.h
 cvs rdiff -u -r1.3 -r1.4 src/sys/arch/riscv/include/pmap.h
 cvs rdiff -u -r1.4 -r1.5 src/sys/arch/riscv/riscv/pmap_machdep.c
 cvs rdiff -u -r1.8 -r1.9 src/sys/arch/riscv/riscv/riscv_machdep.c
 cvs rdiff -u -r1.45 -r1.46 src/sys/uvm/pmap/pmap.c
 cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap.h
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.
 


Home | Main Index | Thread Index | Old Index