Subject: Re: linux-next: Tree for Apr 9 (x86 boot problem)

From: Mike Rapoport <[email-masked]>
Date: Mon, 12 Apr 2021 09:14:38 +0300

Hi Randy,

On Sun, Apr 11, 2021 at 07:41:37PM -0700, Randy Dunlap wrote:
> On 4/9/21 4:51 AM, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Changes since 20210408:
> > 
> 
> Hi,
> 
> I cannot boot linux-next 20210408 nor 20210409 on an antique
> x86_64 laptop (Toshiba Portege).
> 
> After many failed tests, I finally resorted to git bisect,
> which led me to:
> 
> # bad: [4c674481dcf9974834b96622fa4b079c176f36f9] x86/setup: Merge several reservations of start of memory
> git bisect bad 4c674481dcf9974834b96622fa4b079c176f36f9
> 
> 
> I reverted both of these patches and the laptop boots successfully:
> 
> commit a799c2bd29d19c565f37fa038b31a0a1d44d0e4d
> Author: Mike Rapoport <[email-masked]>
> Date:   Tue Mar 2 12:04:05 2021 +0200
> 
>     x86/setup: Consolidate early memory reservations
> 
> &&
> 
> commit 4c674481dcf9974834b96622fa4b079c176f36f9
> Author: Mike Rapoport <[email-masked]>
> Date:   Tue Mar 2 12:04:06 2021 +0200
> 
>     x86/setup: Merge several reservations of start of memory
> 
> 
> There is no (zero, nil) console display when I try to boot
> next 0408 or 0409. I connected a USB serial debug cable and
> booted with earlyprintk=dbgp,keep and still got nothing.
> 
> The attached boot log is linux-next 20210409 minus the 2 patches
> listed above.
> 
> Mike- what data would you like to see?

Huh, with no console this would be fun :)
For now the only idea I have is to "bisect" the changes and move
reservations one by one back to their original place until the system boots
again. 

I'd start with trim_snb_memory() since it's surely needed on your laptop
and quite likely it is a NOP on other systems.

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 776fc9b3fafe..dfca9d6b1aa6 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -746,8 +746,6 @@ static void __init early_reserve_memory(void)
 
 	reserve_ibft_region();
 	reserve_bios_regions();
-
-	trim_snb_memory();
 }
 
 /*
@@ -1081,6 +1079,8 @@ void __init setup_arch(char **cmdline_p)
 
 	reserve_real_mode();
 
+	trim_snb_memory();
+
 	init_mem_mapping();
 
 	idt_setup_early_pf();
 
> -- 
> ~Randy
> Reported-by: Randy Dunlap <[email-masked]>

-- 
Sincerely yours,
Mike.