[PATCH v3 00/14] Add hexagon l2vic, qtimer devices

Brian Cain posted 14 patches 10 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260724183648.190531-1-brian.cain@oss.qualcomm.com
Maintainers: Brian Cain <brian.cain@oss.qualcomm.com>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Paolo Bonzini <pbonzini@redhat.com>, Fabiano Rosas <farosas@suse.de>, Laurent Vivier <lvivier@redhat.com>
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
[PATCH v3 00/14] Add hexagon l2vic, qtimer devices
Posted by Brian Cain 10 hours ago
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