diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-11 15:30:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-11 15:30:33 -0400 |
| commit | d4d1cda6ef48a99dee5c0f3334a556845e84dd92 (patch) | |
| tree | bac31a64294592e718226e9f7231c9a9bf490cd9 | |
| parent | 7728f036adb25f8f7f8e36ffa9cecf6ba3ddae91 (diff) | |
| parent | 0eb5afb3bae69a18bb4a8dbcbd361c4403fb54cd (diff) | |
Merge tag 'xtensa-next-20130710' of git://github.com/czankel/xtensa-linux
Pull Xtensa updates from Chris Zankel.
* tag 'xtensa-next-20130710' of git://github.com/czankel/xtensa-linux: (22 commits)
xtensa: remove the second argument of __bio_kmap_atomic()
xtensa: add static function tracer support
xtensa: Flat DeviceTree copy not future-safe
xtensa: check TLB sanity on return to userspace
xtensa: adjust boot parameters address when INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX is selected
xtensa: bootparams: fix typo
xtensa: tell git to ignore generated .dtb files
xtensa: ccount based sched_clock
xtensa: ccount based clockevent implementation
xtensa: consolidate ccount access routines
xtensa: cleanup ccount frequency tracking
xtensa: timex.h: remove unused symbols
xtensa: tell git to ignore copied zlib source files
xtensa: fix section mismatch in pcibios_fixup_bus
xtensa: ISS: fix section mismatch in iss_net_setup
arch: xtensa: include: asm: compiling issue, need cmpxchg64() defined.
xtensa: xtfpga: fix section mismatch
xtensa: remove unused platform_init_irq()
xtensa: tell git to ignore generated files
xtensa: flush TLB entries for pages of non-current mm correctly
...
29 files changed, 435 insertions, 148 deletions
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index 0a1b95f81a32..7ea6451a3a33 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig | |||
| @@ -6,10 +6,12 @@ config XTENSA | |||
| 6 | select ARCH_WANT_FRAME_POINTERS | 6 | select ARCH_WANT_FRAME_POINTERS |
| 7 | select HAVE_IDE | 7 | select HAVE_IDE |
| 8 | select GENERIC_ATOMIC64 | 8 | select GENERIC_ATOMIC64 |
| 9 | select GENERIC_CLOCKEVENTS | ||
| 9 | select HAVE_GENERIC_HARDIRQS | 10 | select HAVE_GENERIC_HARDIRQS |
| 10 | select VIRT_TO_BUS | 11 | select VIRT_TO_BUS |
| 11 | select GENERIC_IRQ_SHOW | 12 | select GENERIC_IRQ_SHOW |
| 12 | select GENERIC_CPU_DEVICES | 13 | select GENERIC_CPU_DEVICES |
| 14 | select GENERIC_SCHED_CLOCK | ||
| 13 | select MODULES_USE_ELF_RELA | 15 | select MODULES_USE_ELF_RELA |
| 14 | select GENERIC_PCI_IOMAP | 16 | select GENERIC_PCI_IOMAP |
| 15 | select ARCH_WANT_IPC_PARSE_VERSION | 17 | select ARCH_WANT_IPC_PARSE_VERSION |
| @@ -17,6 +19,7 @@ config XTENSA | |||
| 17 | select CLONE_BACKWARDS | 19 | select CLONE_BACKWARDS |
| 18 | select IRQ_DOMAIN | 20 | select IRQ_DOMAIN |
| 19 | select HAVE_OPROFILE | 21 | select HAVE_OPROFILE |
| 22 | select HAVE_FUNCTION_TRACER | ||
| 20 | help | 23 | help |
| 21 | Xtensa processors are 32-bit RISC machines designed by Tensilica | 24 | Xtensa processors are 32-bit RISC machines designed by Tensilica |
| 22 | primarily for embedded systems. These processors are both | 25 | primarily for embedded systems. These processors are both |
diff --git a/arch/xtensa/Kconfig.debug b/arch/xtensa/Kconfig.debug index a34010e0e51c..af7da74d535f 100644 --- a/arch/xtensa/Kconfig.debug +++ b/arch/xtensa/Kconfig.debug | |||
| @@ -2,6 +2,16 @@ menu "Kernel hacking" | |||
| 2 | 2 | ||
| 3 | source "lib/Kconfig.debug" | 3 | source "lib/Kconfig.debug" |
| 4 | 4 | ||
| 5 | config DEBUG_TLB_SANITY | ||
| 6 | bool "Debug TLB sanity" | ||
| 7 | depends on DEBUG_KERNEL | ||
| 8 | help | ||
| 9 | Enable this to turn on TLB sanity check on each entry to userspace. | ||
| 10 | This check can spot missing TLB invalidation/wrong PTE permissions/ | ||
| 11 | premature page freeing. | ||
| 12 | |||
| 13 | If unsure, say N. | ||
| 14 | |||
| 5 | config LD_NO_RELAX | 15 | config LD_NO_RELAX |
| 6 | bool "Disable linker relaxation" | 16 | bool "Disable linker relaxation" |
| 7 | default n | 17 | default n |
diff --git a/arch/xtensa/boot/.gitignore b/arch/xtensa/boot/.gitignore new file mode 100644 index 000000000000..be7655998b26 --- /dev/null +++ b/arch/xtensa/boot/.gitignore | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | uImage | ||
| 2 | zImage.redboot | ||
| 3 | *.dtb | ||
diff --git a/arch/xtensa/boot/boot-elf/.gitignore b/arch/xtensa/boot/boot-elf/.gitignore new file mode 100644 index 000000000000..5ff8fbb8561b --- /dev/null +++ b/arch/xtensa/boot/boot-elf/.gitignore | |||
| @@ -0,0 +1 @@ | |||
| boot.lds | |||
diff --git a/arch/xtensa/boot/lib/.gitignore b/arch/xtensa/boot/lib/.gitignore new file mode 100644 index 000000000000..1629a6167755 --- /dev/null +++ b/arch/xtensa/boot/lib/.gitignore | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | inffast.c | ||
| 2 | inflate.c | ||
| 3 | inftrees.c | ||
diff --git a/arch/xtensa/boot/lib/Makefile b/arch/xtensa/boot/lib/Makefile index ad8952e8a07f..6868f2ca6af8 100644 --- a/arch/xtensa/boot/lib/Makefile +++ b/arch/xtensa/boot/lib/Makefile | |||
| @@ -7,6 +7,13 @@ zlib := inffast.c inflate.c inftrees.c | |||
| 7 | lib-y += $(zlib:.c=.o) zmem.o | 7 | lib-y += $(zlib:.c=.o) zmem.o |
| 8 | 8 | ||
| 9 | ccflags-y := -Ilib/zlib_inflate | 9 | ccflags-y := -Ilib/zlib_inflate |
| 10 | ifdef CONFIG_FUNCTION_TRACER | ||
| 11 | CFLAGS_REMOVE_inflate.o = -pg | ||
| 12 | CFLAGS_REMOVE_zmem.o = -pg | ||
| 13 | CFLAGS_REMOVE_inftrees.o = -pg | ||
| 14 | CFLAGS_REMOVE_inffast.o = -pg | ||
| 15 | endif | ||
| 16 | |||
| 10 | 17 | ||
| 11 | quiet_cmd_copy_zlib = COPY $@ | 18 | quiet_cmd_copy_zlib = COPY $@ |
| 12 | cmd_copy_zlib = cat $< > $@ | 19 | cmd_copy_zlib = cat $< > $@ |
diff --git a/arch/xtensa/include/asm/bootparam.h b/arch/xtensa/include/asm/bootparam.h index 0c25799facab..23392c5630ce 100644 --- a/arch/xtensa/include/asm/bootparam.h +++ b/arch/xtensa/include/asm/bootparam.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #define BP_TAG_COMMAND_LINE 0x1001 /* command line (0-terminated string)*/ | 20 | #define BP_TAG_COMMAND_LINE 0x1001 /* command line (0-terminated string)*/ |
| 21 | #define BP_TAG_INITRD 0x1002 /* ramdisk addr and size (bp_meminfo) */ | 21 | #define BP_TAG_INITRD 0x1002 /* ramdisk addr and size (bp_meminfo) */ |
| 22 | #define BP_TAG_MEMORY 0x1003 /* memory addr and size (bp_meminfo) */ | 22 | #define BP_TAG_MEMORY 0x1003 /* memory addr and size (bp_meminfo) */ |
| 23 | #define BP_TAG_SERIAL_BAUSRATE 0x1004 /* baud rate of current console. */ | 23 | #define BP_TAG_SERIAL_BAUDRATE 0x1004 /* baud rate of current console. */ |
| 24 | #define BP_TAG_SERIAL_PORT 0x1005 /* serial device of current console */ | 24 | #define BP_TAG_SERIAL_PORT 0x1005 /* serial device of current console */ |
| 25 | #define BP_TAG_FDT 0x1006 /* flat device tree addr */ | 25 | #define BP_TAG_FDT 0x1006 /* flat device tree addr */ |
| 26 | 26 | ||
diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h index d9ab131bc1aa..370b26f38414 100644 --- a/arch/xtensa/include/asm/cmpxchg.h +++ b/arch/xtensa/include/asm/cmpxchg.h | |||
| @@ -93,6 +93,7 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, | |||
| 93 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | 93 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ |
| 94 | (unsigned long)(n), sizeof(*(ptr)))) | 94 | (unsigned long)(n), sizeof(*(ptr)))) |
| 95 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | 95 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) |
| 96 | #define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n)) | ||
| 96 | 97 | ||
| 97 | /* | 98 | /* |
| 98 | * xchg_u32 | 99 | * xchg_u32 |
diff --git a/arch/xtensa/include/asm/delay.h b/arch/xtensa/include/asm/delay.h index 61fc5faeb46c..3899610c1dff 100644 --- a/arch/xtensa/include/asm/delay.h +++ b/arch/xtensa/include/asm/delay.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #ifndef _XTENSA_DELAY_H | 12 | #ifndef _XTENSA_DELAY_H |
| 13 | #define _XTENSA_DELAY_H | 13 | #define _XTENSA_DELAY_H |
| 14 | 14 | ||
| 15 | #include <asm/processor.h> | 15 | #include <asm/timex.h> |
| 16 | #include <asm/param.h> | 16 | #include <asm/param.h> |
| 17 | 17 | ||
| 18 | extern unsigned long loops_per_jiffy; | 18 | extern unsigned long loops_per_jiffy; |
| @@ -24,24 +24,17 @@ static inline void __delay(unsigned long loops) | |||
| 24 | : "=r" (loops) : "0" (loops)); | 24 | : "=r" (loops) : "0" (loops)); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | static __inline__ u32 xtensa_get_ccount(void) | ||
| 28 | { | ||
| 29 | u32 ccount; | ||
| 30 | asm volatile ("rsr %0, ccount\n" : "=r" (ccount)); | ||
| 31 | return ccount; | ||
| 32 | } | ||
| 33 | |||
| 34 | /* For SMP/NUMA systems, change boot_cpu_data to something like | 27 | /* For SMP/NUMA systems, change boot_cpu_data to something like |
| 35 | * local_cpu_data->... where local_cpu_data points to the current | 28 | * local_cpu_data->... where local_cpu_data points to the current |
| 36 | * cpu. */ | 29 | * cpu. */ |
| 37 | 30 | ||
| 38 | static __inline__ void udelay (unsigned long usecs) | 31 | static __inline__ void udelay (unsigned long usecs) |
| 39 | { | 32 | { |
| 40 | unsigned long start = xtensa_get_ccount(); | 33 | unsigned long start = get_ccount(); |
| 41 | unsigned long cycles = usecs * (loops_per | ||
