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

RE: [Xen-devel][PATCH] Change cpufreq_driver->get so that it can get other cpu's real physical freq



>From: Liu, Jinsong
>Sent: Thursday, December 11, 2008 10:42 AM
>
>Change cpufreq_driver->get so that it can get other cpu's real 
>physical freq.
>
>Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx>

@@ -174,7 +177,11 @@ static void drv_read(struct drv_cmd *cmd
 {
     cmd->val = 0;
 
-    do_drv_read(cmd);
+    /* to reduce IPI for the sake of performance */
+    if (first_cpu(cmd->mask) == smp_processor_id())
+        do_drv_read((void *)cmd);
+    else
+        on_selected_cpus( cmd->mask, do_drv_read, (void *)cmd, 0, 1);
 }

Above is a bad change where you kicks multiple cpus to update 
same variable without any coordination. Also why can short path only
be used with strict condition that current cpu must be first bit in
mask? As long as current cpu is on mask, you can always read
directly.

@@ -205,7 +220,7 @@ static u32 get_cur_val(cpumask_t mask)
         return 0;
     }
 
-    cmd.mask = mask;
+    cmd.mask = cpumask_of_cpu(cpu);
 
     drv_read(&cmd);
     return cmd.val;

Since do_drv_read can figure out which cpu to read from the mask,
why do you need above limitation then?

Thanks,
Kevin

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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