On Wed, Aug 9, 2023 at 12:29 AM Samuel Thibault <samuel.thiba...@gnu.org> wrote: > BTW, to get rumpdisk out of the equation, it would be useful to work on > moving the kernel map below 0xffffffff80000000, so we do not get any > size constraint on it, and thus are able to load initrds of whatever > size, provided that we have the memory.
Does ramdisk use kmalloc memory? That's horrifying. It should just reuse whatever memory the bootloader has already loaded the module into, no need to copy it out anywhere. As we discussed before, this goes really nicely with VM objects: it should just create an internal VM object out of those pages and expose its pager port to the bootstrap tasks which can then map it using libstore's memobj backend. The data / VM object's size is only limited by available RAM then, you could have multi-GB-sized ramdisks if you want to. I'll look into implementing this then. We could also attempt to do the same when exec'ing ELFs: the data is already loaded into the physical pages by the boot loader, no need to allocate more pages, make a copy, and then free the original ones. Sergey