From: Jason Baron <jbaron@akamai.com>
To: David Daney <ddaney@caviumnetworks.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sachin Sant <sachinp@linux.vnet.ibm.com>
Cc: linux-mips@linux-mips.org, Ralf Baechle <ralf@linux-mips.org>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
Ingo Molnar <mingo@kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Anton Blanchard <anton@samba.org>, Rabin Vincent <rabin@rab.in>,
Russell King <linux@armlinux.org.uk>,
Chris Metcalf <cmetcalf@mellanox.com>,
Zhigang Lu <zlu@ezchip.com>
Subject: Re: [PATCH] jump_label: align jump_entry table to at least 4-bytes
Date: Mon, 27 Feb 2017 17:50:25 -0500 [thread overview]
Message-ID: <68fe24ea-7795-24d8-211b-9d8a50affe9f@akamai.com> (raw)
In-Reply-To: <7bd72716-feea-073f-741c-04212ebd0802@caviumnetworks.com>
[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]
On 02/27/2017 05:45 PM, David Daney wrote:
> On 02/27/2017 02:36 PM, Steven Rostedt wrote:
>> On Mon, 27 Feb 2017 14:21:21 -0800
>> David Daney <ddaney@caviumnetworks.com> wrote:
>>
>>> See attached for mips. It seems to do the right thing.
>>>
>>> I leave it as an exercise to the reader to fix the other architectures.
>>>
>>> Consult your own binutils experts to verify that what I say is true.
>>
>> It may still just be safer to do the pointers instead. That way we
>> don't need to worry about some strange arch or off by one binutils
>> messing it up.
>
> Obviously it is your choice, but this is bog standard ELF linking. In
> theory even the arrays of power-of-2 sized objects should also supply an
> entity size. Think __ex_table and its ilk.
>
>
> The benefit of supplying an entsize is that you don't have to change the
> structure of the existing code and risk breaking something in the process.
>
> David Daney
>
>
Thanks for the suggestion! I would like to see if this resolves the ppc
issue we had. I'm attaching a powerpc patch based on your suggestion.
Hopefully, Sachin can try it.
Thanks,
-Jason
[-- Attachment #2: ppc-pack.patch --]
[-- Type: text/x-patch, Size: 1975 bytes --]
diff --git a/arch/powerpc/include/asm/jump_label.h b/arch/powerpc/include/asm/jump_label.h
index 9a287e0ac8b1..3c5660e50f9a 100644
--- a/arch/powerpc/include/asm/jump_label.h
+++ b/arch/powerpc/include/asm/jump_label.h
@@ -19,14 +19,26 @@
#define JUMP_ENTRY_TYPE stringify_in_c(FTR_ENTRY_LONG)
#define JUMP_LABEL_NOP_SIZE 4
+#ifdef CONFIG_PPC64
+typedef u64 jump_label_t;
+#else
+typedef u32 jump_label_t;
+#endif
+
+struct jump_entry {
+ jump_label_t code;
+ jump_label_t target;
+ jump_label_t key;
+};
+
static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
{
asm_volatile_goto("1:\n\t"
"nop # arch_static_branch\n\t"
- ".pushsection __jump_table, \"aw\"\n\t"
+ ".pushsection __jump_table, \"awM\",@progbits, %1\n\t"
JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t"
".popsection \n\t"
- : : "i" (&((char *)key)[branch]) : : l_yes);
+ : : "i" (&((char *)key)[branch]), "i" (sizeof(struct jump_entry)) : : l_yes);
return false;
l_yes:
@@ -37,32 +49,24 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
{
asm_volatile_goto("1:\n\t"
"b %l[l_yes] # arch_static_branch_jump\n\t"
- ".pushsection __jump_table, \"aw\"\n\t"
+ ".pushsection __jump_table, \"awM\",@progbits, %1\n\t"
JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t"
".popsection \n\t"
- : : "i" (&((char *)key)[branch]) : : l_yes);
+ : : "i" (&((char *)key)[branch]), "i" (sizeof(struct jump_entry)) : : l_yes);
return false;
l_yes:
return true;
}
-#ifdef CONFIG_PPC64
-typedef u64 jump_label_t;
+
#else
-typedef u32 jump_label_t;
-#endif
-struct jump_entry {
- jump_label_t code;
- jump_label_t target;
- jump_label_t key;
-};
+#define ENTRY_SIZE (ULONG_SIZE * 3)
-#else
#define ARCH_STATIC_BRANCH(LABEL, KEY) \
1098: nop; \
- .pushsection __jump_table, "aw"; \
+ .pushsection __jump_table, "awM",@progbits,ENTRY_SIZE; \
FTR_ENTRY_LONG 1098b, LABEL, KEY; \
.popsection
#endif
next prev parent reply other threads:[~2017-02-27 23:00 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-27 18:49 [PATCH] jump_label: align jump_entry table to at least 4-bytes Jason Baron
2017-02-27 18:57 ` David Daney
2017-02-27 19:18 ` Jason Baron
2017-02-27 19:59 ` David Daney
2017-02-27 21:06 ` Steven Rostedt
2017-02-27 21:41 ` David Daney
2017-02-27 22:09 ` Steven Rostedt
2017-02-27 22:21 ` David Daney
2017-02-27 22:36 ` Steven Rostedt
2017-02-27 22:45 ` David Daney
2017-02-27 22:50 ` Jason Baron [this message]
2017-02-27 23:34 ` David Daney
2017-02-28 4:55 ` Sachin Sant
2017-02-28 16:21 ` Steven Rostedt
2017-02-28 18:16 ` David Daney
2017-02-28 18:39 ` Jason Baron
2017-02-28 19:05 ` David Daney
2017-02-28 19:22 ` David Daney
2017-02-28 19:34 ` Jason Baron
2017-02-28 20:15 ` David Daney
2017-02-28 22:41 ` Jason Baron
2017-03-01 6:34 ` Michael Ellerman
2017-03-01 16:40 ` David Daney
2017-03-01 20:02 ` Jason Baron
2017-03-01 21:12 ` David Daney
2017-03-01 7:12 ` Sachin Sant
2017-02-27 22:58 ` Steven Rostedt
2017-03-06 2:16 ` [PATCH] MIPS: jump_lable: Give __jump_table elements an entsize kbuild test robot
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=68fe24ea-7795-24d8-211b-9d8a50affe9f@akamai.com \
--to=jbaron@akamai.com \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=cmetcalf@mellanox.com \
--cc=ddaney@caviumnetworks.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=rabin@rab.in \
--cc=ralf@linux-mips.org \
--cc=rostedt@goodmis.org \
--cc=sachinp@linux.vnet.ibm.com \
--cc=zlu@ezchip.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox