Re: UIP flag not cleared

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Il 15/06/2012 17:38, nicolas.ochem@xxxxxxx ha scritto:
> Hi list,
> 
> 
> I am having troubles porting my os to qemu/kvm environment. It's
> about the RTC (real-time clock)
> 
> There is a flag (UIP flag) which is supposed to show when RTC can be
> read or not.
> 
> We wait 10ms for that flag to be cleared, but sometimes it's not
> enough with qemu/kvm.

You need to wait more than 10ms then. :(  This will be fixed in QEMU
1.2, but you cannot rule out delays due to bad scheduling of the virtual
machine monitor (aka QEMU itself).

> Is it necessary to check this flag at all ? or can I always read the
> RTC regardless of the status of the flag ? If the latter is true, why
> then is this flag not always clear ?

Unlike real hardware, QEMU updates the time atomically; there are no
"invalid states" during the update of the RTC.  However, _reads_ of the
RTC are not atomic so you do need UIP.  UIP triggers 220 us *before* the
invalid state, so that if UIP=0 you have 220 us to read the RTC.  If
your reads take less than 220 us, they are guaranteed to be atomic.

If you need a workaround you can do the following (but it will break on
bare metal):

    old_UIP = UIP
    read RTC
    if old_UIP = 1 and UIP = 0
        read RTC again

i.e. accept the old read if both old_UIP and UIP are 1 (and of course if
old_UIP was 0).

Paolo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux