Hi,

After an update some time ago, a VM wit 8GB RAM cannot boot from nvme anymore.

QEMU cmdline:
/usr/bin/qemu-system-x86_64 \
 -chardev ringbuf,id=serial0,logfile=serial0,logappend=on \
 -serial chardev:serial0 \
 -m 8192 \
 -enable-kvm \
 -vnc :2,share=force-shared \
 -blockdev 
driver=file,node-name=hd0-file,filename=disk.qcow2,cache.no-flush=on,discard=unmap
 \
 -blockdev 
driver=qcow2,node-name=hd0,file=hd0-file,cache.no-flush=on,discard=unmap \
 -device nvme,id=hd0-device,drive=hd0,serial=hd0 \
 -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios \
 -bios /home/user/seabios/out/bios.bin

There is nothing fancy on the disk, just standard grub2 setup, but also
I believe it doesn't matter, as it doesn't even reach grub.

When it fails, the seabios log contains:
  PCI: 64: 0000038000000000 - 0000038040000000                                  
          
  PCI: map device bdf=00:04.0  bar 0, addr 38000000000, size 00004000 [mem]     
          
  ...
  Searching bootorder for: /pci@i0cf8/isa@1/fdc@03f0/floppy@0
  ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9)
  ATA controller 2 at 170/374/0 (irq 15 dev 9)
  Searching bootorder for: HALT
  Can not map memory bar over 4Gig
  ...
  Boot failed: could not read the boot disk                                     
          

Working version has this instead:

  PCI: map device bdf=00:04.0  bar 0, addr febf0000, size 00004000 [mem]        
          
  ...
  Booting from Hard Disk...
  Booting from 0000:7c00   

00:04.0 is the nvme.

I'm attaching full logs for both cases.

Bisect shows:

96a8d130a8c2e908e357ce62cd713f2cc0b0a2eb is the first bad commit
commit 96a8d130a8c2e908e357ce62cd713f2cc0b0a2eb (HEAD)
Author: Gerd Hoffmann <kra...@redhat.com>
Date:   Fri Sep 9 10:17:15 2022 +0200

    be less conservative with the 64bit pci io window

    Current seabios code will only enable and use the 64bit pci io window in
    case it runs out of space in the 32bit pci mmio window below 4G.

    This patch will also enable the 64bit pci io window when
      (a) RAM above 4G is present, and
      (b) the physical address space size is known, and
      (c) seabios is running on a 64bit capable processor.

    This operates with the assumption that guests which are ok with memory
    above 4G most likely can handle mmio above 4G too.

    In case the 64bit pci io window is enabled also assign more memory to
    prefetchable pci bridge windows and the complete 64bit pci io window.

    The total mmio window size is 1/8 of the physical address space.
    Minimum bridge windows size is 1/256 of the total mmio window size.

    Signed-off-by: Gerd Hoffmann <kra...@redhat.com>


I've tried the recent "[PATCH] limit address space used for pci devices,
part two" patch from the ML, but it doesn't help. OTOH, the series with
"only enable 64bit pci io window when RAM >64G" does help.


-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
SeaBIOS (version rel-1.16.2-12-g96a8d130)
BUILD: gcc: (SUSE Linux) 13.3.0 binutils: (GNU Binutils; openSUSE Tumbleweed) 
2.42.0.20240130-4
No Xen hypervisor found.
Running on QEMU (i440fx)
physbits: signature="GenuineIntel", pae=yes, lm=yes, phys-bits=42, valid=yes
cpuid 0x40000000: eax 40000001, signature 'KVMKVMKVM'
Running on KVM
Found QEMU fw_cfg
QEMU fw_cfg DMA interface supported
qemu/e820: addr 0x0000000000000000 len 0x00000000c0000000 [RAM]
qemu/e820: addr 0x0000000100000000 len 0x0000000140000000 [RAM]
Relocating init from 0x000d4240 to 0xbefeb260 (size 85248)
Moving pm_base to 0x600
kvmclock: at 0xe8660 (msr 0x4b564d01)
kvmclock: stable tsc, 2100 MHz
CPU Mhz=2100 (kvmclock)
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 7 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: IO: c000 - c04f
PCI: 32: 00000000c0000000 - 00000000fec00000
PCI: 64: 0000038000000000 - 0000038040000000
PCI: map device bdf=00:04.0  bar 0, addr 38000000000, size 00004000 [mem]
PCI: map device bdf=00:03.0  bar 1, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:01.1  bar 4, addr 0000c040, size 00000010 [io]
PCI: map device bdf=00:03.0  bar 6, addr feb80000, size 00040000 [mem]
PCI: map device bdf=00:03.0  bar 0, addr febc0000, size 00020000 [mem]
PCI: map device bdf=00:02.0  bar 6, addr febe0000, size 00010000 [mem]
PCI: map device bdf=00:02.0  bar 2, addr febf0000, size 00001000 [mem]
PCI: map device bdf=00:02.0  bar 0, addr fd000000, size 01000000 [prefmem]
PCI: init bdf=00:00.0 id=8086:1237
PCI: init bdf=00:01.0 id=8086:7000
PIIX3/PIIX4 init: elcr=00 0c
PCI: init bdf=00:01.1 id=8086:7010
PCI: init bdf=00:01.3 id=8086:7113
PCI: init bdf=00:02.0 id=1234:1111
PCI: init bdf=00:03.0 id=8086:100e
PCI: init bdf=00:04.0 id=1b36:0010
PCI: Using 00:02.0 for primary VGA
Found 1 cpu(s) max supported 1 cpu(s)
Copying PIR from 0xbefffc40 to 0x000f5560
Copying MPTABLE from 0x00006cfc/befe2170 to 0x000f5470
Copying SMBIOS from 0x00006cfc to 0x000f52a0
table(50434146)=0xbffe1afa (via rsdt)
ACPI: parse DSDT at 0xbffe0040 (len 6842)
Scan for VGA option rom
Running option rom at c000:0003
Start SeaVGABIOS (version rel-1.16.2-3-gd478f380-prebuilt.qemu.org)
VGABUILD: gcc: (SUSE Linux) 13.3.0 binutils: (GNU Binutils; openSUSE 
Tumbleweed) 2.42.0.20240130-4
enter vga_post:
   a=00000010  b=0000ffff  c=00000000  d=0000ffff ds=0000 es=f000 ss=0000
  si=00000000 di=000060c0 bp=00000000 sp=00006d16 cs=f000 ip=d012  f=0000
