NetBSD-Bugs archive

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

Re: port-arm/38950 (shark, hpcarm kernels prone to hard hangs on process exit)

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

From: Steve Woodford <>
Subject: Re: port-arm/38950 (shark,  hpcarm kernels prone to hard hangs on 
process exit)
Date: Mon, 23 Jun 2008 15:55:41 +0100

 On Friday 20 June 2008 04:35:01 Rafal Boni wrote:
 >  This just occurred to me after having filed this in the "I don't
 > have time to think about it right now" bin.  The issue here is that
 > the pmap code is using the last-active-lwp as a proxy for
 > last-active-pmap.  What we should do is just save the pmap pointed to
 > by the last-active-lwp vs. the lwp itself.
 While that may solve the problem, it may well work against the intention 
 of "last-active-pmap", which is to reduce the impact of 
 context-switching between user-mode processes/lwps.
 A simple fix would be to add the following to pmap_deactivate():
 Index: pmap.c
 RCS file: /cvsroot/src/sys/arch/arm/arm32/pmap.c,v
 retrieving revision 1.177
 diff -u -r1.177 pmap.c
 --- pmap.c      17 Jun 2008 08:04:26 -0000      1.177
 +++ pmap.c      23 Jun 2008 14:55:07 -0000
 @@ -3882,6 +3882,14 @@
  pmap_deactivate(struct lwp *l)
 +       /*
 +        * If the process is exiting, make sure pmap_activate() does
 +        * a full MMU context-switch and cache flush, which we might
 +        * otherwise skip. See PR port-arm/38950.
 +        */
 +       if (l->l_proc->p_sflag & PS_WEXIT)
 +               pmap_previous_active_lwp = NULL;
         l->l_proc->p_vmspace->vm_map.pmap->pm_activated = false;
 Cheers, Steve

Home | Main Index | Thread Index | Old Index