Author: marius
Date: Mon Jun 20 21:31:01 2011
New Revision: 223346
URL: http://svn.freebsd.org/changeset/base/223346

Log:
  - Remove MD usage of pc_cpumask and pc_other_cpus. [1]
  - Remove CTASSERTs which no longer need to hold since r222813.
  
  Submitted by: attilio [1]

Modified:
  head/sys/sparc64/sparc64/mp_machdep.c
  head/sys/sparc64/sparc64/pmap.c
  head/sys/sparc64/sparc64/tlb.c

Modified: head/sys/sparc64/sparc64/mp_machdep.c
==============================================================================
--- head/sys/sparc64/sparc64/mp_machdep.c       Mon Jun 20 21:28:50 2011        
(r223345)
+++ head/sys/sparc64/sparc64/mp_machdep.c       Mon Jun 20 21:31:01 2011        
(r223346)
@@ -140,8 +140,6 @@ static cpu_ipi_single_t spitfire_ipi_sin
 SYSINIT(cpu_mp_unleash, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL);
 
 CTASSERT(MAXCPU <= IDR_CHEETAH_MAX_BN_PAIRS);
-CTASSERT(MAXCPU <= sizeof(u_int) * NBBY);
-CTASSERT(MAXCPU <= sizeof(int) * NBBY);
 
 void
 mp_init(u_int cpu_impl)
@@ -491,13 +489,14 @@ cpu_mp_shutdown(void)
        int i;
 
        critical_enter();
-       shutdown_cpus = PCPU_GET(other_cpus);
+       shutdown_cpus = all_cpus;
+       CPU_CLR(PCPU_GET(cpuid), &shutdown_cpus);
        cpus = shutdown_cpus;
 
        /* XXX: Stop all the CPUs which aren't already. */
        if (CPU_CMP(&stopped_cpus, &cpus)) {
 
-               /* pc_other_cpus is just a flat "on" mask without curcpu. */
+               /* cpus is just a flat "on" mask without curcpu. */
                CPU_NAND(&cpus, &stopped_cpus);
                stop_cpus(cpus);
        }
@@ -520,23 +519,23 @@ cpu_ipi_ast(struct trapframe *tf)
 static void
 cpu_ipi_stop(struct trapframe *tf)
 {
-       cpuset_t tcmask;
+       u_int cpuid;
 
        CTR2(KTR_SMP, "%s: stopped %d", __func__, curcpu);
        sched_pin();
        savectx(&stoppcbs[curcpu]);
-       tcmask = PCPU_GET(cpumask);
-       CPU_OR_ATOMIC(&stopped_cpus, &tcmask);
-       while (!CPU_OVERLAP(&started_cpus, &tcmask)) {
-               if (CPU_OVERLAP(&shutdown_cpus, &tcmask)) {
-                       CPU_NAND_ATOMIC(&shutdown_cpus, &tcmask);
+       cpuid = PCPU_GET(cpuid);
+       CPU_SET_ATOMIC(cpuid, &stopped_cpus);
+       while (!CPU_ISSET(cpuid, &started_cpus)) {
+               if (CPU_ISSET(cpuid, &shutdown_cpus)) {
+                       CPU_CLR_ATOMIC(cpuid, &shutdown_cpus);
                        (void)intr_disable();
                        for (;;)
                                ;
                }
        }
-       CPU_NAND_ATOMIC(&started_cpus, &tcmask);
-       CPU_NAND_ATOMIC(&stopped_cpus, &tcmask);
+       CPU_CLR_ATOMIC(cpuid, &started_cpus);
+       CPU_CLR_ATOMIC(cpuid, &stopped_cpus);
        sched_unpin();
        CTR2(KTR_SMP, "%s: restarted %d", __func__, curcpu);
 }

Modified: head/sys/sparc64/sparc64/pmap.c
==============================================================================
--- head/sys/sparc64/sparc64/pmap.c     Mon Jun 20 21:28:50 2011        
(r223345)
+++ head/sys/sparc64/sparc64/pmap.c     Mon Jun 20 21:31:01 2011        
(r223346)
@@ -2230,7 +2230,7 @@ pmap_activate(struct thread *td)
        PCPU_SET(tlb_ctx, context + 1);
 
        pm->pm_context[curcpu] = context;
-       CPU_OR(&pm->pm_active, PCPU_PTR(cpumask));
+       CPU_SET(PCPU_GET(cpuid), &pm->pm_active);
        PCPU_SET(pmap, pm);
 
        stxa(AA_DMMU_TSB, ASI_DMMU, pm->pm_tsb);

Modified: head/sys/sparc64/sparc64/tlb.c
==============================================================================
--- head/sys/sparc64/sparc64/tlb.c      Mon Jun 20 21:28:50 2011        
(r223345)
+++ head/sys/sparc64/sparc64/tlb.c      Mon Jun 20 21:31:01 2011        
(r223346)
@@ -80,7 +80,7 @@ tlb_context_demap(struct pmap *pm)
        PMAP_STATS_INC(tlb_ncontext_demap);
        cookie = ipi_tlb_context_demap(pm);
        s = intr_disable();
-       if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
+       if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
                KASSERT(pm->pm_context[curcpu] != -1,
                    ("tlb_context_demap: inactive pmap?"));
                stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_DMMU_DEMAP, 0);
@@ -101,7 +101,7 @@ tlb_page_demap(struct pmap *pm, vm_offse
        PMAP_STATS_INC(tlb_npage_demap);
        cookie = ipi_tlb_page_demap(pm, va);
        s = intr_disable();
-       if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
+       if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
                KASSERT(pm->pm_context[curcpu] != -1,
                    ("tlb_page_demap: inactive pmap?"));
                if (pm == kernel_pmap)
@@ -128,7 +128,7 @@ tlb_range_demap(struct pmap *pm, vm_offs
        PMAP_STATS_INC(tlb_nrange_demap);
        cookie = ipi_tlb_range_demap(pm, start, end);
        s = intr_disable();
-       if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) {
+       if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) {
                KASSERT(pm->pm_context[curcpu] != -1,
                    ("tlb_range_demap: inactive pmap?"));
                if (pm == kernel_pmap)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to