On Tue, Dec 22, 2020 at 2:44 AM Bin Meng <bmeng...@gmail.com> wrote: > > Hi Vitaly, > > On Tue, Dec 22, 2020 at 4:39 AM Vitaly Wool <vitaly.w...@konsulko.com> wrote: > > > > Introduce XIP (eXecute In Place) support for RISC-V platforms. > > It allows code to be executed directly from non-volatile storage > > directly addressable by the CPU, such as QSPI NOR flash which can > > be found on many RISC-V platforms. This makes way for significant > > optimization of RAM footprint. The XIP kernel is not compressed > > since it has to run directly from flash, so it will occupy more > > space on the non-volatile storage to The physical flash address > > used to link the kernel object files and for storing it has to > > be known at compile time and is represented by a Kconfig option. > > > > XIP on RISC-V will currently only work on MMU-enabled kernels. > > > > Changed in v2: > > - dedicated macro for XIP address fixup when MMU is not enabled yet > > o both for 32-bit and 64-bit RISC-V > > - SP is explicitly set to a safe place in RAM before __copy_data call > > - removed redundant alignment requirements in vmlinux-xip.lds.S > > - changed long -> uintptr_t typecast in __XIP_FIXUP macro. > > > > Changed in v3: > > - rebased against latest for-next > > - XIP address fixup macro now takes an argument > > - SMP related fixes > > The above changelogs should go below ---
That is very fair, thanks. Will do that for v4. ~Vitaly > > Signed-off-by: Vitaly Wool <vitaly.w...@konsulko.com> > > --- > > arch/riscv/Kconfig | 46 ++++++++- > > arch/riscv/Makefile | 8 +- > > arch/riscv/boot/Makefile | 13 +++ > > arch/riscv/include/asm/pgtable.h | 56 +++++++++-- > > arch/riscv/kernel/cpu_ops_sbi.c | 3 + > > arch/riscv/kernel/head.S | 69 +++++++++++++- > > arch/riscv/kernel/head.h | 3 + > > arch/riscv/kernel/setup.c | 8 +- > > arch/riscv/kernel/vmlinux-xip.lds.S | 132 ++++++++++++++++++++++++++ > > arch/riscv/kernel/vmlinux.lds.S | 6 ++ > > arch/riscv/mm/init.c | 142 +++++++++++++++++++++++++--- > > 11 files changed, 460 insertions(+), 26 deletions(-) > > create mode 100644 arch/riscv/kernel/vmlinux-xip.lds.S > > > > Regards, > Bin