Module Name: src Committed By: snj Date: Wed Sep 16 04:26:04 UTC 2009
Modified Files: src/sys/arch/alpha/alpha [netbsd-5-0]: pmap.c Log Message: Pull up following revision(s) (requested by mhitch in ticket #953): sys/arch/alpha/alpha/pmap.c: revision 1.241 Now that secondary cpus are added the cpu_info list earlier, attempt to send pmap tlb shootdowns to them cause the shootdown job queue to fill up, but since the cpus aren't running yet, no IPIs get sent. When the job queue is full, the bit mask of cpus to send the IPI to is not set and no shootdown IPI ever gets sent after the cpu is marked running. Always set the cpumask even when the queue is full. Now I get shootdown ipis on all the secondary cpus. To generate a diff of this commit: cvs rdiff -u -r1.236 -r1.236.14.1 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.
Modified files: Index: src/sys/arch/alpha/alpha/pmap.c diff -u src/sys/arch/alpha/alpha/pmap.c:1.236 src/sys/arch/alpha/alpha/pmap.c:1.236.14.1 --- src/sys/arch/alpha/alpha/pmap.c:1.236 Mon Apr 28 20:23:10 2008 +++ src/sys/arch/alpha/alpha/pmap.c Wed Sep 16 04:26:04 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.236 2008/04/28 20:23:10 martin Exp $ */ +/* $NetBSD: pmap.c,v 1.236.14.1 2009/09/16 04:26:04 snj Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001, 2007, 2008 The NetBSD Foundation, Inc. @@ -140,7 +140,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.236 2008/04/28 20:23:10 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.236.14.1 2009/09/16 04:26:04 snj Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -3681,6 +3681,8 @@ continue; } + cpumask |= 1UL << ci->ci_cpuid; + pq = &pmap_tlb_shootdown_q[ci->ci_cpuid]; /* @@ -3720,7 +3722,6 @@ pq->pq_count++; TAILQ_INSERT_TAIL(&pq->pq_head, pj, pj_list); } - cpumask |= 1UL << ci->ci_cpuid; mutex_spin_exit(&pq->pq_lock); }