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

Re: [Xen-devel] [PATCH] Xen: Spread boot time page scrubbing across all available CPU's (v7)



. groan..

> +        /*
> +         * Use CPUs from best node, and if there are no CPUs on the
> +         * first node (the default) use the BSP.
> +         */
> +        if ( find_non_smt(best_node, &node_cpus) == 0 )
> +            cpumask_set_cpu(smp_processor_id(), &node_cpus);
>  
> -        spin_unlock(&heap_lock);
> +        /* We already have the node information from round #0. */
> +        region[i].rem = region[i].per_cpu_sz % cpumask_weight(&node_cpus);
> +        region[i].per_cpu_sz /= cpumask_weight(&node_cpus);

And we can use 'cpus' here as well, like:

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 5af1361..f1c0676 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1451,12 +1451,15 @@ void __init scrub_heap_pages(void)
          * Use CPUs from best node, and if there are no CPUs on the
          * first node (the default) use the BSP.
          */
-        if ( find_non_smt(best_node, &node_cpus) == 0 )
+        cpus = find_non_smt(best_node, &node_cpus);
+        if ( cpus == 0 )
+        {
             cpumask_set_cpu(smp_processor_id(), &node_cpus);
-
+            cpus = 1;
+        }
         /* We already have the node information from round #0. */
-        region[i].rem = region[i].per_cpu_sz % cpumask_weight(&node_cpus);
-        region[i].per_cpu_sz /= cpumask_weight(&node_cpus);
+        region[i].rem = region[i].per_cpu_sz % cpus;
+        region[i].per_cpu_sz /= cpus;
         max_per_cpu_sz = region[i].per_cpu_sz;
         cpumask_copy(&region[i].cpus, &node_cpus);
 


Will post another patch <sigh>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.