On Tue, Dec 31, 2019 at 09:32:05AM +0100, Maxime Villard wrote: > I think max-page-size=0x1000 is the right thing to do, but someone needs to > verify that the resulting binary is correct and that the resulting in-memory > layout is correct too.
Attached is an updated patch with this approach. I tested at mine and it seems fine. I am especially interested by feedback from msaitoh@ who reported the crash at cpu attacch that I suspect to be the (probably unrelated) problem describred here: http://mail-index.netbsd.org/tech-kern/2020/01/02/msg025911.html -- Emmanuel Dreyfus m...@netbsd.org
Index: sys/arch/amd64/amd64/locore.S =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/amd64/locore.S,v retrieving revision 1.195 diff -U4 -r1.195 locore.S --- sys/arch/amd64/amd64/locore.S 15 Dec 2019 02:58:21 -0000 1.195 +++ sys/arch/amd64/amd64/locore.S 4 Jan 2020 01:48:11 -0000 @@ -431,10 +431,10 @@ .size tmpstk, tmpstk - . .space 512 tmpstk: -.section multiboot,"a" #if defined(MULTIBOOT) +.section multiboot,"",@note .align 8 .globl Multiboot2_Header _C_LABEL(Multiboot2_Header): .int MULTIBOOT2_HEADER_MAGIC Index: sys/arch/amd64/conf/GENERIC =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/conf/GENERIC,v retrieving revision 1.551 diff -U4 -r1.551 GENERIC --- sys/arch/amd64/conf/GENERIC 14 Dec 2019 07:45:20 -0000 1.551 +++ sys/arch/amd64/conf/GENERIC 4 Jan 2020 01:48:11 -0000 @@ -25,9 +25,9 @@ #ident "GENERIC-$Revision: 1.551 $" maxusers 64 # estimated number of users -#options MULTIBOOT # Multiboot support (see multiboot(8)) +options MULTIBOOT # Multiboot support (see multiboot(8)) # delay between "rebooting ..." message and hardware reset, in milliseconds #options CPURESET_DELAY=2000 Index: sys/arch/amd64/conf/Makefile.amd64 =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/conf/Makefile.amd64,v retrieving revision 1.80 diff -U4 -r1.80 Makefile.amd64 --- sys/arch/amd64/conf/Makefile.amd64 14 Nov 2019 16:23:52 -0000 1.80 +++ sys/arch/amd64/conf/Makefile.amd64 4 Jan 2020 01:48:11 -0000 @@ -90,12 +90,12 @@ ## (5) link settings ## TEXTADDR?= 0xffffffff80200000 .if defined(KASLR) -EXTRA_LINKFLAGS= --split-by-file=0x100000 -r -d +EXTRA_LINKFLAGS= --split-by-file=0x100000 -z max-page-size=0x1000 -r -d KERNLDSCRIPT?= ${AMD64}/conf/kern.ldscript.kaslr .else -EXTRA_LINKFLAGS= -z max-page-size=0x200000 +EXTRA_LINKFLAGS= -z max-page-size=0x1000 KERNLDSCRIPT?= ${AMD64}/conf/kern.ldscript .endif LINKFLAGS_NORMAL= -X Index: sys/arch/amd64/conf/kern.ldscript =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/conf/kern.ldscript,v retrieving revision 1.30 diff -U4 -r1.30 kern.ldscript --- sys/arch/amd64/conf/kern.ldscript 15 Dec 2019 02:56:40 -0000 1.30 +++ sys/arch/amd64/conf/kern.ldscript 4 Jan 2020 01:48:11 -0000 @@ -12,20 +12,11 @@ ENTRY(_start) SECTIONS { - /* - * multiboot (file_offset) : AT (load_address) - * file_offset must be below 32k for multiboot 2 specification - * BIOS boot requires load_address above 0x200000 - */ - multiboot 0x1000 : AT (0x200000) + .text : AT (ADDR(.text) & 0x0fffffff) { - . = ALIGN(8); KEEP(*(multiboot)); - } - .text : AT (0x200000 + SIZEOF(multiboot)) - { . = ALIGN(__PAGE_SIZE); __text_user_start = . ; *(.text.user) . = ALIGN(__PAGE_SIZE);