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