Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/alpha/alpha Now that secondary cpus are added the c...



details:   https://anonhg.NetBSD.org/src/rev/411a124296ad
branches:  trunk
changeset: 747317:411a124296ad
user:      mhitch <mhitch%NetBSD.org@localhost>
date:      Thu Sep 10 21:36:39 2009 +0000

description:
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.

diffstat:

 sys/arch/alpha/alpha/pmap.c |  7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diffs (35 lines):

diff -r 10ec7b991ea8 -r 411a124296ad sys/arch/alpha/alpha/pmap.c
--- a/sys/arch/alpha/alpha/pmap.c       Thu Sep 10 18:11:21 2009 +0000
+++ b/sys/arch/alpha/alpha/pmap.c       Thu Sep 10 21:36:39 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.240 2009/08/18 18:06:53 thorpej Exp $ */
+/* $NetBSD: pmap.c,v 1.241 2009/09/10 21:36:39 mhitch 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.240 2009/08/18 18:06:53 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.241 2009/09/10 21:36:39 mhitch Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -3680,6 +3680,8 @@
                        continue;
                }
 
+               cpumask |= 1UL << ci->ci_cpuid;
+
                pq = &pmap_tlb_shootdown_q[ci->ci_cpuid];
 
                /*
@@ -3719,7 +3721,6 @@
                        pq->pq_count++;
                        TAILQ_INSERT_TAIL(&pq->pq_head, pj, pj_list);
                }
-               cpumask |= 1UL << ci->ci_cpuid;
                mutex_spin_exit(&pq->pq_lock);
        }
 



Home | Main Index | Thread Index | Old Index