1. 15 1月, 2018 1 次提交
    • J
      arm64: sdei: Add trampoline code for remapping the kernel · 79e9aa59
      James Morse 提交于
      When CONFIG_UNMAP_KERNEL_AT_EL0 is set the SDEI entry point and the rest
      of the kernel may be unmapped when we take an event. If this may be the
      case, use an entry trampoline that can switch to the kernel page tables.
      
      We can't use the provided PSTATE to determine whether to switch page
      tables as we may have interrupted the kernel's entry trampoline, (or a
      normal-priority event that interrupted the kernel's entry trampoline).
      Instead test for a user ASID in ttbr1_el1.
      
      Save a value in regs->addr_limit to indicate whether we need to restore
      the original ASID when returning from this event. This value is only used
      by do_page_fault(), which we don't call with the SDEI regs.
      Signed-off-by: NJames Morse <james.morse@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      79e9aa59
  2. 09 1月, 2018 1 次提交
  3. 11 12月, 2017 4 次提交
  4. 23 8月, 2017 1 次提交
    • Y
      arm64: introduce separated bits for mm_context_t flags · 5ce93ab6
      Yury Norov 提交于
      Currently mm->context.flags field uses thread_info flags which is not
      the best idea for many reasons. For example, mm_context_t doesn't need
      most of thread_info flags. And it would be difficult to add new mm-related
      flag if needed because it may easily interfere with TIF ones.
      
      To deal with it, the new MMCF_AARCH32 flag is introduced for
      mm_context_t->flags, where MMCF prefix stands for mm_context_t flags.
      Also, mm_context_t flag doesn't require atomicity and ordering of the
      access, so using set/clear_bit() is replaced with simple masks.
      Signed-off-by: NYury Norov <ynorov@caviumnetworks.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      5ce93ab6
  5. 23 3月, 2017 1 次提交
  6. 08 11月, 2016 2 次提交
  7. 01 7月, 2016 1 次提交
    • A
      arm64: mm: add param to force create_pgd_mapping() to use page mappings · 53e1b329
      Ard Biesheuvel 提交于
      Add a bool parameter 'allow_block_mappings' to create_pgd_mapping() and
      the various helper functions that it descends into, to give the caller
      control over whether block entries may be used to create the mapping.
      
      The UEFI runtime mapping routines will use this to avoid creating block
      entries that would need to split up into page entries when applying the
      permissions listed in the Memory Attributes firmware table.
      
      This also replaces the block_mappings_allowed() helper function that was
      added for DEBUG_PAGEALLOC functionality, but the resulting code is
      functionally equivalent (given that debug_page_alloc does not operate on
      EFI page table entries anyway)
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      53e1b329
  8. 16 4月, 2016 1 次提交
  9. 07 10月, 2015 1 次提交
    • W
      arm64: mm: rewrite ASID allocator and MM context-switching code · 5aec715d
      Will Deacon 提交于
      Our current switch_mm implementation suffers from a number of problems:
      
        (1) The ASID allocator relies on IPIs to synchronise the CPUs on a
            rollover event
      
        (2) Because of (1), we cannot allocate ASIDs with interrupts disabled
            and therefore make use of a TIF_SWITCH_MM flag to postpone the
            actual switch to finish_arch_post_lock_switch
      
        (3) We run context switch with a reserved (invalid) TTBR0 value, even
            though the ASID and pgd are updated atomically
      
        (4) We take a global spinlock (cpu_asid_lock) during context-switch
      
        (5) We use h/w broadcast TLB operations when they are not required
            (e.g. in flush_context)
      
      This patch addresses these problems by rewriting the ASID algorithm to
      match the bitmap-based arch/arm/ implementation more closely. This in
      turn allows us to remove much of the complications surrounding switch_mm,
      including the ugly thread flag.
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      5aec715d
  10. 27 7月, 2015 1 次提交
  11. 02 6月, 2015 1 次提交
  12. 13 1月, 2015 1 次提交
  13. 12 1月, 2015 1 次提交
  14. 01 5月, 2014 1 次提交
  15. 25 4月, 2014 1 次提交
    • L
      arm64: initialize spinlock for init_mm's context · 8f071203
      Leo Yan 提交于
      ARM64 has defined the spinlock for init_mm's context, so need initialize
      the spinlock structure; otherwise during the suspend flow it will dump
      the info for spinlock's bad magic warning as below:
      
      [   39.084394] Disabling non-boot CPUs ...
      [   39.092871] BUG: spinlock bad magic on CPU#1, swapper/1/0
      [   39.092896]  lock: init_mm+0x338/0x3e0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      [   39.092907] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G           O 3.10.33 #125
      [   39.092912] Call trace:
      [   39.092927] [<ffffffc000087e64>] dump_backtrace+0x0/0x16c
      [   39.092934] [<ffffffc000087fe0>] show_stack+0x10/0x1c
      [   39.092947] [<ffffffc000765334>] dump_stack+0x1c/0x28
      [   39.092953] [<ffffffc0007653b8>] spin_dump+0x78/0x88
      [   39.092960] [<ffffffc0007653ec>] spin_bug+0x24/0x34
      [   39.092971] [<ffffffc000300a28>] do_raw_spin_lock+0x98/0x17c
      [   39.092979] [<ffffffc00076cf08>] _raw_spin_lock_irqsave+0x4c/0x60
      [   39.092990] [<ffffffc000094044>] set_mm_context+0x1c/0x6c
      [   39.092996] [<ffffffc0000941c8>] __new_context+0x94/0x10c
      [   39.093007] [<ffffffc0000d63d4>] idle_task_exit+0x104/0x1b0
      [   39.093014] [<ffffffc00008d91c>] cpu_die+0x14/0x74
      [   39.093021] [<ffffffc000084f74>] arch_cpu_idle_dead+0x8/0x14
      [   39.093030] [<ffffffc0000e7f18>] cpu_startup_entry+0x1ec/0x258
      [   39.093036] [<ffffffc00008d810>] secondary_start_kernel+0x114/0x124
      Signed-off-by: NLeo Yan <leoy@marvell.com>
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      8f071203
  16. 08 4月, 2014 1 次提交
  17. 23 1月, 2013 1 次提交
    • C
      arm64: Add simple earlyprintk support · 2475ff9d
      Catalin Marinas 提交于
      This patch adds support for "earlyprintk=" parameter on the kernel
      command line. The format is:
      
        earlyprintk=<name>[,<addr>][,<options>]
      
      where <name> is the name of the (UART) device, e.g. "pl011", <addr> is
      the I/O address. The <options> aren't currently used.
      
      The mapping of the earlyprintk device is done very early during kernel
      boot and there are restrictions on which functions it can call. A
      special early_io_map() function is added which creates the mapping from
      the pre-defined EARLY_IOBASE to the device I/O address passed via the
      kernel parameter. The pgd entry corresponding to EARLY_IOBASE is
      pre-populated in head.S during kernel boot.
      
      Only PL011 is currently supported and it is assumed that the interface
      is already initialised by the boot loader before the kernel is started.
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      2475ff9d
  18. 17 9月, 2012 2 次提交
  19. 18 7月, 2007 1 次提交
  20. 19 6月, 2006 1 次提交
  21. 10 1月, 2006 2 次提交
  22. 16 11月, 2005 1 次提交
  23. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      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!
      1da177e4