[Qemu-devel] [PATCH v5 0/6] Add a valid_cpu_types property

Alistair Francis posted 6 patches 6 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1517532021.git.alistair.francis@xilinx.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppc passed
Test s390x passed
hw/arm/bcm2836.c     |  2 +-
hw/arm/netduino2.c   | 10 +++++++++-
hw/arm/raspi.c       |  7 +++++++
hw/arm/xilinx_zynq.c |  6 ++++++
hw/arm/xlnx-zcu102.c | 17 +++++++++++++++++
hw/core/machine.c    | 11 +++++------
6 files changed, 45 insertions(+), 8 deletions(-)
[Qemu-devel] [PATCH v5 0/6] Add a valid_cpu_types property
Posted by Alistair Francis 6 years, 1 month ago
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 models are: cortex-m3, cortex-m4

V5:
 - Use cpu_model instead of cpu_type
V4:
 - Rebase
 - Remove spaces
V3:
 - Make the varialbes static
V2:
 - Rebase
 - Reorder patches
 - Add a Raspberry Pi 2 CPU fix
V1:
 - Small fixes to prepare a series instead of RFC
 - Add commit messages for the commits
 - Expand the machine support to ARM machines
RFC v2:
 - Rebase on Igor's work
 - Use more QEMUisms inside the code
 - List the supported machines in a NULL terminated array



Alistair Francis (6):
  machine: Convert the valid cpu types to use cpu_model
  netduino2: Specify the valid CPUs
  bcm2836: Use the Cortex-A7 instead of Cortex-A15
  raspi: Specify the valid CPUs
  xlnx-zcu102: Specify the valid CPUs
  xilinx_zynq: Specify the valid CPUs

 hw/arm/bcm2836.c     |  2 +-
 hw/arm/netduino2.c   | 10 +++++++++-
 hw/arm/raspi.c       |  7 +++++++
 hw/arm/xilinx_zynq.c |  6 ++++++
 hw/arm/xlnx-zcu102.c | 17 +++++++++++++++++
 hw/core/machine.c    | 11 +++++------
 6 files changed, 45 insertions(+), 8 deletions(-)

-- 
2.14.1


Re: [Qemu-devel] [PATCH v5 0/6] Add a valid_cpu_types property
Posted by Philippe Mathieu-Daudé 6 years ago
On 02/02/2018 01:42 AM, Alistair Francis 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.

Sadly this series missed the 2.12 train.

> 
> 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 models are: cortex-m3, cortex-m4
> 
> V5:
>  - Use cpu_model instead of cpu_type
> V4:
>  - Rebase
>  - Remove spaces
> V3:
>  - Make the varialbes static
> V2:
>  - Rebase
>  - Reorder patches
>  - Add a Raspberry Pi 2 CPU fix
> V1:
>  - Small fixes to prepare a series instead of RFC
>  - Add commit messages for the commits
>  - Expand the machine support to ARM machines
> RFC v2:
>  - Rebase on Igor's work
>  - Use more QEMUisms inside the code
>  - List the supported machines in a NULL terminated array
> 
> 
> 
> Alistair Francis (6):
>   machine: Convert the valid cpu types to use cpu_model
>   netduino2: Specify the valid CPUs
>   bcm2836: Use the Cortex-A7 instead of Cortex-A15
>   raspi: Specify the valid CPUs
>   xlnx-zcu102: Specify the valid CPUs
>   xilinx_zynq: Specify the valid CPUs
> 
>  hw/arm/bcm2836.c     |  2 +-
>  hw/arm/netduino2.c   | 10 +++++++++-
>  hw/arm/raspi.c       |  7 +++++++
>  hw/arm/xilinx_zynq.c |  6 ++++++
>  hw/arm/xlnx-zcu102.c | 17 +++++++++++++++++
>  hw/core/machine.c    | 11 +++++------
>  6 files changed, 45 insertions(+), 8 deletions(-)
> 

Re: [Qemu-devel] [PATCH v5 0/6] Add a valid_cpu_types property
Posted by Igor Mammedov 6 years ago
On Wed, 14 Mar 2018 00:13:40 +0100
Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:

> On 02/02/2018 01:42 AM, Alistair Francis 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.  
> 
> Sadly this series missed the 2.12 train.
problematic part here is 'cpu_type -> cpu_model' conversion
without introducing back cpu model names in boards code.

Each target sort of already has this code 'cpu_list' for
printing supported CPU models. What we need is to generalize
it as most of the targets implement it the same way.
And then reuse generic code for 'cpu_type -> cpu_model'
so that boards won't have to be involved in it.

So currently cpu_list needs a volunteer who would be able
to generalize it and cleanup all targets across the the tree.