Message ID | 1393418058-14113-1-git-send-email-ian.campbell@citrix.com |
---|---|
State | Accepted |
Commit | bf5dbce61e5c0ded4c7b7592e69e1bfb3220fcfe |
Headers | show |
On Wed, 2014-02-26 at 12:37 +0000, Daniel P. Berrange wrote: > On Wed, Feb 26, 2014 at 12:34:17PM +0000, Ian Campbell wrote: > > Currently virsh console fails with: > > Connected to domain libvirt-test > > Escape character is ^] > > error: internal error: cannot find character device <null> > > > > I haven't investigated yet. > > That'll be because no <console> or <serial> device is > listed in your config above I expect. Also looks like > bogus error handling in the console API, not checking > for <null>. Thanks. I've just tried (inside <devices>...</...>): <console tty='/dev/pts/5'/> and <console type='pty'> <target port='0'/> </console> which I gleaned from http://libvirt.org/drvxen.html but neither seem to do the trick (and the first ones use of an explicit pts looks odd to me...). > ACK Thanks. Ian.
On Wed, 2014-02-26 at 15:00 +0100, Olaf Hering wrote: > On Wed, Feb 26, Ian Campbell wrote: > > > On Wed, 2014-02-26 at 12:37 +0000, Daniel P. Berrange wrote: > > > On Wed, Feb 26, 2014 at 12:34:17PM +0000, Ian Campbell wrote: > > > > Currently virsh console fails with: > > > > Connected to domain libvirt-test > > > > Escape character is ^] > > > > error: internal error: cannot find character device <null> > > > That'll be because no <console> or <serial> device is > > > listed in your config above I expect. Also looks like > > > bogus error handling in the console API, not checking > > > for <null>. > > Thanks. I've just tried (inside <devices>...</...>): > > <console tty='/dev/pts/5'/> > > and > > <console type='pty'> > > <target port='0'/> > > </console> > > which I gleaned from http://libvirt.org/drvxen.html but neither seem to > > do the trick (and the first ones use of an explicit pts looks odd to > > me...). > > I learned yesterday this should be "serial" instead of "console", maybe > it fixes also your case. My understanding was that this was for HVM guests, whereas ARM has a PV console but I suppose I should try it anyway. I've got a flight to catch so it'll be a few days I expect. Thanks, Ian.
On Wed, 2014-02-26 at 06:34 -0700, Eric Blake wrote: > On 02/26/2014 05:37 AM, Daniel P. Berrange wrote: > > On Wed, Feb 26, 2014 at 12:34:17PM +0000, Ian Campbell wrote: > >> Only tested on v7 but the v8 equivalent seems pretty obvious. > >> > >> XEN_CAP_REGEX already accepts more than it should (e.g. x86_64p or x86_32be) > >> but I have stuck with the existing pattern. > >> > >> With this I can create a guest from: > >> <domain type='xen'> > >> <name>libvirt-test</name> > >> <uuid>6343998e-9eda-11e3-98f6-77252a7d02f3</uuid> > >> <memory>393216</memory> > >> <currentMemory>393216</currentMemory> > >> <vcpu>1</vcpu> > >> <os> > >> <type arch='armv7l' machine='xenpv'>linux</type> > >> <kernel>/boot/vmlinuz-arm-native</kernel> > >> <cmdline>console=hvc0 earlyprintk debug root=/dev/xvda1</cmdline> > >> </os> > > > > > ACK > > I've gone ahead and pushed the patch. Wow, that was quick, thanks! Ian.
On Wed, 2014-02-26 at 15:01 +0000, Daniel P. Berrange wrote: > Yep, if ARM has a PV console, then we'd need to add tiny bit to the XML > to allow us to configure that explicitly, similar to how we do for KVM's > virtio-console support. Do you mean I need to add something to the XML config snippet, or I need to add some special handling in the XML parser/consumer? I've grepped around the virtio-console stuff and I'm none the wiser. Thanks, Ian.
On Fri, 28 Feb 2014, Daniel P. Berrange wrote: > On Fri, Feb 28, 2014 at 02:12:30AM +0000, Ian Campbell wrote: > > On Wed, 2014-02-26 at 15:01 +0000, Daniel P. Berrange wrote: > > > Yep, if ARM has a PV console, then we'd need to add tiny bit to the XML > > > to allow us to configure that explicitly, similar to how we do for KVM's > > > virtio-console support. > > > > Do you mean I need to add something to the XML config snippet, or I need > > to add some special handling in the XML parser/consumer? > > > > I've grepped around the virtio-console stuff and I'm none the wiser. > > Opps, yes, I should have explained this better, since our docs here are > about as clear as mud. > > With traditional x86 paravirt Xen, we just have the plain paravirt console > devices > > <console type='pty'> > <target type='xen'/> > </console> > > With x86 fullvirt Xen/KVM/QEMU, the console type just defaults to being > a serial port so you would usually just add > > <serial type='pty'> > </serial> > > and then libvirt would automatically add a <console> with > > <console type='pty'> > <target type='serial'/> > </console> > > > With x86 fullvirt KVM, we also have support for virtio which is > done using > > <console type='pty'> > <target type='virtio'/> > </console> > > > So actually this leads me to ask what kind of console Arm fullvirt Xen > guests actually have ? If they just use the traditional Xen paravirt > console, then we just need to make sure that this works for them by > default: > > <console type='pty'> > <target type='xen'/> > </console> > > > If there's a different type of console device that's not related to > the Xen paravirt console device, then we'd need to invent a new > <target type='xxx'/> value for Arm. It is just the traditional Xen paravirt console. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Fri, 2014-02-28 at 14:29 +0000, Stefano Stabellini wrote: > On Fri, 28 Feb 2014, Daniel P. Berrange wrote: > > So actually this leads me to ask what kind of console Arm fullvirt Xen > > guests actually have ? If they just use the traditional Xen paravirt > > console, then we just need to make sure that this works for them by > > default: > > > > <console type='pty'> > > <target type='xen'/> > > </console> > > > > > > If there's a different type of console device that's not related to > > the Xen paravirt console device, then we'd need to invent a new > > <target type='xxx'/> value for Arm. > > It is just the traditional Xen paravirt console. I tried the above,which AIUI should work, but it fails with the same "cannot find character device <null>" error. I'll investigate properly next week. Ian.
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 4cefadf..7ed692d 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -61,7 +61,7 @@ struct guest_arch { int ia64_be; }; -#define XEN_CAP_REGEX "(xen|hvm)-[[:digit:]]+\\.[[:digit:]]+-(x86_32|x86_64|ia64|powerpc64)(p|be)?" +#define XEN_CAP_REGEX "(xen|hvm)-[[:digit:]]+\\.[[:digit:]]+-(aarch64|armv7l|x86_32|x86_64|ia64|powerpc64)(p|be)?" static virClassPtr libxlDriverConfigClass; @@ -319,8 +319,11 @@ libxlCapsInitGuests(libxl_ctx *ctx, virCapsPtr caps) } else if (STRPREFIX(&token[subs[2].rm_so], "powerpc64")) { arch = VIR_ARCH_PPC64; + } else if (STRPREFIX(&token[subs[2].rm_so], "armv7l")) { + arch = VIR_ARCH_ARMV7L; + } else if (STRPREFIX(&token[subs[2].rm_so], "aarch64")) { + arch = VIR_ARCH_AARCH64; } else { - /* XXX arm ? */ continue; }
Only tested on v7 but the v8 equivalent seems pretty obvious. XEN_CAP_REGEX already accepts more than it should (e.g. x86_64p or x86_32be) but I have stuck with the existing pattern. With this I can create a guest from: <domain type='xen'> <name>libvirt-test</name> <uuid>6343998e-9eda-11e3-98f6-77252a7d02f3</uuid> <memory>393216</memory> <currentMemory>393216</currentMemory> <vcpu>1</vcpu> <os> <type arch='armv7l' machine='xenpv'>linux</type> <kernel>/boot/vmlinuz-arm-native</kernel> <cmdline>console=hvc0 earlyprintk debug root=/dev/xvda1</cmdline> </os> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <disk type='block' device='disk'> <source dev='/dev/marilith-n0/debian-disk'/> <target dev='xvda1'/> </disk> <interface type='bridge'> <mac address='8e:a7:8e:3c:f4:f6'/> <source bridge='xenbr0'/> </interface> </devices> </domain> Using virsh create and I can destroy it too. Currently virsh console fails with: Connected to domain libvirt-test Escape character is ^] error: internal error: cannot find character device <null> I haven't investigated yet. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> --- src/libxl/libxl_conf.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)