Message ID | 20170324181254.gouyrbmppukrrbb6@treble (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Fri, 24 Mar 2017 13:12:54 -0500 Josh Poimboeuf <jpoimboe@redhat.com> wrote: > Instead I was able to "fix" it by ignoring ftrace calls in real mode: > > ----- > index 8f3d9cf..5c0d0c6 100644 > --- a/arch/x86/kernel/ftrace.c > +++ b/arch/x86/kernel/ftrace.c > @@ -983,6 +983,9 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, > unsigned long return_hooker = (unsigned long) > &return_to_handler; > > + if (__builtin_return_address(0) < TASK_SIZE_MAX) > + return; > + > if (unlikely(ftrace_graph_is_dead())) > return; > --------------- > > I'm not sure what the best fix should really be. A few ideas off the > top of my head: > > - A real mode check similar to the above (except it should probably be > more precise) The real mode check hack may be good enough for now. Make sure that it's commented well. -- Steve > > - Make tracing_graph_pause a percpu variable so that it can be read from > prepare_ftrace_return() > > - pause_graph_tracing() from ftrace_suspend_notifier_call() > > Steven, thoughts? > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Friday, March 24, 2017 02:41:14 PM Steven Rostedt wrote: > On Fri, 24 Mar 2017 13:12:54 -0500 > Josh Poimboeuf <jpoimboe@redhat.com> wrote: > > > > Instead I was able to "fix" it by ignoring ftrace calls in real mode: > > > > ----- > > index 8f3d9cf..5c0d0c6 100644 > > --- a/arch/x86/kernel/ftrace.c > > +++ b/arch/x86/kernel/ftrace.c > > @@ -983,6 +983,9 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, > > unsigned long return_hooker = (unsigned long) > > &return_to_handler; > > > > + if (__builtin_return_address(0) < TASK_SIZE_MAX) > > + return; > > + > > if (unlikely(ftrace_graph_is_dead())) > > return; > > --------------- > > > > I'm not sure what the best fix should really be. A few ideas off the > > top of my head: > > > > - A real mode check similar to the above (except it should probably be > > more precise) > > The real mode check hack may be good enough for now. Make sure that > it's commented well. Agreed. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Mar 25, 2017 at 02:20:11PM +0100, Rafael J. Wysocki wrote: > On Friday, March 24, 2017 02:41:14 PM Steven Rostedt wrote: > > On Fri, 24 Mar 2017 13:12:54 -0500 > > Josh Poimboeuf <jpoimboe@redhat.com> wrote: > > > > > > > Instead I was able to "fix" it by ignoring ftrace calls in real mode: > > > > > > ----- > > > index 8f3d9cf..5c0d0c6 100644 > > > --- a/arch/x86/kernel/ftrace.c > > > +++ b/arch/x86/kernel/ftrace.c > > > @@ -983,6 +983,9 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, > > > unsigned long return_hooker = (unsigned long) > > > &return_to_handler; > > > > > > + if (__builtin_return_address(0) < TASK_SIZE_MAX) > > > + return; > > > + > > > if (unlikely(ftrace_graph_is_dead())) > > > return; > > > --------------- > > > > > > I'm not sure what the best fix should really be. A few ideas off the > > > top of my head: > > > > > > - A real mode check similar to the above (except it should probably be > > > more precise) > > > > The real mode check hack may be good enough for now. Make sure that > > it's commented well. > > Agreed. Just to clarify, there are two bugs related to function graph tracing and suspend/resume. The original patch in this thread (which removes '-Os' from the acpi Makefile) is still needed.
On Mon, 27 Mar 2017 16:53:09 +0200 Arnd Bergmann <arnd@arndb.de> wrote: > > Actually, I believe that "%zd" will work. It's made to work with size_t > > which is long long on 32 and long on 64. > > size_t is always 'long', not 'long long'. We have %pad for dma_addr_t > which may be 'long' or 'long long', but it is configuration dependent > which one it is on 32-bit. Ah your right. It was that it was defined as "int" on 32 and "long" on 64, and that caused problems with warnings when using "%d" when it was defined as long. > > We could probably introduce a %pts format string for timespec64 > and have that pretty-printed. Hmm, probably don't want a %p as that suggests its a pointer, which it should not be. Unless we pass in the address of the number. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Mar 27, 2017 at 5:30 PM, Steven Rostedt <rostedt@goodmis.org> wrote: > On Mon, 27 Mar 2017 16:53:09 +0200 >> We could probably introduce a %pts format string for timespec64 >> and have that pretty-printed. > > Hmm, probably don't want a %p as that suggests its a pointer, which it > should not be. Unless we pass in the address of the number. The special format strings that the kernel defines all start with %p and require passing by reference so we don't get a warning from gcc. We can't just make up new format strings otherwise, but we can create new meaning for special pointers as we do for struct resource and others. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 27 Mar 2017 17:35:13 +0200 Arnd Bergmann <arnd@arndb.de> wrote: > On Mon, Mar 27, 2017 at 5:30 PM, Steven Rostedt <rostedt@goodmis.org> wrote: > > On Mon, 27 Mar 2017 16:53:09 +0200 > >> We could probably introduce a %pts format string for timespec64 > >> and have that pretty-printed. > > > > Hmm, probably don't want a %p as that suggests its a pointer, which it > > should not be. Unless we pass in the address of the number. > > The special format strings that the kernel defines all start with %p and > require passing by reference so we don't get a warning from gcc. We can't > just make up new format strings otherwise, but we can create new meaning > for special pointers as we do for struct resource and others. > That's fine, but we need to be careful when it comes to tracing. Passing in the address of a structure in the ring buffer may be fine, but we need to make sure that an address pointing to something other than the ring buffer is forbidden. I'll need to update libtraceevent to handle such cases too. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Monday, March 27, 2017 09:08:43 AM Josh Poimboeuf wrote: > On Sat, Mar 25, 2017 at 02:20:11PM +0100, Rafael J. Wysocki wrote: > > On Friday, March 24, 2017 02:41:14 PM Steven Rostedt wrote: > > > On Fri, 24 Mar 2017 13:12:54 -0500 > > > Josh Poimboeuf <jpoimboe@redhat.com> wrote: > > > > > > > > > > Instead I was able to "fix" it by ignoring ftrace calls in real mode: > > > > > > > > ----- > > > > index 8f3d9cf..5c0d0c6 100644 > > > > --- a/arch/x86/kernel/ftrace.c > > > > +++ b/arch/x86/kernel/ftrace.c > > > > @@ -983,6 +983,9 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, > > > > unsigned long return_hooker = (unsigned long) > > > > &return_to_handler; > > > > > > > > + if (__builtin_return_address(0) < TASK_SIZE_MAX) > > > > + return; > > > > + > > > > if (unlikely(ftrace_graph_is_dead())) > > > > return; > > > > --------------- > > > > > > > > I'm not sure what the best fix should really be. A few ideas off the > > > > top of my head: > > > > > > > > - A real mode check similar to the above (except it should probably be > > > > more precise) > > > > > > The real mode check hack may be good enough for now. Make sure that > > > it's commented well. > > > > Agreed. > > Just to clarify, there are two bugs related to function graph tracing > and suspend/resume. The original patch in this thread (which removes > '-Os' from the acpi Makefile) is still needed. OK Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -983,6 +983,9 @@ void prepare_ftrace_return(unsigned long self_addr, unsigned long *parent, unsigned long return_hooker = (unsigned long) &return_to_handler; + if (__builtin_return_address(0) < TASK_SIZE_MAX) + return; + if (unlikely(ftrace_graph_is_dead())) return; ---------------