I am porting a Linux Network driver to Solaris 10 (x86).
I am facing a problem during DMA memory allocation:
I need to allocate blocks of 9000 byte contiguous DMA memory for my receive buffer. I am using ddi_dma_alloc to allocate memory. I need contiguos memory hence sgllen is set to 1.
If the system is up an running and I add the driver, the driver gets all the required number of DMA blocks.
Once the driver is installed and the system is rebooted, the driver is picked up by the OS to be loaded. During bootup load, the memory allocation fails after a few blocks are allocated. But after the system is up, if I manually add the driver the memory allocation succeeds.
Is there a limitation on the amount of memory Solaris can allocate during bootup? If yes, is there a way to modify this?