v19.14.0

We are pleased to announce the release of TT System Firmware version 19.14.0 πŸ₯³πŸŽ‰.

Major enhancements with this release include:

What’s Changed

General

  • Restructure the release process page, move the version bump on main to immediately follow branch creation, and describe the tag-driven draft release and the pull request workflow required by protected release branches.

Blackhole

Logging

  • Enable the KMD firmware logging backend by default on Blackhole SMC.

  • Stop forwarding the boot banner to the KMD log; it carried no useful information and cluttered the output.

  • The DMC application no longer calls ring buffer log backend functions when CONFIG_LOG_BACKEND_RINGBUF is not selected, which previously failed to link.

GDDR Thermal Trip

  • Move the GDDR thermal-trip (CATMON) configuration out of Kconfig and compile-time constants and into the firmware table:

    • chip_limits.gddr_therm_trip_temp, chip_limits.gddr_therm_trip_critical_temp and chip_limits.gddr_therm_trip_duration_min carry the thresholds.

    • feature_enable.gddr_therm_trip_en gates the action, and ships disabled on every board.

    • CONFIG_TT_BH_ARC_GDDR_THERM_TRIP_ACTION* is removed.

  • Add the TT_SUB_MSG_SET_GDDR_THERM_TRIP_ENABLED characterization submessage so the host can enable or disable the trip action at runtime.

  • Report the feature in telemetry: capability bit 1 (gddr_therm_trip) of TAG_FW_CAPABILITIES_0 and the matching enable bit of TAG_FW_ACTIVE_CONFIG_0.

GDDR Harvesting

  • Add dram_table.soft_harvest_dram_mask to the firmware table. Each set bit clears the corresponding GDDR channel from the enabled tile set, which the product-spec dram_disable_count path could not express. The field defaults to 0 (no harvesting) when a board’s firmware table omits it.

Ethernet

  • Updated Blackhole ERISC FW to v1.12.2, change list from v1.12.0:

    • v1.12.2 (2026-08-10)

      • Updated auto train train speed (speed=0) for UBB to 330G for chip-to-chip and chip-to-examax-passive ports, keep retimers and QSFPs at 200G

    • v1.12.1 (2026-07-15):

      • Updated the default AW SerDes FW to v0.9.17, which now has the 90G, 95G, and 100G lane speeds built into the default image

      • Expanded SerDes speed loading logic for new speeds to work on all ports except the QSFP and retimer ports

      • The default firmware build skips the retimer ports until a BMC release is available that can program them

  • Removed alternative SerDes firmware support from the SMC. The altsdfw and altsdreg flash partitions and their blobs have been dropped, as the required link speeds are now part of the default SerDes firmware image.

  • The Ethernet reset path now loads the SerDes configuration as well, matching EthInit(), and reports SerDes lookup and load failures through four new eth_reset error codes: ETH_RESET_ERR_SERDES_FW_LOOKUP (9), ETH_RESET_ERR_SERDES_FW_LOAD (10), ETH_RESET_ERR_SERDES_CFG_LOOKUP (11) and ETH_RESET_ERR_SERDES_CFG_LOAD (12).

  • A speed override of 0 is now applied rather than skipped, and an unsupported speed is warned about instead of being dropped silently. Firmware tables written before this release do not carry the presence bit and keep their previous trained speed.

Persistent SPI Flash Parameters

  • Expose eth_property_table.eth_speed_override to bh-mod, valid speeds - {0, 40, 100, 200, 330, 350, 370, 400}. 0 is interpreted as a request to auto-train.

  • Expose dram_table.soft_harvest_dram_mask to bh-mod, so GDDR channels can be soft-harvested at runtime without reflashing the board config.

  • Expose feature_enable.gddr_therm_trip_en to bh-mod.

Host Interface

  • The message queue ABI is now explicitly uint32_t rather than uintptr_t, so the contract no longer depends on the pointer width of the platform.

  • Dm2CmReady moved into init so emulated boards get far enough to report the DMC firmware version.

Drivers

  • Add PLDM over MCTP support: base commands, platform commands (repository info, PDR and sensor readings), and a Tenstorrent OEM extension that exposes the Zephyr shell.

  • ARC HS DMA now supports 16 channels with 256 descriptors in interrupt mode, up from 4 channels.

  • Writing firmware post codes to the status scratch register is now gated on CONFIG_TT_POST_CODE instead of a board check, so other platforms can opt in. It defaults on for tt_blackhole.

Boards

  • New board: Galaxy 2 DMC (tt_blackhole_glx2_dmc), with GALAXY_2 SPI ROM data tables, a UART5 console on PC12/PD2, a cascaded second SPI mux (spi_mux1) for BH / DMC / B2B flash routing, and a MAX7221 display on SPI3.

  • bh_chip gained an optional spi_mux1, which is configured by the DMC when the board provides the node.

  • Documented the Blackhole DMC SPI flash mux polarity: low connects the flash to BH, high to the DMC.

Tooling

  • Add Galaxy recovery scripting that programs a hex file to ASICs which do not enumerate or answer an ARC message, then fixes up ASIC locations from PCIe bus numbers. This requires a BMC firmware build that accepts flash read, write and erase over IPMI.

  • Add smc_spi_flash.py to flash a firmware bundle over PCIe using SMC messages, plus a helper that checks card enumeration and ARC and DMC ping responsiveness.

  • Add a script that builds the manufacturing test artifacts locally instead of downloading them from CI, and a manufacturing test CI job covering the full flash-and-boot sequence on Blackhole PCIe cards.

  • Consolidate the pyocd argument parsing used by set-p300-jtag.py and recover-blackhole.py into a shared helper.

  • Fix two dmc_reset.py bugs: the PCIe enumeration stage tested the constant timeout instead of the remaining time, and the ping stage could skip a healthy DMC as β€œtoo old” when telemetry came up before the version handshake completed.

Documentation

  • Document the SMBus command registers and message payloads in tt_smbus_regs.h with Doxygen, including a per-command summary table and field-level breakdowns. Corrects the CMFW_SMBUS_DM_STATIC_INFO payload size from 160 to 192 bits.

  • Update the testing documentation and add instructions for running the manufacturing test locally.

Grendel

  • Restore the correct CPU hart mapping in the Grendel SMC device tree, which had been dropped by mistake.

  • MK bring-up DMC board (tt_grendel_mk_bu_dmc):

    • Fix four bring-up blockers that kept the board from reaching a console: the unpopulated 32.768 kHz LSE crystal is disabled, msi-pll-mode is dropped, chip select index 1 is corrected from PC9 (the SPI level-shifter enable) to PC7, and the unpowered mt35xu512 flash is disabled.

    • Update the board to the STM32U375 part actually fitted, replacing the U385 used for pinctrl testing.

    • Add a POST-code display on the MAX7221 and a post shell command to dm_test_app, with test, walk and map sub-commands for bring-up.

Migration guide

An overview of required and recommended changes to make when migrating from the previous v19.13.0 release can be found in 19.14 Migration Guide.

Full ChangeLog

The full ChangeLog from the previous v19.13.0 release can be found at the link below.

https://github.com/tenstorrent/tt-system-firmware/compare/v19.13.0…v19.14.0