|
From: | Pavel Dovgalyuk |
Subject: | Re: [PATCH] hw/i8254: fix vmstate load |
Date: | Tue, 16 Mar 2021 07:15:07 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 |
On 15.03.2021 23:13, Dr. David Alan Gilbert wrote:
* Pavel Dovgalyuk (pavel.dovgalyuk@ispras.ru) wrote:QEMU timer of channel 0 in i8254 is used to raise irq at the specified moment of time. This irq can be disabled with irq_disabled flag. But when vmstate of the pit is loaded, timer may be rearmed despite the disabled interrupts. This patch adds irq_disabled flag check to fix that. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>Hi Pavel, I'm curious, did you see this cause a problem on a particular guest OS?
That was Windows 7 on i386. I found this when tested reverse debugging.
Dave--- hw/timer/i8254.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/timer/i8254.c b/hw/timer/i8254.c index c01ee2c72a..c8388ea432 100644 --- a/hw/timer/i8254.c +++ b/hw/timer/i8254.c @@ -324,7 +324,7 @@ static void pit_post_load(PITCommonState *s) { PITChannelState *sc = &s->channels[0];- if (sc->next_transition_time != -1) {+ if (sc->next_transition_time != -1 && !sc->irq_disabled) { timer_mod(sc->irq_timer, sc->next_transition_time); } else { timer_del(sc->irq_timer);
[Prev in Thread] | Current Thread | [Next in Thread] |