Bug 1329045

Summary: Guest got killed when restart libvirtd if guest has cmt event enabled but host doesn't support CMT
Product: Red Hat Enterprise Linux 7 Reporter: Fangge Jin <fjin>
Component: libvirtAssignee: Peter Krempa <pkrempa>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: dyuan, mzhan, pkrempa, rbalakri, yafu, zpeng
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.3.5-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-03 18:43:32 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:
Attachments:
Description Flags
libvirtd and qemu log none

Description Fangge Jin 2016-04-21 02:38:34 UTC
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:

Comment 2 Peter Krempa 2016-05-02 07:13:31 UTC
Fixed upstream:

commit edadd46c05b1eb93479a88017783bae648709bfa
Author: Peter Krempa <pkrempa>
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)

Comment 4 yafu 2016-06-28 09:42:23 UTC
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

Comment 6 errata-xmlrpc 2016-11-03 18:43:32 UTC
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