Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch/amd64



Hi,

"Emmanuel Dreyfus" <manu%netbsd.org@localhost> 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 // ryo%tetera.org@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3


Home | Main Index | Thread Index | Old Index