]> Pileus Git - ~andy/linux/commitdiff
Merge tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Oct 2012 18:51:57 +0000 (11:51 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Oct 2012 18:51:57 +0000 (11:51 -0700)
Pull arm64 support from Catalin Marinas:
 "Linux support for the 64-bit ARM architecture (AArch64)

  Features currently supported:
   - 39-bit address space for user and kernel (each)
   - 4KB and 64KB page configurations
   - Compat (32-bit) user applications (ARMv7, EABI only)
   - Flattened Device Tree (mandated for all AArch64 platforms)
   - ARM generic timers"

* tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: (35 commits)
  arm64: ptrace: remove obsolete ptrace request numbers from user headers
  arm64: Do not set the SMP/nAMP processor bit
  arm64: MAINTAINERS update
  arm64: Build infrastructure
  arm64: Miscellaneous header files
  arm64: Generic timers support
  arm64: Loadable modules
  arm64: Miscellaneous library functions
  arm64: Performance counters support
  arm64: Add support for /proc/sys/debug/exception-trace
  arm64: Debugging support
  arm64: Floating point and SIMD
  arm64: 32-bit (compat) applications support
  arm64: User access library functions
  arm64: Signal handling support
  arm64: VDSO support
  arm64: System calls handling
  arm64: ELF definitions
  arm64: SMP support
  arm64: DMA mapping API
  ...

1  2 
MAINTAINERS
fs/stat.c
include/linux/elf.h
init/Kconfig
kernel/sysctl.c
lib/Kconfig.debug
tools/perf/perf.h

diff --combined MAINTAINERS
index 9362f54bccb859a63c311c91b7885fe6b17e86d5,de368a590c8bf5735abcba5bd5126bdfa9190ba3..c98b1a1520d82735a7e2e95a83542f9c22c41cd2
@@@ -1209,6 -1209,12 +1209,12 @@@ S:    Maintaine
  F:    arch/arm/mach-pxa/z2.c
  F:    arch/arm/mach-pxa/include/mach/z2.h
  
+ ARM64 PORT (AARCH64 ARCHITECTURE)
+ M:    Catalin Marinas <catalin.marinas@arm.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    arch/arm64/
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
  L:    lm-sensors@lm-sensors.org
@@@ -3388,7 -3394,7 +3394,7 @@@ M:      "Wolfram Sang (embedded platforms)" 
  L:    linux-i2c@vger.kernel.org
  W:    http://i2c.wiki.kernel.org/
  T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
 -T:    git git://git.fluff.org/bjdooks/linux.git
 +T:    git git://git.pengutronix.de/git/wsa/linux.git
  S:    Maintained
  F:    Documentation/i2c/
  F:    drivers/i2c/
@@@ -3552,12 -3558,11 +3558,12 @@@ K:   \b(ABS|SYN)_MT
  
  INTEL C600 SERIES SAS CONTROLLER DRIVER
  M:    Intel SCU Linux support <intel-linux-scu@intel.com>
 +M:    Lukasz Dorau <lukasz.dorau@intel.com>
 +M:    Maciej Patelczyk <maciej.patelczyk@intel.com>
  M:    Dave Jiang <dave.jiang@intel.com>
 -M:    Ed Nadolski <edmund.nadolski@intel.com>
  L:    linux-scsi@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git
 -S:    Maintained
 +T:    git git://git.code.sf.net/p/intel-sas/isci
 +S:    Supported
  F:    drivers/scsi/isci/
  F:    firmware/isci/
  
@@@ -3667,12 -3672,11 +3673,12 @@@ F:   Documentation/networking/README.ipw2
  F:    drivers/net/wireless/ipw2x00/
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 -M:    Joseph Cihula <joseph.cihula@intel.com>
 +M:    Richard L Maliszewski <richard.l.maliszewski@intel.com>
 +M:    Gang Wei <gang.wei@intel.com>
  M:    Shane Wang <shane.wang@intel.com>
  L:    tboot-devel@lists.sourceforge.net
  W:    http://tboot.sourceforge.net
 -T:    Mercurial http://www.bughost.org/repos.hg/tboot.hg
 +T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
  S:    Supported
  F:    Documentation/intel_txt.txt
  F:    include/linux/tboot.h
@@@ -5322,12 -5326,6 +5328,12 @@@ L:    linux-mtd@lists.infradead.or
  S:    Maintained
  F:    drivers/mtd/devices/phram.c
  
 +PICOLCD HID DRIVER
 +M:    Bruno PrĂ©mont <bonbons@linux-vserver.org>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hid/hid-picolcd*
 +
  PICOXCELL SUPPORT
  M:    Jamie Iles <jamie@jamieiles.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -5551,8 -5549,6 +5557,8 @@@ F:      Documentation/devicetree/bindings/pw
  F:    include/linux/pwm.h
  F:    include/linux/of_pwm.h
  F:    drivers/pwm/
 +F:    drivers/video/backlight/pwm_bl.c
 +F:    include/linux/pwm_backlight.h
  
  PXA2xx/PXA3xx SUPPORT
  M:    Eric Miao <eric.y.miao@gmail.com>
diff --combined fs/stat.c
index 40780229a03281376d4d449e896745f3f169a0d3,6126c5da22e767297bf596cad3105ed969395f25..208039eec6c79b3123de706942d596afc5a6a239
+++ b/fs/stat.c
@@@ -58,7 -58,7 +58,7 @@@ EXPORT_SYMBOL(vfs_getattr)
  int vfs_fstat(unsigned int fd, struct kstat *stat)
  {
        int fput_needed;
 -      struct file *f = fget_light(fd, &fput_needed);
 +      struct file *f = fget_raw_light(fd, &fput_needed);
        int error = -EBADF;
  
        if (f) {
@@@ -326,7 -326,7 +326,7 @@@ SYSCALL_DEFINE3(readlink, const char __
  
  
  /* ---------- LFS-64 ----------- */
- #ifdef __ARCH_WANT_STAT64
+ #if defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_COMPAT_STAT64)
  
  #ifndef INIT_STRUCT_STAT64_PADDING
  #  define INIT_STRUCT_STAT64_PADDING(st) memset(&st, 0, sizeof(st))
@@@ -415,7 -415,7 +415,7 @@@ SYSCALL_DEFINE4(fstatat64, int, dfd, co
                return error;
        return cp_new_stat64(&stat, statbuf);
  }
- #endif /* __ARCH_WANT_STAT64 */
+ #endif /* __ARCH_WANT_STAT64 || __ARCH_WANT_COMPAT_STAT64 */
  
  /* Caller is here responsible for sufficient locking (ie. inode->i_lock) */
  void __inode_add_bytes(struct inode *inode, loff_t bytes)
diff --combined include/linux/elf.h
index f930b1a390ab5cb4ffc4dc1ac4a3900be8594166,1e935e4c6328c4b16524eb3bd3a9ee487f5b0a0e..0a05051a8924df5e2d1e55562c1d66698702a7db
@@@ -387,8 -387,10 +387,11 @@@ typedef struct elf64_shdr 
  #define NT_S390_PREFIX        0x305           /* s390 prefix register */
  #define NT_S390_LAST_BREAK    0x306   /* s390 breaking event address */
  #define NT_S390_SYSTEM_CALL   0x307   /* s390 system call restart data */
 +#define NT_S390_TDB   0x308           /* s390 transaction diagnostic block */
  #define NT_ARM_VFP    0x400           /* ARM VFP/NEON registers */
+ #define NT_ARM_TLS    0x401           /* ARM TLS register */
+ #define NT_ARM_HW_BREAK       0x402           /* ARM hardware breakpoint registers */
+ #define NT_ARM_HW_WATCH       0x403           /* ARM hardware watchpoint registers */
  
  
  /* Note header in a PT_NOTE section */
diff --combined init/Kconfig
index 3466a6e017b740b89d1ecb5e045b7b28f536c9c1,8bfda465df2d6e2b7c6168021c00e2addbb3623a..495e6e9632db33bffaa0767f2eee38a483e0976e
@@@ -267,106 -267,6 +267,106 @@@ config POSIX_MQUEUE_SYSCT
        depends on SYSCTL
        default y
  
 +config FHANDLE
 +      bool "open by fhandle syscalls"
 +      select EXPORTFS
 +      help
 +        If you say Y here, a user level program will be able to map
 +        file names to handle and then later use the handle for
 +        different file system operations. This is useful in implementing
 +        userspace file servers, which now track files using handles instead
 +        of names. The handle would remain the same even if file names
 +        get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
 +        syscalls.
 +
 +config AUDIT
 +      bool "Auditing support"
 +      depends on NET
 +      help
 +        Enable auditing infrastructure that can be used with another
 +        kernel subsystem, such as SELinux (which requires this for
 +        logging of avc messages output).  Does not do system-call
 +        auditing without CONFIG_AUDITSYSCALL.
 +
 +config AUDITSYSCALL
 +      bool "Enable system-call auditing support"
 +      depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
 +      default y if SECURITY_SELINUX
 +      help
 +        Enable low-overhead system-call auditing infrastructure that
 +        can be used independently or with another kernel subsystem,
 +        such as SELinux.
 +
 +config AUDIT_WATCH
 +      def_bool y
 +      depends on AUDITSYSCALL
 +      select FSNOTIFY
 +
 +config AUDIT_TREE
 +      def_bool y
 +      depends on AUDITSYSCALL
 +      select FSNOTIFY
 +
 +config AUDIT_LOGINUID_IMMUTABLE
 +      bool "Make audit loginuid immutable"
 +      depends on AUDIT
 +      help
 +        The config option toggles if a task setting its loginuid requires
 +        CAP_SYS_AUDITCONTROL or if that task should require no special permissions
 +        but should instead only allow setting its loginuid if it was never
 +        previously set.  On systems which use systemd or a similar central
 +        process to restart login services this should be set to true.  On older
 +        systems in which an admin would typically have to directly stop and
 +        start processes this should be set to false.  Setting this to true allows
 +        one to drop potentially dangerous capabilites from the login tasks,
 +        but may not be backwards compatible with older init systems.
 +
 +source "kernel/irq/Kconfig"
 +source "kernel/time/Kconfig"
 +
 +menu "CPU/Task time and stats accounting"
 +
 +choice
 +      prompt "Cputime accounting"
 +      default TICK_CPU_ACCOUNTING if !PPC64
 +      default VIRT_CPU_ACCOUNTING if PPC64
 +
 +# Kind of a stub config for the pure tick based cputime accounting
 +config TICK_CPU_ACCOUNTING
 +      bool "Simple tick based cputime accounting"
 +      depends on !S390
 +      help
 +        This is the basic tick based cputime accounting that maintains
 +        statistics about user, system and idle time spent on per jiffies
 +        granularity.
 +
 +        If unsure, say Y.
 +
 +config VIRT_CPU_ACCOUNTING
 +      bool "Deterministic task and CPU time accounting"
 +      depends on HAVE_VIRT_CPU_ACCOUNTING
 +      help
 +        Select this option to enable more accurate task and CPU time
 +        accounting.  This is done by reading a CPU counter on each
 +        kernel entry and exit and on transitions within the kernel
 +        between system, softirq and hardirq state, so there is a
 +        small performance impact.  In the case of s390 or IBM POWER > 5,
 +        this also enables accounting of stolen time on logically-partitioned
 +        systems.
 +
 +config IRQ_TIME_ACCOUNTING
 +      bool "Fine granularity task level IRQ time accounting"
 +      depends on HAVE_IRQ_TIME_ACCOUNTING
 +      help
 +        Select this option to enable fine granularity task irq time
 +        accounting. This is done by reading a timestamp on each
 +        transitions between softirq and hardirq state, so there can be a
 +        small performance impact.
 +
 +        If in doubt, say N here.
 +
 +endchoice
 +
  config BSD_PROCESS_ACCT
        bool "BSD Process Accounting"
        help
@@@ -392,6 -292,18 +392,6 @@@ config BSD_PROCESS_ACCT_V
          for processing it. A preliminary version of these tools is available
          at <http://www.gnu.org/software/acct/>.
  
 -config FHANDLE
 -      bool "open by fhandle syscalls"
 -      select EXPORTFS
 -      help
 -        If you say Y here, a user level program will be able to map
 -        file names to handle and then later use the handle for
 -        different file system operations. This is useful in implementing
 -        userspace file servers, which now track files using handles instead
 -        of names. The handle would remain the same even if file names
 -        get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
 -        syscalls.
 -
  config TASKSTATS
        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
        depends on NET
@@@ -434,7 -346,50 +434,7 @@@ config TASK_IO_ACCOUNTIN
  
          Say N if unsure.
  
 -config AUDIT
 -      bool "Auditing support"
 -      depends on NET
 -      help
 -        Enable auditing infrastructure that can be used with another
 -        kernel subsystem, such as SELinux (which requires this for
 -        logging of avc messages output).  Does not do system-call
 -        auditing without CONFIG_AUDITSYSCALL.
 -
 -config AUDITSYSCALL
 -      bool "Enable system-call auditing support"
 -      depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
 -      default y if SECURITY_SELINUX
 -      help
 -        Enable low-overhead system-call auditing infrastructure that
 -        can be used independently or with another kernel subsystem,
 -        such as SELinux.
 -
 -config AUDIT_WATCH
 -      def_bool y
 -      depends on AUDITSYSCALL
 -      select FSNOTIFY
 -
 -config AUDIT_TREE
 -      def_bool y
 -      depends on AUDITSYSCALL
 -      select FSNOTIFY
 -
 -config AUDIT_LOGINUID_IMMUTABLE
 -      bool "Make audit loginuid immutable"
 -      depends on AUDIT
 -      help
 -        The config option toggles if a task setting its loginuid requires
 -        CAP_SYS_AUDITCONTROL or if that task should require no special permissions
 -        but should instead only allow setting its loginuid if it was never
 -        previously set.  On systems which use systemd or a similar central
 -        process to restart login services this should be set to true.  On older
 -        systems in which an admin would typically have to directly stop and
 -        start processes this should be set to false.  Setting this to true allows
 -        one to drop potentially dangerous capabilites from the login tasks,
 -        but may not be backwards compatible with older init systems.
 -
 -source "kernel/irq/Kconfig"
 -source "kernel/time/Kconfig"
 +endmenu # "CPU/Task time and stats accounting"
  
  menu "RCU Subsystem"
  
@@@ -486,24 -441,6 +486,24 @@@ config PREEMPT_RC
          This option enables preemptible-RCU code that is common between
          the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
  
 +config RCU_USER_QS
 +      bool "Consider userspace as in RCU extended quiescent state"
 +      depends on HAVE_RCU_USER_QS && SMP
 +      help
 +        This option sets hooks on kernel / userspace boundaries and
 +        puts RCU in extended quiescent state when the CPU runs in
 +        userspace. It means that when a CPU runs in userspace, it is
 +        excluded from the global RCU state machine and thus doesn't
 +        to keep the timer tick on for RCU.
 +
 +config RCU_USER_QS_FORCE
 +      bool "Force userspace extended QS by default"
 +      depends on RCU_USER_QS
 +      help
 +        Set the hooks in user/kernel boundaries by default in order to
 +        test this feature that treats userspace as an extended quiescent
 +        state until we have a real user like a full adaptive nohz option.
 +
  config RCU_FANOUT
        int "Tree-based hierarchical RCU fanout value"
        range 2 64 if 64BIT
@@@ -1216,7 -1153,8 +1216,8 @@@ menuconfig EXPER
  
  config UID16
        bool "Enable 16-bit UID system calls" if EXPERT
-       depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
+       depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) \
+               || AARCH32_EMULATION
        default y
        help
          This enables the legacy 16-bit UID syscall wrappers.
diff --combined kernel/sysctl.c
index 81c7b1a1a30745b9bf108b84c4ff116a483552e5,79dcb0063182e7051d2812b5f34ef57ce6ad69cd..84c76a34e41c7a01f3464506c5352cf00cf1f8ca
@@@ -307,7 -307,7 +307,7 @@@ static struct ctl_table kern_table[] = 
                .extra2         = &max_sched_tunable_scaling,
        },
        {
 -              .procname       = "sched_migration_cost",
 +              .procname       = "sched_migration_cost_ns",
                .data           = &sysctl_sched_migration_cost,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
        {
 -              .procname       = "sched_time_avg",
 +              .procname       = "sched_time_avg_ms",
                .data           = &sysctl_sched_time_avg,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
        {
 -              .procname       = "sched_shares_window",
 +              .procname       = "sched_shares_window_ns",
                .data           = &sysctl_sched_shares_window,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
@@@ -1544,7 -1544,7 +1544,7 @@@ static struct ctl_table fs_table[] = 
  
  static struct ctl_table debug_table[] = {
  #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) || \
-     defined(CONFIG_S390) || defined(CONFIG_TILE)
+     defined(CONFIG_S390) || defined(CONFIG_TILE) || defined(CONFIG_ARM64)
        {
                .procname       = "exception-trace",
                .data           = &show_unhandled_signals,
diff --combined lib/Kconfig.debug
index dacbbe4d7a805a40bfa2fb043b4f33e5d45ac8f8,cfb4578ac2f740e7cc3dd79e00ee85ff1addc839..35c4565ee8fa26d5ce1ca1147ac6ccbdf47cf386
@@@ -452,7 -452,8 +452,8 @@@ config SLUB_STAT
  config DEBUG_KMEMLEAK
        bool "Kernel memory leak detector"
        depends on DEBUG_KERNEL && EXPERIMENTAL && \
-               (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE)
+               (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || \
+                MICROBLAZE || TILE || ARM64)
  
        select DEBUG_FS
        select STACKTRACE if STACKTRACE_SUPPORT
@@@ -629,20 -630,6 +630,20 @@@ config PROVE_RCU_REPEATEDL
  
         Say N if you are unsure.
  
 +config PROVE_RCU_DELAY
 +      bool "RCU debugging: preemptible RCU race provocation"
 +      depends on DEBUG_KERNEL && PREEMPT_RCU
 +      default n
 +      help
 +       There is a class of races that involve an unlikely preemption
 +       of __rcu_read_unlock() just after ->rcu_read_lock_nesting has
 +       been set to INT_MIN.  This feature inserts a delay at that
 +       point to increase the probability of these races.
 +
 +       Say Y to increase probability of preemption of __rcu_read_unlock().
 +
 +       Say N if you are unsure.
 +
  config SPARSE_RCU_POINTER
        bool "RCU debugging: sparse-based checks for pointer usage"
        default n
@@@ -753,7 -740,8 +754,8 @@@ config DEBUG_BUGVERBOS
        bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
        depends on BUG
        depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \
-                  FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || TILE
+                  FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || \
+                  TILE || ARM64
        default y
        help
          Say Y here to make BUG() panics output the file name and line number
diff --combined tools/perf/perf.h
index 87f4ec6d1f367d76791855c58f25b432d0b769f2,8c36763b68904f95d8d61c7536e07cd296f88462..a89cbbb6180167181111e72a0050f1a44aac8e1d
@@@ -88,6 -88,12 +88,12 @@@ void get_term_dimensions(struct winsiz
  #define CPUINFO_PROC  "Processor"
  #endif
  
+ #ifdef __aarch64__
+ #include "../../arch/arm64/include/asm/unistd.h"
+ #define rmb()         asm volatile("dmb ld" ::: "memory")
+ #define cpu_relax()   asm volatile("yield" ::: "memory")
+ #endif
  #ifdef __mips__
  #include "../../arch/mips/include/asm/unistd.h"
  #define rmb()         asm volatile(                                   \
@@@ -209,15 -215,9 +215,15 @@@ void pthread__unblock_sigwinch(void)
  
  #include "util/target.h"
  
 +enum perf_call_graph_mode {
 +      CALLCHAIN_NONE,
 +      CALLCHAIN_FP,
 +      CALLCHAIN_DWARF
 +};
 +
  struct perf_record_opts {
        struct perf_target target;
 -      bool         call_graph;
 +      int          call_graph;
        bool         group;
        bool         inherit_stat;
        bool         no_delay;
        u64          branch_stack;
        u64          default_interval;
        u64          user_interval;
 +      u16          stack_dump_size;
  };
  
  #endif