summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-05-23 22:05:11 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-23 22:05:11 -0400
commitd6542d76ec88dde3305b06c03952d87b15bbc292 (patch)
tree4510f1b1bef283f22e168bbfd5933983c991fe78
parent3ec438afed6f166f1774b3e95b9a65e3b6da5f2c (diff)
parentbdf03e59f8c136f709dd44987ad21f6ce19dc98c (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
Pull arch/tile updates from Chris Metcalf: "This is an even quieter cycle than usual" * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: Fix typo Fix typo Fix typo tile: sort the "select" lines in the TILE/TILEGX configs tile: clarify barrier semantics of atomic_add_return tile/defconfigs: Remove CONFIG_IPV6_PRIVACY
-rw-r--r--arch/tile/Kconfig71
-rw-r--r--arch/tile/configs/tilegx_defconfig1
-rw-r--r--arch/tile/configs/tilepro_defconfig1
-rw-r--r--arch/tile/gxio/mpipe.c2
-rw-r--r--arch/tile/include/asm/atomic_64.h17
-rw-r--r--arch/tile/kernel/pci_gx.c4
-rw-r--r--arch/tile/kernel/unaligned.c4
7 files changed, 50 insertions, 50 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 76989b878f3c..4820a02838ac 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -3,49 +3,38 @@
3 3
4config TILE 4config TILE
5 def_bool y 5 def_bool y
6 select HAVE_EXIT_THREAD 6 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
7 select HAVE_PERF_EVENTS
8 select USE_PMC if PERF_EVENTS
9 select HAVE_DMA_API_DEBUG
10 select HAVE_KVM if !TILEGX
11 select GENERIC_FIND_FIRST_BIT
12 select SYSCTL_EXCEPTION_TRACE
13 select CC_OPTIMIZE_FOR_SIZE
14 select HAVE_DEBUG_KMEMLEAK
15 select GENERIC_IRQ_PROBE
16 select GENERIC_PENDING_IRQ if SMP
17 select GENERIC_IRQ_SHOW
18 select HAVE_DEBUG_BUGVERBOSE
19 select VIRT_TO_BUS
20 select SYS_HYPERVISOR
21 select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS 7 select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
22 select ARCH_HAS_DEVMEM_IS_ALLOWED 8 select ARCH_HAS_DEVMEM_IS_ALLOWED
23 select ARCH_HAVE_NMI_SAFE_CMPXCHG 9 select ARCH_HAVE_NMI_SAFE_CMPXCHG
24 select GENERIC_CLOCKEVENTS
25 select MODULES_USE_ELF_RELA
26 select HAVE_ARCH_TRACEHOOK
27 select HAVE_SYSCALL_TRACEPOINTS
28 select USER_STACKTRACE_SUPPORT
29 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
30 select HAVE_DEBUG_STACKOVERFLOW
31 select ARCH_WANT_FRAME_POINTERS 10 select ARCH_WANT_FRAME_POINTERS
32 select HAVE_CONTEXT_TRACKING 11 select CC_OPTIMIZE_FOR_SIZE
33 select HAVE_NMI if USE_PMC
34 select EDAC_SUPPORT 12 select EDAC_SUPPORT
13 select GENERIC_CLOCKEVENTS
14 select GENERIC_FIND_FIRST_BIT
15 select GENERIC_IRQ_PROBE
16 select GENERIC_IRQ_SHOW
17 select GENERIC_PENDING_IRQ if SMP
35 select GENERIC_STRNCPY_FROM_USER 18 select GENERIC_STRNCPY_FROM_USER
36 select GENERIC_STRNLEN_USER 19 select GENERIC_STRNLEN_USER
37 select HAVE_ARCH_SECCOMP_FILTER 20 select HAVE_ARCH_SECCOMP_FILTER
38 21 select HAVE_ARCH_TRACEHOOK
39# FIXME: investigate whether we need/want these options. 22 select HAVE_CONTEXT_TRACKING
40# select HAVE_IOREMAP_PROT 23 select HAVE_DEBUG_BUGVERBOSE
41# select HAVE_OPTPROBES 24 select HAVE_DEBUG_KMEMLEAK
42# select HAVE_REGS_AND_STACK_ACCESS_API 25 select HAVE_DEBUG_STACKOVERFLOW
43# select HAVE_HW_BREAKPOINT 26 select HAVE_DMA_API_DEBUG
44# select PERF_EVENTS 27 select HAVE_EXIT_THREAD
45# select HAVE_USER_RETURN_NOTIFIER 28 select HAVE_KVM if !TILEGX
46# config NO_BOOTMEM 29 select HAVE_NMI if USE_PMC
47# config ARCH_SUPPORTS_DEBUG_PAGEALLOC 30 select HAVE_PERF_EVENTS
48# config HUGETLB_PAGE_SIZE_VARIABLE 31 select HAVE_SYSCALL_TRACEPOINTS
32 select MODULES_USE_ELF_RELA
33 select SYSCTL_EXCEPTION_TRACE
34 select SYS_HYPERVISOR
35 select USER_STACKTRACE_SUPPORT
36 select USE_PMC if PERF_EVENTS
37 select VIRT_TO_BUS
49 38
50config MMU 39config MMU
51 def_bool y 40 def_bool y
@@ -132,17 +121,17 @@ config HVC_TILE
132# 64-bit TILE-Gx toolchain, so force CONFIG_TILEGX on. 121# 64-bit TILE-Gx toolchain, so force CONFIG_TILEGX on.
133config TILEGX 122config TILEGX
134 def_bool ARCH != "tilepro" 123 def_bool ARCH != "tilepro"
135 select SPARSE_IRQ 124 select ARCH_SUPPORTS_ATOMIC_RMW
136 select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ 125 select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
137 select HAVE_FUNCTION_TRACER 126 select HAVE_ARCH_JUMP_LABEL
138 select HAVE_FUNCTION_GRAPH_TRACER 127 select HAVE_ARCH_KGDB
139 select HAVE_DYNAMIC_FTRACE 128 select HAVE_DYNAMIC_FTRACE
140 select HAVE_FTRACE_MCOUNT_RECORD 129 select HAVE_FTRACE_MCOUNT_RECORD
130 select HAVE_FUNCTION_GRAPH_TRACER
131 select HAVE_FUNCTION_TRACER
141 select HAVE_KPROBES 132 select HAVE_KPROBES
142 select HAVE_KRETPROBES 133 select HAVE_KRETPROBES
143 select HAVE_ARCH_KGDB 134 select SPARSE_IRQ
144 select ARCH_SUPPORTS_ATOMIC_RMW
145 select HAVE_ARCH_JUMP_LABEL
146 135
147config TILEPRO 136config TILEPRO
148 def_bool !TILEGX 137 def_bool !TILEGX
diff --git a/arch/tile/configs/tilegx_defconfig b/arch/tile/configs/tilegx_defconfig
index 718905557f7e..dea47c31ab16 100644
--- a/arch/tile/configs/tilegx_defconfig
+++ b/arch/tile/configs/tilegx_defconfig
@@ -89,7 +89,6 @@ CONFIG_TCP_CONG_YEAH=m
89CONFIG_TCP_CONG_ILLINOIS=m 89CONFIG_TCP_CONG_ILLINOIS=m
90CONFIG_TCP_MD5SIG=y 90CONFIG_TCP_MD5SIG=y
91CONFIG_IPV6=y 91CONFIG_IPV6=y
92CONFIG_IPV6_PRIVACY=y
93CONFIG_IPV6_ROUTER_PREF=y 92CONFIG_IPV6_ROUTER_PREF=y
94CONFIG_IPV6_ROUTE_INFO=y 93CONFIG_IPV6_ROUTE_INFO=y
95CONFIG_IPV6_OPTIMISTIC_DAD=y 94CONFIG_IPV6_OPTIMISTIC_DAD=y
diff --git a/arch/tile/configs/tilepro_defconfig b/arch/tile/configs/tilepro_defconfig
index dc85468afd5e..95743eedf747 100644
--- a/arch/tile/configs/tilepro_defconfig
+++ b/arch/tile/configs/tilepro_defconfig
@@ -85,7 +85,6 @@ CONFIG_TCP_CONG_YEAH=m
85CONFIG_TCP_CONG_ILLINOIS=m 85CONFIG_TCP_CONG_ILLINOIS=m
86CONFIG_TCP_MD5SIG=y 86CONFIG_TCP_MD5SIG=y
87CONFIG_IPV6=y 87CONFIG_IPV6=y
88CONFIG_IPV6_PRIVACY=y
89CONFIG_IPV6_ROUTER_PREF=y 88CONFIG_IPV6_ROUTER_PREF=y
90CONFIG_IPV6_ROUTE_INFO=y 89CONFIG_IPV6_ROUTE_INFO=y
91CONFIG_IPV6_OPTIMISTIC_DAD=y 90CONFIG_IPV6_OPTIMISTIC_DAD=y
diff --git a/arch/tile/gxio/mpipe.c b/arch/tile/gxio/mpipe.c
index f102048d9c0e..34de300ab320 100644
--- a/arch/tile/gxio/mpipe.c
+++ b/arch/tile/gxio/mpipe.c
@@ -122,7 +122,7 @@ size_t gxio_mpipe_calc_buffer_stack_bytes(unsigned long buffers)
122{ 122{
123 const int BUFFERS_PER_LINE = 12; 123 const int BUFFERS_PER_LINE = 12;
124 124
125 /* Count the number of cachlines. */ 125 /* Count the number of cachelines. */
126 unsigned long lines = 126 unsigned long lines =
127 (buffers + BUFFERS_PER_LINE - 1) / BUFFERS_PER_LINE; 127 (buffers + BUFFERS_PER_LINE - 1) / BUFFERS_PER_LINE;
128 128
diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h
index 51cabc26e387..b0531a623653 100644
--- a/arch/tile/include/asm/atomic_64.h
+++ b/arch/tile/include/asm/atomic_64.h
@@ -37,12 +37,25 @@ static inline void atomic_add(int i, atomic_t *v)
37 __insn_fetchadd4((void *)&v->counter, i); 37 __insn_fetchadd4((void *)&v->counter, i);
38} 38}
39 39
40/*
41 * Note a subtlety of the locking here. We are required to provide a
42 * full memory barrier before and after the operation. However, we
43 * only provide an explicit mb before the operation. After the
44 * operation, we use barrier() to get a full mb for free, because:
45 *
46 * (1) The barrier directive to the compiler prohibits any instructions
47 * being statically hoisted before the barrier;
48 * (2) the microarchitecture will not issue any further instructions
49 * until the fetchadd result is available for the "+ i" add instruction;
50 * (3) the smb_mb before the fetchadd ensures that no other memory
51 * operations are in flight at this point.
52 */
40static inline int atomic_add_return(int i, atomic_t *v) 53static inline int atomic_add_return(int i, atomic_t *v)
41{ 54{
42 int val; 55 int val;
43 smp_mb(); /* barrier for proper semantics */ 56 smp_mb(); /* barrier for proper semantics */
44 val = __insn_fetchadd4((void *)&v->counter, i) + i; 57 val = __insn_fetchadd4((void *)&v->counter, i) + i;
45 barrier(); /* the "+ i" above will wait on memory */ 58 barrier(); /* equivalent to smp_mb(); see block comment above */
46 return val; 59 return val;
47} 60}
48 61
@@ -95,7 +108,7 @@ static inline long atomic64_add_return(long i, atomic64_t *v)
95 int val; 108 int val;
96 smp_mb(); /* barrier for proper semantics */ 109 smp_mb(); /* barrier for proper semantics */
97 val = __insn_fetchadd((void *)&v->counter, i) + i; 110 val = __insn_fetchadd((void *)&v->counter, i) + i;
98 barrier(); /* the "+ i" above will wait on memory */ 111 barrier(); /* equivalent to smp_mb; see atomic_add_return() */
99 return val; 112 return val;
100} 113}
101 114
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index aa2b44cd8fd3..0e7a5d09e023 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -40,7 +40,7 @@
40#include <arch/sim.h> 40#include <arch/sim.h>
41 41
42/* 42/*
43 * This file containes the routines to search for PCI buses, 43 * This file contains the routines to search for PCI buses,
44 * enumerate the buses, and configure any attached devices. 44 * enumerate the buses, and configure any attached devices.
45 */ 45 */
46 46
@@ -434,7 +434,7 @@ int __init tile_pci_init(void)
434 434
435 /* 435 /*
436 * Now determine which PCIe ports are configured to operate in RC 436 * Now determine which PCIe ports are configured to operate in RC
437 * mode. There is a differece in the port configuration capability 437 * mode. There is a difference in the port configuration capability
438 * between the Gx36 and Gx72 devices. 438 * between the Gx36 and Gx72 devices.
439 * 439 *
440 * The Gx36 has configuration capability for each of the 3 PCIe 440 * The Gx36 has configuration capability for each of the 3 PCIe
diff --git a/arch/tile/kernel/unaligned.c b/arch/tile/kernel/unaligned.c
index 0db5f7c9d9e5..9772a3554282 100644
--- a/arch/tile/kernel/unaligned.c
+++ b/arch/tile/kernel/unaligned.c
@@ -188,7 +188,7 @@ static void find_regs(tilegx_bundle_bits bundle, uint64_t *rd, uint64_t *ra,
188 * Parse fault bundle, find potential used registers and mark 188 * Parse fault bundle, find potential used registers and mark
189 * corresponding bits in reg_map and alias_map. These 2 bit maps 189 * corresponding bits in reg_map and alias_map. These 2 bit maps
190 * are used to find the scratch registers and determine if there 190 * are used to find the scratch registers and determine if there
191 * is register alais. 191 * is register alias.
192 */ 192 */
193 if (bundle & TILEGX_BUNDLE_MODE_MASK) { /* Y Mode Bundle. */ 193 if (bundle & TILEGX_BUNDLE_MODE_MASK) { /* Y Mode Bundle. */
194 194
@@ -1529,7 +1529,7 @@ void do_unaligned(struct pt_regs *regs, int vecnum)
1529 } 1529 }
1530 1530
1531 1531
1532 /* Read the bundle casued the exception! */ 1532 /* Read the bundle caused the exception! */
1533 pc = (tilegx_bundle_bits __user *)(regs->pc); 1533 pc = (tilegx_bundle_bits __user *)(regs->pc);
1534 if (get_user(bundle, pc) != 0) { 1534 if (get_user(bundle, pc) != 0) {
1535 /* Probably never be here since pc is valid user address.*/ 1535 /* Probably never be here since pc is valid user address.*/