[PATCH v2 00/15] Hexagon: Add real SoC-style machines

Brian Cain posted 15 patches 1 day, 18 hours ago
MAINTAINERS                                   |   6 +
docs/system/hexagon/emulation.rst             |   2 +-
include/hw/hexagon/hex-board.h                |  65 +++
include/hw/hexagon/hexagon.h                  |  10 +
include/hw/hexagon/qcom_dsp.h                 |  81 ++++
include/hw/hexagon/virt.h                     |   6 -
include/hw/misc/qcom-qdsp6ss-clk.h            |  15 +
linux-user/hexagon/target_elf.h               |   2 +
target/hexagon/cpu-qom.h                      |   4 +
hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc     |  65 +++
hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc     |   6 +-
hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc     |  56 +++
hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc    |  52 +++
hw/hexagon/machine_cfg_sm8975_nsp.h.inc       |  55 +++
hw/hexagon/machine_cfg_v79na_1.h.inc          |  34 ++
hw/hexagon/hex-board.c                        | 265 +++++++++++
hw/hexagon/hex-subsys.c                       |   4 +-
hw/hexagon/hexagon_dsp.c                      |  93 +++-
hw/hexagon/qcom_dsp.c                         | 410 ++++++++++++++++++
hw/hexagon/qcs6490_cdsp.c                     |  64 +++
hw/hexagon/sa8775p_cdsp.c                     |  59 +++
hw/hexagon/sa8797p_nsp0.c                     |  68 +++
hw/hexagon/sc8480xp_nsp0.c                    |  90 ++++
hw/hexagon/sm8975_nsp.c                       | 102 +++++
hw/hexagon/virt.c                             | 309 ++-----------
hw/misc/qcom-qdsp6ss-clk.c                    | 208 +++++++++
linux-user/hexagon/elfload.c                  |  10 +
target/hexagon/cpu.c                          |   2 +
target/hexagon/idef-parser/parser-helpers.c   |   2 +-
tests/qtest/hexagon-config-test.c             |  78 ++++
tests/qtest/l2vic-test.c                      |  10 +
tests/qtest/qcom-dsp-test.c                   | 113 +++++
tests/qtest/qct-qtimer-test.c                 |  10 +
tests/tcg/hexagon/framekey.c                  |  67 +++
hw/hexagon/Kconfig                            |  48 +-
hw/hexagon/meson.build                        |   7 +
hw/misc/Kconfig                               |   3 +
hw/misc/meson.build                           |   3 +
tests/functional/hexagon/meson.build          |   2 +
.../hexagon/test_qcom_dsp_firmware.py         |  92 ++++
tests/qtest/meson.build                       |   4 +-
tests/tcg/hexagon/meson.build                 |   1 +
42 files changed, 2285 insertions(+), 298 deletions(-)
create mode 100644 include/hw/hexagon/hex-board.h
create mode 100644 include/hw/hexagon/qcom_dsp.h
create mode 100644 include/hw/misc/qcom-qdsp6ss-clk.h
create mode 100644 hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc
create mode 100644 hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc
create mode 100644 hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc
create mode 100644 hw/hexagon/machine_cfg_sm8975_nsp.h.inc
create mode 100644 hw/hexagon/machine_cfg_v79na_1.h.inc
create mode 100644 hw/hexagon/hex-board.c
create mode 100644 hw/hexagon/qcom_dsp.c
create mode 100644 hw/hexagon/qcs6490_cdsp.c
create mode 100644 hw/hexagon/sa8775p_cdsp.c
create mode 100644 hw/hexagon/sa8797p_nsp0.c
create mode 100644 hw/hexagon/sc8480xp_nsp0.c
create mode 100644 hw/hexagon/sm8975_nsp.c
create mode 100644 hw/misc/qcom-qdsp6ss-clk.c
create mode 100644 tests/qtest/hexagon-config-test.c
create mode 100644 tests/qtest/qcom-dsp-test.c
create mode 100644 tests/tcg/hexagon/framekey.c
create mode 100755 tests/functional/hexagon/test_qcom_dsp_firmware.py
[PATCH v2 00/15] Hexagon: Add real SoC-style machines
Posted by Brian Cain 1 day, 18 hours ago
Previously we added synthetic machines intended for compatibility with
programs created by the Hexagon SDK.  These simple configurations have a
memory/irq map that doesn't match any real chips, and they are limited
to an interrupt controller and a timer device.

Here we add DSP machines that reflect real-world devices and run some of
the commercial firmware to test it.  Note that for now the boot will not
progress much beyond the initial kernel boot.  Dependencies on other
yet-to-be-modeled devices are preventing the firmware from coming up fully
to a steady/idle state.

In v2:
- added range checks for RAM/FDT/initrd bounds, subsystem_base addr.
- fixed endianness bug in bootloader creation.
- Used full URLs for Asset()s in test_qcom_dsp_firmware.py, switched from
a sha to a tag.
- Included the "report ISA HWCAP through v85" patch from another series
for better context.

v1: https://lore.kernel.org/qemu-devel/20261019055245.1457795-1-brian.cain@oss.qualcomm.com/

