Hi, Emmanuel Dreyfus <m...@netbsd.org> writes:
> On Tue, Dec 24, 2019 at 05:50:00PM +0900, Ryo ONODERA wrote: >> After this change, amd64 kernel does not boot on my HP Spectre x360 >> 13-inch ae019TU laptop with pure UEFI boot mode. > > Hello > > Does the attached patch (crafted for port-amd64/54775) fix the > problem? Without your patch, the kernel does not boot at all, so after the kernel is loaded, only "_" character is displayed. And your patch still does not work properly, so the kernel hangs after cpu0 (as same as msaitoh@'s however it hits 100% for my laptop). The attached patch works for me. However I have no idea about the meaning.
Index: sys/arch/amd64/amd64/locore.S =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/amd64/locore.S,v retrieving revision 1.195 diff -u -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 25 Dec 2019 10:36:18 -0000 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.195 2019/12/15 02:58:21 manu Exp $ */ +/* $NetBSD: locore.S,v 1.193 2019/12/10 02:06:07 manu Exp $ */ /* * Copyright-o-rama! @@ -432,9 +432,9 @@ .space 512 tmpstk: -.section multiboot,"a" -#if defined(MULTIBOOT) +.section multiboot,"ax",@progbits .align 8 +#if defined(MULTIBOOT) .globl Multiboot2_Header _C_LABEL(Multiboot2_Header): .int MULTIBOOT2_HEADER_MAGIC @@ -474,6 +474,9 @@ .align 8 .globl Multiboot2_Header_end _C_LABEL(Multiboot2_Header_end): +#else /* MULTIBOOT */ + .int 0xdeadbeef /* have some non empty content */ + .align 8 #endif /* MULTIBOOT */ /*
Thank you. > -- > 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 22 Dec 2019 02:23:11 -0000 > @@ -432,10 +432,10 @@ > .space 512 > tmpstk: > > .section multiboot,"a" > -#if defined(MULTIBOOT) > .align 8 > +#if defined(MULTIBOOT) > .globl Multiboot2_Header > _C_LABEL(Multiboot2_Header): > .int MULTIBOOT2_HEADER_MAGIC > .int MULTIBOOT2_ARCHITECTURE_I386 > @@ -473,8 +473,11 @@ > .int 8 /* sizeof(struct multiboot_tag) */ > .align 8 > .globl Multiboot2_Header_end > _C_LABEL(Multiboot2_Header_end): > +#else /* MULTIBOOT */ > + .int 0xdeadbeef /* have some non empty content */ > + .align 8 > #endif /* MULTIBOOT */ > > /* > * Some hackage to deal with 64bit symbols in 32 bit mode. -- Ryo ONODERA // r...@tetera.org PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3