Index: amd64/amd64/vm_machdep.c =================================================================== --- amd64/amd64/vm_machdep.c (revision 211182) +++ amd64/amd64/vm_machdep.c (working copy) @@ -527,7 +527,8 @@ cpu_reset() { #ifdef SMP - u_int cnt, map; + cpumask_t map; + u_int cnt; if (smp_active) { map = PCPU_GET(other_cpus) & ~stopped_cpus; Index: amd64/amd64/mp_machdep.c =================================================================== --- amd64/amd64/mp_machdep.c (revision 211182) +++ amd64/amd64/mp_machdep.c (working copy) @@ -1053,7 +1053,7 @@ int ncpu, othercpus; othercpus = mp_ncpus - 1; - if (mask == (u_int)-1) { + if (mask == (cpumask_t)-1) { ncpu = othercpus; if (ncpu < 1) return; @@ -1078,7 +1078,7 @@ smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); - if (mask == (u_int)-1) + if (mask == (cpumask_t)-1) ipi_all_but_self(vector); else ipi_selected(mask, vector); @@ -1549,9 +1549,11 @@ mask = PCPU_GET(cpumask); #endif - retval = mask & hlt_cpus_mask; - while (mask & hlt_cpus_mask) + retval = 0; + while (mask & hlt_cpus_mask) { + retval = 1; __asm __volatile("sti; hlt" : : : "memory"); + } return (retval); } Index: arm/include/pmap.h =================================================================== --- arm/include/pmap.h (revision 211182) +++ arm/include/pmap.h (working copy) @@ -136,7 +136,7 @@ pd_entry_t *pm_pdir; /* KVA of page directory */ uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; - int pm_active; /* active on cpus */ + cpumask_t pm_active; /* active on cpus */ struct pmap_statistics pm_stats; /* pmap statictics */ TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */ }; Index: i386/i386/vm_machdep.c =================================================================== --- i386/i386/vm_machdep.c (revision 211182) +++ i386/i386/vm_machdep.c (working copy) @@ -596,7 +596,8 @@ #endif #ifdef SMP - u_int cnt, map; + cpumask_t map; + u_int cnt; if (smp_active) { map = PCPU_GET(other_cpus) & ~stopped_cpus; Index: i386/i386/mp_machdep.c =================================================================== --- i386/i386/mp_machdep.c (revision 211182) +++ i386/i386/mp_machdep.c (working copy) @@ -1598,9 +1598,11 @@ mask = PCPU_GET(cpumask); #endif - retval = mask & hlt_cpus_mask; - while (mask & hlt_cpus_mask) + retval = 0; + while (mask & hlt_cpus_mask) { + retval = 1; __asm __volatile("sti; hlt" : : : "memory"); + } return (retval); } Index: i386/xen/pmap.c =================================================================== --- i386/xen/pmap.c (revision 211182) +++ i386/xen/pmap.c (working copy) @@ -863,8 +863,7 @@ void pmap_invalidate_page(pmap_t pmap, vm_offset_t va) { - u_int cpumask; - u_int other_cpus; + cpumask_t cpumask, other_cpus; CTR2(KTR_PMAP, "pmap_invalidate_page: pmap=%p va=0x%x", pmap, va); @@ -888,8 +887,7 @@ void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { - u_int cpumask; - u_int other_cpus; + cpumask_t cpumask, other_cpus; vm_offset_t addr; CTR3(KTR_PMAP, "pmap_invalidate_page: pmap=%p eva=0x%x sva=0x%x", @@ -917,8 +915,7 @@ void pmap_invalidate_all(pmap_t pmap) { - u_int cpumask; - u_int other_cpus; + cpumask_t cpumask, other_cpus; CTR1(KTR_PMAP, "pmap_invalidate_page: pmap=%p", pmap); Index: mips/include/pmap.h =================================================================== --- mips/include/pmap.h (revision 211182) +++ mips/include/pmap.h (working copy) @@ -81,7 +81,7 @@ * pmap */ uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; - int pm_active; /* active on cpus */ + cpumask_t pm_active; /* active on cpus */ struct { u_int32_t asid:ASID_BITS; /* TLB address space tag */ u_int32_t gen:ASIDGEN_BITS; /* its generation number */ Index: powerpc/include/pmap.h =================================================================== --- powerpc/include/pmap.h (revision 211182) +++ powerpc/include/pmap.h (working copy) @@ -99,7 +99,7 @@ #else register_t pm_sr[16]; #endif - u_int pm_active; + cpumask_t pm_active; uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; @@ -153,7 +153,7 @@ struct pmap { struct mtx pm_mtx; /* pmap mutex */ tlbtid_t pm_tid[MAXCPU]; /* TID to identify this pmap entries in TLB */ - u_int pm_active; /* active on cpus */ + cpumask_t pm_active; /* active on cpus */ int pm_refs; /* ref count */ struct pmap_statistics pm_stats; /* pmap statistics */ Index: sparc64/sparc64/mp_machdep.c =================================================================== --- sparc64/sparc64/mp_machdep.c (revision 211182) +++ sparc64/sparc64/mp_machdep.c (working copy) @@ -121,7 +121,7 @@ static vm_offset_t mp_tramp; static u_int cpuid_to_mid[MAXCPU]; static int isjbus; -static volatile u_int shutdown_cpus; +static volatile cpumask_t shutdown_cpus; static void ap_count(phandle_t node, u_int mid, u_int cpu_impl); static void ap_start(phandle_t node, u_int mid, u_int cpu_impl); Index: sparc64/include/smp.h =================================================================== --- sparc64/include/smp.h (revision 211182) +++ sparc64/include/smp.h (working copy) @@ -77,17 +77,17 @@ }; struct ipi_cache_args { - u_int ica_mask; + cpumask_t ica_mask; vm_paddr_t ica_pa; }; struct ipi_rd_args { - u_int ira_mask; + cpumask_t ira_mask; register_t *ira_val; }; struct ipi_tlb_args { - u_int ita_mask; + cpumask_t ita_mask; struct pmap *ita_pmap; u_long ita_start; u_long ita_end; @@ -208,7 +208,7 @@ ipi_tlb_context_demap(struct pmap *pm) { struct ipi_tlb_args *ita; - u_int cpus; + cpumask_t cpus; if (smp_cpus == 1) return (NULL); @@ -230,7 +230,7 @@ ipi_tlb_page_demap(struct pmap *pm, vm_offset_t va) { struct ipi_tlb_args *ita; - u_int cpus; + cpumask_t cpus; if (smp_cpus == 1) return (NULL); @@ -252,7 +252,7 @@ ipi_tlb_range_demap(struct pmap *pm, vm_offset_t start, vm_offset_t end) { struct ipi_tlb_args *ita; - u_int cpus; + cpumask_t cpus; if (smp_cpus == 1) return (NULL); @@ -275,7 +275,7 @@ static __inline void ipi_wait(void *cookie) { - volatile u_int *mask; + volatile cpumask_t *mask; if ((mask = cookie) != NULL) { atomic_clear_int(mask, PCPU_GET(cpumask)); Index: sparc64/include/pmap.h =================================================================== --- sparc64/include/pmap.h (revision 211182) +++ sparc64/include/pmap.h (working copy) @@ -61,7 +61,7 @@ struct mtx pm_mtx; struct tte *pm_tsb; vm_object_t pm_tsb_obj; - u_int pm_active; + cpumask_t pm_active; uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; u_int pm_context[MAXCPU]; Index: sun4v/sun4v/pmap.c =================================================================== --- sun4v/sun4v/pmap.c (revision 211182) +++ sun4v/sun4v/pmap.c (working copy) @@ -1451,7 +1451,7 @@ { int i, cpu_count, retried; - u_int cpus; + cpumask_t cpus; cpumask_t cpumask, active, curactive; cpumask_t active_total, ackmask; uint16_t *cpulist; Index: sun4v/sun4v/mp_machdep.c =================================================================== --- sun4v/sun4v/mp_machdep.c (revision 211182) +++ sun4v/sun4v/mp_machdep.c (working copy) @@ -115,7 +115,7 @@ u_int mp_boot_mid; -static volatile u_int shutdown_cpus; +static volatile cpumask_t shutdown_cpus; void cpu_mp_unleash(void *); SYSINIT(cpu_mp_unleash, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL); Index: sun4v/include/smp.h =================================================================== --- sun4v/include/smp.h (revision 211182) +++ sun4v/include/smp.h (working copy) @@ -59,12 +59,12 @@ }; struct ipi_cache_args { - u_int ica_mask; + cpumask_t ica_mask; vm_paddr_t ica_pa; }; struct ipi_tlb_args { - u_int ita_mask; + cpumask_t ita_mask; struct pmap *ita_pmap; u_long ita_start; u_long ita_end;