[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 0/2] PV framebuffer
Hi Steven, Your sketch for the xm configuration magic was quite helpful. Perhaps you can lend me a hand with resume as well. xm restore fails (xend.log appended) because the xenfb backend can't be connected. Obviously, I need to start the backend somewhere on restore, just like I start it on xm create (patch appended). Where? How? [2006-11-21 18:21:21 xend 3303] ERROR (XendDomain:268) Restore failed Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/XendDomain.py", line 263, in d omain_restore_fd return XendCheckpoint.restore(self, fd) File "/usr/lib/python2.4/site-packages/xen/xend/XendCheckpoint.py", line 165, in restore dominfo.waitForDevices() # Wait for backends to set up File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1596, in waitForDevices self.waitForDevices_(c) File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1090, in waitForDevices_ return self.getDeviceController(deviceClass).waitForDevices() File "/usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", line 145, in waitForDevices return map(self.waitForDevice, self.deviceIDs()) File "/usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", line 155, in waitForDevice raise VmError("Device %s (%s) could not be connected. " VmError: Device 0 (vkbd) could not be connected. Hotplug scripts not working. diff -r 73ef90055339 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Thu Nov 16 18:29:06 2006 +0000 +++ b/tools/python/xen/xend/image.py Fri Nov 17 16:06:23 2006 +0100 @@ -23,6 +23,7 @@ import signal import signal import xen.lowlevel.xc +import xen.util.auxbin from xen.xend import sxp from xen.xend.XendError import VmError, XendError from xen.xend.XendLogging import log @@ -209,6 +210,81 @@ class LinuxImageHandler(ImageHandler): cmdline = self.cmdline, ramdisk = self.ramdisk, features = self.vm.getFeatures()) + + def configure(self, imageConfig, deviceConfig): + ImageHandler.configure(self, imageConfig, deviceConfig) + + self.pid = 0 + log.info("configuring linux guest") + + # set up the graphics bits. + # FIXME: this is much like what we do for HVM, should it be + # for all image types now? + self.display = sxp.child_value(imageConfig, 'display') + self.xauthority = sxp.child_value(imageConfig, 'xauthority') + self.vncconsole = sxp.child_value(imageConfig, 'vncconsole') + vncpasswd = sxp.child_value(imageConfig, 'vncpasswd') + if not(vncpasswd is None): + imageConfig.remove(['vncpasswd', vncpasswd]) + self.vncpasswd = vncpasswd + + self.vnc = sxp.child_value(imageConfig, 'vnc') + self.sdl = sxp.child_value(imageConfig, 'sdl') + if self.vnc: + self.vncdisplay = int(sxp.child_value(imageConfig, 'vncdisplay', + self.vm.getDomid())) + self.vncunused = sxp.child_value(imageConfig, 'vncunused') + self.vnclisten = sxp.child_value(imageConfig, 'vnclisten') + if not(self.vnclisten): + self.vnclisten = xen.xend.XendRoot.instance().get_vnclisten_address() + + def createDeviceModel(self): + if self.pid: + return + # Execute device model (for us, it's just the fb frontend) + if not self.vnc and not self.sdl: + return + + if self.vnc: + args = [xen.util.auxbin.pathTo("xen-vncfb")] + if self.vncunused: + args += ['--unused'] + elif self.vncdisplay: + args += [ "--vncport", "%d" %(5900 + self.vncdisplay,) ] + if self.vnclisten: + args += [ "--listen", self.vnclisten ] + + # password check + if self.vncpasswd is None: + # get password from xend-config(if password omitted, None) + self.vncpasswd = xen.xend.XendRoot.instance().get_vncpasswd_default() + + if self.vncpasswd is None: + raise VmError('vncpasswd is not setup in the guest config or xend-config.') + if self.vncpasswd != '': + self.vm.storeVm("vncpasswd", self.vncpasswd) + log.info("vncpassword set to '%s'", self.vncpasswd) + + elif self.sdl: + args = [xen.util.auxbin.pathTo("xen-sdlfb")] + args = args + [ "--domid", "%d" % self.vm.getDomid(), + "--title", self.vm.info['name'] ] + + env = dict(os.environ) + if self.display: + env['DISPLAY'] = self.display + if self.xauthority: + env['XAUTHORITY'] = self.xauthority + log.info("spawning video: %s", args) + self.pid = os.spawnve(os.P_NOWAIT, args[0], args, env) + log.info("device model pid: %d", self.pid) + + def destroy(self): + if not self.pid: + return + os.kill(self.pid, signal.SIGKILL) + os.waitpid(self.pid, 0) + self.pid = 0 class PPC_LinuxImageHandler(LinuxImageHandler): _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |