1. Jun 18, 2013
    • Stephen Warren's avatar
      ARM: 7759/1: decouple CPU offlining from reboot/shutdown · 19ab428f
      Stephen Warren authored
      
      
      Add comments to machine_shutdown()/halt()/power_off()/restart() that
      describe their purpose and/or requirements re: CPUs being active/not.
      
      In machine_shutdown(), replace the call to smp_send_stop() with a call to
      disable_nonboot_cpus(). This completely disables all but one CPU, thus
      satisfying the requirement that only a single CPU be active for kexec.
      Adjust Kconfig dependencies for this change.
      
      In machine_halt()/power_off()/restart(), call smp_send_stop() directly,
      rather than via machine_shutdown(); these functions don't need to
      completely de-activate all CPUs using hotplug, but rather just quiesce
      them.
      
      Remove smp_kill_cpus(), and its call from smp_send_stop().
      smp_kill_cpus() was indirectly calling smp_ops.cpu_kill() without calling
      smp_ops.cpu_die() on the target CPUs first. At least some implementations
      of smp_ops had issues with this; it caused cpu_kill() to hang on Tegra,
      for example. Since smp_send_stop() is only used for shutdown, halt, and
      power-off, there is no need to attempt any kind of CPU hotplug here.
      
      Adjust Kconfig to reflect that machine_shutdown() (and hence kexec)
      relies upon disable_nonboot_cpus(). However, this alone doesn't guarantee
      that hotplug will work, or even that hotplug is implemented for a
      particular piece of HW that a multi-platform zImage runs on. Hence, add
      error-checking to machine_kexec() to determine whether it did work.
      
      Suggested-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Tested-by: default avatarZhangfei Gao <zhangfei.gao@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      19ab428f
  2. Jun 17, 2013
  3. Jun 06, 2013
    • Will Deacon's avatar
      ARM: 7747/1: pcpu: ensure __my_cpu_offset cannot be re-ordered across barrier() · 509eb76e
      Will Deacon authored
      
      
      __my_cpu_offset is non-volatile, since we want its value to be cached
      when we access several per-cpu variables in a row with preemption
      disabled. This means that we rely on preempt_{en,dis}able to hazard
      with the operation via the barrier() macro, so that we can't end up
      migrating CPUs without reloading the per-cpu offset.
      
      Unfortunately, GCC doesn't treat a "memory" clobber on a non-volatile
      asm block as a side-effect, and will happily re-order it before other
      memory clobbers (including those in prempt_disable()) and cache the
      value. This has been observed to break the cmpxchg logic in the slub
      allocator, leading to livelock in kmem_cache_alloc in mainline kernels.
      
      This patch adds a dummy memory input operand to __my_cpu_offset,
      forcing it to be ordered with respect to the barrier() macro.
      
      Cc: <stable@vger.kernel.org>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      509eb76e
    • Marc C's avatar
      ARM: 7750/1: update legacy CPU ID in decompressor cache support jump table · ced2a3b8
      Marc C authored
      
      
      The previous mask values for the legacy ARM CPU IDs were conflicting
      with the CPU ID assignments for late-generation CPUs (like the
      Qualcomm MSM/QSD or Broadcom Brahma-15 processors). This change
      corrects the legacy ARM CPU ID value so that the jump table can
      fall-through to the appropriate cache maintenance / MMU functions.
      
      Signed-off-by: default avatarMarc C <marc.ceeeee@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      ced2a3b8
    • Arnd Bergmann's avatar
      ARM: 7743/1: compressed/head.S: work around new binutils warning · da94a829
      Arnd Bergmann authored
      In August 2012, Matthew Gretton-Dann checked a change into binutils
      labelled "Error on obsolete & warn on deprecated registers", apparently as
      part of ARMv8 support. Apparently, this was supposed to emit the message
      "Warning: This coprocessor register access is deprecated in ARMv8" when
      using certain mcr/mrc instructions and building for ARMv8. Unfortunately,
      the message that is actually emitted appears to be '(null)', which is
      less helpful in comparison.
      
      Even more unfortunately, this is biting us on every single kernel
      build with a new gas, because arch/arm/boot/compressed/head.S and some
      other files in that directory are built with -march=all since kernel
      commit 80cec14a
      
       "[ARM] Add -march=all to assembly file build in
      arch/arm/boot/compressed" back in v2.6.28.
      
      This patch reverts Russell's nice solution and instead marks the head.S
      file to be built for armv7-a, which fortunately lets us build all
      instructions in that file without warnings even on the broken binutils.
      
      Without this patch, building anything results in:
      
      arch/arm/boot/compressed/head.S: Assembler messages:
      arch/arm/boot/compressed/head.S:565: Warning: (null)
      arch/arm/boot/compressed/head.S:676: Warning: (null)
      arch/arm/boot/compressed/head.S:698: Warning: (null)
      arch/arm/boot/compressed/head.S:722: Warning: (null)
      arch/arm/boot/compressed/head.S:726: Warning: (null)
      arch/arm/boot/compressed/head.S:957: Warning: (null)
      arch/arm/boot/compressed/head.S:996: Warning: (null)
      arch/arm/boot/compressed/head.S:997: Warning: (null)
      arch/arm/boot/compressed/head.S:1027: Warning: (null)
      arch/arm/boot/compressed/head.S:1035: Warning: (null)
      arch/arm/boot/compressed/head.S:1046: Warning: (null)
      arch/arm/boot/compressed/head.S:1060: Warning: (null)
      arch/arm/boot/compressed/head.S:1092: Warning: (null)
      arch/arm/boot/compressed/head.S:1094: Warning: (null)
      arch/arm/boot/compressed/head.S:1095: Warning: (null)
      arch/arm/boot/compressed/head.S:1102: Warning: (null)
      arch/arm/boot/compressed/head.S:1134: Warning: (null)
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: stable@vger.kernel.org
      Cc: Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      da94a829
    • Arnd Bergmann's avatar
      ARM: 7742/1: topology: export cpu_topology · 92bdd3f5
      Arnd Bergmann authored
      
      
      The cpu_topology symbol is required by any driver using the topology
      interfaces, which leads to a couple of build errors:
      
      ERROR: "cpu_topology" [drivers/net/ethernet/sfc/sfc.ko] undefined!
      ERROR: "cpu_topology" [drivers/cpufreq/arm_big_little.ko] undefined!
      ERROR: "cpu_topology" [drivers/block/mtip32xx/mtip32xx.ko] undefined!
      
      The obvious solution is to export this symbol.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Cc: stable@vger.kernel.org
      Cc: Nicolas Pitre <nico@linaro.org>
      Cc: Vincent Guittot <vincent.guittot@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      92bdd3f5
    • Nicolas Pitre's avatar
      ARM: 7737/1: fix kernel decompressor compilation error with CONFIG_DEBUG_SEMIHOSTING · 27523679
      Nicolas Pitre authored
      
      
      Selecting this option produces:
      
        AS      arch/arm/boot/compressed/debug.o
      arch/arm/boot/compressed/debug.S:4:33: fatal error: mach/debug-macro.S: No such file or directory
      compilation terminated.
      make[3]: *** [arch/arm/boot/compressed/debug.o] Error 1
      
      The semihosting support cannot be modelled into a senduart macro as
      it requires memory space for argument passing.  So the
      CONFIG_DEBUG_LL_INCLUDE may not have any sensible value and the include
      directive should be omitted.
      
      While at it, let's add proper semihosting output support to the
      decompressor.
      
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      27523679
  4. Jun 02, 2013
    • Linus Torvalds's avatar
      Linux 3.10-rc4 · d683b96b
      Linus Torvalds authored
      d683b96b
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · cc863973
      Linus Torvalds authored
      Pull parisc fixes from Helge Deller:
       "This patcheset includes fixes for:
      
         - the PCI/LBA which brings back the stifb graphics framebuffer
           console
         - possible memory overflows in parisc kernel init code
         - parport support on older GSC machines
         - avoids that users by mistake enable PARPORT_PC_SUPERIO on parisc
         - MAINTAINERS file list updates for parisc."
      
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: parport0: fix this legacy no-device port driver!
        parport_pc: disable PARPORT_PC_SUPERIO on parisc architecture
        parisc/PCI: lba: fix: convert to pci_create_root_bus() for correct root bus resources (v2)
        parisc/PCI: Set type for LBA bus_num resource
        MAINTAINERS: update parisc architecture file list
        parisc: kernel: using strlcpy() instead of strcpy()
        parisc: rename "CONFIG_PA7100" to "CONFIG_PA7000"
        parisc: fix kernel BUG at arch/parisc/include/asm/mmzone.h:50
        parisc: memory overflow, 'name' length is too short for using
      cc863973
  5. Jun 01, 2013