No edit summary |
(remove comments, add to virt categories) |
||
Line 2: | Line 2: | ||
== Summary == | == Summary == | ||
This feature adds a virtio-serial device to guests running on top of qemu and kvm. It exposes multiple ports to the guest in the form of simple char devices for simple IO between the guest and host userspaces. | This feature adds a virtio-serial device to guests running on top of qemu and kvm. It exposes multiple ports to the guest in the form of simple char devices for simple IO between the guest and host userspaces. | ||
== Owner == | == Owner == | ||
* Name: [[User:Amitshah| Amit Shah]] | * Name: [[User:Amitshah| Amit Shah]] | ||
* email: amit.shah@redhat.com | * email: amit.shah@redhat.com | ||
Line 18: | Line 14: | ||
== Detailed Description == | == Detailed Description == | ||
Also known as 'vmchannel', a transport mechanism is needed for communication between the host userspace and guest userspace for achieving things like making clipboard copy/paste work seamlessly across the host and guest, locking the guest screen in case the vnc session to the guest is closed and so on. This can be used in offline cases as well, for example with libguestfs to probe which file systems the guest uses, the apps installed, etc. | Also known as 'vmchannel', a transport mechanism is needed for communication between the host userspace and guest userspace for achieving things like making clipboard copy/paste work seamlessly across the host and guest, locking the guest screen in case the vnc session to the guest is closed and so on. This can be used in offline cases as well, for example with libguestfs to probe which file systems the guest uses, the apps installed, etc. | ||
Line 24: | Line 19: | ||
== Benefit to Fedora == | == Benefit to Fedora == | ||
Some benefits include: | Some benefits include: | ||
* a communication channel between the guest and the host even when guest networking is disabled | * a communication channel between the guest and the host even when guest networking is disabled | ||
Line 31: | Line 25: | ||
== Scope == | == Scope == | ||
Changes are required in QEMU and Linux. A few udev rules will have to be added to dynamically create ports for the device. | Changes are required in QEMU and Linux. A few udev rules will have to be added to dynamically create ports for the device. | ||
== How To Test == | == How To Test == | ||
When starting qemu or kvm guests from the command line, a new option, -virtioserial unix:/path/to/socket will create a PCI device and expose one serial port to the guest. The guest kernel should load the virtio-serial.ko module and expose a /dev/vmch0 port to guest userspace app developers. Data written into host's /path/to/socket will then be relayed to the guest and a guest app should be able to read the data from /dev/vmch0. | When starting qemu or kvm guests from the command line, a new option, -virtioserial unix:/path/to/socket will create a PCI device and expose one serial port to the guest. The guest kernel should load the virtio-serial.ko module and expose a /dev/vmch0 port to guest userspace app developers. Data written into host's /path/to/socket will then be relayed to the guest and a guest app should be able to read the data from /dev/vmch0. | ||
== User Experience == | == User Experience == | ||
Virtio-serial is just the transport and by itself won't be user-visible. Applications written on top of virtio-serial to communicate data between the host and guest OSes will bring user-visible changes. | Virtio-serial is just the transport and by itself won't be user-visible. Applications written on top of virtio-serial to communicate data between the host and guest OSes will bring user-visible changes. | ||
== Dependencies == | == Dependencies == | ||
This feature depends on acceptance of the patches by the QEMU and Linux kernel communities. | This feature depends on acceptance of the patches by the QEMU and Linux kernel communities. | ||
== Contingency Plan == | == Contingency Plan == | ||
QEMU currently contains an alternative implementation of vmchannel using userland networking which is slower but similar in feature set. Continue using that interface in case virtio-serial is not ready. | QEMU currently contains an alternative implementation of vmchannel using userland networking which is slower but similar in feature set. Continue using that interface in case virtio-serial is not ready. | ||
== Documentation == | == Documentation == | ||
http://www.linux-kvm.org/page/VMchannel_Requirements | http://www.linux-kvm.org/page/VMchannel_Requirements | ||
== Release Notes == | == Release Notes == | ||
* New virtio-serial pci device exposed to guests running on top of qemu and kvm. A single device exposes multiple serial ports for simple guest <-> host communication. | * New virtio-serial pci device exposed to guests running on top of qemu and kvm. A single device exposes multiple serial ports for simple guest <-> host communication. | ||
== Comments and Discussion == | == Comments and Discussion == | ||
* See [[Talk:VirtioSerial]] | * See [[Talk:VirtioSerial]] | ||
[[Category:FeatureReadyForFesco]] | [[Category:FeatureReadyForFesco]] | ||
[[Category:Virtualization|VirtioSerial]] | |||
[[Category:F12_Virt_Features|VirtioSerial]] | |||
Revision as of 08:00, 10 July 2009
Virtio-Serial
Summary
This feature adds a virtio-serial device to guests running on top of qemu and kvm. It exposes multiple ports to the guest in the form of simple char devices for simple IO between the guest and host userspaces.
Owner
- Name: Amit Shah
- email: amit.shah@redhat.com
Current status
- Targeted release: Fedora 12
- Last updated: 2009-06-29
- Percentage of completion: 60%
Detailed Description
Also known as 'vmchannel', a transport mechanism is needed for communication between the host userspace and guest userspace for achieving things like making clipboard copy/paste work seamlessly across the host and guest, locking the guest screen in case the vnc session to the guest is closed and so on. This can be used in offline cases as well, for example with libguestfs to probe which file systems the guest uses, the apps installed, etc.
Virtio-serial is just the transport protocol that will enable such applications to be written. It has two parts: (a) device emulation in qemu that presents a virtio-pci device to the guest and (b) a guest driver that presents a char device interface to userspace applications.
Benefit to Fedora
Some benefits include:
- a communication channel between the guest and the host even when guest networking is disabled
- applications can be written on top of the transport to achieve better guest-host cooperation, eg., clipboard copy/paste support between the host and the guest
- libguestfs currently uses a low-performing vmchannel interface. Updating libguestfs to use this interface will achieve better speeds.
Scope
Changes are required in QEMU and Linux. A few udev rules will have to be added to dynamically create ports for the device.
How To Test
When starting qemu or kvm guests from the command line, a new option, -virtioserial unix:/path/to/socket will create a PCI device and expose one serial port to the guest. The guest kernel should load the virtio-serial.ko module and expose a /dev/vmch0 port to guest userspace app developers. Data written into host's /path/to/socket will then be relayed to the guest and a guest app should be able to read the data from /dev/vmch0.
User Experience
Virtio-serial is just the transport and by itself won't be user-visible. Applications written on top of virtio-serial to communicate data between the host and guest OSes will bring user-visible changes.
Dependencies
This feature depends on acceptance of the patches by the QEMU and Linux kernel communities.
Contingency Plan
QEMU currently contains an alternative implementation of vmchannel using userland networking which is slower but similar in feature set. Continue using that interface in case virtio-serial is not ready.
Documentation
http://www.linux-kvm.org/page/VMchannel_Requirements
Release Notes
- New virtio-serial pci device exposed to guests running on top of qemu and kvm. A single device exposes multiple serial ports for simple guest <-> host communication.