]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branches 'atags', 'cache-l2x0', 'clkdev', 'fixes', 'integrator', 'misc', 'opcod...
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 4 Oct 2012 22:01:55 +0000 (23:01 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 4 Oct 2012 22:01:55 +0000 (23:01 +0100)
1  2  3  4  5  6  7 
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/include/asm/thread_info.h
arch/arm/include/asm/unistd.h
arch/arm/kernel/sched_clock.c

diff --combined arch/arm/Kconfig
index e91c7cdc6fe5c5ae370fa8be0f3a3c51a0b49beb,2f88d8d9770116014f7ff55e80d98c65fbb191ed,48c19d44be9a4a9ef4db74ffadd6f0132c459546,c3fa8604efb9a9537ab081e9ac7bba5829659769,aee8f3ada7aeb6b6091e7b060f523075918649c7,2f88d8d9770116014f7ff55e80d98c65fbb191ed,1382ef1142a3313cf5b2de18c88a5b6569fd55e7..117e81b12009fe3872eaf4828c24ecf38e58140c
@@@@@@@@ -6,7 -6,7 -6,7 -6,7 -6,7 -6,7 -6,7 +6,7 @@@@@@@@ config AR
        select HAVE_DMA_API_DEBUG
        select HAVE_IDE if PCI || ISA || PCMCIA
        select HAVE_DMA_ATTRS
-   -   select HAVE_DMA_CONTIGUOUS if (CPU_V6 || CPU_V6K || CPU_V7)
+   +   select HAVE_DMA_CONTIGUOUS if MMU
        select HAVE_MEMBLOCK
        select RTC_LIB
        select SYS_SUPPORTS_APM_EMULATION
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
++++++  select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_KPROBES if !XIP_KERNEL
        select HAVE_KRETPROBES if (HAVE_KPROBES)
        select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
        select HARDIRQS_SW_RESEND
        select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
-   -   select GENERIC_IRQ_PROBE
        select ARCH_WANT_IPC_PARSE_VERSION
        select HARDIRQS_SW_RESEND
        select CPU_PM if (SUSPEND || CPU_IDLE)
@@@@@@@@ -126,11 -125,6 -125,6 -125,6 -126,11 -125,6 -126,6 +126,6 @@@@@@@@ config TRACE_IRQFLAGS_SUPPOR
        bool
        default y
       
-   -  config GENERIC_LOCKBREAK
-   -   bool
-   -   default y
-   -   depends on SMP && PREEMPT
-   -  
       config RWSEM_GENERIC_SPINLOCK
        bool
        default y
@@@@@@@@ -1419,6 -1413,6 -1413,16 -1413,6 -1419,6 -1413,6 -1414,6 +1414,16 @@@@@@@@ config PL310_ERRATA_76941
          on systems with an outer cache, the store buffer is drained
          explicitly.
       
++ ++++config ARM_ERRATA_775420
++ ++++       bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock"
++ ++++       depends on CPU_V7
++ ++++       help
++ ++++  This option enables the workaround for the 775420 Cortex-A9 (r2p2,
++ ++++  r2p6,r2p8,r2p10,r3p0) erratum. In case a date cache maintenance
++ ++++  operation aborts with MMU exception, it might cause the processor
++ ++++  to deadlock. This workaround puts DSB before executing ISB if
++ ++++  an abort may occur on cache maintenance.
++ ++++
       endmenu
       
       source "arch/arm/common/Kconfig"
@@@@@@@@ -1855,8 -1849,8 -1859,8 -1849,8 -1855,8 -1849,8 -1850,8 +1860,8 @@@@@@@@ config ALIGNMENT_TRA
          configuration it is safe to say N, otherwise say Y.
       
       config UACCESS_WITH_MEMCPY
---- -- bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL)"
---- -- depends on MMU && EXPERIMENTAL
++++ ++ bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
++++ ++ depends on MMU
        default y if CPU_FEROCEON
        help
          Implement faster copy_to_user and clear_user methods for CPU
@@@@@@@@ -1897,12 -1891,12 -1901,12 -1891,6 -1897,12 -1891,12 -1892,12 +1902,6 @@@@@@@@ config CC_STACKPROTECTO
          neutralized via a kernel panic.
          This feature requires gcc version 4.2 or above.
       
