I need help understanding how to locate implementation of rdmsr_safe_regs() in the linux kernel
I am presently working with Model Specific Registers and have been studying the kernel module implementation found in arch/x86/kernel/msr.c. I am attempting to understand what the implementation of the msr_ioctl(X86_IOC_RDMSR_REGS) <http://lxr.free-electrons.com/source/arch/x86/kernel/msr.c?v=3.8#L124> call is doing. msr_ioctl(X86_IOC_RDMSR_REGS) calls rdmsr_safe_regs_on_cpu() <http://lxr.free-electrons.com/source/arch/x86/lib/msr-smp.c#L242> (arch/x86/lib/msr-smp.c, line 180) which sets up __rdmsr_safe_regs_on_cpu <http://lxr.free-electrons.com/source/arch/x86/lib/msr-smp.c#L228>() (arch/x86/lib/msr-smp.c, line 166) as a callback function to perform the actual work. This callback function then calls rdmsr_safe_regs(). I am unable to find the implementation for rdmsr_safe_regs(). lxr <http://lxr.free-electrons.com/ident?i=rdmsr_safe_regs> only mentions references and a prototype definition. I've also manually grepped through the entire kernel source tree and have not been able to find where rdmsr_safe_regs is defined. I have poked around online, but have so far not been able to generate the correct query to find an answer. Can someone point me to the right documentation where I can figure this out? Thanks, Marty
On Thu, Jul 09, 2015 at 08:08:21AM -0700, Marty wrote:
I am unable to find the implementation for rdmsr_safe_regs(). lxr <http://lxr.free-electrons.com/ident?i=rdmsr_safe_regs> only mentions references and a prototype definition.
I've also manually grepped through the entire kernel source tree and have not been able to find where rdmsr_safe_regs is defined.
Try http://lxr.free-electrons.com/source/arch/x86/lib/msr-reg.S If I can not grep out the definition of a function by its name, I will try to grep with part of its name again, because most likely it is created by a macro. In your case, I tried "grep safe_regs" under arch/x86/ and got what you need.
Thanks for the public response (and to those who responded to me privately). I did not think about macro definitions and will definitely add that to my 'grep list' when finding things in the future. Thanks again, Marty On Fri, Jul 10, 2015 at 11:17 AM, Ender Dai <ender.dai@gmail.com> wrote:
On Thu, Jul 09, 2015 at 08:08:21AM -0700, Marty wrote:
I am unable to find the implementation for rdmsr_safe_regs(). lxr <http://lxr.free-electrons.com/ident?i=rdmsr_safe_regs> only mentions references and a prototype definition.
I've also manually grepped through the entire kernel source tree and have not been able to find where rdmsr_safe_regs is defined.
Try http://lxr.free-electrons.com/source/arch/x86/lib/msr-reg.S
If I can not grep out the definition of a function by its name, I will try to grep with part of its name again, because most likely it is created by a macro. In your case, I tried "grep safe_regs" under arch/x86/ and got what you need.
-- -marty
participants (2)
-
Ender Dai -
Marty