Red Hat Bugzilla – Bug 1329045
Guest got killed when restart libvirtd if guest has cmt event enabled but host doesn't support CMT
Last modified: 2016-11-03 14:43:32 EDT
Created attachment 1149277 [details] libvirtd and qemu log Description of problem: On a host that doesn't support CMT, define&start a guest with cmt event enabled: # virsh list Id Name State ---------------------------------------------------- 10 windows running # virsh dumpxml windows ... <perf> <event name='cmt' enabled='yes'/> </perf> ... Then restart libvirtd, guest will be killed. # systemctl restart libvirtd # virsh list Id Name State ---------------------------------------------------- Version-Release number of selected component (if applicable): libvirt-1.3.3-2.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. On a host that doesn't support Intel CMT, define&start a guest with cmt enabled: # cat /tmp/windows.xml ... <perf> <event name='cmt' enabled='yes'/> </perf> # virsh define /tmp/windows.xml # virsh start windows # virsh list Id Name State ---------------------------------------------------- 10 windows running # virsh dumpxml windows ... <perf> <event name='cmt' enabled='yes'/> </perf> ... # virsh perf windows cmt : disabled 2. # systemctl restart libvirtd # virsh list Id Name State ---------------------------------------------------- 3. Another scenario is that migrating a guest with cmt event enabled from a host that supports CMT to a host that doesn't support CMT, after migration, restart libvirtd on target host, the guest will be killed. Actual results: Guest start successfully but then got killed when restart libvirtd Expected results: Guest fails to start, and reports error: error : virFileReadAll:1375 : Failed to open file '/sys/devices/intel_cqm/type': No such file or directory Additional info:
Fixed upstream: commit edadd46c05b1eb93479a88017783bae648709bfa Author: Peter Krempa <pkrempa@redhat.com> Date: Wed Apr 27 14:58:32 2016 +0200 qemu: process: Fix failure semantics for perf events For strange reasons if a perf event type was not supported or failed to be enabled at VM start libvirt would ignore the failure. On the other hand on restart if the event could not be re-enabled libvirt would fail to reconnect to the VM and kill it. Both don't make really sense. Fix it by failing to start the VM if the event is not supported and change the event to disabled if it can't be reconnected (unlikely). (plus a few cleanups to make this patch happen)
Reproduce the bug with libvirt-1.3.3-2.el7.x86_64. steps as comment 0. Test pass with version libvirt-1.3.5-1.el7.x86_64. Steps: 1.On a host that doesn't support Intel CMT, define a guest with cmt enabled: #virsh edit rhel7.3 ... <perf> <event name='cmt' enabled='yes'/> </perf> ... 2.Start the guest: #virsh start rhel7.3 error: Failed to start domain rhel7.3 error: Failed to open file '/sys/devices/intel_cqm/type': No such file or directory
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/RHSA-2016-2577.html