As part of Google Summer of Code we are in the process to add Block PV-drivers to Seabios, in order to this, first we have to be able to communicate with xenstore so we can exchange information before the front and back ends connect. To communicate with xenstore we need to make seabios Xen-friendly so support for hypercalls has been added to Seabios. In the next month, Seabios will become a front-end for the block devices, connecting to dom0 back-end block device when used with Xen.
There is an issue, if you issue a query and the ring did not prepare the answer fast enough, after the event signal hypercall, the ring will force a ring wait for an event that will never arrive. For now this is solved by doing a dprintf after the hypercall, this gives enough time to the ring.
This patch should be applied to Seabios and must be used with qemu-upstream with xen4.1, please follow this guide for this: http://wiki.xensource.com/xenwiki/QEMUUpstream
Some more documentation on this can be found here: http://wiki.xensource.com/xenwiki/SeaBIOS
Daniel Castro (10): Xen: Guest Handlers and Copyrights Move PAGE_SHIFT to memmap.h Xen: Use PAGE_SHIFT as a constant Xen: Support for interdomain event channel Xen: Support for HVM_op Hypercall Xen: Support for memory_op Hypercall Xen: Support for sched_op hypercall Xen: Shared info for CPU yield support and xenbus protocol Xen: Xenstore communication via xenbus Xen: Xenstore example -do not apply
Makefile | 2 +- src/bitops.h | 14 ++ src/memmap.h | 2 + src/post.c | 2 + src/virtio-ring.h | 2 +- src/xen-xs.c | 251 +++++++++++++++++++++++++++++++++++++ src/xen-xs.h | 9 ++ src/xen.c | 20 +++- src/xen.h | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 9 files changed, 653 insertions(+), 6 deletions(-) create mode 100644 src/bitops.h create mode 100644 src/xen-xs.c create mode 100644 src/xen-xs.h