Message ID | 20201022203012.428607-1-seanga2@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] riscv: Set text_offset correctly for M-Mode | expand |
On 2020/10/23 5:30, Sean Anderson wrote: > M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this > should be calculated based on PAGE_OFFSET somehow? Even better would be to > deprecate text_offset and instead introduce something absolute. > > Signed-off-by: Sean Anderson <seanga2@gmail.com> > --- > > Changes in v2: > - RISCV_S_MODE does not exist; use RISCV_M_MODE instead > > arch/riscv/kernel/head.S | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S > index 0a4e81b8dc79..5a0ae2eaf5e2 100644 > --- a/arch/riscv/kernel/head.S > +++ b/arch/riscv/kernel/head.S > @@ -27,12 +27,17 @@ ENTRY(_start) > /* reserved */ > .word 0 > .balign 8 > +#ifdef CONFIG_RISCV_M_MODE > + /* Image load offset (0MB) from start of RAM for M-mode */ > + .dword 0 > +#else > #if __riscv_xlen == 64 > /* Image load offset(2MB) from start of RAM */ > .dword 0x200000 > #else > /* Image load offset(4MB) from start of RAM */ > .dword 0x400000 > #endif > +#endif > /* Effective size of kernel image */ > .dword _end - _start > Looks good to me. Added this to my upcoming pile of patches for Kendryte and tested. No problems. Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Tested-by: Damien Le Moal <damien.lemoal@wdc.com>
On Thu, 22 Oct 2020 16:55:33 PDT (-0700), Damien Le Moal wrote: >> On 2020/10/23 5:30, Sean Anderson wrote: >> M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this >> should be calculated based on PAGE_OFFSET somehow? Even better would be to >> deprecate text_offset and instead introduce something absolute. >> >> Signed-off-by: Sean Anderson <seanga2@gmail.com> >> --- >> >> Changes in v2: >> - RISCV_S_MODE does not exist; use RISCV_M_MODE instead >> >> arch/riscv/kernel/head.S | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S >> index 0a4e81b8dc79..5a0ae2eaf5e2 100644 >> --- a/arch/riscv/kernel/head.S >> +++ b/arch/riscv/kernel/head.S >> @@ -27,12 +27,17 @@ ENTRY(_start) >> /* reserved */ >> .word 0 >> .balign 8 >> +#ifdef CONFIG_RISCV_M_MODE >> + /* Image load offset (0MB) from start of RAM for M-mode */ >> + .dword 0 >> +#else >> #if __riscv_xlen == 64 >> /* Image load offset(2MB) from start of RAM */ >> .dword 0x200000 >> #else >> /* Image load offset(4MB) from start of RAM */ >> .dword 0x400000 >> #endif >> +#endif >> /* Effective size of kernel image */ >> .dword _end - _start >> > > Looks good to me. Added this to my upcoming pile of patches for Kendryte and > tested. No problems. > > Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> > Tested-by: Damien Le Moal <damien.lemoal@wdc.com> Thanks. This is on fixes.
diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 0a4e81b8dc79..5a0ae2eaf5e2 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -27,12 +27,17 @@ ENTRY(_start) /* reserved */ .word 0 .balign 8 +#ifdef CONFIG_RISCV_M_MODE + /* Image load offset (0MB) from start of RAM for M-mode */ + .dword 0 +#else #if __riscv_xlen == 64 /* Image load offset(2MB) from start of RAM */ .dword 0x200000 #else /* Image load offset(4MB) from start of RAM */ .dword 0x400000 #endif +#endif /* Effective size of kernel image */ .dword _end - _start
M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this should be calculated based on PAGE_OFFSET somehow? Even better would be to deprecate text_offset and instead introduce something absolute. Signed-off-by: Sean Anderson <seanga2@gmail.com> --- Changes in v2: - RISCV_S_MODE does not exist; use RISCV_M_MODE instead arch/riscv/kernel/head.S | 5 +++++ 1 file changed, 5 insertions(+)