1. 27 11月, 2019 1 次提交
    • M
      xtensa: add XIP kernel support · 7af710d9
      Max Filippov 提交于
      XIP (eXecute In Place) kernel image is the image that can be run
      directly from ROM, using RAM only for writable data.
      
      XIP xtensa kernel differs from regular xtensa kernel in the following
      ways:
      - it has exception/IRQ vectors merged into text section. No vectors
        relocation takes place at kernel startup.
      - .data/.bss location must be specified in the kernel configuration,
        its content is copied there in the _startup function.
      - .init.text is merged with the rest of text and is executed from ROM.
      - when MMU is used the virtual address where the kernel will be mapped
        must be specified in the kernel configuration. It may be in the KSEG
        or in the KIO, __pa macro is adjusted to be able to handle both.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      7af710d9
  2. 21 10月, 2019 1 次提交
  3. 04 9月, 2019 1 次提交
    • C
      dma-mapping: remove CONFIG_ARCH_NO_COHERENT_DMA_MMAP · 62fcee9a
      Christoph Hellwig 提交于
      CONFIG_ARCH_NO_COHERENT_DMA_MMAP is now functionally identical to
      !CONFIG_MMU, so remove the separate symbol.  The only difference is that
      arm did not set it for !CONFIG_MMU, but arm uses a separate dma mapping
      implementation including its own mmap method, which is handled by moving
      the CONFIG_MMU check in dma_can_mmap so that is only applies to the
      dma-direct case, just as the other ifdefs for it.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>	# m68k
      62fcee9a
  4. 02 9月, 2019 1 次提交
    • M
      xtensa: add support for call0 ABI in userspace · 09f8a6db
      Max Filippov 提交于
      Provide a Kconfig choice to select whether only the default ABI, only
      call0 ABI or both are supported. The default for XEA2 is windowed, but
      it may change for XEA3. Call0 only runs userspace with PS.WOE disabled.
      Supporting both windowed and call0 ABIs is tricky, as there's no
      indication in the ELF binaries which ABI they use. So it is done by
      probing: each process is started with PS.WOE disabled, but the handler
      of an illegal instruction exception taken with PS.WOE retries faulting
      instruction after enabling PS.WOE. It must happen before any signal is
      delivered to the process, otherwise it may be delivered incorrectly.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      09f8a6db
  5. 24 6月, 2019 1 次提交
  6. 08 5月, 2019 1 次提交
  7. 03 4月, 2019 1 次提交
    • W
      locking/rwsem: Remove rwsem-spinlock.c & use rwsem-xadd.c for all archs · 390a0c62
      Waiman Long 提交于
      Currently, we have two different implementation of rwsem:
      
       1) CONFIG_RWSEM_GENERIC_SPINLOCK (rwsem-spinlock.c)
       2) CONFIG_RWSEM_XCHGADD_ALGORITHM (rwsem-xadd.c)
      
      As we are going to use a single generic implementation for rwsem-xadd.c
      and no architecture-specific code will be needed, there is no point
      in keeping two different implementations of rwsem. In most cases, the
      performance of rwsem-spinlock.c will be worse. It also doesn't get all
      the performance tuning and optimizations that had been implemented in
      rwsem-xadd.c over the years.
      
      For simplication, we are going to remove rwsem-spinlock.c and make all
      architectures use a single implementation of rwsem - rwsem-xadd.c.
      
      All references to RWSEM_GENERIC_SPINLOCK and RWSEM_XCHGADD_ALGORITHM
      in the code are removed.
      Suggested-by: NPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: NWaiman Long <longman@redhat.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Tim Chen <tim.c.chen@linux.intel.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-c6x-dev@linux-c6x.org
      Cc: linux-m68k@lists.linux-m68k.org
      Cc: linux-riscv@lists.infradead.org
      Cc: linux-um@lists.infradead.org
      Cc: linux-xtensa@linux-xtensa.org
      Cc: linuxppc-dev@lists.ozlabs.org
      Cc: nios2-dev@lists.rocketboards.org
      Cc: openrisc@lists.librecores.org
      Cc: uclinux-h8-devel@lists.sourceforge.jp
      Link: https://lkml.kernel.org/r/20190322143008.21313-3-longman@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      390a0c62
  8. 19 2月, 2019 1 次提交
    • Y
      32-bit userspace ABI: introduce ARCH_32BIT_OFF_T config option · 942fa985
      Yury Norov 提交于
      All new 32-bit architectures should have 64-bit userspace off_t type, but
      existing architectures has 32-bit ones.
      
      To enforce the rule, new config option is added to arch/Kconfig that defaults
      ARCH_32BIT_OFF_T to be disabled for new 32-bit architectures. All existing
      32-bit architectures enable it explicitly.
      
      New option affects force_o_largefile() behaviour. Namely, if userspace
      off_t is 64-bits long, we have no reason to reject user to open big files.
      
      Note that even if architectures has only 64-bit off_t in the kernel
      (arc, c6x, h8300, hexagon, nios2, openrisc, and unicore32),
      a libc may use 32-bit off_t, and therefore want to limit the file size
      to 4GB unless specified differently in the open flags.
      Signed-off-by: NYury Norov <ynorov@caviumnetworks.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NYury Norov <ynorov@marvell.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      942fa985
  9. 14 2月, 2019 1 次提交
  10. 08 2月, 2019 1 次提交
  11. 26 1月, 2019 2 次提交
  12. 21 12月, 2018 1 次提交
    • M
      xtensa: implement jump_label support · 64711f9a
      Max Filippov 提交于
      Use 3-byte 'nop' and 'j' instructions that are always present. Don't let
      assembler mark a spot right after patchable 'j' instruction as
      unreachable and later put literals or padding bytes there. Add separate
      implementations of patch_text for SMP and UP cases, avoiding use of
      atomics on UP.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      64711f9a
  13. 18 12月, 2018 2 次提交
    • M
      xtensa: implement syscall tracepoints · af5395c2
      Max Filippov 提交于
      Add TIF_SYSCALL_TRACEPOINT flag definition; add _TIF_SYSCALL_TRACEPOINT
      to _TIF_WORK_MASK. Call trace_sys_enter from do_syscall_trace_enter and
      trace_sys_exit from do_syscall_trace_leave when TIF_SYSCALL_TRACEPOINT
      flag is set.
      Add declaration of sys_call_table to arch/xtensa/include/asm/syscall.h
      Add definition of NR_syscalls to arch/xtensa/include/asm/unistd.h
      Select HAVE_SYSCALL_TRACEPOINTS.
      
      This change allows tracing each syscall entry and exit through the
      ftrace mechanism.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      af5395c2
    • M
      xtensa: implement tracehook functions and enable HAVE_ARCH_TRACEHOOK · 9f24f3c1
      Max Filippov 提交于
      Implement syscall_get_nr, syscall_rollback, syscall_get_error,
      syscall_{get,set}_return_value and syscall_{get,set}_arguments.
      Select HAVE_ARCH_TRACEHOOK as Xtensa now has all support for that.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      9f24f3c1
  14. 14 12月, 2018 1 次提交
  15. 06 12月, 2018 1 次提交
  16. 02 12月, 2018 1 次提交
  17. 23 11月, 2018 2 次提交
  18. 31 10月, 2018 2 次提交
  19. 16 10月, 2018 1 次提交
  20. 20 9月, 2018 1 次提交
  21. 12 9月, 2018 1 次提交
  22. 21 8月, 2018 5 次提交
  23. 14 8月, 2018 1 次提交
  24. 02 8月, 2018 3 次提交
  25. 12 7月, 2018 1 次提交
  26. 15 6月, 2018 1 次提交
  27. 08 5月, 2018 1 次提交
  28. 18 12月, 2017 1 次提交
  29. 17 12月, 2017 2 次提交
    • M
      xtensa: add support for KASAN · c633544a
      Max Filippov 提交于
      Cover kernel addresses above 0x90000000 by the shadow map. Enable
      HAVE_ARCH_KASAN when MMU is enabled. Provide kasan_early_init that fills
      shadow map with writable copies of kasan_zero_page. Call
      kasan_early_init right after mmu initialization in the setup_arch.
      Provide kasan_init that allocates proper shadow map pages from the
      memblock and puts these pages into the shadow map for addresses from
      VMALLOC area to the end of KSEG. Call kasan_init right after memblock
      initialization. Don't use KASAN for the boot code, MMU and KASAN
      initialization and page fault handler. Make kernel stack size 4 times
      larger when KASAN is enabled to avoid stack overflows.
      GCC 7.3, 8 or newer is required to build the xtensa kernel with KASAN.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      c633544a
    • M
      xtensa: enable stack protector · 40d1a07b
      Max Filippov 提交于
      The implementation is adopted from the ARM arch. GCC 7.3, 8 or newer is
      required for building the xtensa kernel with SSP.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      40d1a07b