RISC-V nommu support v6

From: Christoph Hellwig
Date: Mon Oct 28 2019 - 08:10:49 EST


Hi all,

below is a series to support nommu mode on RISC-V. For now this series
just works under qemu with the qemu-virt platform, but Damien has also
been able to get kernel based on this tree with additional driver hacks
to work on the Kendryte KD210, but that will take a while to cleanup
an upstream.

A git tree is available here:

git://git.infradead.org/users/hch/riscv.git riscv-nommu.6

Gitweb:

http://git.infradead.org/users/hch/riscv.git/shortlog/refs/heads/riscv-nommu.6

I've also pushed out a builtroot branch that can build a RISC-V nommu
root filesystem here:

git://git.infradead.org/users/hch/buildroot.git riscv-nommu.2

Gitweb:

http://git.infradead.org/users/hch/buildroot.git/shortlog/refs/heads/riscv-nommu.2


Changes since v5:
- rebased to Linux 5.4-rc5
- fix up a newly sneaked in use of ->sepc in the perf callchain code
- fix out of tree builds with the generated loader.lds
- replace the plic context hack with a cleaner solution

Changes since v4:
- rebased to 5.4-rc + latest riscv fixes
- clean up do_trap_break
- fix an SR_XPIE issue (Paul Walmsley)
- use the symbolic PAGE_OFFSET value in the flat loader
(Aurabindo Jayamohanan)

Changes since v3:
- improve a few commit message
- cleanup riscv_cpuid_to_hartid_mask
- cleanup the timer handling
- cleanup the IPI handling a little more
- renamed CONFIG_M_MODE to CONFIG_RISCV_M_MODE
- split out CONFIG_RISCV_SBI to make some of the ifdefs more obbious
- use IS_ENABLED wherever possible instead of if ifdefs to make the
code more readable

Changes since v2:
- rebased to 5.3-rc
- remove the EFI image header for nommu builds
- set ARCH_SLAB_MINALIGN to ensure stack alignment in the flat binary
loader
- minor comment improvement
- use #defines for more CSRs

Changes since v1:
- fixes so that a kernel with this series still work on builds with an
IOMMU
- small clint cleanups
- the binfmt_flat base and buildroot now don't put arguments on the stack