Hi,

"Emmanuel Dreyfus" <m...@netbsd.org> writes:

> Module Name:  src
> Committed By: manu
> Date:         Sun Dec 15 02:56:40 UTC 2019
>
> Modified Files:
>       src/sys/arch/amd64/amd64: locore.S
>       src/sys/arch/amd64/conf: kern.ldscript
>
> Log Message:
> Restore multiboot 2 header in amd64 kernel
>
> The header must appear below 32k offset in the kernel file, but we
> have to make sure it does not load at low addresses, otherwise we
> break BIOS boot.
>
> .text section used to load at 0x200000, we just load multiboot section
> there, and have .text loaded just after.

After this change, amd64 kernel does not boot on my HP Spectre x360
13-inch ae019TU laptop with pure UEFI boot mode.

Reverting this change on 2019-12-23T08:00 (UTC) enables pure UEFI boot.

On another laptop, VAIO S13, the same kernel boots fine in UEFI mode.

I want to continue to use my HP Spectre x360.
Could you take a look at my problem?

Thank you.

> To generate a diff of this commit:
> cvs rdiff -u -r1.193 -r1.194 src/sys/arch/amd64/amd64/locore.S
> cvs rdiff -u -r1.29 -r1.30 src/sys/arch/amd64/conf/kern.ldscript
>
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
>
> Modified files:
>
> Index: src/sys/arch/amd64/amd64/locore.S
> diff -u src/sys/arch/amd64/amd64/locore.S:1.193 
> src/sys/arch/amd64/amd64/locore.S:1.194
> --- src/sys/arch/amd64/amd64/locore.S:1.193   Tue Dec 10 02:06:07 2019
> +++ src/sys/arch/amd64/amd64/locore.S Sun Dec 15 02:56:40 2019
> @@ -1,4 +1,4 @@
> -/*   $NetBSD: locore.S,v 1.193 2019/12/10 02:06:07 manu Exp $        */
> +/*   $NetBSD: locore.S,v 1.194 2019/12/15 02:56:40 manu Exp $        */
>  
>  /*
>   * Copyright-o-rama!
> @@ -432,7 +432,7 @@ END(farjmp64)
>       .space  512
>  tmpstk:
>  
> -.section multiboot,"ax",@progbits
> +.section multiboot,"a"
>  #if defined(MULTIBOOT)
>       .align  8
>       .globl  Multiboot2_Header
>
> Index: src/sys/arch/amd64/conf/kern.ldscript
> diff -u src/sys/arch/amd64/conf/kern.ldscript:1.29 
> src/sys/arch/amd64/conf/kern.ldscript:1.30
> --- src/sys/arch/amd64/conf/kern.ldscript:1.29        Wed Dec 11 02:31:44 2019
> +++ src/sys/arch/amd64/conf/kern.ldscript     Sun Dec 15 02:56:40 2019
> @@ -1,4 +1,4 @@
> -/*   $NetBSD: kern.ldscript,v 1.29 2019/12/11 02:31:44 manu Exp $    */
> +/*   $NetBSD: kern.ldscript,v 1.30 2019/12/15 02:56:40 manu Exp $    */
>  
>  #include "assym.h"
>  
> @@ -13,7 +13,17 @@ __LARGE_PAGE_SIZE = 0x200000 ;
>  ENTRY(_start)
>  SECTIONS
>  {
> -     .text : AT (ADDR(.text) & 0x0fffffff)
> +     /*
> +      * 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)
> +     {
> +             . = ALIGN(8);
> +             KEEP(*(multiboot));
> +     }
> +     .text : AT (0x200000 + SIZEOF(multiboot))
>       {
>               . = ALIGN(__PAGE_SIZE);
>               __text_user_start = . ;
>

-- 
Ryo ONODERA // r...@tetera.org
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

Reply via email to