While adding migration support for thr_ipending, I and Pavel chose the default value of thr_ipending (absent the subsection) according to what should be the common behavior of the serial device and its drivers.
However, the condition did not actually match the common state of the serial device because of emulation inaccuracies. Thus the subsection is almost always transmitted, which breaks migration from 2.2 to 2.1. Patch 3 fixes these inaccuracies, but unmasks a missed interrupt bug that upsets Windows. In order to keep bisectability, that missed interrupt is first fixed in patch 2. And to close the circle, patch 1 cleans up more code that didn't match the datasheet too well (and was also unnecessarily complicated); that was the first, unfruitful attempt to fix the bug. Datasheet available at http://www.ti.com/lit/ds/symlink/pc16550d.pdf Paolo Bonzini (3): serial: fix THRE/TEMT handling serial: update LSR on enabling/disabling FIFOs serial: do not trigger THR interrupt after writing to IER hw/char/serial.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) -- 1.8.3.1