Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
eb9efbb
pci: let functions choose header write policies
jamesbraid Oct 30, 2026
4209d07
isp1040: add the dual-channel ISP12160 part
jamesbraid Oct 30, 2026
1ea58ab
dp83843: add the Fuel Ethernet PHY
jamesbraid Oct 30, 2026
0c88fe6
timekeeper: add the M48T35 clock and NVRAM
jamesbraid Oct 30, 2026
928c793
ioc3: add the Fuel peripheral population
jamesbraid Oct 30, 2026
f468d87
sflash: add the AMD command set
jamesbraid Oct 30, 2026
8fb1a6c
cpu: send uncached byte and halfword stores with the whole register
jamesbraid Oct 30, 2026
529216f
bedrock: add the node I/O, network, crossbar and local-bus blocks
jamesbraid Oct 30, 2026
567efb1
bedrock_pi: add processor control and interrupts
jamesbraid Oct 30, 2026
6835774
bedrock_flash: add the Fuel boot flash windows
jamesbraid Oct 30, 2026
04d50c7
xbridge: add the two-head Fuel PCI host bridge
jamesbraid Oct 30, 2026
2ec2803
l1: add the Fuel system controller
jamesbraid Oct 30, 2026
87d5bd4
ohci: add the Lucent USB host controller and HID boot devices
jamesbraid Oct 30, 2026
e4a72e0
fuel: add the serial IP35 machine
jamesbraid Oct 30, 2026
e3a1227
ip35: fit the VPro board in the Fuel's graphics slot
jamesbraid Oct 30, 2026
cd95ccc
docs: describe the Fuel machine
jamesbraid Oct 30, 2026
22cfff6
cpu: carry the R10000 family's uncached attribute through mapped acce…
jamesbraid Oct 30, 2026
46513a6
bedrock_md: add the Fuel memory controller
jamesbraid Oct 30, 2026
bc460f6
jitv2: compile the reset PROM from the PROM, not the RAM over it
jamesbraid Oct 31, 2026
0f33254
odyssey: let a widget-offset machine host the board, with credit acco…
jamesbraid Oct 30, 2026
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
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,31 @@ hashes are given where a change is easiest to understand by reading the commit.
- Memory past 4 GB is as fast as the rest: such a machine gets a 16 GB direct
window, and the JIT compiles code anywhere in it.
- A store-conditional on memory outside the window is now atomic with two CPUs.
### SGI Fuel (IP34 board, IP35 software platform)

- **The Fuel takes a VPro board**: `[graphics] board = "v12"` or `"v10"`
fits the Octane's VPro model at crossbar widget 13. IRIX 6.5.30 with the
VPro driver brings the X login screen up on it.

- Added a headless Fuel profile with the 500 MHz R14000, 512 MiB RAM,
Bedrock, dual-head XBridge, IOC3 networking and two-channel ISP12160 SCSI.
The normal interpreter boot reaches the IRIX 6.5.30 root shell with PROM
6.210. See the [Fuel guide](docs/fuel-ip34.md).
- **jitv2 compiles the reset PROM from the PROM.** The PROM runs from the reset
window uncached; once memory covers that window the cached view returns RAM
there, and the compile pool used to compile RAM's bytes in place of the
PROM's. The board now presents an uncached instruction fetch of that window at
an address of the PROM's own (`MipsExecutor::uncached_fetch_alias`), so its
code page is keyed, compiled and invalidated by address like any other. The
other machines are unchanged.

### PCI configuration

- A PCI function can describe its own writable header fields and
write-one-to-clear status bits. Byte and halfword configuration writes
through a Bridge carry their byte enables, so such a function keeps the
status events a narrow write did not select. No Octane function has
write-one-to-clear status bits, so the Octane behaves as before.

### VNC, and screen and pointer commands

Expand Down
33 changes: 26 additions & 7 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,15 +175,34 @@ the first `[section]`, because TOML tables continue until the next header.