Brian Cain (15):
  Hexagon: add v85 CPU model
  linux-user/hexagon: report ISA HWCAP through v85
  hw/hexagon: let a machine place its DDR
  hw/hexagon: introduce hex-board abstraction
  hw/hexagon: convert virt board to hex-board
  hw/misc: add the QDSP6SS PLL, RCG
  hw/hexagon: add the QCS6490 CDSP machine
  hw/hexagon: add the SA8775P CDSP machine
  hw/hexagon: add the SC8480XP NSP0 machine
  hw/hexagon: add the SA8797P NSP0 machine
  hw/hexagon: add the SM8975 NSP machine
  hw/hexagon: add v79NA1 machine
  hw/hexagon: add subsystem-base property
  target/hexagon: fix the allocframe framekey
  tests/functional/hexagon: boot DSP firmware

 MAINTAINERS                                   |   6 +
 docs/system/hexagon/emulation.rst             |   2 +-
 include/hw/hexagon/hex-board.h                |  65 +++
 include/hw/hexagon/hexagon.h                  |  10 +
 include/hw/hexagon/qcom_dsp.h                 |  81 ++++
 include/hw/hexagon/virt.h                     |   6 -
 include/hw/misc/qcom-qdsp6ss-clk.h            |  15 +
 linux-user/hexagon/target_elf.h               |   2 +
 target/hexagon/cpu-qom.h                      |   4 +
 hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc     |  65 +++
 hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc     |   6 +-
 hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc     |  56 +++
 hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc    |  52 +++
 hw/hexagon/machine_cfg_sm8975_nsp.h.inc       |  55 +++
 hw/hexagon/machine_cfg_v79na_1.h.inc          |  34 ++
 hw/hexagon/hex-board.c                        | 265 +++++++++++
 hw/hexagon/hex-subsys.c                       |   4 +-
 hw/hexagon/hexagon_dsp.c                      |  93 +++-
 hw/hexagon/qcom_dsp.c                         | 410 ++++++++++++++++++
 hw/hexagon/qcs6490_cdsp.c                     |  64 +++
 hw/hexagon/sa8775p_cdsp.c                     |  59 +++
 hw/hexagon/sa8797p_nsp0.c                     |  68 +++
 hw/hexagon/sc8480xp_nsp0.c                    |  90 ++++
 hw/hexagon/sm8975_nsp.c                       | 102 +++++
 hw/hexagon/virt.c                             | 309 ++-----------
 hw/misc/qcom-qdsp6ss-clk.c                    | 208 +++++++++
 linux-user/hexagon/elfload.c                  |  10 +
 target/hexagon/cpu.c                          |   2 +
 target/hexagon/idef-parser/parser-helpers.c   |   2 +-
 tests/qtest/hexagon-config-test.c             |  78 ++++
 tests/qtest/l2vic-test.c                      |  10 +
 tests/qtest/qcom-dsp-test.c                   | 113 +++++
 tests/qtest/qct-qtimer-test.c                 |  10 +
 tests/tcg/hexagon/framekey.c                  |  67 +++
 hw/hexagon/Kconfig                            |  48 +-
 hw/hexagon/meson.build                        |   7 +
 hw/misc/Kconfig                               |   3 +
 hw/misc/meson.build                           |   3 +
 tests/functional/hexagon/meson.build          |   2 +
 .../hexagon/test_qcom_dsp_firmware.py         |  92 ++++
 tests/qtest/meson.build                       |   4 +-
 tests/tcg/hexagon/meson.build                 |   1 +
 42 files changed, 2285 insertions(+), 298 deletions(-)
 create mode 100644 include/hw/hexagon/hex-board.h
 create mode 100644 include/hw/hexagon/qcom_dsp.h
 create mode 100644 include/hw/misc/qcom-qdsp6ss-clk.h
 create mode 100644 hw/hexagon/machine_cfg_qcs6490_cdsp.h.inc
 create mode 100644 hw/hexagon/machine_cfg_sa8797p_nsp0.h.inc
 create mode 100644 hw/hexagon/machine_cfg_sc8480xp_nsp0.h.inc
 create mode 100644 hw/hexagon/machine_cfg_sm8975_nsp.h.inc
 create mode 100644 hw/hexagon/machine_cfg_v79na_1.h.inc
 create mode 100644 hw/hexagon/hex-board.c
 create mode 100644 hw/hexagon/qcom_dsp.c
 create mode 100644 hw/hexagon/qcs6490_cdsp.c
 create mode 100644 hw/hexagon/sa8775p_cdsp.c
 create mode 100644 hw/hexagon/sa8797p_nsp0.c
 create mode 100644 hw/hexagon/sc8480xp_nsp0.c
 create mode 100644 hw/hexagon/sm8975_nsp.c
 create mode 100644 hw/misc/qcom-qdsp6ss-clk.c
 create mode 100644 tests/qtest/hexagon-config-test.c
 create mode 100644 tests/qtest/qcom-dsp-test.c
 create mode 100644 tests/tcg/hexagon/framekey.c
 create mode 100755 tests/functional/hexagon/test_qcom_dsp_firmware.py

-- 
2.34.1