aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-02-24 09:38:35 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-02-24 09:38:35 +0000
commit078a073a6ccd4f6a66cce154ecaeceaa39c28b78 (patch)
treeb93be4edf4355270cd7d3e316392695339e40c41
parent79e0b9479d3d37940fdbff83183daaeafacbe668 (diff)
downloadxen-078a073a6ccd4f6a66cce154ecaeceaa39c28b78.tar.gz
xen-078a073a6ccd4f6a66cce154ecaeceaa39c28b78.tar.bz2
xen-078a073a6ccd4f6a66cce154ecaeceaa39c28b78.zip
xend: notify xenpv device model that console info is ready
Sometimes PV domain with vfb doesn't boot up. /sbin/kudzu is stuck. After investigation, I've found that the evtchn for console is not bound at all. Normal sequence of evtchn initialization in qemu-dm for xenpv is: 1) watch xenstore backpath (/local/domain/0/backend/console/<domid>/0) 2) read console info (/local/domain/<domid>/console/{type, ring-ref, port..= }) 3) bind the evtchn to the port. But in some case, xend writes to the backpath before the console info is prepared, and never write to the backpath again. So the qemu-dm fails at 2) and never reach to 3). When this happens, manually xenstore-write command on Domain-0 resumes the guest. Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
-rw-r--r--tools/python/xen/xend/XendDomainInfo.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py
index 577905d459..585a73bff3 100644
--- a/tools/python/xen/xend/XendDomainInfo.py
+++ b/tools/python/xen/xend/XendDomainInfo.py
@@ -1642,6 +1642,11 @@ class XendDomainInfo:
console_uuid = serial_consoles[0].get('uuid')
self.info.console_update(console_uuid, 'location',
self.console_port)
+ # Notify xenpv device model that console info is ready
+ if not self.info.is_hvm() and self.info.has_rfb():
+ console_ctrl = self.getDeviceController('console')
+ # The value is unchanged. Just for xenstore watcher
+ console_ctrl.writeBackend(0, 'uuid', console_uuid)
# Update VNC port if it exists and write to xenstore