Updated virtio-win package that fixes several bugs and adds various enhancements are now available for Red Hat Enterprise Linux 6.
The virtio-win package provides paravirtualized network drivers for most Microsoft Windows operating systems. Paravirtualized drivers are virtualization-aware drivers used by fully virtualized guests running on Red Hat Enterprise Linux. Fully virtualized guests using the paravirtualized drivers gain significantly better I/O performance than fully virtualized guests running without the drivers.
- Previously, when a virtio console port was hot unplugged and subsequently a new port was plugged under the same number reusing previously disowned volume groups, QEMU reported:
Guest moved used index from 0 to 256With this update, it is no longer possible for a newly plugged port to be registered under the same number as a previously detached port. As a result, the aforementioned message is no longer displayed.
- Previously, when the virtio-serial device was in use, an attempt to resume the system from Sleep (S3) mode led to a stop error (the blue screen of death). The interrupt disable logic in virtio-serial has been fixed and the system can now be resumed without the stop error.
- Under certain circumstances, when the virtqueue was full, a guest volume group became unresponsive. Consequently, a bug check was triggered and the netkvm driver wrote to the read-only Interrupt Service Routine (ISR) register, which caused QEMU to respond with the following message:
virtio_ioport_write: unexpected address 0x13 value 0x0This bug has been fixed and the aforementioned message is no longer displayed.
- Due to a missing StopIO handler in the voiserial code, a stop error (the blue screen of death) occurred while shutting down the system. With this update, the StopIO handler has been added to voiserial, and the stop error no longer occurs during the system shutdown.
- Due to a bug in the virtio-serial power state management code, it was impossible to turn the guest system to sleep (S3) or hibernate (S4) mode while the virtio-serial utility was in use. This bug has been fixed, and guests can now sleep or hibernate as expected.
- Due to a bug in the Seabios application code, the system could not be resumed from hibernation and a stop error (the blue screen of death) occurred. With this update, Seabios has been fixed and system can now be resumed as expected.
- Switching the system into hibernate mode (S4) while transferring data over the virtio-serial device caused a stop error (the blue screen of death). With this update, the lock acquire and release logic in virtio-serial has been changed, thus fixing this bug.
- In the previous release, the TCP offload code was optimized but the test-only mode of the offload emulation in drivers was not updated and therefore was not functional. Consequently, when the SW offload test mode was triggered, the network became unavailable. With this update, the SW emulation of TCP/IP offload has been removed and the guest now aways applies the host offload capabilities, thus preventing the network shutdown.
- After resuming the system from the sleep (S3) or hibernate (S4) state, the vioserial device did not operate properly. With this update, the device handling logic in vioserial has been changed and vioserial now works properly after resuming from the S3 or S4 state.
- When multi-queuue feature is enabled, the base address register (BAR) size of the virtio-net networks driver is increased. Previously, virtio-net was testing for BAR size during initialization and consequently failed to start. With this update, virtio-net has been modified not to test the BAR size and to use virtio features to check if additional registers can be accessed. As a result, the driver can now start without complications.
- Previously, the WDF installer in the virtio-win package was signed with a Red Hat signature, which overwrote the original Windows signature. With this update, WdfCoInstaller010xx.dll files are distributed without Red Hat signature.
- Previously, the ".inf" files in the virtio-win package were distributed without an explicit specification of revision ID, which violates certain virtio spec requirements. With this update, these ".inf" files explicitly specify revision id as part of the HW identification string.
- BZ#912926, BZ#957435
- Prior to this update, an interrupt could have occurred on the guest volume group during the NetKVM device shutdown. Consequently, the guest became unresponsive. With this update, the interrupts have been disabled and the device shutdown is now synchronized with DIRQL (Device Interrupt Request Level) of the device. As a result, the guest no longer hangs in the aforementioned scenario.
- Previously, the NetKVM driver was using the VIRTO_ISR register for debug output in case of a guest stop error (the blue screen of death) or hangs in outgoing transfer. However, these issues should be detected by other methods. With this update, VIRTIO_ISR is no longer used for debug purposes.
- Previously, several debug parameters were exposed to the user. Potential change of these parameters could have influenced the functionality of the network device. This update removes these test parameters from the device manager. As a result, the debug and experimental parameters are no longer visible for the user.
- Due to an incorrect implementation of a corner case in a checksum testing, certain packets were dropped by the NetKVM driver. The checksum calculation has been fixed and packets are no longer dropped in the described case.
- Previously, certain parts of the debug information where printed without the line break, which decreased the readability of debug information. With this update, end-of-line characters have been added to the debug prints.
- Previously, after reinstalling the virtio-serial driver, the driver did not transfer data through the serial port. This bug has been fixed, and virtio-serial now works correctly after the reinstall sequence.
- Due to a bug in the write request cancellation logic of the virtio-serial driver, the guest could not be shut down while transferring data from the guest to the host over the virtio-serial port. With this update, the guest can be shut down successfully even if the data transfer from guest to host is still in progress.
- In virtio-win-1.6.3, Windows Server 2012 drivers were certified as the "Network-Other Device" product type, instead of "Network-LAN (Server)". Consequently, the support of "Network-LAN (Server)" was not clearly stated. This update adds the newer pre-WHQL driver build as the "Network-LAN (Server)" product type.
- Due to a bug in the locking sequence of the NetKVM driver, a hot unplug of the device could have caused the driver to become unresponsive. The locking sequence has been fixed and NetKVM no longer hangs after unexpected device removal.
- In case the drivers are set with multiple IP addressees, an incorrect parsing of the IP address structure in the driver could have caused a stop error (the blue screen of death). As this parsing was done for debug purposes only, with this update it has been completely removed from the drivers.
- BZ#957505, BZ#960503
- Due to a race condition, setting the virtio features to "0" before VM hibernation could trigger a QEMU assertion or a network interruption. With this update, these features are no longer set to "0", thus preventing both assertion and network failure in the aforementioned scenario.
- Previously, resuming the system from hibernation mode (S4) after hot plugging a virtio-serial device led to a stop error (the blue screen of death). This bug has been fixed and guest can resume successfully in the described case.
- In case of failed initialization of the NetKVM driver, certain internal system data structures were also not initialized. Consequently, access to uninitialized data structures during driver unload caused a stop error (the blue screen of death). With this update, the partial driver initialization is handled correctly and a stop error no longer occurs.
- Previously, the INF file incorrectly indicated 1GB connection rate. While the connection rate of this size could be set from the device manager, it was impossible to set 1GB rate using a command-line tool. This update sets the correct connection rate in INF file and this rate can now be configured with the command line as expected.
- An automatic conversion to Visual Studio projects set an incorrect calling convention for 32bit binaries of the netsh plug-in. Consequently, the command-line options of the netsh plug-in did not work on 32bit operation systems. With this update, the calling convention has been changed and the netsh plug-in command-line options now work correctly on 32bit architectures.
- With this update, support for the event index feature has been added. This feature reduces CPU utilization per megabyte for most operations, for example during the network transfer.
- A new mechanism of setting the MAC address was introduced in QEMU. Setting the MAC address can now be made as an atomic change, and QEMU is able to test MAC address for validity.
- By default, the OVS switch removes the priority header from packets, so the priority and VLAN tags are stripped from the packets originated in Windows guests. This behavior is now configurable with the "other-config:priority-tags" option. To preserve the priority tags, for each port added to the OVS bridge the following command needs to be executed:
ovs-vsctl set port <PORT_NAME> other-config:priority-tags=true
- This update adds support for VSS (Volume Shadow Copy Service) to the qemu-ga-win agent. VSS is a Microsoft Windows API that allows for consistent freeze and thaw operations. With this feature, snapshots taken while the virtual machine is running are consistent through the whole stack from the block layer to the guest applications and can be used for backup purposes.
- With this update, the virtio indirect buffers feature can be used in the guest driver, providing enhanced virtio capability to transfer fragmented network traffic.
- With this update, NetKVM driver build facilities have been converted to Visual Studio projects or solutions, providing compatibility with the with Windows 8 DDK.
- This update implements RSS (Receive Side Scaling), which improves RX performance on Windows SMP guests.
- The Windows guest agent is now fully supported and delivered with its own installer in the Supplementary channel together with the virtio-win drivers.
Users of virtio-win are advised to upgrade to these updated packages, which contain backported patches to correct these issues and add these enhancements.