On 12.12.2012, at 14:51, Andreas Färber wrote:

> Am 12.12.2012 14:08, schrieb Jens Freimann:
>> From: Viktor Mihajlovski <mihaj...@linux.vnet.ibm.com>
>> 
>> This enables qemu -cpu help to return a list of supported CPU models
>> on s390 and also to query for cpu definitions in the monitor.
>> Initially only cpu model = host is returned. This needs to be reworked
>> into a full-fledged CPU model handling later on.
>> This change is needed to allow libvirt exploiters (like OpenStack)
>> to specify a CPU model.
>> 
>> Signed-off-by: Viktor Mihajlovski <mihaj...@linux.vnet.ibm.com>
>> Signed-off-by: Jens Freimann <jf...@linux.vnet.ibm.com>
>> Reviewed-by: Christian Borntraeger <borntrae...@de.ibm.com>
>> ---
>> hw/s390-virtio.c   |  6 +++++-
>> target-s390x/cpu.c | 21 +++++++++++++++++++++
>> target-s390x/cpu.h |  3 +++
>> 3 files changed, 29 insertions(+), 1 deletion(-)
>> 
>> diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
>> index 18050b1..5d4dd43 100644
>> --- a/hw/s390-virtio.c
>> +++ b/hw/s390-virtio.c
>> @@ -2,6 +2,7 @@
>>  * QEMU S390 virtio target
>>  *
>>  * Copyright (c) 2009 Alexander Graf <ag...@suse.de>
>> + * Copyright IBM Corp 2012
>>  *
>>  * This library is free software; you can redistribute it and/or
>>  * modify it under the terms of the GNU Lesser General Public
>> @@ -13,7 +14,10 @@
>>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>  * Lesser General Public License for more details.
>>  *
>> - * You should have received a copy of the GNU Lesser General Public
>> + * Contributions after 2012-10-29 are licensed under the terms of the
>> + * GNU GPL, version 2 or (at your option) any later version.
>> + *
>> + * You should have received a copy of the GNU (Lesser) General Public
>>  * License along with this library; if not, see 
>> <http://www.gnu.org/licenses/>.
>>  */
>> 
>> diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
>> index 75f60b3..4a8562b 100644
>> --- a/target-s390x/cpu.c
>> +++ b/target-s390x/cpu.c
>> @@ -28,8 +28,29 @@
>> #include "hw/hw.h"
>> #include "qemu-common.h"
>> #include "qemu-timer.h"
>> +#include "arch_init.h"
>> 
>> 
>> +/* generate CPU information for cpu -? */
>> +void s390_cpu_list(FILE *f, fprintf_function cpu_fprintf)
>> +{
>> +    (*cpu_fprintf)(f, "s390 %16s\n", "[host]");
> 
> Note that the square-bracket notation was specific to x86 when it
> distinguished between built-in and config-based models.
> 
>> +}
>> +
>> +CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
>> +{
>> +    CpuDefinitionInfoList *entry;
>> +    CpuDefinitionInfo *info;
>> +
>> +    info = g_malloc0(sizeof(*info));
>> +    info->name = g_strdup("host");
>> +
>> +    entry = g_malloc0(sizeof(*entry));
>> +    entry->value = info;
>> +
>> +    return entry;
>> +}
> 
> "host" only makes sense for KVM, not for TCG. So we would need one other
> placeholder model for libvirt.
> 
> In cpu_s390x_init() a check should be added to reject "host" if
> !kvm_enabled().
> 
> Background is that in the CPU subclasses world we would want to derive a
> "host-s390-cpu" here and not let that be instantiated outside KVM. Then
> we do need one always instantiatible model though.

The TCG model is a "z900". We can just have a "z900" model and a "host" model 
with tcg_enabled() vs kvm_enabled() checks on each.


Alex


Reply via email to