I am trying to programmatically start Xen guest VMs (HVM) with libvirt (on Fedora Core 8) and I'm having some trouble with it. I've included my code below. Essentially, the domain seems to get created correctly but it doesn't seem to run. I don't receive any error messages from the libvirt functions but the VM does not get any CPU time (as shown with "xm list"). [root@grape ~]$ xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1462 2 r----- 1313.5 fc8.conf 7 128 1 ------ 0.0 Can someone explain what I'm doing wrong here? I've tried to get this working with linux and windows guests with the same results. I've seen references on this mailing list to libvirt's ability to handle Xen configuration files but I haven't seen anything in the API documentation or public header files that refer to it. Is there a public interface to specifying a configuration file? Thanks -matthew CODE: #include <stdio.h> #include <libvirt/libvirt.h> #include <libvirt/virterror.h> //"<!--<mac address='00:16:3e:5d:c7:9e'/>-->" //"<graphics type='vnc' port='5904'/>" const char* fedora = "<domain type='xen'>" "<name>fc8.conf</name>" "<os>" "<type>hvm</type>" "<loader>/usr/lib/xen/boot/hvmloader</loader>" "<boot dev='hd'/>" "</os>" "<memory>1024</memory>" "<vcpu>1</vcpu>" "<on_poweroff>destroy</on_poweroff>" "<on_reboot>restart</on_reboot>" "<on_crash>restart</on_crash>" "<features>" "<pae/>" "<acpi/>" "<apic/>" "</features>" "<clock sync=\"localtime\"/>" "<devices>" "<emulator>/usr/lib/xen/bin/qemu-dm</emulator>" "<interface type='bridge'>" "<source bridge='xenbr0'/>" "<script path='vif-bridge'/>" "</interface>" "<disk type='block'>" "<source dev='/dev/vgvms/fc8'/>" "<target dev='hda'/>" "</disk>" "<disk type='block' device='cdrom'>" "<source dev='/dev/cdrom'/>" "<target dev='hdc'/>" "<readonly/>" "</disk>" "<graphics type='vnc'/>" "</devices>" "</domain>"; int main (int argc, char** argv) { virConnectPtr con; /* connection to the Xen hypervisor */ virDomainPtr domain; virInitialize(); con = virConnectOpen ("xen:///"); if (!con) { virErrorPtr err = virGetLastError (); printf ("virConnectOpen failed: %s\n", err->message); return -1; } domain = virDomainDefineXML (con, fedora); if (!domain) { virErrorPtr err = virGetLastError (); printf ("virDomainDefineXML failed: %s\n", err->message); } else { if (virDomainCreate (domain) < 0) { virErrorPtr err = virGetLastError (); printf ("virDomainCreate failed: %s\n", err->message); } else { virDomainInfo info = {0}; virDomainGetInfo (domain, &info); printf ("state = %d\n", info.state); } } virConnectClose (con); return 0; } -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list