On 4/12/21 10:01 AM, Mike Rapoport wrote: > On Mon, Apr 12, 2021 at 08:49:49AM -0700, Randy Dunlap wrote: >> On 4/11/21 11:14 PM, Mike Rapoport wrote: >>> 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 <rppt@xxxxxxxxxx> >>>> Date: Tue Mar 2 12:04:05 2021 +0200 >>>> >>>> x86/setup: Consolidate early memory reservations >>>> >>>> && >>>> >>>> commit 4c674481dcf9974834b96622fa4b079c176f36f9 >>>> Author: Mike Rapoport <rppt@xxxxxxxxxx> >>>> 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(); >>> >>>> -- > > Hi Randy, > >> Hi Mike, >> That works fine. >> Can you provide another/next step? > > I thought about adding some prints to see what's causing the hang, the > reservations or their absence. Can you replace the debug patch with this > one: > > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c > index 776fc9b3fafe..a10ac252dbcc 100644 > --- a/arch/x86/kernel/setup.c > +++ b/arch/x86/kernel/setup.c > @@ -600,10 +600,13 @@ static bool __init snb_gfx_workaround_needed(void) > return false; > > vendor = read_pci_config_16(0, 2, 0, PCI_VENDOR_ID); > + devid = read_pci_config_16(0, 2, 0, PCI_DEVICE_ID); > + > + pr_info("%s: vendor: %x, device: %x\n", __func__, vendor, device); s/device)/devid)/ > + > if (vendor != 0x8086) > return false; > > - devid = read_pci_config_16(0, 2, 0, PCI_DEVICE_ID); > for (i = 0; i < ARRAY_SIZE(snb_ids); i++) > if (devid == snb_ids[i]) > return true; > @@ -747,7 +750,7 @@ static void __init early_reserve_memory(void) > reserve_ibft_region(); > reserve_bios_regions(); > > - trim_snb_memory(); > + pr_info("%s: snb_gfx: %d\n", __func__, snb_gfx_workaround_needed()); > } > > /* > @@ -1081,6 +1084,8 @@ void __init setup_arch(char **cmdline_p) > > reserve_real_mode(); > > + trim_snb_memory(); > + > init_mem_mapping(); > > idt_setup_early_pf(); That prints: [ 0.000000] snb_gfx_workaround_needed: vendor: 8086, device: 126 [ 0.000000] early_reserve_memory: snb_gfx: 1 ... [ 0.014061] snb_gfx_workaround_needed: vendor: 8086, device: 126 [ 0.014064] reserving inaccessible SNB gfx pages The full boot log is attached. -- ~Randy
Attachment:
boottest002.log.gz
Description: application/gzip