[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster |
Date: |
Thu, 13 Apr 2017 14:37:35 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
On 12/04/2017 17:51, address@hidden wrote:
> The root cause is that the clock will be lost if the periodic period is
> changed as currently code counts the next periodic time like this:
> next_irq_clock = (cur_clock & ~(period - 1)) + period;
>
> consider the case if cur_clock = 0x11FF and period = 0x100, then the
> next_irq_clock is 0x1200, however, there is only 1 clock left to trigger
> the next irq. Unfortunately, Windows guests (at least Windows7) change
> the period very frequently if it runs the attached code, so that the
> lost clock is accumulated, the wall-time become faster and faster
Very interesting.
However, I think that the above should be exactly how the RTC should
work. The original RTC circuit had 22 divider stages (see page 13 of
the datasheet[1], at the bottom right), and the periodic interrupt taps
the rising edge of one of the dividers (page 16, second paragraph). The
datasheet also never mentions a comparator being used to trigger the
periodic interrupts.
Have you checked that this Windows bug doesn't happen on real hardware
too? Or is the combination of driftfix=slew and changing periods that
is a problem?
The series also does more than this fix (or workaround), so I will
review it anyway.
[1] http://www.nxp.com/assets/documents/data/en/data-sheets/MC146818.pdf
Thanks,
Paolo
- [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, guangrong . xiao, 2017/04/12
- [Qemu-devel] [PATCH 1/5] mc146818rtc: update periodic timer only if it is needed, guangrong . xiao, 2017/04/12
- [Qemu-devel] [PATCH 2/5] mc146818rtc: fix clock lost after scaling coalesced irq, guangrong . xiao, 2017/04/12
- [Qemu-devel] [PATCH 3/5] mc146818rtc: properly count the time for the next interrupt, guangrong . xiao, 2017/04/12
- [Qemu-devel] [PATCH 4/5] mc146818rtc: move x86 specific code out of periodic_timer_update, guangrong . xiao, 2017/04/12
- [Qemu-devel] [PATCH 5/5] mc146818rtc: embrace all x86 specific code, guangrong . xiao, 2017/04/12
- Re: [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/13
- Re: [Qemu-devel] [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/13
- [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Zhanghailiang, 2017/04/13
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/13
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Hailiang Zhang, 2017/04/13
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/13
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Hailiang Zhang, 2017/04/13
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/18
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Hailiang Zhang, 2017/04/19
- Re: [Qemu-devel] 答复: [PATCH 0/5] mc146818rtc: fix Windows VM clock faster, Xiao Guangrong, 2017/04/19