[PATCH v7 00/20] target/arm: Allow CONFIG_TCG=n builds

Fabiano Rosas posted 20 patches 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230223130841.25916-1-farosas@suse.de
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, Cleber Rosa <crosa@redhat.com>, Laurent Vivier <lvivier@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <ani@anisinha.ca>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
There is a newer version of this series
.gitlab-ci.d/crossbuilds.yml                  |  11 +
.../custom-runners/ubuntu-22.04-aarch64.yml   |   4 -
MAINTAINERS                                   |   1 +
configs/devices/aarch64-softmmu/default.mak   |   4 -
configs/devices/arm-softmmu/default.mak       |  39 --
hw/arm/Kconfig                                |  43 +-
hw/arm/boot.c                                 |   6 +-
hw/arm/virt.c                                 |   6 +-
hw/intc/armv7m_nvic.c                         |  20 +-
include/exec/cpu-defs.h                       |   6 +
target/arm/Kconfig                            |   7 +
target/arm/arm-powerctl.c                     |   7 +-
target/arm/cortex-regs.c                      |  69 +++
target/arm/cpregs.h                           |   6 +
target/arm/cpu.c                              |  78 ++-
target/arm/cpu64.c                            | 399 +-------------
target/arm/debug_helper.c                     | 490 +++++++++---------
target/arm/helper.c                           | 411 +--------------
target/arm/internals.h                        |  30 +-
target/arm/machine.c                          |  12 +-
target/arm/meson.build                        |  48 +-
target/arm/ptw.c                              |   4 +
target/arm/tcg-stubs.c                        |  27 +
target/arm/{ => tcg}/a32-uncond.decode        |   0
target/arm/{ => tcg}/a32.decode               |   0
target/arm/{cpu_tcg.c => tcg/cpu32.c}         | 141 +----
target/arm/tcg/cpu64.c                        | 438 ++++++++++++++++
target/arm/{ => tcg}/crypto_helper.c          |   0
target/arm/{ => tcg}/helper-a64.c             |   0
target/arm/tcg/hflags.c                       | 403 ++++++++++++++
target/arm/{ => tcg}/iwmmxt_helper.c          |   0
target/arm/{ => tcg}/m-nocp.decode            |   0
target/arm/{ => tcg}/m_helper.c               |   0
target/arm/tcg/meson.build                    |  52 ++
target/arm/{ => tcg}/mte_helper.c             |   0
target/arm/{ => tcg}/mve.decode               |   0
target/arm/{ => tcg}/mve_helper.c             |   0
target/arm/{ => tcg}/neon-dp.decode           |   0
target/arm/{ => tcg}/neon-ls.decode           |   0
target/arm/{ => tcg}/neon-shared.decode       |   0
target/arm/{ => tcg}/neon_helper.c            |   0
target/arm/{ => tcg}/op_helper.c              |   0
target/arm/{ => tcg}/pauth_helper.c           |   0
target/arm/{ => tcg}/psci.c                   |   0
target/arm/{ => tcg}/sme-fa64.decode          |   0
target/arm/{ => tcg}/sme.decode               |   0
target/arm/{ => tcg}/sme_helper.c             |   0
target/arm/{ => tcg}/sve.decode               |   0
target/arm/{ => tcg}/sve_helper.c             |   0
target/arm/{ => tcg}/t16.decode               |   0
target/arm/{ => tcg}/t32.decode               |   0
target/arm/{ => tcg}/tlb_helper.c             |  18 -
target/arm/{ => tcg}/translate-a64.c          |   0
target/arm/{ => tcg}/translate-a64.h          |   0
target/arm/{ => tcg}/translate-m-nocp.c       |   0
target/arm/{ => tcg}/translate-mve.c          |   0
target/arm/{ => tcg}/translate-neon.c         |   0
target/arm/{ => tcg}/translate-sme.c          |   0
target/arm/{ => tcg}/translate-sve.c          |   0
target/arm/{ => tcg}/translate-vfp.c          |   0
target/arm/{ => tcg}/translate.c              |   0
target/arm/{ => tcg}/translate.h              |   0
target/arm/{ => tcg}/vec_helper.c             |   0
target/arm/{ => tcg}/vec_internal.h           |   0
target/arm/{ => tcg}/vfp-uncond.decode        |   0
target/arm/{ => tcg}/vfp.decode               |   0
tests/avocado/migration.py                    |  83 ++-
tests/avocado/version.py                      |   1 +
tests/qtest/arm-cpu-features.c                |  12 +-
tests/qtest/bios-tables-test.c                |   4 +
tests/qtest/boot-serial-test.c                |  10 +
tests/qtest/migration-test.c                  |   5 +
tests/qtest/pxe-test.c                        |   6 +
tests/qtest/vmgenid-test.c                    |   6 +
74 files changed, 1592 insertions(+), 1315 deletions(-)
create mode 100644 target/arm/cortex-regs.c
create mode 100644 target/arm/tcg-stubs.c
rename target/arm/{ => tcg}/a32-uncond.decode (100%)
rename target/arm/{ => tcg}/a32.decode (100%)
rename target/arm/{cpu_tcg.c => tcg/cpu32.c} (87%)
create mode 100644 target/arm/tcg/cpu64.c
rename target/arm/{ => tcg}/crypto_helper.c (100%)
rename target/arm/{ => tcg}/helper-a64.c (100%)
create mode 100644 target/arm/tcg/hflags.c
rename target/arm/{ => tcg}/iwmmxt_helper.c (100%)
rename target/arm/{ => tcg}/m-nocp.decode (100%)
rename target/arm/{ => tcg}/m_helper.c (100%)
create mode 100644 target/arm/tcg/meson.build
rename target/arm/{ => tcg}/mte_helper.c (100%)
rename target/arm/{ => tcg}/mve.decode (100%)
rename target/arm/{ => tcg}/mve_helper.c (100%)
rename target/arm/{ => tcg}/neon-dp.decode (100%)
rename target/arm/{ => tcg}/neon-ls.decode (100%)
rename target/arm/{ => tcg}/neon-shared.decode (100%)
rename target/arm/{ => tcg}/neon_helper.c (100%)
rename target/arm/{ => tcg}/op_helper.c (100%)
rename target/arm/{ => tcg}/pauth_helper.c (100%)
rename target/arm/{ => tcg}/psci.c (100%)
rename target/arm/{ => tcg}/sme-fa64.decode (100%)
rename target/arm/{ => tcg}/sme.decode (100%)
rename target/arm/{ => tcg}/sme_helper.c (100%)
rename target/arm/{ => tcg}/sve.decode (100%)
rename target/arm/{ => tcg}/sve_helper.c (100%)
rename target/arm/{ => tcg}/t16.decode (100%)
rename target/arm/{ => tcg}/t32.decode (100%)
rename target/arm/{ => tcg}/tlb_helper.c (94%)
rename target/arm/{ => tcg}/translate-a64.c (100%)
rename target/arm/{ => tcg}/translate-a64.h (100%)
rename target/arm/{ => tcg}/translate-m-nocp.c (100%)
rename target/arm/{ => tcg}/translate-mve.c (100%)
rename target/arm/{ => tcg}/translate-neon.c (100%)
rename target/arm/{ => tcg}/translate-sme.c (100%)
rename target/arm/{ => tcg}/translate-sve.c (100%)
rename target/arm/{ => tcg}/translate-vfp.c (100%)
rename target/arm/{ => tcg}/translate.c (100%)
rename target/arm/{ => tcg}/translate.h (100%)
rename target/arm/{ => tcg}/vec_helper.c (100%)
rename target/arm/{ => tcg}/vec_internal.h (100%)
rename target/arm/{ => tcg}/vfp-uncond.decode (100%)
rename target/arm/{ => tcg}/vfp.decode (100%)
[PATCH v7 00/20] target/arm: Allow CONFIG_TCG=n builds
Posted by Fabiano Rosas 1 year, 2 months ago
Changes since v6:

