We still need the equivalent functionality, though. The midlayer (msr_on_cpu) may be pointless, but that doesn't change the fact that putting this functionality in the lower layer (smp_call_function_single) makes more sense.
Assuming you can actually have interrupts enabled at these point
and be otherwise ready to do call_function_simple (e.g. cpu hotplug
locking etc.)
For a lot of MSR accesses in more complicated subsystems like cpufreq that requires complications. I would think for many circumstances it's better to simply set affinity of the thread before at a higher level.
In hindsight I think it was my mistake to ever merge that.
I admit I never liked it, but just merged it because I wasn't able
to come up with a strong enough counter argument back then.