1. 19 2月, 2011 1 次提交
  2. 26 1月, 2011 2 次提交
  3. 25 1月, 2011 1 次提交
    • R
      ARM: realview,vexpress: fix section mismatch warning for pen_release · ec15038f
      Russell King 提交于
      Fix two section mismatch warnings in the platform SMP bringup code for
      Realview and Versatile Express:
      
      WARNING: arch/arm/mach-realview/built-in.o(.text+0x8ac): Section mismatch in reference from the function write_pen_release() to the variable .cpuinit.data:pen_release
      The function write_pen_release() references
      the variable __cpuinitdata pen_release.
      This is often because write_pen_release lacks a __cpuinitdata
      annotation or the annotation of pen_release is wrong.
      
      WARNING: arch/arm/mach-vexpress/built-in.o(.text+0x7b4): Section mismatch in reference from the function write_pen_release() to the variable .cpuinit.data:pen_release
      The function write_pen_release() references
      the variable __cpuinitdata pen_release.
      This is often because write_pen_release lacks a __cpuinitdata
      annotation or the annotation of pen_release is wrong.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ec15038f
  4. 05 1月, 2011 1 次提交
  5. 20 12月, 2010 6 次提交
    • R
    • R
      ARM: Fix subtle race in CPU pen_release hotplug code · 3705ff6d
      Russell King 提交于
      There is a subtle race in the CPU hotplug code, where a CPU which has
      been offlined can online itself before being requested, which results
      in things going astray on the next online/offline cycle.
      
      What happens in the normal online/offline/online cycle is:
      
      	CPU0			CPU3
      	requests boot of CPU3
      	pen_release = 3
      	flush cache line
      				checks pen_release, reads 3
      				starts boot
      				pen_release = -1
      	... requests CPU3 offline ...
      				... dies ...
      				checks pen_release, reads -1
      	requests boot of CPU3
      	pen_release = 3
      	flush cache line
      				checks pen_release, reads 3
      				starts boot
      				pen_release = -1
      
      However, as the write of -1 of pen_release is not fully flushed back to
      memory, and the checking of pen_release is done with caches disabled,
      this allows CPU3 the opportunity to read the old value of pen_release:
      
      	CPU0			CPU3
      	requests boot of CPU3
      	pen_release = 3
      	flush cache line
      				checks pen_release, reads 3
      				starts boot
      				pen_release = -1
      	... requests CPU3 offline ...
      				... dies ...
      				checks pen_release, reads 3
      				starts boot
      				pen_release = -1
      	requests boot of CPU3
      	pen_release = 3
      	flush cache line
      
      Fix this by grouping the write of pen_release along with its cache line
      flushing code to ensure that any update to pen_release is always pushed
      out to physical memory.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3705ff6d
    • R
      ARM: SMP: remove smp_mpidr.h · 86e62b93
      Russell King 提交于
      With "ARM: CPU hotplug: remove bug checks in platform_cpu_die()", we
      now do not use hard_smp_processor_id(), we no longer need to read the
      hardware processor ID.  Remove the include providing this function.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      86e62b93
    • R
      ARM: SMP: consolidate trace_hardirqs_off() into common SMP code · 2c0136db
      Russell King 提交于
      All platforms call trace_hardirqs_off() in their secondary startup code,
      so move this into the core SMP code - it doesn't need to be in the
      per-platform code.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      2c0136db
    • R
      ARM: SMP: consolidate the common parts of smp_prepare_cpus() · 05c74a6c
      Russell King 提交于
      There is a certain amount of smp_prepare_cpus() which doesn't belong
      in the platform support code - that is, code which is invariant to the
      SMP implementation.  Move this code into arch/arm/kernel/smp.c, and
      add a platform_ prefix to the original function.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      05c74a6c
    • R
      ARM: SMP: Clean up ncores sanity checks · 8975b6c0
      Russell King 提交于
      scu_get_core_count() never returns zero cores, so we don't need to
      check and correct if ncores is zero.
      
      Tegra was missing the check against NR_CPUS, leading to a potential
      bitfield overflow if this becomes the case.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8975b6c0
  6. 15 12月, 2010 4 次提交
  7. 07 12月, 2010 1 次提交
  8. 03 12月, 2010 1 次提交
  9. 30 11月, 2010 1 次提交
    • D
      ARM: 6508/1: vexpress: Correct data alignment in headsmp.S for CONFIG_THUMB2_KERNEL · 618d9c8f
      Dave Martin 提交于
      Directives such as .long and .word do not magically cause the
      assembler location counter to become aligned in gas.  As a
      result, using these directives in code sections can result in
      misaligned data words when building a Thumb-2 kernel
      (CONFIG_THUMB2_KERNEL).
      
      This is a Bad Thing, since the ABI permits the compiler to
      assume that fundamental types of word size or above are word-
      aligned when accessing them from C.  If the data is not really
      word-aligned, this can cause impaired performance and stray
      alignment faults in some circumstances.
      
      In general, the following rules should be applied when using
      data word declaration directives inside code sections:
      
          * .quad and .double:
               .align 3
      
          * .long, .word, .single, .float:
               .align (or .align 2)
      
          * .short:
              No explicit alignment required, since Thumb-2
              instructions are always 2 or 4 bytes in size.
              immediately after an instruction.
      Reviewed-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      618d9c8f
  10. 26 11月, 2010 1 次提交
  11. 10 11月, 2010 1 次提交
  12. 04 11月, 2010 1 次提交
  13. 20 10月, 2010 2 次提交
  14. 05 10月, 2010 2 次提交
    • R
      ARM: fix section mismatch warnings in Versatile Express · cdaf9a2f
      Russell King 提交于
      WARNING: vmlinux.o(.text+0xbf30): Section mismatch in reference from the function v2m_timer_init() to the function .init.text:sp804_clocksource_init()
      The function v2m_timer_init() references
      the function __init sp804_clocksource_init().
      This is often because v2m_timer_init lacks a __init
      annotation or the annotation of sp804_clocksource_init is wrong.
      
      WARNING: vmlinux.o(.text+0xbf3c): Section mismatch in reference from the function v2m_timer_init() to the function .init.text:sp804_clockevents_init()
      The function v2m_timer_init() references
      the function __init sp804_clockevents_init().
      This is often because v2m_timer_init lacks a __init
      annotation or the annotation of sp804_clockevents_init is wrong.
      
      WARNING: vmlinux.o(.text+0xc524): Section mismatch in reference from the function ct_ca9x4_init() to the function .init.text:l2x0_init()
      The function ct_ca9x4_init() references
      the function __init l2x0_init().
      This is often because ct_ca9x4_init lacks a __init
      annotation or the annotation of l2x0_init is wrong.
      
      WARNING: vmlinux.o(.text+0xc530): Section mismatch in reference from the function ct_ca9x4_init() to the function .init.text:clkdev_add_table()
      The function ct_ca9x4_init() references
      the function __init clkdev_add_table().
      This is often because ct_ca9x4_init lacks a __init
      annotation or the annotation of clkdev_add_table is wrong.
      
      WARNING: vmlinux.o(.text+0xc578): Section mismatch in reference from the function ct_ca9x4_init() to the (unknown reference) .init.data:(unknown)
      The function ct_ca9x4_init() references
      the (unknown reference) __initdata (unknown).
      This is often because ct_ca9x4_init lacks a __initdata
      annotation or the annotation of (unknown) is wrong.
      
      Fix these by making ct_ca9x4_init() and v2m_timer_init() both __init.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      cdaf9a2f
    • R
      ARM: Provide common header for hard_smp_processor_id() · 06717352
      Russell King 提交于
      Provide a common header to read the SMP CPU number from the MPIDR.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      06717352
  15. 27 9月, 2010 1 次提交
  16. 17 9月, 2010 1 次提交
  17. 31 7月, 2010 1 次提交
  18. 22 7月, 2010 1 次提交
  19. 09 7月, 2010 1 次提交
  20. 01 7月, 2010 1 次提交
  21. 28 6月, 2010 1 次提交
  22. 02 5月, 2010 4 次提交