Now using the same feature set for -cpu max for both qtests and
TCG. This requires a slightly awkward code movement to expose
aa32_max_features to non-tcg code, but we gain by not having a
different environment for the tests.

Also applied Richard's suggestion of creating a new cortex-regs.c
file.

CI run: https://gitlab.com/farosas/qemu/-/pipelines/786195517

v6:
https://lore.kernel.org/r/20230217201150.22032-1-farosas@suse.de

v5 resend:
https://lore.kernel.org/r/20230213202927.28992-1-farosas@suse.de

v5:
https://lore.kernel.org/r/20230120184825.31626-1-farosas@suse.de

v4:
https://lore.kernel.org/r/20230119135424.5417-1-farosas@suse.de

v3:
https://lore.kernel.org/r/20230113140419.4013-1-farosas@suse.de

v2:
https://lore.kernel.org/r/20230109224232.11661-1-farosas@suse.de

v1:
https://lore.kernel.org/r/20230104215835.24692-1-farosas@suse.de

Claudio Fontana (3):
  target/arm: move helpers to tcg/
  target/arm: Move psci.c into the tcg directory
  target/arm: move cpu_tcg to tcg/cpu32.c

Fabiano Rosas (16):
  target/arm: Wrap breakpoint/watchpoint updates with tcg_enabled
  target/arm: Wrap TCG-only code in debug_helper.c
  target/arm: move translate modules to tcg/
  target/arm: Wrap arm_rebuild_hflags calls with tcg_enabled
  target/arm: Move hflags code into the tcg directory
  target/arm: Move regime_using_lpae_format into internal.h
  target/arm: Don't access TCG code when debugging with KVM
  cpu-defs.h: Expose CPUTLBEntryFull to non-TCG code
  target/arm: Move cortex sysregs into a separate file
  target/arm: Move 64-bit TCG CPUs into tcg/
  target/arm: Move aa32_max_features out of cpu_tcg.c
  tests/avocado: Pass parameters to migration test
  tests/avocado: add machine:none tag to version.py
  arm/Kconfig: Always select SEMIHOSTING when TCG is present
  arm/Kconfig: Do not build TCG-only boards on a KVM-only build
  tests/qtest: Fix tests when no KVM or TCG are present

