[PATCH 00/18] dbtr: Fixes and heterogeneous trigger types

Nicholas Piggin
2026-03-13T05:20:23Z

In the course of implementing and testing heterogeneous trigger
types as found in the Tenstorrent Ascalon CPU, I found some issues
to fix as well.

Patches 1-11 contain fixes and improvements for existing function,
and make most of the new kvm-unit-tests tests pass. 12-17 implement
"heterogenous" triggers where different HW triggers support
different functions so we have to relax the 1:1 mapping from DBTR trig
to HW trigger index and allocate HW triggers independently from what
can satisfy the requested type. Patch 18 is another possible fix but
it relies on update to SBI spec so I put it last. I can move it ahead
into the fixes block if the issue is confirmed.

Thanks,
Nick

Nicholas Piggin (18):
dbtr: Add consistent range checks to trigger ecalls
dbtr: Trigger update should set sbiret.value on failure
dbtr: Fix endian conversion in trigger install handler
dbtr: Return correct error on install not supported
dbtr: Do not support chain bit
dbtr: Improve trigger update error checking
dbtr: Check for invalid and unsupported triggers in update
dbtr: Improve error handling for trigger enable, disable, uninstall
dbtr: Read triggers should not read HW trigger if not mapped
dbtr: Avoid crash in sbi_debug_read_triggers
dbtr: Succeed operations with no triggers in mask
dbtr: Move hardware trigger probing to a function
dbtr: Rework install and update error handling
dbtr: Decouple dbtr trigger index from hardware trigger number
dbtr: Move trigger feature support test into a function
dbtr: Heterogeneous trigger type support
dbtr: Heterogeneous access type matching for mcontrol triggers
dbtr: Work around specification bug in range checks

include/sbi/sbi_dbtr.h | 17 +-
lib/sbi/sbi_dbtr.c | 499 ++++++++++++++++++++++++++++++---------
lib/sbi/sbi_ecall_dbtr.c | 2 +-
3 files changed, 407 insertions(+), 111 deletions(-)