Date 20.10.2011 17:02, Konstantin Ozerkov wrote:
This patch intended to improve performance in virtualized environments like Parallels Desktop or VirtualBox/QEMU (virtual ICH/AC97 audio).
I/O access is very time-expensive operation in virtual world: VCPU can be rescheduled and in the worst case we got more than 10ms delay on each I/O access.
In the original code normal loop exit rule (old_civ == current_civ && old_picb == current_picb) was never satisfied, because old_picb was never the same as current_picb due delay inspired by reading current_civ. As a result loop ended by timeout and we got 10x more I/O operations.
To prevent glitch on buffer swapping the rule (old_civ == current_civ) is enough.
I don't think so. This code was added because we got some strange situations (values) with the real intel8x0 hardware. A better way might be to identify the virtualisation (maybe using special PCI IDs) and skip these extra checks in the driver for these devices.
NAK from me.
Jaroslav