diff options
-rw-r--r-- | arch/Kconfig | 3 | ||||
-rw-r--r-- | arch/x86/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/Kconfig.cpu | 3 | ||||
-rw-r--r-- | arch/x86/um/Kconfig | 4 | ||||
-rw-r--r-- | mm/slub.c | 9 |
5 files changed, 10 insertions, 10 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 22182a8cc62c..4f55c736be11 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -196,4 +196,7 @@ config HAVE_ALIGNED_STRUCT_PAGE | |||
196 | config HAVE_CMPXCHG_LOCAL | 196 | config HAVE_CMPXCHG_LOCAL |
197 | bool | 197 | bool |
198 | 198 | ||
199 | config HAVE_CMPXCHG_DOUBLE | ||
200 | bool | ||
201 | |||
199 | source "kernel/gcov/Kconfig" | 202 | source "kernel/gcov/Kconfig" |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 59717fd17bc7..6c14ecd851d0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -62,6 +62,7 @@ config X86 | |||
62 | select ANON_INODES | 62 | select ANON_INODES |
63 | select HAVE_ALIGNED_STRUCT_PAGE if SLUB && !M386 | 63 | select HAVE_ALIGNED_STRUCT_PAGE if SLUB && !M386 |
64 | select HAVE_CMPXCHG_LOCAL if !M386 | 64 | select HAVE_CMPXCHG_LOCAL if !M386 |
65 | select HAVE_CMPXCHG_DOUBLE | ||
65 | select HAVE_ARCH_KMEMCHECK | 66 | select HAVE_ARCH_KMEMCHECK |
66 | select HAVE_USER_RETURN_NOTIFIER | 67 | select HAVE_USER_RETURN_NOTIFIER |
67 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE | 68 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE |
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu index 99d2ab8b7795..3c57033e2211 100644 --- a/arch/x86/Kconfig.cpu +++ b/arch/x86/Kconfig.cpu | |||
@@ -309,9 +309,6 @@ config X86_INTERNODE_CACHE_SHIFT | |||
309 | config X86_CMPXCHG | 309 | config X86_CMPXCHG |
310 | def_bool X86_64 || (X86_32 && !M386) | 310 | def_bool X86_64 || (X86_32 && !M386) |
311 | 311 | ||
312 | config CMPXCHG_DOUBLE | ||
313 | def_bool y | ||
314 | |||
315 | config X86_L1_CACHE_SHIFT | 312 | config X86_L1_CACHE_SHIFT |
316 | int | 313 | int |
317 | default "7" if MPENTIUM4 || MPSC | 314 | default "7" if MPENTIUM4 || MPSC |
diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig index a62bfc66239e..b2b54d2edf53 100644 --- a/arch/x86/um/Kconfig +++ b/arch/x86/um/Kconfig | |||
@@ -6,10 +6,6 @@ menu "UML-specific options" | |||
6 | 6 | ||
7 | menu "Host processor type and features" | 7 | menu "Host processor type and features" |
8 | 8 | ||
9 | config CMPXCHG_DOUBLE | ||
10 | bool | ||
11 | default n | ||
12 | |||
13 | source "arch/x86/Kconfig.cpu" | 9 | source "arch/x86/Kconfig.cpu" |
14 | 10 | ||
15 | endmenu | 11 | endmenu |
@@ -366,7 +366,8 @@ static inline bool __cmpxchg_double_slab(struct kmem_cache *s, struct page *page | |||
366 | const char *n) | 366 | const char *n) |
367 | { | 367 | { |
368 | VM_BUG_ON(!irqs_disabled()); | 368 | VM_BUG_ON(!irqs_disabled()); |
369 | #if defined(CONFIG_CMPXCHG_DOUBLE) && defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | 369 | #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \ |
370 | defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | ||
370 | if (s->flags & __CMPXCHG_DOUBLE) { | 371 | if (s->flags & __CMPXCHG_DOUBLE) { |
371 | if (cmpxchg_double(&page->freelist, &page->counters, | 372 | if (cmpxchg_double(&page->freelist, &page->counters, |
372 | freelist_old, counters_old, | 373 | freelist_old, counters_old, |
@@ -400,7 +401,8 @@ static inline bool cmpxchg_double_slab(struct kmem_cache *s, struct page *page, | |||
400 | void *freelist_new, unsigned long counters_new, | 401 | void *freelist_new, unsigned long counters_new, |
401 | const char *n) | 402 | const char *n) |
402 | { | 403 | { |
403 | #if defined(CONFIG_CMPXCHG_DOUBLE) && defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | 404 | #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \ |
405 | defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | ||
404 | if (s->flags & __CMPXCHG_DOUBLE) { | 406 | if (s->flags & __CMPXCHG_DOUBLE) { |
405 | if (cmpxchg_double(&page->freelist, &page->counters, | 407 | if (cmpxchg_double(&page->freelist, &page->counters, |
406 | freelist_old, counters_old, | 408 | freelist_old, counters_old, |
@@ -3014,7 +3016,8 @@ static int kmem_cache_open(struct kmem_cache *s, | |||
3014 | } | 3016 | } |
3015 | } | 3017 | } |
3016 | 3018 | ||
3017 | #if defined(CONFIG_CMPXCHG_DOUBLE) && defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | 3019 | #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \ |
3020 | defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) | ||
3018 | if (system_has_cmpxchg_double() && (s->flags & SLAB_DEBUG_FLAGS) == 0) | 3021 | if (system_has_cmpxchg_double() && (s->flags & SLAB_DEBUG_FLAGS) == 0) |
3019 | /* Enable fast mode */ | 3022 | /* Enable fast mode */ |
3020 | s->flags |= __CMPXCHG_DOUBLE; | 3023 | s->flags |= __CMPXCHG_DOUBLE; |