--- ---config DEPRECATED_PARAM_STRUCT
--- --- bool "Provide old way to pass kernel parameters"
--- --- help
--- ---   This was deprecated in 2001 and announced to live on for 5 years.
--- ---   Some old boot loaders still use this way.
--- ---
       endmenu
       
       menu "Boot options"
@@@@@@@@ -1915,6 -1909,6 -1919,6 -1903,23 -1915,6 -1909,6 -1910,6 +1914,23 @@@@@@@@ config USE_O
        help
          Include support for flattened device tree machine descriptions.
       
+++ +++config ATAGS
+++ +++ bool "Support for the traditional ATAGS boot data passing" if USE_OF
+++ +++ default y
+++ +++ help
+++ +++   This is the traditional way of passing data to the kernel at boot
+++ +++   time. If you are solely relying on the flattened device tree (or
+++ +++   the ARM_ATAG_DTB_COMPAT option) then you may unselect this option
+++ +++   to remove ATAGS support from your kernel binary.  If unsure,
+++ +++   leave this to y.
+++ +++
+++ +++config DEPRECATED_PARAM_STRUCT
+++ +++ bool "Provide old way to pass kernel parameters"
+++ +++ depends on ATAGS
+++ +++ help
+++ +++   This was deprecated in 2001 and announced to live on for 5 years.
+++ +++   Some old boot loaders still use this way.
+++ +++
       # Compressed boot loader in ROM.  Yes, we really want to ask about
       # TEXT and BSS so we preserve their values in the config files.
       config ZBOOT_ROM_TEXT
@@@@@@@@ -2041,6 -2035,6 -2045,6 -2046,7 -2041,6 -2035,6 -2036,6 +2057,7 @@@@@@@@ config CMDLIN
       choice
        prompt "Kernel command line type" if CMDLINE != ""
        default CMDLINE_FROM_BOOTLOADER
+++ +++ depends on ATAGS
       
       config CMDLINE_FROM_BOOTLOADER
        bool "Use bootloader kernel arguments if available"
@@@@@@@@ -2110,7 -2104,7 -2114,7 -2116,7 -2110,7 -2104,7 -2105,7 +2127,7 @@@@@@@@ config KEXE
       
       config ATAGS_PROC
        bool "Export atags in procfs"
--- --- depends on KEXEC
+++ +++ depends on ATAGS && KEXEC
        default y
        help
          Should the atags used to boot the kernel be exported in an "atags"
@@@@@@@@ -2150,6 -2144,7 -2154,7 -2156,7 -2150,6 -2144,7 -2145,7 +2167,7 @@@@@@@@ source "drivers/cpufreq/Kconfig
       config CPU_FREQ_IMX
        tristate "CPUfreq driver for i.MX CPUs"
        depends on ARCH_MXC && CPU_FREQ
+   +   select CPU_FREQ_TABLE
        help
          This enables the CPUfreq driver for i.MX CPUs.
       
diff --combined arch/arm/Makefile
index 30eae87ead6d4b245bc6707040645f5182464e90,30eae87ead6d4b245bc6707040645f5182464e90,a051dfbdd7db07fb12db913d85050a5bb0ea7167,30eae87ead6d4b245bc6707040645f5182464e90,0457ef4d8c8649254f56c30003f71c2cc050c87b,30eae87ead6d4b245bc6707040645f5182464e90,a051dfbdd7db07fb12db913d85050a5bb0ea7167..361936a3d191df3201707c4ab6ace8190e24a3a7
       KBUILD_IMAGE := zImage
       endif
       
---- --all:     $(KBUILD_IMAGE)
++++ ++# Build the DT binary blobs if we have OF configured
++++ ++ifeq ($(CONFIG_USE_OF),y)
++++ ++KBUILD_DTBS := dtbs
++++ ++endif
++++ ++
++++ ++all:     $(KBUILD_IMAGE) $(KBUILD_DTBS)
       
       boot := arch/arm/boot
       
@@@@@@@@ -284,10 -284,10 -284,10 -284,10 -289,10 -284,10 -284,10 +289,10 @@@@@@@@ zImage Image xipImage bootpImage uImage
       zinstall uinstall install: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
       
-- --- %.dtb:
++ +++ %.dtb: scripts
        $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
       
-- --- dtbs:
++ +++ dtbs: scripts
        $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
       
       # We use MRPROPER_FILES and CLEAN_FILES now
