Bug 1291209 - The cpu model that could be boot in command line does not match with host /proc/cpuinfo
Summary: The cpu model that could be boot in command line does not match with host /pr...
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm-rhev
Version: 7.2
Hardware: ppc64le
OS: Linux
Target Milestone: rc
: ---
Assignee: David Gibson
QA Contact: Virtualization Bugs
Depends On:
Blocks: 1288337 RHV4.1PPC
TreeView+ depends on / blocked
Reported: 2015-12-14 10:07 UTC by Qunfang Zhang
Modified: 2016-11-07 21:45 UTC (History)
11 users (show)

Fixed In Version: qemu-2.6
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2016-11-07 21:45:49 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2016:2673 0 normal SHIPPED_LIVE qemu-kvm-rhev bug fix and enhancement update 2016-11-08 01:06:13 UTC

Description Qunfang Zhang 2015-12-14 10:07:53 UTC
Description of problem:
Check that host cpu is POWER8E (with "cat /proc/cpuinfo"), but can not boot guest with "-cpu POWER8E". "-cpu POWER8" is okay instead. I don't try the upstream code, but Thomas told me latest upstream QEMU works as expected.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. On host: 
#cat /proc/cpuinfo
processor	: 152
cpu		: POWER8E (raw), altivec supported
clock		: 3690.000000MHz
revision	: 2.1 (pvr 004b 0201)

2. Start a qemu command line:

# /usr/libexec/qemu-kvm -cpu POWER8E
kvm_init_vcpu failed: Invalid argument

# /usr/libexec/qemu-kvm -cpu POWER8
VNC server running on `::1:5900'


Actual results:

Expected results:
POWER8E is bootable in this case.

Additional info:

Comment 2 Thomas Huth 2016-01-12 12:32:58 UTC
I just tried this again with latest upstream version of QEMU - and it also does not work there (I likely forgot to use -enable-kvm in my earlier tests, that's why I thought it would be working there).

After analyzing the code for a while, I think the problem is in kvm_ppc_register_host_cpu_type(): This functions registers two CPU class types with the PVR of the host, one named "host-powerpc64-cpu" and one named "POWER8-powerpc64-cpu" ... so the latter overrides the default "POWER8" CPU class when KVM is enabled. But this of course does not override the "POWER8E" class, thus using "-cpu POWER8E" does not work yet when KVM is enabled.

I guess we should either have some additional logic in there to override "POWER8E", too, ... I'll have a closer look whether this can be done in a feasible way...

Comment 3 Andrea Bolognani 2016-01-12 13:16:39 UTC
I'm unable to find a pointer at the moment, but when this was
discussed in the context of fixing libvirt's handling of POWER CPU
models, the recommendation from QEMU developers was to just always
use '-cpu POWER8' if the host CPU belongs to the POWER8 family.

libvirt has implemented that suggestion last August (see Bug 1250977)
and will now only advertise and accept family names as CPU
specification for POWER hosts:

  $ sudo virsh cpu-models ppc64 | grep POWER8

  $ sudo virsh capabilities | grep POWER

  $ grep POWER /proc/cpuinfo | head -1
  cpu       : POWER8E (raw), altivec supported

So from libvirt's point of view any variant of POWER8, including
POWER8E, will always be exposed to the user as POWER8.

I guess adding logic to make '-cpu POWER8E' behave as '-cpu POWER8'
on POWER8E hosts won't hurt, I just wanted to make you aware of
libvirt's point of view here :)

Comment 4 Thomas Huth 2016-01-12 16:46:08 UTC
Looks like this can be fixed by applying this patch here, since it introduces the CPUs with the proper PVR values into QEMU:


However, that has not been merged into upstream yet. So I'm assigning this bug ticket back to David, since he's involved in the discussion of that patch series already.

Comment 5 David Gibson 2016-01-15 02:06:51 UTC
Re: comment 4

I've now taken that patch into my upstream ppc-for-2.6 tree, so it will go with my next patch of upstream patches.

Comment 6 Thomas Huth 2016-02-04 10:40:26 UTC
Patch is now in upstream, we should get it automatically when rebasing to QEMU 2.6:


Comment 7 Mike McCune 2016-03-28 22:28:36 UTC
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune@redhat.com with any questions

Comment 9 Qunfang Zhang 2016-06-03 03:10:35 UTC
Verified the bug on qemu-kvm-rhev-2.6.0-4.el7.ppc64le. 

Currently qemu-kvm-rhev only provides the following cpu models:

[root@ibm-p8-kvm-02-qe qemu]# /usr/libexec/qemu-kvm -cpu ?
PowerPC POWER7_v2.3      PVR 003f0203
PowerPC POWER7           (alias for POWER7_v2.3)
PowerPC POWER7+_v2.1     PVR 004a0201
PowerPC POWER7+          (alias for POWER7+_v2.1)
PowerPC POWER8E_v2.1     PVR 004b0201
PowerPC POWER8E          (alias for POWER8E_v2.1)
PowerPC POWER8NVL_v1.0   PVR 004c0100
PowerPC POWER8NVL        (alias for POWER8NVL_v1.0)
PowerPC POWER8_v2.0      PVR 004d0200
PowerPC POWER8           (alias for POWER8_v2.0)

PowerPC host            

My host cpu info:

processor	: 152
cpu		: POWER8E (raw), altivec supported
clock		: 3690.000000MHz
revision	: 2.1 (pvr 004b 0201)

Now I can only boot guest with the following cpu models on this host:

For all the other cpu models, qemu-kvm-rhev will prompts: 

# /usr/libexec/qemu-kvm -cpu POWER8_v2.0
qemu-kvm: Register sync failed... If you're using kvm-hv.ko, only "-cpu host" is possible
kvm_init_vcpu failed: Invalid argument

Since guest can boot with POWER8E(same as host), POWER8 and host cpu models, so I think this bug could be verified, please correct me if something is wrong.  Thanks.

Comment 11 errata-xmlrpc 2016-11-07 21:45:49 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.


Note You need to log in before you can comment on or make changes to this bug.