Hi!

In my effort to "kill SLOF" (the PPC pseries guest firmware), I proceeded to the stage when QEMU needs to load GRUB from the disk. The current workaround is to read it from qcow2, save in a file and then call load_elf(). Not nice.

2 problems with that.

1. when load_elf calls address_space_write() - I need to know where and how much RAM was used to mark this memory "used" for the OF client interface (/memory@0/available FDT property). So I'll need "preload()" hook.

2. (bigger) GRUB comes from PReP partition which is 8MB. load_elf{32|64} consumes filename, not a memory pointer nor a "read_fn" callback - so I thought I need a "read_fn" callback.

And then I discovered that load_elf actually maps the passed file. And here I 
got lost.

Why does not load_elf just map the entire file and parse the bits? It still reads chunks with seek+read and then it maps the file in a loop potentially multiple times - is this even correct? Passing "fd" around is weird.

Why ROMs are different from "-kernel"?

If I want to solve 1 and 2 of my problem, should I just cut-n-paste load_elf and tweak bits rather then add more parameters to already 15-parameters long prototypes? Or I could read GRUB from qcow2 into the memory and change the rest to parse ELF from memory (mapped from a ELF file or read from qcow2)?


Thanks,

ps. VW == very weird, indeed :)

--
Alexey

Reply via email to