| Key | Default | Values and behavior |
|---|---|---|
| `machine.profile` | `indy_ip24` | indy_ip24, indigo2_ip22, indigo2_ip28, o2_ip32 (configured by `[o2]`, see [the O2 guide](docs/o2-ip32.md)), octane_ip30 (configured by `[octane]`, see [the Octane guide](docs/octane-ip30.md)). |
| `machine.cpu` | the machine's first | A family (`r4400`, `r5000`, `r10000`, `r12000`, `r14000`) or a part (`r14000_600`); independent of build features. Indy and `indigo2_ip22`: r4400, r5000; `indigo2_ip28`: r10000; O2: r5000, r10000, r12000; Octane: r10000, r12000, r14000. The first listed is the default. |
| `machine.profile` | `indy_ip24` | indy_ip24, indigo2_ip22, indigo2_ip28, o2_ip32 (configured by `[o2]`, see [the O2 guide](docs/o2-ip32.md)), octane_ip30 (configured by `[octane]`, see [the Octane guide](docs/octane-ip30.md)), fuel_ip34 (see [the Fuel guide](docs/fuel-ip34.md)). |
| `machine.cpu` | the machine's first | A family (`r4400`, `r5000`, `r10000`, `r12000`, `r14000`) or a part (`r14000_600`); independent of build features. Indy and `indigo2_ip22`: r4400, r5000; `indigo2_ip28`: r10000; O2: r5000, r10000, r12000; Octane: r10000, r12000, r14000; Fuel: r14000 (`r14000_500`). The first listed is the default. |
| `machine.cpus` | `1` | Processors fitted. 2 only on the Octane; see [its guide](docs/Octane/multiprocessor.md). |

### [fuel]

Fuel-specific settings apply when `machine.profile = "fuel_ip34"`.

| Key | Default | Values and behavior |
|---|---|---|
| `flash` | unset | Persistent 16 MiB boot-flash file. Unset, the flash is volatile. |
| `console` | `l1` | `l1`, `ioc3a` or `ioc3b`. Selects the guest console connection. |
| `l1_port` | `8882` | Host TCP port for the L1 console. Used when `console = "l1"`. |
| `l1_log` | unset | Optional serial log path for L1 output when an IOC3 port is selected as console. |
| `l1_revision` | `1.48.1` | L1 firmware revision as `major.minor.patch`, decimal. The guest reads it with L1 request `0x0005`. |
| `brick_serial` | `EMUN00` | L1 brick serial, at most 37 bytes. The guest reads it with L1 request `0x0004`. The default is a marked synthetic serial, not a real one. |

The machine uses one 500 MHz R14000 and fixed 512 MiB RAM in two 256 MiB
banks. Its IOC3 has no keyboard or mouse ports, so it runs on a serial
console. A `[fuel]` table is written to a saved config only when one of
these keys is set. The sample configuration and supported PROM inputs are in the
[Fuel guide](docs/fuel-ip34.md).

### [graphics]

