On Wed, Feb 10, 2021 at 09:35:30AM -0000, [email protected] wrote: > Hi! > > Custom motherboard on Intel Atom C3338 with PCIe (x4) M.2 slot does not see > NVME disks at SeaBIOS boot menu. > (SeaBIOS (version rel-1.13.0-1-g3ab38b1)) > Does not load the operating system from these drives. If you boot from > another media, then the NVME disk is seen in the system and works fine. > In the logs there is a warning at "void *pci_enable_membar" function in the > "coreboot/payloads/external/SeaBIOS/seabios/src/hw/pcidevice.c" file line 186. > > Warning message: WARNING - internal error detected at pci_enable_membar:186! > > // Verify a memory bar and return it to the caller > void * > pci_enable_membar(struct pci_device *pci, u32 addr) > { > wait_preempt(); > u32 bar = pci_config_readl(pci->bdf, addr); > if (bar & PCI_BASE_ADDRESS_SPACE_IO) { > warn_internalerror(); > return NULL; > } > if (bar & PCI_BASE_ADDRESS_MEM_TYPE_64) { > u32 high = pci_config_readl(pci->bdf, addr+4); > if (high) { > dprintf(1, "Can not map memory bar over 4Gig\n"); > return NULL; > } > } > bar &= PCI_BASE_ADDRESS_MEM_MASK; > if (bar + 4*1024*1024 < 20*1024*1024) { > // Bar doesn't look valid (it is in last 4M or first 16M) > warn_internalerror(); > =========================================>WARNING! > return NULL; > } > pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_MEMORY); > pci->have_driver = 1; > return (void*)bar; > } > > Some values: for Samsung NVME disk 0x144d:0xa804; bdf: 0x200 > > bar: 0x4 at (u32 bar = pci_config_readl(pci->bdf, addr)) > bar: 0x0 at (bar &= PCI_BASE_ADDRESS_MEM_MASK) > have_driver = 0. > > If you boot from another media, then the NVME disk is seen in the system and > works fine. > > lspci: > 02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD > Controller SM961/PM961 > > fdisk: > Disk /dev/nvme0n1: 232,9 GiB, 250059350016 bytes, 488397168 sectors > Units: sectors of 1 * 512 = 512 bytes > Sector size (logical/physical): 512 bytes / 512 bytes > I/O size (minimum/optimal): 512 bytes / 512 bytes > Disklabel type: dos > Disk identifier: 0x5107186e > > Device Boot Start End Sectors Size Id Type > /dev/nvme0n1p1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT > /dev/nvme0n1p2 1126400 488394751 487268352 232,4G 7 HPFS/NTFS/exFAT > > > Tried with different NVME drives with different controllers. > What could be the reason? Driver needed?
This sounds like a BAR resource allocation problem even before SeaBIOS runs. You should look at resource allocation debugging information from coreboot or whatever your pre-SeaBIOS firmware is. _______________________________________________ SeaBIOS mailing list -- [email protected] To unsubscribe send an email to [email protected]
