Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05bdb8c9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'xtensa-20140830' of git://github.com/czankel/xtensa-linux

Pull Xtensa updates from Chris Zankel:
 "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
     unrecoverabl exception)
   - replace termios IOCTL code definitions with constants (userspace
     build breakage)"

* tag 'xtensa-20140830' of git://github.com/czankel/xtensa-linux: (25 commits)
  xtensa: deprecate fast_xtensa and fast_spill_registers syscalls
  xtensa: don't allow overflow/underflow on unaligned stack
  xtensa: fix a6 and a7 handling in fast_syscall_xtensa
  xtensa: allow single-stepping through unaligned load/store
  xtensa: move invalid unaligned instruction handler closer to its users
  xtensa: make fast_unaligned store restartable
  xtensa: add double exception fixup handler for fast_unaligned
  xtensa: fix kernel/user jump out of fast_unaligned
  xtensa: configure kc705 for highmem
  xtensa: support highmem in aliasing cache flushing code
  xtensa: support aliasing cache in kmap
  xtensa: support aliasing cache in k[un]map_atomic
  xtensa: implement clear_user_highpage and copy_user_highpage
  xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss
  xtensa: allow fixmap and kmap span more than one page table
  xtensa: make fixmap region addressing grow with index
  xtensa: fix access to THREAD_RA/THREAD_SP/THREAD_DS
  xtensa: add renameat2 syscall
  xtensa: fix address checks in dma_{alloc,free}_coherent
  xtensa: replace IOCTL code definitions with constants
  ...
parents ca98565a e792290b
Loading
Loading
Loading
Loading
+75 −17
Original line number Diff line number Diff line
@@ -4,24 +4,23 @@ config ZONE_DMA
config XTENSA
	def_bool y
	select ARCH_WANT_FRAME_POINTERS
	select HAVE_IDE
	select GENERIC_ATOMIC64
	select GENERIC_CLOCKEVENTS
	select VIRT_TO_BUS
	select GENERIC_IRQ_SHOW
	select GENERIC_SCHED_CLOCK
	select MODULES_USE_ELF_RELA
	select GENERIC_PCI_IOMAP
	select ARCH_WANT_IPC_PARSE_VERSION
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select BUILDTIME_EXTABLE_SORT
	select CLONE_BACKWARDS
	select IRQ_DOMAIN
	select HAVE_OPROFILE
	select COMMON_CLK
	select GENERIC_ATOMIC64
	select GENERIC_CLOCKEVENTS
	select GENERIC_IRQ_SHOW
	select GENERIC_PCI_IOMAP
	select GENERIC_SCHED_CLOCK
	select HAVE_FUNCTION_TRACER
	select HAVE_IRQ_TIME_ACCOUNTING
	select HAVE_OPROFILE
	select HAVE_PERF_EVENTS
	select COMMON_CLK
	select IRQ_DOMAIN
	select MODULES_USE_ELF_RELA
	select VIRT_TO_BUS
	help
	  Xtensa processors are 32-bit RISC machines designed by Tensilica
	  primarily for embedded systems.  These processors are both
@@ -62,7 +61,9 @@ config TRACE_IRQFLAGS_SUPPORT
	def_bool y

config MMU
	def_bool n
	bool
	default n if !XTENSA_VARIANT_CUSTOM
	default XTENSA_VARIANT_MMU if XTENSA_VARIANT_CUSTOM

config VARIANT_IRQ_SWITCH
	def_bool n
@@ -102,8 +103,40 @@ config XTENSA_VARIANT_S6000
	select VARIANT_IRQ_SWITCH
	select ARCH_REQUIRE_GPIOLIB
	select XTENSA_CALIBRATE_CCOUNT

config XTENSA_VARIANT_CUSTOM
	bool "Custom Xtensa processor configuration"
	select MAY_HAVE_SMP
	select HAVE_XTENSA_GPIO32
	help
	  Select this variant to use a custom Xtensa processor configuration.
	  You will be prompted for a processor variant CORENAME.
endchoice

config XTENSA_VARIANT_CUSTOM_NAME
	string "Xtensa Processor Custom Core Variant Name"
	depends on XTENSA_VARIANT_CUSTOM
	help
	  Provide the name of a custom Xtensa processor variant.
	  This CORENAME selects arch/xtensa/variant/CORENAME.
	  Dont forget you have to select MMU if you have one.

config XTENSA_VARIANT_NAME
	string
	default "dc232b"			if XTENSA_VARIANT_DC232B
	default "dc233c"			if XTENSA_VARIANT_DC233C
	default "fsf"				if XTENSA_VARIANT_FSF
	default "s6000"				if XTENSA_VARIANT_S6000
	default XTENSA_VARIANT_CUSTOM_NAME	if XTENSA_VARIANT_CUSTOM

