[coreboot] [GSoC] Coreboot Spice Payload

xdrudis xdrudis at tinet.cat
Sat Mar 26 18:03:01 CET 2011

On Mon, Mar 21, 2011 at 01:49:49PM -0400, Leandro Dorileo wrote:

Excuse my ignorace, but you say :

> [1] - http://vps.dorilex.net/~dorileo/coreboot-spice-payload.txt

> 3. Coreboot Spice Payload
> ============================================================
> Spice building blocks are Spice protocol, Spice server and spice client, 
> the Coreboot Spice Payload fits on client component. The component will 
> be an interface between the current devices(Video, keyboard, mouse, etc.) 
> and the virtualized guest OS.

Do you mean some kind of SerialICE? (which accesses hardware registers and
sends the information to the serial port and applies I/O commands it gets from
the serial port to the hardware, so that you can put a modified emulator
at the other side and run the firmware/software that you would run on
the machine SerialICE is ). If so, SerialICE isn't a payload, it's a "replacement
for coreboot" who can proxy what a remote coreboot does. The remote side
has a coreboot, payload and OS. I mean coreboot does not load serialICE, 
it is SerialICE who boots up and starts listening for commands.
In any case, if you write some sort of network backed SerialICE, it won't
allow you to have a desktop experience in a low end machine, because
it will still be the low end machine executing the instructions it gets
from somewhere. Those instructions might be a lightweight OS and a remote
desktop client of some kind, but it won't run any faster (only slower) than
if you directly installed the OS and client in the low end machine. 

> 4. Payload Main Tasks
> ============================================================
> The Coreboot Spice Payload main tasks involve hardware interruption handling, 
> spice commands dispatching and response rendering.
> Beyond the hardware and command handling the payload will provide a basic 
> configuration interface so host address and SSL can be set.
> 4.1 Libpayload
> ============================================================
> CSPLD will rely on libpayload drivers for keyboard, serial and video.

Which drivers ? Are there drivers for video in libpayload ? For which
VGAs ? I think there's going to be a similar effort as to that of building
an OS and its drivers if you don't want to load an OS on the client. My understanding
is that coreboot/payloads only initialize the CPU, chipset, memory, buses and the 
minimum devices they need for debug and loading and OS. It is the OS 
who recognizes the different possible mouses, vgas, network cards, etc., the OS loads
the appropiate drivers and applications (such as sshd, rdp, vnc, X or whatever)
can then use them. If you want to get rid of the OS and applications you will
have to rewrite their functionality, which isn't a summer job.

Let's suppose the user want to move a window and the processing that calculates
the next image (which other windows parts are shown or hidden, any animation, etc.)
is done in a remote computer. The image still has to be sent (however compressed
or optimized) and the client has to show it on screen. So you need a video driver,
a mouse driver, knowledge of the monitor, mouse, their resolutions and protocols...
I don't think there's such a thing in coreboot or libpayload. 

But maybe I just haven't understood the idea. In fact I know nothing about virtualization,
but my notion is that with vitualization you get more than one OS in a physical machine, 
I don't see how you can get 0 OSes. With coreboot you can certainly avoid loading an OS,
but then the payload will have to do all the useful functionality.

More information about the coreboot mailing list