Messages in this thread | | | Subject | Re: [PATCH v4 6/8] x86/ftrace: Use __pa_symbol instead of __pa on C visible symbols | From | Steven Rostedt <> | Date | Fri, 16 Nov 2012 17:45:26 -0500 |
| |
On Fri, 2012-11-16 at 14:25 -0800, H. Peter Anvin wrote: > It is a performance improvement. > > >> * kernel identity mapping to modify code. > >> */ > >> if (within(ip, (unsigned long)_text, (unsigned long)_etext)) > >> - ip = (unsigned long)__va(__pa(ip)); > >> + ip = (unsigned long)__va(__pa_symbol(ip)); > >> > >> return probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE); > >> } > >> @@ -279,7 +279,7 @@ static int ftrace_write(unsigned long ip, const > >char *val, int size) > >> * kernel identity mapping to modify code. > >> */ > >> if (within(ip, (unsigned long)_text, (unsigned long)_etext)) > >> - ip = (unsigned long)__va(__pa(ip)); > >> + ip = (unsigned long)__va(__pa_symbol(ip)); > >> > >> return probe_kernel_write((void *)ip, val, size); > >> } >
#define __pa(x) __phys_addr((unsigned long)(x)) #define __pa_symbol(x) __pa(__phys_reloc_hide((unsigned long)(x)))
I'm confused. __pa_symbol() just calls __pa() with some macro magic to its parameter. How is this a performance improvement?
-- Steve
| |