[libvirt] [PATCH 2/4] PowerPC : Add support for launching VMs in 'compat' mode.

Prerna Saxena prerna at linux.vnet.ibm.com
Fri Oct 10 11:18:15 UTC 2014


On Friday 10 October 2014 04:41 PM, Daniel P. Berrange wrote:
> On Fri, Oct 10, 2014 at 04:12:26PM +0530, Prerna Saxena wrote:
>> On Friday 10 October 2014 03:46 PM, Daniel P. Berrange wrote:
>>> On Fri, Oct 10, 2014 at 03:42:41PM +0530, Prerna Saxena wrote:
>>>> >From 7228aacaa4b24907b1cbf33838ada8fb81890419 Mon Sep 17 00:00:00 2001
>>>> From: Prerna Saxena <prerna at linux.vnet.ibm.com>
>>>> Date: Tue, 7 Oct 2014 10:53:08 +0530
>>>>
>>>> PowerISA allows processors to run VMs in binary compatibility ("compat")
>>>> mode supporting an older version of ISA. QEMU has recently added support to
>>>> explicitly denote a VM running in compatibility mode through commit 6d9412ea
>>>> & 8dfa3a5e85.
>>>> Now, a "compat" mode VM can be run by invoking this qemu commandline on a
>>>> POWER8 host:  -cpu host,compat=power7.
>>> If this is using 'host' 
>>>
>>>> This patch allows libvirt to extend the "fallback" semantics of cpu model to
>>>> describe this new mode for PowerKVM guests.
>>>> As an example:
>>>> When a user wants to request a power7 vm to run in compatibility mode on
>>>> a Power8 host, this can be described in XML as follows :
>>>>   <cpu mode='custom' match='exact'>
>>>>     <model fallback='compat'>power7</model>
>>>>   </cpu>
>>> Then I don't think this should be using mode='custom', but rather it
>>> should be 'host-passthrough'. We would use the <model> to denote the
>>> compatibility mode for the host passthrough. IOW, it feels like this
>>> is better described as
>>>
>>>     <cpu mode='host-passthrough' match='exact'>
>>>       <model>power7</model>
>>>     </cpu>
>> Hi Daniel,
>> Thanks for taking a look.
>> It appears that my example didnt bring out the use case very clearly.
>>
>> On PowerKVM, we can run VMs in 2 possible vCPU configurations:
>> 1) Host native mode:
>>     Where host is power7; guest VMs also see power7 vcpus..
>>      Required qemu command line : "-cpu host"
>> You correctly pointed out that this would use <cpu mode='host-passthrough'.>
>>
>> 2) Compat mode:
>>     In this case, the host CPU is power7, but it can run in binary compatibility mode
>> with an older version of ISA(such as power6). So it will exhibit only those features that were available in an older generation of Power ISA. The guest will see a "power6" vCPU even though it is
>> running on a physical "power7" chip.
>>     Required QEMU command line for PowerKVM : "-cpu host,compat=power6"
>>
>> My patch attempts to define semantics for this mode of execution.
>>
>>   <cpu mode='custom' match='exact'>
>>     <model fallback='compat'>power7</model>
>>   </cpu>
>>
>> I came up with this ^^^ XML schema to denote a compat mode guest.
> The CPU mode 'host' is a form of host CPU passthrough.
> ie Running '-cpu host,compat=power6' on a Power7 host is
> equivalent to running '-cpu host' on a Power6 host.
It exposes the same features as an older version. However, running 'compat' on Power7 isnt identical as running native on Power6.

> So IMHO that should still use mode='host-passthrough' in
> libvirt not mode=custom

Okay. Do you mean it should be listed in XML like this :

<cpu mode='host-passthrough' match='exact'>
    <model fallback='compat'>power6</model>
</cpu>

I'll send a v2 in this format.

-- 
Prerna Saxena

Linux Technology Centre,
IBM Systems and Technology Lab,
Bangalore, India




More information about the libvir-list mailing list