From: Eduardo Habkost <ehabkost@redhat.com>
To: Alistair Francis <alistair.francis@xilinx.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Igor Mammedov" <imammedo@redhat.com>,
"Marcel Apfelbaum" <marcel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 0/5] Add a valid_cpu_types property
Date: Wed, 20 Dec 2017 20:06:08 -0200 [thread overview]
Message-ID: <20171220220608.GH24025@localhost.localdomain> (raw)
In-Reply-To: <CAKmqyKMKL_BGSbaetubaPv8gkmF9XFFdDwkXAPsUZdV1qkOyqA@mail.gmail.com>
On Tue, Dec 19, 2017 at 05:03:59PM -0800, Alistair Francis wrote:
> On Tue, Dec 19, 2017 at 4:55 PM, Alistair Francis
> <alistair.francis@xilinx.com> wrote:
> > On Tue, Dec 19, 2017 at 4:43 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> >> On 20 December 2017 at 00:27, Alistair Francis
> >> <alistair.francis@xilinx.com> wrote:
> >>> There are numorous QEMU machines that only have a single or a handful of
> >>> valid CPU options. To simplyfy the management of specificying which CPU
> >>> is/isn't valid let's create a property that can be set in the machine
> >>> init. We can then check to see if the user supplied CPU is in that list
> >>> or not.
> >>>
> >>> I have added the valid_cpu_types for some ARM machines only at the
> >>> moment.
> >>>
> >>> Here is what specifying the CPUs looks like now:
> >>>
> >>> $ aarch64-softmmu/qemu-system-aarch64 -M netduino2 -kernel ./u-boot.elf -nographic -cpu "cortex-m3" -S
> >>> QEMU 2.10.50 monitor - type 'help' for more information
> >>> (qemu) info cpus
> >>> * CPU #0: thread_id=24175
> >>> (qemu) q
> >>>
> >>> $ aarch64-softmmu/qemu-system-aarch64 -M netduino2 -kernel ./u-boot.elf -nographic -cpu "cortex-m4" -S
> >>> QEMU 2.10.50 monitor - type 'help' for more information
> >>> (qemu) q
> >>>
> >>> $ aarch64-softmmu/qemu-system-aarch64 -M netduino2 -kernel ./u-boot.elf -nographic -cpu "cortex-m5" -S
> >>> qemu-system-aarch64: unable to find CPU model 'cortex-m5'
> >>>
> >>> $ aarch64-softmmu/qemu-system-aarch64 -M netduino2 -kernel ./u-boot.elf -nographic -cpu "cortex-a9" -S
> >>> qemu-system-aarch64: Invalid CPU type: cortex-a9-arm-cpu
> >>> The valid types are: cortex-m3-arm-cpu, cortex-m4-arm-cpu
> >>
> >> Thanks for this; we really should be more strict about
> >> forbidding "won't work" combinations than we have
> >> been in the past.
> >>
> >> In the last of these cases, I think that when we
> >> list the invalid CPU type and the valid types
> >> we should use the same names we want the user to
> >> use on the command line, without the "-arm-cpu"
> >> suffixes.
> >
> > Hmm... That is a good point, it is confusing that they don't line up.
Agreed.
> >
> > The problem is that we are just doing a simple
> > object_class_dynamic_cast() in hw/core/machine.c which I think
> > (untested) requires us to have the full name in the valid cpu array.
[...]
>
> I think an earlier version of my previous series adding the support to
> machine.c did string comparison, but it was decided to utilise objects
> instead. One option is to make the array 2 wide and have the second
> string be user friendly?
Making the array 2-column will duplicate information that we can
already find out using other methods, and it won't solve the
problem if an entry has a parent class with multiple subclasses
(the original reason I suggested object_class_dynamic_cast()).
The main obstacle to fix this easily is that we do have a common
ObjectClass *cpu_class_by_name(const char *cpu_model)
function, but not a common method to get the model name from a
CPUClass. Implementing this is possible, but probably better to
do it after moving the existing arch-specific CPU model
enumeration hooks to common code (currently we duplicate lots of
CPU enumeration/lookup boilerplate code that we shouldn't have
to).
Listing only the human-friendly names in the array like in the
original patch could be a reasonable temporary solution. It
won't allow us to use a single entry for all subclasses of a
given type by now (e.g. listing only TYPE_X86_CPU on PC), but at
least we can address this issue without waiting for a refactor of
the CPU model enumeration code.
--
Eduardo
next prev parent reply other threads:[~2017-12-20 22:06 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-20 0:27 [Qemu-devel] [PATCH v4 0/5] Add a valid_cpu_types property Alistair Francis
2017-12-20 0:27 ` [Qemu-devel] [PATCH v4 1/5] netduino2: Specify the valid CPUs Alistair Francis
2017-12-20 0:27 ` [Qemu-devel] [PATCH v4 2/5] bcm2836: Use the Cortex-A7 instead of Cortex-A15 Alistair Francis
2017-12-20 0:27 ` [Qemu-devel] [PATCH v4 3/5] raspi: Specify the valid CPUs Alistair Francis
2017-12-20 0:27 ` [Qemu-devel] [PATCH v4 4/5] xlnx-zcu102: " Alistair Francis
2017-12-20 0:28 ` [Qemu-devel] [PATCH v4 5/5] xilinx_zynq: " Alistair Francis
2017-12-20 0:43 ` [Qemu-devel] [PATCH v4 0/5] Add a valid_cpu_types property Peter Maydell
2017-12-20 0:55 ` Alistair Francis
2017-12-20 1:03 ` Alistair Francis
2017-12-20 22:06 ` Eduardo Habkost [this message]
2017-12-22 18:45 ` Alistair Francis
2017-12-22 19:47 ` Alistair Francis
2017-12-22 21:26 ` Eduardo Habkost
2017-12-28 13:39 ` Igor Mammedov
2017-12-28 14:59 ` Eduardo Habkost
2018-01-10 21:30 ` Alistair Francis
2018-01-10 21:48 ` Eduardo Habkost
2018-01-11 10:25 ` Igor Mammedov
2018-01-11 12:58 ` Eduardo Habkost
2018-02-01 23:21 ` Alistair Francis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171220220608.GH24025@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=alistair.francis@xilinx.com \
--cc=f4bug@amsat.org \
--cc=imammedo@redhat.com \
--cc=marcel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.