[libvirt] [PATCH V1 1/2] cpu: Handle only high order 16 bits of PVR for IBM Power processors

Pradipta Kumar Banerjee bpradip at in.ibm.com
Wed Aug 20 03:50:58 UTC 2014


On 08/20/2014 09:02 AM, Martin Kletzander wrote:
> On Tue, Aug 19, 2014 at 11:00:12PM +0530, Pradipta Kr. Banerjee wrote:
>> IBM Power processors encode PVR as CPU family in higher 16 bits and a CPU
>> version in lower 16 bits. Since there is no significant change in behavior
>> between versions, there is no point to add every single CPU version in
>> cpu_map.xml and check for the same in cpu_powerpc.c
>>
> 
> Just an idea, but what if we select the model based on the whole pvr
> and only in case none is found, we will fallback to the first one that
> has the same high 16 bits?  When we have already power8_v1.0 and
> you're adding power8, we will never select the second one in the way
> you have implemented it.
Actually none of the model_vX.X are required. Only base processor versions are
required. Should I send a V2 with those changes ?

Additionally PowerKVM doesn't support specifying cpu model for guests (qemu
cmdline: -cpu <MODEL>). The only way possible is to use qemu compat mode (qemu
cmdline: -cpu host,compat=model) support of which is yet to be added in libvirt.
The only supported models in compat modes are power6,power7,power8.

There was an RFC posted on the same -
https://www.redhat.com/archives/libvir-list/2014-June/msg01338.html

Please let me know your thoughts.

> 
>> Signed-off-by: Pradipta Kr. Banerjee <bpradip at in.ibm.com>
>> ---
>> src/cpu/cpu_powerpc.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/cpu/cpu_powerpc.c b/src/cpu/cpu_powerpc.c
>> index 67cb9ff..18dbc99 100644
>> --- a/src/cpu/cpu_powerpc.c
>> +++ b/src/cpu/cpu_powerpc.c
>> @@ -93,7 +93,12 @@ ppcModelFindPVR(const struct ppc_map *map,
>>
>>     model = map->models;
>>     while (model != NULL) {
>> -        if (model->data.pvr == pvr)
>> +        /*IBM PowerPC processors encode PVR as CPU family in higher 16 bits and
>> +         *a CPU version in lower 16 bits. Since there is no significant change
>> +         *in behavior between versions, there is no point to add every single
>> +         *CPU version in cpu_map.xml
>> +         */
>> +        if ((model->data.pvr & 0xFFFF0000) == (pvr & 0xFFFF0000))
>>             return model;
>>
>>         model = model->next;
>> -- 
>> 1.9.3
>>
>> -- 
>> libvir-list mailing list
>> libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
> 
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> 


-- 
Regards,
Pradipta Kumar B(bpradip at in.ibm.com)
IBM Systems & Technology Labs,
India.




More information about the libvir-list mailing list