| Key | Default | Values and behavior |
|---|---|---|
| `graphics.board` | `newport`; `solidimpact` on the Octane | newport, xz, extreme, solidimpact, highimpact, maximpact, v6, v8, v10, v12, none. Extreme is Indigo2 only. The Octane takes only `solidimpact` (SI), `highimpact` (SI with texture option), `maximpact` (MXI), `v6`, `v8`, `v10`, `v12` (the VPro boards, also `vpro:v12` and so on; need an IRIX install with the VPro driver, IRIX 6.5.10 or later and PROM 4.0, or 4.5 for the V10 and V12, which shipped only in the Octane2 and so give the machine the Octane2's Crossbow 1.4 and Bridge revision) or `none` (no board: the machine runs on its serial console, with no window). |
| `graphics.board` | `newport`; `solidimpact` on the Octane | newport, xz, extreme, solidimpact, highimpact, maximpact, v6, v8, v10, v12, none. Extreme is Indigo2 only. The Octane takes only `solidimpact` (SI), `highimpact` (SI with texture option), `maximpact` (MXI), `v6`, `v8`, `v10`, `v12` (the VPro boards, also `vpro:v12` and so on; need an IRIX install with the VPro driver, IRIX 6.5.10 or later and PROM 4.0, or 4.5 for the V10 and V12, which shipped only in the Octane2 and so give the machine the Octane2's Crossbow 1.4 and Bridge revision) or `none` (no board: the machine runs on its serial console, with no window). The Fuel takes `v12` or `v10` in its graphics slot, or `none`, its default. |
| `graphics.heads` | `1` | 1 or 2; dual-head requires Newport. |
| `graphics.resolution` | `guest` | guest, 1024x768, 1280x960, 1280x1024; presets require Newport. |
| `graphics.threads` | `2` | Worker threads the board's fragment pipeline draws on, at least 1. VPro: the screen tiles' owners, besides its front-end and raster threads; more help on a host with cores to spare. |
Expand Down Expand Up @@ -218,7 +237,7 @@ An explicit non-disk kind takes precedence over the legacy cdrom flag.

| Key | Default | Values and behavior |
|---|---|---|
| `network.mode` | `nat` | nat, pcap, stream or off (no Ethernet; O2 and Octane only). Stream needs `network.stream`. PCAP needs build support and host capture permissions. PCAP works on every Ethernet; stream on every onboard one, not on a DaynaPort. |
| `network.mode` | `nat` | nat, pcap, stream or off (no Ethernet; O2, Octane and Fuel only). Stream needs `network.stream`. PCAP needs build support and host capture permissions. PCAP works on every Ethernet; stream on every onboard one, not on a DaynaPort. |
| `network.stream` | `unset` | `tcp:IP:PORT` or `unix:PATH`: the server of the private segment for `mode = "stream"` (QEMU `-netdev stream` framing). See NETWORKING.md. |
| `network.pcap_interface` | `auto-pick when unset` | Interface name or numeric list index; PCAP only. |
| `network.nfs_pcap_ip` | `unset` | Virtual LAN IP for the built-in NFS responder in PCAP mode. |
Expand Down Expand Up @@ -382,8 +401,8 @@ IP22/IP24 four-bank IRIX 6.5 behavior remains separate from IP28's verified
two-bank 1 GB layout. Extreme requires IP22. All non-Newport boards require
`heads=1` and `resolution="guest"`. IP28 IRIX needs IMPACT; its PROM has an
embedded fallback.
The config validator permits SCSI controller 1 only on IP22, the O2 and the
Octane, the machines with two controllers.
The config validator permits SCSI controller 1 only on IP22, the O2, Octane
and Fuel. These machines have two controllers.

Standalone CLI options update the loaded config where supplied; boolean enable
switches do not provide a general way to clear every saved true setting.
Expand Down Expand Up @@ -436,7 +455,7 @@ iris-gui does not parse this standalone option set; use its named-machine UI.
| `--list-net-interfaces` | Print the host network interfaces libpcap can bridge onto, then exit. Requires a build with --features pcap. |
| `--no-scsi-deferred-int` | Disable deferred SCSI status interrupts (default: enabled for OpenBSD/NetBSD compatibility). |
| `--cpu` | Emulated CPU: a family (`r4400`, `r5000`, `r10000`, `r12000`, `r14000`) or a part (`r14000_600`) the machine takes. Overrides `[machine] cpu`. |
| `--graphics` | Graphics board: `newport` (default), `xz`, `extreme`, `solidimpact`, `highimpact`, `maximpact` (or `impact:solid`, `impact:high`, `impact:max`), `v6`, `v8`, `v10`, `v12` (`vpro:v12` and so on, Octane only). |
| `--graphics` | Graphics board: `newport` (default), `xz`, `extreme`, `solidimpact`, `highimpact`, `maximpact` (or `impact:solid`, `impact:high`, `impact:max`), `v6`, `v8`, `v10`, `v12` (`vpro:v12` and so on; Octane, and `v10`/`v12` on the Fuel). |
| `--raster` | VPro: `cpu` (default) or `wgpu`, the raster unit on the host GPU (`[graphics] raster`; needs a build with the `wgpu` feature). |
| `--renderer` | What draws the window: `gl` (default) or `wgpu` (`renderer`; needs a build with the `wgpu` feature). |
| `--gdb-port` | Enable GDB stub on the given TCP port (e.g. --gdb-port 1234). Connect with: target remote localhost:<port> |
Expand Down
Loading
Loading