diff options
| author | Chris Zankel <chris@zankel.net> | 2014-08-18 20:30:24 -0400 |
|---|---|---|
| committer | Chris Zankel <chris@zankel.net> | 2014-08-18 20:30:24 -0400 |
| commit | e792290be763932d1b8cdf8a36d7015482a49d07 (patch) | |
| tree | 2aec72e1556ef099ff9bd535d21d4477e1db9ddb | |
| parent | 7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9 (diff) | |
| parent | 9184289c979e78ce466993b53fc951633441e571 (diff) | |
Merge tag 'xtensa-for-next-20140815' into for_next
Xtensa improvements for 3.17:
- support highmem on cores with aliasing data cache. Enable highmem on kc705
by default;
- simplify addition of new core variants (no need to modify Kconfig /
Makefiles);
- improve robustness of unaligned access handler and its interaction with
window overflow/underflow exception handlers;
- deprecate atomic and spill registers syscalls;
- clean up Kconfig: remove orphan MATH_EMULATION, sort 'select' statements;
- wire up renameat2 syscall.
Various fixes:
- fix address checks in dma_{alloc,free}_coherent (runtime BUG);
- fix access to THREAD_RA/THREAD_SP/THREAD_DS (debug build breakage);
- fix TLBTEMP_BASE_2 region handling in fast_second_level_miss (runtime
unrecoverable exception);
- fix a6 and a7 handling in fast_syscall_xtensa (runtime userspace register
clobbering);
- fix kernel/user jump out of fast_unaligned (potential runtime unrecoverable
exception);
- replace termios IOCTL code definitions with constants (userspace build
breakage).
Signed-off-by: Chris Zankel <chris@zankel.net>
| -rw-r--r-- | arch/xtensa/Kconfig | 92 | ||||
| -rw-r--r-- | arch/xtensa/Makefile | 7 | ||||
| -rw-r--r-- | arch/xtensa/boot/dts/kc705.dts | 5 | ||||
| -rw-r--r-- | arch/xtensa/configs/common_defconfig | 1 | ||||
| -rw-r--r-- | arch/xtensa/configs/iss_defconfig | 3 | ||||
| -rw-r--r-- | arch/xtensa/configs/s6105_defconfig | 1 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/cacheflush.h | 2 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/fixmap.h | 30 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/highmem.h | 40 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/page.h | 14 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/pgtable.h | 7 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/uaccess.h | 5 | ||||
| -rw-r--r-- | arch/xtensa/include/uapi/asm/ioctls.h | 19 | ||||
| -rw-r--r-- | arch/xtensa/include/uapi/asm/unistd.h | 5 | ||||
| -rw-r--r-- | arch/xtensa/kernel/align.S | 128 | ||||
| -rw-r--r-- | arch/xtensa/kernel/entry.S | 54 | ||||
| -rw-r--r-- | arch/xtensa/kernel/pci-dma.c | 12 | ||||
| -rw-r--r-- | arch/xtensa/kernel/traps.c | 5 | ||||
| -rw-r--r-- | arch/xtensa/kernel/vectors.S | 8 | ||||
| -rw-r--r-- | arch/xtensa/kernel/vmlinux.lds.S | 4 | ||||
| -rw-r--r-- | arch/xtensa/mm/cache.c | 77 | ||||
| -rw-r--r-- | arch/xtensa/mm/highmem.c | 41 | ||||
| -rw-r--r-- | arch/xtensa/mm/misc.S | 116 | ||||
| -rw-r--r-- | arch/xtensa/mm/mmu.c | 38 |
24 files changed, 497 insertions, 217 deletions
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index 3a617af60d46..49c6c3d94449 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig | |||
| @@ -4,24 +4,23 @@ config ZONE_DMA | |||
| 4 | config XTENSA | 4 | config XTENSA |
| 5 | def_bool y | 5 | def_bool y |
| 6 | select ARCH_WANT_FRAME_POINTERS | 6 | select ARCH_WANT_FRAME_POINTERS |
| 7 | select HAVE_IDE | ||
| 8 | select GENERIC_ATOMIC64 | ||
| 9 | select GENERIC_CLOCKEVENTS | ||
| 10 | select VIRT_TO_BUS | ||
| 11 | select GENERIC_IRQ_SHOW | ||
| 12 | select GENERIC_SCHED_CLOCK | ||
| 13 | select MODULES_USE_ELF_RELA | ||
| 14 | select GENERIC_PCI_IOMAP | ||
| 15 | select ARCH_WANT_IPC_PARSE_VERSION | 7 | select ARCH_WANT_IPC_PARSE_VERSION |
| 16 | select ARCH_WANT_OPTIONAL_GPIOLIB | 8 | select ARCH_WANT_OPTIONAL_GPIOLIB |
| 17 | select BUILDTIME_EXTABLE_SORT | 9 | select BUILDTIME_EXTABLE_SORT |
| 18 | select CLONE_BACKWARDS | 10 | select CLONE_BACKWARDS |
| 19 | select IRQ_DOMAIN | 11 | select COMMON_CLK |
| 20 | select HAVE_OPROFILE | 12 | select GENERIC_ATOMIC64 |
| 13 | select GENERIC_CLOCKEVENTS | ||
| 14 | select GENERIC_IRQ_SHOW | ||
| 15 | select GENERIC_PCI_IOMAP | ||
| 16 | select GENERIC_SCHED_CLOCK | ||
| 21 | select HAVE_FUNCTION_TRACER | 17 | select HAVE_FUNCTION_TRACER |
| 22 | select HAVE_IRQ_TIME_ACCOUNTING | 18 | select HAVE_IRQ_TIME_ACCOUNTING |
| 19 | select HAVE_OPROFILE | ||
| 23 | select HAVE_PERF_EVENTS | 20 | select HAVE_PERF_EVENTS |
| 24 | select COMMON_CLK | 21 | select IRQ_DOMAIN |
| 22 | select MODULES_USE_ELF_RELA | ||
| 23 | select VIRT_TO_BUS | ||
| 25 | help | 24 | help |
| 26 | Xtensa processors are 32-bit RISC machines designed by Tensilica | 25 | Xtensa processors are 32-bit RISC machines designed by Tensilica |
| 27 | primarily for embedded systems. These processors are both | 26 | primarily for embedded systems. These processors are both |
| @@ -62,7 +61,9 @@ config TRACE_IRQFLAGS_SUPPORT | |||
| 62 | def_bool y | 61 | def_bool y |
| 63 | 62 | ||
| 64 | config MMU | 63 | config MMU |
| 65 | def_bool n | 64 | bool |
| 65 | default n if !XTENSA_VARIANT_CUSTOM | ||
| 66 | default XTENSA_VARIANT_MMU if XTENSA_VARIANT_CUSTOM | ||
| 66 | 67 | ||
| 67 | config VARIANT_IRQ_SWITCH | 68 | config VARIANT_IRQ_SWITCH |
| 68 | def_bool n | 69 | def_bool n |
| @@ -102,8 +103,40 @@ config XTENSA_VARIANT_S6000 | |||
| 102 | select VARIANT_IRQ_SWITCH | 103 | select VARIANT_IRQ_SWITCH |
| 103 | select ARCH_REQUIRE_GPIOLIB | 104 | select ARCH_REQUIRE_GPIOLIB |
| 104 | select XTENSA_CALIBRATE_CCOUNT | 105 | select XTENSA_CALIBRATE_CCOUNT |
| 106 | |||
| 107 | config XTENSA_VARIANT_CUSTOM | ||
| 108 | bool "Custom Xtensa processor configuration" | ||
| 109 | select MAY_HAVE_SMP | ||
| 110 | select HAVE_XTENSA_GPIO32 | ||
| 111 | help | ||
| 112 | Select this variant to use a custom Xtensa processor configuration. | ||
| 113 | You will be prompted for a processor variant CORENAME. | ||
| 105 | endchoice | 114 | endchoice |
| 106 | 115 | ||
| 116 | config XTENSA_VARIANT_CUSTOM_NAME | ||
| 117 | string "Xtensa Processor Custom Core Variant Name" | ||
| 118 | depends on XTENSA_VARIANT_CUSTOM | ||
| 119 | help | ||
| 120 | Provide the name of a custom Xtensa processor variant. | ||
| 121 | This CORENAME selects arch/xtensa/variant/CORENAME. | ||
| 122 | Dont forget you have to select MMU if you have one. | ||
| 123 | |||
| 124 | config XTENSA_VARIANT_NAME | ||
| 125 | string | ||
| 126 | default "dc232b" if XTENSA_VARIANT_DC232B | ||
| 127 | default "dc233c" if XTENSA_VARIANT_DC233C | ||
| 128 | default "fsf" if XTENSA_VARIANT_FSF | ||
| 129 | default "s6000" if XTENSA_VARIANT_S6000 | ||
| 130 | default XTENSA_VARIANT_CUSTOM_NAME if XTENSA_VARIANT_CUSTOM | ||
| 131 | |||
| 132 | config XTENSA_VARIANT_MMU | ||
| 133 | bool "Core variant has a Full MMU (TLB, Pages, Protection, etc)" | ||
| 134 | depends on XTENSA_VARIANT_CUSTOM | ||
| 135 | default y | ||
| 136 | help | ||
| 137 | Build a Conventional Kernel with full MMU support, | ||
| 138 | ie: it supports a TLB with auto-loading, page protection. | ||
| 139 | |||
| 107 | config XTENSA_UNALIGNED_USER | 140 | config XTENSA_UNALIGNED_USER |
| 108 | bool "Unaligned memory access in use space" | 141 | bool "Unaligned memory access in use space" |
| 109 | help | 142 | help |
| @@ -156,13 +189,9 @@ config HOTPLUG_CPU | |||
| 156 | 189 | ||
| 157 | Say N if you want to disable CPU hotplug. | 190 | Say N if you want to disable CPU hotplug. |
| 158 | 191 | ||
| 159 | config MATH_EMULATION | ||
| 160 | bool "Math emulation" | ||
| 161 | help | ||
| 162 | Can we use information of configuration file? | ||
| 163 | |||
| 164 | config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX | 192 | config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX |
| 165 | bool "Initialize Xtensa MMU inside the Linux kernel code" | 193 | bool "Initialize Xtensa MMU inside the Linux kernel code" |
| 194 | depends on MMU | ||
| 166 | default y | 195 | default y |
| 167 | help | 196 | help |
| 168 | Earlier version initialized the MMU in the exception vector | 197 | Earlier version initialized the MMU in the exception vector |
| @@ -192,6 +221,7 @@ config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX | |||
| 192 | 221 | ||
| 193 | config HIGHMEM | 222 | config HIGHMEM |
| 194 | bool "High Memory Support" | 223 | bool "High Memory Support" |
| 224 | depends on MMU | ||
| 195 | help | 225 | help |
| 196 | Linux can use the full amount of RAM in the system by | 226 | Linux can use the full amount of RAM in the system by |
| 197 | default. However, the default MMUv2 setup only maps the | 227 | default. However, the default MMUv2 setup only maps the |
| @@ -208,6 +238,32 @@ config HIGHMEM | |||
| 208 | 238 | ||
| 209 | If unsure, say Y. | 239 | If unsure, say Y. |
| 210 | 240 | ||
| 241 | config FAST_SYSCALL_XTENSA | ||
| 242 | bool "Enable fast atomic syscalls" | ||
| 243 | default n | ||
| 244 | help | ||
| 245 | fast_syscall_xtensa is a syscall that can make atomic operations | ||
| 246 | on UP kernel when processor has no s32c1i support. | ||
| 247 | |||
| 248 | This syscall is deprecated. It may have issues when called with | ||
| 249 | invalid arguments. It is provided only for backwards compatibility. | ||
| 250 | Only enable it if your userspace software requires it. | ||
| 251 | |||
| 252 | If unsure, say N. | ||
| 253 | |||
| 254 | config FAST_SYSCALL_SPILL_REGISTERS | ||
| 255 | bool "Enable spill registers syscall" | ||
| 256 | default n | ||
| 257 | help | ||
| 258 | fast_syscall_spill_registers is a syscall that spills all active | ||
| 259 | register windows of a calling userspace task onto its stack. | ||
| 260 | |||
| 261 | This syscall is deprecated. It may have issues when called with | ||
| 262 | invalid arguments. It is provided only for backwards compatibility. | ||
| 263 | Only enable it if your userspace software requires it. | ||
| 264 | |||
| 265 | If unsure, say N. | ||
| 266 | |||
| 211 | endmenu | 267 | |
