On Thu, Apr 01, 2021 at 12:42:18PM +0000, Thanos Makatos wrote:
I'm using SeaBIOS (b0d61ec) to boot from a virtual NVMe controller that has relatively many namespaces (64). The exact error is :
/3ff9f000\ Start thread |3ff9f000| Searching bootorder for: /pci@i0cf8/*@6 ... |3ff9f000| WARNING - Unable to allocate resource at nvme_controller_enable:632!
I changed the number of namespaces my controller reports to 1 and it worked fine. Is there an easy way to get around this or do I have to fix the code? I haven't looked at the code in detail, but I think we don't have to allocate the array of namespaces in nvme_controller_enable; instead, we can probe a namespace right before we attempt to boot from it (not sure where exactly this is done).
Well, you can try skip non-bootable namespaces and use "qemu -boot strict=on". It happens on nvme controller level already (see nvme_controller_setup()).
Easy way out without actual code changes would be to use two nvme controllers, one for the boot disk, one for all others, set bootindex for the boot disk only (and use strict=on of course). seabios should completely ignore the second nvme controller then.
HTH, Gerd