cpuid: switch to cpuid_on_cpu()
PATCH 3/3 cpuid: switch to cpuid_on_cpu()
Now that cpuid_on_cpu() is in core, cpuid driver can be shrinked.
---
arch/i386/kernel/cpuid.c | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-)
arch/i386/kernel/cpuid.c +1 -40
@@ -45,45 +45,6 @@ #include <asm/system.h>static struct class *cpuid_class; -#ifdef CONFIG_SMP - -struct cpuid_command { -u32 reg; -u32 *data; -}; - -static void cpuid_smp_cpuid (void *cmd_block) -{ -struct cpuid_command *cmd = (struct cpuid_command *)cmd_block; - -cpuid (cmd->reg, &cmd->data[0 ], &cmd->data[1 ], &cmd->data[2 ], - &cmd->data[3 ]); -} - -static inline void do_cpuid (int cpu,u32 reg,u32 * data) -{ -struct cpuid_command cmd; - -preempt_disable (); -if (cpu ==smp_processor_id ()) { -cpuid (reg, &data[0 ], &data[1 ], &data[2 ], &data[3 ]); - }else { - cmd.reg = reg; - cmd.data = data; - -smp_call_function_single (cpu, cpuid_smp_cpuid, &cmd,1 ,1 ); - } -preempt_enable (); -} -#else /* ! CONFIG_SMP */ - -static inline void do_cpuid (int cpu,u32 reg,u32 * data) -{ -cpuid (reg, &data[0 ], &data[1 ], &data[2 ], &data[3 ]); -} - -#endif /* ! CONFIG_SMP */ -static loff_t cpuid_seek (struct file *file,loff_t offset,int orig) {loff_t ret;
@@ -119,7 +80,7 @@ static ssize_t cpuid_read(struct file *freturn -EINVAL ;/* Invalid chunk size */ for (; count; count -=16 ) { -do_cpuid (cpu, reg, data); +cpuid_on_cpu (cpu, reg, &data[0 ], &data[1 ], &data[2 ], &data[3 ]);if (copy_to_user (tmp, &data,16 ))return -EFAULT ; tmp +=16 ;
Quoted 3 lines · Alexey Dobriyan
Now that
cpuid_on_cpu()is in core, cpuid driver can be shrinked.Signed-off-by Alexey Dobriyan <[email protected]>
Hi Alexey,
This, and your other changes in this area does conflict with the work that I've been doing on extending the usability of the CPUID and MSR drivers (which is part of why this work has dragged out seemingly forever.)
I would really appreciate it if we could work together on this; there needs to be new paravirtualization entry points for this. Consequently, I just updated and uploaded a git tree with the current status. It still needs porting to x86-64, however.
The current cpuid/msr work is at:
http://git.kernel.org/?p=linux/kernel/git/hpa/linux-2.6-cpuidmsr.git;a=summary
-hpa