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

Reply via email to