diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-23 22:05:11 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-23 22:05:11 -0400 |
| commit | d6542d76ec88dde3305b06c03952d87b15bbc292 (patch) | |
| tree | 4510f1b1bef283f22e168bbfd5933983c991fe78 /arch/tile | |
| parent | 3ec438afed6f166f1774b3e95b9a65e3b6da5f2c (diff) | |
| parent | bdf03e59f8c136f709dd44987ad21f6ce19dc98c (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
Diffstat (limited to 'arch/tile')
| -rw-r--r-- | arch/tile/Kconfig | 71 | ||||
| -rw-r--r-- | arch/tile/configs/tilegx_defconfig | 1 | ||||
| -rw-r--r-- | arch/tile/configs/tilepro_defconfig | 1 | ||||
| -rw-r--r-- | arch/tile/gxio/mpipe.c | 2 | ||||
| -rw-r--r-- | arch/tile/include/asm/atomic_64.h | 17 | ||||
| -rw-r--r-- | arch/tile/kernel/pci_gx.c | 4 | ||||
| -rw-r--r-- | arch/tile/kernel/unaligned.c | 4 |
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 | ||
| 4 | config TILE | 4 | config 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 | ||
| 50 | config MMU | 39 | config 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. |
| 133 | config TILEGX | 122 | config 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 | ||
| 147 | config TILEPRO | 136 | config 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 | |||
| 89 | CONFIG_TCP_CONG_ILLINOIS=m | 89 | CONFIG_TCP_CONG_ILLINOIS=m |
| 90 | CONFIG_TCP_MD5SIG=y | 90 | CONFIG_TCP_MD5SIG=y |
| 91 | CONFIG_IPV6=y | 91 | CONFIG_IPV6=y |
| 92 | CONFIG_IPV6_PRIVACY=y | ||
| 93 | CONFIG_IPV6_ROUTER_PREF=y | 92 | CONFIG_IPV6_ROUTER_PREF=y |
| 94 | CONFIG_IPV6_ROUTE_INFO=y | 93 | CONFIG_IPV6_ROUTE_INFO=y |
| 95 | CONFIG_IPV6_OPTIMISTIC_DAD=y | 94 | CONFIG_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 | |||
| 85 | CONFIG_TCP_CONG_ILLINOIS=m | 85 | CONFIG_TCP_CONG_ILLINOIS=m |
| 86 | CONFIG_TCP_MD5SIG=y | 86 | CONFIG_TCP_MD5SIG=y |
| 87 | CONFIG_IPV6=y | 87 | CONFIG_IPV6=y |
| 88 | CONFIG_IPV6_PRIVACY=y | ||
| 89 | CONFIG_IPV6_ROUTER_PREF=y | 88 | CONFIG_IPV6_ROUTER_PREF=y |
| 90 | CONFIG_IPV6_ROUTE_INFO=y | 89 | CONFIG_IPV6_ROUTE_INFO=y |
| 91 | CONFIG_IPV6_OPTIMISTIC_DAD=y | 90 | CONFIG_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 | */ | ||
| 40 | static inline int atomic_add_return(int i, atomic_t *v) | 53 | static 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.*/ |
