1. 26 Nov, 2012 1 commit
  2. 05 Nov, 2012 1 commit
    • Will Deacon's avatar
      ARM: mm: remove IPI broadcasting on ASID rollover · b5466f87
      Will Deacon authored
      ASIDs are allocated to MMU contexts based on a rolling counter. This
      means that after 255 allocations we must invalidate all existing ASIDs
      via an expensive IPI mechanism to synchronise all of the online CPUs and
      ensure that all tasks execute with an ASID from the new generation.
      This patch changes the rollover behaviour so that we rely instead on the
      hardware broadcasting of the TLB invalidation to avoid the IPI calls.
      This works by keeping track of the active ASID on each core, which is
      then reserved in the case of a rollover so that currently scheduled
      tasks can continue to run. For cores without hardware TLB broadcasting,
      we keep track of pending flushes in a cpumask, so cores can flush their
      local TLB before scheduling a new mm.
      Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Tested-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
  3. 17 Apr, 2012 3 commits
  4. 24 Mar, 2012 1 commit
  5. 02 Oct, 2010 1 commit
    • Nicolas Pitre's avatar
      ARM: add a vma entry for the user accessible vector page · ec706dab
      Nicolas Pitre authored
      The kernel makes the high vector page visible to user space. This page
      contains (amongst others) small code segments that can be executed in
      user space.  Make this page visible through ptrace and /proc/<pid>/mem
      in order to let gdb perform code parsing needed for proper unwinding.
      For example, the ERESTART_RESTARTBLOCK handler actually has a stack
      frame -- it returns to a PC value stored on the user's stack.   To
      unwind after a "sleep" system call was interrupted twice, GDB would
      have to recognize this situation and understand that stack frame
      layout -- which it currently cannot do.
      We could fix this by hard-coding addresses in the vector page range into
      GDB, but that isn't really portable as not all of those addresses are
      guaranteed to remain stable across kernel releases.  And having the gdb
      process make an exception for this page and get  content from its own
      address space for it looks strange, and it is not future proof either.
      Being located above PAGE_OFFSET, this vma cannot be deleted by
      user space code.
      Signed-off-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
  6. 15 Feb, 2010 1 commit
    • Catalin Marinas's avatar
      ARM: 5905/1: ARM: Global ASID allocation on SMP · 11805bcf
      Catalin Marinas authored
      The current ASID allocation algorithm doesn't ensure the notification
      of the other CPUs when the ASID rolls over. This may lead to two
      processes using the same ASID (but different generation) or multiple
      threads of the same process using different ASIDs.
      This patch adds the broadcasting of the ASID rollover event to the
      other CPUs. To avoid a race on multiple CPUs modifying "cpu_last_asid"
      during the handling of the broadcast, the ASID numbering now starts at
      "smp_processor_id() + 1". At rollover, the cpu_last_asid will be set
      to NR_CPUS.
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
  7. 24 Sep, 2009 1 commit
  8. 24 Jul, 2009 1 commit
  9. 29 Nov, 2008 1 commit
  10. 01 Sep, 2008 1 commit
  11. 02 Aug, 2008 1 commit
  12. 03 Jul, 2008 1 commit
  13. 17 May, 2007 1 commit
    • Russell King's avatar
      [ARM] ARMv6: add CPU_HAS_ASID configuration · 516793c6
      Russell King authored
      Presently, we check for the minimum ARM architecture that we're
      building for to determine whether we need ASID support.  This is
      wrong - if we're going to support a range of CPUs which include
      ARMv6 or higher, we need the ASID.
      Convert the checks to use a new configuration symbol, and arrange
      for ARMv6 and higher CPU entries to select it.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
  14. 08 May, 2007 1 commit
    • Russell King's avatar
      [ARM] Fix ASID version switch · 8678c1f0
      Russell King authored
      Close a hole in the ASID version switch, particularly the following
      				  A	pid(A)
      				  A	idle(lazy tlb)
      		* new asid version triggered by B *
        B	pid(B)
        A	pid(A)
      		* MM A gets new asid version *
        A	idle(lazy tlb)
      				  A	pid(A)
      		* CPU1 doesn't see the new ASID *
      The result is that CPU1 continues running with the hardware set
      for the original (stale) ASID value, but mm->context.id contains
      the new ASID value.  The result is that the next MM fault on CPU1
      updates the page table entries, but flush_tlb_page() fails due to
      wrong ASID.
      There is a related case with a threaded application is allocated
      a new ASID on one CPU while another of its threads is running on
      some different CPU.  This scenario is not fixed by this commit.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
  15. 02 May, 2007 1 commit
    • Jeremy Fitzhardinge's avatar
      [PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction · d6dd61c8
      Jeremy Fitzhardinge authored
      Add hooks to allow a paravirt implementation to track the lifetime of
      an mm.  Paravirtualization requires three hooks, but only two are
      needed in common code.  They are:
      arch_dup_mmap, which is called when a new mmap is created at fork
      arch_exit_mmap, which is called when the last process reference to an
        mm is dropped, which typically happens on exit and exec.
      The third hook is activate_mm, which is called from the arch-specific
      activate_mm() macro/function, and so doesn't need stub versions for
      other architectures.  It's called when an mm is first used.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Signed-off-by: default avatarAndi Kleen <ak@suse.de>
      Cc: linux-arch@vger.kernel.org
      Cc: James Bottomley <James.Bottomley@SteelEye.com>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
  16. 29 Jun, 2006 1 commit
    • Russell King's avatar
      [ARM] Add section support to ioremap · ff0daca5
      Russell King authored
      Allow section mappings to be setup using ioremap() and torn down
      with iounmap().  This requires additional support in the MM
      context switch to ensure that mappings are properly synchronised
      when mapped in.
      Based an original implementation by Deepak Saxena, reworked and
      ARMv6 support added by rmk.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
  17. 28 Jun, 2006 1 commit
    • Russell King's avatar
      [ARM] nommu: adjust headers for !MMU ARM systems · 002547b4
      Russell King authored
      Majorily based on Hyok Choi's patches, this fixes up the asm-arm
      header files for mmuless systems.  Over and above Hyok's patches:
      - nommu.h merged into mmu.h (it's only a structure)
      - nommu_context.h is essentially the same as mmu_context.h, but
        without the MM switching code.
      so there's no point having separate files.  Also, in memory.h,
      there's no point #ifndef'ing PHYS_OFFSET and END_MEM - both
      CONFIG_DRAM_BASE and CONFIG_DRAM_SIZE will always be set by the
      configuration scripts.
      Other files have minor formatting changes, but are essentially
      the same.  Hyok's original patches were signed off thusly:
      Signed-off-by: default avatarHyok S. Choi <hyok.choi@samsung.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
  18. 16 Nov, 2005 1 commit
  19. 06 Nov, 2005 1 commit
  20. 03 Nov, 2005 1 commit
  21. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      Let it rip!