On 12/12/23 17:29, Philippe Mathieu-Daudé wrote:
Hi,

When a MPCore cluster is used, the Cortex-A cores belong the the
cluster container, not to the board/soc layer. This series move
the creation of vCPUs to the MPCore private container.

Doing so we consolidate the QOM model, moving common code in a
central place (abstract MPCore parent).

Changing the QOM hierarchy has an impact on the state of the machine
and some fixups are then required to maintain migration compatibility.
This can become a real headache for KVM machines like virt for which
migration compatibility is a feature, less for emulated ones.

I don't have a good solution to propose to overcome this problem :/

C.

This eventually allow removing one qemu_get_cpu() use, which we
want to remove in heterogeneous machines (machines using MPCore
are candidate for heterogeneous emulation).

Maybe these hw/cpu/arm/ files belong to hw/arm/...

Regards,

Phil.

Philippe Mathieu-Daudé (33):
   hw/arm/boot: Propagate vCPU to arm_load_dtb()
   hw/arm/fsl-imx6: Add a local 'gic' variable
   hw/arm/fsl-imx6ul: Add a local 'gic' variable
   hw/arm/fsl-imx7: Add a local 'gic' variable
   hw/cpu: Remove dead Kconfig
   hw/cpu/arm: Rename 'busdev' -> 'gicsbd' in a15mp_priv_realize()
   hw/cpu/arm: Alias 'num-cpu' property on TYPE_REALVIEW_MPCORE
   hw/cpu/arm: Declare CPU QOM types using DEFINE_TYPES() macro
   hw/cpu/arm: Merge {a9mpcore.h, a15mpcore.h} as cortex_mpcore.h
   hw/cpu/arm: Introduce abstract CORTEX_MPCORE_PRIV QOM type
   hw/cpu/arm: Have A9MPCORE/A15MPCORE inheritate common
     CORTEX_MPCORE_PRIV
   hw/cpu/arm: Create MPCore container in QOM parent
   hw/cpu/arm: Handle 'num_cores' property once in MPCore parent
   hw/cpu/arm: Handle 'has_el2/3' properties once in MPCore parent
   hw/cpu/arm: Handle 'gic-irq' property once in MPCore parent
   hw/cpu/arm: Handle GIC once in MPCore parent
   hw/cpu/arm: Document more properties of CORTEX_MPCORE_PRIV QOM type
   hw/cpu/arm: Replace A15MPPrivState by CortexMPPrivState
   hw/cpu/arm: Introduce TYPE_A7MPCORE_PRIV for Cortex-A7 MPCore
   hw/cpu/arm: Consolidate check on max GIC spi supported
   hw/cpu/arm: Create CPUs once in MPCore parent
   hw/arm/aspeed_ast2600: Let the A7MPcore create/wire the CPU cores
   hw/arm/exynos4210: Let the A9MPcore create/wire the CPU cores
   hw/arm/fsl-imx6: Let the A9MPcore create/wire the CPU cores
   hw/arm/fsl-imx6ul: Let the A7MPcore create/wire the CPU cores
   hw/arm/fsl-imx7: Let the A7MPcore create/wire the CPU cores
   hw/arm/highbank: Let the A9/A15MPcore create/wire the CPU cores
   hw/arm/vexpress: Let the A9/A15MPcore create/wire the CPU cores
   hw/arm/xilinx_zynq: Let the A9MPcore create/wire the CPU cores
   hw/arm/npcm7xx: Let the A9MPcore create/wire the CPU cores
   hw/cpu/a9mpcore: Remove legacy code
   hw/cpu/arm: Remove 'num-cpu' property alias
   hw/cpu/arm: Remove use of qemu_get_cpu() in A7/A15 realize()

  MAINTAINERS                    |   3 +-
  include/hw/arm/aspeed_soc.h    |   5 +-
  include/hw/arm/boot.h          |   4 +-
  include/hw/arm/exynos4210.h    |   6 +-
  include/hw/arm/fsl-imx6.h      |   6 +-
  include/hw/arm/fsl-imx6ul.h    |   8 +-
  include/hw/arm/fsl-imx7.h      |   8 +-
  include/hw/arm/npcm7xx.h       |   3 +-
  include/hw/cpu/a15mpcore.h     |  44 -------
  include/hw/cpu/a9mpcore.h      |  39 -------
  include/hw/cpu/cortex_mpcore.h | 135 ++++++++++++++++++++++
  hw/arm/aspeed_ast2600.c        |  61 ++++------
  hw/arm/boot.c                  |  11 +-
  hw/arm/exynos4210.c            |  60 ++++------
  hw/arm/exynos4_boards.c        |   6 +-
  hw/arm/fsl-imx6.c              |  84 ++++----------
  hw/arm/fsl-imx6ul.c            |  65 ++++-------
  hw/arm/fsl-imx7.c              | 103 +++++------------
  hw/arm/highbank.c              |  56 ++-------
  hw/arm/mcimx6ul-evk.c          |   3 +-
  hw/arm/mcimx7d-sabre.c         |   3 +-
  hw/arm/npcm7xx.c               |  48 ++------
  hw/arm/realview.c              |   4 +-
  hw/arm/sabrelite.c             |   4 +-
  hw/arm/vexpress.c              |  60 +++-------
  hw/arm/virt.c                  |   2 +-
  hw/arm/xilinx_zynq.c           |  30 ++---
  hw/cpu/a15mpcore.c             | 179 +++++++++++++----------------
  hw/cpu/a9mpcore.c              | 138 +++++++++-------------
  hw/cpu/arm11mpcore.c           |  23 ++--
  hw/cpu/cortex_mpcore.c         | 202 +++++++++++++++++++++++++++++++++
  hw/cpu/realview_mpcore.c       |  30 ++---
  hw/arm/Kconfig                 |   8 +-
  hw/cpu/Kconfig                 |   8 --
  hw/cpu/meson.build             |   1 +
  35 files changed, 689 insertions(+), 761 deletions(-)
  delete mode 100644 include/hw/cpu/a15mpcore.h
  delete mode 100644 include/hw/cpu/a9mpcore.h
  create mode 100644 include/hw/cpu/cortex_mpcore.h
  create mode 100644 hw/cpu/cortex_mpcore.c
  delete mode 100644 hw/cpu/Kconfig



Reply via email to