[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3] target/arm/monitor: query-cpu-model-expansion crashed qem
From: |
Liang Yan |
Subject: |
Re: [PATCH v3] target/arm/monitor: query-cpu-model-expansion crashed qemu when using machine type none |
Date: |
Mon, 3 Feb 2020 08:29:28 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 2/3/20 8:08 AM, Andrew Jones wrote:
> On Fri, Jan 31, 2020 at 10:46:49PM -0500, Liang Yan wrote:
>> Commit e19afd56 mentioned that target-arm only supports queryable
>
> Please use more hexdigits. I'm not sure QEMU has a policy for that,
> but I'd go with 12.
>
>> cpu models 'max', 'host', and the current type when KVM is in use.
>> The logic works well until using machine type none.
>>
>> For machine type none, cpu_type will be null if cpu option is not
>> set by command line, strlen(cpu_type) will terminate process.
>> So We add a check above it.
>>
>> This won't affect i386 and s390x since they do not use current_cpu.
>>
>> Signed-off-by: Liang Yan <address@hidden>
>> ---
>> v3: change git commit message
>> v2: fix code style issue
>> ---
>> target/arm/monitor.c | 14 ++++++++------
>> 1 file changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/target/arm/monitor.c b/target/arm/monitor.c
>> index 9725dfff16..3350cd65d0 100644
>> --- a/target/arm/monitor.c
>> +++ b/target/arm/monitor.c
>> @@ -137,17 +137,19 @@ CpuModelExpansionInfo
>> *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
>> }
>>
>> if (kvm_enabled()) {
>> - const char *cpu_type = current_machine->cpu_type;
>> - int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
>> bool supported = false;
>>
>> if (!strcmp(model->name, "host") || !strcmp(model->name, "max")) {
>> /* These are kvmarm's recommended cpu types */
>> supported = true;
>> - } else if (strlen(model->name) == len &&
>> - !strncmp(model->name, cpu_type, len)) {
>> - /* KVM is enabled and we're using this type, so it works. */
>> - supported = true;
>> + } else if (current_machine->cpu_type) {
>> + const char *cpu_type = current_machine->cpu_type;
>> + int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
>
> Need a blank line here.
>
>> + if (strlen(model->name) == len &&
>> + !strncmp(model->name, cpu_type, len)) {
>
> Four spaces of indent too many on the line above.
>
>> + /* KVM is enabled and we're using this type, so it works. */
>> + supported = true;
>> + }
>> }
>> if (!supported) {
>> error_setg(errp, "We cannot guarantee the CPU type '%s' works "
>> --
>> 2.25.0
>>
>>
>
> With the three changes above
>
>
> Reviewed-by: Andrew Jones <address@hidden>
> Tested-by: Andrew Jones <address@hidden>
>
Thanks for the review, I will update soon.
>
> It'd be nice to extend tests/qtest/arm-cpu-features.c to also do
> some checks with machine='none' with and without KVM.
>
Will do it later, thanks for the suggestion.
Best,
Liang
> Thanks,
> drew
>