@@@@@@@@ -306,7 -306,7 -306,7 -306,7 -311,7 -306,7 -306,7 +311,7 @@@@@@@@ define archhel
         echo  '  uImage        - U-Boot wrapped zImage'
         echo  '  bootpImage    - Combined zImage and initial RAM disk' 
         echo  '                  (supply initrd image via make variable INITRD=<path>)'
---- --  echo  '  dtbs          - Build device tree blobs for enabled boards'
++++ ++  echo  '* dtbs          - Build device tree blobs for enabled boards'
         echo  '  install       - Install uncompressed kernel'
         echo  '  zinstall      - Install compressed kernel'
         echo  '  uinstall      - Install U-Boot wrapped compressed kernel'
index 726c5f374a5cb65530c7b961d2ad0311db6dc3f5,af7b0bda3355d9af850ae722b2b1f55277ef6e67,af7b0bda3355d9af850ae722b2b1f55277ef6e67,af7b0bda3355d9af850ae722b2b1f55277ef6e67,af7b0bda3355d9af850ae722b2b1f55277ef6e67,af7b0bda3355d9af850ae722b2b1f55277ef6e67,5ded667e330ff68a4f00bd40497953687ef2d7d3..f71cdab18b87589beb5d4df33bcae80483e71536
@@@@@@@@ -59,9 -59,7 -59,7 -59,7 -59,7 -59,7 -59,7 +59,9 @@@@@@@@ struct thread_info 
        __u32                   syscall;        /* syscall number */
        __u8                    used_cp[16];    /* thread used copro */
        unsigned long           tp_value;
 ++++++#ifdef CONFIG_CRUNCH
        struct crunch_state     crunchstate;
 ++++++#endif
        union fp_state          fpstate __attribute__((aligned(8)));
        union vfp_state         vfpstate;
       #ifdef CONFIG_ARM_THUMBEE
@@@@@@@@ -150,6 -148,6 -148,6 -148,6 -148,6 -148,6 -148,7 +150,7 @@@@@@@@ extern int vfp_restore_user_hwstate(str
       #define TIF_NOTIFY_RESUME        2       /* callback before returning to user */
       #define TIF_SYSCALL_TRACE        8
       #define TIF_SYSCALL_AUDIT        9
++++++ #define TIF_SYSCALL_TRACEPOINT   10
       #define TIF_POLLING_NRFLAG       16
       #define TIF_USING_IWMMXT 17
       #define TIF_MEMDIE               18      /* is terminating due to OOM killer */
       #define _TIF_NOTIFY_RESUME       (1 << TIF_NOTIFY_RESUME)
       #define _TIF_SYSCALL_TRACE       (1 << TIF_SYSCALL_TRACE)
       #define _TIF_SYSCALL_AUDIT       (1 << TIF_SYSCALL_AUDIT)
++++++ #define _TIF_SYSCALL_TRACEPOINT  (1 << TIF_SYSCALL_TRACEPOINT)
       #define _TIF_POLLING_NRFLAG      (1 << TIF_POLLING_NRFLAG)
       #define _TIF_USING_IWMMXT        (1 << TIF_USING_IWMMXT)
       #define _TIF_SECCOMP             (1 << TIF_SECCOMP)
       
       /* Checks for any syscall work in entry-common.S */
------ #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT)
++++++ #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SYSCALL_TRACEPOINT)
       
       /*
        * Change these and you break ASM code in entry-common.S
index 0cab47d4a83ff97a23c7a9d2975cfb855a687e3e,0cab47d4a83ff97a23c7a9d2975cfb855a687e3e,2fde5fd1accedda5a00accac967e1985be9c7f08,0cab47d4a83ff97a23c7a9d2975cfb855a687e3e,0cab47d4a83ff97a23c7a9d2975cfb855a687e3e,0cab47d4a83ff97a23c7a9d2975cfb855a687e3e,a566ec20d486bd9ee44c69f705ba5077e4df4254..d9ff5cc3a5060177be581772cf22ead601ad4f65
       #define __NR_setns                       (__NR_SYSCALL_BASE+375)
       #define __NR_process_vm_readv            (__NR_SYSCALL_BASE+376)
       #define __NR_process_vm_writev           (__NR_SYSCALL_BASE+377)
++ ++++                                 /* 378 for kcmp */
++ +++ 
++++++ /*
++++++  * This may need to be greater than __NR_last_syscall+1 in order to
++++++  * account for the padding in the syscall table
++++++  */
++++++ #ifdef __KERNEL__
++++++ #define __NR_syscalls  (380)
++++++ #endif /* __KERNEL__ */
  +    
       /*
        * The following SWIs are ARM private.
        */
        */
       #define __IGNORE_fadvise64_64
       #define __IGNORE_migrate_pages
++ ++++#define __IGNORE_kcmp
       
       #endif /* __KERNEL__ */
       #endif /* __ASM_ARM_UNISTD_H */
index 27d186abbc06f8aa3aa6310faa5b67039d447f03,f4515393248dab76b97700f55ef17bba68e6cd0a,f4515393248dab76b97700f55ef17bba68e6cd0a,f4515393248dab76b97700f55ef17bba68e6cd0a,9b8451a4330fc51430b74be032096dc22752c78b,f4515393248dab76b97700f55ef17bba68e6cd0a,f4515393248dab76b97700f55ef17bba68e6cd0a..e21bac20d90da1558000125586623bdb9cbe328c
@@@@@@@@ -9,6 -9,6 -9,6 -9,6 -9,7 -9,6 -9,6 +9,7 @@@@@@@@
       #include <linux/init.h>
       #include <linux/jiffies.h>
       #include <linux/kernel.h>
++++ ++#include <linux/moduleparam.h>
       #include <linux/sched.h>
       #include <linux/syscore_ops.h>
       #include <linux/timer.h>
@@@@@@@@ -21,10 -21,12 -21,12 -21,12 -22,13 -21,12 -21,12 +22,15 @@@@@@@@ struct clock_data 
        u32 epoch_cyc_copy;
        u32 mult;
        u32 shift;
+   +   bool suspended;
+   +   bool needs_suspend;
       };
       
       static void sched_clock_poll(unsigned long wrap_ticks);
       static DEFINE_TIMER(sched_clock_timer, sched_clock_poll, 0, 0);