config XTENSA_VARIANT_MMU
	bool "Core variant has a Full MMU (TLB, Pages, Protection, etc)"
	depends on XTENSA_VARIANT_CUSTOM
	default y
	help
	  Build a Conventional Kernel with full MMU support,
	  ie: it supports a TLB with auto-loading, page protection.

config XTENSA_UNALIGNED_USER
	bool "Unaligned memory access in use space"
	help
@@ -156,13 +189,9 @@ config HOTPLUG_CPU

	  Say N if you want to disable CPU hotplug.

config MATH_EMULATION
	bool "Math emulation"
	help
	Can we use information of configuration file?

config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
	bool "Initialize Xtensa MMU inside the Linux kernel code"
	depends on MMU
	default y
	help
	  Earlier version initialized the MMU in the exception vector
@@ -192,6 +221,7 @@ config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX

config HIGHMEM
	bool "High Memory Support"
	depends on MMU
	help
	  Linux can use the full amount of RAM in the system by
	  default. However, the default MMUv2 setup only maps the
@@ -208,6 +238,32 @@ config HIGHMEM

	  If unsure, say Y.

config FAST_SYSCALL_XTENSA
	bool "Enable fast atomic syscalls"
	default n
	help
	  fast_syscall_xtensa is a syscall that can make atomic operations
	  on UP kernel when processor has no s32c1i support.

	  This syscall is deprecated. It may have issues when called with
	  invalid arguments. It is provided only for backwards compatibility.
	  Only enable it if your userspace software requires it.

	  If unsure, say N.

config FAST_SYSCALL_SPILL_REGISTERS
	bool "Enable spill registers syscall"
	default n
	help
	  fast_syscall_spill_registers is a syscall that spills all active
	  register windows of a calling userspace task onto its stack.

	  This syscall is deprecated. It may have issues when called with
	  invalid arguments. It is provided only for backwards compatibility.
	  Only enable it if your userspace software requires it.

	  If unsure, say N.

endmenu

config XTENSA_CALIBRATE_CCOUNT
@@ -250,12 +306,14 @@ config XTENSA_PLATFORM_ISS

config XTENSA_PLATFORM_XT2000
	bool "XT2000"
	select HAVE_IDE
	help
	  XT2000 is the name of Tensilica's feature-rich emulation platform.
	  This hardware is capable of running a full Linux distribution.

config XTENSA_PLATFORM_S6105
	bool "S6105"
	select HAVE_IDE
	select SERIAL_CONSOLE
	select NO_IOPORT_MAP

+2 −5
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
# for more details.
#
# Copyright (C) 2001 - 2005  Tensilica Inc.
# Copyright (C) 2014 Cadence Design Systems Inc.
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
@@ -13,11 +14,7 @@
# Core configuration.
# (Use VAR=<xtensa_config> to use another default compiler.)

variant-$(CONFIG_XTENSA_VARIANT_FSF)		:= fsf
variant-$(CONFIG_XTENSA_VARIANT_DC232B)		:= dc232b
variant-$(CONFIG_XTENSA_VARIANT_DC233C)		:= dc233c
variant-$(CONFIG_XTENSA_VARIANT_S6000)		:= s6000
variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM)	:= custom
variant-y := $(patsubst "%",%,$(CONFIG_XTENSA_VARIANT_NAME))

VARIANT = $(variant-y)
export VARIANT
+4 −1
Original line number Diff line number Diff line
@@ -4,8 +4,11 @@

/ {
	compatible = "cdns,xtensa-kc705";
	chosen {
		bootargs = "earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=0x38000000";
	};
	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x08000000>;
		reg = <0x00000000 0x38000000>;
	};
};
+0 −1
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ CONFIG_XTENSA_ARCH_LINUX_BE=y
CONFIG_MMU=y
# CONFIG_XTENSA_UNALIGNED_USER is not set
# CONFIG_PREEMPT is not set
# CONFIG_MATH_EMULATION is not set
# CONFIG_HIGHMEM is not set

#
+1 −2
Original line number Diff line number Diff line
@@ -146,7 +146,6 @@ CONFIG_XTENSA_VARIANT_FSF=y
# CONFIG_XTENSA_VARIANT_S6000 is not set
# CONFIG_XTENSA_UNALIGNED_USER is not set
# CONFIG_PREEMPT is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_XTENSA_CALIBRATE_CCOUNT=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_XTENSA_ISS_NETWORK=y
@@ -308,7 +307,7 @@ CONFIG_MISC_DEVICES=y
# EEPROM support
#
# CONFIG_EEPROM_93CX6 is not set
CONFIG_HAVE_IDE=y
# CONFIG_HAVE_IDE is not set
# CONFIG_IDE is not set

#
Loading