Re: [RFC] new MSR r/w functions per CPU

2006-12-13 Thread H. Peter Anvin
Rudolf Marek wrote: Hello all, For my new coretemp driver[1], I need to execute the rdmsr on particular processor. There is no such "global" function for that in the kernel so far. The per CPU msr_read and msr_write are used in following drivers: msr.c (it is static there now) k8-edac.c (

Re: [RFC] new MSR r/w functions per CPU

2006-12-13 Thread H. Peter Anvin
Dave Jones wrote: Can you explain this a little further? I'm fairly certain there are places in the kernel already doing this (or similar). In fact, I cut-n-pasted most of the above from similar code in the powernow-k8 driver. What exactly can we deadlock on? I wanted to change the MSR drive

Re: [RFC] new MSR r/w functions per CPU

2006-12-13 Thread Dave Jones
On Wed, Dec 13, 2006 at 02:19:52PM -0800, H. Peter Anvin wrote: > > void rdmsr_on_cpu(unsigned int cpu, unsigned long msr, unsigned long *lo, > > unsigned long *hi) > > { > > cpumask_t oldmask; > > > > oldmask = current->cpus_allowed; > > set_cpus_allowed(current, cpumask_of_c

Re: [RFC] new MSR r/w functions per CPU

2006-12-13 Thread Dave Jones
On Wed, Dec 13, 2006 at 10:45:13PM +0100, Rudolf Marek wrote: > Hello all, > > For my new coretemp driver[1], I need to execute the rdmsr on particular > processor. There is no such "global" function for that in the kernel so far. > > The per CPU msr_read and msr_write are used in followi

Re: [RFC] new MSR r/w functions per CPU

2006-12-13 Thread H. Peter Anvin
Dave Jones wrote: Exposing the guts of the msr driver like that doesn't seem too clean. For in-kernel use, why not just add something like this.. (note:not even compile tested).. Well, that *is* the guts of the MSR driver. void rdmsr_on_cpu(unsigned int cpu, unsigned long msr, unsigned long

[RFC] new MSR r/w functions per CPU

2006-12-13 Thread Rudolf Marek
Hello all, For my new coretemp driver[1], I need to execute the rdmsr on particular processor. There is no such "global" function for that in the kernel so far. The per CPU msr_read and msr_write are used in following drivers: msr.c (it is static there now) k8-edac.c (duplicated right now -