On 08/04/2010 11:45 AM, Alexander Graf wrote:
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.
Introduce a new virtio device type (say, id 6). Teach SeaBIOS that 6 is
exactly like virtio-blk (id 2). Make it clear that id 6 is only to be
used by firmware and that normal guest drivers should not be written for
id 6.
Problem is now solved and everyone's happy. Now we can all go back to
making slides for next week :-)
Regards,
Anthony Liguori
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