> Date: Wed, 8 Jul 2015 16:35:09 +0200 (CEST) > From: Mark Kettenis <mark.kette...@xs4all.nl> > > > Date: Wed, 8 Jul 2015 15:17:46 +0100 > > From: Stuart Henderson <st...@openbsd.org> > > > > On 2015/07/08 15:53, Mark Kettenis wrote: > > > Index: uvm_map.c > > .. > > > @@ -2466,8 +2470,7 @@ uvm_map_teardown(struct vm_map *map) > > > if ((entry = RB_ROOT(&map->addr)) != NULL) > > > DEAD_ENTRY_PUSH(&dead_entries, entry); > > > while (entry != NULL) { > > > - if (waitok) > > > - uvm_pause(); > > > + sched_pause(); > > > > ah, slightly different than the one I've tried before which > > had uvm_pause instead of sched_pause here plus an extra change > > in uvm_glue.c. > > Just a bit of a cleanup though. Not going to make a difference. > > > I'll give this a spin on i386 after my current build finishes. > > FWIW I've been running the previous version on amd64 for ages with > > very positive results. > > I won't stop you ;). But my goal was to trick others into testing > this diff such that this doesn't hamper the i386 ports builds.
And thanks to Stuart, we have found a (fairly straightforward) lock order reversal. I'm working on a fix. Thanks for everybody who tested so far. Feel free to continue testing, although you might want to be a bit careful on i386 systems as they are somewhat likely to lock up with this diff.