Messages in this thread | | | From | Anup Patel <> | Date | Tue, 18 Dec 2018 13:53:23 +0530 | Subject | Re: [PATCH] RISC-V: Make BSS section as the last section in vmlinux.lds.S |
| |
On Mon, Dec 17, 2018 at 6:29 PM Nick Kossifidis <mick@ics.forth.gr> wrote: > > Στις 2018-12-17 11:36, Anup Patel έγραψε: > > On Mon, Nov 26, 2018 at 11:42 AM Anup Patel <anup@brainfault.org> > > wrote: > >> > >> The objcopy only emits loadable sections when creating flat kernel > >> Image. To have minimal possible size of flat kernel Image, we should > >> have all non-loadable sections after loadable sections. > >> > >> Currently, execption table section (loadable section) is after BSS > >> section (non-loadable section) in the RISC-V vmlinux.lds.S. This > >> is not optimal for having minimal flat kernel Image size hence this > >> patch makes BSS section as the last section in RISC-V vmlinux.lds.S. > >> > >> In addition, we make BSS section aligned to 16byte instead of PAGE > >> aligned which further reduces flat kernel Image size by few KBs. > >> > >> The flat kernel Image size of Linux-4.20-rc4 using GCC 8.2.0 is > >> 8819980 bytes with current RISC-V vmlinux.lds.S and it reduces to > >> 7991740 bytes with this patch applied using GCC 8.2.0. In summary, > >> this patch reduces Linux-4.20-rc4 flat kernel Image size by 809 KB. > >> > >> Signed-off-by: Anup Patel <anup@brainfault.org> > >> --- > >> arch/riscv/kernel/vmlinux.lds.S | 4 ++-- > >> 1 file changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git a/arch/riscv/kernel/vmlinux.lds.S > >> b/arch/riscv/kernel/vmlinux.lds.S > >> index 65df1dfdc303..cc99eed44931 100644 > >> --- a/arch/riscv/kernel/vmlinux.lds.S > >> +++ b/arch/riscv/kernel/vmlinux.lds.S > >> @@ -74,8 +74,6 @@ SECTIONS > >> *(.sbss*) > >> } > >> > >> - BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0) > >> - > >> EXCEPTION_TABLE(0x10) > >> NOTES > >> > >> @@ -83,6 +81,8 @@ SECTIONS > >> *(.rel.dyn*) > >> } > >> > >> + BSS_SECTION(0x10, 0x10, 0x10) > >> + > >> _end = .; > >> > >> STABS_DEBUG > >> -- > >> 2.17.1 > >> > > > > Hi All, > > > > Any comment on this patch? > > > > Regards, > > Anup > > > > Just a note on coding style, you should be using a macro instead of 0x10 > so that those who read the code can understand what it is and also a few > comments since searching through the commit logs to understand why you > used it isn't optimal.
RISC-V can support 32bit, 64bit and 128bit machine-word sizes.
The 0x10 number is the machine-word size in bytes for 128bit RISC-V CPU (i.e. maximum machine-word size).
I will add a macro MAX_BYTES_PER_LONG in vmlinux.lds.S and use it in-place of 0x10
Regards, Anup
| |