aboutsummaryrefslogtreecommitdiff
path: root/arch/nds32/kernel
AgeCommit message (Collapse)AuthorFilesLines
2018-05-29nds32: implement the unmap_sg DMA operationChristoph Hellwig1-0/+6
This matches the implementation of the more commonly used unmap_single routines and the sync_sg_for_cpu method which should provide equivalent cache maintainance. Signed-off-by: Christoph Hellwig <[email protected]> Acked-by: Greentime Hu <[email protected]> Tested-by: Greentime Hu <[email protected]>
2018-05-29nds32: consolidate DMA cache maintainance routinesChristoph Hellwig1-94/+93
Make sure all other DMA methods call nds32_dma_sync_single_for_{device,cpu} to perform cache maintaince, and remove the consisteny_sync helper that implemented both with entirely separate code based off an argument. Also make sure these helpers handled highmem properly, for which code is copy and pasted from mips. Signed-off-by: Christoph Hellwig <[email protected]> Acked-by: Greentime Hu <[email protected]> Tested-by: Greentime Hu <[email protected]>
2018-05-23nds32: Fix compiler warning, Wstringop-overflow, in vdso.cVincent Chen1-5/+5
Getting a compiler warning, Wstringop-overflow, in arch/nds32/kernel/vdso.c when kernel is built by gcc-8. Declaring vdso_start and vdso_end as a pointer to fix this compiler warning. Signed-off-by: Vincent Chen <[email protected]> Reviewed-by: Greentime Hu <[email protected]> Signed-off-by: Greentime Hu <[email protected]>
2018-05-23nds32: To fix a cache inconsistency issue by setting correct cacheability of NTCGreentime Hu1-5/+23
The nds32 architecture will use physical memory when interrupt or exception comes and it will use the setting of NTC0-4. The original implementation didn't consider the DRAM start address may start from 1GB, 2GB or 3GB to cause this issue. It will write the data to DRAM if it is running in physical address however kernel will read the data with virtaul address through data cache. In this case, the data of DRAM is latest. This fix will set the correct cacheability to let kernel write/read the latest data in cache instead of DRAM. Signed-off-by: Greentime Hu <[email protected]>
2018-05-23nds32: Fix the virtual address may map too much range by tlbop issue.Greentime Hu1-0/+3
We use tlbop to map virtual address in the first beginning, however it may map too much if DRAM size is not that big. We have to invalidate the mapping when the page table is created. Signed-off-by: Greentime Hu <[email protected]>
2018-05-23nds32: Fix build failed because arch_trace_hardirqs_off is changed to ↵Greentime Hu1-1/+1
trace_hardirqs_off. It broke the 'allmodconfig' build when CONFIG_TRACE_IRQFLAGS is enabled. Signed-off-by: Nick Chun-Ming Hu <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-05-23nds32: Fix the symbols undefined issue by exporting them.Greentime Hu1-0/+2
It broke the 'allmodconfig' build. LD vmlinux SYSMAP System.map Building modules, stage 2. MODPOST 5028 modules ERROR: "flush_dcache_page" [net/sunrpc/xprtrdma/rpcrdma.ko] undefined! ERROR: "empty_zero_page" [net/ceph/libceph.ko] undefined! ERROR: "save_stack_trace" [kernel/backtracetest.ko] undefined! ERROR: "clear_page" [fs/ocfs2/dlm/ocfs2_dlm.ko] undefined! ERROR: "copy_page" [fs/nilfs2/nilfs2.ko] undefined! ... Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-04-25signal/nds32: Use force_sig_fault where appropriateEric W. Biederman1-16/+4
Filling in struct siginfo before calling force_sig_info a tedious and error prone process, where once in a great while the wrong fields are filled out, and siginfo has been inconsistently cleared. Simplify this process by using the helper force_sig_fault. Which takes as a parameters all of the information it needs, ensures all of the fiddly bits of filling in struct siginfo are done properly and then calls force_sig_info. In short about a 5 line reduction in code for every time force_sig_info is called, which makes the calling function clearer. Cc: Greentime Hu <[email protected]> Cc: Vincent Chen <[email protected]> Acked-by: Vincent Chen <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
2018-04-25signal: Ensure every siginfo we send has all bits initializedEric W. Biederman1-1/+2
Call clear_siginfo to ensure every stack allocated siginfo is properly initialized before being passed to the signal sending functions. Note: It is not safe to depend on C initializers to initialize struct siginfo on the stack because C is allowed to skip holes when initializing a structure. The initialization of struct siginfo in tracehook_report_syscall_exit was moved from the helper user_single_step_siginfo into tracehook_report_syscall_exit itself, to make it clear that the local variable siginfo gets fully initialized. In a few cases the scope of struct siginfo has been reduced to make it clear that siginfo siginfo is not used on other paths in the function in which it is declared. Instances of using memset to initialize siginfo have been replaced with calls clear_siginfo for clarity. Signed-off-by: "Eric W. Biederman" <[email protected]>
2018-04-25signal/nds32: Use force_sig(SIGILL) in do_revisnEric W. Biederman1-4/+1
As originally committed do_revisn would deliver a siginfo for SIGILL with an si_code composed of random stack contents. That makes no sense and is not something userspace can depend on. So simplify the code and just use "force_sig(SIG_ILL, current)" instead. Fixes: 2923f5ea7738 ("nds32: Exception handling") Cc: Vincent Chen <[email protected]> Cc: Greentime Hu <[email protected]> Cc: Arnd Bergmann <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
2018-04-25signal/nds32: Use force_sig in unhandled_interruption and unhandled_exceptionsEric W. Biederman1-9/+2
Neither unhandled_interrupt nor unhandled_exceptions fills in any of the siginfo fields whend sending SIGKILL. Further because it is SIGKILL even if all of the fields were filled out appropriately it would be impossible for the process to read any of the siginfo fields. So simplfy things and just use force_sig instead of force_sig_info. Fixes: 2923f5ea7738 ("nds32: Exception handling") Cc: Vincent Chen <[email protected]> Cc: Greentime Hu <[email protected]> Cc: Arnd Bergmann <[email protected]> Acked-by: Vincent Chen <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
2018-03-16nds32: To use the generic dump_stack()Greentime Hu1-12/+0
Use the generic dump_stack() instead of nds32 one because they are doing the same thing. Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-03-16nds32: fix building failed if using elf toolchain.Greentime Hu1-1/+0
OUTPUT_FORMAT is not necessary here and the elf toolchain doesn't support these formats. Since kernel should be built pass with elf or Linux toolchain. This can be removed from vdso.ld.S These are the built failed messages. VDSOL arch/nds32/kernel/vdso/vdso.so.dbg /home/users/greentime/tmp/nds32le-elf-newlib-v3-upstream-b224/bin/../lib/gcc/nds32le-elf/8.0.1/../../../../nds32le-elf/bin/ld: target elf32-nds32le-linux not found collect2: error: ld returned 1 exit status make[1]: *** [arch/nds32/kernel/vdso/vdso.so.dbg] Error 1 make: *** [vdso_prepare] Error 2 Signed-off-by: Greentime Hu <[email protected]>
2018-02-22nds32: Build infrastructureGreentime Hu2-0/+80
This patch adds Makefile, Kconfig and vmlinux.lds.S files required for building an nds32 kernel. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Device tree supportGreentime Hu1-0/+19
This patch adds support for device tree. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Generic timers supportGreentime Hu1-0/+11
This patch adds support for timer. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Loadable modulesGreentime Hu1-0/+278
This patch adds support for loadable modules. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: L2 cache supportGreentime Hu1-0/+64
This patch adds L2 cache support. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Debugging supportGreentime Hu1-0/+119
This patch adds ptrace support. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Library functionsGreentime Hu1-0/+31
This patch add support for various library functions. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Signal handling supportGreentime Hu1-0/+324
This patch adds support for signal handling. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]>
2018-02-22nds32: VDSO supportGreentime Hu9-0/+742
This patch adds VDSO support. The VDSO code is currently used for sys_rt_sigreturn() and optimised gettimeofday() (using the SoC timer counter). Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: System calls handlingGreentime Hu3-0/+165
This patch adds support for system calls. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Reviewed-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: DMA mapping APIGreentime Hu1-0/+477
This patch adds support for the DMA mapping API. It uses dma_map_ops for flexibility. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: IRQ handlingGreentime Hu1-0/+9
This patch includes irq related functions and irqchip_init(). Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Process managementGreentime Hu1-0/+208
This patch includes copy_thread(), start_thread() implementation and cpu_context structure definition. nds32 uses $r25 to get current task_struct. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Cache and TLB routinesGreentime Hu1-0/+49
This patch contains cache and TLB maintenance functions. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Exception handlingGreentime Hu4-0/+830
This patch includes the exception/interrupt entries, pt_reg structure and related accessors. /* Unaligned accessing handling*/ Andes processors cannot load/store information which is not naturally aligned on the bus, i.e., loading a 4 byte data whose start address must be divisible by 4. If unaligned data accessing is happened, data unaligned exception will be triggered and user will get SIGSEGV or kernel oops according to the unaligned address. In order to make user be able to load/store data from an unaligned address, software load/store emulation is implemented in arch/nds32/mm/alignment.c to address data unaligned exception. Unaligned accessing handling is disabled by default because it is not a normal case. User can enable this feature by following steps. A. Compile time: 1. Enable kernel config CONFIG_ALIGNMENT_TRAP B. Run time: 1. Enter /proc/sys/nds32/unaligned_acess folder 2. Write 1 to file enable_mode to enable unaligned accessing handling. User can disable it by writing 0 to this file. 3. Write 1 to file debug to show which unaligned address is under processing. User can disable it by writing 0 to this file. However, unaligned accessing handler cannot work if this unaligned address is not accessible such as protection violation. On this condition, the default behaviors for addressing data unaligned exception still happen Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Kernel booting and initializationGreentime Hu2-0/+551
This patch includes the kernel startup code. It can get dtb pointer passed from bootloader. It will create a temp mapping by tlb instructions at beginning and goto start_kernel. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>
2018-02-22nds32: Assembly macros and definitionsGreentime Hu1-0/+28
This patch includes assembly macros, bit field definitions used in .S files across arch/nds32/. Signed-off-by: Vincent Chen <[email protected]> Signed-off-by: Greentime Hu <[email protected]> Acked-by: Arnd Bergmann <[email protected]>