1. 13 1月, 2012 1 次提交
  2. 08 12月, 2011 2 次提交
  3. 06 12月, 2011 2 次提交
    • W
      ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting · 4e8ee7de
      Will Deacon 提交于
      The ARM SMP booting code allocates a temporary set of page tables
      containing an identity mapping of the kernel image and provides this
      to secondary CPUs for initial booting.
      
      In reality, we only need to include the __turn_mmu_on function in the
      identity mapping since the rest of the kernel is executing from virtual
      addresses after this point.
      
      This patch adds __turn_mmu_on to the .idmap.text section, allowing the
      SMP booting code to use the idmap_pgd directly and not have to populate
      its own set of page table.
      
      As a result of this patch, we can make the identity_mapping_add function
      static (since it is only used within mm/idmap.c) and also remove the
      identity_mapping_del function. The identity map population is moved to
      an early initcall so that it is setup in time for secondary CPU bringup.
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      4e8ee7de
    • W
      ARM: head.S: only include __turn_mmu_on in the initial identity mapping · 72662e01
      Will Deacon 提交于
      __create_page_tables identity maps the region of memory from
      __enable_mmu to the end of __turn_mmu_on.
      
      In preparation for including __turn_mmu_on in the .idmap.text section,
      this patch modifies the identity mapping so that it only includes the
      __turn_mmu_on code.
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      72662e01
  4. 09 11月, 2011 1 次提交
  5. 26 9月, 2011 2 次提交
  6. 23 8月, 2011 1 次提交
  7. 13 8月, 2011 1 次提交
  8. 19 7月, 2011 1 次提交
    • D
      ARM: 6999/1: head, zImage: Always Enter the kernel in ARM state · 540b5738
      Dave Martin 提交于
      Currently, the documented kernel entry requirements are not
      explicit about whether the kernel should be entered in ARM or
      Thumb, leading to an ambiguitity about how to enter Thumb-2
      kernels.  As a result, the kernel is reliant on the zImage
      decompressor to enter the kernel proper in the correct instruction
      set state.
      
      This patch changes the boot entry protocol for head.S and Image to
      be the same as for zImage: in all cases, the kernel is now entered
      in ARM.
      
      Documentation/arm/Booting is updated to reflect this new policy.
      
      A different rule will be needed for Cortex-M class CPUs as and when
      support for those lands in mainline, since these CPUs don't support
      the ARM instruction set at all: a note is added to the effect that
      the kernel must be entered in Thumb on such systems.
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Acked-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      540b5738
  9. 26 5月, 2011 1 次提交
  10. 11 5月, 2011 1 次提交
  11. 11 3月, 2011 1 次提交
  12. 18 2月, 2011 4 次提交
  13. 16 2月, 2011 1 次提交
  14. 10 2月, 2011 1 次提交
  15. 01 2月, 2011 1 次提交
  16. 20 12月, 2010 2 次提交
    • D
      ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. · ed3768a8
      Dave Martin 提交于
        * __fixup_smp_on_up has been modified with support for the
          THUMB2_KERNEL case.  For THUMB2_KERNEL only, fixups are split
          into halfwords in case of misalignment, since we can't rely on
          unaligned accesses working before turning the MMU on.
      
          No attempt is made to optimise the aligned case, since the
          number of fixups is typically small, and it seems best to keep
          the code as simple as possible.
      
        * Add a rotate in the fixup_smp code in order to support
          CPU_BIG_ENDIAN, as suggested by Nicolas Pitre.
      
        * Add an assembly-time sanity-check to ALT_UP() to ensure that
          the content really is the right size (4 bytes).
      
          (No check is done for ALT_SMP().  Possibly, this could be fixed
          by splitting the two uses ot ALT_SMP() (ALT_SMP...SMP_UP versus
          ALT_SMP...SMP_UP_B) into two macros.  In the first case,
          ALT_SMP needs to expand to >= 4 bytes, not == 4.)
      
        * smp_mpidr.h (which implements ALT_SMP()/ALT_UP() manually due
          to macro limitations) has not been modified: the affected
          instruction (mov) has no 16-bit encoding, so the correct
          instruction size is satisfied in this case.
      
        * A "mode" parameter has been added to smp_dmb:
      
          smp_dmb arm @ assumes 4-byte instructions (for ARM code, e.g. kuser)
          smp_dmb     @ uses W() to ensure 4-byte instructions for ALT_SMP()
      
          This avoids assembly failures due to use of W() inside smp_dmb,
          when assembling pure-ARM code in the vectors page.
      
          There might be a better way to achieve this.
      
        * Kconfig: make SMP_ON_UP depend on
          (!THUMB2_KERNEL || !BIG_ENDIAN) i.e., THUMB2_KERNEL is now
          supported, but only if !BIG_ENDIAN (The fixup code for Thumb-2
          currently assumes little-endian order.)
      
      Tested using a single generic realview kernel on:
      	ARM RealView PB-A8 (CONFIG_THUMB2_KERNEL={n,y})
      	ARM RealView PBX-A9 (SMP)
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Acked-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ed3768a8
    • R
      ARM: SMP: use more sane register allocation for __fixup_smp_on_up · 0eb0511d
      Russell King 提交于
      Use r0,r3-r6 rather than r0,r3,r4,r6,r7, which makes it easier to
      understand which registers can be modified.  Also document which
      registers hold values which must be preserved.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      0eb0511d
  17. 30 11月, 2010 2 次提交
  18. 20 10月, 2010 1 次提交
  19. 08 10月, 2010 4 次提交
  20. 05 10月, 2010 1 次提交
    • R
      ARM: Allow SMP kernels to boot on UP systems · f00ec48f
      Russell King 提交于
      UP systems do not implement all the instructions that SMP systems have,
      so in order to boot a SMP kernel on a UP system, we need to rewrite
      parts of the kernel.
      
      Do this using an 'alternatives' scheme, where the kernel code and data
      is modified prior to initialization to replace the SMP instructions,
      thereby rendering the problematical code ineffectual.  We use the linker
      to generate a list of 32-bit word locations and their replacement values,
      and run through these replacements when we detect a UP system.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      f00ec48f
  21. 24 11月, 2009 1 次提交
  22. 24 7月, 2009 1 次提交
  23. 01 9月, 2008 1 次提交
  24. 06 3月, 2008 1 次提交
  25. 12 7月, 2007 1 次提交
  26. 08 5月, 2007 1 次提交
  27. 04 5月, 2007 1 次提交
    • N
      [ARM] 4227/1: minor head.S fixups · 40435792
      Nicolas Pitre 提交于
      Let's surround constructs like:
      
      	orr	r3, r3, #(KERNEL_RAM_PADDR & 0x00f00000)
      
      between .if .endif since (KERNEL_RAM_PADDR & 0x00f00000) is 0 in 99% of
      all cases.
      
      Also let's mask PHYS_OFFSET with 0x00f00000 instead of 0x00e00000.
      Section mappings are really 1MB not 2MB and the 2MB groupping is
      a higher level issue already much better enforced with
      
      #if (PHYS_OFFSET & 0x001fffff)
      #error "PHYS_OFFSET must be at an even 2MiB boundary!"
      #endif
      
      at the top of the file.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      40435792
  28. 26 2月, 2007 2 次提交