NetBSD-Bugs archive

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

PR/56200 CVS commit: src/sys/arch/alpha/alpha



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

From: "Jason R Thorpe" <thorpej%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/56200 CVS commit: src/sys/arch/alpha/alpha
Date: Sun, 23 May 2021 19:13:27 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sun May 23 19:13:27 UTC 2021
 
 Modified Files:
 	src/sys/arch/alpha/alpha: pmap.c
 
 Log Message:
 Fix a bug in pmap_tlb_shootdown_all_user(), where it was not
 stashing away the pointer to the pmap in the TLB context structure
 like pmap_tlb_shootdown() was doing.  This would result in the
 following failure scenario:
 
 - Page fault handler calls pmap_enter() to map a page.  Mapping
   is the first one for that L2 PT L3 PT, meaning that an L2 PT
   and an L3 PT must be allocated.
 - L2 PT allocation succeeds.
 - L3 PT allocation fails under memory pressure.
 - pmap_enter() goes to drop the reference on the L2 PT, which, because
   it was the first of its mappings, frees the L2 PT.  Becuse PALcode
   may have already tried to service a TLB miss though that L2 PT, we
   must issue an all-user-VA shootdown, and call pmap_tlb_shootdown_all_user()
   to do so.
 - pmap_tlb_shootnow() is called and an assert fires because the TLB
   context structure does not point to a pmap.
 
 This did not fail in the pmap_remove() scenario because the TLB context
 would have already had at least one call to pmap_tlb_shootdown(), which
 was initializing the pmap pointer properly.
 
 PR port-alpha/56200
 
 
 To generate a diff of this commit:
 cvs rdiff -u -r1.276 -r1.277 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.
 


Home | Main Index | Thread Index | Old Index