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]

Reply via email to