Hi
As requested by Dave, I send this to the list.
I came across a bug that the command line generated for passtrough of the host parallel port /dev/parport0 by libvirt for QEMU is incorrect.
It currently produces:
-chardev tty,id=charparallel0,path=/dev/parport0
-device isa-parallel,chardev=charparallel0,id=parallel0
The first parameter is "tty". It sould be "parport".
If I launch qemu with –chardev parport,… it works as expected.
I have already filled a bug report ( https://bugzilla.redhat.com/show_bug.cgi?id=823879 ), the topic was already on the list some months ago:
https://www.redhat.com/archives/libvirt-users/2011-September/msg00095.html
Not sure if this is fix is very clean, but for my case it works.
Perhaps it should also be checked if similar problems / patches are required for other chardev backends.
Kind regards
Beat
diff -Naur libvirt-0.9.4.orig/src/qemu/qemu_command.c libvirt-0.9.4/src/qemu/qemu_command.c
--- libvirt-0.9.4.orig/src/qemu/qemu_command.c 2012-05-22 13:40:16.788633656 +0200
+++ libvirt-0.9.4/src/qemu/qemu_command.c 2012-05-22 13:52:18.453608557 +0200
@@ -2357,8 +2357,14 @@
break;
case VIR_DOMAIN_CHR_TYPE_DEV:
- virBufferAsprintf(&buf, "tty,id=char%s,path=%s", alias,
- dev->data.file.path);
+ if (STRPREFIX(dev->data.file.path, "/dev/parport")) {
+ virBufferAsprintf(&buf, "parport,id=char%s,path=%s", alias,
+ dev->data.file.path);
+ }
+ else {
+ virBufferAsprintf(&buf, "tty,id=char%s,path=%s", alias,
+ dev->data.file.path);
+ }
break;
case VIR_DOMAIN_CHR_TYPE_FILE: