Bug 1211938
Summary: | libvirt requires rtc-reset-reinjection command in qemu | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Gu Nini <ngu> | |
Component: | libvirt | Assignee: | Andrea Bolognani <abologna> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | unspecified | Docs Contact: | ||
Priority: | unspecified | |||
Version: | 7.2 | CC: | abologna, dgibson, dyuan, dzheng, gsun, hhuang, jdenemar, knoel, lhuang, michen, rbalakri, virt-maint, xuhan, ypu, zhengtli | |
Target Milestone: | rc | Keywords: | Upstream | |
Target Release: | --- | |||
Hardware: | ppc64 | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | libvirt-1.2.16-1.el7 | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1213235 (view as bug list) | Environment: | ||
Last Closed: | 2015-11-19 06:28:35 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1213235 |
Description
Gu Nini
2015-04-15 08:57:17 UTC
This is nothing to do with the guest agent. The "rtc reinjection" that this command clears is something x86 specific that we have no need for on Power or anything else. It's not immediately clear whether the correct fix is to implement this in qemu as a no-op for Power, or to change libvirt not to attempt this on non-x86. Jirka, Andrea, thoughts? Correction, it has something to do with the guest agent in that this qmp command is called after changing the time via the guest agent. However the implementation is not in the guest agent in any way. To me this looks like a libvirt bug. If rtc-reset-reinjection does not make any sense for Power (likely because it just uses a different timer), we should not require it. I don't know much about timers but from the name of this command it looks like calling it may not even make sense for x86_64 depending on configured timers... Yes, Power uses a different timer. Its "RTC" is actually a paravirt firmware interface rather than a real discrete device (although it's treated as a device in qemu). Of course that's really a property of -machine pseries, not of target-ppc64. a PReP machine could have an MC146818 clock, although AFAICT the reset-reinjection stuff within the mc146818 driver is all #ifdef TARGET_I386 anyway. Anyway, moving this bug to libvirt. This issue has been addressed by commit ceab3979deca133cadf91150983b0153510de308 Author: Andrea Bolognani <abologna> Date: Tue May 26 18:13:40 2015 +0200 qemu: Limit rtc-reset-reinjection requirement to x86 only. The QMP command, like the interrupt reinjection logic it's connected to, is only implemented in QEMU when TARGET_I386 is defined, so checking for its availability on any other architecture is pointless. On the other hand, when we're on x86, we shouldn still make sure that rtc-reset-reinjection is available and refuse to set the time otherwise. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1211938 v1.2.16-rc1-5-gceab397 which has been merged upstream and will be in libvirt 1.2.16. Test on below packages: libvirt-1.2.17-2.el7.ppc64le kernel-3.10.0-292.el7.ppc64le qemu-kvm-rhev-2.3.0-9.el7.ppc64le ******************************************************* Test 1: --now and --pretty test Pass 1.1 Start guest and set time within the guest [root@localhost ~]# date --set "2015-07-29 16:21:42" Wed Jul 29 16:21:42 EDT 2015 [root@localhost ~]# date Wed Jul 29 16:21:44 EDT 2015 1.2 In the host, set the host time to the guest. # date Mon Jul 27 20:58:28 EDT 2015 # virsh domtime dzhengvm2 --now # echo $? 0 1.3 Check time within the guest, success. [root@localhost ~]# date -u Tue Jul 28 03:20:27 UTC 2015 1.4 Check in host via domtime. # virsh domtime dzhengvm2 Time: 1438053715 # virsh domtime dzhengvm2 --pretty Time: 2015-07-28 03:22:27 ******************************************************* Test 2: --sync test Pass. 2.1 Set time within the guest [root@localhost ~]# date --set "2015-07-29 16:21:42" Wed Jul 29 16:21:42 EDT 2015 2.2 Run --sync in the host # virsh domtime dzhengvm2 --sync # date Mon Jul 27 21:06:02 EDT 2015 2.3 Then check within the guest. # date Mon Jul 27 21:06:15 EDT 2015 ******************************************************* Test 3: --time test Pass 3.1 Get time within the guest [root@localhost ~]# date Mon Jul 27 21:05:03 EDT 2015 3.2 Get/set time of the guest via domtime # virsh domtime dzhengvm2 Time: 1438045546 # virsh domtime dzhengvm2 --time 1438046000 3.3 Check time within the guest # date Mon Jul 27 21:13:24 EDT 2015 3.4 Check time of the guest via domtime # virsh domtime dzhengvm2 Time: 1438046014 About tests are done with below packages: libvirt-1.2.17-2.el7.ppc64le kernel-3.10.0-292.el7.ppc64le qemu-kvm-rhev-2.3.0-9.el7.ppc64le Guest kernel: kernel-3.10.0-253.ael7b.ppc64le Guest agent: qemu-guest-agent-2.3.0-2.el7.ppc64le Guest OS: Red Hat Enterprise Linux Server release 7.2 Beta (Maipo) Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2202.html |