++++ ++static int irqtime = -1;
++++ ++
++++ ++core_param(irqtime, irqtime, int, 0400);
       
       static struct clock_data cd = {
        .mult   = NSEC_PER_SEC / HZ,
@@@@@@@@ -49,6 -51,9 -51,9 -51,9 -53,6 -51,9 -51,9 +55,9 @@@@@@@@ static unsigned long long cyc_to_sched_
        u64 epoch_ns;
        u32 epoch_cyc;
       
+   +   if (cd.suspended)
+   +           return cd.epoch_ns;
+   +  
        /*
         * Load the epoch_cyc and epoch_ns atomically.  We do this by
         * ensuring that we always write epoch_cyc, epoch_ns and
@@@@@@@@ -98,6 -103,13 -103,13 -103,13 -102,6 -103,13 -103,13 +107,13 @@@@@@@@ static void sched_clock_poll(unsigned l
        update_sched_clock();
       }
       
+   +  void __init setup_sched_clock_needs_suspend(u32 (*read)(void), int bits,
+   +           unsigned long rate)
+   +  {
+   +   setup_sched_clock(read, bits, rate);
+   +   cd.needs_suspend = true;
+   +  }
+   +  
       void __init setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate)
       {
        unsigned long r, w;
         */
        cd.epoch_ns = 0;
       
++++ ++ /* Enable IRQ time accounting if we have a fast enough sched_clock */
++++ ++ if (irqtime > 0 || (irqtime == -1 && rate >= 1000000))
++++ ++         enable_sched_clock_irqtime();
++++ ++
        pr_debug("Registered %pF as sched_clock source\n", read);
       }
       
@@@@@@@@ -169,11 -181,23 -181,23 -181,23 -177,11 -181,23 -181,23 +189,23 @@@@@@@@ void __init sched_clock_postinit(void
       static int sched_clock_suspend(void)
       {
        sched_clock_poll(sched_clock_timer.data);
+   +   if (cd.needs_suspend)
+   +           cd.suspended = true;
        return 0;
       }
       
+   +  static void sched_clock_resume(void)
+   +  {
+   +   if (cd.needs_suspend) {
+   +           cd.epoch_cyc = read_sched_clock();
+   +           cd.epoch_cyc_copy = cd.epoch_cyc;
+   +           cd.suspended = false;
+   +   }
+   +  }
+   +  
       static struct syscore_ops sched_clock_ops = {
        .suspend = sched_clock_suspend,
+   +   .resume = sched_clock_resume,
       };
       
       static int __init sched_clock_syscore_init(void)