Frankly, I partially agreed to your point when we were talking about 300ms vs.
2 seconds. Now that we're talking 8 seconds that whole point is moot. We chose
the wrong interface to transfer kernel+initrd data into the guest.
Now the question is how to fix that. I would veto against anything normally
guest-OS-visible. By occupying the floppy, you lose a floppy drive in the
guest. By occupying a disk, you see an unwanted disk in the guest.
By taking virtio-serial you see an unwanted virtio-serial line in the guest.
fw_cfg is great because it's a private interface nobody else accesses.
I see two alternatives out of this mess:
1) Speed up string PIO so we're actually fast again.
2) Using a different interface (that could also be DMA fw_cfg - remember, we're
on a private interface anyways)
Admittedly 1 would also help in more cases than just booting with -kernel and
-initrd, but if that won't get us to acceptable levels (and yes, 8 seconds for
100MB is unacceptable) I don't see any way around 2.
Alex