On Thu, 15 Jan 2015 17:10:40 +1100 Michael Ellerman <m...@ellerman.id.au> wrote:
> > > > I don't like setting the swap task flag for syscall tracing, as > > nothing will unset it. > > We could unset it in the unregfunc(), I did that in my original patch > but took it out because I wasn't sure it was necessary. Yes we could but that shows the issue with this approach. We can not just use for_each_process_thread(). swapper is special, and we really shouldn't touch it for this special case (cmdline usage). > > Actually I thought it was neat, basically everything else comes from > init_task via copy_process(). Yes, but only at boot up. After that, the swapper is not part of the game. That's why its not part of for_each_process_thread(). > > > Try my patch and let me know if it works for you? > > Sure. It works. > > I can still see the first syscalls in the trace: > > # entries-in-buffer/entries-written: 1021354/1021354 #P:8 > # > # _-----=> irqs-off > # / _----=> need-resched > # | / _---=> hardirq/softirq > # || / _--=> preempt-depth > # ||| / delay > # TASK-PID CPU# |||| TIMESTAMP FUNCTION > # | | | |||| | | > init-1 [000] .... 3.706370: sys_exit: NR -1 = > 0 init-1 [000] .... 3.706394: sys_enter: NR 45 (0, 0, > 3fffa2e20000, 3fffcfd4eac2, 80, 3fffa2e61820) init-1 > [000] .... 3.706395: sys_exit: NR 45 = 70367490932736 init-1 > [000] .... 3.706409: sys_enter: NR 33 (3fffa2e694d0, 0, > 3fffa2e7be20, 0, 1, ffffffffe0000000) init-1 [000] .... > 3.713325: sys_exit: NR 33 = -2 > > I like my version better, but your call. Of course you do :-) I thought about it a bit, and both versions are really hacks. But in the end, I'd rather not touch the swapper task because that might give us some unwanted side effects. I don't really like my approach where I need to disable and re-enable all tracepoints. I was thinking of only enabling and disabling just the syscall ones, but I could imagine another tracepoint with a reg that could be affected by early boot as well, so I left it touching all events. My patch is fine for mainline, but I could make a patch for 3.20 that will only restart a tracepoint if it has its own reg/unreg functions and does not use the default ones. Your patch fixes syscall events. I wanted something that will fix any event with its own special registration that might also use for_each_process_thread() or some other call that does not work before init is created. Thanks, -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/