Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ hashes are given where a change is easiest to understand by reading the commit.

- `[audio] file = "out.wav"` plays every machine's sound into a WAV file in
real time instead of a sound card.
- The monitor's `audio status` reports every audio card (HAL2, MACE audio, RAD1
on the Octane and Onyx2, the Tezro's ICE1724) in one layout: per output the
frames moved and the guest rate, host underruns, frames the host dropped and
where the output goes. Underruns now count only while an output runs. It
replaces `hal2 status`.

### Every machine has a built-in PROM

- The O2, Octane, Origin 200, Origin 2000, Onyx2, Fuel, Tezro, Origin 3200 and
Expand Down
2 changes: 1 addition & 1 deletion clanker/perf/hal2-pump-thread.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ chasing unrelated kernel panics.

## Verify after HAL2 changes

- Telnet monitor `hal2 status` — `cpal underruns (samples)` should stay low
- Telnet monitor `audio status` — `host underruns` should stay low
during desktop idle and under `glxgears`-style load.
- **Boot a fresh IRIX image and confirm the startup chime plays correctly**
(not silent, not garbled/truncated) — this was the concrete symptom that
Expand Down
5 changes: 2 additions & 3 deletions debug.md
Original file line number Diff line number Diff line change
Expand Up @@ -568,8 +568,7 @@ to learn the cursor's hotspot exactly.
| `rtc r <offset>` / `rtc w <offset> <val>` | Read / write NVRAM bytes |
| `rtc debug <on\|off>` | RTC trace **[DEV]** |
| `pit status` / `pit debug <on\|off>` | 8254 timer state / trace **[DEV]** |
| `hal2 status` | HAL2 audio state |
| `ice1724 status` | The Tezro's ICE1724 audio controller (`[tezro] audio`): frames each engine moved, converter writes, accesses nothing establishes |
| `audio status` / `audio` | The machine's audio card (HAL2, MACE audio, RAD1, the Tezro's ICE1724), one layout on every card: for each output (`analog in`, `analog out`, `S/PDIF out`) the frames it has moved since the machine started and its guest rate (`off` while idle), the frames the host stream played as silence while the card was playing (underruns), the frames the host ring refused, and the host output (device and API, `file out.wav` or `none (no_audio)`). Counts are as of the card's last timer pass and are this run's, not saved in snapshots. HAL2 counts the frames its DMA channel supplies; MACE audio keeps its DAC clock running while the guest holds the device, so its moved count follows time, not sound. An Indy or Indigo2 with `no_audio` has no HAL2 and says so |
| `ps2 status` / `ps2 debug <on\|off>` | PS/2 controller state / keyboard and mouse trace |
| `ps2 type <ascii>` / `ps2 enter` / `ps2 esc` | Type text / press Enter / press Esc (Esc stops PROM autoboot). On the Origin 3200 and Onyx 3000 these, `ps2 key` and `ps2 mouse` go to the I-brick's USB keyboard and mouse, and `ps2 status` still shows the unused PS/2 side |
| `ps2 key <shift\|ctrl\|alt> <down\|up>` | Hold or release a modifier |
Expand Down Expand Up @@ -675,7 +674,7 @@ its SCSI controllers answer to `scsi`/`cow` and `scsi1`/`cow1` as described unde
| `mec status` | MACE Ethernet: rings, receive buffers, frame counts |
| `sdma status` | MACE serial DMA |
| `maceps2 status` / `maceps2 traffic` | PS/2 ports / recent bytes each way |
| `audio status` / `audio codec` | MACE audio rings and rates / AD1843 codec registers |
| `audio codec` | MACE audio's AD1843 codec registers (`audio status` is the common report above) |
| `ust status` | MACE UST counter |
| `rtc status` / `rtc dump` / `rtc r <reg>` / `rtc w <reg> <val>` | DS1687 RTC |
| `onewire status` | MACE identity register and the ID chip holding the MAC address |
Expand Down
4 changes: 2 additions & 2 deletions docs/perfetto.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ event that belongs to several categories is recorded when any of them is on.
| `dma` | HPC3 PDMA channels, VDMA (also `gfx`), IMPACT host DMA (also `gfx`). |
| `scsi` | WD33C93A commands, CDBs and chip interrupts. |
| `net` | Ethernet frames sent, received, refused and filtered. |
| `audio` | HAL2 codec arm/disarm, codec A pacing, host underruns. |
| `audio` | HAL2 codec arm/disarm, codec A pacing, host underruns of every audio card. |
| `gfx` | vblank, flips, guest busy-waits, FIFO-full stalls, FIFO level, REX3 present, IMPACT engine busy. |
| `prim` | One REX3 GO and its CPU raster work per primitive: up to millions per second under a busy X server. Drop it (`all,-prim`) for long captures. |
| `jit` | jitv2 compile requests, compiles, compile queue full. |
Expand Down Expand Up @@ -77,7 +77,7 @@ host thread's name.
| DMA | `VDMA` | MC graphics DMA: `mem -> gio`, `gio -> mem`, `fill` (arg: bytes). |
| `WD33C93A` | thread | `wd cmd` (arg: command), nested `cdb` (arg: target << 8 \| opcode), `chip int` (arg: status). |
| `seeq-enet` | thread | `tx frame`, `rx frame` (arg: length), `rx no buffer`, `rx filtered`. |
| Audio | `HAL2`, `hptimer` | Codec `arm`/`disarm`, `host underrun` (the host audio callback found the ring empty), and a `codec A pace` slice per pacing wake on the timer thread. On the Octane, `RAD` has a `status slot` per status DMA completion (arg: the slot) and `late completion` when the host held up the timer thread (arg: µs late); the `RAD status slots unread` counter is how many slots the driver has not consumed (it warns that its thread was held off when all but one are). |
| Audio | `HAL2`, `host audio`, `hptimer` | Codec `arm`/`disarm`, `host underrun` on the `host audio` track for every card (the host audio callback found the ring empty while the card was playing), and a `codec A pace` slice per pacing wake on the timer thread. On the Octane, `RAD` has a `status slot` per status DMA completion (arg: the slot) and `late completion` when the host held up the timer thread (arg: µs late); the `RAD status slots unread` counter is how many slots the driver has not consumed (it warns that its thread was held off when all but one are). |
| Graphics | `REX3 display`, `REX3 busy wait`, `REX3 gfifo full`, `REX3 gfifo level` | `vblank`; `xmap mode write` (how IRIX swaps Newport buffers); the guest reading GFXBUSY from STATUS (waiting for idle); CPU stores retried on a full GFIFO; the FIFO level as STATUS reports it. `REX3-Processor` has `GO` and nested `raster` slices per CPU primitive (`prim`); the refresh thread has `present`, `framebuffer copy`, per-plane upload, `compose`, and `readback` work. |
| Graphics | `GR2 display`, `GR2 busy wait`, `GR2 fifo full` | `vblank`; reads and stores the board answered with bus-busy. |
| Graphics | `GBE display`, `RE ib full`, `RE ib level` | O2: `timing interrupt` and `shadow latched` on the display track; the interface buffer's level and stores that found it full. The `CRIME-RE` thread shows `CRIME RE busy`, and with the `prim` category `RE primitive` / `RE MTE` slices. |
Expand Down
Loading
Loading