Philippe Mathieu-Daudé (1):
  gitlab-ci: Check building KVM-only aarch64 target

 .gitlab-ci.d/crossbuilds.yml                  |  11 +
 .../custom-runners/ubuntu-22.04-aarch64.yml   |   4 -
 MAINTAINERS                                   |   1 +
 configs/devices/aarch64-softmmu/default.mak   |   4 -
 configs/devices/arm-softmmu/default.mak       |  39 --
 hw/arm/Kconfig                                |  43 +-
 hw/arm/boot.c                                 |   6 +-
 hw/arm/virt.c                                 |   6 +-
 hw/intc/armv7m_nvic.c                         |  20 +-
 include/exec/cpu-defs.h                       |   6 +
 target/arm/Kconfig                            |   7 +
 target/arm/arm-powerctl.c                     |   7 +-
 target/arm/cortex-regs.c                      |  69 +++
 target/arm/cpregs.h                           |   6 +
 target/arm/cpu.c                              |  78 ++-
 target/arm/cpu64.c                            | 399 +-------------
 target/arm/debug_helper.c                     | 490 +++++++++---------
 target/arm/helper.c                           | 411 +--------------
 target/arm/internals.h                        |  30 +-
 target/arm/machine.c                          |  12 +-
 target/arm/meson.build                        |  48 +-
 target/arm/ptw.c                              |   4 +
 target/arm/tcg-stubs.c                        |  27 +
 target/arm/{ => tcg}/a32-uncond.decode        |   0
 target/arm/{ => tcg}/a32.decode               |   0
 target/arm/{cpu_tcg.c => tcg/cpu32.c}         | 141 +----
 target/arm/tcg/cpu64.c                        | 438 ++++++++++++++++
 target/arm/{ => tcg}/crypto_helper.c          |   0
 target/arm/{ => tcg}/helper-a64.c             |   0
 target/arm/tcg/hflags.c                       | 403 ++++++++++++++
 target/arm/{ => tcg}/iwmmxt_helper.c          |   0
 target/arm/{ => tcg}/m-nocp.decode            |   0
 target/arm/{ => tcg}/m_helper.c               |   0
 target/arm/tcg/meson.build                    |  52 ++
 target/arm/{ => tcg}/mte_helper.c             |   0
 target/arm/{ => tcg}/mve.decode               |   0
 target/arm/{ => tcg}/mve_helper.c             |   0
 target/arm/{ => tcg}/neon-dp.decode           |   0
 target/arm/{ => tcg}/neon-ls.decode           |   0
 target/arm/{ => tcg}/neon-shared.decode       |   0
 target/arm/{ => tcg}/neon_helper.c            |   0
 target/arm/{ => tcg}/op_helper.c              |   0
 target/arm/{ => tcg}/pauth_helper.c           |   0
 target/arm/{ => tcg}/psci.c                   |   0
 target/arm/{ => tcg}/sme-fa64.decode          |   0
 target/arm/{ => tcg}/sme.decode               |   0
 target/arm/{ => tcg}/sme_helper.c             |   0
 target/arm/{ => tcg}/sve.decode               |   0
 target/arm/{ => tcg}/sve_helper.c             |   0
 target/arm/{ => tcg}/t16.decode               |   0
 target/arm/{ => tcg}/t32.decode               |   0
 target/arm/{ => tcg}/tlb_helper.c             |  18 -
 target/arm/{ => tcg}/translate-a64.c          |   0
 target/arm/{ => tcg}/translate-a64.h          |   0
 target/arm/{ => tcg}/translate-m-nocp.c       |   0
 target/arm/{ => tcg}/translate-mve.c          |   0
 target/arm/{ => tcg}/translate-neon.c         |   0
 target/arm/{ => tcg}/translate-sme.c          |   0
 target/arm/{ => tcg}/translate-sve.c          |   0
 target/arm/{ => tcg}/translate-vfp.c          |   0
 target/arm/{ => tcg}/translate.c              |   0
 target/arm/{ => tcg}/translate.h              |   0
 target/arm/{ => tcg}/vec_helper.c             |   0
 target/arm/{ => tcg}/vec_internal.h           |   0
 target/arm/{ => tcg}/vfp-uncond.decode        |   0
 target/arm/{ => tcg}/vfp.decode               |   0
 tests/avocado/migration.py                    |  83 ++-
 tests/avocado/version.py                      |   1 +
 tests/qtest/arm-cpu-features.c                |  12 +-
 tests/qtest/bios-tables-test.c                |   4 +
 tests/qtest/boot-serial-test.c                |  10 +
 tests/qtest/migration-test.c                  |   5 +
 tests/qtest/pxe-test.c                        |   6 +
 tests/qtest/vmgenid-test.c                    |   6 +
 74 files changed, 1592 insertions(+), 1315 deletions(-)
 create mode 100644 target/arm/cortex-regs.c
 create mode 100644 target/arm/tcg-stubs.c
 rename target/arm/{ => tcg}/a32-uncond.decode (100%)
 rename target/arm/{ => tcg}/a32.decode (100%)
 rename target/arm/{cpu_tcg.c => tcg/cpu32.c} (87%)
 create mode 100644 target/arm/tcg/cpu64.c
 rename target/arm/{ => tcg}/crypto_helper.c (100%)
 rename target/arm/{ => tcg}/helper-a64.c (100%)
 create mode 100644 target/arm/tcg/hflags.c
 rename target/arm/{ => tcg}/iwmmxt_helper.c (100%)
 rename target/arm/{ => tcg}/m-nocp.decode (100%)
 rename target/arm/{ => tcg}/m_helper.c (100%)
 create mode 100644 target/arm/tcg/meson.build
 rename target/arm/{ => tcg}/mte_helper.c (100%)
 rename target/arm/{ => tcg}/mve.decode (100%)
 rename target/arm/{ => tcg}/mve_helper.c (100%)
 rename target/arm/{ => tcg}/neon-dp.decode (100%)
 rename target/arm/{ => tcg}/neon-ls.decode (100%)
 rename target/arm/{ => tcg}/neon-shared.decode (100%)
 rename target/arm/{ => tcg}/neon_helper.c (100%)
 rename target/arm/{ => tcg}/op_helper.c (100%)
 rename target/arm/{ => tcg}/pauth_helper.c (100%)
 rename target/arm/{ => tcg}/psci.c (100%)
 rename target/arm/{ => tcg}/sme-fa64.decode (100%)
 rename target/arm/{ => tcg}/sme.decode (100%)
 rename target/arm/{ => tcg}/sme_helper.c (100%)
 rename target/arm/{ => tcg}/sve.decode (100%)
 rename target/arm/{ => tcg}/sve_helper.c (100%)
 rename target/arm/{ => tcg}/t16.decode (100%)
 rename target/arm/{ => tcg}/t32.decode (100%)
 rename target/arm/{ => tcg}/tlb_helper.c (94%)
 rename target/arm/{ => tcg}/translate-a64.c (100%)
 rename target/arm/{ => tcg}/translate-a64.h (100%)
 rename target/arm/{ => tcg}/translate-m-nocp.c (100%)
 rename target/arm/{ => tcg}/translate-mve.c (100%)
 rename target/arm/{ => tcg}/translate-neon.c (100%)
 rename target/arm/{ => tcg}/translate-sme.c (100%)
 rename target/arm/{ => tcg}/translate-sve.c (100%)
 rename target/arm/{ => tcg}/translate-vfp.c (100%)
 rename target/arm/{ => tcg}/translate.c (100%)
 rename target/arm/{ => tcg}/translate.h (100%)
 rename target/arm/{ => tcg}/vec_helper.c (100%)
 rename target/arm/{ => tcg}/vec_internal.h (100%)
 rename target/arm/{ => tcg}/vfp-uncond.decode (100%)
 rename target/arm/{ => tcg}/vfp.decode (100%)

-- 
2.35.3


Re: [PATCH v7 00/20] target/arm: Allow CONFIG_TCG=n builds
Posted by Peter Maydell 1 year, 2 months ago
On Thu, 23 Feb 2023 at 13:10, Fabiano Rosas <farosas@suse.de> wrote:
>
> Changes since v6:
>
> Now using the same feature set for -cpu max for both qtests and
> TCG. This requires a slightly awkward code movement to expose
> aa32_max_features to non-tcg code, but we gain by not having a
> different environment for the tests.

I'm ignoring this version, because I've already taken
at least half of it into target-arm.next from the
previous version.

thanks
-- PMM