>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
|