From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53309) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz4Y1-0004f5-E9 for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:16:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xz4Y0-0001jj-DF for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:16:53 -0500 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:49904) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz4Y0-0001jf-62 for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:16:52 -0500 Received: by mail-wi0-f169.google.com with SMTP id r20so1598168wiv.4 for ; Thu, 11 Dec 2014 06:16:51 -0800 (PST) Sender: Paolo Bonzini Message-ID: <5489A74E.2020309@redhat.com> Date: Thu, 11 Dec 2014 15:16:46 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1418229280-30380-1-git-send-email-pbonzini@redhat.com> In-Reply-To: <1418229280-30380-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] serial: do not trigger THR interrupt after writing to IER List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: imammedo@redhat.com On 10/12/2014 17:34, Paolo Bonzini wrote: > This is responsible for failure of migration from 2.2 to 2.1, because > thr_ipending is always one in practice. Calling serial_update_irq is > the right thing to do indeed, because writing to IER could cause an > interrupt to appear. However, there is no reason to set thr_ipending > again. > > This was already reported in 2010. See this quote from > https://lists.gnu.org/archive/html/qemu-devel/2010-03/msg01914.html: > >> The commit in r1049 (serial interrupt fix (Hampa Hug)) prevents >> booting Digital Research DOSPlus. Following patch partially reverts >> that commit and makes DOSPlus booting in QEMU again. > > Bochs does not check LSR_THRE in IER, and the log message in r1049 doesn't > explain why the change was made in the first place. > > This does not change the migration format, so 2.2.0 -> 2.1 will remain > broken but we can fix 2.2.1 -> 2.1 without breaking 2.2.1 <-> 2.2.0. > > Signed-off-by: Paolo Bonzini > --- > hw/char/serial.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/hw/char/serial.c b/hw/char/serial.c > index ebcacdc..cf8e4e3 100644 > --- a/hw/char/serial.c > +++ b/hw/char/serial.c > @@ -350,10 +350,7 @@ static void serial_ioport_write(void *opaque, hwaddr addr, uint64_t val, > s->poll_msl = 0; > } > } > - if (s->lsr & UART_LSR_THRE) { > - s->thr_ipending = 1; > - serial_update_irq(s); > - } > + serial_update_irq(s); > } > break; > case 2: > Nope, this breaks the Windows UART driver. Paolo