Index: subr_percpu.c =================================================================== RCS file: /cvs/src/sys/kern/subr_percpu.c,v retrieving revision 1.4 diff -u -p -r1.4 subr_percpu.c --- subr_percpu.c 24 Oct 2016 23:58:33 -0000 1.4 +++ subr_percpu.c 26 Oct 2016 00:00:31 -0000 @@ -22,16 +22,20 @@ #include #include +#include + #include #ifdef MULTIPROCESSOR +extern struct cfdriver cpu_cd; + struct pool cpumem_pl; void percpu_init(void) { - pool_init(&cpumem_pl, sizeof(struct cpumem) * ncpus, 0, IPL_NONE, - PR_WAITOK, "percpumem", &pool_allocator_single); + pool_init(&cpumem_pl, sizeof(struct cpumem) * cpu_cd.cd_ndevs, 0, + IPL_NONE, PR_WAITOK, "percpumem", &pool_allocator_single); } struct cpumem * @@ -42,7 +46,7 @@ cpumem_get(struct pool *pp) cm = pool_get(&cpumem_pl, PR_WAITOK); - for (cpu = 0; cpu < ncpus; cpu++) + for (cpu = 0; cpu < cpu_cd.cd_ndevs; cpu++) cm[cpu].mem = pool_get(pp, PR_WAITOK | PR_ZERO); return (cm); @@ -53,7 +57,7 @@ cpumem_put(struct pool *pp, struct cpume { unsigned int cpu; - for (cpu = 0; cpu < ncpus; cpu++) + for (cpu = 0; cpu < cpu_cd.cd_ndevs; cpu++) pool_put(pp, cm[cpu].mem); pool_put(&cpumem_pl, cm); @@ -69,7 +73,7 @@ cpumem_malloc(size_t sz, int type) cm = pool_get(&cpumem_pl, PR_WAITOK); - for (cpu = 0; cpu < ncpus; cpu++) + for (cpu = 0; cpu < cpu_cd.cd_ndevs; cpu++) cm[cpu].mem = malloc(sz, type, M_WAITOK | M_ZERO); return (cm); @@ -86,7 +90,7 @@ cpumem_malloc_ncpus(struct cpumem *bootc cm = pool_get(&cpumem_pl, PR_WAITOK); cm[0].mem = bootcm[0].mem; - for (cpu = 1; cpu < ncpus; cpu++) + for (cpu = 1; cpu < cpu_cd.cd_ndevs; cpu++) cm[cpu].mem = malloc(sz, type, M_WAITOK | M_ZERO); return (cm); @@ -99,7 +103,7 @@ cpumem_free(struct cpumem *cm, int type, sz = roundup(sz, CACHELINESIZE); - for (cpu = 0; cpu < ncpus; cpu++) + for (cpu = 0; cpu < cpu_cd.cd_ndevs; cpu++) free(cm[cpu].mem, type, sz); pool_put(&cpumem_pl, cm); @@ -118,7 +122,7 @@ cpumem_next(struct cpumem_iter *i, struc { unsigned int cpu = ++i->cpu; - if (cpu >= ncpus) + if (cpu >= cpu_cd.cd_ndevs) return (NULL); return (cm[cpu].mem);