From: Josh Poimboeuf <jpoimboe@redhat.com> To: Peter Zijlstra <peterz@infradead.org> Cc: torvalds@linux-foundation.org, tglx@linutronix.de, hpa@zytor.com, julien.thierry@arm.com, will.deacon@arm.com, luto@amacapital.net, mingo@kernel.org, catalin.marinas@arm.com, james.morse@arm.com, valentin.schneider@arm.com, brgerst@gmail.com, luto@kernel.org, bp@alien8.de, dvlasenk@redhat.com, linux-kernel@vger.kernel.org, dvyukov@google.com, rostedt@goodmis.org Subject: Re: [PATCH 00/20] objtool: UACCESS validation v3 Date: Thu, 7 Mar 2019 11:48:02 -0600 Message-ID: <20190307174802.46fmpysxyo35hh43@treble> (raw) In-Reply-To: <20190307174322.GK32477@hirez.programming.kicks-ass.net> On Thu, Mar 07, 2019 at 06:43:22PM +0100, Peter Zijlstra wrote: > On Thu, Mar 07, 2019 at 10:47:05AM -0600, Josh Poimboeuf wrote: > > > This "fixes" it, and also seems to help -Os make much code: > > > > diff --git a/include/linux/compiler.h b/include/linux/compiler.h > > index 445348facea9..8de63db58fdd 100644 > > --- a/include/linux/compiler.h > > +++ b/include/linux/compiler.h > > @@ -67,7 +67,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, > > .line = __LINE__, \ > > }; \ > > ______r = !!(cond); \ > > - ______f.miss_hit[______r]++; \ > > + if (______r) ______f.miss_hit[1]++; else ______f.miss_hit[0]++; \ > > ______r; \ > > })) > > #endif /* CONFIG_PROFILE_ALL_BRANCHES */ > > Excellen; let me put the kids to bed and then I'll have a poke. Here's a proper patch. From: Josh Poimboeuf <jpoimboe@redhat.com> Subject: [PATCH] tracing: Improve "if" macro code generation With CONFIG_PROFILE_ALL_BRANCHES, the "if" macro converts the conditional to an array index. This can cause GCC to create horrible code. When there are nested ifs, the generated code uses register values to encode branching decisions. Make it easier for GCC to optimize by keeping the conditional as a conditional rather than converting it to an integer. This shrinks the generated code quite a bit, and also makes the code sane enough for objtool to understand. Reported-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> --- include/linux/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 445348facea9..d58aa0db05f9 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -67,7 +67,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, .line = __LINE__, \ }; \ ______r = !!(cond); \ - ______f.miss_hit[______r]++; \ + ______r ? ______f.miss_hit[1]++ : ______f.miss_hit[0]++;\ ______r; \ })) #endif /* CONFIG_PROFILE_ALL_BRANCHES */ -- 2.17.2
next prev parent reply index Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-07 11:45 Peter Zijlstra 2019-03-07 11:45 ` [PATCH 01/20] x86/ia32: Fix ia32_restore_sigcontext AC leak Peter Zijlstra 2019-03-07 11:45 ` [PATCH 02/20] i915,uaccess: Fix redundant CLAC Peter Zijlstra 2019-03-07 11:45 ` [PATCH 03/20] x86/uaccess: Move copy_user_handle_tail into asm Peter Zijlstra 2019-03-08 18:53 ` Josh Poimboeuf 2019-03-08 19:48 ` Peter Zijlstra 2019-03-08 19:53 ` Josh Poimboeuf 2019-03-10 13:22 ` Peter Zijlstra 2019-03-07 11:45 ` [PATCH 04/20] x86/uaccess: Fix up the fixup Peter Zijlstra 2019-03-07 11:45 ` [PATCH 05/20] x86/uaccess/xen: Suppress SMAP warnings Peter Zijlstra 2019-03-07 12:22 ` Juergen Gross 2019-03-07 12:32 ` Peter Zijlstra 2019-03-07 12:36 ` Juergen Gross 2019-03-08 19:00 ` Josh Poimboeuf 2019-03-08 19:03 ` Josh Poimboeuf 2019-03-10 13:19 ` Peter Zijlstra 2019-03-11 17:59 ` Josh Poimboeuf 2019-03-08 19:50 ` Peter Zijlstra 2019-03-07 11:45 ` [PATCH 06/20] x86/uaccess: Always inline user_access_begin() Peter Zijlstra 2019-03-07 11:45 ` [PATCH 07/20] x86/uaccess: Always inline force_valid_ss() Peter Zijlstra 2019-03-07 13:50 ` Peter Zijlstra 2019-03-07 18:05 ` Andy Lutomirski 2019-03-07 18:59 ` Peter Zijlstra 2019-03-07 19:06 ` Andy Lutomirski 2019-03-07 11:45 ` [PATCH 08/20] x86/uaccess: Introduce user_access_{save,restore}() Peter Zijlstra 2019-03-07 11:45 ` [PATCH 09/20] x86/uaccess,kasan: Fix KASAN vs SMAP Peter Zijlstra 2019-03-07 11:45 ` [PATCH 10/20] x86/uaccess,ubsan: Fix UBSAN " Peter Zijlstra 2019-03-07 11:45 ` [PATCH 11/20] x86/uaccess,ftrace: Fix ftrace_likely_update() " Peter Zijlstra 2019-03-07 11:45 ` [PATCH 12/20] objtool: Set insn->func for alternatives Peter Zijlstra 2019-03-08 19:16 ` Josh Poimboeuf 2019-03-08 19:51 ` Peter Zijlstra 2019-03-07 11:45 ` [PATCH 13/20] objtool: Hande function aliases Peter Zijlstra 2019-03-08 19:23 ` Josh Poimboeuf 2019-03-08 19:52 ` Peter Zijlstra 2019-03-08 20:00 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 14/20] objtool: Rewrite add_ignores() Peter Zijlstra 2019-03-08 19:29 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 15/20] objtool: Add --backtrace support Peter Zijlstra 2019-03-08 19:33 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 16/20] objtool: Rewrite alt->skip_orig Peter Zijlstra 2019-03-08 20:15 ` Josh Poimboeuf 2019-03-08 21:34 ` Peter Zijlstra 2019-03-08 22:27 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 17/20] objtool: Fix sibling call detection Peter Zijlstra 2019-03-08 20:22 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 18/20] objtool: Add UACCESS validation Peter Zijlstra 2019-03-07 16:33 ` Linus Torvalds 2019-03-07 17:10 ` hpa 2019-03-07 17:41 ` Peter Zijlstra 2019-03-07 17:54 ` Linus Torvalds 2019-03-07 18:48 ` Peter Zijlstra 2019-03-07 18:51 ` hpa 2019-03-07 19:03 ` Peter Zijlstra 2019-03-08 15:01 ` Josh Poimboeuf 2019-03-08 15:07 ` Peter Zijlstra 2019-03-07 20:23 ` Peter Zijlstra 2019-03-07 20:40 ` Peter Zijlstra 2019-03-08 15:07 ` Josh Poimboeuf 2019-03-08 15:23 ` Peter Zijlstra 2019-03-07 20:15 ` Andrey Ryabinin 2019-03-07 20:33 ` Peter Zijlstra 2019-03-07 20:40 ` Andrey Ryabinin 2019-03-07 20:42 ` Peter Zijlstra 2019-03-08 21:02 ` Josh Poimboeuf 2019-03-08 21:31 ` Peter Zijlstra 2019-03-08 21:54 ` Josh Poimboeuf 2019-03-10 13:10 ` Peter Zijlstra 2019-03-11 18:01 ` Josh Poimboeuf 2019-03-07 11:45 ` [PATCH 19/20] objtool: uaccess PUSHF/POPF support Peter Zijlstra 2019-03-08 21:11 ` Josh Poimboeuf 2019-03-10 13:12 ` Peter Zijlstra 2019-03-07 11:45 ` [PATCH 20/20] objtool: Add Direction Flag validation Peter Zijlstra 2019-03-08 21:16 ` Josh Poimboeuf 2019-03-08 21:33 ` Peter Zijlstra 2019-03-08 21:56 ` Josh Poimboeuf 2019-03-10 13:13 ` Peter Zijlstra 2019-03-11 18:00 ` Josh Poimboeuf 2019-03-07 12:03 ` [PATCH 00/20] objtool: UACCESS validation v3 Peter Zijlstra 2019-03-07 12:55 ` Peter Zijlstra 2019-03-07 13:13 ` Peter Zijlstra 2019-03-07 16:47 ` Josh Poimboeuf 2019-03-07 16:50 ` Josh Poimboeuf 2019-03-07 17:00 ` Linus Torvalds 2019-03-07 17:17 ` Josh Poimboeuf 2019-03-07 17:38 ` Peter Zijlstra 2019-03-07 17:45 ` Linus Torvalds 2019-03-07 18:18 ` Steven Rostedt 2019-03-10 13:16 ` Peter Zijlstra 2019-04-19 10:08 ` [PATCH] compiler.h, tracing: Remove CONFIG_PROFILE_ALL_BRANCHES Ingo Molnar 2019-04-19 13:04 ` Steven Rostedt 2019-03-07 17:04 ` [PATCH 00/20] objtool: UACCESS validation v3 hpa 2019-03-07 17:18 ` Josh Poimboeuf 2019-03-07 17:29 ` hpa 2019-03-07 17:45 ` Josh Poimboeuf 2019-03-07 17:48 ` Linus Torvalds 2019-03-07 17:43 ` Peter Zijlstra 2019-03-07 17:48 ` Josh Poimboeuf [this message] 2019-04-03 8:21 ` [tip:core/objtool] tracing: Improve "if" macro code generation tip-bot for Josh Poimboeuf 2019-03-07 16:31 ` [PATCH 00/20] objtool: UACCESS validation v3 Linus Torvalds 2019-03-07 17:14 ` hpa
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190307174802.46fmpysxyo35hh43@treble \ --to=jpoimboe@redhat.com \ --cc=bp@alien8.de \ --cc=brgerst@gmail.com \ --cc=catalin.marinas@arm.com \ --cc=dvlasenk@redhat.com \ --cc=dvyukov@google.com \ --cc=hpa@zytor.com \ --cc=james.morse@arm.com \ --cc=julien.thierry@arm.com \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@amacapital.net \ --cc=luto@kernel.org \ --cc=mingo@kernel.org \ --cc=peterz@infradead.org \ --cc=rostedt@goodmis.org \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=valentin.schneider@arm.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ linux-kernel@vger.kernel.org public-inbox-index lkml Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git