The previously independent threads for l2vic and qtimer are now combined,
which seems to make the most sense because qtimer testing effectively
depends on l2vic.
new:
* "refactor with hex-subsys": virt/DSP machines build the same core subsys,
so extract it into hw/hexagon/hex-subsys.c. CPUs are now under a TYPE_CPU_CLUSTER.
* "extract get_reg_value/set_reg_value stubs": routes globalreg
r/w through accessors.
* virt machine gains virtio-mmio transports
* addl hexagon-arch-tests enabled
l2vic changes:
* Removed the QemuMutex "active"; the device runs under the BQL.
* Dropped the QEMU_ALIGNED(16) attribute from the bitmaps; no
longer needed now that access goes through the bitmap32 helpers.
* Collapsed int_group_n0..int_group_n3 into an int_group_n[4] array.
* Moved the reg-offset macros and L2VIC_INTERRUPT_MAX from hdr to src
* Switched to DEFINE_TYPES()
* Renamed the vid0 field to vid
globalreg changes:
* VID/VID1 and TIMERLO/TIMERHI now go through get_reg_value/
set_reg_value, directing to L2VIC and QTimer respectively.
* l2vic and qtimer links are checked at realization
wiring changes:
* Renamed l2vic_dev to l2vic
* Reworded the connect-l2vic commit message
qtimer changes:
* Renamed the "freq" property to "freq-hz" and the field to freq_hz
* Per-frame frequency now inherits the device freq_hz property,
so it is overridable.
* Added .impl = {4, 4} to qct_qtimer_ac_ops.
* Added qct_qtimer_unrealize().
* demux uses (QCT_QTIMER_TIMER_FRAME_ELTS - 1) * stride instead of a
hardcoded 0xf * stride.
* getters take a const QctQtimerInterface *.
* Switched to DEFINE_TYPES().
* Removed per-frame freq_hz, these all read-through to the timer's freq.
test changes:
* qct-qtimer qtest: the view-region base is now taken per-machine from
the machine config rather than a hardcoded addr, and
the redundant guard around the assert is removed.
l2vic v2: https://lore.kernel.org/qemu-devel/20260715185701.1287176-1-brian.cain@oss.qualcomm.com/
l2vic v1: https://lore.kernel.org/qemu-devel/20260714155126.3509544-1-brian.cain@oss.qualcomm.com/
qtimer v1: https://lore.kernel.org/qemu-devel/20260718013241.1550124-1-brian.cain@oss.qualcomm.com/
Brian Cain (13):
hw/hexagon: refactor with hex-subsys
bitops.h: Add find_first_bit32()
hw/hexagon: extract get_reg_value/set_reg_value stubs in globalreg
hw/hexagon: connect l2vic device
hw/hexagon/virt: instantiate virtio-mmio transports
hw/hexagon/virt: add l2vic interrupt-controller and virtio-mmio FDT
nodes
hw/hexagon/virt: connect pl011 UART interrupt
tests/qtest: add L2VIC qtest
tests/functional/hexagon: add arch_tests functional test
hw/timer: Add QCT QTimer device model
hw/hexagon: connect qtimer device
tests/qtest: add qct-qtimer qtest
tests/functional/hexagon: enable more arch_tests cases
Sid Manning (1):
hw/intc: Add l2vic interrupt controller
MAINTAINERS | 7 +
docs/devel/hexagon-l2vic.rst | 55 ++
docs/devel/index-internals.rst | 1 +
include/hw/hexagon/hex-subsys.h | 28 +
include/hw/hexagon/hexagon.h | 6 +
include/hw/hexagon/hexagon_globalreg.h | 8 +
include/hw/hexagon/virt.h | 1 -
include/hw/intc/hex-l2vic.h | 63 ++
include/hw/timer/qct-qtimer.h | 43 ++
include/qemu/bitops.h | 30 +-
target/hexagon/cpu.h | 2 +
hw/hexagon/hex-subsys.c | 169 +++++
hw/hexagon/hexagon_dsp.c | 40 +-
hw/hexagon/hexagon_globalreg.c | 65 +-
hw/hexagon/virt.c | 127 ++--
hw/intc/hex-l2vic.c | 536 ++++++++++++++++
hw/timer/qct-qtimer.c | 664 ++++++++++++++++++++
target/hexagon/cpu.c | 2 +
target/hexagon/op_helper.c | 16 +-
tests/qtest/l2vic-test.c | 221 +++++++
tests/qtest/qct-qtimer-test.c | 239 +++++++
hw/hexagon/Kconfig | 3 +
hw/hexagon/meson.build | 1 +
hw/intc/Kconfig | 3 +
hw/intc/meson.build | 2 +
hw/intc/trace-events | 4 +
hw/timer/Kconfig | 3 +
hw/timer/meson.build | 2 +
hw/timer/trace-events | 5 +
tests/functional/hexagon/test_arch_tests.py | 38 ++
tests/qtest/meson.build | 2 +-
31 files changed, 2293 insertions(+), 93 deletions(-)
create mode 100644 docs/devel/hexagon-l2vic.rst
create mode 100644 include/hw/hexagon/hex-subsys.h
create mode 100644 include/hw/intc/hex-l2vic.h
create mode 100644 include/hw/timer/qct-qtimer.h
create mode 100644 hw/hexagon/hex-subsys.c
create mode 100644 hw/intc/hex-l2vic.c
create mode 100644 hw/timer/qct-qtimer.c
create mode 100644 tests/qtest/l2vic-test.c
create mode 100644 tests/qtest/qct-qtimer-test.c
--
2.34.1