diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-07-25 04:45:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-25 13:53:27 -0400 |
commit | 58340a07c194e0aed7bc58b61ff24330bb2a409f (patch) | |
tree | 907a53c71b3092e3a3a95c6641d4839e20214efd /arch | |
parent | e0ce0da9fefcc723dc006c35a7f91a32750abd40 (diff) |
introduce HAVE_EFFICIENT_UNALIGNED_ACCESS Kconfig symbol
In many cases, especially in networking, it can be beneficial to know at
compile time whether the architecture can do unaligned accesses efficiently.
This patch introduces a new Kconfig symbol
HAVE_EFFICIENT_UNALIGNED_ACCESS
for that purpose and adds it to the powerpc and x86 architectures. Also add
some documentation about alignment and networking, and especially one intended
use of this symbol.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Ingo Molnar <mingo@elte.hu> [x86 architecture part]
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/Kconfig | 19 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/Kconfig | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 6093c0be58b0..b0fabfa864ff 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -27,6 +27,25 @@ config KPROBES | |||
27 | for kernel debugging, non-intrusive instrumentation and testing. | 27 | for kernel debugging, non-intrusive instrumentation and testing. |
28 | If in doubt, say "N". | 28 | If in doubt, say "N". |
29 | 29 | ||
30 | config HAVE_EFFICIENT_UNALIGNED_ACCESS | ||
31 | def_bool n | ||
32 | help | ||
33 | Some architectures are unable to perform unaligned accesses | ||
34 | without the use of get_unaligned/put_unaligned. Others are | ||
35 | unable to perform such accesses efficiently (e.g. trap on | ||
36 | unaligned access and require fixing it up in the exception | ||
37 | handler.) | ||
38 | |||
39 | This symbol should be selected by an architecture if it can | ||
40 | perform unaligned accesses efficiently to allow different | ||
41 | code paths to be selected for these cases. Some network | ||
42 | drivers, for example, could opt to not fix up alignment | ||
43 | problems with received packets if doing so would not help | ||
44 | much. | ||
45 | |||
46 | See Documentation/unaligned-memory-access.txt for more | ||
47 | information on the topic of unaligned memory accesses. | ||
48 | |||
30 | config KRETPROBES | 49 | config KRETPROBES |
31 | def_bool y | 50 | def_bool y |
32 | depends on KPROBES && HAVE_KRETPROBES | 51 | depends on KPROBES && HAVE_KRETPROBES |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index a487671c282f..de6b49cd6be8 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -112,6 +112,7 @@ config PPC | |||
112 | select HAVE_FTRACE | 112 | select HAVE_FTRACE |
113 | select HAVE_IDE | 113 | select HAVE_IDE |
114 | select HAVE_IOREMAP_PROT | 114 | select HAVE_IOREMAP_PROT |
115 | select HAVE_EFFICIENT_UNALIGNED_ACCESS | ||
115 | select HAVE_KPROBES | 116 | select HAVE_KPROBES |
116 | select HAVE_ARCH_KGDB | 117 | select HAVE_ARCH_KGDB |
117 | select HAVE_KRETPROBES | 118 | select HAVE_KRETPROBES |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b2ddfcf01728..66f3ab05b18c 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -28,6 +28,7 @@ config X86 | |||
28 | select HAVE_FTRACE | 28 | select HAVE_FTRACE |
29 | select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) | 29 | select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) |
30 | select HAVE_ARCH_KGDB if !X86_VOYAGER | 30 | select HAVE_ARCH_KGDB if !X86_VOYAGER |
31 | select HAVE_EFFICIENT_UNALIGNED_ACCESS | ||
31 | 32 | ||
32 | config ARCH_DEFCONFIG | 33 | config ARCH_DEFCONFIG |
33 | string | 34 | string |