VBE DISPI: bdf 00:02.0, bar 0
VBE DISPI: lfb_addr=fd000000, size 16 MB
Removing mode 19a
Removing mode 19b
Removing mode 19c
Removing mode 19d
Removing mode 19e
Attempting to allocate 512 bytes lowmem via pmm call to f000:d0c3
pmm call arg1=0
VGA stack allocated at e8460
Turning on vga text mode console
set VGA mode 3
SeaBIOS (version rel-1.16.2-12-g96a8d130)
Searching bootorder for: /pci@i0cf8/isa@1/fdc@03f0/floppy@0
ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9)
ATA controller 2 at 170/374/0 (irq 15 dev 9)
Searching bootorder for: HALT
Can not map memory bar over 4Gig
Found 1 lpt ports
Found 1 serial ports
PS2 keyboard initialized
DVD/CD [ata1-0: QEMU DVD-ROM ATAPI-4 DVD/CD]
Searching bootorder for: /pci@i0cf8/*@1,1/drive@1/disk@0
Searching bios-geometry for: /pci@i0cf8/*@1,1/drive@1/disk@0
Device reports MEDIUM NOT PRESENT - 2 tries left
Device reports MEDIUM NOT PRESENT - 1 tries left
Device reports MEDIUM NOT PRESENT - 0 tries left
All threads complete.
Scan for option roms
Running option rom at ca00:0003
pmm call arg1=1
pmm call arg1=0
pmm call arg1=1
pmm call arg1=0
Searching bootorder for: /pci@i0cf8/*@3
Searching bootorder for: /rom@genroms/kvmvapic.bin
Searching bootorder for: HALT
Running option rom at cb00:0003
Space available for UMB: cd800-e7800, f4de0-f51a0
Returned 16646144 bytes of ZoneHigh
e820 map has 8 items:
  0: 0000000000000000 - 000000000009fc00 = 1 RAM
  1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
  2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
  3: 0000000000100000 - 00000000bffe0000 = 1 RAM
  4: 00000000bffe0000 - 00000000c0000000 = 2 RESERVED
  5: 00000000feffc000 - 00000000ff000000 = 2 RESERVED
  6: 00000000fffc0000 - 0000000100000000 = 2 RESERVED
  7: 0000000100000000 - 0000000240000000 = 1 RAM
enter handle_19:
  NULL
Booting from Hard Disk...
Boot failed: could not read the boot disk

enter handle_18:
  NULL
Booting from Floppy...
floppy error: 40 00 00 00 00 01 02
Boot failed: could not read the boot disk

enter handle_18:
  NULL
Booting from DVD/CD...
Device reports MEDIUM NOT PRESENT - 2 tries left
Device reports MEDIUM NOT PRESENT - 1 tries left
Device reports MEDIUM NOT PRESENT - 0 tries left
Boot failed: Could not read from CDROM (code 0003)
enter handle_18:
  NULL
Booting from ROM...
Booting from ca00:0385
enter handle_18:
  NULL
No bootable device.
SeaBIOS (version rel-1.16.2-11-gbcfed7e2)
BUILD: gcc: (SUSE Linux) 13.3.0 binutils: (GNU Binutils; openSUSE Tumbleweed) 
2.42.0.20240130-4
No Xen hypervisor found.
Running on QEMU (i440fx)
physbits: signature="GenuineIntel", pae=yes, lm=yes, phys-bits=42, valid=yes
cpuid 0x40000000: eax 40000001, signature 'KVMKVMKVM'
Running on KVM
Found QEMU fw_cfg
QEMU fw_cfg DMA interface supported
qemu/e820: addr 0x0000000000000000 len 0x00000000c0000000 [RAM]
qemu/e820: addr 0x0000000100000000 len 0x0000000140000000 [RAM]
Relocating init from 0x000d4340 to 0xbefeb360 (size 84992)
Moving pm_base to 0x600
kvmclock: at 0xe8660 (msr 0x4b564d01)
kvmclock: stable tsc, 2100 MHz
CPU Mhz=2100 (kvmclock)
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 7 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: IO: c000 - c04f
PCI: 32: 00000000c0000000 - 00000000fec00000
PCI: map device bdf=00:03.0  bar 1, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:01.1  bar 4, addr 0000c040, size 00000010 [io]
PCI: map device bdf=00:03.0  bar 6, addr feb80000, size 00040000 [mem]
PCI: map device bdf=00:03.0  bar 0, addr febc0000, size 00020000 [mem]
PCI: map device bdf=00:02.0  bar 6, addr febe0000, size 00010000 [mem]
PCI: map device bdf=00:04.0  bar 0, addr febf0000, size 00004000 [mem]
PCI: map device bdf=00:02.0  bar 2, addr febf4000, size 00001000 [mem]
PCI: map device bdf=00:02.0  bar 0, addr fd000000, size 01000000 [prefmem]
PCI: init bdf=00:00.0 id=8086:1237
PCI: init bdf=00:01.0 id=8086:7000
PIIX3/PIIX4 init: elcr=00 0c
PCI: init bdf=00:01.1 id=8086:7010
PCI: init bdf=00:01.3 id=8086:7113
PCI: init bdf=00:02.0 id=1234:1111
PCI: init bdf=00:03.0 id=8086:100e
PCI: init bdf=00:04.0 id=1b36:0010
PCI: Using 00:02.0 for primary VGA
Found 1 cpu(s) max supported 1 cpu(s)
Copying PIR from 0xbefffc40 to 0x000f5560
Copying MPTABLE from 0x00006cfc/befe2270 to 0x000f5470
Copying SMBIOS from 0x00006cfc to 0x000f52a0
table(50434146)=0xbffe1afa (via rsdt)
ACPI: parse DSDT at 0xbffe0040 (len 6842)
Scan for VGA option rom
Running option rom at c000:0003
Start SeaVGABIOS (version rel-1.16.2-3-gd478f380-prebuilt.qemu.org)
VGABUILD: gcc: (SUSE Linux) 13.3.0 binutils: (GNU Binutils; openSUSE 
Tumbleweed) 2.42.0.20240130-4
enter vga_post:
   a=00000010  b=0000ffff  c=00000000  d=0000ffff ds=0000 es=f000 ss=0000
  si=00000000 di=000060c0 bp=00000000 sp=00006d16 cs=f000 ip=d012  f=0000
VBE DISPI: bdf 00:02.0, bar 0
VBE DISPI: lfb_addr=fd000000, size 16 MB
Removing mode 19a
Removing mode 19b
Removing mode 19c
Removing mode 19d
Removing mode 19e
Attempting to allocate 512 bytes lowmem via pmm call to f000:d0c3
pmm call arg1=0
VGA stack allocated at e8460
Turning on vga text mode console
set VGA mode 3
SeaBIOS (version rel-1.16.2-11-gbcfed7e2)
Searching bootorder for: /pci@i0cf8/isa@1/fdc@03f0/floppy@0
ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9)
ATA controller 2 at 170/374/0 (irq 15 dev 9)
Searching bootorder for: HALT
Found 1 lpt ports
Found 1 serial ports
PS2 keyboard initialized
Searching bootorder for: /pci@i0cf8/*@4
DVD/CD [ata1-0: QEMU DVD-ROM ATAPI-4 DVD/CD]
Searching bootorder for: /pci@i0cf8/*@1,1/drive@1/disk@0
Searching bios-geometry for: /pci@i0cf8/*@1,1/drive@1/disk@0
Device reports MEDIUM NOT PRESENT - 2 tries left
Device reports MEDIUM NOT PRESENT - 1 tries left
Device reports MEDIUM NOT PRESENT - 0 tries left
All threads complete.
Scan for option roms
Running option rom at ca00:0003
pmm call arg1=1
pmm call arg1=0
pmm call arg1=1
pmm call arg1=0
Searching bootorder for: /pci@i0cf8/*@3
Searching bootorder for: /rom@genroms/kvmvapic.bin
Searching bootorder for: HALT
drive 0x000f51c0: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=167772160
Running option rom at cb00:0003
Space available for UMB: cd800-e7800, f4de0-f5150
Returned 16609280 bytes of ZoneHigh
e820 map has 8 items:
  0: 0000000000000000 - 000000000009fc00 = 1 RAM
  1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
  2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
  3: 0000000000100000 - 00000000bffd7000 = 1 RAM
  4: 00000000bffd7000 - 00000000c0000000 = 2 RESERVED
  5: 00000000feffc000 - 00000000ff000000 = 2 RESERVED
  6: 00000000fffc0000 - 0000000100000000 = 2 RESERVED
  7: 0000000100000000 - 0000000240000000 = 1 RAM
enter handle_19:
  NULL
Booting from Hard Disk...
Booting from 0000:7c00

Attachment: signature.asc
Description: PGP signature

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to