Messages in this thread | | | Date | Wed, 13 Dec 2006 17:26:16 -0500 | From | Dave Jones <> | Subject | Re: [RFC] new MSR r/w functions per CPU |
| |
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_cpu(cpu)); > > > > rdmsr(msr, &lo, &hi); > > > > set_cpus_allowed(current, oldmask); > > } > > > > [The above doesn't work, by the way. This approach was discussed a long > time ago, and vetoed due to the potential for deadlock.]
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?
Dave
-- http://www.codemonkey.org.uk - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |