1. 17 10月, 2011 1 次提交
    • V
      ARM: 7011/1: Add ARM cpu topology definition · c9018aab
      Vincent Guittot 提交于
      The affinity between ARM processors is defined in the MPIDR register.
      We can identify which processors are in the same cluster,
      and which ones have performance interdependency. We can define the
      cpu topology of ARM platform, that is then used by sched_mc and sched_smt.
      
      The default state of sched_mc and sched_smt config is disable.
      When enabled, the behavior of the scheduler can be modified with
      sched_mc_power_savings and sched_smt_power_savings sysfs interfaces.
      
      Changes since v4 :
      *  Remove unnecessary parentheses and blank lines
      
      Changes since v3 :
      * Update the format of printk message
      * Remove blank line
      
      Changes since v2 :
      * Update the commit message and some comments
      
      Changes since v1 :
      * Update the commit message
      * Add read_cpuid_mpidr in arch/arm/include/asm/cputype.h
      * Modify header of arch/arm/kernel/topology.c
      * Modify tests and manipulation of MPIDR's bitfields
      * Modify the place and dependancy of the config
      * Modify Noop functions
      Signed-off-by: NVincent Guittot <vincent.guittot@linaro.org>
      Reviewed-by: NAmit Kucheria <amit.kucheria@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c9018aab
  2. 27 7月, 2011 1 次提交
  3. 07 7月, 2011 1 次提交
    • S
      ARM: 6993/1: platsmp: Allow secondary cpu hotplug with maxcpus=1 · 7fa22bd5
      Stephen Boyd 提交于
      If an ARM system has multiple cpus in the same socket and the
      kernel is booted with maxcpus=1, secondary cpus are possible but
      not present due to how platform_smp_prepare_cpus() is called.
      Since most typical ARM processors don't actually support physical
      hotplug, initialize the present map to be equal to the possible
      map in generic ARM SMP code. Also, always call
      platform_smp_prepare_cpus() as long as max_cpus is non-zero (0
      means no SMP) to allow platform code to do any SMP setup.
      
      After applying this patch it's possible to boot an ARM system
      with maxcpus=1 on the command line and then hotplug in secondary
      cpus via sysfs. This is more in line with how x86 does things.
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      7fa22bd5
  4. 21 6月, 2011 1 次提交
  5. 26 5月, 2011 1 次提交
  6. 23 5月, 2011 1 次提交
  7. 28 4月, 2011 1 次提交
  8. 14 4月, 2011 1 次提交
  9. 24 2月, 2011 1 次提交
    • S
      ARM: 6759/1: smp: Select local timers vs broadcast timer support runtime · af90f10d
      Santosh Shilimkar 提交于
      The current code support of dummy timers in absence of local
      timer is compile time. This is an attempt to convert it to runtime
      so that on few SOC version if the local timers aren't supported
      kernel can switch to dummy timers. OMAP4430 ES1.0 does suffer from
      this limitation.
      
      This patch should not have any functional impact on affected
      files.
      
      Cc: Daniel Walker <dwalker@codeaurora.org>
      Cc: Bryan Huntsman <bryanh@codeaurora.org>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Colin Cross <ccross@android.com>
      Cc: Erik Gilling <konkers@android.com>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Acked-by: NDavid Brown <davidb@codeaurora.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      af90f10d
  10. 22 12月, 2010 2 次提交
  11. 21 12月, 2010 1 次提交
  12. 20 12月, 2010 15 次提交
  13. 18 12月, 2010 1 次提交
  14. 03 12月, 2010 3 次提交
  15. 20 11月, 2010 1 次提交
  16. 08 10月, 2010 1 次提交
  17. 05 10月, 2010 1 次提交
  18. 27 7月, 2010 2 次提交
    • R
      ARM: call machine_shutdown() from machine_halt(), etc · 3d3f78d7
      Russell King 提交于
      x86 calls machine_shutdown() from the various machine_*() calls which
      take the machine down ready for halting, restarting, etc, and uses
      this to bring the system safely to a point where those actions can be
      performed.  Such actions are stopping the secondary CPUs.
      
      So, change the ARM implementation of these to reflect what x86 does.
      
      This solves kexec problems on ARM SMP platforms, where the secondary
      CPUs were left running across the kexec call.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3d3f78d7
    • R
      ARM: SMP: Always enable clock event broadcast support · 5388a6b2
      Russell King 提交于
      The TWD local timers are unable to wake up the CPU when it is placed
      into a low power mode, eg. C3.  Therefore, we need to adapt things
      such that the TWD code can cope with this.
      
      We do this by always providing a broadcast tick function, and marking
      the fact that the TWD local timer will stop in low power modes.  This
      means that when the CPU is placed into a low power mode, the core
      timer code marks this fact, and allows an IPI to be given to the core.
      Tested-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      5388a6b2
  19. 15 5月, 2010 1 次提交
  20. 01 5月, 2010 1 次提交
    • S
      ARM: 6066/1: Fix "BUG: scheduling while atomic: swapper/0/0x00000002 · 13ea9cc8
      Santosh Shilimkar 提交于
      This patch fixes the preempt leak in the cpuidle path invoked from
      cpu-hotplug. The fix is suggested by Russell King and is based
      on x86 idea of calling init_idle() on the idle task when it's
      re-used which also resets the preempt count amongst other things
      
      dump:
      BUG: scheduling while atomic: swapper/0/0x00000002
      Modules linked in:
      Backtrace:
      [<c0024f90>] (dump_backtrace+0x0/0x110) from [<c0173bc4>] (dump_stack+0x18/0x1c)
       r7:c02149e4 r6:c033df00 r5:c7836000 r4:00000000
      [<c0173bac>] (dump_stack+0x0/0x1c) from [<c003b4f0>] (__schedule_bug+0x60/0x70)
      [<c003b490>] (__schedule_bug+0x0/0x70) from [<c0174214>] (schedule+0x98/0x7b8)
       r5:c7836000 r4:c7836000
      [<c017417c>] (schedule+0x0/0x7b8) from [<c00228c4>] (cpu_idle+0xb4/0xd4)
      # [<c0022810>] (cpu_idle+0x0/0xd4) from [<c0171dd8>] (secondary_start_kernel+0xe0/0xf0)
       r5:c7836000 r4:c0205f40
      [<c0171cf8>] (secondary_start_kernel+0x0/0xf0) from [<c002d57c>] (prm_rmw_mod_reg_bits+0x88/0xa4)
       r7:c02149e4 r6:00000001 r5:00000001 r4:c7836000
      Backtrace aborted due to bad frame pointer <c7837fbc>
      
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      13ea9cc8
  21. 15 3月, 2010 1 次提交
  22. 29 9月, 2009 1 次提交
    • R
      ARM: Fix __cpuexit section mismatch warnings · 90140c30
      Russell King 提交于
      Fix:
      
      WARNING: vmlinux.o(.text+0x247c): Section mismatch in reference from the function cpu_idle() to the function .cpuexit.text:cpu_die()
      The function cpu_idle() references a function in an exit section.
      Often the function cpu_die() has valid usage outside the exit section
      and the fix is to remove the __cpuexit annotation of cpu_die.
      
      WARNING: vmlinux.o(.cpuexit.text+0x3c): Section mismatch in reference from the function cpu_die() to the function .cpuinit.text:secondary_start_kernel()
      The function __cpuexit cpu_die() references
      a function __cpuinit secondary_start_kernel().
      This is often seen when error handling in the exit function
      uses functionality in the init path.
      The fix is often to remove the __cpuinit annotation of
      secondary_start_kernel() so it may be used outside an init section.
      
      Sam says:
      > The annotation of cpu_die() is wrong.
      > To be annotated __cpuexit the function shall:
      > - be used in exit context and only in exit context with HOTPLUG_CPU=n
      > - be used outside exit context with HOTPLUG_CPU=y
      
      So, this also means __cpu_disable(), __cpu_die() and twd_timer_stop() are
      also wrong.  However, removing __cpuexit from cpu_die() creates:
      
      WARNING: vmlinux.o(.text+0x6834): Section mismatch in reference from the function cpu_die() to the function .cpuinit.text:secondary_start_kernel()
      The function cpu_die() references
      the function __cpuinit secondary_start_kernel().
      This is often because cpu_die lacks a __cpuinit
      annotation or the annotation of secondary_start_kernel is wrong.
      
      so fix this using __ref.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      90140c30