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
signature.asc
Description: PGP signature
_______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org